UEtJWDEgeyB9CkRFRklOSVRJT05TIElNUExJQ0lUIFRBR1MgOjo9CkJFR0lOCmlkLWNlIE9CSkVDVCBJREVOVElGSUVSICA6Oj0gIHtqb2ludC1pc28tY2NpdHQoMikgZHMoNSkgMjl9CmlkLWNlLWF1dGhvcml0eUtleUlkZW50aWZpZXIgT0JKRUNUIElERU5USUZJRVIgOjo9ICB7IGlkLWNlIDM1IH0KQXV0aG9yaXR5S2V5SWRlbnRpZmllciA6Oj0gU0VRVUVOQ0UgewogICAgICBrZXlJZGVudGlmaWVyICAgICAgICAgICAgIFswXSBLZXlJZGVudGlmaWVyICAgICAgICAgICAgT1BUSU9OQUwsCiAgICAgIGF1dGhvcml0eUNlcnRJc3N1ZXIgICAgICAgWzFdIEdlbmVyYWxOYW1lcyAgICAgICAgICAgICBPUFRJT05BTCwKICAgICAgYXV0aG9yaXR5Q2VydFNlcmlhbE51bWJlciBbMl0gQ2VydGlmaWNhdGVTZXJpYWxOdW1iZXIgIE9QVElPTkFMIH0KICAgIC0tIGF1IFNJWkUgKDEuLk1BWCkgT0YgUG9saWN5SW5mb3JtYXRpb24KUG9saWN5SW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsKICAgICBwb2xpY3lJZGVudGlmaWVyICAgQ2VydFBvbGljeUlkLAogICAgIHBvbGljeVF1YWxpZmllcnMgICBTRVFVRSBDSE9JQ0UgewogICBudW1lcmljIE51bWVyaWNTdHJpbmcgKFNJWkUgKDAuLnViLWRvbWFpbi1uYW1lLWxlbmd0aCkpLAogICBwcmludGFibGUgUHJpbnRhYmxlU3RyaW5nIChTSVpFICgwLi51Yi1kb21haW4tbmFtZS1sZW5ndGgpKSB9Ck5ldHdvcmtBZGRyZXNzIDo6PSBYMTIxQWRkcmVzcyAgLS0gc2VlIGFsc28gZXh0ZW5kZWQtbmV0d29yay1hZGRyZXNzClgxMjFBZGRyZXNzIDo6PSBOdW1lcmljU3R6aW5nIChTSVpFICgxLi51Yi14MTIxLWFkZHJlc3MtbGVuZ3RoKSkKVGVybWluYWxJZGVudGlmaWVyIDo6PSBQcmludGFibGVTdHJpbmcgKFNJWkUgKDEuLnViLXRlcm1pbmFsLWlkLWxlbmd0aCkpClByaXZhdGVEb21haW5OYW1lIDo6PSBDSE9JQ0UgewogICBudW1lcmljIE51bWVyaWNTdHJpbmcgKFNJWkUgKDEuLnViLWRvbWFpbi1uYW1lLWxlbmd0aCkpLAogICBwcmludGFibGUgUHJpbnRhYmxlU3RyaW5nIChTSVpFICgxLi51Yi1kb21haW4tbmFtZS1sZW5ndGgpKSB9Ck9yZ2FuaXphdGlvbk5hbWUgOjo9IFByaW50YWJsZVN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNJWkUgKDEuLnViLW9yZ2FuaXphdGlvbi1uYW1lLWxlbmd0aCkpCk51bWVyaWNVc2VySWRlbnRpZmllciA6Oj0gTnVtZXJpY1N0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNJWkUgKDEuLnViLW51bWVyaWMtdXNlci1pZC1sZW5ndGgpKQpQZXJzb25hbE5hbWUgOjo9IFNFVCB7CiAgIHN1cm5hbWUgWzBdIFByaW50YWJsZVN0cmluZyAoU0laRSAoMS4udWItc3VybmFtZS1sZW5ndGgpKSwKICAgZ2l2ZW4tbmFtZSBbMV0gUHJpbnRhYmxlU3RyaW5nCiAgICAgICAgICAgICAgICAguyg3KUUgU0laRSAoMS4uTUFYKSBPRiBQb2xpY3lJbmZvcm1hdGlvbgpQb2xpY3lJbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0UgewogICAgIHBvbGljeUlkZW50aWZpZXIgICBDZXJ0UG9saWN5SWQsCiAgICAgcG9saWN5UXVhbGlmaWVycyAgIFNFUVVFIENIT0lDRSB7CiAgIG51bWVyaWMgTnVtZXJpY1N0cmluZyAoU0laRSAoMC4udWItZG9tYWluLW5hbWUtbGVuZ3RoKSksCiAgIHByaW50YWJsZSBQcmludGFibGVTdHJpbmcgKFNJWkUgKDAuLnViLWRvbWFpbi1uYW1lLWxlbmd0aCkpIH0KTmV0d29ya0FkZHJlc3MgOjo9IFgxMjFBZGRyZXNzICAtLSBzZWUgYWxzbyBleHRlbmRlZC1uZXR3b3JrLWFkZHJlc3MKWDEyMUFkZHJlc3MgOjo9IE51bWVyaWNTdHppbmcgKFNJWkUgKDEuLnViLXgxMjEtYWRkcmVzcy1sZW5ndGgpKQpUZXJtaW5hbElkZW50aWZpZXIgOjo9IFByaW50YWJsZVN0cmluZyAoU0laRSAoMS4udWItdGVybWluYWwtaWQtbGVuZ3RoKSkKUHJpdmF0ZURvbWFpbk5hbWUgOjo9IENIT0lDRSB7CiAgIG51bWVyaWMgTnVtZXJpY1N0cmluZyAoU0laRSAoMS4udWItZG9tYWluLW5hbWUtbGVuZ3RoKSksCiAgIHByaW50YWJsZSBQcmludGFibGVTdHJpbmcgKFNJWkUgKDEuLnViLWRvbWFpbi1uYW1lLWxlbmd0aCkpIH0KT3JnYW5pemF0aW9uTmFtZSA6Oj0gUHJpbnRhYmxlU3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU0laRSAoMS4udWItb3JnYW5pemF0aW9uLW5hbWUtbGVuZ3RoKSkKTnVtZXJpY1VzZXJJZGVudGlmaWVyIDo6PSBOdW1lcmljU3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU0laRSAoMS4udWItbnVtZXJpYy11c2VyLWlkLWxlbmd0aCkpClBlcnNvbmFsTmFtZSA6Oj0gU0VUIHsKICAgc3VybmFtZSBbMF0gUHJpbnRhYmxlU3RyaW5nIChTSVpFICgxLi51Yi1zdXJuYW1lLWxlbmd0aCkpLAogICBnaXZlbi1uYW1lIFsxXSBQcmludGFibGVTdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgKFNJWkUgKDEuLnViLWdpdmVuLW5hbWUtbGVuZ3RoKSkgT1BUSU9OQUwsCiAgIGluaXRpYWxzIFsyXSBQcmludGFibGVTdHJpbmcuLnViLW9yZ2FuaXphdGlvbi1uYW1lLWxlbmd0aCkpCk51bWVyaWNVc2VySWRlbnRpZmllciA6Oj0gTnVtZXJpY1N0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNJWkUgKDEuLnViLW51bWVyaWMtdXNlci1pZC1sZW5ndGgpKQpQZXJzb25hbE5hbWUgOjo9IFNFVCB7CiAgIHN1cm5hbWUgWzBdIFByaW50YWJsZVN0cmluZyAoU0laRSAoMS4udWItc3VybmFtZS1sZW5ndGgpKSwKICAgZ2l2ZW4tbmFtZSBbMV0gUHJpbnRhYmxlU3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgIChTSVpFICgxLi51Yi1naXZlbi1uYW1lLWxlbmd0aCkpIE9QVElPTkFMLAogICBpbml0aWFscyBbMl0gUHJpbnRhYmxlU3RyaW5nIChTSVpFICgxLi51Yi1pbml0aWFscy1sZW5ndGgpKSBPUFRJT05BTCwKICAgZ2VuZXJhdGlvbi1xdWFsaWZpZXIgWzNdIFBpbnJ0YWJsZVN0cmluZwogICAgICAgICAgICAgICAgKFNJWkUgKDEuLnViLWdlbmVyYXRpb24tcXVhbGlmaWVyLWxlbmd0aCkpIE9QVElPTkFMIH0KT3JnYW5pemF0aW9uYWxVbml0TmFtZXMgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLnViLW9yZ2FuaXphdGlvbmFsLXVuaXRzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0YgT3JnYW5pemF0aW9uYWxVbml0TmFtZQpPcmdhbml6YXRpb25hbFVuaXROYW1lIDo6PSBQcmludGFibGVTdHJpbmcgKFNJWkUKICAgICAgICAgICAgICAgICAgICAgICAgKDEuLnViLW9yZ2FuaXphdGlvbmFsLXVuaXQtbmFtZS1sZW5ndGgpKQpCdWlsdEluRG9tYWluRGVnaW5lZEF0dHJpYnV0ZXMgOjo9IFNFUVVFTkNFIFNJWkUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS4udWItZG9tYWluLWRlZmluZWQtYXR0cmlidXRlcykgT0YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdEluRG9tYWluRGVmaW5lZEF0dHJpYnV0ZQpCdWlsdEluRG9tYWluRGVmaW5lZEF0dHJpYnV0ZSA6Oj0gU0VRVUVOQ0UgewogICB0eXBlIFByaW50YWJsZVN0cmluZyAoU0laRQogICAgICAgICAgICAgICAgICAgICAgICAoMS4udWItZG9tYWluLWRlZmluZWQtYXR0cmlidXRlLXR5cGUtbGVuZ3RoKSksCiAgIHZhbHVlIFByaW50YWJsZVN0cmmSZyAoU0laRQogICAgICAgICAgICAgICAgICAgICAgICAoMS4udWItZG9tYWluLWRlZmluZWQtYXR0cmlidXRlLXZhbHVlLWxlbmd0aCkpfQpFeHRlbnNpb25BdHRyaWJ1dGVzIDo6PSBTRVQgU0laRSAoMS4udWItZXh0ZW5zaW9uLWF0dHJpYnV0ZXMpIE9GCiAgICAgICAgICAgICAgICAgIA==