﻿<Report Version="1.3">
  <Header>
    <Guid>ca1e2e42-e7a2-4158-9ff2-d32f925b663c</Guid>
    <Name>Ведомость учета параметров потребления: Теплоснабжение (ТСРВ-043) для форума</Name>
    <IsSystem>false</IsSystem>
    <Description>Ведомости параметров для системы Теплоснабжение</Description>
    <DataSource>7</DataSource>
    <EquipTypeCode>121</EquipTypeCode>
    <ReportObjectType>1</ReportObjectType>
    <ReportType>1</ReportType>
    <Events>Статизм:0,1,6,7,12,13,18,19,24,25,29,30,34,35,39,40,43,44,47,48,51,52,53,54,58,59,60,61,70,71,72,73,74,75,76,77,78,79</Events>
    <Channels />
  </Header>
  <Template>Ly8vIDxYUlR5cGVJbmZvPg0KLy8vICAgPEFzc2VtYmx5RnVsbE5hbWU+RGV2RXhwcmVzcy5YdHJhUmVwb3J0cy52MTYuMSwgVmVyc2lvbj0xNi4xLjE0LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YTwvQXNzZW1ibHlGdWxsTmFtZT4NCi8vLyAgIDxBc3NlbWJseUxvY2F0aW9uPkc6XFByb2dyYW0gRmlsZXMgKHg4NilcVnpsam90IFNQNFxCaW5cRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy52MTYuMS5kbGw8L0Fzc2VtYmx5TG9jYXRpb24+DQovLy8gICA8VHlwZU5hbWU+RGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YdHJhUmVwb3J0PC9UeXBlTmFtZT4NCi8vLyAgIDxMb2NhbGl6YXRpb24+cnUtUlU8L0xvY2FsaXphdGlvbj4NCi8vLyAgIDxWZXJzaW9uPjE2LjE8L1ZlcnNpb24+DQovLy8gICA8UmVzb3VyY2VzPg0KLy8vICAgICA8UmVzb3VyY2UgTmFtZT0iWHRyYVJlcG9ydFNlcmlhbGl6YXRpb24uTXlSZXBvcnQiPg0KLy8vIHpzcnZ2Z0VBQUFDUkFBQUFiRk41YzNSbGJTNVNaWE52ZFhKalpYTXVVbVZ6YjNWeVkyVlNaV0ZrWlhJc0lHMXpZMjl5YkdsaUxDQldaWEp6YVc5dVBUUXVNQzR3TGpBc0lFTjFiSFIxY21VOWJtVjFkSEpoYkN3Z1VIVmliR2xqUzJWNVZHOXJaVzQ5WWpjM1lUVmpOVFl4T1RNMFpUQTRPU05UZVhOMFpXMHVVbVZ6YjNWeVkyVnpMbEoxYm5ScGJXVlNaWE52ZFhKalpWTmxkQUlBQUFBQUFBQUFBQUFBQUZCQlJGQkJSRkMwQUFBQTwvUmVzb3VyY2U+DQovLy8gICA8L1Jlc291cmNlcz4NCi8vLyA8L1hSVHlwZUluZm8+DQpuYW1lc3BhY2UgWHRyYVJlcG9ydFNlcmlhbGl6YXRpb24gew0KICAgIA0KICAgIHB1YmxpYyBjbGFzcyBNeVJlcG9ydCA6IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWHRyYVJlcG9ydCB7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGw4OTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwgbGFiZWwxMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9Xb3JrVGltZTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9NX291dDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDk7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsIGxhYmVsMTQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93IHRhYmxlUm93MzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIGR0U3RhcnREYXRlQ2VsbDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIE0xX0VuZDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIE0yX0VuZDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDE5Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMjQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBRX0VuZDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDM1Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgYXZnVDI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5EZXRhaWxCYW5kIERldGFpbDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDMyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMzc7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwyNzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwgbGFiZWwxMjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIGF2Z1AxOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgc3VtVzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3cgdGFibGVSb3cxMDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIGNlbGxDb25zdW1lcjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIGNlbGxEZXZUeXBlOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgY2VsbEdtaW47DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwzOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMzM7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwxNTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIGNlbGxHbWF4Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsNjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHN1bU07DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfTTI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGw3NjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDIyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgTTFfU3RhcnQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5DYWxjdWxhdGVkRmllbGQgY2FsY3VsYXRlZEZpZWxkMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDgyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdyB0YWJsZVJvdzk7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBjZWxsUGVyaW9kOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuUmVwb3J0Rm9vdGVyQmFuZCBUb3RhbFJlcG9ydEZvb3RlcjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGUgdGFibGU1Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdyB0YWJsZVJvdzE3Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsOTU7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGw5NjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDk5Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMTAxOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMzQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93IHRhYmxlUm93NTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDQzOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMzk7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGw0MDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDQxOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsNDI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlIHRhYmxlNjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3cgdGFibGVSb3cxNjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDYyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsNzk7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGw4NTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3cgdGFibGVSb3c3Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsNDY7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwyNjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDM2Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMzg7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsIGxhYmVsMTU7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlIHRhYmxlNDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3cgdGFibGVSb3cxOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsNTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDc7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwxNzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDIzOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsODsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3cgdGFibGVSb3cyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgZHRFbmREYXRlQ2VsbDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIE0yX1N0YXJ0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMjE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwyNTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIFFfU3RhcnQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwxMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDQ1Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMTA7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5Hcm91cEhlYWRlckJhbmQgRXZlbnRzR3JvdXBIZWFkZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlIHRhYmxlMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3cgdGFibGVSb3c2Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMTI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBzdW1ROw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdyBQYWdlSGVhZGVyUm93MTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxUZW1wOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsTWFzczsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwxMzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbEhlYXQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwzMDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIEVycm9yczsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwgbGFiZWwxMDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGUgdGFibGVEZXRhaWw7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93IHJvd0RldGFpbDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9EYXRhRGF0ZTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9UX2luOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMjg7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfVF9vdXQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfTV9pbjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9NX2RlbHRhOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX1BfaW47DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfUF9vdXQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfSF9pbjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDE0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX0hfb3V0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsX0hfZGVsdGE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGxfTWRlbHRhOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuRGV0YWlsUmVwb3J0QmFuZCBUb3RhbERldGFpbFJlcG9ydDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkRldGFpbEJhbmQgVG90YWxEZXRhaWw7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5DYWxjdWxhdGVkRmllbGQgY2FsY3VsYXRlZEZpZWxkMjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlBhZ2VGb290ZXJCYW5kIFBhZ2VGb290ZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlBpY3R1cmVCb3ggcGljdHVyZUJveDE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsIGxhYmVsMTM7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlBhZ2VJbmZvIHBhZ2VOdW1iZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93IHRhYmxlUm93ODsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIGNlbGxIZWFkZXJUZXh0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuQ2FsY3VsYXRlZEZpZWxkIGNhbGN1bGF0ZWRUbmFySGVhdDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIGNlbGxDb250cmFjdDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkRldGFpbEJhbmQgRXZlbnRzRGV0YWlsOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZSB0YWJsZTI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93IHRhYmxlUm93NDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBhdmdUMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDQ0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuUmVwb3J0Rm9vdGVyQmFuZCBSZXBvcnRGb290ZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBjZWxsRGV2TnVtYmVyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgc3VtTTE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGw0ODsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDE4Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuVG9wTWFyZ2luQmFuZCB0b3BNYXJnaW5CYW5kMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9NMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDI5Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuRGV0YWlsUmVwb3J0QmFuZCBFdmVudHNEZXRhaWxSZXBvcnQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5SZXBvcnRGb290ZXJCYW5kIEV2ZW50c1JlcG9ydEZvb3RlcjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwgbGFiZWw0Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZSB0YWJsZTc7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93IHRhYmxlUm93MTE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBjZWxsQWRkcmVzczsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3cgdGFibGVSb3cxMjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDQ5Ow0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgdGFibGVDZWxsMjA7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGwxNjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIGF2Z1AyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuR3JvdXBGb290ZXJCYW5kIEVxdWlwR3JvdXBGb290ZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlIHRhYmxlRm9vdGVyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdyByb3dGb290ZXI7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBDZWxsMDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHN1bU0yOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwgc3VtUTE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCBzdW1RMjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkNhbGN1bGF0ZWRGaWVsZCBjYWxjdWxhdGVkVG5hcjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkNhbGN1bGF0ZWRGaWVsZCBjYWxjdWxhdGVkVGVycjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9RMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9RMjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkRldGFpbFJlcG9ydEJhbmQgRXF1aXBEZXRhaWxSZXBvcnQ7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5Hcm91cEhlYWRlckJhbmQgRXF1aXBHcm91cEhlYWRlcjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGUgdGFibGUzOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdyBQYWdlSGVhZGVyUm93MjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9UMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9UMjsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbF9RZGVsdGE7DQogICAgICAgIHByaXZhdGUgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCB0YWJsZUNlbGw0NzsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsIHRhYmxlQ2VsbDMxOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuRGV0YWlsQmFuZCBFcXVpcERldGFpbDsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlJlcG9ydEhlYWRlckJhbmQgUmVwb3J0SGVhZGVyOw0KICAgICAgICBwcml2YXRlIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuQm90dG9tTWFyZ2luQmFuZCBib3R0b21NYXJnaW5CYW5kMTsNCiAgICAgICAgcHJpdmF0ZSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkNhbGN1bGF0ZWRGaWVsZCBjYWxjdWxhdGVkRmllbGQzOw0KICAgICAgICBwcml2YXRlIFN5c3RlbS5SZXNvdXJjZXMuUmVzb3VyY2VNYW5hZ2VyIF9yZXNvdXJjZXM7DQogICAgICAgIHByaXZhdGUgc3RyaW5nIF9yZXNvdXJjZVN0cmluZzsNCiAgICAgICAgcHVibGljIE15UmVwb3J0KCkgew0KICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VTdHJpbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlNlcmlhbGl6YXRpb24uWFJSZXNvdXJjZU1hbmFnZXIuR2V0UmVzb3VyY2VGb3IoIlh0cmFSZXBvcnRTZXJpYWxpemF0aW9uLk15UmVwb3J0Iik7DQogICAgICAgICAgICB0aGlzLkluaXRpYWxpemVDb21wb25lbnQoKTsNCiAgICAgICAgfQ0KICAgICAgICBwcml2YXRlIFN5c3RlbS5SZXNvdXJjZXMuUmVzb3VyY2VNYW5hZ2VyIHJlc291cmNlcyB7DQogICAgICAgICAgICBnZXQgew0KICAgICAgICAgICAgICAgIGlmIChfcmVzb3VyY2VzID09IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuU2VyaWFsaXphdGlvbi5YUlJlc291cmNlTWFuYWdlcih0aGlzLl9yZXNvdXJjZVN0cmluZyk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZXM7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXRpYWxpemVDb21wb25lbnQoKSB7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5MSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnkzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5NCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTUgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnk2ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5NyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTggPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnk5ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5MTAgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnkxMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTEyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5MjMgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnkyMCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTE0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5MjEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnkxMyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTI0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5MTggPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnkyNSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTI2ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5MTUgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnkyNyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTI4ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5MTkgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnkyOSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTE2ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5MTcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5IHN1bW1hcnkyMiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSgpOw0KICAgICAgICAgICAgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkgc3VtbWFyeTMxID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJTdW1tYXJ5KCk7DQogICAgICAgICAgICBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSU3VtbWFyeSBzdW1tYXJ5MzAgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlN1bW1hcnkoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODkgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDExID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfV29ya1RpbWUgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9vdXQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxNCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3czID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdygpOw0KICAgICAgICAgICAgdGhpcy5hdmdUMiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLkRldGFpbCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkRldGFpbEJhbmQoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzNyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI3ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwoKTsNCiAgICAgICAgICAgIHRoaXMuYXZnUDEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5zdW1XID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxMCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3coKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTUgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5jZWxsR21heCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDYgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5zdW1NID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNzYgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLk0xX1N0YXJ0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZEZpZWxkMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkNhbGN1bGF0ZWRGaWVsZCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4MiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93OSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3coKTsNCiAgICAgICAgICAgIHRoaXMuVG90YWxSZXBvcnRGb290ZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5SZXBvcnRGb290ZXJCYW5kKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ1ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTAgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93KCk7DQogICAgICAgICAgICB0aGlzLmNlbGxHbWluID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTYgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5FdmVudHNHcm91cEhlYWRlciA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkdyb3VwSGVhZGVyQmFuZCgpOw0KICAgICAgICAgICAgdGhpcy5zdW1RID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93KCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI2ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLkVycm9ycyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbE1hc3MgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEwID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJMYWJlbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0MSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlRGV0YWlsID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZSgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTWRlbHRhID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fZGVsdGEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5Ub3RhbERldGFpbFJlcG9ydCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkRldGFpbFJlcG9ydEJhbmQoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTAxID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1RfaW4gPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5kdEVuZERhdGVDZWxsID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzYgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuQ2FsY3VsYXRlZEZpZWxkKCk7DQogICAgICAgICAgICB0aGlzLlBhZ2VGb290ZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5QYWdlRm9vdGVyQmFuZCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5OSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLlFfRW5kID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c4ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdygpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxUZW1wID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZFRuYXJIZWF0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuQ2FsY3VsYXRlZEZpZWxkKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuY2VsbENvbnRyYWN0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuRXZlbnRzRGV0YWlsID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuRGV0YWlsQmFuZCgpOw0KICAgICAgICAgICAgdGhpcy5hdmdUMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuTTJfU3RhcnQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGUoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93NCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3coKTsNCiAgICAgICAgICAgIHRoaXMuUmVwb3J0Rm9vdGVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuUmVwb3J0Rm9vdGVyQmFuZCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0MiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDg1ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLmNlbGxEZXZOdW1iZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5zdW1NMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM1ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfb3V0ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c3ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdygpOw0KICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWwgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93KCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX291dCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLmR0U3RhcnREYXRlQ2VsbCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ4ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGUyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZSgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzE3ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdygpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2RlbHRhID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudG9wTWFyZ2luQmFuZDEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5Ub3BNYXJnaW5CYW5kKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI5ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuY2VsbFBlcmlvZCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLkV2ZW50c0RldGFpbFJlcG9ydCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkRldGFpbFJlcG9ydEJhbmQoKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxNSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGU3ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZSgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1BfaW4gPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZTUgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlKCk7DQogICAgICAgICAgICB0aGlzLnBpY3R1cmVCb3gxID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJQaWN0dXJlQm94KCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDYyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzUgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93KCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93MTEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93KCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE2ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c2ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdygpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLmF2Z1AyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuRXF1aXBHcm91cEZvb3RlciA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkdyb3VwRm9vdGVyQmFuZCgpOw0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkVG5hciA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkNhbGN1bGF0ZWRGaWVsZCgpOw0KICAgICAgICAgICAgdGhpcy5jZWxsRGV2VHlwZSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLmxhYmVsNCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSTGFiZWwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDYgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5jZWxsSGVhZGVyVGV4dCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTMgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkxhYmVsKCk7DQogICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRUZXJyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuQ2FsY3VsYXRlZEZpZWxkKCk7DQogICAgICAgICAgICB0aGlzLlFfU3RhcnQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5zdW1NMiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLmNlbGxDb25zdW1lciA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX291dCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlNCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGUoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdygpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9pbiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLk0xX0VuZCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM5ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNzkgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw1ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1EyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMuRXF1aXBEZXRhaWxSZXBvcnQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5EZXRhaWxSZXBvcnRCYW5kKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQwID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0OSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9EYXRhRGF0ZSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLmNlbGxBZGRyZXNzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzggPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5SZXBvcnRIZWFkZXIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5SZXBvcnRIZWFkZXJCYW5kKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI4ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzQgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE5ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMucm93Rm9vdGVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvdygpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RZGVsdGEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5Ub3RhbERldGFpbCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkRldGFpbEJhbmQoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTUgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5zdW1RMiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLkVxdWlwRGV0YWlsID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuRGV0YWlsQmFuZCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZTMgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlKCk7DQogICAgICAgICAgICB0aGlzLkNlbGwwID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxMiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3coKTsNCiAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzIgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93KCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlNiA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGUoKTsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNSA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93MTYgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93KCk7DQogICAgICAgICAgICB0aGlzLkV2ZW50c1JlcG9ydEZvb3RlciA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlJlcG9ydEZvb3RlckJhbmQoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsSGVhdCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlRm9vdGVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZSgpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNyA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLmJvdHRvbU1hcmdpbkJhbmQxID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuQm90dG9tTWFyZ2luQmFuZCgpOw0KICAgICAgICAgICAgdGhpcy5wYWdlTnVtYmVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJQYWdlSW5mbygpOw0KICAgICAgICAgICAgdGhpcy5FcXVpcEdyb3VwSGVhZGVyID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuR3JvdXBIZWFkZXJCYW5kKCk7DQogICAgICAgICAgICB0aGlzLk0yX0VuZCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMxID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOCA9IG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsKCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ3ID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGwoKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01faW4gPSBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbCgpOw0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQzID0gbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuQ2FsY3VsYXRlZEZpZWxkKCk7DQogICAgICAgICAgICAoKFN5c3RlbS5Db21wb25lbnRNb2RlbC5JU3VwcG9ydEluaXRpYWxpemUpKHRoaXMudGFibGVEZXRhaWwpKS5CZWdpbkluaXQoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcy50YWJsZTEpKS5CZWdpbkluaXQoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcy50YWJsZTIpKS5CZWdpbkluaXQoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcy50YWJsZTcpKS5CZWdpbkluaXQoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcy50YWJsZTUpKS5CZWdpbkluaXQoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcy50YWJsZTQpKS5CZWdpbkluaXQoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcy50YWJsZTMpKS5CZWdpbkluaXQoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcy50YWJsZTYpKS5CZWdpbkluaXQoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcy50YWJsZUZvb3RlcikpLkJlZ2luSW5pdCgpOw0KICAgICAgICAgICAgKChTeXN0ZW0uQ29tcG9uZW50TW9kZWwuSVN1cHBvcnRJbml0aWFsaXplKSh0aGlzKSkuQmVnaW5Jbml0KCk7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDg5DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODkuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDg5LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDg5LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDg5LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4OS5OYW1lID0gInRhYmxlQ2VsbDg5IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODkuTnVsbFZhbHVlVGV4dCA9ICItICAgIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODkuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODkuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDg5LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4OS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODkuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5MS5Gb3JtYXRTdHJpbmcgPSAiezA6RjN9IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODkuU3VtbWFyeSA9IHN1bW1hcnkxOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4OS5UZXh0ID0gItCi0YQiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4OS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDg5LldlaWdodCA9IDAuODQ3NDAzNjA4MTQ0Mjg5NjFEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBsYWJlbDExDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMubGFiZWwxMS5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDExLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTEuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMEYsIDQwRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTEuTmFtZSA9ICJsYWJlbDExIjsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDUsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDExLlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDcwNi42NDkyRiwgNDBGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMS5UZXh0ID0gItCf0YDQtdC00YHRgtCw0LLQuNGC0LXQu9GMINC+0LHRgdC70YPQttC40LLQsNGO0YnQtdC5INC+0YDQs9Cw0L3QuNC30LDRhtC40Lg6ICI7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlTGVmdDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX1dvcmtUaW1lDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1dvcmtUaW1lLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfV29ya1RpbWUuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1dvcmtUaW1lLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAu0KLRgNCw0LFf0YjRgtCw0YIxIiwgInswOkYyfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9Xb3JrVGltZS5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfV29ya1RpbWUuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1dvcmtUaW1lLk5hbWUgPSAidGFibGVDZWxsX1dvcmtUaW1lIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1dvcmtUaW1lLk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9Xb3JrVGltZS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfV29ya1RpbWUuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9Xb3JrVGltZS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkyLkZvcm1hdFN0cmluZyA9ICJ7MDpGMn0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfV29ya1RpbWUuU3VtbWFyeSA9IHN1bW1hcnkyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfV29ya1RpbWUuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9Xb3JrVGltZS5XZWlnaHQgPSAwLjA1NzQzODMxNTM0ODgxODA3NUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbF9NX291dA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX291dC5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fb3V0LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX291dC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLk0yIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX291dC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9vdXQuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fb3V0Lk5hbWUgPSAidGFibGVDZWxsX01fb3V0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fb3V0Lk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX291dC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9vdXQuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX291dC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fb3V0LldlaWdodCA9IDAuMDk0Mzk5NTA2NDQ1Mzc3Nzg0RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsOQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDkuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDkuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLkFyY2hpdmVQZXJpb2QiKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDkuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOS5OYW1lID0gInRhYmxlQ2VsbDkiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDkuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDkuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJXaWR0aCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5LlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTMuRm9ybWF0U3RyaW5nID0gInswOkYyfSI7DQogICAgICAgICAgICBzdW1tYXJ5My5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDkuU3VtbWFyeSA9IHN1bW1hcnkzOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5LldlaWdodCA9IDAuODQ3NDAzMjU1NTU4NTEyMjZEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBsYWJlbDE0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMubGFiZWwxNC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDE0LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTQuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoNi43MTgzNEYsIDE3OC40MkYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDE0Lk5hbWUgPSAibGFiZWwxNCI7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTQuU2l6ZUYgPSBuZXcgU3lzdGVtLkRyYXdpbmcuU2l6ZUYoNTU4LjhGLCAzMi4zODQ5Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTQuVGV4dCA9ICLQotC10L/Qu9C+0YHQvdCw0LHQttC10L3QuNC1OiI7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTQuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlTGVmdDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVSb3czDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVSb3czLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93My5DZWxscy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHRTdGFydERhdGVDZWxsLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5NMV9FbmQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLk0yX0VuZCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTksDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI0LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5RX0VuZCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzV9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3czLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93My5OYW1lID0gInRhYmxlUm93MyI7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93My5XZWlnaHQgPSAxRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gYXZnVDINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5hdmdUMi5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMuYXZnVDIuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMuYXZnVDIuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5jYWxjdWxhdGVkRmllbGQxIiwgInswOkYyfSIpfSk7DQogICAgICAgICAgICB0aGlzLmF2Z1QyLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLmF2Z1QyLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5hdmdUMi5OYW1lID0gImF2Z1QyIjsNCiAgICAgICAgICAgIHRoaXMuYXZnVDIuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMuYXZnVDIuU2NyaXB0cy5PblN1bW1hcnlDYWxjdWxhdGVkID0gIk9uU3VtbWFyeUNhbGN1bGF0ZWQiOw0KICAgICAgICAgICAgdGhpcy5hdmdUMi5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuYXZnVDIuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5NC5Gb3JtYXRTdHJpbmcgPSAiezA6RjJ9IjsNCiAgICAgICAgICAgIHN1bW1hcnk0LkZ1bmMgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlGdW5jLkF2ZzsNCiAgICAgICAgICAgIHN1bW1hcnk0Lklnbm9yZU51bGxWYWx1ZXMgPSB0cnVlOw0KICAgICAgICAgICAgc3VtbWFyeTQuUnVubmluZyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeVJ1bm5pbmcuUmVwb3J0Ow0KICAgICAgICAgICAgdGhpcy5hdmdUMi5TdW1tYXJ5ID0gc3VtbWFyeTQ7DQogICAgICAgICAgICB0aGlzLmF2Z1QyLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5hdmdUMi5XZWlnaHQgPSAwLjA0NDg4NTc2OTk4NjE4NzA1NUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIERldGFpbA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkRldGFpbC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5EZXRhaWwuSGVpZ2h0RiA9IDBGOw0KICAgICAgICAgICAgdGhpcy5EZXRhaWwuTmFtZSA9ICJEZXRhaWwiOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwzMg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMyLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMi5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMi5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOEYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzIuTmFtZSA9ICJ0YWJsZUNlbGwzMiI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMyLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMyLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMi5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzIuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMyLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMi5UZXh0ID0gIlTRjdC/IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzIuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMi5XZWlnaHQgPSAwLjg0NzQwMzcwNzM4MDAyMDM1RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMzcNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzNy5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzcuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzcuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC7QotGEMSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM3LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM3LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA3Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM3Lk5hbWUgPSAidGFibGVDZWxsMzciOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzNy5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzNy5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzcuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJXaWR0aCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzNy5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzcuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM3LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTUuRm9ybWF0U3RyaW5nID0gInswOkYyfSI7DQogICAgICAgICAgICBzdW1tYXJ5NS5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM3LlN1bW1hcnkgPSBzdW1tYXJ5NTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzcuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM3LldlaWdodCA9IDAuODQ3NDAzMjg0ODg1NDYyNDZEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwyNw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI3LkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNy5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNy5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNy5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOEYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjcuTmFtZSA9ICJ0YWJsZUNlbGwyNyI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI3LlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNy5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjcuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI3LlRleHQgPSAiVDIiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNy5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI3LldlaWdodCA9IDAuMTM4Njg0Mzk0NDgyMTk3NzdEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBsYWJlbDEyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMubGFiZWwxMi5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEyLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTIuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMEYsIDBGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMi5OYW1lID0gImxhYmVsMTIiOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEyLlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDU1OC44RiwgNTguNDJGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMi5UZXh0ID0gIiDQn9C+0LrQsNC30LDQvdC40Y8g0YHRh9C10YLRh9C40LrQvtCyOiI7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTIuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlTGVmdDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gYXZnUDENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5hdmdQMS5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMuYXZnUDEuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMuYXZnUDEuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5QMSIsICJ7MDpGMX0iKX0pOw0KICAgICAgICAgICAgdGhpcy5hdmdQMS5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5hdmdQMS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOEYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMuYXZnUDEuTmFtZSA9ICJhdmdQMSI7DQogICAgICAgICAgICB0aGlzLmF2Z1AxLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLmF2Z1AxLlNjcmlwdHMuT25TdW1tYXJ5Q2FsY3VsYXRlZCA9ICJPblN1bW1hcnlDYWxjdWxhdGVkIjsNCiAgICAgICAgICAgIHRoaXMuYXZnUDEuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmF2Z1AxLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5hdmdQMS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnk2LkZvcm1hdFN0cmluZyA9ICJ7MDpGMX0iOw0KICAgICAgICAgICAgc3VtbWFyeTYuRnVuYyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeUZ1bmMuQXZnOw0KICAgICAgICAgICAgc3VtbWFyeTYuSWdub3JlTnVsbFZhbHVlcyA9IHRydWU7DQogICAgICAgICAgICBzdW1tYXJ5Ni5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLmF2Z1AxLlN1bW1hcnkgPSBzdW1tYXJ5NjsNCiAgICAgICAgICAgIHRoaXMuYXZnUDEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLmF2Z1AxLldlaWdodCA9IDAuMDU3NzQ5MzEzNDIzMzU3MjQyRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gc3VtVw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnN1bVcuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnN1bVcuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMuc3VtVy5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLtCi0YDQsNCxX9GI0YLQsNGCMSIsICJ7MDpGMn0iKX0pOw0KICAgICAgICAgICAgdGhpcy5zdW1XLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnN1bVcuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDhGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnN1bVcuTmFtZSA9ICJzdW1XIjsNCiAgICAgICAgICAgIHRoaXMuc3VtVy5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy5zdW1XLlNjcmlwdHMuT25TdW1tYXJ5Q2FsY3VsYXRlZCA9ICJPblN1bW1hcnlDYWxjdWxhdGVkIjsNCiAgICAgICAgICAgIHRoaXMuc3VtVy5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuc3VtVy5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnk3LkZvcm1hdFN0cmluZyA9ICJ7MDpGMn0iOw0KICAgICAgICAgICAgc3VtbWFyeTcuUnVubmluZyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeVJ1bm5pbmcuUmVwb3J0Ow0KICAgICAgICAgICAgdGhpcy5zdW1XLlN1bW1hcnkgPSBzdW1tYXJ5NzsNCiAgICAgICAgICAgIHRoaXMuc3VtVy5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuc3VtVy5XZWlnaHQgPSAwLjA1NjIyNDUzMTE3ODk5OTYyOUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlUm93MTANCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzEwLkNlbGxzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZWxsQ29uc3VtZXIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNlbGxEZXZUeXBlLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZWxsR21pbn0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzEwLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93MTAuTmFtZSA9ICJ0YWJsZVJvdzEwIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxMC5XZWlnaHQgPSAwLjQ4NDg0MDY2NTQ0OTM4OTc1RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMy5OYW1lID0gInRhYmxlQ2VsbDMiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oNSwgMCwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMuVGV4dCA9ICLQntC/0LjRgdCw0L3QuNC1IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMy5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVMZWZ0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzLldlaWdodCA9IDAuODYwMjk0MTE3NjQ3MDU4ODhEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwzMw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMzLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMzLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMzLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMy5OYW1lID0gInRhYmxlQ2VsbDMzIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzMuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMzLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMy5UZXh0ID0gItCcMSwgW1VuaXRHcm91cC5XZWlnaHRdIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzMuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMy5XZWlnaHQgPSAwLjc4Mjk0MTMxMDM0MzE3NDZEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwxNQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE1LkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE1LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE1LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE1LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNS5OYW1lID0gInRhYmxlQ2VsbDE1IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTUuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE1LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNS5UZXh0ID0gIuKIhlYiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE1LldlaWdodCA9IDAuMjUyNjMxNTI3OTAyMDg3N0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGNlbGxHbWF4DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuY2VsbEdtYXguRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuY2VsbEdtYXguRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMuY2VsbEdtYXguTmFtZSA9ICJjZWxsR21heCI7DQogICAgICAgICAgICB0aGlzLmNlbGxHbWF4LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5jZWxsR21heC5UZXh0ID0gItCd0LDQuNCx0L7Qu9GM0YjQuNC5INGA0LDRgdGF0L7QtCDRgtC10L/Qu9C+0L3QvtGB0LjRgtC10LvRjyBHbWF4OiBbU2V0dGluZ3MuRXF1aXBfR21heF0iOw0KICAgICAgICAgICAgdGhpcy5jZWxsR21heC5XZWlnaHQgPSAxRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsNg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDYuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNi5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw2LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw2Lk5hbWUgPSAidGFibGVDZWxsNiI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDYuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDYuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDYuVGV4dCA9ICJRLCBbVW5pdEdyb3VwLlRoZXJtYWxFbmVyZ3ldIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDYuV2VpZ2h0ID0gMC43ODI5NDEyODc0MDY4MTMxMkQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHN1bU0NCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5zdW1NLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy5zdW1NLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnN1bU0uRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5jYWxjdWxhdGVkRmllbGQzIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnN1bU0uRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuc3VtTS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOEYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMuc3VtTS5OYW1lID0gInN1bU0iOw0KICAgICAgICAgICAgdGhpcy5zdW1NLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnN1bU0uU2NyaXB0cy5PblN1bW1hcnlDYWxjdWxhdGVkID0gIk9uU3VtbWFyeUNhbGN1bGF0ZWQiOw0KICAgICAgICAgICAgdGhpcy5zdW1NLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5zdW1NLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTguRm9ybWF0U3RyaW5nID0gInswOkYzfSI7DQogICAgICAgICAgICBzdW1tYXJ5OC5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnN1bU0uU3VtbWFyeSA9IHN1bW1hcnk4Ow0KICAgICAgICAgICAgdGhpcy5zdW1NLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5zdW1NLldlaWdodCA9IDAuMDg0OTUwNzE5OTU5MzkyNDIxRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX00yDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTIuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NMi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOEYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yLk5hbWUgPSAidGFibGVDZWxsX00yIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTIuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NMi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00yLlRleHQgPSAiTTIiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTIuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTIuV2VpZ2h0ID0gMC4yODU1MDQ0MDE2NTU5Mzg4MkQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDc2DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNzYuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDc2LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDc2LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDc2LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3Ni5OYW1lID0gInRhYmxlQ2VsbDc2IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNzYuTnVsbFZhbHVlVGV4dCA9ICItICAgIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNzYuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNzYuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDc2LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3Ni5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNzYuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5OS5Gb3JtYXRTdHJpbmcgPSAiezA6RjJ9IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNzYuU3VtbWFyeSA9IHN1bW1hcnk5Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3Ni5UZXh0ID0gItCi0YDQsNCxLiDRiNGC0LDRgtC9IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNzYuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3Ni5XZWlnaHQgPSAwLjg0NzQwMzI5ODkwODI4MzM2RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMjINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMi5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjIuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjIuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5U0L3RgTQiKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMi5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgN0YpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMi5OYW1lID0gInRhYmxlQ2VsbDIyIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjIuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjIuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIyLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVyV2lkdGggPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjIuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIyLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkxMC5Gb3JtYXRTdHJpbmcgPSAiezA6RjJ9IjsNCiAgICAgICAgICAgIHN1bW1hcnkxMC5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIyLlN1bW1hcnkgPSBzdW1tYXJ5MTA7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIyLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMi5XZWlnaHQgPSAwLjg0NzQwMzI3MDk2NjgyMDY3RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gTTFfU3RhcnQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5NMV9TdGFydC5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy5NMV9TdGFydC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwU3RhcnQuTTFfVG90YWwiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMuTTFfU3RhcnQuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuTTFfU3RhcnQuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMuTTFfU3RhcnQuTmFtZSA9ICJNMV9TdGFydCI7DQogICAgICAgICAgICB0aGlzLk0xX1N0YXJ0LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLk0xX1N0YXJ0LlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5NMV9TdGFydC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuTTFfU3RhcnQuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLk0xX1N0YXJ0LldlaWdodCA9IDAuNzg0NjUzNTQ0MTM1MDY5MzhEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBjYWxjdWxhdGVkRmllbGQxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZEZpZWxkMS5EYXRhTWVtYmVyID0gIkVxdWlwIjsNCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZEZpZWxkMS5FeHByZXNzaW9uID0gIlt0MV0tW3QyXSI7DQogICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRGaWVsZDEuTmFtZSA9ICJjYWxjdWxhdGVkRmllbGQxIjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsODINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4Mi5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODIuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODIuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDhGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDgyLk5hbWUgPSAidGFibGVDZWxsODIiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4Mi5OdWxsVmFsdWVUZXh0ID0gIi0gICAiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4Mi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4Mi5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODIuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDgyLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4Mi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkxMS5Gb3JtYXRTdHJpbmcgPSAiezA6RjN9IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODIuU3VtbWFyeSA9IHN1bW1hcnkxMTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODIuVGV4dCA9ICLQom1heCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDgyLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODIuV2VpZ2h0ID0gMC44NDc0MDMyNzE1MDk2Mzg3OUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlUm93OQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlUm93OS5DZWxscy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2VsbFBlcmlvZH0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzkuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c5Lk5hbWUgPSAidGFibGVSb3c5IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c5LldlaWdodCA9IDAuNDg0ODQwNjIwNzI5NDYzODhEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBUb3RhbFJlcG9ydEZvb3Rlcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLlRvdGFsUmVwb3J0Rm9vdGVyLkNvbnRyb2xzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQ29udHJvbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGU1LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbDE0LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZTYsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsMTUsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlNCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWwxMn0pOw0KICAgICAgICAgICAgdGhpcy5Ub3RhbFJlcG9ydEZvb3Rlci5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5Ub3RhbFJlcG9ydEZvb3Rlci5IZWlnaHRGID0gNDQ0LjE4MjVGOw0KICAgICAgICAgICAgdGhpcy5Ub3RhbFJlcG9ydEZvb3Rlci5OYW1lID0gIlRvdGFsUmVwb3J0Rm9vdGVyIjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsNDUNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwRXZlbnRzLk5hbWUiKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NS5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NS5OYW1lID0gInRhYmxlQ2VsbDQ1IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDUuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbyg1LCAwLCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDUuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlTGVmdDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDUuV2VpZ2h0ID0gMC44NjAyOTQxMTc2NDcwNTg4OEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDEwDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTAuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMC5NdWx0aWxpbmUgPSB0cnVlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMC5OYW1lID0gInRhYmxlQ2VsbDEwIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTAuUm93U3BhbiA9IDI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMC5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTAuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwLlRleHQgPSAi0JLRgNC10LzRjyDRgNCw0LEuKFtVbml0R3JvdXAuVGltZVNwYW5dKSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTAuV2VpZ2h0ID0gMC4xNzM2ODU0NDA2NjYxNDQ3NUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlUm93Mg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlUm93Mi5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzIuQ2VsbHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGxbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmR0RW5kRGF0ZUNlbGwsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLk0xX1N0YXJ0LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5NMl9TdGFydCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI1LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5RX1N0YXJ0LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzIuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cyLk5hbWUgPSAidGFibGVSb3cyIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cyLldlaWdodCA9IDFEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBjZWxsR21pbg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmNlbGxHbWluLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLmNlbGxHbWluLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLmNlbGxHbWluLk5hbWUgPSAiY2VsbEdtaW4iOw0KICAgICAgICAgICAgdGhpcy5jZWxsR21pbi5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuY2VsbEdtaW4uVGV4dCA9ICLQndCw0LjQvNC10L3RjNGI0LjQuSDRgNCw0YHRhdC+0LQg0YLQtdC/0LvQvtC90L7RgdC40YLQtdC70Y8gR21pbjogW1NldHRpbmdzLkVxdWlwX0dtaW5dIjsNCiAgICAgICAgICAgIHRoaXMuY2VsbEdtaW4uV2VpZ2h0ID0gMUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDk2DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTYuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDk2LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDk2LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDk2LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5Ni5OYW1lID0gInRhYmxlQ2VsbDk2IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTYuTnVsbFZhbHVlVGV4dCA9ICItICAgIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTYuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTYuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDk2LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5Ni5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTYuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5MTIuRm9ybWF0U3RyaW5nID0gInswOkYyfSI7DQogICAgICAgICAgICBzdW1tYXJ5MTIuRnVuYyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeUZ1bmMuQXZnOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5Ni5TdW1tYXJ5ID0gc3VtbWFyeTEyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5Ni5UZXh0ID0gIlEg0YDQsNCxLiDRiNGC0LDRgtC9ICsgUW1pbiArIFFtYXgiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5Ni5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDk2LldlaWdodCA9IDIuMTA3NDA1NTk4OTI4MDQ1OEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIEV2ZW50c0dyb3VwSGVhZGVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuRXZlbnRzR3JvdXBIZWFkZXIuQ29udHJvbHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJDb250cm9sW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZTF9KTsNCiAgICAgICAgICAgIHRoaXMuRXZlbnRzR3JvdXBIZWFkZXIuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuRXZlbnRzR3JvdXBIZWFkZXIuR3JvdXBVbmlvbiA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuR3JvdXBVbmlvbi5XaXRoRmlyc3REZXRhaWw7DQogICAgICAgICAgICB0aGlzLkV2ZW50c0dyb3VwSGVhZGVyLkhlaWdodEYgPSA0MEY7DQogICAgICAgICAgICB0aGlzLkV2ZW50c0dyb3VwSGVhZGVyLk5hbWUgPSAiRXZlbnRzR3JvdXBIZWFkZXIiOw0KICAgICAgICAgICAgdGhpcy5FdmVudHNHcm91cEhlYWRlci5SZXBlYXRFdmVyeVBhZ2UgPSB0cnVlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBzdW1RDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuc3VtUS5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMuc3VtUS5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy5zdW1RLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuUdGC0YExIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnN1bVEuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuc3VtUS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOEYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMuc3VtUS5OYW1lID0gInN1bVEiOw0KICAgICAgICAgICAgdGhpcy5zdW1RLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnN1bVEuU2NyaXB0cy5PblN1bW1hcnlDYWxjdWxhdGVkID0gIk9uU3VtbWFyeUNhbGN1bGF0ZWQiOw0KICAgICAgICAgICAgdGhpcy5zdW1RLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5zdW1RLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTIzLkZvcm1hdFN0cmluZyA9ICJ7MDpGM30iOw0KICAgICAgICAgICAgc3VtbWFyeTIzLlJ1bm5pbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlSdW5uaW5nLlJlcG9ydDsNCiAgICAgICAgICAgIHRoaXMuc3VtUS5TdW1tYXJ5ID0gc3VtbWFyeTIzOw0KICAgICAgICAgICAgdGhpcy5zdW1RLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5zdW1RLldlaWdodCA9IDAuMDczNjAzMDI4ODg4NjY2ODQ5RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gUGFnZUhlYWRlclJvdzENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93MS5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93MS5DZWxscy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsVGVtcCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsTWFzcywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTMsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbEhlYXQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMH0pOw0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93MS5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93MS5OYW1lID0gIlBhZ2VIZWFkZXJSb3cxIjsNCiAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzEuV2VpZ2h0ID0gMC42MDk3NTYwOTc1NjA5NzU2RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMjYNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNi5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjYuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjYuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5U0L3RgTMiKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNi5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgN0YpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNi5OYW1lID0gInRhYmxlQ2VsbDI2IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjYuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjYuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI2LlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVyV2lkdGggPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjYuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI2LlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkyMC5Gb3JtYXRTdHJpbmcgPSAiezA6RjJ9IjsNCiAgICAgICAgICAgIHN1bW1hcnkyMC5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI2LlN1bW1hcnkgPSBzdW1tYXJ5MjA7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI2LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNi5XZWlnaHQgPSAwLjg0NzQwMzI3MTUwOTYzODc5RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMS5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxLk11bHRpbGluZSA9IHRydWU7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEuTmFtZSA9ICJ0YWJsZUNlbGwxIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMS5Sb3dTcGFuID0gMjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMS5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMS5UZXh0ID0gItCU0LDRgtCwIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEuV2VpZ2h0ID0gMC4zODEyNzIyNjcyODI5NzQ1M0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIEVycm9ycw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkVycm9ycy5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMuRXJyb3JzLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLkVycm9ycy5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLkV2ZW50cyIpfSk7DQogICAgICAgICAgICB0aGlzLkVycm9ycy5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5FcnJvcnMuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMuRXJyb3JzLk5hbWUgPSAiRXJyb3JzIjsNCiAgICAgICAgICAgIHRoaXMuRXJyb3JzLk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLkVycm9ycy5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy5FcnJvcnMuU2NyaXB0cy5PbkV2YWx1YXRlQmluZGluZyA9ICJFcnJvcnMyX0V2YWx1YXRlQmluZGluZyI7DQogICAgICAgICAgICB0aGlzLkVycm9ycy5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuRXJyb3JzLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5FcnJvcnMuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLkVycm9ycy5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuRXJyb3JzLldlaWdodCA9IDAuMTI4NDkwNTY1NzE5NzM2NDREOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxNYXNzDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsTWFzcy5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsTWFzcy5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxNYXNzLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbE1hc3MuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDhGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbE1hc3MuTmFtZSA9ICJ0YWJsZUNlbGxNYXNzIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsTWFzcy5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsTWFzcy5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsTWFzcy5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsTWFzcy5UZXh0ID0gItCc0LDRgdGB0LAgKFtVbml0R3JvdXAuV2VpZ2h0XSkiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxNYXNzLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsTWFzcy5XZWlnaHQgPSAwLjc3MjM1MzM2OTc1ODczNzgxRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gbGFiZWwxMA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmxhYmVsMTAuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEwLkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDBGLCAwRik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTAuTmFtZSA9ICJsYWJlbDEwIjsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDUsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEwLlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDcwNi42NDkyRiwgNDBGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMC5UZXh0ID0gItCe0YLQstC10YLRgdGC0LLQtdC90L3Ri9C5INC30LAg0YPRh9C10YIg0YLQtdC/0LvQvtCy0L7QuSDRjdC90LXRgNCz0LjQuDoiOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEwLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUxlZnQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDQxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDEuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQxLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQxLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQxLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA3Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQxLk5hbWUgPSAidGFibGVDZWxsNDEiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0MS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0MS5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDEuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJXaWR0aCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0MS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDEuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQxLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0MS5UZXh0ID0gIjAuMDAwIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQxLldlaWdodCA9IDAuNzAyNDY5MTIxOTA3MTg2OEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlRGV0YWlsDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVEZXRhaWwuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlRGV0YWlsLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlRGV0YWlsLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlRGV0YWlsLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4LjI1RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLlJlZ3VsYXIsIFN5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdC5Qb2ludCwgKChieXRlKSgyMDQpKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlRGV0YWlsLkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDBGLCAwRik7DQogICAgICAgICAgICB0aGlzLnRhYmxlRGV0YWlsLk5hbWUgPSAidGFibGVEZXRhaWwiOw0KICAgICAgICAgICAgdGhpcy50YWJsZURldGFpbC5Sb3dzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3dbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd0RldGFpbH0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZURldGFpbC5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRigyNzIwRiwgNDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVEZXRhaWwuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlRGV0YWlsLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfTWRlbHRhDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01kZWx0YS5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01kZWx0YS5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTWRlbHRhLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NZGVsdGEuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDhGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NZGVsdGEuTmFtZSA9ICJ0YWJsZUNlbGxfTWRlbHRhIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01kZWx0YS5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01kZWx0YS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01kZWx0YS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01kZWx0YS5UZXh0ID0gIuKIhtCcIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01kZWx0YS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NZGVsdGEuV2VpZ2h0ID0gMC4yNjI0NzM3ODA4NTY4NzM4NEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbF9NX2RlbHRhDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fZGVsdGEuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2RlbHRhLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2RlbHRhLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuY2FsY3VsYXRlZEZpZWxkMyIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9kZWx0YS5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9kZWx0YS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgN0YpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9kZWx0YS5OYW1lID0gInRhYmxlQ2VsbF9NX2RlbHRhIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fZGVsdGEuTnVsbFZhbHVlVGV4dCA9ICItIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fZGVsdGEuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01fZGVsdGEuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2RlbHRhLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9kZWx0YS5XZWlnaHQgPSAwLjA4Njc4NDYzMjY5NjcwNjIyMUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIFRvdGFsRGV0YWlsUmVwb3J0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuVG90YWxEZXRhaWxSZXBvcnQuQmFuZHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuQmFuZFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuVG90YWxEZXRhaWwsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlRvdGFsUmVwb3J0Rm9vdGVyfSk7DQogICAgICAgICAgICB0aGlzLlRvdGFsRGV0YWlsUmVwb3J0LkRhdGFNZW1iZXIgPSAiRXF1aXAiOw0KICAgICAgICAgICAgdGhpcy5Ub3RhbERldGFpbFJlcG9ydC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5Ub3RhbERldGFpbFJlcG9ydC5MZXZlbCA9IDE7DQogICAgICAgICAgICB0aGlzLlRvdGFsRGV0YWlsUmVwb3J0Lk5hbWUgPSAiVG90YWxEZXRhaWxSZXBvcnQiOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwxMDENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMDEuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwMS5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMDEuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTAxLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMDEuTmFtZSA9ICJ0YWJsZUNlbGwxMDEiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMDEuTnVsbFZhbHVlVGV4dCA9ICItICAgIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTAxLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwMS5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTAxLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMDEuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwMS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkxNC5Gb3JtYXRTdHJpbmcgPSAiezA6RjN9IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTAxLlN1bW1hcnkgPSBzdW1tYXJ5MTQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwMS5UZXh0ID0gIlHRhCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwMS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEwMS5XZWlnaHQgPSAwLjcwMjQ2OTEyMTkwNzE4NjhEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfVF9pbg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX2luLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9pbi5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9pbi5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLnQxIiwgInswOkYyfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX2luLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX2luLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA3Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX2luLk5hbWUgPSAidGFibGVDZWxsX1RfaW4iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9pbi5OdWxsVmFsdWVUZXh0ID0gIi0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9pbi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9pbi5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1RfaW4uVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX2luLldlaWdodCA9IDAuMDU0NDk3MDgxNjUyNTM2M0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGR0RW5kRGF0ZUNlbGwNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5kdEVuZERhdGVDZWxsLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLmR0RW5kRGF0ZUNlbGwuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcFN0YXJ0LlRpbWUiLCAiezA6ZGQuTU0ueXkgSEh9Iil9KTsNCiAgICAgICAgICAgIHRoaXMuZHRFbmREYXRlQ2VsbC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5kdEVuZERhdGVDZWxsLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA3Rik7DQogICAgICAgICAgICB0aGlzLmR0RW5kRGF0ZUNlbGwuTmFtZSA9ICJkdEVuZERhdGVDZWxsIjsNCiAgICAgICAgICAgIHRoaXMuZHRFbmREYXRlQ2VsbC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuZHRFbmREYXRlQ2VsbC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLmR0RW5kRGF0ZUNlbGwuV2VpZ2h0ID0gMC43ODEyMjg4NTM4MDQ5NDMyMkQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDM2DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzYuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM2LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM2LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuVNC90YExIil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzYuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzYuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzYuTmFtZSA9ICJ0YWJsZUNlbGwzNiI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM2LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM2LlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzNi5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcldpZHRoID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM2LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzNi5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzYuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5MjEuRm9ybWF0U3RyaW5nID0gInswOkYyfSI7DQogICAgICAgICAgICBzdW1tYXJ5MjEuUnVubmluZyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeVJ1bm5pbmcuUmVwb3J0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzNi5TdW1tYXJ5ID0gc3VtbWFyeTIxOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzNi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzYuV2VpZ2h0ID0gMC44NDc0MDM2MzM2MjQyMjc3N0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGNhbGN1bGF0ZWRGaWVsZDINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQyLkRhdGFNZW1iZXIgPSAiRXF1aXAiOw0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQyLkV4cHJlc3Npb24gPSAiW1YxXS1bVjJdIjsNCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZEZpZWxkMi5OYW1lID0gImNhbGN1bGF0ZWRGaWVsZDIiOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBQYWdlRm9vdGVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuUGFnZUZvb3Rlci5Db250cm9scy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkNvbnRyb2xbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBpY3R1cmVCb3gxLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYWJlbDEzLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlTnVtYmVyfSk7DQogICAgICAgICAgICB0aGlzLlBhZ2VGb290ZXIuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuUGFnZUZvb3Rlci5IZWlnaHRGID0gNTguNDJGOw0KICAgICAgICAgICAgdGhpcy5QYWdlRm9vdGVyLk5hbWUgPSAiUGFnZUZvb3RlciI7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDk5DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTkuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDk5LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDk5LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDk5LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5OS5OYW1lID0gInRhYmxlQ2VsbDk5IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTkuTnVsbFZhbHVlVGV4dCA9ICItICAgIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTkuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTkuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDk5LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5OS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTkuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5MTMuRm9ybWF0U3RyaW5nID0gInswOkYzfSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDk5LlN1bW1hcnkgPSBzdW1tYXJ5MTM7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDk5LlRleHQgPSAiUSBkdCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDk5LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTkuV2VpZ2h0ID0gMC43MDI0Njg4NDA5MDQ1MDI3OUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIFFfRW5kDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuUV9FbmQuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMuUV9FbmQuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcEVuZC5R0YLRgTFfVG90YWwiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMuUV9FbmQuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuUV9FbmQuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMuUV9FbmQuTmFtZSA9ICJRX0VuZCI7DQogICAgICAgICAgICB0aGlzLlFfRW5kLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLlFfRW5kLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5RX0VuZC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuUV9FbmQuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLlFfRW5kLldlaWdodCA9IDAuNzgyOTQwODkyNDczNDA0N0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlUm93OA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlUm93OC5DZWxscy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2VsbEhlYWRlclRleHR9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c4LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93OC5OYW1lID0gInRhYmxlUm93OCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93OC5XZWlnaHQgPSAwLjcyNzI2MDk0ODI0MzY4ODQ4RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsVGVtcA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbFRlbXAuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbFRlbXAuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsVGVtcC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxUZW1wLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxUZW1wLk5hbWUgPSAidGFibGVDZWxsVGVtcCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbFRlbXAuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbFRlbXAuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbFRlbXAuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbFRlbXAuVGV4dCA9ICLQotC10LzQv9C10YDQsNGC0YPRgNCwIChbVW5pdEdyb3VwLlRlbXBlcmF0dXJlXSkiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxUZW1wLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsVGVtcC5XZWlnaHQgPSAwLjQ0MjEwODQxOTQwODI4ODA0RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gY2FsY3VsYXRlZFRuYXJIZWF0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZFRuYXJIZWF0LkRhdGFNZW1iZXIgPSAiRXF1aXAiOw0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkVG5hckhlYXQuRGlzcGxheU5hbWUgPSAiY2FsY3VsYXRlZFRuYXJIZWF0IjsNCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZFRuYXJIZWF0LkV4cHJlc3Npb24gPSAiW1TRgNCw0LFdLVtU0L3RgTFdLVtU0L3RgTNdLVtU0L3RgTRdLVtU0L7RgtC6MV0tW1TQvdGBMl0iOw0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkVG5hckhlYXQuTmFtZSA9ICJjYWxjdWxhdGVkVG5hckhlYXQiOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwxNA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE0LkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNC5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLlYyIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE0LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE0LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA3Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE0Lk5hbWUgPSAidGFibGVDZWxsMTQiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNC5OdWxsVmFsdWVUZXh0ID0gIi0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTQuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE0LldlaWdodCA9IDAuMDc5MzY5Mjk0NjE2Njk1NEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGNlbGxDb250cmFjdA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmNlbGxDb250cmFjdC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5jZWxsQ29udHJhY3QuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMuY2VsbENvbnRyYWN0Lk5hbWUgPSAiY2VsbENvbnRyYWN0IjsNCiAgICAgICAgICAgIHRoaXMuY2VsbENvbnRyYWN0LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5jZWxsQ29udHJhY3QuVGV4dCA9ICLQlNC+0LPQvtCy0L7RgDogW1NldHRpbmdzLkVxdWlwX0NvbnRyYWN0XSI7DQogICAgICAgICAgICB0aGlzLmNlbGxDb250cmFjdC5XZWlnaHQgPSAxLjM0ODMxNDYwNjc0MTU3M0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIEV2ZW50c0RldGFpbA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkV2ZW50c0RldGFpbC5Db250cm9scy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkNvbnRyb2xbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlMn0pOw0KICAgICAgICAgICAgdGhpcy5FdmVudHNEZXRhaWwuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuRXZlbnRzRGV0YWlsLkhlaWdodEYgPSA0MEY7DQogICAgICAgICAgICB0aGlzLkV2ZW50c0RldGFpbC5OYW1lID0gIkV2ZW50c0RldGFpbCI7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGF2Z1QxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuYXZnVDEuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLmF2Z1QxLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLmF2Z1QxLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAudDEiLCAiezA6RjJ9Iil9KTsNCiAgICAgICAgICAgIHRoaXMuYXZnVDEuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuYXZnVDEuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDhGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLmF2Z1QxLk5hbWUgPSAiYXZnVDEiOw0KICAgICAgICAgICAgdGhpcy5hdmdUMS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy5hdmdUMS5TY3JpcHRzLk9uU3VtbWFyeUNhbGN1bGF0ZWQgPSAiT25TdW1tYXJ5Q2FsY3VsYXRlZCI7DQogICAgICAgICAgICB0aGlzLmF2Z1QxLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5hdmdUMS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkyNC5Gb3JtYXRTdHJpbmcgPSAiezA6RjJ9IjsNCiAgICAgICAgICAgIHN1bW1hcnkyNC5GdW5jID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5RnVuYy5Bdmc7DQogICAgICAgICAgICBzdW1tYXJ5MjQuSWdub3JlTnVsbFZhbHVlcyA9IHRydWU7DQogICAgICAgICAgICBzdW1tYXJ5MjQuUnVubmluZyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeVJ1bm5pbmcuUmVwb3J0Ow0KICAgICAgICAgICAgdGhpcy5hdmdUMS5TdW1tYXJ5ID0gc3VtbWFyeTI0Ow0KICAgICAgICAgICAgdGhpcy5hdmdUMS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuYXZnVDEuV2VpZ2h0ID0gMC4wNTMzNDU0NjExMjIxNzMwMThEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGw0NA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ0LkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3AgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ0LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ0LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ0LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NC5OYW1lID0gInRhYmxlQ2VsbDQ0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDQuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ0LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDQuVGV4dCA9ICJQMiI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ0LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDQuV2VpZ2h0ID0gMC4xNzk1MDk1OTQ5MDA2OTU0OUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIE0yX1N0YXJ0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuTTJfU3RhcnQuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMuTTJfU3RhcnQuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcFN0YXJ0Lk0yX1RvdGFsIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLk0yX1N0YXJ0LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLk0yX1N0YXJ0LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA3Rik7DQogICAgICAgICAgICB0aGlzLk0yX1N0YXJ0Lk5hbWUgPSAiTTJfU3RhcnQiOw0KICAgICAgICAgICAgdGhpcy5NMl9TdGFydC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy5NMl9TdGFydC5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuTTJfU3RhcnQuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLk0yX1N0YXJ0LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5NMl9TdGFydC5XZWlnaHQgPSAwLjc4Mjk0MTQ3OTc1MDk3ODYxRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMTENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMS5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwU3RhcnQuVNGA0LDQsV9Ub3RhbCIsICJ7MDpGMn0iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMS5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgN0YpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMS5OYW1lID0gInRhYmxlQ2VsbDExIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTEuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTEuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDExLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTEuV2VpZ2h0ID0gMC44MDIzNTMzNTA0OTQwMTM0NkQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlMQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlMS5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZTEuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMEYsIDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGUxLk5hbWUgPSAidGFibGUxIjsNCiAgICAgICAgICAgIHRoaXMudGFibGUxLlJvd3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvd1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVSb3c2fSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlMS5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRigyNzIwRiwgNDBGKTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsNA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Lk5hbWUgPSAidGFibGVDZWxsNCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQuVGV4dCA9ICLQlNCw0LLQu9C10L3QuNC1IChbVW5pdEdyb3VwLlByZXNzdXJlXSkiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNC5XZWlnaHQgPSAwLjM1ODk1MTYxMTU1ODE5Mjg4RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVSb3c0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c0LkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzQuQ2VsbHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGxbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ1fSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93NC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzQuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c0Lk5hbWUgPSAidGFibGVSb3c0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c0LldlaWdodCA9IDEuNDYwNDk5OTU0MjIzNjMyOEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIFJlcG9ydEZvb3Rlcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLlJlcG9ydEZvb3Rlci5Db250cm9scy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkNvbnRyb2xbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsMTEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsMTB9KTsNCiAgICAgICAgICAgIHRoaXMuUmVwb3J0Rm9vdGVyLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLlJlcG9ydEZvb3Rlci5IZWlnaHRGID0gMTIwRjsNCiAgICAgICAgICAgIHRoaXMuUmVwb3J0Rm9vdGVyLk5hbWUgPSAiUmVwb3J0Rm9vdGVyIjsNCiAgICAgICAgICAgIHRoaXMuUmVwb3J0Rm9vdGVyLlBhZ2VCcmVhayA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuUGFnZUJyZWFrLkFmdGVyQmFuZDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsNDINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Mi5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDIuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDIuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDIuTmFtZSA9ICJ0YWJsZUNlbGw0MiI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQyLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQyLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Mi5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcldpZHRoID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQyLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Mi5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDIuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQyLlRleHQgPSAiMC4wMDAiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Mi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDIuV2VpZ2h0ID0gMC43MDI0NjkwMzQwMzMyMjcxNEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDg1DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODUuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDg1LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDg1LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDg1LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4NS5OYW1lID0gInRhYmxlQ2VsbDg1IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODUuTnVsbFZhbHVlVGV4dCA9ICItICAgIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODUuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODUuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDg1LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4NS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODUuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5MTguRm9ybWF0U3RyaW5nID0gInswOkYzfSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDg1LlN1bW1hcnkgPSBzdW1tYXJ5MTg7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDg1LlRleHQgPSAi0KJkdCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDg1LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODUuV2VpZ2h0ID0gMC44NDc0MDM2MzM2MjQyMjc3N0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXBFdmVudHMuTnVtYmVyIil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMi5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyLk5hbWUgPSAidGFibGVDZWxsMiI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyLldlaWdodCA9IDAuMTM5NzA1ODgyMzUyOTQxMThEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBjZWxsRGV2TnVtYmVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuY2VsbERldk51bWJlci5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5jZWxsRGV2TnVtYmVyLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA5Rik7DQogICAgICAgICAgICB0aGlzLmNlbGxEZXZOdW1iZXIuTmFtZSA9ICJjZWxsRGV2TnVtYmVyIjsNCiAgICAgICAgICAgIHRoaXMuY2VsbERldk51bWJlci5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuY2VsbERldk51bWJlci5UZXh0ID0gItCd0L7QvNC10YAg0L/RgNC40LHQvtGA0LA6IFtTZXR0aW5ncy5FcXVpcF9TZXJpYWxOdW1iZXJdIjsNCiAgICAgICAgICAgIHRoaXMuY2VsbERldk51bWJlci5XZWlnaHQgPSAwLjY1MTY4NTM5MzI1ODQyN0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHN1bU0xDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuc3VtTTEuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnN1bU0xLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnN1bU0xLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuTTEiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMuc3VtTTEuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuc3VtTTEuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDhGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnN1bU0xLk5hbWUgPSAic3VtTTEiOw0KICAgICAgICAgICAgdGhpcy5zdW1NMS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy5zdW1NMS5TY3JpcHRzLk9uU3VtbWFyeUNhbGN1bGF0ZWQgPSAiT25TdW1tYXJ5Q2FsY3VsYXRlZCI7DQogICAgICAgICAgICB0aGlzLnN1bU0xLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5zdW1NMS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkyNS5Gb3JtYXRTdHJpbmcgPSAiezA6RjN9IjsNCiAgICAgICAgICAgIHN1bW1hcnkyNS5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnN1bU0xLlN1bW1hcnkgPSBzdW1tYXJ5MjU7DQogICAgICAgICAgICB0aGlzLnN1bU0xLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5zdW1NMS5XZWlnaHQgPSAwLjA3MzAxNjM5MjQwMTUyMjA2NUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDM1DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzUuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzUuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcEVuZC5U0YDQsNCxX1RvdGFsIiwgInswOkYyfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM1LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM1LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA3Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM1Lk5hbWUgPSAidGFibGVDZWxsMzUiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzNS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzNS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzUuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM1LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzNS5XZWlnaHQgPSAwLjgwMjM1Mjk1NTU2MDYwNUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbF9IX291dA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX291dC5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfb3V0LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX291dC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLmNhbGN1bGF0ZWRGaWVsZDIiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfb3V0LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX291dC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgN0YpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9vdXQuTmFtZSA9ICJ0YWJsZUNlbGxfSF9vdXQiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9vdXQuTnVsbFZhbHVlVGV4dCA9ICItIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfb3V0LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX291dC5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfb3V0LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9vdXQuV2VpZ2h0ID0gMC4wODM1MzAzODM5NDkwMzA4RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVSb3c3DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c3LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93Ny5DZWxscy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDYsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzYsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM3LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzOH0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzcuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c3Lk5hbWUgPSAidGFibGVSb3c3IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c3LldlaWdodCA9IDAuOEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHJvd0RldGFpbA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnJvd0RldGFpbC5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWwuQ2VsbHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGxbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9EYXRhRGF0ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1RfaW4sDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI4LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9vdXQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2luLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9vdXQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2RlbHRhLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9pbiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Bfb3V0LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9pbiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX291dCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfZGVsdGEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9Xb3JrVGltZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRXJyb3JzfSk7DQogICAgICAgICAgICB0aGlzLnJvd0RldGFpbC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWwuTmFtZSA9ICJyb3dEZXRhaWwiOw0KICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWwuV2VpZ2h0ID0gMUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbF9QX291dA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX291dC5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Bfb3V0LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX291dC5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLlAyIiwgInswOkYxfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX291dC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9vdXQuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Bfb3V0Lk5hbWUgPSAidGFibGVDZWxsX1Bfb3V0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Bfb3V0Lk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX291dC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9vdXQuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX291dC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Bfb3V0LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9vdXQuV2VpZ2h0ID0gMC4wNTkzNTMyNTkzNzQ3Mzg3ODdEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBkdFN0YXJ0RGF0ZUNlbGwNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5kdFN0YXJ0RGF0ZUNlbGwuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMuZHRTdGFydERhdGVDZWxsLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXBFbmQuVGltZSIsICJ7MDpkZC5NTS55eSBISH0iKX0pOw0KICAgICAgICAgICAgdGhpcy5kdFN0YXJ0RGF0ZUNlbGwuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuZHRTdGFydERhdGVDZWxsLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA3Rik7DQogICAgICAgICAgICB0aGlzLmR0U3RhcnREYXRlQ2VsbC5OYW1lID0gImR0U3RhcnREYXRlQ2VsbCI7DQogICAgICAgICAgICB0aGlzLmR0U3RhcnREYXRlQ2VsbC5TY3JpcHRzLk9uQmVmb3JlUHJpbnQgPSAidGFibGVDZWxsN19CZWZvcmVQcmludCI7DQogICAgICAgICAgICB0aGlzLmR0U3RhcnREYXRlQ2VsbC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuZHRTdGFydERhdGVDZWxsLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMuZHRTdGFydERhdGVDZWxsLldlaWdodCA9IDAuNzgyOTQxMTM2OTYzNTE0RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsNDgNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0OC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0OC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0OC5OYW1lID0gInRhYmxlQ2VsbDQ4IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDguU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ4LldlaWdodCA9IDAuNjUxNjg1MzkzMjU4NDI3RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGUyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGUyLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlMi5Mb2NhdGlvbkZsb2F0ID0gbmV3IERldkV4cHJlc3MuVXRpbHMuUG9pbnRGbG9hdCgwRiwgMEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZTIuTmFtZSA9ICJ0YWJsZTIiOw0KICAgICAgICAgICAgdGhpcy50YWJsZTIuUm93cy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93W10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVJvdzR9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGUyLlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDI3MjBGLCA0MEYpOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZVJvdzE3DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxNy5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzE3LkNlbGxzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5NSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTYsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDk5LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMDEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM0fSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93MTcuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxNy5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIlRpbWVzIE5ldyBSb21hbiIsIDguMjVGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxNy5OYW1lID0gInRhYmxlUm93MTciOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzE3LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzE3LldlaWdodCA9IDAuNjE3NzYxMjAwMDc5NTU3OTNEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwxOA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE4LkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOC5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOEYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTguTmFtZSA9ICJ0YWJsZUNlbGwxOCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE4LlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOC5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTguVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOC5XZWlnaHQgPSAwLjM4MTM0MzYwOTQzMjI1MzgyRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX0hfZGVsdGENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9kZWx0YS5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfZGVsdGEuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfZGVsdGEuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5R0YLRgTEiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfZGVsdGEuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfZGVsdGEuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfZGVsdGEuTmFtZSA9ICJ0YWJsZUNlbGxfSF9kZWx0YSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2RlbHRhLk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2RlbHRhLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2RlbHRhLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9kZWx0YS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfZGVsdGEuV2VpZ2h0ID0gMC4wNzUxOTE5NzE5MDk2MDI3OTJEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0b3BNYXJnaW5CYW5kMQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRvcE1hcmdpbkJhbmQxLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRvcE1hcmdpbkJhbmQxLkhlaWdodEYgPSAxNTBGOw0KICAgICAgICAgICAgdGhpcy50b3BNYXJnaW5CYW5kMS5OYW1lID0gInRvcE1hcmdpbkJhbmQxIjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX00xDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00xLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTEuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00xLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NMS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOEYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00xLk5hbWUgPSAidGFibGVDZWxsX00xIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00xLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTEuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NMS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00xLlRleHQgPSAiTTEiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTEuV2VpZ2h0ID0gMC4yMjU2MDAwNzc4NDc1NDYyMUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDI5DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjkuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI5LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI5LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAudDIiKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOS5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOEYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjkuTmFtZSA9ICJ0YWJsZUNlbGwyOSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI5LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI5LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjkuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5MjYuRm9ybWF0U3RyaW5nID0gInswOkYyfSI7DQogICAgICAgICAgICBzdW1tYXJ5MjYuRnVuYyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeUZ1bmMuQXZnOw0KICAgICAgICAgICAgc3VtbWFyeTI2Lklnbm9yZU51bGxWYWx1ZXMgPSB0cnVlOw0KICAgICAgICAgICAgc3VtbWFyeTI2LlJ1bm5pbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlSdW5uaW5nLlJlcG9ydDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjkuU3VtbWFyeSA9IHN1bW1hcnkyNjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjkuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI5LldlaWdodCA9IDAuMDQ0ODg1NzY5OTg2MTg3MDU1RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gY2VsbFBlcmlvZA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmNlbGxQZXJpb2QuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuY2VsbFBlcmlvZC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy5jZWxsUGVyaW9kLk5hbWUgPSAiY2VsbFBlcmlvZCI7DQogICAgICAgICAgICB0aGlzLmNlbGxQZXJpb2QuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmNlbGxQZXJpb2QuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmNlbGxQZXJpb2QuVGV4dCA9ICLQt9CwINC/0LXRgNC40L7QtCBbU2V0dGluZ3MuUmVwb3J0X1RpbWVSYW5nZVRleHRdIjsNCiAgICAgICAgICAgIHRoaXMuY2VsbFBlcmlvZC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLmNlbGxQZXJpb2QuV2VpZ2h0ID0gM0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIEV2ZW50c0RldGFpbFJlcG9ydA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkV2ZW50c0RldGFpbFJlcG9ydC5CYW5kcy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5CYW5kW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5FdmVudHNHcm91cEhlYWRlciwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRXZlbnRzRGV0YWlsLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5FdmVudHNSZXBvcnRGb290ZXJ9KTsNCiAgICAgICAgICAgIHRoaXMuRXZlbnRzRGV0YWlsUmVwb3J0LkRhdGFNZW1iZXIgPSAiRXF1aXBFdmVudHMiOw0KICAgICAgICAgICAgdGhpcy5FdmVudHNEZXRhaWxSZXBvcnQuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuRXZlbnRzRGV0YWlsUmVwb3J0LkV4cGFuZGVkID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLkV2ZW50c0RldGFpbFJlcG9ydC5MZXZlbCA9IDI7DQogICAgICAgICAgICB0aGlzLkV2ZW50c0RldGFpbFJlcG9ydC5OYW1lID0gIkV2ZW50c0RldGFpbFJlcG9ydCI7DQogICAgICAgICAgICB0aGlzLkV2ZW50c0RldGFpbFJlcG9ydC5WaXNpYmxlID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGxhYmVsMTUNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5sYWJlbDE1LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTUuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxNS5Mb2NhdGlvbkZsb2F0ID0gbmV3IERldkV4cHJlc3MuVXRpbHMuUG9pbnRGbG9hdCg2LjcxODM0RiwgMjkwLjgwNDlGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxNS5OYW1lID0gImxhYmVsMTUiOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDE1LlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDU1OC44RiwgMzIuMzg0ODlGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxNS5UZXh0ID0gItCi0LXQv9C70L7RgdC90LDQsdC20LXQvdC40LU6IjsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxNS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVMZWZ0Ow0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZTcNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZTcuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGU3LkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDBGLCAwRik7DQogICAgICAgICAgICB0aGlzLnRhYmxlNy5OYW1lID0gInRhYmxlNyI7DQogICAgICAgICAgICB0aGlzLnRhYmxlNy5Sb3dzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3dbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUm93OCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVSb3c5LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVJvdzEwLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVJvdzExLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVJvdzEyfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlNy5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRigyNzIwRiwgMjIwRik7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDIwDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjAuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjAuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjAuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjAuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDhGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIwLk5hbWUgPSAidGFibGVDZWxsMjAiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMC5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjAuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIwLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMC5UZXh0ID0gIlAxIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjAuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMC5XZWlnaHQgPSAwLjE3ODQyOTExODk5MDYyMzAzRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsNDMNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0My5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDMuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDMuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5R0YLRgTEiKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0My5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0My5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgN0YpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0My5OYW1lID0gInRhYmxlQ2VsbDQzIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDMuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDMuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQzLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVyV2lkdGggPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDMuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQzLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0My5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkxNS5Gb3JtYXRTdHJpbmcgPSAiezA6RjN9IjsNCiAgICAgICAgICAgIHN1bW1hcnkxNS5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQzLlN1bW1hcnkgPSBzdW1tYXJ5MTU7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQzLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0My5XZWlnaHQgPSAwLjcwMjQ2ODQ4MzUwNDIxNDU0RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX1BfaW4NCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9pbi5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1BfaW4uQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1BfaW4uRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5QMSIsICJ7MDpGMX0iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9pbi5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9pbi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgN0YpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9pbi5OYW1lID0gInRhYmxlQ2VsbF9QX2luIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1BfaW4uTnVsbFZhbHVlVGV4dCA9ICItIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1BfaW4uUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1BfaW4uU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9QX2luLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUF9pbi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1BfaW4uV2VpZ2h0ID0gMC4wNTg5OTYwMDM5OTU3MDI3ODlEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZTUNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZTUuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlNS5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZTUuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGU1LkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDBGLCAzMjMuMTg5N0YpOw0KICAgICAgICAgICAgdGhpcy50YWJsZTUuTmFtZSA9ICJ0YWJsZTUiOw0KICAgICAgICAgICAgdGhpcy50YWJsZTUuUm93cy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93W10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVJvdzE3LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVJvdzV9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGU1LlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDE0NTcuODU0RiwgNzkuOTk5OTdGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGU1LlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZTUuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJXaWR0aCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZTUuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlNS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGU1LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50LlRvcEp1c3RpZnk7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHBpY3R1cmVCb3gxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMucGljdHVyZUJveDEuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiSW1hZ2UiLCBudWxsLCAiQ29tbW9uLkNvcHlyaWdodEltYWdlIil9KTsNCiAgICAgICAgICAgIHRoaXMucGljdHVyZUJveDEuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMucGljdHVyZUJveDEuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMEYsIDBGKTsNCiAgICAgICAgICAgIHRoaXMucGljdHVyZUJveDEuTmFtZSA9ICJwaWN0dXJlQm94MSI7DQogICAgICAgICAgICB0aGlzLnBpY3R1cmVCb3gxLlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDQ1LjcyRiwgNDUuNzJGKTsNCiAgICAgICAgICAgIHRoaXMucGljdHVyZUJveDEuU2l6aW5nID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuSW1hZ2VTaXplTW9kZS5TdHJldGNoSW1hZ2U7DQogICAgICAgICAgICB0aGlzLnBpY3R1cmVCb3gxLlRhZyA9ICJWemxqb3RMb2dvIjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsNjINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw2Mi5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNjIuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNjIuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNjIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDhGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDYyLk5hbWUgPSAidGFibGVDZWxsNjIiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw2Mi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDAsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw2Mi5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNjIuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDYyLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw2Mi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNjIuVGV4dCA9ICLQoiDQvtGC0YcuINC/0LXRgNC40L7QtCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDYyLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNjIuV2VpZ2h0ID0gMC44NDc0MDMyNTU1NTg1MTIyNkQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDEyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTIuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTIuTmFtZSA9ICJ0YWJsZUNlbGwxMiI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEyLlRleHQgPSAi0JrQvtC0INGB0L7QsdGL0YLQuNGPIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTIuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMi5XZWlnaHQgPSAwLjEzOTcwNTg4MjM1Mjk0MTE4RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVSb3c1DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c1LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93NS5DZWxscy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDMsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM5LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0MCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQyfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93NS5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzUuTmFtZSA9ICJ0YWJsZVJvdzUiOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzUuV2VpZ2h0ID0gMC42MTc3NjEyMDAwNzk1NTc5M0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlUm93MTENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzExLkNlbGxzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZWxsQWRkcmVzcywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2VsbERldk51bWJlciwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2VsbEdtYXh9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxMS5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzExLk5hbWUgPSAidGFibGVSb3cxMSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93MTEuV2VpZ2h0ID0gMC40ODQ4NDA3MTMyMDU0Nzk4M0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDE2DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTYuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE2LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE2LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuVjIiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTYuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTYuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDhGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE2Lk5hbWUgPSAidGFibGVDZWxsMTYiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNi5OdWxsVmFsdWVUZXh0ID0gIi0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkyNy5Gb3JtYXRTdHJpbmcgPSAiezA6RjN9IjsNCiAgICAgICAgICAgIHN1bW1hcnkyNy5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE2LlN1bW1hcnkgPSBzdW1tYXJ5Mjc7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE2LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNi5XZWlnaHQgPSAwLjA3NzY5MjA3ODgyNjA2Nzg3OUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlUm93Ng0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlUm93Ni5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c2LkNlbGxzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsM30pOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzYuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3c2LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzYuTmFtZSA9ICJ0YWJsZVJvdzYiOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzYuV2VpZ2h0ID0gMS40NjA0OTk5NTQyMjM2MzI4RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMjENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMS5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwU3RhcnQuVjFfVG90YWwiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjEuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjEuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjEuTmFtZSA9ICJ0YWJsZUNlbGwyMSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIxLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIxLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjEuV2VpZ2h0ID0gMC43ODI5NDEwNTEyMTYxNjdEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBhdmdQMg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmF2Z1AyLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy5hdmdQMi5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy5hdmdQMi5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLlAyIiwgInswOkYxfSIpfSk7DQogICAgICAgICAgICB0aGlzLmF2Z1AyLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLmF2Z1AyLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5hdmdQMi5OYW1lID0gImF2Z1AyIjsNCiAgICAgICAgICAgIHRoaXMuYXZnUDIuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMuYXZnUDIuU2NyaXB0cy5PblN1bW1hcnlDYWxjdWxhdGVkID0gIk9uU3VtbWFyeUNhbGN1bGF0ZWQiOw0KICAgICAgICAgICAgdGhpcy5hdmdQMi5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuYXZnUDIuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmF2Z1AyLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTI4LkZvcm1hdFN0cmluZyA9ICJ7MDpGMX0iOw0KICAgICAgICAgICAgc3VtbWFyeTI4LkZ1bmMgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlGdW5jLkF2ZzsNCiAgICAgICAgICAgIHN1bW1hcnkyOC5JZ25vcmVOdWxsVmFsdWVzID0gdHJ1ZTsNCiAgICAgICAgICAgIHN1bW1hcnkyOC5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLmF2Z1AyLlN1bW1hcnkgPSBzdW1tYXJ5Mjg7DQogICAgICAgICAgICB0aGlzLmF2Z1AyLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5hdmdQMi5XZWlnaHQgPSAwLjA1ODA5OTAxNzI3NDg4NzQ3RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gRXF1aXBHcm91cEZvb3Rlcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkVxdWlwR3JvdXBGb290ZXIuQ29udHJvbHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJDb250cm9sW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUZvb3Rlcn0pOw0KICAgICAgICAgICAgdGhpcy5FcXVpcEdyb3VwRm9vdGVyLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLkVxdWlwR3JvdXBGb290ZXIuSGVpZ2h0RiA9IDgwRjsNCiAgICAgICAgICAgIHRoaXMuRXF1aXBHcm91cEZvb3Rlci5OYW1lID0gIkVxdWlwR3JvdXBGb290ZXIiOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBjYWxjdWxhdGVkVG5hcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRUbmFyLkRhdGFNZW1iZXIgPSAiRXF1aXAiOw0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkVG5hci5FeHByZXNzaW9uID0gIltU0YDQsNCxXS1bVNC90YExXS1bVNC90YEzXS1bVNC90YE0XS1bVNC+0YLQujFdLVtU0L3RgTJdIjsNCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZFRuYXIuTmFtZSA9ICJjYWxjdWxhdGVkVG5hciI7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGNlbGxEZXZUeXBlDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuY2VsbERldlR5cGUuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuY2VsbERldlR5cGUuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMuY2VsbERldlR5cGUuTmFtZSA9ICJjZWxsRGV2VHlwZSI7DQogICAgICAgICAgICB0aGlzLmNlbGxEZXZUeXBlLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5jZWxsRGV2VHlwZS5UZXh0ID0gItCi0LjQvyDQv9GA0LjQsdC+0YDQsDogW1NldHRpbmdzLkVxdWlwX0VxdWlwVHlwZV0iOw0KICAgICAgICAgICAgdGhpcy5jZWxsRGV2VHlwZS5XZWlnaHQgPSAwLjY1MTY4NTM5MzI1ODQyN0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGxhYmVsNA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmxhYmVsNC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDQuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMEYsIDBGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWw0Lk5hbWUgPSAibGFiZWw0IjsNCiAgICAgICAgICAgIHRoaXMubGFiZWw0LlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDI1NEYsIDVGKTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsNDYNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ni5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDYuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDYuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC7QotGA0LDQsV/RiNGC0LDRgjEiKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ni5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ni5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgN0YpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ni5OYW1lID0gInRhYmxlQ2VsbDQ2IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDYuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDYuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ2LlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVyV2lkdGggPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDYuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ2LlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ni5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkxOS5Gb3JtYXRTdHJpbmcgPSAiezA6RjJ9IjsNCiAgICAgICAgICAgIHN1bW1hcnkxOS5JZ25vcmVOdWxsVmFsdWVzID0gdHJ1ZTsNCiAgICAgICAgICAgIHN1bW1hcnkxOS5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ2LlN1bW1hcnkgPSBzdW1tYXJ5MTk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ2LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ni5XZWlnaHQgPSAwLjg0NzQwMzI5ODkwODI4MzM2RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gY2VsbEhlYWRlclRleHQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5jZWxsSGVhZGVyVGV4dC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5jZWxsSGVhZGVyVGV4dC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgMTJGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLmNlbGxIZWFkZXJUZXh0Lk5hbWUgPSAiY2VsbEhlYWRlclRleHQiOw0KICAgICAgICAgICAgdGhpcy5jZWxsSGVhZGVyVGV4dC5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuY2VsbEhlYWRlclRleHQuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmNlbGxIZWFkZXJUZXh0LlRleHQgPSAi0JLQtdC00L7QvNC+0YHRgtGMINGD0YfQtdGC0LAg0L/QsNGA0LDQvNC10YLRgNC+0LIg0L/QvtGC0YDQtdCx0LvQtdC90LjRjyDRgtC10L/Qu9CwIjsNCiAgICAgICAgICAgIHRoaXMuY2VsbEhlYWRlclRleHQuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy5jZWxsSGVhZGVyVGV4dC5XZWlnaHQgPSAzRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gbGFiZWwxMw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmxhYmVsMTMuQXV0b1dpZHRoID0gdHJ1ZTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMy5DYW5TaHJpbmsgPSB0cnVlOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEzLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiQ29tbW9uLkNvcHlyaWdodFRleHQiKX0pOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEzLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTMuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMy5Mb2NhdGlvbkZsb2F0ID0gbmV3IERldkV4cHJlc3MuVXRpbHMuUG9pbnRGbG9hdCg2MC45NkYsIDBGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMy5OYW1lID0gImxhYmVsMTMiOw0KICAgICAgICAgICAgdGhpcy5sYWJlbDEzLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oNSwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLmxhYmVsMTMuU2l6ZUYgPSBuZXcgU3lzdGVtLkRyYXdpbmcuU2l6ZUYoMTA2Ni44RiwgNDUuNzJGKTsNCiAgICAgICAgICAgIHRoaXMubGFiZWwxMy5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVMZWZ0Ow0KICAgICAgICAgICAgdGhpcy5sYWJlbDEzLldvcmRXcmFwID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGNhbGN1bGF0ZWRUZXJyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZFRlcnIuRGF0YU1lbWJlciA9ICJFcXVpcCI7DQogICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRUZXJyLkV4cHJlc3Npb24gPSAiW1TQvtGC0LoxXStbVNC90YEyXStbQXJjaGl2ZVBlcmlvZF0tW1TRgNCw0LFdIjsNCiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZFRlcnIuTmFtZSA9ICJjYWxjdWxhdGVkVGVyciI7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIFFfU3RhcnQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5RX1N0YXJ0LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLlFfU3RhcnQuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcFN0YXJ0LlHRgtGBMV9Ub3RhbCIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy5RX1N0YXJ0LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLlFfU3RhcnQuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMuUV9TdGFydC5OYW1lID0gIlFfU3RhcnQiOw0KICAgICAgICAgICAgdGhpcy5RX1N0YXJ0LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLlFfU3RhcnQuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLlFfU3RhcnQuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLlFfU3RhcnQuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLlFfU3RhcnQuV2VpZ2h0ID0gMC43ODI5NDA4OTI0NzM0MDQ3RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gc3VtTTINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5zdW1NMi5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMuc3VtTTIuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMuc3VtTTIuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5NMiIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy5zdW1NMi5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5zdW1NMi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOEYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMuc3VtTTIuTmFtZSA9ICJzdW1NMiI7DQogICAgICAgICAgICB0aGlzLnN1bU0yLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnN1bU0yLlNjcmlwdHMuT25TdW1tYXJ5Q2FsY3VsYXRlZCA9ICJPblN1bW1hcnlDYWxjdWxhdGVkIjsNCiAgICAgICAgICAgIHRoaXMuc3VtTTIuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnN1bU0yLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTI5LkZvcm1hdFN0cmluZyA9ICJ7MDpGM30iOw0KICAgICAgICAgICAgc3VtbWFyeTI5LlJ1bm5pbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlSdW5uaW5nLlJlcG9ydDsNCiAgICAgICAgICAgIHRoaXMuc3VtTTIuU3VtbWFyeSA9IHN1bW1hcnkyOTsNCiAgICAgICAgICAgIHRoaXMuc3VtTTIuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnN1bU0yLldlaWdodCA9IDAuMDkyNDA0NjcwNTQ5MjI2N0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIGNlbGxDb25zdW1lcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmNlbGxDb25zdW1lci5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5jZWxsQ29uc3VtZXIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMuY2VsbENvbnN1bWVyLk5hbWUgPSAiY2VsbENvbnN1bWVyIjsNCiAgICAgICAgICAgIHRoaXMuY2VsbENvbnN1bWVyLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5jZWxsQ29uc3VtZXIuVGV4dCA9ICLQn9C+0YLRgNC10LHQuNGC0LXQu9GMOiBbU2V0dGluZ3MuRXF1aXBfQ29uc3VtZXJdIjsNCiAgICAgICAgICAgIHRoaXMuY2VsbENvbnN1bWVyLldlaWdodCA9IDEuMzQ4MzE0NjA2NzQxNTczRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX1Rfb3V0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Rfb3V0LkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9vdXQuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Rfb3V0LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuY2FsY3VsYXRlZEZpZWxkMSIsICJ7MDpGMn0iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9vdXQuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Rfb3V0LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA3Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX291dC5OYW1lID0gInRhYmxlQ2VsbF9UX291dCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX291dC5OdWxsVmFsdWVUZXh0ID0gIi0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9vdXQuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1Rfb3V0LlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVF9vdXQuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UX291dC5XZWlnaHQgPSAwLjA0NTg1NDc2NjczMDEyNjk5MkQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlNA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlNC5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGU0LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlNC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZTQuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGU0LkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDBGLCA1OC40MkYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZTQuTmFtZSA9ICJ0YWJsZTQiOw0KICAgICAgICAgICAgdGhpcy50YWJsZTQuUm93cy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93W10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVJvdzEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUm93MywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVSb3cyfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlNC5TaXplRiA9IG5ldyBTeXN0ZW0uRHJhd2luZy5TaXplRigyMTU5RiwgMTIwRik7DQogICAgICAgICAgICB0aGlzLnRhYmxlNC5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGU0LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZVJvdzENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzEuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxLkNlbGxzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVDZWxsW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw1LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTcsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIzLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw2LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4fSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93MS5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzEuTmFtZSA9ICJ0YWJsZVJvdzEiOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzEuV2VpZ2h0ID0gMUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbF9IX2luDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfaW4uQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2luLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2luLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuVjEiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfaW4uRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfaW4uRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfaW4uTmFtZSA9ICJ0YWJsZUNlbGxfSF9pbiI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2luLk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2luLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9IX2luLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfSF9pbi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0hfaW4uV2VpZ2h0ID0gMC4wNzkzNjkzMDA2MDQ5MTkxNzREOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGw3DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNy5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDcuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDhGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDcuTmFtZSA9ICJ0YWJsZUNlbGw3IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNy5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNy5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNy5UZXh0ID0gIk0yLCBbVW5pdEdyb3VwLldlaWdodF0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNy5XZWlnaHQgPSAwLjc4Mjk0MTIzMjkxNzU5ODQzRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX1ExDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1ExLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTEuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1ExLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOEYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1ExLk5hbWUgPSAidGFibGVDZWxsX1ExIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1ExLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTEuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1ExLlRleHQgPSAiVjEiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTEuV2VpZ2h0ID0gMC4yNDAwNDY2NTcxNDQ0Nzg1OUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDMwDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzAuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMwLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMwLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMwLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMC5OYW1lID0gInRhYmxlQ2VsbDMwIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzAuUm93U3BhbiA9IDI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMwLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMC5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzAuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMwLlRleHQgPSAi0KHQvtCx0YvRgtC40Y8iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMwLldlaWdodCA9IDAuMzg4NTM3MjQ0ODc1MjA0NjlEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyBNMV9FbmQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5NMV9FbmQuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMuTTFfRW5kLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXBFbmQuTTFfVG90YWwiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMuTTFfRW5kLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLk0xX0VuZC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgN0YpOw0KICAgICAgICAgICAgdGhpcy5NMV9FbmQuTmFtZSA9ICJNMV9FbmQiOw0KICAgICAgICAgICAgdGhpcy5NMV9FbmQuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMuTTFfRW5kLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy5NMV9FbmQuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLk0xX0VuZC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuTTFfRW5kLldlaWdodCA9IDAuNzgyOTQxNDA5MDc2NTI2NzZEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwzOQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM5LkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzOS5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzOS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLlHRgtGBMSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM5LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM5LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA3Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM5Lk5hbWUgPSAidGFibGVDZWxsMzkiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzOS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzOS5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzkuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJXaWR0aCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzOS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzkuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM5LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTE2LkZvcm1hdFN0cmluZyA9ICJ7MDpGM30iOw0KICAgICAgICAgICAgc3VtbWFyeTE2LlJ1bm5pbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlSdW5uaW5nLlJlcG9ydDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzkuU3VtbWFyeSA9IHN1bW1hcnkxNjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzkuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM5LldlaWdodCA9IDIuMTA3NDA1NTk4OTI4MDQ1OEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDc5DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNzkuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDc5LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDc5LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDc5LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3OS5OYW1lID0gInRhYmxlQ2VsbDc5IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNzkuTnVsbFZhbHVlVGV4dCA9ICItICAgIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNzkuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNzkuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDc5LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3OS5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNzkuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5MTcuRm9ybWF0U3RyaW5nID0gInswOkYyfSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDc5LlN1bW1hcnkgPSBzdW1tYXJ5MTc7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDc5LlRleHQgPSAi0KJtaW4iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3OS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDc5LldlaWdodCA9IDAuODQ3NDAzMjcwOTY2ODIwNjdEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGw1DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNS5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw1LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDUuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDhGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDUuTmFtZSA9ICJ0YWJsZUNlbGw1IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNS5UZXh0ID0gItCU0LDRgtCwINC4INCy0YDQtdC80Y8iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw1LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZUNlbnRlcjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNS5XZWlnaHQgPSAwLjc4Mjk0MTIzNTY5Njg2NjEzRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX1EyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1EyLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTIuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1EyLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOEYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1EyLk5hbWUgPSAidGFibGVDZWxsX1EyIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1EyLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTIuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RMi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1EyLlRleHQgPSAiVjIiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTIuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTIuV2VpZ2h0ID0gMC4yNDAwNDY2NDA0ODc4MjE1N0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIEVxdWlwRGV0YWlsUmVwb3J0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuRXF1aXBEZXRhaWxSZXBvcnQuQmFuZHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuQmFuZFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRXF1aXBHcm91cEhlYWRlciwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRXF1aXBEZXRhaWwsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkVxdWlwR3JvdXBGb290ZXJ9KTsNCiAgICAgICAgICAgIHRoaXMuRXF1aXBEZXRhaWxSZXBvcnQuRGF0YU1lbWJlciA9ICJFcXVpcCI7DQogICAgICAgICAgICB0aGlzLkVxdWlwRGV0YWlsUmVwb3J0LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLkVxdWlwRGV0YWlsUmVwb3J0LkxldmVsID0gMDsNCiAgICAgICAgICAgIHRoaXMuRXF1aXBEZXRhaWxSZXBvcnQuTmFtZSA9ICJFcXVpcERldGFpbFJlcG9ydCI7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDQwDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDAuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQwLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQwLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQwLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA3Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQwLk5hbWUgPSAidGFibGVDZWxsNDAiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0MC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0MC5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDAuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJXaWR0aCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0MC5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDAuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQwLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0MC5UZXh0ID0gIjAuMDAwIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDAuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQwLldlaWdodCA9IDAuNzAyNDY4ODQwOTA0NTAyNzlEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwyNA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI0LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI0LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXBFbmQuVjJfVG90YWwiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjQuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjQuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjQuTmFtZSA9ICJ0YWJsZUNlbGwyNCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI0LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI0LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjQuV2VpZ2h0ID0gMC43ODI5NDE0NDYxNDk1NzUzOUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDQ5DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDkuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDkuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDlGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDkuTmFtZSA9ICJ0YWJsZUNlbGw0OSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ5LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0OS5XZWlnaHQgPSAxRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX0RhdGFEYXRlDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0RhdGFEYXRlLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfRGF0YURhdGUuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0RhdGFEYXRlLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuVGltZSIsICJ7MDpkZC5NTS55eSBISH0iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfRGF0YURhdGUuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0RhdGFEYXRlLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA3Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9EYXRhRGF0ZS5OYW1lID0gInRhYmxlQ2VsbF9EYXRhRGF0ZSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9EYXRhRGF0ZS5OdWxsVmFsdWVUZXh0ID0gIi0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfRGF0YURhdGUuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbyg1LCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX0RhdGFEYXRlLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfRGF0YURhdGUuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfRGF0YURhdGUuV2VpZ2h0ID0gMC4xMjYwODc5MDg5MzY1MDE0RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gY2VsbEFkZHJlc3MNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5jZWxsQWRkcmVzcy5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5jZWxsQWRkcmVzcy5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy5jZWxsQWRkcmVzcy5OYW1lID0gImNlbGxBZGRyZXNzIjsNCiAgICAgICAgICAgIHRoaXMuY2VsbEFkZHJlc3MuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLmNlbGxBZGRyZXNzLlRleHQgPSAi0JDQtNGA0LXRgTogW1NldHRpbmdzLkNvbW1vbl9BZGRyZXNzXSI7DQogICAgICAgICAgICB0aGlzLmNlbGxBZGRyZXNzLldlaWdodCA9IDEuMzQ4MzE0NjA2NzQxNTczRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMzgNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzOC5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzguQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzguRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC7QotGN0L8iKX0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzOC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzOC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgN0YpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzOC5OYW1lID0gInRhYmxlQ2VsbDM4IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzguUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzguU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM4LlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVyV2lkdGggPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzguU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM4LlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzOC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHN1bW1hcnkyMi5Gb3JtYXRTdHJpbmcgPSAiezA6RjJ9IjsNCiAgICAgICAgICAgIHN1bW1hcnkyMi5SdW5uaW5nID0gRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5TdW1tYXJ5UnVubmluZy5SZXBvcnQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM4LlN1bW1hcnkgPSBzdW1tYXJ5MjI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM4LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzOC5XZWlnaHQgPSAwLjg0NzQwNDAzMDYzODg0NzYyRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gUmVwb3J0SGVhZGVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuUmVwb3J0SGVhZGVyLkNvbnRyb2xzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQ29udHJvbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGU3fSk7DQogICAgICAgICAgICB0aGlzLlJlcG9ydEhlYWRlci5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5SZXBvcnRIZWFkZXIuSGVpZ2h0RiA9IDIyMEY7DQogICAgICAgICAgICB0aGlzLlJlcG9ydEhlYWRlci5OYW1lID0gIlJlcG9ydEhlYWRlciI7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDI4DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjguQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI4LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI4LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAudDIiLCAiezA6RjJ9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjguRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjguRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjguTmFtZSA9ICJ0YWJsZUNlbGwyOCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI4Lk51bGxWYWx1ZVRleHQgPSAiLSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI4LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI4LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOC5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjguU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI4LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOC5XZWlnaHQgPSAwLjA0NTg1NDc2NjczMDEyNjk4NUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbF9UMg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMi5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QyLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMi5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDhGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMi5OYW1lID0gInRhYmxlQ2VsbF9UMiI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMi5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QyLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDIuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMi5UZXh0ID0gIuKIhlQiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDIuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDIuV2VpZ2h0ID0gMC4xMzg2ODQzOTQ0ODIxOTc3N0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDM0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzQuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM0LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM0LkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM0LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzNC5OYW1lID0gInRhYmxlQ2VsbDM0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzQuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzQuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM0LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzNC5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzQuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM0LlRleHQgPSAiUdGN0L8iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzNC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDM0LldlaWdodCA9IDAuNzAyNDY5MDM0MDMzMjI3MTREOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwyMw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIzLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIzLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIzLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMy5OYW1lID0gInRhYmxlQ2VsbDIzIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjMuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIzLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMy5UZXh0ID0gIlYyLCBbVW5pdEdyb3VwLlZvbHVtZV0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyMy5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIzLldlaWdodCA9IDAuNzgyOTQxMjQ4NjgyODcxMThEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGwxOQ0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE5LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE5LkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXBFbmQuVjFfVG90YWwiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTkuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTkuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTkuTmFtZSA9ICJ0YWJsZUNlbGwxOSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE5LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE5LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxOS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTkuV2VpZ2h0ID0gMC43ODI5NDE2NDM2MTYyNzk2RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gcm93Rm9vdGVyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMucm93Rm9vdGVyLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnJvd0Zvb3Rlci5DZWxscy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQ2VsbDAsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF2Z1QxLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyOSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXZnVDIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1bU0xLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdW1NMiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VtTSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXZnUDEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF2Z1AyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdW1RMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTYsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1bVEyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdW1RLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdW1XfSk7DQogICAgICAgICAgICB0aGlzLnJvd0Zvb3Rlci5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5yb3dGb290ZXIuTmFtZSA9ICJyb3dGb290ZXIiOw0KICAgICAgICAgICAgdGhpcy5yb3dGb290ZXIuV2VpZ2h0ID0gMUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDEzDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTMuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEzLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEzLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEzLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMy5OYW1lID0gInRhYmxlQ2VsbDEzIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTMuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEzLlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMy5UZXh0ID0gItCe0LHRitC10LwgKFtVbml0R3JvdXAuVm9sdW1lXSkiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxMy5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDEzLldlaWdodCA9IDAuNzMyNTg4MDkzODg5OTQ0MjhEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfUWRlbHRhDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1FkZWx0YS5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1FkZWx0YS5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUWRlbHRhLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RZGVsdGEuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDhGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RZGVsdGEuTmFtZSA9ICJ0YWJsZUNlbGxfUWRlbHRhIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1FkZWx0YS5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1FkZWx0YS5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1FkZWx0YS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1FkZWx0YS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9RZGVsdGEuV2VpZ2h0ID0gMC4yMjc0MTI2MjU3NzYzODUwNUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIFRvdGFsRGV0YWlsDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuVG90YWxEZXRhaWwuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuVG90YWxEZXRhaWwuSGVpZ2h0RiA9IDBGOw0KICAgICAgICAgICAgdGhpcy5Ub3RhbERldGFpbC5OYW1lID0gIlRvdGFsRGV0YWlsIjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsOTUNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5NS5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlRvcCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTUuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTUuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTUuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDhGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDk1Lk5hbWUgPSAidGFibGVDZWxsOTUiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5NS5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDAsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5NS5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTUuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDk1LlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5NS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTUuVGV4dCA9ICJRINC+0YLRhy4g0L/QtdGA0LjQvtC0IjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOTUuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw5NS5XZWlnaHQgPSAwLjcwMjQ2ODQ4MzUwNDIxNDU0RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsX1QxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QxLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDEuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QxLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOEYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QxLk5hbWUgPSAidGFibGVDZWxsX1QxIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QxLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDEuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1QxLlRleHQgPSAiVDEiOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfVDEuV2VpZ2h0ID0gMC4xNjQ4MjI0NDU1ODQ3NDMwNEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHN1bVEyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuc3VtUTIuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnN1bVEyLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnN1bVEyLkRhdGFCaW5kaW5ncy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmdbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkJpbmRpbmcoIlRleHQiLCBudWxsLCAiRXF1aXAuY2FsY3VsYXRlZEZpZWxkMiIpfSk7DQogICAgICAgICAgICB0aGlzLnN1bVEyLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnN1bVEyLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5zdW1RMi5OYW1lID0gInN1bVEyIjsNCiAgICAgICAgICAgIHRoaXMuc3VtUTIuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCA1LCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMuc3VtUTIuU2NyaXB0cy5PblN1bW1hcnlDYWxjdWxhdGVkID0gIk9uU3VtbWFyeUNhbGN1bGF0ZWQiOw0KICAgICAgICAgICAgdGhpcy5zdW1RMi5TdHlsZVByaW9yaXR5LlVzZUZvbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuc3VtUTIuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICBzdW1tYXJ5MzEuRm9ybWF0U3RyaW5nID0gInswOkYzfSI7DQogICAgICAgICAgICBzdW1tYXJ5MzEuUnVubmluZyA9IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuU3VtbWFyeVJ1bm5pbmcuUmVwb3J0Ow0KICAgICAgICAgICAgdGhpcy5zdW1RMi5TdW1tYXJ5ID0gc3VtbWFyeTMxOw0KICAgICAgICAgICAgdGhpcy5zdW1RMi5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMuc3VtUTIuV2VpZ2h0ID0gMC4wODE3NjUyMzEyMzM2MjAyRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gRXF1aXBEZXRhaWwNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5FcXVpcERldGFpbC5Db250cm9scy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkNvbnRyb2xbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGV0YWlsfSk7DQogICAgICAgICAgICB0aGlzLkVxdWlwRGV0YWlsLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLkVxdWlwRGV0YWlsLkhlaWdodEYgPSA0MEY7DQogICAgICAgICAgICB0aGlzLkVxdWlwRGV0YWlsLk5hbWUgPSAiRXF1aXBEZXRhaWwiOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZTMNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZTMuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlMy5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZTMuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGUzLkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDBGLCAwRik7DQogICAgICAgICAgICB0aGlzLnRhYmxlMy5OYW1lID0gInRhYmxlMyI7DQogICAgICAgICAgICB0aGlzLnRhYmxlMy5Sb3dzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSVGFibGVSb3dbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cxLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93Mn0pOw0KICAgICAgICAgICAgdGhpcy50YWJsZTMuU2l6ZUYgPSBuZXcgU3lzdGVtLkRyYXdpbmcuU2l6ZUYoMjcyMEYsIDEyN0YpOw0KICAgICAgICAgICAgdGhpcy50YWJsZTMuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIENlbGwwDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuQ2VsbDAuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLkNlbGwwLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLkNlbGwwLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLkNlbGwwLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy5DZWxsMC5OYW1lID0gIkNlbGwwIjsNCiAgICAgICAgICAgIHRoaXMuQ2VsbDAuUGFkZGluZyA9IG5ldyBEZXZFeHByZXNzLlh0cmFQcmludGluZy5QYWRkaW5nSW5mbygwLCAwLCAwLCAwLCAyNTRGKTsNCiAgICAgICAgICAgIHRoaXMuQ2VsbDAuVGV4dCA9ICLQmNGC0L7Qs9C+IjsNCiAgICAgICAgICAgIHRoaXMuQ2VsbDAuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy5DZWxsMC5XZWlnaHQgPSAwLjEyMzQyMzQzNTgyMTAxMzJEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZVJvdzEyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxMi5DZWxscy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2VsbENvbnRyYWN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0OCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDl9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxMi5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzEyLk5hbWUgPSAidGFibGVSb3cxMiI7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93MTIuV2VpZ2h0ID0gMC40ODQ4NDA3MTMyMDU0Nzk4M0Q7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIFBhZ2VIZWFkZXJSb3cyDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzIuQmFja0NvbG9yID0gU3lzdGVtLkRyYXdpbmcuQ29sb3IuVHJhbnNwYXJlbnQ7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cyLkJvcmRlckNvbG9yID0gU3lzdGVtLkRyYXdpbmcuU3lzdGVtQ29sb3JzLkNvbnRyb2xUZXh0Ow0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93Mi5Cb3JkZXJzID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ob25lOw0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93Mi5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy5QYWdlSGVhZGVyUm93Mi5DZWxscy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlQ2VsbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTgsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjcsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9UMiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX00xLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTTIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NZGVsdGEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDIwLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX1ExLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUTIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE1LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfUWRlbHRhLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0NywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzF9KTsNCiAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzIuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzIuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJUaW1lcyBOZXcgUm9tYW4iLCA5Ljc1Rik7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cyLkZvcmVDb2xvciA9IFN5c3RlbS5EcmF3aW5nLlN5c3RlbUNvbG9ycy5Db250cm9sVGV4dDsNCiAgICAgICAgICAgIHRoaXMuUGFnZUhlYWRlclJvdzIuTmFtZSA9ICJQYWdlSGVhZGVyUm93MiI7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cyLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgMCwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cyLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50LlRvcExlZnQ7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWFkZXJSb3cyLldlaWdodCA9IDAuNjA5NzU2MDk3NTYwOTc1NDlEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZTYNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZTYuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Ub3ApIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlNi5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZTYuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGU2LkxvY2F0aW9uRmxvYXQgPSBuZXcgRGV2RXhwcmVzcy5VdGlscy5Qb2ludEZsb2F0KDBGLCAyMTAuODA0OUYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZTYuTmFtZSA9ICJ0YWJsZTYiOw0KICAgICAgICAgICAgdGhpcy50YWJsZTYuUm93cy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUlRhYmxlUm93W10gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVJvdzE2LA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVJvdzd9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGU2LlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDE0NTcuODU0RiwgNzkuOTk5OThGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGU2LlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVycyA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZTYuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJXaWR0aCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZTYuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlNi5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGU2LlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50LlRvcENlbnRlcjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gc3VtUTENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5zdW1RMS5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcC5WMSIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy5zdW1RMS5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5zdW1RMS5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOEYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEuTmFtZSA9ICJzdW1RMSI7DQogICAgICAgICAgICB0aGlzLnN1bVExLlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnN1bVExLlNjcmlwdHMuT25TdW1tYXJ5Q2FsY3VsYXRlZCA9ICJPblN1bW1hcnlDYWxjdWxhdGVkIjsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnN1bVExLlN0eWxlUHJpb3JpdHkuVXNlUGFkZGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgc3VtbWFyeTMwLkZvcm1hdFN0cmluZyA9ICJ7MDpGM30iOw0KICAgICAgICAgICAgc3VtbWFyeTMwLlJ1bm5pbmcgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlN1bW1hcnlSdW5uaW5nLlJlcG9ydDsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEuU3VtbWFyeSA9IHN1bW1hcnkzMDsNCiAgICAgICAgICAgIHRoaXMuc3VtUTEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnN1bVExLldlaWdodCA9IDAuMDc3NjkyMDg2MzM5Njc3ODA3RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMjUNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNS5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNS5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwU3RhcnQuVjJfVG90YWwiLCAiezA6RjN9Iil9KTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjUuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjUuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDdGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjUuTmFtZSA9ICJ0YWJsZUNlbGwyNSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI1LlBhZGRpbmcgPSBuZXcgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuUGFkZGluZ0luZm8oMCwgNSwgMCwgMCwgMjU0Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDI1LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwyNS5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVSaWdodDsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMjUuV2VpZ2h0ID0gMC43ODI5NDE0NDYxNDk1NzUzOUQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlUm93MTYNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzE2LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93MTYuQ2VsbHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZUNlbGxbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDYyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw3NiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNzksDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDgyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4NSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVDZWxsODksDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMyfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlUm93MTYuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxNi5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIlRpbWVzIE5ldyBSb21hbiIsIDguMjVGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVSb3cxNi5OYW1lID0gInRhYmxlUm93MTYiOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzE2LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZVJvdzE2LldlaWdodCA9IDAuOEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIEV2ZW50c1JlcG9ydEZvb3Rlcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLkV2ZW50c1JlcG9ydEZvb3Rlci5Db250cm9scy5BZGRSYW5nZShuZXcgRGV2RXhwcmVzcy5YdHJhUmVwb3J0cy5VSS5YUkNvbnRyb2xbXSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsNH0pOw0KICAgICAgICAgICAgdGhpcy5FdmVudHNSZXBvcnRGb290ZXIuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuRXZlbnRzUmVwb3J0Rm9vdGVyLkhlaWdodEYgPSA0MEY7DQogICAgICAgICAgICB0aGlzLkV2ZW50c1JlcG9ydEZvb3Rlci5OYW1lID0gIkV2ZW50c1JlcG9ydEZvb3RlciI7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbEhlYXQNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxIZWF0LkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxIZWF0LkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbEhlYXQuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsSGVhdC5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOEYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsSGVhdC5NdWx0aWxpbmUgPSB0cnVlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxIZWF0Lk5hbWUgPSAidGFibGVDZWxsSGVhdCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbEhlYXQuUm93U3BhbiA9IDI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbEhlYXQuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbEhlYXQuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbEhlYXQuU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbEhlYXQuVGV4dCA9ICLQotC10L/Qu9C+0YLQsFxyXG4oW1VuaXRHcm91cC5UaGVybWFsRW5lcmd5XSlcclxuUSI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbEhlYXQuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxIZWF0LldlaWdodCA9IDAuMjI3MzcwMDI4OTkyMzIzMTdEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUZvb3Rlcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlRm9vdGVyLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuVG9wKSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUZvb3Rlci5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUZvb3Rlci5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUZvb3Rlci5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVGb290ZXIuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMEYsIDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVGb290ZXIuTmFtZSA9ICJ0YWJsZUZvb3RlciI7DQogICAgICAgICAgICB0aGlzLnRhYmxlRm9vdGVyLlJvd3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJUYWJsZVJvd1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm93Rm9vdGVyfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlRm9vdGVyLlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDI0MTYuMDQyRiwgNDBGKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVGb290ZXIuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlRm9vdGVyLlN0eWxlUHJpb3JpdHkuVXNlQm9yZGVyV2lkdGggPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsMTcNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNy5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNy5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNy5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOEYsIFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZS5Cb2xkKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTcuTmFtZSA9ICJ0YWJsZUNlbGwxNyI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDE3LlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNy5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTcuVGV4dCA9ICJWMSwgW1VuaXRHcm91cC5Wb2x1bWVdIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMTcuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwxNy5XZWlnaHQgPSAwLjc4Mjk0MTI0ODY4Mjg3MTI5RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gYm90dG9tTWFyZ2luQmFuZDENCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5ib3R0b21NYXJnaW5CYW5kMS5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy5ib3R0b21NYXJnaW5CYW5kMS5IZWlnaHRGID0gNTBGOw0KICAgICAgICAgICAgdGhpcy5ib3R0b21NYXJnaW5CYW5kMS5OYW1lID0gImJvdHRvbU1hcmdpbkJhbmQxIjsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gcGFnZU51bWJlcg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnBhZ2VOdW1iZXIuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMucGFnZU51bWJlci5Gb250ID0gbmV3IFN5c3RlbS5EcmF3aW5nLkZvbnQoIkFyaWFsIiwgOUYpOw0KICAgICAgICAgICAgdGhpcy5wYWdlTnVtYmVyLkZvcm1hdCA9ICLQodGC0YDQsNC90LjRhtCwIHswfSDQuNC3IHsxfSI7DQogICAgICAgICAgICB0aGlzLnBhZ2VOdW1iZXIuTG9jYXRpb25GbG9hdCA9IG5ldyBEZXZFeHByZXNzLlV0aWxzLlBvaW50RmxvYXQoMjMyMEYsIDBGKTsNCiAgICAgICAgICAgIHRoaXMucGFnZU51bWJlci5OYW1lID0gInBhZ2VOdW1iZXIiOw0KICAgICAgICAgICAgdGhpcy5wYWdlTnVtYmVyLlNpemVGID0gbmV3IFN5c3RlbS5EcmF3aW5nLlNpemVGKDQwMEYsIDQ1Rik7DQogICAgICAgICAgICB0aGlzLnBhZ2VOdW1iZXIuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIEVxdWlwR3JvdXBIZWFkZXINCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy5FcXVpcEdyb3VwSGVhZGVyLkNvbnRyb2xzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQ29udHJvbFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGUzfSk7DQogICAgICAgICAgICB0aGlzLkVxdWlwR3JvdXBIZWFkZXIuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuRXF1aXBHcm91cEhlYWRlci5IZWlnaHRGID0gMTI3RjsNCiAgICAgICAgICAgIHRoaXMuRXF1aXBHcm91cEhlYWRlci5OYW1lID0gIkVxdWlwR3JvdXBIZWFkZXIiOw0KICAgICAgICAgICAgdGhpcy5FcXVpcEdyb3VwSGVhZGVyLlJlcGVhdEV2ZXJ5UGFnZSA9IHRydWU7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIE0yX0VuZA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLk0yX0VuZC5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy5NMl9FbmQuRGF0YUJpbmRpbmdzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZ1tdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlhSQmluZGluZygiVGV4dCIsIG51bGwsICJFcXVpcEVuZC5NMl9Ub3RhbCIsICJ7MDpGM30iKX0pOw0KICAgICAgICAgICAgdGhpcy5NMl9FbmQuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMuTTJfRW5kLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA3Rik7DQogICAgICAgICAgICB0aGlzLk0yX0VuZC5OYW1lID0gIk0yX0VuZCI7DQogICAgICAgICAgICB0aGlzLk0yX0VuZC5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy5NMl9FbmQuU3R5bGVQcmlvcml0eS5Vc2VQYWRkaW5nID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLk0yX0VuZC5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuTTJfRW5kLlRleHRBbGlnbm1lbnQgPSBEZXZFeHByZXNzLlh0cmFQcmludGluZy5UZXh0QWxpZ25tZW50Lk1pZGRsZVJpZ2h0Ow0KICAgICAgICAgICAgdGhpcy5NMl9FbmQuV2VpZ2h0ID0gMC43ODI5NDExMzQxODQyNDYzOEQ7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIHRhYmxlQ2VsbDMxDQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzEuQm9yZGVycyA9ICgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZSkoKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkxlZnQgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLlJpZ2h0KSANCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5Cb3R0b20pKSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMxLkJvcmRlcldpZHRoID0gMUY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMxLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMxLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMS5OYW1lID0gInRhYmxlQ2VsbDMxIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzEuU3R5bGVQcmlvcml0eS5Vc2VCb3JkZXJzID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDMxLlN0eWxlUHJpb3JpdHkuVXNlRm9udCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMS5TdHlsZVByaW9yaXR5LlVzZVRleHRBbGlnbm1lbnQgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsMzEuVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlQ2VudGVyOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGwzMS5XZWlnaHQgPSAwLjM4ODYxMDM2MTAzMDk3MjEzRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsOA0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDguQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOC5EcGkgPSAyNTRGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4LkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA4RiwgU3lzdGVtLkRyYXdpbmcuRm9udFN0eWxlLkJvbGQpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw4Lk5hbWUgPSAidGFibGVDZWxsOCI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDguU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDguU3R5bGVQcmlvcml0eS5Vc2VUZXh0QWxpZ25tZW50ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDguVGV4dCA9ICLQktGA0LXQvNGPINGA0LDQsS4sIFtVbml0R3JvdXAuVGltZVNwYW5dIjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsOC5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDguV2VpZ2h0ID0gMC44MDIzNTMwNTQyOTM5NTcyRDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gdGFibGVDZWxsNDcNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ny5Cb3JkZXJzID0gKChEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlKSgoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuTGVmdCB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuUmlnaHQpIA0KICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZFeHByZXNzLlh0cmFQcmludGluZy5Cb3JkZXJTaWRlLkJvdHRvbSkpKTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDcuQm9yZGVyV2lkdGggPSAxRjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDcuRHBpID0gMjU0RjsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDcuRm9udCA9IG5ldyBTeXN0ZW0uRHJhd2luZy5Gb250KCJBcmlhbCIsIDhGLCBTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUuQm9sZCk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ3Lk5hbWUgPSAidGFibGVDZWxsNDciOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ny5TdHlsZVByaW9yaXR5LlVzZUJvcmRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsNDcuU3R5bGVQcmlvcml0eS5Vc2VGb250ID0gZmFsc2U7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ3LlN0eWxlUHJpb3JpdHkuVXNlVGV4dEFsaWdubWVudCA9IGZhbHNlOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ny5UZXh0ID0gIiDRgNCw0LEuKFtVbml0R3JvdXAuVGltZVNwYW5dKVxyXG4iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGw0Ny5UZXh0QWxpZ25tZW50ID0gRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuVGV4dEFsaWdubWVudC5NaWRkbGVDZW50ZXI7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbDQ3LldlaWdodCA9IDAuMTczNzE3OTgyNjc0MzUxMTVEOw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICAvLyB0YWJsZUNlbGxfTV9pbg0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2luLkJvcmRlcnMgPSAoKERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUpKCgoRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5MZWZ0IHwgRGV2RXhwcmVzcy5YdHJhUHJpbnRpbmcuQm9yZGVyU2lkZS5SaWdodCkgDQogICAgICAgICAgICAgICAgICAgICAgICB8IERldkV4cHJlc3MuWHRyYVByaW50aW5nLkJvcmRlclNpZGUuQm90dG9tKSkpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9pbi5Cb3JkZXJXaWR0aCA9IDFGOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9pbi5EYXRhQmluZGluZ3MuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nW10gew0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuWFJCaW5kaW5nKCJUZXh0IiwgbnVsbCwgIkVxdWlwLk0xIiwgInswOkYzfSIpfSk7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2luLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2luLkZvbnQgPSBuZXcgU3lzdGVtLkRyYXdpbmcuRm9udCgiQXJpYWwiLCA3Rik7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2luLk5hbWUgPSAidGFibGVDZWxsX01faW4iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9pbi5OdWxsVmFsdWVUZXh0ID0gIi0iOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9pbi5QYWRkaW5nID0gbmV3IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlBhZGRpbmdJbmZvKDAsIDUsIDAsIDAsIDI1NEYpOw0KICAgICAgICAgICAgdGhpcy50YWJsZUNlbGxfTV9pbi5TdHlsZVByaW9yaXR5LlVzZVBhZGRpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMudGFibGVDZWxsX01faW4uVGV4dEFsaWdubWVudCA9IERldkV4cHJlc3MuWHRyYVByaW50aW5nLlRleHRBbGlnbm1lbnQuTWlkZGxlUmlnaHQ7DQogICAgICAgICAgICB0aGlzLnRhYmxlQ2VsbF9NX2luLldlaWdodCA9IDAuMDc0NTkyNjcxNTI5NjMzMzM2RDsNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gY2FsY3VsYXRlZEZpZWxkMw0KICAgICAgICAgICAgLy8gDQogICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRGaWVsZDMuRGF0YU1lbWJlciA9ICJFcXVpcCI7DQogICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRGaWVsZDMuRXhwcmVzc2lvbiA9ICJbTTFdLVtNMl0iOw0KICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkRmllbGQzLk5hbWUgPSAiY2FsY3VsYXRlZEZpZWxkMyI7DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIC8vIE15UmVwb3J0DQogICAgICAgICAgICAvLyANCiAgICAgICAgICAgIHRoaXMuQmFuZHMuQWRkUmFuZ2UobmV3IERldkV4cHJlc3MuWHRyYVJlcG9ydHMuVUkuQmFuZFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRGV0YWlsLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b3BNYXJnaW5CYW5kMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYm90dG9tTWFyZ2luQmFuZDEsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlJlcG9ydEhlYWRlciwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUmVwb3J0Rm9vdGVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5QYWdlRm9vdGVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5FcXVpcERldGFpbFJlcG9ydCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuVG90YWxEZXRhaWxSZXBvcnQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkV2ZW50c0RldGFpbFJlcG9ydH0pOw0KICAgICAgICAgICAgdGhpcy5DYWxjdWxhdGVkRmllbGRzLkFkZFJhbmdlKG5ldyBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLkNhbGN1bGF0ZWRGaWVsZFtdIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZEZpZWxkMSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZEZpZWxkMiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlZFRuYXIsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRUZXJyLA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVkVG5hckhlYXQsDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZWRGaWVsZDN9KTsNCiAgICAgICAgICAgIHRoaXMuRGlzcGxheU5hbWUgPSAi0KLQtdC/0LvQvtGB0L3QsNCx0LbQtdC90LjQtSDRgtGB0YDQsi00MyI7DQogICAgICAgICAgICB0aGlzLkRwaSA9IDI1NEY7DQogICAgICAgICAgICB0aGlzLkV4dGVuc2lvbnMuQWRkKCJTdG9yYWdlSUQiLCAiMTUiKTsNCiAgICAgICAgICAgIHRoaXMuTGFuZHNjYXBlID0gdHJ1ZTsNCiAgICAgICAgICAgIHRoaXMuTWFyZ2lucyA9IG5ldyBTeXN0ZW0uRHJhd2luZy5QcmludGluZy5NYXJnaW5zKDE1MCwgMTAwLCAxNTAsIDUwKTsNCiAgICAgICAgICAgIHRoaXMuTmFtZSA9ICJNeVJlcG9ydCI7DQogICAgICAgICAgICB0aGlzLlBhZ2VIZWlnaHQgPSAyMTAwOw0KICAgICAgICAgICAgdGhpcy5QYWdlV2lkdGggPSAyOTcwOw0KICAgICAgICAgICAgdGhpcy5QYXBlcktpbmQgPSBTeXN0ZW0uRHJhd2luZy5QcmludGluZy5QYXBlcktpbmQuQTQ7DQogICAgICAgICAgICB0aGlzLlJlcG9ydFVuaXQgPSBEZXZFeHByZXNzLlh0cmFSZXBvcnRzLlVJLlJlcG9ydFVuaXQuVGVudGhzT2ZBTWlsbGltZXRlcjsNCiAgICAgICAgICAgIHRoaXMuUmVxdWVzdFBhcmFtZXRlcnMgPSBmYWxzZTsNCiAgICAgICAgICAgIHRoaXMuU25hcEdyaWRTaXplID0gMjVGOw0KICAgICAgICAgICAgdGhpcy5WZXJzaW9uID0gIjE2LjEiOw0KICAgICAgICAgICAgKChTeXN0ZW0uQ29tcG9uZW50TW9kZWwuSVN1cHBvcnRJbml0aWFsaXplKSh0aGlzLnRhYmxlRGV0YWlsKSkuRW5kSW5pdCgpOw0KICAgICAgICAgICAgKChTeXN0ZW0uQ29tcG9uZW50TW9kZWwuSVN1cHBvcnRJbml0aWFsaXplKSh0aGlzLnRhYmxlMSkpLkVuZEluaXQoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcy50YWJsZTIpKS5FbmRJbml0KCk7DQogICAgICAgICAgICAoKFN5c3RlbS5Db21wb25lbnRNb2RlbC5JU3VwcG9ydEluaXRpYWxpemUpKHRoaXMudGFibGU3KSkuRW5kSW5pdCgpOw0KICAgICAgICAgICAgKChTeXN0ZW0uQ29tcG9uZW50TW9kZWwuSVN1cHBvcnRJbml0aWFsaXplKSh0aGlzLnRhYmxlNSkpLkVuZEluaXQoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcy50YWJsZTQpKS5FbmRJbml0KCk7DQogICAgICAgICAgICAoKFN5c3RlbS5Db21wb25lbnRNb2RlbC5JU3VwcG9ydEluaXRpYWxpemUpKHRoaXMudGFibGUzKSkuRW5kSW5pdCgpOw0KICAgICAgICAgICAgKChTeXN0ZW0uQ29tcG9uZW50TW9kZWwuSVN1cHBvcnRJbml0aWFsaXplKSh0aGlzLnRhYmxlNikpLkVuZEluaXQoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcy50YWJsZUZvb3RlcikpLkVuZEluaXQoKTsNCiAgICAgICAgICAgICgoU3lzdGVtLkNvbXBvbmVudE1vZGVsLklTdXBwb3J0SW5pdGlhbGl6ZSkodGhpcykpLkVuZEluaXQoKTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg==</Template>
</Report>