gAJjZG9jdXRpbHMubm9kZXMKZG9jdW1lbnQKcQEpgXECfXEDKFUJbmFtZXR5cGVzcQR9cQUoWAgAAABmbGV4bW9ja3EGiFgjAAAAY2FsbCB0aGUgc2FtZSBtZXRob2QgbXVsdGlwbGUgdGltZXNxB05YDQAAAGdhcnkgYmVybmhhZHRxCIhYJwAAAGVuc3VyZSBjYWxscyBhcmUgbWFkZSBpbiBzcGVjaWZpYyBvcmRlcnEJTlgLAAAAc2ltcGxlIG1vY2txCk5YIQAAAG92ZXJyaWRlIG5ldyBpbnN0YW5jZXMgb2YgYSBjbGFzc3ELTlgRAAAAZmxleG1vY2sgYW5kIG1vY2txDIhYGQAAAG1vY2tpbmcgYSBjb250ZXh0IG1hbmFnZXJxDU5YBQAAAHBtb2NrcQ6IWBIAAAByYWlzaW5nIGV4Y2VwdGlvbnNxD05YFAAAAG1vY2sgY2hhaW5lZCBtZXRob2RzcRBOWAUAAABmdWRnZXERiFgLAAAAcHl0aG9uLW1vY2txEohYAwAAAG1veHETiFgyAAAAbW9ja2luZyB0aGUgYnVpbHRpbiBvcGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXJxFE5YCAAAAG1pbmltb2NrcRWIWAYAAABtb2NrZXJxFohYCwAAAG1veCBwcm9qZWN0cReIWBYAAABjcmVhdGluZyBwYXJ0aWFsIG1vY2tzcRhOWAYAAABkaW5ndXNxGYhYEgAAAHNpbXBsZSBmYWtlIG9iamVjdHEaTlgeAAAAcHl0aG9uIG1vY2sgbGlicmFyeSBjb21wYXJpc29ucRuIWA4AAABrdW1hciBtY21pbGxhbnEciFgSAAAAbW9jayBpc3N1ZSB0cmFja2VycR2IWBcAAABtb2NrIGxpYnJhcnkgY29tcGFyaXNvbnEeTnVVEXN1YnN0aXR1dGlvbl9kZWZzcR99cSBVDnBhcnNlX21lc3NhZ2VzcSFdcSJVDmN1cnJlbnRfc291cmNlcSNOVQpkZWNvcmF0aW9ucSROVRJhdXRvZm9vdG5vdGVfc3RhcnRxJUsBVQduYW1laWRzcSZ9cScoaAZVCGZsZXhtb2NrcShoB1UjY2FsbC10aGUtc2FtZS1tZXRob2QtbXVsdGlwbGUtdGltZXNxKWgIVQ1nYXJ5LWJlcm5oYWR0cSpoCVUnZW5zdXJlLWNhbGxzLWFyZS1tYWRlLWluLXNwZWNpZmljLW9yZGVycStoClULc2ltcGxlLW1vY2txLGgLVSFvdmVycmlkZS1uZXctaW5zdGFuY2VzLW9mLWEtY2xhc3NxLWgMVRFmbGV4bW9jay1hbmQtbW9ja3EuaA1VGW1vY2tpbmctYS1jb250ZXh0LW1hbmFnZXJxL2gOVQVwbW9ja3EwaA9VEnJhaXNpbmctZXhjZXB0aW9uc3ExaBBVFG1vY2stY2hhaW5lZC1tZXRob2RzcTJoEVUFZnVkZ2VxM2gSVQtweXRob24tbW9ja3E0aBNVA21veHE1aBRVMm1vY2tpbmctdGhlLWJ1aWx0aW4tb3Blbi11c2VkLWFzLWEtY29udGV4dC1tYW5hZ2VycTZoFVUIbWluaW1vY2txN2gWVQZtb2NrZXJxOGgXVQttb3gtcHJvamVjdHE5aBhVFmNyZWF0aW5nLXBhcnRpYWwtbW9ja3NxOmgZVQZkaW5ndXNxO2gaVRJzaW1wbGUtZmFrZS1vYmplY3RxPGgbVR5weXRob24tbW9jay1saWJyYXJ5LWNvbXBhcmlzb25xPWgcVQ5rdW1hci1tY21pbGxhbnE+aB1VEm1vY2staXNzdWUtdHJhY2tlcnE/aB5VF21vY2stbGlicmFyeS1jb21wYXJpc29ucUB1VQhjaGlsZHJlbnFBXXFCY2RvY3V0aWxzLm5vZGVzCnNlY3Rpb24KcUMpgXFEfXFFKFUJcmF3c291cmNlcUZVAFUGcGFyZW50cUdoAlUGc291cmNlcUhjZG9jdXRpbHMubm9kZXMKcmVwcnVuaWNvZGUKcUlYHgAAAC9jb21waWxlL21vY2svZG9jcy9jb21wYXJlLnR4dHFKhYFxS31xTGJVB3RhZ25hbWVxTVUHc2VjdGlvbnFOVQphdHRyaWJ1dGVzcU99cVAoVQhkdXBuYW1lc3FRXXFSVQdjbGFzc2VzcVNdcVRVCGJhY2tyZWZzcVVdcVZVA2lkc3FXXXFYaEBhVQVuYW1lc3FZXXFaaB5hdVUEbGluZXFbSwNVCGRvY3VtZW50cVxoAmhBXXFdKGNkb2N1dGlscy5ub2Rlcwp0aXRsZQpxXimBcV99cWAoaEZYFwAAAE1vY2sgTGlicmFyeSBDb21wYXJpc29ucWFoR2hEaEhoS2hNVQV0aXRsZXFiaE99cWMoaFFdcWRoU11xZWhVXXFmaFddcWdoWV1xaHVoW0sDaFxoAmhBXXFpY2RvY3V0aWxzLm5vZGVzClRleHQKcWpYFwAAAE1vY2sgTGlicmFyeSBDb21wYXJpc29ucWuFgXFsfXFtKGhGaGFoR2hfdWJhdWJjZG9jdXRpbHMubm9kZXMKY29tbWVudApxbimBcW99cXAoaEZYfwEAAGRlZiBhc3NlcnRFcXVhbChhLCBiKToKICAgIGFzc2VydCBhID09IGIsICgiJXIgIT0gJXIiICUgKGEsIGIpKQoKZGVmIGFzc2VydFJhaXNlcyhFeGMsIGZ1bmMpOgogICAgdHJ5OgogICAgICAgIGZ1bmMoKQogICAgZXhjZXB0IEV4YzoKICAgICAgICByZXR1cm4KICAgIGFzc2VydCBGYWxzZSwgKCIlcyBub3QgcmFpc2VkIiAlIEV4YykKCnN5cy5tb2R1bGVzWydzb21lbW9kdWxlJ10gPSBzb21lbW9kdWxlID0gbW9jay5Nb2NrKG5hbWU9J3NvbWVtb2R1bGUnKQpjbGFzcyBTb21lRXhjZXB0aW9uKEV4Y2VwdGlvbik6CiAgICBzb21lX21ldGhvZCA9IG1ldGhvZDEgPSBtZXRob2QyID0gTm9uZQpzb21lX290aGVyX29iamVjdCA9IFNvbWVPYmplY3QgPSBTb21lRXhjZXB0aW9ucXFoR2hEaEhoS2hNVQdjb21tZW50cXJoT31xcyhVDHRlc3Rub2RldHlwZXF0WAkAAAB0ZXN0c2V0dXBxdVUJeG1sOnNwYWNlcXZVCHByZXNlcnZlcXdoV11xeGhVXXF5aFFdcXpoU11xe2hZXXF8VQZncm91cHNxfV1xflUHZGVmYXVsdHF/YVUHb3B0aW9uc3GAfXGBdWhbSwZoXGgCaEFdcYJoalh/AQAAZGVmIGFzc2VydEVxdWFsKGEsIGIpOgogICAgYXNzZXJ0IGEgPT0gYiwgKCIlciAhPSAlciIgJSAoYSwgYikpCgpkZWYgYXNzZXJ0UmFpc2VzKEV4YywgZnVuYyk6CiAgICB0cnk6CiAgICAgICAgZnVuYygpCiAgICBleGNlcHQgRXhjOgogICAgICAgIHJldHVybgogICAgYXNzZXJ0IEZhbHNlLCAoIiVzIG5vdCByYWlzZWQiICUgRXhjKQoKc3lzLm1vZHVsZXNbJ3NvbWVtb2R1bGUnXSA9IHNvbWVtb2R1bGUgPSBtb2NrLk1vY2sobmFtZT0nc29tZW1vZHVsZScpCmNsYXNzIFNvbWVFeGNlcHRpb24oRXhjZXB0aW9uKToKICAgIHNvbWVfbWV0aG9kID0gbWV0aG9kMSA9IG1ldGhvZDIgPSBOb25lCnNvbWVfb3RoZXJfb2JqZWN0ID0gU29tZU9iamVjdCA9IFNvbWVFeGNlcHRpb25xg4WBcYR9cYUoaEZVAGhHaG91YmF1YmNkb2N1dGlscy5ub2RlcwpwYXJhZ3JhcGgKcYYpgXGHfXGIKGhGWIkAAABBIHNpZGUtYnktc2lkZSBjb21wYXJpc29uIG9mIGhvdyB0byBhY2NvbXBsaXNoIHNvbWUgYmFzaWMgdGFza3Mgd2l0aCBtb2NrIGFuZApzb21lIG90aGVyIHBvcHVsYXIgUHl0aG9uIG1vY2tpbmcgbGlicmFyaWVzIGFuZCBmcmFtZXdvcmtzLnGJaEdoRGhIaEtoTVUJcGFyYWdyYXBocYpoT31xiyhoUV1xjGhTXXGNaFVdcY5oV11xj2hZXXGQdWhbSxhoXGgCaEFdcZFoaliJAAAAQSBzaWRlLWJ5LXNpZGUgY29tcGFyaXNvbiBvZiBob3cgdG8gYWNjb21wbGlzaCBzb21lIGJhc2ljIHRhc2tzIHdpdGggbW9jayBhbmQKc29tZSBvdGhlciBwb3B1bGFyIFB5dGhvbiBtb2NraW5nIGxpYnJhcmllcyBhbmQgZnJhbWV3b3Jrcy5xkoWBcZN9cZQoaEZoiWhHaId1YmF1YmiGKYFxlX1xlihoRlgKAAAAVGhlc2UgYXJlOnGXaEdoRGhIaEtoTWiKaE99cZgoaFFdcZloU11xmmhVXXGbaFddcZxoWV1xnXVoW0sbaFxoAmhBXXGeaGpYCgAAAFRoZXNlIGFyZTpxn4WBcaB9caEoaEZol2hHaJV1YmF1YmNkb2N1dGlscy5ub2RlcwpidWxsZXRfbGlzdApxoimBcaN9caQoaEZVAGhHaERoSGhLaE1VC2J1bGxldF9saXN0caVoT31xpihVBmJ1bGxldHGnWAEAAAAqaFddcahoVV1xqWhRXXGqaFNdcatoWV1xrHVoW0sdaFxoAmhBXXGt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ZWFzZSAyMDA1KSBhcmUKaW50ZW50aW9uYWxseSBvbWl0dGVkLnIKAgAAaEdqwwEAAHViZXViY2RvY3V0aWxzLm5vZGVzCm5vdGUKcgsCAAApgXIMAgAAfXINAgAAKGhGWBMBAABBIG1vcmUgdXAgdG8gZGF0ZSwgYW5kIHRlc3RlZCBmb3IgYWxsIG1vY2sgbGlicmFyaWVzIChvbmx5IHRoZSBtb2NrCmV4YW1wbGVzIG9uIHRoaXMgcGFnZSBjYW4gYmUgZXhlY3V0ZWQgYXMgZG9jdGVzdHMpIHZlcnNpb24gb2YgdGhpcwpjb21wYXJpc29uIGlzIG1haW50YWluZWQgYnkgR2FyeSBCZXJuaGFyZHQ6CgoqIGBQeXRob24gTW9jayBMaWJyYXJ5IENvbXBhcmlzb24KICA8aHR0cDovL2dhcnliZXJuaGFyZHQuZ2l0aHViLmNvbS9weXRob24tbW9jay1jb21wYXJpc29uLz5gX3IOAgAAaEdoRGhITmhNVQRub3Rlcg8CAABoT31yEAIAAChoUV1yEQIAAGhTXXISAgAAaFVdchMCAABoV11yFAIAAGhZXXIVAgAAdWhbTmhcaAJoQV1yFgIAAChohimBchcCAAB9chgCAAAoaEZYsgAAAEEgbW9yZSB1cCB0byBkYXRlLCBhbmQgdGVzdGVkIGZvciBhbGwgbW9jayBsaWJyYXJpZXMgKG9ubHkgdGhlIG1vY2sKZXhhbXBsZXMgb24gdGhpcyBwYWdlIGNhbiBiZSBleGVjdXRlZCBhcyBkb2N0ZXN0cykgdmVyc2lvbiBvZiB0aGlzCmNvbXBhcmlzb24gaXMgbWFpbnRhaW5lZCBieSBHYXJ5IEJlcm5oYXJkdDpyGQIAAGhHagwCAABoSGhLaE1oimhPfXIaAgAAKGhRXXIbAgAAaFNdchwCAABoVV1yHQIAAGhXXXIeAgAAaFldch8CAAB1aFtLLWhBXXIgAgAAaGpYsgAAAEEgbW9yZSB1cCB0byBkYXRlLCBhbmQgdGVzdGVkIGZvciBhbGwgbW9jayBsaWJyYXJpZXMgKG9ubHkgdGhlIG1vY2sKZXhhbXBsZXMgb24gdGhpcyBwYWdlIGNhbiBiZSBleGVjdXRlZCBhcyBkb2N0ZXN0cykgdmVyc2lvbiBvZiB0aGlzCmNvbXBhcmlz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Z2luYWxseSBjcmVhdGVkIGJ5IHRoZSBgTW94IHByb2plY3QKPGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvcHltb3gvd2lraS9Nb3hDb21wYXJpc29uPmBfIGFuZCB0aGVuIGV4dGVuZGVkIGZvcgpgZmxleG1vY2sgYW5kIG1vY2sgPGh0dHA6Ly9oYXMyMDcuZ2l0aHViLmNvbS9mbGV4bW9jay9jb21wYXJlLmh0bWw+YF8gYnkKSGVybWFuIFNoZXJlbWV0eWV2LiBEaW5ndXMgZXhhbXBsZXMgd3JpdHRlbiBieSBgR2FyeSBCZXJuaGFkdAo8aHR0cDovL2dhcnliZXJuaGFyZHQuZ2l0aHViLmNvbS9weXRob24tbW9jay1jb21wYXJpc29uLz5gXy4gZnVkZ2UgZXhhbXBsZXMKcHJvdmlkZWQgYnkgYEt1bWFyIE1jTWlsbGFuIDxodHRwOi8vZmFybWRldi5jb20vPmBfLnKbAgAAaEdoRGhIaEtoTWiKaE99cpwCAAAoaFFdcp0CAABoU11yngIAAGhVXXKfAgAAaFddcqACAABoWV1yoQIAAHVoW0s5aFxoAmhBXXKiAgAAKGhqWDMAAABUaGlzIGNvbXBhcmlzb24gcGFnZSB3YXMgb3JpZ2luYWxseSBjcmVhdGVkIGJ5IHRoZSByowIAAIWBcqQCAAB9cqUCAAAoaEZYMwAAAFRoaXMgY29tcGFyaXNvbiBwYWdlIHdhcyBvcmlnaW5hbGx5IGNyZWF0ZWQgYnkgdGhlIHKmAgAAaEdqmQIAAHViaMMpgXKnAgAAfXKoAgAAKGhGWEMAAABgTW94IHByb2plY3QKPGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvcHltb3gvd2lraS9Nb3hDb21wYXJpc29uPmBfcqkCAABoT31yqgIAAChVBG5hbWVyqwIAAFgLAAAATW94IHByb2plY3RyrAIAAGjJWDIAAABodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3B5bW94L3dpa2kvTW94Q29tcGFyaXNvbnKtAgAAaFddcq4CAABoVV1yrwIAAGhRXXKwAgAAaFNdcrECAABoWV1ysgIAAHVoR2qZAgAAaEFdcrMCAABoalgLAAAATW94IHByb2plY3RytAIAAIWBcrUCAAB9crYCAAAo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mwMAAGhTXXKcAwAAaFldcp0DAABVBmdyb3Vwc3KeAwAAXXKfAwAAaH9haIB9cqADAAB1aFtLT2hcaAJoQV1yoQMAAGhqWO8AAAA+Pj4gIyBtb2NrCj4+PiBteV9tb2NrID0gbW9jay5Nb2NrKCkKPj4+IG15X21vY2suc29tZV9tZXRob2QucmV0dXJuX3ZhbHVlID0gImNhbGN1bGF0ZWQgdmFsdWUiCj4+PiBteV9tb2NrLnNvbWVfYXR0cmlidXRlID0gInZhbHVlIgo+Pj4gYXNzZXJ0RXF1YWwoImNhbGN1bGF0ZWQgdmFsdWUiLCBteV9tb2NrLnNvbWVfbWV0aG9kKCkpCj4+PiBhc3NlcnRFcXVhbCgidmFsdWUiLCBteV9tb2NrLnNvbWVfYXR0cmlidXRlKXKiAwAAhYFyowMAAH1ypAMAAChoRlUAaEdqkgMAAHViYXViapEDAAApgXKlAwAAfXKmAwAAKGhGWHcCAAAjIEZsZXhtb2NrCm1vY2sgPSBmbGV4bW9jayhzb21lX21ldGhvZD1sYW1iZGE6ICJjYWxjdWxhdGVkIHZhbHVlIiwgc29tZV9hdHRyaWJ1dGU9InZhbHVlIikKYXNzZXJ0RXF1YWwoImNhbGN1bGF0ZWQgdmFsdWUiLCBtb2NrLnNvbWVfbWV0aG9kKCkpCmFzc2VydEVxdWFsKCJ2YWx1ZSIsIG1vY2suc29tZV9hdHRyaWJ1dGUpCgojIE1veAptb2NrID0gbW94Lk1vY2tBbnl0aGluZygpCm1vY2suc29tZV9tZXRob2QoKS5BbmRSZXR1cm4oImNhbGN1bGF0ZWQgdmFsdWUiKQptb2NrLnNvbWVfYXR0cmlidXRlID0gInZhbHVlIgptb3guUmVwbGF5KG1vY2spCmFzc2VydEVxdWFsKCJjYWxjdWxhdGVkIHZhbHVlIiwgbW9jay5zb21lX21ldGhvZCgpKQphc3NlcnRFcXVhbCgidmFsdWUiLCBtb2NrLnNvbWVfYXR0cmlidXRlKQoKIyBNb2NrZXIKbW9jayA9IG1vY2tlci5tb2NrKCkKbW9jay5zb21lX21ldGhvZCgpCm1vY2tlci5yZXN1bHQoImNhbGN1bGF0ZWQgdmFsdWUiKQptb2NrZXIucmVwbGF5KCkKbW9jay5zb21lX2F0dHJpYnV0ZSA9ICJ2YWx1ZSIKYXNzZXJ0RXF1YWwoImNhbGN1bGF0ZWQgdmFsdWUiLCBtb2NrLnNvbWVfbWV0aG9kKCkpCmFzc2VydEVxdWFsKCJ2YWx1ZSIsIG1vY2suc29tZV9hdHRyaWJ1dGUpcqcDAABoR2p7AwAAaEhoS2hNapUDAABoT31yqAMAAChodmh3aFddcqkDAABoVV1yqgMAAGhRXXKrAwAAaFNdcqwDAABoWV1yrQMAAHVoW0taaFxoAmhBXXKuAwAAaGpYdwIAACMgRmxleG1vY2sKbW9jayA9IGZsZXhtb2NrKHNvbWVfbWV0aG9kPWxhbWJkYTogImNhbGN1bGF0ZWQgdmFsdWUiLCBzb21lX2F0dHJpYnV0ZT0idmFsdWUiKQphc3NlcnRFcXVhbCgiY2FsY3VsYXRlZCB2YWx1ZSIsIG1vY2suc29tZV9tZXRob2QoKSkKYXNzZXJ0RXF1YWwoInZhbHVlIiwgbW9jay5zb21lX2F0dHJpYnV0ZSkKCiMgTW94Cm1vY2sgPSBtb3guTW9ja0FueXRoaW5nKCkKbW9jay5zb21lX21ldGhvZCgpLkFuZFJldHVybigiY2FsY3VsYXRlZCB2YWx1ZSIpCm1vY2suc29tZV9hdHRyaWJ1dGUgPSAidmFsdWUiCm1veC5SZXBsYXkobW9jaykKYXNzZXJ0RXF1YWwoImNhbGN1bGF0ZWQgdmFsdWUiLCBtb2NrLnNvbWVfbWV0aG9kKCkpCmFzc2VydEVxdWFsKCJ2YWx1ZSIsIG1vY2suc29tZV9hdHRyaWJ1dGUpCgojIE1vY2tlcgptb2NrID0gbW9ja2VyLm1vY2soKQptb2NrLnNvbWVfbWV0aG9kKCkKbW9ja2VyLnJlc3VsdCgiY2FsY3VsYXRlZCB2YWx1ZSIpCm1vY2tlci5yZXBsYXkoKQptb2NrLnNvbWVfYXR0cmlidXRlID0gInZhbHVlIgphc3NlcnRFcXVhbCgiY2FsY3VsYXRlZCB2YWx1ZSIsIG1vY2suc29tZV9tZXRob2QoKSkKYXNzZXJ0RXF1YWwoInZhbHVlIiwgbW9jay5zb21lX2F0dHJpYnV0ZSlyrwMAAIWBcrADAAB9crEDAAAoaEZVAGhHaqUDAAB1YmF1YmqRAwAAKYFysgMAAH1yswMAAChoRlj5AAAAPj4+ICMgRGluZ3VzCj4+PiBteV9kaW5ndXMgPSBkaW5ndXMuRGluZ3VzKHNvbWVfYXR0cmlidXRlPSJ2YWx1ZSIsCi4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvbWVfbWV0aG9kX19yZXR1cm5zPSJjYWxjdWxhdGVkIHZhbHVlIikKPj4+IGFzc2VydEVxdWFsKCJjYWxjdWxhdGVkIHZhbHVlIiwgbXlfZGluZ3VzLnNvbWVfbWV0aG9kKCkpCj4+PiBhc3NlcnRFcXVhbCgidmFsdWUiLCBteV9kaW5ndXMuc29tZV9hdHRyaWJ1dGUpcrQDAABoR2p7AwAAaEhoS2hNapUDAABoT31ytQMAAChodmh3aFddcrYDAABoVV1ytwMAAGhRXXK4AwAAaFNdcrkDAABoWV1yugMAAHVoW0tyaFxoAmhBXXK7AwAAaGpY+QAAAD4+PiAjIERpbmd1cwo+Pj4gbXlfZGluZ3VzID0gZGluZ3VzLkRpbmd1cyhzb21lX2F0dHJpYnV0ZT0idmFsdWUiLAouLi4gICAgICAgICAgICAgICAgICAgICAgICAgICBzb21lX21ldGhvZF9fcmV0dXJucz0iY2FsY3VsYXRlZCB2YWx1ZSIpCj4+PiBhc3NlcnRFcXVhbCgiY2FsY3VsYXRlZCB2YWx1ZSIsIG15X2Rpbmd1cy5zb21lX21ldGhvZCgpKQo+Pj4gYXNzZXJ0RXF1YWwoInZhbHVlIiwgbXlfZGluZ3VzLnNvbWVfYXR0cmlidXRlKXK8AwAAhYFyvQMAAH1yvgMAAChoRlUAaEdqsgMAAHViYXViapEDAAApgXK/AwAAfXLAAwAAKGhGWB0BAAA+Pj4gIyBmdWRnZQo+Pj4gbXlfZmFrZSA9IChmdWRnZS5GYWtlKCkKLi4uICAgICAgICAgICAgLnByb3ZpZGVzKCdzb21lX21ldGhvZCcpCi4uLiAgICAgICAgICAgIC5yZXR1cm5zKCJjYWxjdWxhdGVkIHZhbHVlIikKLi4uICAgICAgICAgICAgLmhhc19hdHRyKHNvbWVfYXR0cmlidXRlPSJ2YWx1ZSIpKQouLi4KPj4+IGFzc2VydEVxdWFsKCJjYWxjdWxhdGVkIHZhbHVlIiwgbXlfZmFrZS5zb21lX21ldGhvZCgpKQo+Pj4gYXNzZXJ0RXF1YWwoInZhbHVlIiwgbXlfZmFrZS5zb21lX2F0dHJpYnV0ZSlywQMAAGhHansDAABoSGhLaE1qlQMAAGhPfXLCAwAAKGh2aHdoV11ywwMAAGhVXXLEAwAAaFFdcsUDAABoU11yxgMAAGhZXXLHAwAAdWhbS3poXGgCaEFdcsgDAABoalgdAQAAPj4+ICMgZnVkZ2UKPj4+IG15X2Zha2UgPSAoZnVkZ2UuRmFrZSgpCi4uLiAgICAgICAgICAgIC5wcm92aWRlcygnc29tZV9tZXRob2QnKQouLi4gICAgICAgICAgICAucmV0dXJucygiY2FsY3VsYXRlZCB2YWx1ZSIpCi4uLiAgICAgICAgICAgIC5oYXNfYXR0cihzb21lX2F0dHJpYnV0ZT0idmFsdWUiKSkKLi4uCj4+PiBhc3NlcnRFcXVhbCgiY2FsY3VsYXRlZCB2YWx1ZSIsIG15X2Zha2Uuc29tZV9tZXRob2QoKSkKPj4+IGFzc2VydEVxdWFsKCJ2YWx1ZSIsIG15X2Zha2Uuc29tZV9hdHRyaWJ1dGUpcskDAACFgXLKAwAAfXLLAwAAKGhGVQBoR2q/AwAAdWJhdWJldWJoQymBcswDAAB9cs0DAAAoaEZVAGhHaERoSGhLaE1oTmhPfXLOAwAAKGhRXXLPAwAAaFNdctADAABoVV1y0QMAAGhXXXLSAwAAaCxhaFldctMDAABoCmF1aFtLhWhcaAJoQV1y1AMAAChoXimBctUDAAB9ctYDAAAoaEZYCwAAAFNpbXBsZSBtb2NrctcDAABoR2rMAwAAaEhoS2hNaGJoT31y2AMAAChoUV1y2QMAAGhTXXLaAwAAaFVdctsDAABoV11y3AMAAGhZXXLdAwAAdWhbS4VoXGgCaEFdct4DAABoalgLAAAAU2ltcGxlIG1vY2ty3wMAAIWBcuADAAB9cuEDAAAoaEZq1wMAAGhHatUDAAB1YmF1YmqRAwAAKYFy4gMAAH1y4wMAAChoRli1AAAAPj4+ICMgbW9jawo+Pj4gbXlfbW9jayA9IG1vY2suTW9jaygpCj4+PiBteV9tb2NrLnNvbWVfbWV0aG9kLnJldHVybl92YWx1ZSA9ICJ2YWx1ZSIKPj4+IGFzc2VydEVxdWFsKCJ2YWx1ZSIsIG15X21vY2suc29tZV9tZXRob2QoKSkKPj4+IG15X21vY2suc29tZV9tZXRob2QuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKXLkAwAAaEdqzAMAAGhIaEtoTWqVAwAAaE99cuUDAAAoVQx0ZXN0bm9kZXR5cGVy5gMAAFgHAAAAZG9jdGVzdHLnAwAAaHZod2hXXXLoAwAAaFVdcukDAABoUV1y6gMAAGhTXXLrAwAAaFldcuwDAABVBmdyb3Vwc3LtAwAAXXLuAwAAaH9haIB9cu8DAAB1aFtLh2hcaAJoQV1y8AMAAGhqWLUAAAA+Pj4gIyBtb2NrCj4+PiBteV9tb2NrID0gbW9jay5Nb2NrKCkKPj4+IG15X21vY2suc29tZV9tZXRob2QucmV0dXJuX3ZhbHVlID0gInZhbHVlIgo+Pj4gYXNzZXJ0RXF1YWwoInZhbHVlIiwgbXlfbW9jay5zb21lX21ldGhvZCgpKQo+Pj4gbXlfbW9jay5zb21lX21ldGhvZC5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpcvEDAACFgXLyAwAAfXLzAwAAKGhGVQBoR2riAwAAdWJhdWJqkQMAACmBcvQDAAB9cvUDAAAoaEZYpQEAACMgRmxleG1vY2sKbW9jayA9IGZsZXhtb2NrKCkKbW9jay5zaG91bGRfcmVjZWl2ZSgic29tZV9tZXRob2QiKS5hbmRfcmV0dXJuKCJ2YWx1ZSIpLm9uY2UKYXNzZXJ0RXF1YWwoInZhbHVlIiwgbW9jay5zb21lX21ldGhvZCgpKQoKIyBNb3gKbW9jayA9IG1veC5Nb2NrQW55dGhpbmcoKQptb2NrLnNvbWVfbWV0aG9kKCkuQW5kUmV0dXJuKCJ2YWx1ZSIpCm1veC5SZXBsYXkobW9jaykKYXNzZXJ0RXF1YWwoInZhbHVlIiwgbW9jay5zb21lX21ldGhvZCgpKQptb3guVmVyaWZ5KG1vY2spCgojIE1vY2tlcgptb2NrID0gbW9ja2VyLm1vY2soKQptb2NrLnNvbWVfbWV0aG9kKCkKbW9ja2VyLnJlc3VsdCgidmFsdWUiKQptb2NrZXIucmVwbGF5KCkKYXNzZXJ0RXF1YWwoInZhbHVlIiwgbW9jay5zb21lX21ldGhvZCgpKQptb2NrZXIudmVyaWZ5KCly9gMAAGhHaswDAABoSGhLaE1qlQMAAGhPfXL3AwAAKGh2aHdoV11y+AMAAGhVXXL5AwAAaFFdcvoDAABoU11y+wMAAGhZXXL8AwAAdWhbS5FoXGgCaEFdcv0DAABoalilAQAAIyBGbGV4bW9jawptb2NrID0gZmxleG1vY2soKQptb2NrLnNob3VsZF9yZWNlaXZlKCJzb21lX21ldGhvZCIpLmFuZF9yZXR1cm4oInZhbHVlIikub25jZQphc3NlcnRFcXVhbCgidmFsdWUiLCBtb2NrLnNvbWVfbWV0aG9kKCkpCgojIE1veAptb2NrID0gbW94Lk1vY2tBbnl0aGluZygpCm1vY2suc29tZV9tZXRob2QoKS5BbmRSZXR1cm4oInZhbHVlIikKbW94LlJlcGxheShtb2NrKQphc3NlcnRFcXVhbCgidmFsdWUiLCBtb2NrLnNvbWVfbWV0aG9kKCkpCm1veC5WZXJpZnkobW9jaykKCiMgTW9ja2VyCm1vY2sgPSBtb2NrZXIubW9jaygpCm1vY2suc29tZV9tZXRob2QoKQptb2NrZXIucmVzdWx0KCJ2YWx1ZSIpCm1vY2tlci5yZXBsYXkoKQphc3NlcnRFcXVhbCgidmFsdWUiLCBtb2NrLnNvbWVfbWV0aG9kKCkpCm1vY2tlci52ZXJpZnkoKXL+AwAAhYFy/wMAAH1yAAQAAChoRlUAaEdq9AMAAHViYXViapEDAAApgXIBBAAAfXICBAAAKGhGWKoAAAA+Pj4gIyBEaW5ndXMKPj4+IG15X2Rpbmd1cyA9IGRpbmd1cy5EaW5ndXMoc29tZV9tZXRob2RfX3JldHVybnM9InZhbHVlIikKPj4+IGFzc2VydEVxdWFsKCJ2YWx1ZSIsIG15X2Rpbmd1cy5zb21lX21ldGhvZCgpKQo+Pj4gYXNzZXJ0IG15X2Rpbmd1cy5zb21lX21ldGhvZC5jYWxscygpLm9uY2UoKXIDBAAAaEdqzAMAAGhIaEtoTWqVAwAAaE99cgQEAAAoaHZod2hXXXIFBAAAaFVdcgYEAABoUV1yBwQAAGhTXXIIBAAAaFldcgkEAAB1aFtLp2hcaAJoQV1yCgQAAGhqWKoAAAA+Pj4gIyBEaW5ndXMKPj4+IG15X2Rpbmd1cyA9IGRpbmd1cy5EaW5ndXMoc29tZV9tZXRob2RfX3JldHVybnM9InZh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dWFsKCJ2YWx1ZSIsIG1vY2suc29tZV9tZXRob2QoKSkKCiMgTW94Cm1vY2sgPSBtb3guTW9ja09iamVjdChTb21lT2JqZWN0KQptb2NrLnNvbWVfbWV0aG9kKCkuQW5kUmV0dXJuKCJ2YWx1ZSIpCm1veC5SZXBsYXkobW9jaykKYXNzZXJ0RXF1YWwoInZhbHVlIiwgbW9jay5zb21lX21ldGhvZCgpKQptb3guVmVyaWZ5KG1vY2spCgojIE1vY2tlcgptb2NrID0gbW9ja2VyLm1vY2soU29tZU9iamVjdCkKbW9jay5HZXQoKQptb2NrZXIucmVzdWx0KCJ2YWx1ZSIpCm1vY2tlci5yZXBsYXkoKQphc3NlcnRFcXVhbCgidmFsdWUiLCBtb2NrLnNvbWVfbWV0aG9kKCkpCm1vY2tlci52ZXJpZnkoKXJFBAAAaEdqGwQAAGhIaEtoTWqVAwAAaE99ckYEAAAoaHZod2hXXXJHBAAAaFVdckgEAABoUV1ySQQAAGhTXXJKBAAAaFldcksEAAB1aFtLx2hcaAJoQV1yTAQAAGhqWKgBAAAjIEZsZXhtb2NrCmZsZXhtb2NrKFNvbWVPYmplY3QpLnNob3VsZF9yZWNlaXZlKCJzb21lX21ldGhvZCIpLmFuZF9yZXR1cm4oJ3ZhbHVlJykKYXNzZXJ0RXF1YWwoInZhbHVlIiwgbW9jay5zb21lX21ldGhvZCgpKQoKIyBNb3gKbW9jayA9IG1veC5Nb2NrT2JqZWN0KFNvbWVPYmplY3QpCm1vY2suc29tZV9tZXRob2QoKS5BbmRSZXR1cm4oInZhbHVlIikKbW94LlJlcGxheShtb2NrKQphc3NlcnRFcXVhbCgidmFsdWUiLCBtb2NrLnNvbWVfbWV0aG9kKCkpCm1veC5WZXJpZnkobW9jaykKCiMgTW9ja2VyCm1vY2sgPSBtb2NrZXIubW9jayhTb21lT2JqZWN0KQptb2NrLkdldCgpCm1vY2tlci5yZXN1bHQoInZhbHVlIikKbW9ja2VyLnJlcGxheSgpCmFzc2VydEVxdWFsKCJ2YWx1ZSIsIG1vY2suc29tZV9tZXRob2QoKSkKbW9ja2VyLnZlcmlmeSgpck0EAACFgXJOBAAAfXJPBAAAKGhGVQBoR2pDBAAAdWJhdWJqkQMAACmBclAEAAB9clEEAAAoaEZYkAAAAD4+PiAjIERpbmd1cwo+Pj4gb2JqZWN0ID0gU29tZU9iamVjdAo+Pj4gb2JqZWN0LnNvbWVfbWV0aG9kID0gZGluZ3VzLkRpbmd1cyhyZXR1cm5fdmFsdWU9InZhbHVlIikKPj4+IGFzc2VydEVxdWFsKCJ2YWx1ZSIsIG9iamVjdC5zb21lX21ldGhvZCgpKXJSBAAAaEdqGwQAAGhIaEtoTWqVAwAAaE99clMEAAAoaHZod2hXXXJUBAAAaFVdclUEAABoUV1yVgQAAGhTXXJXBAAAaFldclgEAAB1aFtL3GhcaAJoQV1yWQQAAGhqWJAAAAA+Pj4gIyBEaW5ndXMKPj4+IG9iamVjdCA9IFNvbWVPYmplY3QKPj4+IG9iamVjdC5zb21lX21ldGhvZCA9IGRpbmd1cy5EaW5ndXMocmV0dXJuX3ZhbHVlPSJ2YWx1ZSIpCj4+PiBhc3NlcnRFcXVhbCgidmFsdWUiLCBvYmplY3Quc29tZV9tZXRob2QoKSlyWgQAAIWBclsEAAB9clwEAAAoaEZVAGhHalAEAAB1YmF1YmqRAwAAKYFyXQQAAH1yXgQAAChoRljeAAAAPj4+ICMgZnVkZ2UKPj4+IGZha2UgPSBmdWRnZS5GYWtlKCkuaXNfY2FsbGFibGUoKS5yZXR1cm5zKCI8ZnVkZ2UtdmFsdWU+IikKPj4+IHdpdGggZnVkZ2UucGF0Y2hlZF9jb250ZXh0KFNvbWVPYmplY3QsICdzb21lX21ldGhvZCcsIGZha2UpOgouLi4gICAgIHMgPSBTb21lT2JqZWN0KCkKLi4uICAgICBhc3NlcnRFcXVhbCgiPGZ1ZGdlLXZhbHVlPiIsIHMuc29tZV9tZXRob2QoKSkKLi4ucl8EAABoR2obBAAAaEhoS2hNapUDAABoT31yYAQAAChodmh3aFddcmEEAABoVV1yYgQAAGhRXXJjBAAAaFNdcmQEAABoWV1yZQQAAHVoW0vjaFxoAmhBXXJmBAAAaGpY3gAAAD4+PiAjIGZ1ZGdlCj4+PiBmYWtlID0gZnVkZ2UuRmFrZSgpLmlzX2NhbGxhYmxlKCkucmV0dXJucygiPGZ1ZGdlLXZhbHVlPiIpCj4+PiB3aXRoIGZ1ZGdlLnBhdGNoZWRfY29udGV4dChTb21lT2JqZWN0LCAnc29tZV9tZXRob2QnLCBmYWtlKToKLi4uICAgICBzID0gU29tZU9iamVjdCgpCi4uLiAgICAgYXNzZXJ0RXF1YWwoIjxmdWRnZS12YWx1ZT4iLCBzLnNvbWVfbWV0aG9kKCkpCi4uLnJnBAAAhYFyaAQAAH1yaQQAAChoRlUAaEdqXQQAAHViYXViZXViaEMpgXJqBAAAfXJrBAAAKGhGVQBoR2hEaEhoS2hNaE5oT31ybAQAAChoUV1ybQQAAGhTXXJuBAAAaFVdcm8EAABoV11ycAQAAGgrYWhZXXJxBAAAaAlhdWhbS+xoXGgCaEFdcnIEAAAoaF4pgXJzBAAAfXJ0BAAAKGhGWCcAAABFbnN1cmUgY2FsbHMgYXJlIG1hZGUgaW4gc3BlY2lmaWMgb3JkZXJydQQAAGhHamoEAABoSGhLaE1oYmhPfXJ2BAAAKGhRXXJ3BAAAaFNdcngEAABoVV1yeQQAAGhXXXJ6BAAAaFldcnsEAAB1aFtL7GhcaAJoQV1yfAQAAGhqWCcAAABFbnN1cmUgY2FsbHMgYXJlIG1hZGUgaW4gc3BlY2lmaWMgb3JkZXJyfQQAAIWBcn4EAAB9cn8EAAAoaEZqdQQAAGhHanMEAAB1YmF1YmqRAwAAKYFygAQAAH1ygQQAAChoRljxAAAAPj4+ICMgbW9jawo+Pj4gbXlfbW9jayA9IG1vY2suTW9jayhzcGVjPVNvbWVPYmplY3QpCj4+PiBteV9tb2NrLm1ldGhvZDEoKQo8TW9jayBuYW1lPSdtb2NrLm1ldGhvZDEoKScgaWQ9Jy4uLic+Cj4+PiBteV9tb2NrLm1ldGhvZDIoKQo8TW9jayBuYW1lPSdtb2NrLm1ldGhvZDIoKScgaWQ9Jy4uLic+Cj4+PiBhc3NlcnRFcXVhbChteV9tb2NrLm1vY2tfY2FsbHMsIFtjYWxsLm1ldGhvZDEoKSwgY2FsbC5tZXRob2QyKCldKXKCBAAAaEdqagQAAGhIaEtoTWqVAwAAaE99coMEAAAoVQx0ZXN0bm9kZXR5cGVyhAQAAFgHAAAAZG9jdGVzdHKFBAAAaHZod2hXXXKGBAAAaFVdcocEAABoUV1yiAQAAGhTXXKJBAAAaFldcooEAABVBmdyb3Vwc3KLBAAAXXKMBAAAaH9haIB9co0EAAB1aFtL7mhcaAJoQV1yjgQAAGhqWPEAAAA+Pj4gIyBtb2NrCj4+PiBteV9tb2NrID0gbW9jay5Nb2NrKHNwZWM9U29tZU9iamVjdCkKPj4+IG15X21vY2subWV0aG9kMSgpCjxNb2NrIG5hbWU9J21vY2subWV0aG9kMSgpJyBpZD0nLi4uJz4KPj4+IG15X21vY2subWV0aG9kMigpCjxNb2NrIG5hbWU9J21vY2subWV0aG9kMigpJyBpZD0nLi4uJz4KPj4+IGFzc2VydEVxdWFsKG15X21vY2subW9ja19jYWxscywgW2NhbGwubWV0aG9kMSgpLCBjYWxsLm1ldGhvZDIoKV0pco8EAACFgXKQBAAAfXKRBAAAKGhGVQBoR2qABAAAdWJhdWJqkQMAACmBcpIEAAB9cpMEAAAoaEZYFAIAACMgRmxleG1vY2sKbW9jayA9IGZsZXhtb2NrKFNvbWVPYmplY3QpCm1vY2suc2hvdWxkX3JlY2VpdmUoJ21ldGhvZDEnKS5vbmNlLm9yZGVyZWQuYW5kX3JldHVybignZmlyc3QgdGhpbmcnKQptb2NrLnNob3VsZF9yZWNlaXZlKCdtZXRob2QyJykub25jZS5vcmRlcmVkLmFuZF9yZXR1cm4oJ3NlY29uZCB0aGluZycpCgojIE1veAptb2NrID0gbW94Lk1vY2tPYmplY3QoU29tZU9iamVjdCkKbW9jay5tZXRob2QxKCkuQW5kUmV0dXJuKCdmaXJzdCB0aGluZycpCm1vY2subWV0aG9kMigpLkFuZFJldHVybignc2Vjb25kIHRoaW5nJykKbW94LlJlcGxheShtb2NrKQptb3guVmVyaWZ5KG1vY2spCgojIE1vY2tlcgptb2NrID0gbW9ja2VyLm1vY2soKQp3aXRoIG1vY2tlci5vcmRlcigpOgogICAgbW9jay5tZXRob2QxKCkKICAgIG1vY2tlci5yZXN1bHQoJ2ZpcnN0IHRoaW5nJykKICAgIG1vY2subWV0aG9kMigpCiAgICBtb2NrZXIucmVzdWx0KCdzZWNvbmQgdGhpbmcnKQogICAgbW9ja2VyLnJlcGxheSgpCiAgICBtb2NrZXIudmVyaWZ5KClylAQAAGhHamoEAABoSGhLaE1qlQMAAGhPfXKVBAAAKGh2aHdoV11ylgQAAGhVXXKXBAAAaFFdcpgEAABoU11ymQQAAGhZXXKaBAAAdWhbS/poXGgCaEFdcpsEAABoalgUAgAAIyBGbGV4bW9jawptb2NrID0gZmxleG1vY2soU29tZU9iamVjdCkKbW9jay5zaG91bGRfcmVjZWl2ZSgnbWV0aG9kMScpLm9uY2Uub3JkZXJlZC5hbmRfcmV0dXJuKCdmaXJzdCB0aGluZycpCm1vY2suc2hvdWxkX3JlY2VpdmUoJ21ldGhvZDInKS5vbmNlLm9yZGVyZWQuYW5kX3JldHVybignc2Vjb25kIHRoaW5nJykKCiMgTW94Cm1vY2sgPSBtb3guTW9ja09iamVjdChTb21lT2JqZWN0KQptb2NrLm1ldGhvZDEoKS5BbmRSZXR1cm4oJ2ZpcnN0IHRoaW5nJykKbW9jay5tZXRob2QyKCkuQW5kUmV0dXJuKCdzZWNvbmQgdGhpbmcnKQptb3guUmVwbGF5KG1vY2spCm1veC5WZXJpZnkobW9jaykKCiMgTW9ja2VyCm1vY2sgPSBtb2NrZXIubW9jaygpCndpdGggbW9ja2VyLm9yZGVyKCk6CiAgICBtb2NrLm1ldGhvZDEoKQogICAgbW9ja2VyLnJlc3VsdCgnZmlyc3QgdGhpbmcnKQogICAgbW9jay5tZXRob2QyKCkKICAgIG1vY2tlci5yZXN1bHQoJ3NlY29uZCB0aGluZycpCiAgICBtb2NrZXIucmVwbGF5KCkKICAgIG1vY2tlci52ZXJpZnkoKXKcBAAAhYFynQQAAH1yngQAAChoRlUAaEdqkgQAAHViYXViapEDAAApgXKfBAAAfXKgBAAAKGhGWMcAAAA+Pj4gIyBEaW5ndXMKPj4+IG15X2Rpbmd1cyA9IGRpbmd1cy5EaW5ndXMoKQo+Pj4gbXlfZGluZ3VzLm1ldGhvZDEoKQo8RGluZ3VzIC4uLj4KPj4+IG15X2Rpbmd1cy5tZXRob2QyKCkKPERpbmd1cyAuLi4+Cj4+PiBhc3NlcnRFcXVhbChbJ21ldGhvZDEnLCAnbWV0aG9kMiddLCBbY2FsbC5uYW1lIGZvciBjYWxsIGluIG15X2Rpbmd1cy5jYWxsc10pcqEEAABoR2pqBAAAaEhoS2hNapUDAABoT31yogQAAChodmh3aFddcqMEAABoVV1ypAQAAGhR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ZXLTBAAAWAcAAABkb2N0ZXN0ctQEAABodmh3aFddctUEAABoVV1y1gQAAGhRXXLXBAAAaFNdctgEAABoWV1y2QQAAFUGZ3JvdXBzctoEAABdctsEAABof2FogH1y3AQAAHVoW00vAWhcaAJoQV1y3QQAAGhqWJgAAAA+Pj4gIyBtb2NrCj4+PiBteV9tb2NrID0gbW9jay5Nb2NrKCkKPj4+IG15X21vY2suc29tZV9tZXRob2Quc2lkZV9lZmZlY3QgPSBTb21lRXhjZXB0aW9uKCJtZXNzYWdlIikKPj4+IGFzc2VydFJhaXNlcyhTb21lRXhjZXB0aW9uLCBteV9tb2NrLnNvbWVfbWV0aG9kKXLeBAAAhYFy3wQAAH1y4AQAAChoRlUAaEdqzwQAAHViYXViapEDAAApgXLhBAAAfXLiBAAAKGhGWN8BAAAjIEZsZXhtb2NrCm1vY2sgPSBmbGV4bW9jaygpCm1vY2suc2hvdWxkX3JlY2VpdmUoInNvbWVfbWV0aG9kIikuYW5kX3JhaXNlKFNvbWVFeGNlcHRpb24oIm1lc3NhZ2UiKSkKYXNzZXJ0UmFpc2VzKFNvbWVFeGNlcHRpb24sIG1vY2suc29tZV9tZXRob2QpCgojIE1veAptb2NrID0gbW94Lk1vY2tBbnl0aGluZygpCm1vY2suc29tZV9tZXRob2QoKS5BbmRSYWlzZShTb21lRXhjZXB0aW9uKCJtZXNzYWdlIikpCm1veC5SZXBsYXkobW9jaykKYXNzZXJ0UmFpc2VzKFNvbWVFeGNlcHRpb24sIG1vY2suc29tZV9tZXRob2QpCm1veC5WZXJpZnkobW9jaykKCiMgTW9ja2VyCm1vY2sgPSBtb2NrZXIubW9jaygpCm1vY2suc29tZV9tZXRob2QoKQptb2NrZXIudGhyb3coU29tZUV4Y2VwdGlvbigibWVzc2FnZSIpKQptb2NrZXIucmVwbGF5KCkKYXNzZXJ0UmFpc2VzKFNvbWVFeGNlcHRpb24sIG1vY2suc29tZV9tZXRob2QpCm1vY2tlci52ZXJpZnkoKXLjBAAAaEdquQQAAGhIaEtoTWqVAwAAaE99cuQEAAAoaHZod2hXXXLlBAAAaFVdcuYEAABoUV1y5wQAAGhTXXLoBAAAaFldcukEAAB1aFtNOAFoXGgCaEFdcuoEAABoaljfAQAAIyBGbGV4bW9jawptb2NrID0gZmxleG1vY2soKQptb2NrLnNob3VsZF9yZWNlaXZlKCJzb21lX21ldGhvZCIpLmFuZF9yYWlzZShTb21lRXhjZXB0aW9uKCJtZXNzYWdlIikpCmFzc2VydFJhaXNlcyhTb21lRXhjZXB0aW9uLCBtb2NrLnNvbWVfbWV0aG9kKQoKIyBNb3gKbW9jayA9IG1veC5Nb2NrQW55dGhpbmcoKQptb2NrLnNvbWVfbWV0aG9kKCkuQW5kUmFpc2UoU29tZUV4Y2VwdGlvbigibWVzc2FnZSIpKQptb3guUmVwbGF5KG1vY2spCmFzc2VydFJhaXNlcyhTb21lRXhjZXB0aW9uLCBtb2NrLnNvbWVfbWV0aG9kKQptb3guVmVyaWZ5KG1vY2spCgojIE1vY2tlcgptb2NrID0gbW9ja2VyLm1vY2soKQptb2NrLnNvbWVfbWV0aG9kKCkKbW9ja2VyLnRocm93KFNvbWVFeGNlcHRpb24oIm1lc3NhZ2UiKSkKbW9ja2VyLnJlcGxheSgpCmFzc2VydFJhaXNlcyhTb21lRXhjZXB0aW9uLCBtb2NrLnNvbWVfbWV0aG9kKQptb2NrZXIudmVyaWZ5KCly6wQAAIWBcuwEAAB9cu0EAAAoaEZVAGhHauEEAAB1YmF1YmqRAwAAKYFy7gQAAH1y7wQAAChoRlimAAAAPj4+ICMgRGluZ3VzCj4+PiBteV9kaW5ndXMgPSBkaW5ndXMuRGluZ3VzKCkKPj4+IG15X2Rpbmd1cy5zb21lX21ldGhvZCA9IGRpbmd1cy5leGNlcHRpb25fcmFpc2VyKFNvbWVFeGNlcHRpb24pCj4+PiBhc3NlcnRSYWlzZXMoU29tZUV4Y2VwdGlvbiwgbXlfZGluZ3VzLnNvbWVfbWV0aG9kKXLwBAAAaEdquQQAAGhIaEtoTWqVAwAAaE99cvEEAAAoaHZod2hXXXLyBAAAaFVdcvMEAABoUV1y9AQAAGhTXXL1BAAAaFldcvYEAAB1aFtNTgFoXGgCaEFdcvcEAABoalimAAAAPj4+ICMgRGluZ3VzCj4+PiBteV9kaW5ndXMgPSBkaW5ndXMuRGluZ3VzKCkKPj4+IG15X2Rpbmd1cy5zb21lX21ldGhvZCA9IGRpbmd1cy5leGNlcHRpb25fcmFpc2VyKFNvbWVFeGNlcHRpb24pCj4+PiBhc3NlcnRSYWlzZXMoU29tZUV4Y2VwdGlvbiwgbXlfZGluZ3VzLnNvbWVfbWV0aG9kKXL4BAAAhYFy+QQAAH1y+gQAAChoRlUAaEdq7gQAAHViYXViapEDAAApgXL7BAAAfXL8BAAAKGhGWMcAAAA+Pj4gIyBmdWRnZQo+Pj4gbXlfZmFrZSA9IChmdWRnZS5GYWtlKCkKLi4uICAgICAgICAgICAgLmlzX2NhbGxhYmxlKCkKLi4uICAgICAgICAgICAgLnJhaXNlcyhTb21lRXhjZXB0aW9uKCJtZXNzYWdlIikpKQouLi4KPj4+IG15X2Zha2UoKQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci4uLgpTb21lRXhjZXB0aW9uOiBtZXNzYWdlcv0EAABoR2q5BAAAaEhoS2hNapUDAABoT31y/gQAAChodmh3aFddcv8EAABoVV1yAAUAAGhRXXIBBQAAaFNdcgIFAABoWV1yAwUAAHVoW01VAWhcaAJoQV1yBAUAAGhqWMcAAAA+Pj4gIyBmdWRnZQo+Pj4gbXlfZmFrZSA9IChmdWRnZS5GYWtlKCkKLi4uICAgICAgICAgICAgLmlzX2NhbGxhYmxlKCkKLi4uICAgICAgICAgICAgLnJhaXNlcyhTb21lRXhjZXB0aW9uKCJtZXNzYWdlIikpKQouLi4KPj4+IG15X2Zha2UoKQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci4uLgpTb21lRXhjZXB0aW9uOiBtZXNzYWdlcgUFAACFgXIGBQAAfXIHBQAAKGhGVQBoR2r7BAAAdWJhdWJldWJoQymBcggFAAB9cgkFAAAoaEZVAGhHaERoSGhLaE1oTmhPfXIKBQAAKGhRXXILBQAAaFNdcgwFAABoVV1yDQUAAGhXXXIOBQAAaC1haFldcg8FAABoC2F1aFtNYQFoXGgCaEFdchAFAAAoaF4pgXIRBQAAfXISBQAAKGhGWCEAAABPdmVycmlkZSBuZXcgaW5zdGFuY2VzIG9mIGEgY2xhc3NyEwUAAGhHaggFAABoSGhLaE1oYmhPfXIUBQAAKGhRXXIVBQAAaFNdchYFAABoVV1yFwUAAGhXXXIYBQAAaFldchkFAAB1aFtNYQFoXGgCaEFdchoFAABoalghAAAAT3ZlcnJpZGUgbmV3IGluc3RhbmNlcyBvZiBhIGNsYXNzchsFAACFgXIcBQAAfXIdBQAAKGhGahMFAABoR2oRBQAAdWJhdWJqkQMAACmBch4FAAB9ch8FAAAoaEZYugAAAD4+PiAjIG1vY2sKPj4+IHdpdGggbW9jay5wYXRjaCgnc29tZW1vZHVsZS5Tb21lY2xhc3MnKSBhcyBNb2NrQ2xhc3M6Ci4uLiAgICAgTW9ja0NsYXNzLnJldHVybl92YWx1ZSA9IHNvbWVfb3RoZXJfb2JqZWN0Ci4uLiAgICAgYXNzZXJ0RXF1YWwoc29tZV9vdGhlcl9vYmplY3QsIHNvbWVtb2R1bGUuU29tZWNsYXNzKCkpCi4uLnIgBQAAaEdqCAUAAGhIaEtoTWqVAwAAaE99ciEFAAAoVQx0ZXN0bm9kZXR5cGVyIgUAAFgHAAAAZG9jdGVzdHIjBQAAaHZod2hXXXIkBQAAaFVdciUFAABoUV1yJgUAAGhTXXInBQAAaFldcigFAABVBmdyb3Vwc3IpBQAAXXIqBQAAaH9haIB9cisFAAB1aFtNYwFoXGgCaEFdciwFAABoali6AAAAPj4+ICMgbW9jawo+Pj4gd2l0aCBtb2NrLnBhdGNoKCdzb21lbW9kdWxlLlNvbWVjbGFzcycpIGFzIE1vY2tDbGFzczoKLi4uICAgICBNb2NrQ2xhc3MucmV0dXJuX3ZhbHVlID0gc29tZV9vdGhlcl9vYmplY3QKLi4uICAgICBhc3NlcnRFcXVhbChzb21lX290aGVyX29iamVjdCwgc29tZW1vZHVsZS5Tb21lY2xhc3MoKSkKLi4uci0FAACFgXIuBQAAfXIvBQAAKGhGVQBoR2oeBQAAdWJhdWJqkQMAACmBcjAFAAB9cjEFAAAoaEZYHwIAACMgRmxleG1vY2sKZmxleG1vY2soc29tZV9tb2R1bGUuU29tZUNsYXNzLCBuZXdfaW5zdGFuY2VzPXNvbWVfb3RoZXJfb2JqZWN0KQphc3NlcnRFcXVhbChzb21lX290aGVyX29iamVjdCwgc29tZV9tb2R1bGUuU29tZUNsYXNzKCkpCgojIE1veAojICh5b3Ugd2lsbCBwcm9iYWJseSBoYXZlIG1veC5Nb3goKSBhdmFpbGFibGUgYXMgc2VsZi5tb3ggaW4gYSByZWFsIHRlc3QpCm1veC5Nb3goKS5TdHViT3V0V2l0aE1vY2soc29tZV9tb2R1bGUsICdTb21lQ2xhc3MnLCB1c2VfbW9ja19hbnl0aGluZz1UcnVlKQpzb21lX21vZHVsZS5Tb21lQ2xhc3MoKS5BbmRSZXR1cm4oc29tZV9vdGhlcl9vYmplY3QpCm1veC5SZXBsYXlBbGwoKQphc3NlcnRFcXVhbChzb21lX290aGVyX29iamVjdCwgc29tZV9tb2R1bGUuU29tZUNsYXNzKCkpCgojIE1vY2tlcgppbnN0YW5jZSA9IG1vY2tlci5tb2NrKCkKa2xhc3MgPSBtb2NrZXIucmVwbGFjZShTb21lQ2xhc3MsIHNwZWM9Tm9uZSkKa2xhc3MoJ2V4cGVjdGVkJywgJ2FyZ3MnKQptb2NrZXIucmVzdWx0KGluc3RhbmNlKXIyBQAAaEdqCAUAAGhIaEtoTWqVAwAAaE99cjMFAAAoaHZod2hXXXI0BQAAaFVdcjUFAABoUV1yNgUAAGhTXXI3BQAAaFldcjgFAAB1aFtNbgFoXGgCaEFdcjkFAABoalgfAgAAIyBGbGV4bW9jawpmbGV4bW9jayhzb21lX21vZHVsZS5Tb21lQ2xhc3MsIG5ld19pbnN0YW5jZXM9c29tZV9vdGhlcl9vYmplY3QpCmFzc2VydEVxdWFsKHNvbWVfb3RoZXJfb2JqZWN0LCBzb21lX21vZHVsZS5Tb21lQ2xhc3MoKSkKCiMgTW94CiMgKHlvdSB3aWxsIHByb2JhYmx5IGhhdmUgbW94Lk1veCgpIGF2YWlsYWJsZSBhcyBzZWxmLm1veCBpbiBhIHJlYWwgdGVzdCkKbW94Lk1veCgpLlN0dWJPdXRXaXRoTW9jayhzb21lX21vZHVsZSwgJ1NvbWVDbGFzcycsIHVzZV9tb2NrX2FueXRoaW5nPVRydWUpCnNvbWVfbW9kdWxlLlNvbWVDbGFzcygpLkFuZFJldHVybihzb21lX290aGVyX29iamVjdCkKbW94LlJlcGxheUFsbCgpCmFzc2VydEVxdWFsKHNvbWVfb3RoZXJfb2JqZWN0LCBzb21lX21vZHVsZS5Tb21lQ2xhc3MoKSkKCiMgTW9ja2VyCmluc3RhbmNlID0gbW9ja2VyLm1vY2soKQprbGFzcyA9IG1vY2tlci5yZXBsYWNlKFNvbWVDbGFzcywgc3BlYz1Ob25lKQprbGFzcygnZXhwZWN0ZWQnLCAnYXJncycpCm1vY2tlci5yZXN1bHQoaW5zdGFuY2UpcjoFAACFgXI7BQAAfXI8BQAAKGhGVQBoR2owBQAAdWJhdWJqkQMAACmBcj0FAAB9cj4FAAAoaEZYxwAAAD4+PiAjIERpbmd1cwo+Pj4gTW9ja0NsYXNzID0gZGluZ3VzLkRpbmd1cyhyZXR1cm5fdmFsdWU9c29tZV9vdGhlcl9vYmplY3QpCj4+PiB3aXRoIGRpbmd1cy5wYXRjaCgnc29tZW1vZHVsZS5Tb21lQ2xhc3MnLCBNb2NrQ2xhc3MpOgouLi4gICAgIGFzc2VydEVxdWFsKHNvbWVfb3RoZXJfb2JqZWN0LCBzb21lbW9kdWxlLlNvbWVDbGFzcygpKQouLi5yPwUAAGhHaggFAABoSGhLaE1qlQMAAGhPfXJABQAAKGh2aHdoV11yQQUAAGhVXXJCBQAAaFFdckMFAABoU11yRAUAAGhZXXJFBQAAdWhbTYEBaFxoAmhBXXJGBQAAaGpYxwAAAD4+PiAjIERpbmd1cwo+Pj4gTW9ja0NsYXNzID0gZGluZ3VzLkRpbmd1cyhyZXR1cm5fdmFsdWU9c29tZV9vdGhlcl9vYmplY3QpCj4+PiB3aXRoIGRpbmd1cy5wYXRjaCgnc29tZW1vZHVsZS5Tb21lQ2xhc3MnLCBNb2NrQ2xhc3MpOgouLi4gICAgIGFzc2VydEVxdWFsKHNvbWVfb3RoZXJfb2JqZWN0LCBzb21lbW9kdWxlLlNvbWVDbGFzcygpKQouLi5yRwUAAIWBckgFAAB9ckkFAAAoaEZVAGhHaj0FAAB1YmF1YmqRAwAAKYFySgUAAH1ySwUAAChoRljWAAAAPj4+ICMgZnVkZ2UKPj4+IEBmdWRnZS5wYXRjaCgnc29tZW1vZHVsZS5Tb21lQ2xhc3MnKQouLi4gZGVmIHRlc3QoRmFrZUNsYXNzKToKLi4uICAgICBGYWtlQ2xhc3MuaXNfY2FsbGFibGUoKS5yZXR1cm5zKHNvbWVfb3RoZXJfb2JqZWN0KQouLi4gICAgIGFzc2VydEVx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ZSB2YXJpb3VzIGRpZmZlcmVudCB3YXlzIG9mIG1ha2luZyBhc3NlcnRpb25zIGFib3V0CmhvdyB0aGUgbW9jayB3YXMgdXNlZC5y1gUAAIWBctcFAAB9ctgFAAAoaEZYUQAAACBwcm92aWRlIHZhcmlvdXMgZGlmZmVyZW50IHdheXMgb2YgbWFraW5nIGFzc2VydGlvbnMgYWJvdXQKaG93IHRoZSBtb2NrIHdhcyB1c2VkLnLZBQAAaEdqdwUAAHViZXViYXViapEDAAApgXLaBQAAfXLbBQAAKGhGWNsAAAA+Pj4gIyBtb2NrCj4+PiBteV9tb2NrID0gbW9jay5Nb2NrKCkKPj4+IG15X21vY2suc29tZV9tZXRob2QoKQo8TW9jayBuYW1lPSdtb2NrLnNvbWVfbWV0aG9kKCknIGlkPScuLi4nPgo+Pj4gbXlfbW9jay5zb21lX21ldGhvZCgpCjxNb2NrIG5hbWU9J21vY2suc29tZV9tZXRob2QoKScgaWQ9Jy4uLic+Cj4+PiBhc3NlcnQgbXlfbW9jay5zb21lX21ldGhvZC5jYWxsX2NvdW50ID49IDJy3AUAAGhHalcFAABoSGhLaE1qlQMAAGhPfXLdBQAAKFUMdGVzdG5vZGV0eXBlct4FAABYBwAAAGRvY3Rlc3Ry3wUAAGh2aHdoV11y4AUAAGhVXXLhBQAAaFFdcuIFAABoU11y4wUAAGhZXXLkBQAAVQZncm91cHNy5QUAAF1y5gUAAGh/YWiAfXLnBQAAdWhbTZwBaFxoAmhBXXLoBQAAaGpY2wAAAD4+PiAjIG1vY2sKPj4+IG15X21vY2sgPSBtb2NrLk1vY2soKQo+Pj4gbXlfbW9jay5zb21lX21ldGhvZCgpCjxNb2NrIG5hbWU9J21vY2suc29tZV9tZXRob2QoKScgaWQ9Jy4uLic+Cj4+PiBteV9tb2NrLnNvbWVfbWV0aG9kKCkKPE1vY2sgbmFtZT0nbW9jay5zb21lX21ldGhvZCgpJyBpZD0nLi4uJz4KPj4+IGFzc2VydCBteV9tb2NrLnNvbWVfbWV0aG9kLmNhbGxfY291bnQgPj0gMnLpBQAAhYFy6gUAAH1y6wUAAChoRlUAaEdq2gUAAHViYXViapEDAAApgXLsBQAAfXLtBQAAKGhGWLIBAAAjIEZsZXhtb2NrICMgKHZlcmlmaWVzIHRoYXQgdGhlIG1ldGhvZCBnZXRzIGNhbGxlZCBhdCBsZWFzdCB0d2ljZSkKZmxleG1vY2soc29tZV9vYmplY3QpLnNob3VsZF9yZWNlaXZlKCdzb21lX21ldGhvZCcpLmF0X2xlYXN0LnR3aWNlCgojIE1veAojIChkb2VzIG5vdCBzdXBwb3J0IHZhcmlhYmxlIG51bWJlciBvZiBjYWxscywgc28geW91IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGVudHJ5IGZvciBlYWNoIGV4cGxpY2l0IGNhbGwpCm1vY2sgPSBtb3guTW9ja09iamVjdChzb21lX29iamVjdCkKbW9jay5zb21lX21ldGhvZChtb3guSWdub3JlQXJnKCksIG1veC5JZ25vcmVBcmcoKSkKbW9jay5zb21lX21ldGhvZChtb3guSWdub3JlQXJnKCksIG1veC5JZ25vcmVBcmcoKSkKbW94LlJlcGxheShtb2NrKQptb3guVmVyaWZ5KG1vY2spCgojIE1vY2tlcgojIChUT0RPKXLuBQAAaEdqVwUAAGhIaEtoTWqVAwAAaE99cu8FAAAoaHZod2hXXXLwBQAAaFVdcvEFAABoUV1y8gUAAGhTXXLzBQAAaFldcvQFAAB1aFtNqAFoXGgCaEFdcvUFAABoaliyAQAAIyBGbGV4bW9jayAjICh2ZXJpZmllcyB0aGF0IHRoZSBtZXRob2QgZ2V0cyBjYWxsZWQgYXQgbGVhc3QgdHdpY2UpCmZsZXhtb2NrKHNvbWVfb2JqZWN0KS5zaG91bGRfcmVjZWl2ZSgnc29tZV9tZXRob2QnKS5hdF9sZWFzdC50d2ljZQoKIyBNb3gKIyAoZG9lcyBub3Qgc3VwcG9ydCB2YXJpYWJsZSBudW1iZXIgb2YgY2FsbHMsIHNvIHlvdSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBlbnRyeSBmb3IgZWFjaCBleHBsaWNpdCBjYWxsKQptb2NrID0gbW94Lk1vY2tPYmplY3Qoc29tZV9vYmplY3QpCm1vY2suc29tZV9tZXRob2QobW94Lklnbm9yZUFyZygpLCBtb3guSWdub3JlQXJnKCkpCm1vY2suc29tZV9tZXRob2QobW94Lklnbm9yZUFyZygpLCBtb3guSWdub3JlQXJnKCkpCm1veC5SZXBsYXkobW9jaykKbW94LlZlcmlmeShtb2NrKQoKIyBNb2NrZXIKIyAoVE9ETyly9gUAAIWBcvcFAAB9cvgFAAAoaEZVAGhHauwFAAB1YmF1YmqRAwAAKYFy+QUAAH1y+gUAAChoRliyAAAAPj4+ICMgRGluZ3VzCj4+PiBteV9kaW5ndXMgPSBkaW5ndXMuRGluZ3VzKCkKPj4+IG15X2Rpbmd1cy5zb21lX21ldGhvZCgpCjxEaW5ndXMgLi4uPgo+Pj4gbXlfZGluZ3VzLnNvbWVfbWV0aG9kKCkKPERpbmd1cyAuLi4+Cj4+PiBhc3NlcnQgbGVuKG15X2Rpbmd1cy5jYWxscygnc29tZV9tZXRob2QnKSkgPT0gMnL7BQAAaEdqVwUAAGhIaEtoTWqVAwAAaE99cvwFAAAoaHZod2hXXXL9BQAAaFVdcv4FAABoUV1y/wUAAGhTXXIABgAAaFldcgEGAAB1aFtNuAFoXGgCaEFdcgIGAABoaliyAAAAPj4+ICMgRGluZ3VzCj4+PiBteV9kaW5ndXMgPSBkaW5ndXMuRGluZ3VzKCkKPj4+IG15X2Rpbmd1cy5zb21lX21ldGhvZCgpCjxEaW5ndXMgLi4uPgo+Pj4gbXlfZGluZ3VzLnNvbWVfbWV0aG9kKCkKPERpbmd1cyAuLi4+Cj4+PiBhc3NlcnQgbGVuKG15X2Rpbmd1cy5jYWxscygnc29tZV9tZXRob2QnKSkgPT0gMnIDBgAAhYFyBAYAAH1yBQYAAChoRlUAaEdq+QUAAHViYXViapEDAAApgXIGBgAAfXIHBgAAKGhGWBIBAAA+Pj4gIyBmdWRnZQo+Pj4gQGZ1ZGdlLnRlc3QKLi4uIGRlZiB0ZXN0KCk6Ci4uLiAgICAgbXlfZmFrZSA9IGZ1ZGdlLkZha2UoKS5leHBlY3RzKCdzb21lX21ldGhvZCcpLnRpbWVzX2NhbGxlZCgyKQouLi4gICAgIG15X2Zha2Uuc29tZV9tZXRob2QoKQouLi4KPj4+IHRlc3QoKQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci4uLgpBc3NlcnRpb25FcnJvcjogZmFrZTpteV9mYWtlLnNvbWVfbWV0aG9kKCkgd2FzIGNhbGxlZCAxIHRpbWUocykuIEV4cGVjdGVkIDIucggGAABoR2pXBQAAaEhoS2hNapUDAABoT31yCQYAAChodmh3aFddcgoGAABoVV1yCwYAAGhRXXIMBgAAaFNdcg0GAABoWV1yDgYAAHVoW03CAWhcaAJoQV1yDwYAAGhqWBIBAAA+Pj4gIyBmdWRnZQo+Pj4gQGZ1ZGdlLnRlc3QKLi4uIGRlZiB0ZXN0KCk6Ci4uLiAgICAgbXlfZmFrZSA9IGZ1ZGdlLkZha2UoKS5leHBlY3RzKCdzb21lX21ldGhvZCcpLnRpbWVzX2NhbGxlZCgyKQouLi4gICAgIG15X2Zha2Uuc29tZV9tZXRob2QoKQouLi4KPj4+IHRlc3QoKQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci4uLgpBc3NlcnRpb25FcnJvcjogZmFrZTpteV9mYWtlLnNvbWVfbWV0aG9kKCkgd2FzIGNhbGxlZCAxIHRpbWUocykuIEV4cGVjdGVkIDIuchAGAACFgXIRBgAAfXISBgAAKGhGVQBoR2oGBgAAdWJhdWJldWJoQymBchMGAAB9chQGAAAoaEZVAGhHaERoSGhLaE1oTmhPfXIVBgAAKGhRXXIWBgAAaFNdchcGAABoVV1yGAYAAGhXXXIZBgAAaDJhaFldchoGAABoEGF1aFtNzwFoXGgCaEFdchsGAAAoaF4pgXIcBgAAfXIdBgAAKGhGWBQAAABNb2NrIGNoYWluZWQgbWV0aG9kc3IeBgAAaEdqEwYAAGhIaEtoTWhiaE99ch8GAAAoaFFdciAGAABoU11yIQYAAGhVXXIiBgAAaFddciMGAABoWV1yJAYAAHVoW03PAWhcaAJoQV1yJQYAAGhqWBQAAABNb2NrIGNoYWluZWQgbWV0aG9kc3ImBgAAhYFyJwYAAH1yKAYAAChoRmoeBgAAaEdqHAYAAHViYXViapEDAAApgXIpBgAAfXIqBgAAKGhGWAcBAAA+Pj4gIyBtb2NrCj4+PiBteV9tb2NrID0gbW9jay5Nb2NrKCkKPj4+IG1ldGhvZDMgPSBteV9tb2NrLm1ldGhvZDEucmV0dXJuX3ZhbHVlLm1ldGhvZDIucmV0dXJuX3ZhbHVlLm1ldGhvZDMKPj4+IG1ldGhvZDMucmV0dXJuX3ZhbHVlID0gJ3NvbWUgdmFsdWUnCj4+PiBhc3NlcnRFcXVhbCgnc29tZSB2YWx1ZScsIG15X21vY2subWV0aG9kMSgpLm1ldGhvZDIoKS5tZXRob2QzKDEsIDIpKQo+Pj4gbWV0aG9kMy5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyKXIrBgAAaEdqEwYAAGhIaEtoTWqVAwAAaE99ciwGAAAoVQx0ZXN0bm9kZXR5cGVyLQYAAFgHAAAAZG9jdGVzdHIuBgAAaHZod2hXXXIvBgAAaFVdcjAGAABoUV1yMQYAAGhTXXIyBgAAaFldcjMGAABVBmdyb3Vwc3I0BgAAXXI1BgAAaH9haIB9cjYGAAB1aFtN0QFoXGgCaEFdcjcGAABoalgHAQAAPj4+ICMgbW9jawo+Pj4gbXlfbW9jayA9IG1vY2suTW9jaygpCj4+PiBtZXRob2QzID0gbXlfbW9jay5tZXRob2QxLnJldHVybl92YWx1ZS5tZXRob2QyLnJldHVybl92YWx1ZS5tZXRob2QzCj4+PiBtZXRob2QzLnJldHVybl92YWx1ZSA9ICdzb21lIHZhbHVlJwo+Pj4gYXNzZXJ0RXF1YWwoJ3NvbWUgdmFsdWUnLCBteV9tb2NrLm1ldGhvZDEoKS5tZXRob2QyKCkubWV0aG9kMygxLCAyKSkKPj4+IG1ldGhvZDMuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMilyOAYAAIWBcjkGAAB9cjoGAAAoaEZVAGhHaikGAAB1YmF1YmqRAwAAKYFyOwYAAH1yPAYAAChoRlhIAQAAIyBGbGV4bW9jawojIChpbnRlcm1lZGlhdGUgbWV0aG9kIGNhbGxzIGFyZSBhdXRvbWF0aWNhbGx5IGFzc2lnbmVkIHRvIHRlbXBvcmFyeSBmYWtlIG9iamVjdHMKIyBhbmQgY2FuIGJlIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMpCmZsZXhtb2NrKHNvbWVfb2JqZWN0KS5zaG91bGRfcmVjZWl2ZSgKICAgICdtZXRob2QxLm1ldGhvZDIubWV0aG9kMycKKS53aXRoX2FyZ3MoYXJnMSwgYXJnMikuYW5kX3JldHVybignc29tZSB2YWx1ZScpCmFzc2VydEVxdWFsKCdzb21lX3ZhbHVlJywgc29tZV9vYmplY3QubWV0aG9kMSgpLm1ldGhvZDIoKS5tZXRob2QzKGFyZzEsIGFyZzIpKXI9BgAAaEdqEwYAAGhIaEtoTWqVAwAAaE99cj4GAAAoaHZod2hXXXI/BgAAaFVdckAGAABoUV1yQQYAAGhTXXJCBgAAaFldckMGAAB1aFtN3AFoXGgCaEFdckQGAABoalhIAQAAIyBGbGV4bW9jawojIChpbnRlcm1lZGlhdGUgbWV0aG9kIGNhbGxzIGFyZSBhdXRvbWF0aWNhbGx5IGFzc2lnbmVkIHRvIHRlbXBvcmFyeSBmYWtlIG9iamVjdHMKIyBhbmQgY2FuIGJlIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMpCmZsZXhtb2NrKHNvbWVfb2JqZWN0KS5zaG91bGRfcmVjZWl2ZSgKICAgICdtZXRob2QxLm1ldGhvZDIubWV0aG9kMycKKS53aXRoX2FyZ3MoYXJnMSwgYXJnMikuYW5kX3JldHVybignc29tZSB2YWx1ZScpCmFzc2VydEVxdWFsKCdzb21lX3ZhbHVlJywgc29tZV9vYmplY3QubWV0aG9kMSgpLm1ldGhvZDIoKS5tZXRob2QzKGFyZzEsIGFyZzIpKXJFBgAAhYFyRgYAAH1yRwYAAChoRlUAaEdqOwYAAHViYXViapEDAAApgXJIBgAAfXJJBgAAKGhGWF0BAAAjIE1veAptb2NrID0gbW94Lk1vY2tPYmplY3Qoc29tZV9vYmplY3QpCm1vY2syID0gbW94Lk1vY2tBbnl0aGluZygpCm1vY2szID0gbW94Lk1vY2tBbnl0aGluZygpCm1vY2subWV0aG9kMSgpLkFuZFJldHVybihtb2NrMSkKbW9jazIubWV0aG9kMigpLkFuZFJldHVybihtb2NrMikKbW9jazMubWV0aG9kMyhhcmcxLCBhcmcyKS5BbmRSZXR1cm4oJ3NvbWVfdmFsdWUnKQpzZWxmLm1veC5SZXBsYXlBbGwoKQphc3NlcnRFcXVhbCgic29tZV92YWx1ZSIsIHNvbWVfb2JqZWN0Lm1ldGhvZDEoKS5tZXRob2QyKCkubWV0aG9kMyhhcmcxLCBhcmcyKSkKc2VsZi5tb3guVmVyaWZ5QWxsKCkKCiMgTW9ja2VyCiMgKFRPRE8pckoGAABoR2oTBgAAaEhoS2hNapUDAABoT31ySwYAAChodmh3aFddckwGAABoVV1yTQYAAGhRXXJOBgAAaFNdck8GAABoWV1yUAYAAHVoW03mAWhcaAJoQV1yUQYAAGhqWF0BAAAjIE1veAptb2NrID0gbW94Lk1vY2tPYmplY3Qoc29tZV9vYmplY3QpCm1vY2syID0gbW94Lk1vY2tBbnl0aGluZygpCm1vY2szID0gbW94Lk1vY2tBbnl0aGluZygpCm1vY2subWV0aG9kMSgpLkFuZFJldHVybihtb2NrMSkKbW9jazIubWV0aG9kMigpLkFuZFJldHVybihtb2NrMikKbW9jazMubWV0aG9kMyhhcmcxLCBhcmcyKS5BbmRSZXR1cm4oJ3NvbWVfdmFsdWUnKQpzZWxmLm1veC5SZXBsYXlBbGwoKQphc3NlcnRFcXVhbCgic29tZV92YWx1ZSIsIHNvbWVfb2JqZWN0Lm1ldGhvZDEoKS5tZXRob2QyKCkubWV0aG9kMyhhcmcxLCBhcmcyKSkKc2VsZi5tb3guVmVyaWZ5QWxsKCkKCiMgTW9ja2VyCiMgKFRPRE8pclIGAACFgXJTBgAAfXJUBgAAKGhGVQBoR2pIBgAAdWJhdWJqkQMAACmBclUGAAB9clYGAAAoaEZYFQEAAD4+PiAjIERpbmd1cwo+Pj4gbXlfZGluZ3VzID0gZGluZ3VzLkRpbmd1cygpCj4+PiBtZXRob2QzID0gbXlfZGluZ3VzLm1ldGhvZDEucmV0dXJuX3ZhbHVlLm1ldGhvZDIucmV0dXJuX3ZhbHVlLm1ldGhvZDMKPj4+IG1ldGhvZDMucmV0dXJuX3ZhbHVlID0gJ3NvbWUgdmFsdWUnCj4+PiBhc3NlcnRFcXVhbCgnc29tZSB2YWx1ZScsIG15X2Rpbmd1cy5tZXRob2QxKCkubWV0aG9kMigpLm1ldGhvZDMoMSwgMikpCj4+PiBhc3NlcnQgbWV0aG9kMy5jYWxscygnKCknLCAxLCAyKS5vbmNlKClyVwYAAGhHahMGAABoSGhLaE1qlQMAAGhPfXJYBgAAKGh2aHdoV11yWQYAAGhVXXJaBgAAaFFdclsGAABoU11yXAYAAGhZXXJdBgAAdWhbTfYBaFxoAmhBXXJeBgAAaGpYFQEAAD4+PiAjIERpbmd1cwo+Pj4gbXlfZGluZ3VzID0gZGluZ3Vz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Y2sKPj4+IG15X21vY2sgPSBtb2NrLk1hZ2ljTW9jaygpCj4+PiB3aXRoIG15X21vY2s6Ci4uLiAgICAgcGFzcwouLi4KPj4+IG15X21vY2suX19lbnRlcl9fLmFzc2VydF9jYWxsZWRfd2l0aCgpCj4+PiBteV9tb2NrLl9fZXhpdF9fLmFzc2VydF9jYWxsZWRfd2l0aChOb25lLCBOb25lLCBOb25lKXKUBgAAaEdqbwYAAGhIaEtoTWqVAwAAaE99cpUGAAAoVQx0ZXN0bm9kZXR5cGVylgYAAFgHAAAAZG9jdGVzdHKXBgAAaHZod2hXXXKYBgAAaFVdcpkGAABoUV1ymgYAAGhTXXKbBgAAaFldcpwGAABVBmdyb3Vwc3KdBgAAXXKeBgAAaH9haIB9cp8GAAB1aFtNFQJoXGgCaEFdcqAGAABoalixAAAAPj4+ICMgbW9jawo+Pj4gbXlfbW9jayA9IG1vY2suTWFnaWNNb2NrKCkKPj4+IHdpdGggbXlfbW9jazoKLi4uICAgICBwYXNzCi4uLgo+Pj4gbXlfbW9jay5fX2VudGVyX18uYXNzZXJ0X2NhbGxlZF93aXRoKCkKPj4+IG15X21vY2suX19leGl0X18uYXNzZXJ0X2NhbGxlZF93aXRoKE5vbmUsIE5vbmUsIE5vbmUpcqEGAACFgXKiBgAAfXKjBgAAKGhGVQBoR2qSBgAAdWJhdWJqkQMAACmBcqQGAAB9cqUGAAAoaEZY6wAAAD4+PiAjIERpbmd1cyAobm90aGluZyBzcGVjaWFsIGhlcmU7IGFsbCBkaW5ndXNlcyBhcmUgIm1hZ2ljIG1vY2tzIikKPj4+IG15X2Rpbmd1cyA9IGRpbmd1cy5EaW5ndXMoKQo+Pj4gd2l0aCBteV9kaW5ndXM6Ci4uLiAgICAgcGFzcwouLi4KPj4+IGFzc2VydCBteV9kaW5ndXMuX19lbnRlcl9fLmNhbGxzKCkKPj4+IGFzc2VydCBteV9kaW5ndXMuX19leGl0X18uY2FsbHMoJygpJywgTm9uZSwgTm9uZSwgTm9uZSlypgYAAGhHam8GAABoSGhLaE1qlQMAAGhPfXKnBgAAKGh2aHdoV11yqAYAAGhVXXKpBgAAaFFdcqoGAABoU11yqwYAAGhZXXKsBgAAdWhbTSICaFxoAmhBXXKt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YScKLi4uICAgICB3aXRoIG9wZW4oJ2ZvbycpIGFzIGg6Ci4uLiAgICAgICAgIGRhdGEgPSBoLnJlYWQoKQouLi4KPj4+IGRhdGEKJ3NvbWUgZGF0YScKPj4+IG15X21vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2Zvbycpcg4HAABoR2q+BgAAaEhoS2hNapUDAABoT31yDwcAAChVDHRlc3Rub2RldHlwZXIQBwAAWAcAAABkb2N0ZXN0chEHAABodmh3aFddchIHAABoVV1yEwcAAGhRXXIUBwAAaFNdchUHAABoWV1yFgcAAFUGZ3JvdXBzchcHAABdchgHAABof2FogH1yGQcAAHVoW01IAmhcaAJoQV1yGgcAAGhqWGMBAAA+Pj4gIyBtb2NrCj4+PiB3aXRoIG1vY2sucGF0Y2goJ19fYnVpbHRpbl9fLm9wZW4nKSBhcyBteV9tb2NrOgouLi4gICAgIG15X21vY2sucmV0dXJuX3ZhbHVlLl9fZW50ZXJfXyA9IGxhbWJkYSBzOiBzCi4uLiAgICAgbXlfbW9jay5yZXR1cm5fdmFsdWUuX19leGl0X18gPSBtb2NrLk1vY2soKQouLi4gICAgIG15X21vY2sucmV0dXJuX3ZhbHVlLnJlYWQucmV0dXJuX3ZhbHVlID0gJ3NvbWUgZGF0YScKLi4uICAgICB3aXRoIG9wZW4oJ2ZvbycpIGFzIGg6Ci4uLiAgICAgICAgIGRhdGEgPSBoLnJlYWQoKQouLi4KPj4+IGRhdGEKJ3NvbWUgZGF0YScKPj4+IG15X21vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycpchsHAACFgXIcBwAAfXIdBwAAKGhGVQBoR2oMBwAAdWJhdWJqkQMAACmBch4HAAB9ch8HAAAoaEZYTAEAAD4+PiAjIERpbmd1cwo+Pj4gbXlfZGluZ3VzID0gZGluZ3VzLkRpbmd1cygpCj4+PiB3aXRoIGRpbmd1cy5wYXRjaCgnX19idWlsdGluX18ub3BlbicsIG15X2Rpbmd1cyk6Ci4uLiAgICAgZmlsZV8gPSBvcGVuLnJldHVybl92YWx1ZS5fX2VudGVyX18ucmV0dXJuX3ZhbHVlCi4uLiAgICAgZmlsZV8ucmVhZC5yZXR1cm5fdmFsdWUgPSAnc29tZSBkYXRhJwouLi4gICAgIHdpdGggb3BlbignZm9vJykgYXMgaDoKLi4uICAgICAgICAgZGF0YSA9IGYucmVhZCgpCi4uLgo+Pj4gZGF0YQonc29tZSBkYXRhJwo+Pj4gYXNzZXJ0IG15X2Rpbmd1cy5jYWxscygnKCknLCAnZm9vJykub25jZSgpciAHAABoR2q+BgAAaEhoS2hNapUDAABoT31yIQcAAChodmh3aFddciIHAABoVV1yIwcAAGhRXXIkBwAAaFNdciUHAABoWV1yJgcAAHVoW01YAmhcaAJoQV1yJwcAAGhqWEwBAAA+Pj4gIyBEaW5ndXMKPj4+IG15X2Rpbmd1cyA9IGRpbmd1cy5EaW5ndXMoKQo+Pj4gd2l0aCBkaW5ndXMucGF0Y2goJ19fYnVpbHRpbl9fLm9wZW4nLCBteV9kaW5ndXMpOgouLi4gICAgIGZpbGVfID0gb3Blbi5yZXR1cm5fdmFsdWUuX19lbnRlcl9fLnJldHVybl92YWx1ZQouLi4gICAgIGZpbGVfLnJlYWQucmV0dXJuX3ZhbHVlID0gJ3NvbWUgZGF0YScKLi4uICAgICB3aXRoIG9wZW4oJ2ZvbycpIGFzIGg6Ci4uLiAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQouLi4KPj4+IGRhdGEKJ3NvbWUgZGF0YScKPj4+IGFzc2VydCBteV9kaW5ndXMuY2FsbHMoJygpJywgJ2ZvbycpLm9uY2UoKXIoBwAAhYFyKQcAAH1yKgcAAChoRlUAaEdqHgcAAHViYXViapEDAAApgXIrBwAAfXIsBwAAKGhGWIgBAAA+Pj4gIyBmdWRnZQo+Pj4gZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgo+Pj4gZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KPj4+IEBjb250ZXh0bWFuYWdlcgouLi4gZGVmIGZha2VfZmlsZShmaWxlbmFtZSk6Ci4uLiAgICAgeWllbGQgU3RyaW5nSU8oJ3Nla3JldHMnKQouLi4KPj4+IHdpdGggZnVkZ2UucGF0Y2goJ19fYnVpbHRpbl9fLm9wZW4nKSBhcyBmYWtlX29wZW46Ci4uLiAgICAgZmFrZV9vcGVuLmlzX2NhbGxhYmxlKCkuY2FsbHMoZmFrZV9maWxlKQouLi4gICAgIHdpdGggb3BlbignL2V0Yy9wYXNzd29yZCcpIGFzIGY6Ci4uLiAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQouLi4KZmFrZTpfX2J1aWx0aW5fXy5vcGVuCj4+PiBkYXRhCidzZWtyZXRzJ3ItBwAAaEdqvgYAAGhIaEtoTWqVAwAAaE99ci4HAAAoaHZod2hXXXIvBwAAaFVdcjAHAABoUV1yMQcAAGhTXXIyBwAAaFldcjMHAAB1aFtNZgJoXGgCaEFdcjQHAABoaliIAQAAPj4+ICMgZnVkZ2UKPj4+IGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKPj4+IGZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCj4+PiBAY29udGV4dG1hbmFnZXIKLi4uIGRlZiBmYWtlX2ZpbGUoZmlsZW5hbWUpOgouLi4gICAgIHlpZWxkIFN0cmluZ0lPKCdzZWtyZXRzJykKLi4uCj4+PiB3aXRoIGZ1ZGdlLnBhdGNoKCdfX2J1aWx0aW5fXy5vcGVuJykgYXMgZmFrZV9vcGVuOgouLi4gICAgIGZha2Vfb3Blbi5pc19jYWxsYWJsZSgpLmNhbGxzKGZha2VfZmlsZSkKLi4uICAgICB3aXRoIG9wZW4oJy9ldGMvcGFzc3dvcmQnKSBhcyBmOgouLi4gICAgICAgICBkYXRhID0gZi5yZWFkKCkKLi4uCmZha2U6X19idWlsdGluX18ub3Blbgo+Pj4gZGF0YQonc2VrcmV0cydyNQcAAIWBcjYHAAB9cjcHAAAoaEZVAGhHaisHAAB1YmF1YmV1YmV1YmFoRlUAVQt0cmFuc2Zvcm1lcnI4BwAATlUNZm9vdG5vdGVfcmVmc3I5BwAAfXI6BwAAVQhyZWZuYW1lc3I7BwAAfXI8BwAAVRBzeW1ib2xfZm9vdG5vdGVzcj0HAABdcj4HAABVEWF1dG9mb290bm90ZV9yZWZzcj8HAABdckAHAABVFHN5bWJvbF9mb290bm90ZV9yZWZzckEHAABdckIHAABVCWNpdGF0aW9uc3JDBwAAXXJEBwAAaFxoAlUMY3VycmVudF9saW5lckUHAABOVRJ0cmFuc2Zvcm1fbWVzc2FnZXNyRgcAAF1yRwcAAFUIcmVwb3J0ZXJySAcAAE5VCGlkX3N0YXJ0ckkHAABLAVUNYXV0b2Zvb3Rub3Rlc3JKBwAAXXJLBwAAVQ1jaXRhdGlvbl9yZWZzckwHAAB9ck0HAABVEGluZGlyZWN0X3RhcmdldHNyTgcAAF1yTwcAAFUIc2V0dGluZ3NyUAcAAChjZG9jdXRpbHMuZnJvbnRlbmQKVmFsdWVzCnJRBwAAb3JSBwAAfXJTBwAAKFUSZm9vdG5vdGVfYmFja2xpbmtzclQHAABLAVUTcmVjb3JkX2RlcGVuZGVuY2llc3JVBwAATlUMcmZjX2Jhc2VfdXJsclYHAABVG2h0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JXBwAAVQl0cmFjZWJhY2tyWAcAAIhVDnBlcF9yZWZlcmVuY2VzclkHAABOVQ5zdHJpcF9jb21tZW50c3JaBwAATlUNdG9jX2JhY2tsaW5rc3JbBwAAVQVlbnRyeXJcBwAAVQ1sYW5ndWFnZV9jb2Rlcl0HAABVAmVucl4HAABVCWRhdGVzdGFtcHJfBwAATlUMcmVwb3J0X2xldmVscmAHAABLAlUMX2Rlc3RpbmF0aW9ucmEHAABOVQpoYWx0X2xldmVscmIHAABLBVUNc3RyaXBfY2xhc3Nlc3JjBwAATmhiTlUcZXJyb3JfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcnJkBwAAVRBiYWNrc2xhc2hyZXBsYWNlcmUHAABVBWRlYnVncmYHAABOVRBlbWJlZF9zdHlsZXNoZWV0cmcHAACJVR1vdXRwdXRfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcnJoBwAAVQZzdHJpY3RyaQcAAFUNc2VjdG51bV94Zm9ybXJqBwAASwFVD2R1bXBfdHJhbnNmb3Jtc3JrBwAATlUNZG9jaW5mb194Zm9ybXJsBwAASwFVDndhcm5pbmdfc3RyZWFtcm0HAABOVRVwZXBfZmlsZV91cmxfdGVtcGxhdGVybgcAAFUIcGVwLSUwNGRybwcAAFURZXhpdF9zdGF0dXNfbGV2ZWxycAcAAEsFVQZjb25maWdycQcAAE5VDnN0cmljdF92aXNpdG9ycnIHAABOVRVjbG9ha19lbWFpbF9hZGRyZXNzZXNycwcAAIhVHXRyaW1fZm9vdG5vdGVfcmVmZXJlbmNlX3NwYWNlcnQHAACJVQNlbnZydQcAAE5VD2R1bXBfcHNldWRvX3htbHJ2BwAATlUQZXhwb3NlX2ludGVybmFsc3J3BwAATlUSc2VjdHN1YnRpdGxlX3hmb3JtcngHAACJVQtzb3VyY2VfbGlua3J5BwAATlUOcmZjX3JlZmVyZW5jZXNyegcAAE5VD291dHB1dF9lbmNvZGluZ3J7BwAAVQV1dGYtOHJ8BwAAVQpzb3VyY2VfdXJscn0HAABOVQ5pbnB1dF9lbmNvZGluZ3J+BwAAVQl1dGYtOC1zaWdyfwcAAFUPX2Rpc2FibGVfY29uZmlncoAHAABOVQlpZF9wcmVmaXhygQcAAFUAVQl0YWJfd2lkdGhyggcAAEsIVQ5lcnJvcl9lbmNvZGluZ3KDBwAAVQltYWMtcm9tYW5yhAcAAFUHX3NvdXJjZXKFBwAAVR4vY29tcGlsZS9tb2NrL2RvY3MvY29tcGFyZS50eHRyhgcAAFUPZ2V0dGV4dF9jb21wYWN0cocHAACIVQlnZW5lcmF0b3JyiAcAAE5VDmR1bXBfaW50ZXJuYWxzcokHAABOVQxwZXBfYmFzZV91cmxyigcAAFUfaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3KLBwAAVRBzeW50YXhfaGlnaGxpZ2h0cowHAABVBXNob3J0co0HAABVHGlucHV0X2VuY29kaW5nX2Vycm9yX2hhbmRsZXJyjgcAAGppBwAAVQ5hdXRvX2lkX3ByZWZpeHKPBwAAVQJpZHKQBwAAVQ5kb2N0aXRsZV94Zm9ybXKRBwAAiVUbc3RyaXBfZWxlbWVudHNfd2l0aF9jbGFzc2VzcpIHAABOVQ1fY29uZmlnX2ZpbGVzcpMHAABdcpQHAABVFmZpbGVfaW5zZXJ0aW9uX2VuYWJsZWRylQcAAEsBVQtyYXdfZW5hYmxlZHKWBwAASwFVDWR1bXBfc2V0dGluZ3NylwcAAE51YlUVc3ltYm9sX2Zvb3Rub3RlX3N0YXJ0cpgHAABLAFUDaWRzcpkHAAB9cpoHAAAoaD5qFAMAAGgsaswDAABoP2qMAgAAaDlqtwIAAGgtaggFAABoKGjWaC9qbwYAAGgqavUCAABoMGrdAQAAaEBoRGgzao0BAABoOmobBAAAaDRq/AEAAGg1agUBAABoMWq5BAAAaDdqtgEAAGgramoEAABoPGp7AwAAaClqVwUAAGg4ajIBAABoLmrWAgAAaDtqXwEAAGgyahMGAABoPWpQAgAAaDZqvgYAAHVVEnN1YnN0aXR1dGlvbl9uYW1lc3KbBwAAfXKcBwAAaE1oXGhPfXKdBwAAKGhRXXKeBwAAaFddcp8HAABoVV1yoAcAAFUGc291cmNlcqEHAABoS2hTXXKiBwAAaFldcqMHAAB1VQlmb290bm90ZXNypAcAAF1ypQcAAFUGcmVmaWRzcqYHAAB9cqcHAAB1Yi4=