1789595935
c05b9b66eacc8e11cfd97f370d355f8b-phpdoc%3Aa8c07f2306b69ea3bb05dc06835f9b97-c064dabb1bddb54a8c14bfc73e3c8495
s:17236:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjEyOiJwYXJ0aWRhcy5waHAiO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbmFtZXNwYWNlcyI7YTowOnt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbmNsdWRlcyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBmdW5jdGlvbnMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY29uc3RhbnRzIjthOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNsYXNzZXMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW50ZXJmYWNlcyI7YTowOnt9czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQB0cmFpdHMiO2E6MDp7fXM6NDA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZW51bXMiO2E6MDp7fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaGFzaCI7czozMjoiYzA2NGRhYmIxYmRkYjU0YThjMTRiZmM3M2UzYzg0OTUiO3M6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAcGF0aCI7czozMzoiYmFja2VuZC9hcGkvdjIvcnV0YXMvcGFydGlkYXMucGhwIjtzOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHNvdXJjZSI7czoxMDU5ODoiPD9waHANCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOw0KDQovKioNCiAqIFJ1dGFzIGRlIFBBUlRJREFTIOKAlCBsaXN0YWRvLCBjYW1pbm9zLCBwZXNhZGFzIGFzb2NpYWRhcyB5IG9wZXJhY2lvbmVzDQogKiBkZSBtYW50ZW5pbWllbnRvLCBtw6FzIGxvcyBjYXTDoWxvZ29zIGRlIHN1YnRpcG9zIHByaW1hcmlvcyBxdWUgYWxpbWVudGFuDQogKiBzdXMgY29tYm9zLg0KICoNCiAqIFRvZGFzIHNlIGNvbnN1bWVuIGRlc2RlIGxhIG1pc21hIHDDoWdpbmEsIHBvciBsbyBxdWUgY29tcGFydGVuIGxhDQogKiBkZWNsYXJhY2nDs24gJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nLg0KICoNCiAqIEBwYWNrYWdlIHRyYWNraW5nXGJhY2tlbmRcYXBpXHYyXHJ1dGFzDQogKi8NCg0KcmV0dXJuIFsNCg0KICAgIC8vIOKUgOKUgCBGSUxUUk9TIFkgTElTVEFET1Mg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgICAnZ2V0X3JhbmdvX2ZlY2hhc19wYXJ0aWRhJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclBhcnRpZGFzUHJvYzo6Z2V0UmFuZ29GZWNoYXNQYXJ0aWRhKCRjdHgtPmNvbmV4aW9uKCkpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvcGFydGlkYXNMaXN0YWRvJw0KICAgICksDQoNCiAgICAnZ2V0X2ZpbHRyb3NfcGFydGlkYScgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JQYXJ0aWRhc1Byb2M6OmdldEZpbHRyb3MoJGN0eC0+Y29uZXhpb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCg0KICAgICdsb2FkX3BhcnRpZGFzJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclBhcnRpZGFzUHJvYzo6Z2V0UGFydGlkYXMoJGN0eC0+Y29uZXhpb24oKSwgJGN0eC0+anNvbigpKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL3BhcnRpZGFzTGlzdGFkbycNCiAgICApLA0KDQogICAgJ2xvYWRfcGFydGlkYV9ieUlkJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcihDb250cm9sYWRvclBhcnRpZGFzUHJvYzo6Z2V0UGFydGlkYUJ5SWQoDQogICAgICAgICAgICAgICAgJGN0eC0+Y29uZXhpb24oKSwgJGN0eC0+anNvbigpKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL3BhcnRpZGFzTGlzdGFkbycNCiAgICApLA0KDQogICAgJ2xvYWRfcGFydGlkYXNfZGVzaGFiaWxpdGFkYXMnID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKA0KICAgICAgICAgICAgICAgIENvbnRyb2xhZG9yUGFydGlkYXNQcm9jOjpnZXRQYXJ0aWRhc0Rlc2hhYmlsaXRhZGFzKCRjdHgtPmNvbmV4aW9uKCksICRjdHgtPmpzb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCg0KICAgICdsb2FkX2ZkX3BhcnRpZGFQcm9jX2NhbWlub3MnID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKA0KICAgICAgICAgICAgICAgIENvbnRyb2xhZG9yUGFydGlkYXNQcm9jOjpnZXRGZWNoYURlZmF1bHRDYW1pbm9zKCRjdHgtPmNvbmV4aW9uKCksICRjdHgtPmpzb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCg0KICAgIC8vIOKUgOKUgCBERVRBTExFIERFIFVOQSBQQVJUSURBIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogICAgJ3Zlcl9jYW1pbm9zX3BhcnRpZGEnID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKA0KICAgICAgICAgICAgICAgIENvbnRyb2xhZG9yUGFydGlkYXNQcm9jOjpvYnRlbmVyRGV0YWxsZUNhbWlub3MoJGN0eC0+Y29uZXhpb24oKSwgJGN0eC0+anNvbigpKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL3BhcnRpZGFzTGlzdGFkbycNCiAgICApLA0KDQogICAgJ29idGVuZXJfZGV0YWxsZXNfcGVzYWRhUGFydGlkYScgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JQYXJ0aWRhc1Byb2M6Om9idGVuZXJEZXRhbGxlUGVzYWRhcygkY3R4LT5jb25leGlvbigpLCAkY3R4LT5qc29uKCkpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvcGFydGlkYXNMaXN0YWRvJw0KICAgICksDQoNCiAgICAnb2J0ZW5lcl9zZWN1bmRhcmlvc19wYXJ0aWRhJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclBhcnRpZGFzUHJvYzo6b2J0ZW5lckRldGFsbGVTZWN1bmRhcmlvKCRjdHgtPmNvbmV4aW9uKCksICRjdHgtPmpzb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCg0KICAgIC8vIERpYWduw7NzdGljbzogcGVzYWRhcyBhc2lnbmFkYXMgYSBtw6FzIGRlIHVuYSBwYXJ0aWRhIGRlbCBsaXN0YWRvLg0KICAgICdwZXNhZGFzX2Fjb3BsYWRhcycgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JQYXJ0aWRhc1Byb2M6OnBlc2FkYXNBY29wbGFkYXMoJGN0eC0+Y29uZXhpb24oKSwgJGN0eC0+anNvbigpKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL3BhcnRpZGFzTGlzdGFkbycNCiAgICApLA0KDQogICAgLy8g4pSA4pSAIEVESUNJw5NOIERFIExBIFBBUlRJREEg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgICAnYWp1c3RlX2tpbG9zX3BhcnRpZGFzJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclBhcnRpZGFzUHJvYzo6YWN0dWFsaXphcktpbG9zQWp1c3RlKCRjdHgtPmNvbmV4aW9uKCksICRjdHgtPmpzb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCg0KICAgICdjYW1iaW9fZmVjaGFfcGFydGlkYScgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JQYXJ0aWRhc1Byb2M6OmFjdHVhbGl6YXJGZWNoYUluaUZpbigkY3R4LT5jb25leGlvbigpLCAkY3R4LT5qc29uKCkpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvcGFydGlkYXNMaXN0YWRvJw0KICAgICksDQoNCiAgICAnY2FtYmlvX25vbWJyZV9wYXJ0aWRhJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclBhcnRpZGFzUHJvYzo6YWN0dWFsaXphck5vbWJyZVBhcnRpZGEoJGN0eC0+Y29uZXhpb24oKSwgJGN0eC0+anNvbigpKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL3BhcnRpZGFzTGlzdGFkbycNCiAgICApLA0KDQogICAgJ2Rlc2hhYmlsaXRhcl9wYXJ0aWRhJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclBhcnRpZGFzUHJvYzo6ZGVzaGFiaWxpdGFyUGFydGlkYSgkY3R4LT5jb25leGlvbigpLCAkY3R4LT5qc29uKCkpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvcGFydGlkYXNMaXN0YWRvJw0KICAgICksDQoNCiAgICAnaGFiaWxpdGFyX3BhcnRpZGEnID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKA0KICAgICAgICAgICAgICAgIENvbnRyb2xhZG9yUGFydGlkYXNQcm9jOjpoYWJpbGl0YXJQYXJ0aWRhKCRjdHgtPmNvbmV4aW9uKCksICRjdHgtPmpzb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCg0KICAgIC8vIOKUgOKUgCBUUkFNT1MgREUgTEEgUlVUQSAoY2FtaW5vaG1pKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICAgICdhbmFkaXJfY2FtaW5vaG1pJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclBhcnRpZGFzUHJvYzo6aW5zZXJ0YXJDYW1pbm9obWkoJGN0eC0+Y29uZXhpb24oKSwgJGN0eC0+anNvbigpKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL3BhcnRpZGFzTGlzdGFkbycNCiAgICApLA0KDQogICAgJ21vZGlmaWNhcl9jYW1pbm9obWknID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKA0KICAgICAgICAgICAgICAgIENvbnRyb2xhZG9yUGFydGlkYXNQcm9jOjphY3R1YWxpemFyY2FtaW5vKCRjdHgtPmNvbmV4aW9uKCksICRjdHgtPmpzb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCg0KICAgICdlbGltaW5hcl9jYW1pbm9obWknID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKA0KICAgICAgICAgICAgICAgIENvbnRyb2xhZG9yUGFydGlkYXNQcm9jOjpkZWxldGVDYW1pbm9obWkoJGN0eC0+Y29uZXhpb24oKSwgJGN0eC0+anNvbigpKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL3BhcnRpZGFzTGlzdGFkbycNCiAgICApLA0KDQogICAgLy8g4pSA4pSAIFJFQUpVU1RFIERFIFBFU0FEQVMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgICAvLyBPcGVyYWNpw7NuIG1hc2l2YSBlIGlycmV2ZXJzaWJsZTogZW4gbW9kbyBjYW1wYcOxYSBhZmVjdGEgYSB0b2RhcyBsYXMNCiAgICAvLyBwYXJ0aWRhcyBkZWwgw6FtYml0by4gVmVyIG5vdGEgc29icmUgZWwgbml2ZWwgZGUgYWNjZXNvIGVuIGxhIGVudHJlZ2EuDQogICAgJ3JlYWp1c3Rhcl9wZXNhZGFzJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclBhcnRpZGFzUHJvYzo6cmVhanVzdGFyUGVzYWRhcygkY3R4LT5jb25leGlvbigpLCAkY3R4LT5qc29uKCkpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvcGFydGlkYXNMaXN0YWRvJw0KICAgICksDQoNCiAgICAvLyDilIDilIAgU1VCVElQT1MgUFJJTUFSSU9TIChjb21ib3MgZGUgbGEgcMOhZ2luYSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgICAnZ2V0X3N1YnRpcG9wcmltYXJpb3NfY29tYicgPT4gbmV3IFJ1dGEoDQogICAgICAgIGFjY2VzbzogIEFjY2Vzbzo6QVVURU5USUNBRE8sDQogICAgICAgIGFtYml0bzogIEFtYml0bzo6VFJBQ0tJTkcsDQogICAgICAgIGhhbmRsZXI6IHN0YXRpYyBmdW5jdGlvbiAoQ29udGV4dG8gJGN0eCk6IG5ldmVyIHsNCiAgICAgICAgICAgIFJlc3B1ZXN0YTo6ZGVsQ29udHJvbGFkb3IoDQogICAgICAgICAgICAgICAgQ29udHJvbGFkb3JTdWJ0aXBvUHJpbWFyaW86Om9idGVuZXJGaWx0cm9zQ29tYm9ib3goJGN0eC0+Y29uZXhpb24oKSkNCiAgICAgICAgICAgICk7DQogICAgICAgIH0sDQogICAgICAgIHBhZ2luYTogJy9wYWdlcy9wYXJ0aWRhc0xpc3RhZG8nDQogICAgKSwNCg0KICAgICdnZXRfc3VidGlwb3ByaW1hcmlvc19jb21iX2ZpbmFsJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclN1YnRpcG9QcmltYXJpbzo6b2J0ZW5lckZpbHRyb3NDb21ib2JveEZpbmFsKCRjdHgtPmNvbmV4aW9uKCkpDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICBwYWdpbmE6ICcvcGFnZXMvcGFydGlkYXNMaXN0YWRvJw0KICAgICksDQoNCiAgICAnZ2V0X3N1YnRpcG9wcmltYXJpb3NfY29tYl9ub1QnID0+IG5ldyBSdXRhKA0KICAgICAgICBhY2Nlc286ICBBY2Nlc286OkFVVEVOVElDQURPLA0KICAgICAgICBhbWJpdG86ICBBbWJpdG86OlRSQUNLSU5HLA0KICAgICAgICBoYW5kbGVyOiBzdGF0aWMgZnVuY3Rpb24gKENvbnRleHRvICRjdHgpOiBuZXZlciB7DQogICAgICAgICAgICBSZXNwdWVzdGE6OmRlbENvbnRyb2xhZG9yKA0KICAgICAgICAgICAgICAgIENvbnRyb2xhZG9yU3VidGlwb1ByaW1hcmlvOjpvYnRlbmVyRmlsdHJvc0NvbWJvYm94Tm9Ub2x2YSgkY3R4LT5jb25leGlvbigpKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL3BhcnRpZGFzTGlzdGFkbycNCiAgICApLA0KDQogICAgJ2dldF9zdWJ0aXBvcHJpbWFyaW9zX2ZpbHRlcmVkJyA9PiBuZXcgUnV0YSgNCiAgICAgICAgYWNjZXNvOiAgQWNjZXNvOjpBVVRFTlRJQ0FETywNCiAgICAgICAgYW1iaXRvOiAgQW1iaXRvOjpUUkFDS0lORywNCiAgICAgICAgaGFuZGxlcjogc3RhdGljIGZ1bmN0aW9uIChDb250ZXh0byAkY3R4KTogbmV2ZXIgew0KICAgICAgICAgICAgUmVzcHVlc3RhOjpkZWxDb250cm9sYWRvcigNCiAgICAgICAgICAgICAgICBDb250cm9sYWRvclN1YnRpcG9QcmltYXJpbzo6b2J0ZW5lckZpbHRyb3NGaWx0ZXJlZCgkY3R4LT5jb25leGlvbigpKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgcGFnaW5hOiAnL3BhZ2VzL3BhcnRpZGFzTGlzdGFkbycNCiAgICApLA0KXTsiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjE1NzoiUnV0YXMgZGUgUEFSVElEQVMg4oCUIGxpc3RhZG8sIGNhbWlub3MsIHBlc2FkYXMgYXNvY2lhZGFzIHkgb3BlcmFjaW9uZXMKZGUgbWFudGVuaW1pZW50bywgbcOhcyBsb3MgY2F0w6Fsb2dvcyBkZSBzdWJ0aXBvcyBwcmltYXJpb3MgcXVlIGFsaW1lbnRhbgpzdXMgY29tYm9zLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoxMDQ6IlRvZGFzIHNlIGNvbnN1bWVuIGRlc2RlIGxhIG1pc21hIHDDoWdpbmEsIHBvciBsbyBxdWUgY29tcGFydGVuIGxhCmRlY2xhcmFjacOzbiAnL3BhZ2VzL3BhcnRpZGFzTGlzdGFkbycuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6MTp7aTowO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEdlbmVyaWMiOjI6e3M6NzoiACoAbmFtZSI7czo3OiJwYWNrYWdlIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoyOToidHJhY2tpbmdcYmFja2VuZFxhcGlcdjJccnV0YXMiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dCI6Mjp7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZSI7czowOiIiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2VBbGlhc2VzIjthOjA6e319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG1ldGFkYXRhIjthOjA6e319";