@pi-outpost/embed 0.6.6 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/PdfViewer-B6wt_XU8.cjs +1 -0
- package/dist/PdfViewer-B7zZlWXk.js +299 -0
- package/dist/pdf-DyDm1M1B.js +16387 -0
- package/dist/pdf-aU0TN69t.cjs +54 -0
- package/dist/pi-outpost-embed.cjs +57 -57
- package/dist/pi-outpost-embed.js +6689 -4878
- package/dist/workspacePath-CZQ7Q2Vh.js +21 -0
- package/dist/workspacePath-xNhEENtk.cjs +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./workspacePath-xNhEENtk.cjs");let t=require("react"),n=require("react/jsx-runtime");var r=[.5,.75,1,1.25,1.5,2,3];function i(e){return e>=1024*1024?`${Math.round(e/(1024*1024))} MB`:`${Math.round(e/1024)} KB`}function a(e){switch(e.kind){case`too-large`:return e.limitBytes===void 0?`This PDF is larger than the server's PDF limit.`:`This PDF is larger than the ${i(e.limitBytes)} limit the server allows.`;case`encrypted`:return`This PDF is password-protected, so it cannot be displayed.`;case`not-found`:return`This file no longer exists.`;case`unauthorized`:return`This session is not authorized to read this file.`;case`unreadable`:return`This file could not be read as a PDF.`}}async function o(t,n,r){let i=await fetch(e.i(t,n,null),{headers:r?{Authorization:`Bearer ${r}`}:{}});if(!i.ok){if(i.status===413){let e=await i.json().catch(()=>({}));throw{kind:`too-large`,...typeof e.limit==`number`?{limitBytes:e.limit}:{}}}throw i.status===401||i.status===403?{kind:`unauthorized`}:i.status===404?{kind:`not-found`}:{kind:`unreadable`}}return new Uint8Array(await i.arrayBuffer())}async function s(e){let t=await Promise.resolve().then(()=>require("./pdf-aU0TN69t.cjs"));t.GlobalWorkerOptions.workerSrc=new URL(`data:text/javascript;base64,LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDI0IE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi8KLyoqCiAqIHBkZmpzVmVyc2lvbiA9IDYuMi4xMDgKICogcGRmanNCdWlsZCA9IDAzNjVjYmRlMAogKi8KY29uc3QgZT0hKCJvYmplY3QiIT10eXBlb2YgcHJvY2Vzc3x8cHJvY2VzcysiIiE9IltvYmplY3QgcHJvY2Vzc10ifHxwcm9jZXNzLnZlcnNpb25zLm53fHxwcm9jZXNzLnZlcnNpb25zLmVsZWN0cm9uJiZwcm9jZXNzLnR5cGUmJiJicm93c2VyIiE9PXByb2Nlc3MudHlwZSksdD1bMS8wLDEvMCwtMS8wLC0xLzBdLG49bmV3IEZsb2F0MzJBcnJheSh0KSxhPVsuMDAxLDAsMCwuMDAxLDAsMF0scz0uMzUvMS4zNSxyPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsaT0xLG89MixsPTQsZj04LGM9MTYsaD02NCx1PTEyOCxtPTI1NixwPSJwZGZqc19pbnRlcm5hbF9lZGl0b3JfIixkPTMsZz05LGI9MTMsdz0xNSxqPTEwMSxrPXtQUklOVDo0LE1PRElGWV9DT05URU5UUzo4LENPUFk6MTYsTU9ESUZZX0FOTk9UQVRJT05TOjMyLEZJTExfSU5URVJBQ1RJVkVfRk9STVM6MjU2LENPUFlfRk9SX0FDQ0VTU0lCSUxJVFk6NTEyLEFTU0VNQkxFOjEwMjQsUFJJTlRfSElHSF9RVUFMSVRZOjIwNDh9LHk9MSxxPTIsdj0zLFM9MCx4PTQsQz0xLEY9MixUPTMsUj17VEVYVDoxLExJTks6MixGUkVFVEVYVDozLExJTkU6NCxTUVVBUkU6NSxDSVJDTEU6NixQT0xZR09OOjcsUE9MWUxJTkU6OCxISUdITElHSFQ6OSxVTkRFUkxJTkU6MTAsU1FVSUdHTFk6MTEsU1RSSUtFT1VUOjEyLFNUQU1QOjEzLENBUkVUOjE0LElOSzoxNSxQT1BVUDoxNixGSUxFQVRUQUNITUVOVDoxNyxTT1VORDoxOCxNT1ZJRToxOSxXSURHRVQ6MjAsU0NSRUVOOjIxLFBSSU5URVJNQVJLOjIyLFRSQVBORVQ6MjMsV0FURVJNQVJLOjI0LFRIUkVFRDoyNSxSRURBQ1Q6MjYsUklDSE1FRElBOjI3fSxPPSJHcm91cCIsSD0iUiIsRD0wLE09NCxOPTEsRT0yLF89NCx6PTE2LEw9MzIsVT0xMjgsVz01MTIsWD0xLEs9MixHPTQwOTYsVj04MTkyLCQ9MzI3NjgsWT02NTUzNixKPTEzMTA3MixRPTEwNDg1NzYsWj0yMDk3MTUyLGVlPTgzODg2MDgsdGU9MTY3NzcyMTYsbmU9MSxhZT0yLHNlPTMscmU9NCxpZT01LG9lPXtFOiJNb3VzZSBFbnRlciIsWDoiTW91c2UgRXhpdCIsRDoiTW91c2UgRG93biIsVToiTW91c2UgVXAiLEZvOiJGb2N1cyIsQmw6IkJsdXIiLFBPOiJQYWdlT3BlbiIsUEM6IlBhZ2VDbG9zZSIsUFY6IlBhZ2VWaXNpYmxlIixQSToiUGFnZUludmlzaWJsZSIsSzoiS2V5c3Ryb2tlIixGOiJGb3JtYXQiLFY6IlZhbGlkYXRlIixDOiJDYWxjdWxhdGUifSxsZT17V0M6IldpbGxDbG9zZSIsV1M6IldpbGxTYXZlIixEUzoiRGlkU2F2ZSIsV1A6IldpbGxQcmludCIsRFA6IkRpZFByaW50In0sZmU9e086IlBhZ2VPcGVuIixDOiJQYWdlQ2xvc2UifSxjZT0xLGhlPTUsdWU9MSxtZT0yLHBlPTMsZGU9NCxnZT01LGJlPTYsd2U9NyxqZT04LGtlPTkseWU9MTAscWU9MTEsdmU9MTIsU2U9MTMsQWU9MTQseGU9MTUsQ2U9MTYsSWU9MTcsRmU9MTgsVGU9MTksUmU9MjAsT2U9MjEsSGU9MjIsQmU9MjMsRGU9MjQsTWU9MjUsTmU9MjYsUGU9MjcsRWU9MjgsX2U9MjksemU9MzAsTGU9MzEsVWU9MzIsV2U9MzMsWGU9MzQsS2U9MzUsR2U9MzYsVmU9MzcsJGU9MzgsWWU9MzksSmU9NDAsUWU9NDEsWmU9NDIsZXQ9NDMsdHQ9NDQsbnQ9NDUsYXQ9NDYsc3Q9NDcscnQ9NDgsaXQ9NDksb3Q9NTAsbHQ9NTEsZnQ9NTIsY3Q9NTMsaHQ9NTQsdXQ9NTUsbXQ9NTYscHQ9NTcsZHQ9NTgsZ3Q9NTksYnQ9NjAsd3Q9NjEsanQ9NjIsa3Q9NjMseXQ9NjQscXQ9NjUsdnQ9NjYsU3Q9NjcsQXQ9NjgseHQ9NjksQ3Q9NzAsSXQ9NzEsRnQ9NzIsVHQ9NzMsUnQ9NzQsT3Q9NzUsSHQ9NzYsQnQ9NzcsRHQ9ODAsTXQ9ODEsTnQ9ODMsUHQ9ODQsRXQ9ODUsX3Q9ODYsenQ9ODcsTHQ9ODgsVXQ9ODksV3Q9OTAsWHQ9OTEsS3Q9OTIsR3Q9OTMsVnQ9OTQsJHQ9MCxZdD0xLEp0PTIsUXQ9MyxadD00LGVuPTEsdG49MjtsZXQgbm49Y2U7ZnVuY3Rpb24gZ2V0VmVyYm9zaXR5TGV2ZWwoKXtyZXR1cm4gbm59ZnVuY3Rpb24gaW5mbyhlKXtubj49aGUmJmNvbnNvbGUuaW5mbyhgSW5mbzogJHtlfWApfWZ1bmN0aW9uIHdhcm4oZSl7bm4+PWNlJiZjb25zb2xlLndhcm4oYFdhcm5pbmc6ICR7ZX1gKX1mdW5jdGlvbiB1bnJlYWNoYWJsZShlKXt0aHJvdyBuZXcgRXJyb3IoZSl9ZnVuY3Rpb24gYXNzZXJ0KGUsdCl7ZXx8dW5yZWFjaGFibGUodCl9ZnVuY3Rpb24gY3JlYXRlVmFsaWRBYnNvbHV0ZVVybChlLHQ9bnVsbCxuPW51bGwpe2lmKCFlKXJldHVybiBudWxsO2lmKG4mJiJzdHJpbmciPT10eXBlb2YgZSl7aWYobi5hZGREZWZhdWx0UHJvdG9jb2wmJmUuc3RhcnRzV2l0aCgid3d3LiIpKXtjb25zdCB0PWUubWF0Y2goL1wuL2cpO3Q/Lmxlbmd0aD49MiYmKGU9YGh0dHA6Ly8ke2V9YCl9aWYobi50cnlDb252ZXJ0RW5jb2RpbmcpdHJ5e2U9c3RyaW5nVG9VVEY4U3RyaW5nKGUpfWNhdGNoe319Y29uc3QgYT10P1VSTC5wYXJzZShlLHQpOlVSTC5wYXJzZShlKTtyZXR1cm4gZnVuY3Rpb24gX2lzVmFsaWRQcm90b2NvbChlKXtzd2l0Y2goZT8ucHJvdG9jb2wpe2Nhc2UiaHR0cDoiOmNhc2UiaHR0cHM6IjpjYXNlImZ0cDoiOmNhc2UibWFpbHRvOiI6Y2FzZSJ0ZWw6IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0oYSk/YTpudWxsfWZ1bmN0aW9uIHNoYWRvdyhlLHQsbixhPSExKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6IWEsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiExfSk7cmV0dXJuIG59Y29uc3QgYW49ZnVuY3Rpb24gQmFzZUV4Y2VwdGlvbkNsb3N1cmUoKXtmdW5jdGlvbiBCYXNlRXhjZXB0aW9uKGUsdCl7dGhpcy5tZXNzYWdlPWU7dGhpcy5uYW1lPXR9QmFzZUV4Y2VwdGlvbi5wcm90b3R5cGU9bmV3IEVycm9yO0Jhc2VFeGNlcHRpb24uY29uc3RydWN0b3I9QmFzZUV4Y2VwdGlvbjtyZXR1cm4gQmFzZUV4Y2VwdGlvbn0oKTtjbGFzcyBQYXNzd29yZEV4Y2VwdGlvbiBleHRlbmRzIGFue2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiUGFzc3dvcmRFeGNlcHRpb24iKTt0aGlzLmNvZGU9dH19Y2xhc3MgVW5rbm93bkVycm9yRXhjZXB0aW9uIGV4dGVuZHMgYW57Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJVbmtub3duRXJyb3JFeGNlcHRpb24iKTt0aGlzLmRldGFpbHM9dH19Y2xhc3MgSW52YWxpZFBERkV4Y2VwdGlvbiBleHRlbmRzIGFue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkludmFsaWRQREZFeGNlcHRpb24iKX19Y2xhc3MgUmVzcG9uc2VFeGNlcHRpb24gZXh0ZW5kcyBhbntjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoZSwiUmVzcG9uc2VFeGNlcHRpb24iKTt0aGlzLnN0YXR1cz10O3RoaXMubWlzc2luZz1ufX1jbGFzcyBGb3JtYXRFcnJvciBleHRlbmRzIGFue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkZvcm1hdEVycm9yIil9fWNsYXNzIEFib3J0RXhjZXB0aW9uIGV4dGVuZHMgYW57Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiQWJvcnRFeGNlcHRpb24iKX19ZnVuY3Rpb24gYnl0ZXNUb1N0cmluZyhlKXsib2JqZWN0Ij09dHlwZW9mIGUmJnZvaWQgMCE9PWU/Lmxlbmd0aHx8dW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIGJ5dGVzVG9TdHJpbmciKTtjb25zdCB0PWUubGVuZ3RoLG49ODE5MjtpZih0PG4pcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxlKTtjb25zdCBhPVtdO2ZvcihsZXQgcz0wO3M8dDtzKz1uKXtjb25zdCByPU1hdGgubWluKHMrbix0KSxpPWUuc3ViYXJyYXkocyxyKTthLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGkpKX1yZXR1cm4gYS5qb2luKCIiKX1mdW5jdGlvbiBzdHJpbmdUb0J5dGVzKGUpeyJzdHJpbmciIT10eXBlb2YgZSYmdW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIHN0cmluZ1RvQnl0ZXMiKTtjb25zdCB0PWUubGVuZ3RoLG49bmV3IFVpbnQ4QXJyYXkodCk7Zm9yKGxldCBhPTA7YTx0OysrYSluW2FdPTI1NSZlLmNoYXJDb2RlQXQoYSk7cmV0dXJuIG59Y2xhc3MgRmVhdHVyZVRlc3R7c3RhdGljIGdldCBpc0xpdHRsZUVuZGlhbigpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoNCk7ZVswXT0xO3JldHVybiBzaGFkb3codGhpcywiaXNMaXR0bGVFbmRpYW4iLDE9PT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsMCwxKVswXSl9c3RhdGljIGdldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQiLCJ1bmRlZmluZWQiIT10eXBlb2YgT2Zmc2NyZWVuQ2FudmFzKX1zdGF0aWMgZ2V0IGlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0ltYWdlRGVjb2RlclN1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBJbWFnZURlY29kZXIpfXN0YXRpYyBnZXQgaXNGbG9hdDE2QXJyYXlTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzRmxvYXQxNkFycmF5U3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIEZsb2F0MTZBcnJheSl9c3RhdGljIGdldCBpc1Nhbml0aXplclN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNTYW5pdGl6ZXJTdXBwb3J0ZWQiLCJ1bmRlZmluZWQiIT10eXBlb2YgU2FuaXRpemVyKX1zdGF0aWMgZ2V0IHBsYXRmb3JtKCl7Y29uc3R7cGxhdGZvcm06ZSx1c2VyQWdlbnQ6dH09bmF2aWdhdG9yO3JldHVybiBzaGFkb3codGhpcywicGxhdGZvcm0iLHtpc0FuZHJvaWQ6dC5pbmNsdWRlcygiQW5kcm9pZCIpLGlzTGludXg6ZS5pbmNsdWRlcygiTGludXgiKSxpc01hYzplLmluY2x1ZGVzKCJNYWMiKSxpc1dpbmRvd3M6ZS5pbmNsdWRlcygiV2luIiksaXNGaXJlZm94OnQuaW5jbHVkZXMoIkZpcmVmb3giKX0pfXN0YXRpYyBnZXQgaXNDYW52YXNGaWx0ZXJTdXBwb3J0ZWQoKXtsZXQgZTt0aGlzLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiYoZT1uZXcgT2Zmc2NyZWVuQ2FudmFzKDEsMSkuZ2V0Q29udGV4dCgiMmQiKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0NhbnZhc0ZpbHRlclN1cHBvcnRlZCIsdm9pZCAwIT09ZT8uZmlsdGVyKX1zdGF0aWMgZ2V0IGlzQWxwaGFDb2xvcklucHV0U3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0FscGhhQ29sb3JJbnB1dFN1cHBvcnRlZCIsITEpfXN0YXRpYyBnZXQgaXNCYWNrZHJvcEZpbHRlclN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNCYWNrZHJvcEZpbHRlclN1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBDU1MmJkNTUy5zdXBwb3J0cygiYmFja2Ryb3AtZmlsdGVyIiwiYmx1cigxcHgpIikpfX1jbGFzcyBVdGlse3N0YXRpYyBnZXQgaGV4TnVtcygpe3JldHVybiBzaGFkb3codGhpcywiaGV4TnVtcyIsQXJyYXkuZnJvbShBcnJheSgyNTYpLmtleXMoKSxlPT5lLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpKX1zdGF0aWMgbWFrZUhleENvbG9yKGUsdCxuKXtyZXR1cm5gIyR7dGhpcy5oZXhOdW1zW2VdfSR7dGhpcy5oZXhOdW1zW3RdfSR7dGhpcy5oZXhOdW1zW25dfWB9c3RhdGljIHRyYW5zZm9ybShlLHQpe3JldHVybltlWzBdKnRbMF0rZVsyXSp0WzFdLGVbMV0qdFswXStlWzNdKnRbMV0sZVswXSp0WzJdK2VbMl0qdFszXSxlWzFdKnRbMl0rZVszXSp0WzNdLGVbMF0qdFs0XStlWzJdKnRbNV0rZVs0XSxlWzFdKnRbNF0rZVszXSp0WzVdK2VbNV1dfXN0YXRpYyBtdWx0aXBseUJ5RE9NTWF0cml4KGUsdCl7cmV0dXJuW2VbMF0qdC5hK2VbMl0qdC5iLGVbMV0qdC5hK2VbM10qdC5iLGVbMF0qdC5jK2VbMl0qdC5kLGVbMV0qdC5jK2VbM10qdC5kLGVbMF0qdC5lK2VbMl0qdC5mK2VbNF0sZVsxXSp0LmUrZVszXSp0LmYrZVs1XV19c3RhdGljIGFwcGx5VHJhbnNmb3JtKGUsdCxuPTApe2NvbnN0IGE9ZVtuXSxzPWVbbisxXTtlW25dPWEqdFswXStzKnRbMl0rdFs0XTtlW24rMV09YSp0WzFdK3MqdFszXSt0WzVdfXN0YXRpYyBhcHBseVRyYW5zZm9ybVRvQmV6aWVyKGUsdCxuPTApe2NvbnN0IGE9dFswXSxzPXRbMV0scj10WzJdLGk9dFszXSxvPXRbNF0sbD10WzVdO2ZvcihsZXQgdD0wO3Q8Njt0Kz0yKXtjb25zdCBmPWVbbit0XSxjPWVbbit0KzFdO2Vbbit0XT1mKmErYypyK287ZVtuK3QrMV09ZipzK2MqaStsfX1zdGF0aWMgYXBwbHlJbnZlcnNlVHJhbnNmb3JtKGUsdCl7Y29uc3Qgbj1lWzBdLGE9ZVsxXSxzPXRbMF0qdFszXS10WzFdKnRbMl07ZVswXT0obip0WzNdLWEqdFsyXSt0WzJdKnRbNV0tdFs0XSp0WzNdKS9zO2VbMV09KC1uKnRbMV0rYSp0WzBdK3RbNF0qdFsxXS10WzVdKnRbMF0pL3N9c3RhdGljIGF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGUsdCxuKXtjb25zdCBhPXRbMF0scz10WzFdLHI9dFsyXSxpPXRbM10sbz10WzRdLGw9dFs1XSxmPWVbMF0sYz1lWzFdLGg9ZVsyXSx1PWVbM107bGV0IG09YSpmK28scD1tLGQ9YSpoK28sZz1kLGI9aSpjK2wsdz1iLGo9aSp1K2wsaz1qO2lmKDAhPT1zfHwwIT09cil7Y29uc3QgZT1zKmYsdD1zKmgsbj1yKmMsYT1yKnU7bSs9bjtnKz1uO2QrPWE7cCs9YTtiKz1lO2srPWU7ais9dDt3Kz10fW5bMF09TWF0aC5taW4oblswXSxtLGQscCxnKTtuWzFdPU1hdGgubWluKG5bMV0sYixqLHcsayk7blsyXT1NYXRoLm1heChuWzJdLG0sZCxwLGcpO25bM109TWF0aC5tYXgoblszXSxiLGosdyxrKX1zdGF0aWMgaW52ZXJzZVRyYW5zZm9ybShlKXtjb25zdCB0PWVbMF0qZVszXS1lWzFdKmVbMl07cmV0dXJuW2VbM10vdCwtZVsxXS90LC1lWzJdL3QsZVswXS90LChlWzJdKmVbNV0tZVs0XSplWzNdKS90LChlWzRdKmVbMV0tZVs1XSplWzBdKS90XX1zdGF0aWMgc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUoZSx0KXtjb25zdCBuPWVbMF0sYT1lWzFdLHM9ZVsyXSxyPWVbM10saT1uKioyK2EqKjIsbz1uKnMrYSpyLGw9cyoqMityKioyLGY9KGkrbCkvMixjPU1hdGguc3FydChmKioyLShpKmwtbyoqMikpO3RbMF09TWF0aC5zcXJ0KGYrY3x8MSk7dFsxXT1NYXRoLnNxcnQoZi1jfHwxKX1zdGF0aWMgbm9ybWFsaXplUmVjdChlKXtjb25zdCB0PWUuc2xpY2UoMCk7aWYoZVswXT5lWzJdKXt0WzBdPWVbMl07dFsyXT1lWzBdfWlmKGVbMV0+ZVszXSl7dFsxXT1lWzNdO3RbM109ZVsxXX1yZXR1cm4gdH1zdGF0aWMgaW50ZXJzZWN0KGUsdCl7Y29uc3Qgbj1NYXRoLm1heChNYXRoLm1pbihlWzBdLGVbMl0pLE1hdGgubWluKHRbMF0sdFsyXSkpLGE9TWF0aC5taW4oTWF0aC5tYXgoZVswXSxlWzJdKSxNYXRoLm1heCh0WzBdLHRbMl0pKTtpZihuPmEpcmV0dXJuIG51bGw7Y29uc3Qgcz1NYXRoLm1heChNYXRoLm1pbihlWzFdLGVbM10pLE1hdGgubWluKHRbMV0sdFszXSkpLHI9TWF0aC5taW4oTWF0aC5tYXgoZVsxXSxlWzNdKSxNYXRoLm1heCh0WzFdLHRbM10pKTtyZXR1cm4gcz5yP251bGw6W24scyxhLHJdfXN0YXRpYyBwb2ludEJvdW5kaW5nQm94KGUsdCxuKXtuWzBdPU1hdGgubWluKG5bMF0sZSk7blsxXT1NYXRoLm1pbihuWzFdLHQpO25bMl09TWF0aC5tYXgoblsyXSxlKTtuWzNdPU1hdGgubWF4KG5bM10sdCl9c3RhdGljIHJlY3RCb3VuZGluZ0JveChlLHQsbixhLHMpe3NbMF09TWF0aC5taW4oc1swXSxlLG4pO3NbMV09TWF0aC5taW4oc1sxXSx0LGEpO3NbMl09TWF0aC5tYXgoc1syXSxlLG4pO3NbM109TWF0aC5tYXgoc1szXSx0LGEpfXN0YXRpYyNlKGUsdCxuLGEscyxyLGksbyxsLGYpe2lmKGw8PTB8fGw+PTEpcmV0dXJuO2NvbnN0IGM9MS1sLGg9bCpsLHU9aCpsLG09YyooYyooYyplKzMqbCp0KSszKmgqbikrdSphLHA9YyooYyooYypzKzMqbCpyKSszKmgqaSkrdSpvO2ZbMF09TWF0aC5taW4oZlswXSxtKTtmWzFdPU1hdGgubWluKGZbMV0scCk7ZlsyXT1NYXRoLm1heChmWzJdLG0pO2ZbM109TWF0aC5tYXgoZlszXSxwKX1zdGF0aWMjdChlLHQsbixhLHMscixpLG8sbCxmLGMsaCl7aWYoTWF0aC5hYnMobCk8MWUtMTIpe01hdGguYWJzKGYpPj0xZS0xMiYmdGhpcy4jZShlLHQsbixhLHMscixpLG8sLWMvZixoKTtyZXR1cm59Y29uc3QgdT1mKioyLTQqYypsO2lmKHU8MClyZXR1cm47Y29uc3QgbT1NYXRoLnNxcnQodSkscD0yKmw7dGhpcy4jZShlLHQsbixhLHMscixpLG8sKC1mK20pL3AsaCk7dGhpcy4jZShlLHQsbixhLHMscixpLG8sKC1mLW0pL3AsaCl9c3RhdGljIGJlemllckJvdW5kaW5nQm94KGUsdCxuLGEscyxyLGksbyxsKXtsWzBdPU1hdGgubWluKGxbMF0sZSxpKTtsWzFdPU1hdGgubWluKGxbMV0sdCxvKTtsWzJdPU1hdGgubWF4KGxbMl0sZSxpKTtsWzNdPU1hdGgubWF4KGxbM10sdCxvKTt0aGlzLiN0KGUsbixzLGksdCxhLHIsbywzKigzKihuLXMpLWUraSksNiooZS0yKm4rcyksMyoobi1lKSxsKTt0aGlzLiN0KGUsbixzLGksdCxhLHIsbywzKigzKihhLXIpLXQrbyksNioodC0yKmErciksMyooYS10KSxsKX19ZnVuY3Rpb24gc3RyaW5nVG9VVEY4U3RyaW5nKGUpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGUpKX1mdW5jdGlvbiB1dGY4U3RyaW5nVG9TdHJpbmcoZSl7cmV0dXJuIHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlKSl9ZnVuY3Rpb24gaXNBcnJheUVxdWFsKGUsdCl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IG49MCxhPWUubGVuZ3RoO248YTtuKyspaWYoZVtuXSE9PXRbbl0pcmV0dXJuITE7cmV0dXJuITB9bGV0IHNuPW51bGwscm49bnVsbDtjb25zdCBtYWtlQXJyPSgpPT5bXSxtYWtlTWFwPSgpPT5uZXcgTWFwLG1ha2VPYmo9KCk9Pk9iamVjdC5jcmVhdGUobnVsbCksbWFrZVNldD0oKT0+bmV3IFNldDsiZnVuY3Rpb24iIT10eXBlb2YgSXRlcmF0b3IucHJvdG90eXBlLmpvaW4mJihJdGVyYXRvci5wcm90b3R5cGUuam9pbj1mdW5jdGlvbihlKXtyZXR1cm5bLi4udGhpc10uam9pbihlKX0pO2NvbnN0IG9uPVN5bWJvbCgiQ0lSQ1VMQVJfUkVGIiksbG49U3ltYm9sKCJFT0YiKTtsZXQgZm49T2JqZWN0LmNyZWF0ZShudWxsKSxjbj1PYmplY3QuY3JlYXRlKG51bGwpLGhuPU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgTmFtZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZX1zdGF0aWMgZ2V0KGUpe3JldHVybiBjbltlXXx8PW5ldyBOYW1lKGUpfX1jbGFzcyBDbWR7Y29uc3RydWN0b3IoZSl7dGhpcy5jbWQ9ZX1zdGF0aWMgZ2V0KGUpe3JldHVybiBmbltlXXx8PW5ldyBDbWQoZSl9fWNvbnN0IHVuPWZ1bmN0aW9uIG5vblNlcmlhbGl6YWJsZUNsb3N1cmUoKXtyZXR1cm4gdW59O2NsYXNzIERpY3R7X19ub25TZXJpYWxpemFibGVfXz11bjsjbj1uZXcgTWFwO29iaklkPW51bGw7c3VwcHJlc3NFbmNyeXB0aW9uPSExO3hyZWY7Y29uc3RydWN0b3IoZT1udWxsKXt0aGlzLnhyZWY9ZX1hc3NpZ25YcmVmKGUpe3RoaXMueHJlZj1lfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuI24uc2l6ZX0jYShlLHQsbixhKXtsZXQgcz10aGlzLiNuLmdldCh0KTtpZih2b2lkIDA9PT1zJiZ2b2lkIDAhPT1uKXtzPXRoaXMuI24uZ2V0KG4pO3ZvaWQgMD09PXMmJnZvaWQgMCE9PWEmJihzPXRoaXMuI24uZ2V0KGEpKX1yZXR1cm4gcyBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmP2U/dGhpcy54cmVmLmZldGNoQXN5bmMocyx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6dGhpcy54cmVmLmZldGNoKHMsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pOnN9Z2V0KGUsdCxuKXtyZXR1cm4gdGhpcy4jYSghMSxlLHQsbil9YXN5bmMgZ2V0QXN5bmMoZSx0LG4pe3JldHVybiB0aGlzLiNhKCEwLGUsdCxuKX1nZXRBcnJheShlLHQsbil7bGV0IGE9dGhpcy4jYSghMSxlLHQsbik7aWYoQXJyYXkuaXNBcnJheShhKSl7YT1hLnNsaWNlKCk7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKWFbZV1pbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmJiYoYVtlXT10aGlzLnhyZWYuZmV0Y2goYVtlXSx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpfXJldHVybiBhfWdldFJhdyhlKXtyZXR1cm4gdGhpcy4jbi5nZXQoZSl9Z2V0S2V5cygpe3JldHVybiB0aGlzLiNuLmtleXMoKX1nZXRSYXdWYWx1ZXMoKXtyZXR1cm4gdGhpcy4jbi52YWx1ZXMoKX1nZXRSYXdFbnRyaWVzKCl7cmV0dXJuIHRoaXMuI24uZW50cmllcygpfXNldChlLHQpe3RoaXMuI24uc2V0KGUsdCl9c2V0SWZOb3RFeGlzdHMoZSx0KXt0aGlzLmhhcyhlKXx8dGhpcy5zZXQoZSx0KX1zZXRJZk51bWJlcihlLHQpeyJudW1iZXIiPT10eXBlb2YgdCYmdGhpcy5zZXQoZSx0KX1zZXRJZkFycmF5KGUsdCl7KEFycmF5LmlzQXJyYXkodCl8fEFycmF5QnVmZmVyLmlzVmlldyh0KSkmJnRoaXMuc2V0KGUsdCl9c2V0SWZEZWZpbmVkKGUsdCl7bnVsbCE9dCYmdGhpcy5zZXQoZSx0KX1zZXRJZk5hbWUoZSx0KXsic3RyaW5nIj09dHlwZW9mIHQ/dGhpcy5zZXQoZSxOYW1lLmdldCh0KSk6dCBpbnN0YW5jZW9mIE5hbWUmJnRoaXMuc2V0KGUsdCl9c2V0SWZEaWN0KGUsdCl7dCBpbnN0YW5jZW9mIERpY3QmJnRoaXMuc2V0KGUsdCl9aGFzKGUpe3JldHVybiB0aGlzLiNuLmhhcyhlKX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtmb3IoY29uc3RbZSx0XW9mIHRoaXMuI24peWllbGRbZSx0IGluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoKHQsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pOnRdfXN0YXRpYyBnZXQgZW1wdHkoKXtjb25zdCBlPW5ldyBEaWN0KG51bGwpO2Uuc2V0PShlLHQpPT57dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBgc2V0YCBvbiB0aGUgZW1wdHkgZGljdGlvbmFyeS4iKX07cmV0dXJuIHNoYWRvdyh0aGlzLCJlbXB0eSIsZSl9c3RhdGljIG1lcmdlKHt4cmVmOmUsZGljdEFycmF5OnQsbWVyZ2VTdWJEaWN0czpuPSExfSl7Y29uc3QgYT1uZXcgRGljdChlKSxzPW5ldyBNYXA7Zm9yKGNvbnN0IGUgb2YgdClpZihlIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3RbdCxhXW9mIGUuZ2V0UmF3RW50cmllcygpKXtjb25zdCBlPXMuZ2V0T3JJbnNlcnRDb21wdXRlZCh0LG1ha2VBcnIpOyghZS5sZW5ndGh8fG4mJmEgaW5zdGFuY2VvZiBEaWN0KSYmZS5wdXNoKGEpfWZvcihjb25zdFt0LG5db2Ygcyl7aWYoMT09PW4ubGVuZ3RofHwhKG5bMF1pbnN0YW5jZW9mIERpY3QpKXthLnNldCh0LG5bMF0pO2NvbnRpbnVlfWNvbnN0IHM9bmV3IERpY3QoZSk7Zm9yKGNvbnN0IGUgb2Ygbilmb3IoY29uc3RbdCxuXW9mIGUuZ2V0UmF3RW50cmllcygpKXMuc2V0SWZOb3RFeGlzdHModCxuKTtzLnNpemU+MCYmYS5zZXQodCxzKX1zLmNsZWFyKCk7cmV0dXJuIGEuc2l6ZT4wP2E6RGljdC5lbXB0eX1jbG9uZSgpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtmb3IoY29uc3RbdCxuXW9mIHRoaXMuI24pZS5zZXQodCxuKTtyZXR1cm4gZX1kZWxldGUoZSl7dGhpcy4jbi5kZWxldGUoZSl9fWNsYXNzIFJlZnsjcztjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy4jcz1lO3RoaXMubnVtPXQ7dGhpcy5nZW49bn10b1N0cmluZygpe3JldHVybiB0aGlzLiNzfXN0YXRpYyBmcm9tU3RyaW5nKGUpe2NvbnN0IHQ9aG5bZV07aWYodClyZXR1cm4gdDtjb25zdCBuPS9eKFxkKylSKFxkKikkLy5leGVjKGUpO2lmKCFufHwiMCI9PT1uWzFdKXJldHVybiBudWxsO2NvbnN0IGE9cGFyc2VJbnQoblsxXSwxMCkscz1uWzJdP3BhcnNlSW50KG5bMl0sMTApOjA7cmV0dXJuIGhuW2VdPW5ldyBSZWYoZSxhLHMpfXN0YXRpYyBnZXQoZSx0KXtjb25zdCBuPTA9PT10P2Ake2V9UmA6YCR7ZX1SJHt0fWA7cmV0dXJuIGhuW25dfHw9bmV3IFJlZihuLGUsdCl9fWNsYXNzIFJlZlNldHtjb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMuX3NldD1uZXcgU2V0KGU/Ll9zZXQpfWhhcyhlKXtyZXR1cm4gdGhpcy5fc2V0LmhhcyhlLnRvU3RyaW5nKCkpfXB1dChlKXt0aGlzLl9zZXQuYWRkKGUudG9TdHJpbmcoKSl9cmVtb3ZlKGUpe3RoaXMuX3NldC5kZWxldGUoZS50b1N0cmluZygpKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLl9zZXQudmFsdWVzKCl9Y2xlYXIoKXt0aGlzLl9zZXQuY2xlYXIoKX19Y2xhc3MgUmVmU2V0Q2FjaGV7X21hcD1uZXcgTWFwO2dldCBzaXplKCl7cmV0dXJuIHRoaXMuX21hcC5zaXplfWdldChlKXtyZXR1cm4gdGhpcy5fbWFwLmdldChlLnRvU3RyaW5nKCkpfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlLnRvU3RyaW5nKCkpfXB1dChlLHQpe3RoaXMuX21hcC5zZXQoZS50b1N0cmluZygpLHQpfXB1dEFsaWFzKGUsdCl7dGhpcy5fbWFwLnNldChlLnRvU3RyaW5nKCksdGhpcy5nZXQodCkpfWdldE9yUHV0Q29tcHV0ZWQoZSx0KXtjb25zdCBuPXRoaXMuX21hcCxhPWUudG9TdHJpbmcoKTtuLmhhcyhhKXx8bi5zZXQoYSx0KGUpKTtyZXR1cm4gbi5nZXQoYSl9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy5fbWFwLnZhbHVlcygpfWNsZWFyKCl7dGhpcy5fbWFwLmNsZWFyKCl9KnZhbHVlcygpe3lpZWxkKnRoaXMuX21hcC52YWx1ZXMoKX0qaXRlbXMoKXtmb3IoY29uc3RbZSx0XW9mIHRoaXMuX21hcCl5aWVsZFtSZWYuZnJvbVN0cmluZyhlKSx0XX0qa2V5cygpe2Zvcihjb25zdCBlIG9mIHRoaXMuX21hcC5rZXlzKCkpeWllbGQgUmVmLmZyb21TdHJpbmcoZSl9fWZ1bmN0aW9uIGlzTmFtZShlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgTmFtZSYmKHZvaWQgMD09PXR8fGUubmFtZT09PXQpfWZ1bmN0aW9uIGlzQ21kKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDbWQmJih2b2lkIDA9PT10fHxlLmNtZD09PXQpfWZ1bmN0aW9uIGlzRGljdChlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgRGljdCYmKHZvaWQgMD09PXR8fGlzTmFtZShlLmdldCgiVHlwZSIpLHQpKX1mdW5jdGlvbiBpc1JlZnNFcXVhbChlLHQpe3JldHVybiBlLm51bT09PXQubnVtJiZlLmdlbj09PXQuZ2VufWNsYXNzIEJhc2VTdHJlYW17Z2V0IGxlbmd0aCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGxlbmd0aGAgYWNjZXNzZWQiKX1nZXQgaXNFbXB0eSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGlzRW1wdHlgIGFjY2Vzc2VkIil9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNEYXRhTG9hZGVkIiwhMCl9Z2V0Qnl0ZSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVgIGNhbGxlZCIpfWdldEJ5dGVzKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVzYCBjYWxsZWQiKX1hc3luYyBnZXRJbWFnZURhdGEoZSx0KXtyZXR1cm4gdGhpcy5nZXRCeXRlcyhlLHQpfWFzeW5jIGFzeW5jR2V0Qnl0ZXMoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBhc3luY0dldEJ5dGVzYCBjYWxsZWQiKX1nZXQgaXNBc3luYygpe3JldHVybiExfWdldCBpc0FzeW5jRGVjb2Rlcigpe3JldHVybiExfWdldCBpc0ltYWdlU3RyZWFtKCl7cmV0dXJuITF9Z2V0IGNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKCl7cmV0dXJuITF9YXN5bmMgZ2V0VHJhbnNmZXJhYmxlSW1hZ2UoKXtyZXR1cm4gbnVsbH1wZWVrQnl0ZSgpe2NvbnN0IGU9dGhpcy5nZXRCeXRlKCk7LTEhPT1lJiZ0aGlzLnBvcy0tO3JldHVybiBlfXBlZWtCeXRlcyhlKXtjb25zdCB0PXRoaXMuZ2V0Qnl0ZXMoZSk7dGhpcy5wb3MtPXQubGVuZ3RoO3JldHVybiB0fWdldFVpbnQxNigpe2NvbnN0IGU9dGhpcy5nZXRCeXRlKCksdD10aGlzLmdldEJ5dGUoKTtyZXR1cm4tMT09PWV8fC0xPT09dD8tMTooZTw8OCkrdH1nZXRJbnQzMigpe3JldHVybih0aGlzLmdldEJ5dGUoKTw8MjQpKyh0aGlzLmdldEJ5dGUoKTw8MTYpKyh0aGlzLmdldEJ5dGUoKTw8OCkrdGhpcy5nZXRCeXRlKCl9Z2V0Qnl0ZVJhbmdlKGUsdCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZVJhbmdlYCBjYWxsZWQiKX1nZXRTdHJpbmcoZSl7cmV0dXJuIGJ5dGVzVG9TdHJpbmcodGhpcy5nZXRCeXRlcyhlKSl9c2tpcChlKXt0aGlzLnBvcys9ZXx8MX1yZXNldCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlc2V0YCBjYWxsZWQiKX1tb3ZlU3RhcnQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBtb3ZlU3RhcnRgIGNhbGxlZCIpfW1ha2VTdWJTdHJlYW0oZSx0LG49bnVsbCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgbWFrZVN1YlN0cmVhbWAgY2FsbGVkIil9Y2xvbmUoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBjbG9uZWAgY2FsbGVkIil9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm4gbnVsbH1nZXRPcmlnaW5hbFN0cmVhbSgpe3JldHVybiB0aGlzLnN0cmVhbT8uZ2V0T3JpZ2luYWxTdHJlYW0oKXx8dGhpc319ZnVuY3Rpb24gc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShlKXtyZXR1cm4gbnVsbD09ZXx8ZnVuY3Rpb24gaXNBc2NpaShlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJighZXx8L15bXHgwMC1ceDdGXSokLy50ZXN0KGUpKX0oZSk/ZTpzdHJpbmdUb1VURjE2U3RyaW5nKGUsITApfWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTZIZXhTdHJpbmcoZSl7Y29uc3QgdD1bXTtmb3IobGV0IG49MCxhPWUubGVuZ3RoO248YTtuKyspe2NvbnN0IGE9ZS5jaGFyQ29kZUF0KG4pO3QucHVzaChVdGlsLmhleE51bXNbYT4+OCYyNTVdLFV0aWwuaGV4TnVtc1syNTUmYV0pfXJldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTZTdHJpbmcoZSx0PSExKXtjb25zdCBuPVtdO3QmJm4ucHVzaCgiw77DvyIpO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgYT1lLmNoYXJDb2RlQXQodCk7bi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYT4+OCYyNTUpLFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JmEpKX1yZXR1cm4gbi5qb2luKCIiKX1jb25zdCBtbj1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzI4LDcxMSw3MTAsNzI5LDczMyw3MzEsNzMwLDczMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MjI2LDgyMjQsODIyNSw4MjMwLDgyMTIsODIxMSw0MDIsODI2MCw4MjQ5LDgyNTAsODcyMiw4MjQwLDgyMjIsODIyMCw4MjIxLDgyMTYsODIxNyw4MjE4LDg0ODIsNjQyNTcsNjQyNTgsMzIxLDMzOCwzNTIsMzc2LDM4MSwzMDUsMzIyLDMzOSwzNTMsMzgyLDAsODM2NF07ZnVuY3Rpb24gc3RyaW5nVG9QREZTdHJpbmcoZSx0PSExKXtpZihlWzBdPj0iw68iKXtsZXQgbjtpZigiw74iPT09ZVswXSYmIsO/Ij09PWVbMV0pe249InV0Zi0xNmJlIjtlLmxlbmd0aCUyPT0xJiYoZT1lLnNsaWNlKDAsLTEpKX1lbHNlIGlmKCLDvyI9PT1lWzBdJiYiw74iPT09ZVsxXSl7bj0idXRmLTE2bGUiO2UubGVuZ3RoJTI9PTEmJihlPWUuc2xpY2UoMCwtMSkpfWVsc2Uiw68iPT09ZVswXSYmIsK7Ij09PWVbMV0mJiLCvyI9PT1lWzJdJiYobj0idXRmLTgiKTtpZihuKXRyeXtjb25zdCBhPW5ldyBUZXh0RGVjb2RlcihuLHtmYXRhbDohMH0pLHM9c3RyaW5nVG9CeXRlcyhlKSxyPWEuZGVjb2RlKHMpO3JldHVybiB0fHwhci5pbmNsdWRlcygiGyIpP3I6ci5yZXBsYWNlQWxsKC9ceDFiW15ceDFiXSooPzpceDFifCQpL2csIiIpfWNhdGNoKGUpe3dhcm4oYHN0cmluZ1RvUERGU3RyaW5nOiAiJHtlfSIuYCl9fWNvbnN0IG49W107Zm9yKGxldCBhPTAscz1lLmxlbmd0aDthPHM7YSsrKXtjb25zdCByPWUuY2hhckNvZGVBdChhKTtpZighdCYmMjc9PT1yKXtmb3IoOysrYTxzJiYyNyE9PWUuY2hhckNvZGVBdChhKTspO2NvbnRpbnVlfWNvbnN0IGk9bW5bcl07bi5wdXNoKGk/U3RyaW5nLmZyb21DaGFyQ29kZShpKTplLmNoYXJBdChhKSl9cmV0dXJuIG4uam9pbigiIil9Y29uc3QgcG49L15bMS05XVwuXGQkLyxkbj0yKiozMS0xLGduPVsxLDAsMCwxLDAsMF0sYm49WyJDb2xvclNwYWNlIiwiRXh0R1N0YXRlIiwiRm9udCIsIlBhdHRlcm4iLCJQcm9wZXJ0aWVzIiwiU2hhZGluZyIsIlhPYmplY3QiXSx3bj1bIkV4dEdTdGF0ZSIsIkZvbnQiLCJQcm9wZXJ0aWVzIiwiWE9iamVjdCJdO2Z1bmN0aW9uIGdldExvb2t1cFRhYmxlRmFjdG9yeShlKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24oKXtpZihlKXt0PU9iamVjdC5jcmVhdGUobnVsbCk7ZSh0KTtlPW51bGx9cmV0dXJuIHR9fWNsYXNzIE1pc3NpbmdEYXRhRXhjZXB0aW9uIGV4dGVuZHMgYW57Y29uc3RydWN0b3IoZSx0KXtzdXBlcihgTWlzc2luZyBkYXRhIFske2V9LCAke3R9KWAsIk1pc3NpbmdEYXRhRXhjZXB0aW9uIik7dGhpcy5iZWdpbj1lO3RoaXMuZW5kPXR9fWNsYXNzIFBhcnNlckVPRkV4Y2VwdGlvbiBleHRlbmRzIGFue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlBhcnNlckVPRkV4Y2VwdGlvbiIpfX1jbGFzcyBYUmVmRW50cnlFeGNlcHRpb24gZXh0ZW5kcyBhbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmRW50cnlFeGNlcHRpb24iKX19Y2xhc3MgWFJlZlBhcnNlRXhjZXB0aW9uIGV4dGVuZHMgYW57Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiWFJlZlBhcnNlRXhjZXB0aW9uIil9fWZ1bmN0aW9uIGFycmF5QnVmZmVyc1RvQnl0ZXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtpZigwPT09dClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7aWYoMT09PXQpcmV0dXJuIG5ldyBVaW50OEFycmF5KGVbMF0pO2xldCBuPTA7Zm9yKGxldCBhPTA7YTx0O2ErKyluKz1lW2FdLmJ5dGVMZW5ndGg7Y29uc3QgYT1uZXcgVWludDhBcnJheShuKTtsZXQgcz0wO2ZvcihsZXQgbj0wO248dDtuKyspe2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoZVtuXSk7YS5zZXQodCxzKTtzKz10LmJ5dGVMZW5ndGh9cmV0dXJuIGF9YXN5bmMgZnVuY3Rpb24gZmV0Y2hCaW5hcnlEYXRhKGUpe2NvbnN0IHQ9YXdhaXQgZmV0Y2goZSk7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggZmlsZSAiJHtlfSIgd2l0aCAiJHt0LnN0YXR1c1RleHR9Ii5gKTtyZXR1cm4gdC5ieXRlcygpfWZ1bmN0aW9uIGdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6ZSxrZXk6dCxnZXRBcnJheTpuPSExLHN0b3BXaGVuRm91bmQ6YT0hMH0pe2xldCBzO2NvbnN0IHI9bmV3IFJlZlNldDtmb3IoO2UgaW5zdGFuY2VvZiBEaWN0JiYoIWUub2JqSWR8fCFyLmhhcyhlLm9iaklkKSk7KXtlLm9iaklkJiZyLnB1dChlLm9iaklkKTtjb25zdCBpPW4/ZS5nZXRBcnJheSh0KTplLmdldCh0KTtpZih2b2lkIDAhPT1pKXtpZihhKXJldHVybiBpOyhzfHw9W10pLnB1c2goaSl9ZT1lLmdldCgiUGFyZW50Iil9cmV0dXJuIHN9ZnVuY3Rpb24gZGVlcENvbXBhcmUoZSx0KXtpZihlPT09dClyZXR1cm4hMDtpZihlIGluc3RhbmNlb2YgUmVmJiZ0IGluc3RhbmNlb2YgUmVmKXJldHVybiBpc1JlZnNFcXVhbChlLHQpO2lmKGUgaW5zdGFuY2VvZiBOYW1lJiZ0IGluc3RhbmNlb2YgTmFtZSlyZXR1cm4gZS5uYW1lPT09dC5uYW1lO2lmKGUgaW5zdGFuY2VvZiBEaWN0JiZ0IGluc3RhbmNlb2YgRGljdCl7aWYoZS5zaXplIT09dC5zaXplKXJldHVybiExO2Zvcihjb25zdFtuLGFdb2YgZS5nZXRSYXdFbnRyaWVzKCkpe2NvbnN0IGU9dC5nZXRSYXcobik7aWYodm9pZCAwPT09ZXx8IWRlZXBDb21wYXJlKGEsZSkpcmV0dXJuITF9cmV0dXJuITB9aWYoQXJyYXkuaXNBcnJheShlKSYmQXJyYXkuaXNBcnJheSh0KSl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IG49MCxhPWUubGVuZ3RoO248YTtuKyspaWYoIWRlZXBDb21wYXJlKGVbbl0sdFtuXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuITF9Y29uc3Qgam49WyIiLCJDIiwiQ0MiLCJDQ0MiLCJDRCIsIkQiLCJEQyIsIkRDQyIsIkRDQ0MiLCJDTSIsIiIsIlgiLCJYWCIsIlhYWCIsIlhMIiwiTCIsIkxYIiwiTFhYIiwiTFhYWCIsIlhDIiwiIiwiSSIsIklJIiwiSUlJIiwiSVYiLCJWIiwiVkkiLCJWSUkiLCJWSUlJIiwiSVgiXTtmdW5jdGlvbiB0b1JvbWFuTnVtZXJhbHMoZSx0PSExKXthc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Y29uc3Qgbj0iTSIucmVwZWF0KGUvMWUzfDApK2puW2UlMWUzLzEwMHwwXStqblsxMCsoZSUxMDAvMTB8MCldK2puWzIwK2UlMTBdO3JldHVybiB0P24udG9Mb3dlckNhc2UoKTpufWZ1bmN0aW9uIGlzV2hpdGVTcGFjZShlKXtyZXR1cm4gMzI9PT1lfHw5PT09ZXx8MTM9PT1lfHwxMD09PWV9ZnVuY3Rpb24gaXNOdW1iZXJBcnJheShlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpPyhudWxsPT09dHx8ZS5sZW5ndGg9PT10KSYmZS5ldmVyeShlPT4ibnVtYmVyIj09dHlwZW9mIGUpOkFycmF5QnVmZmVyLmlzVmlldyhlKSYmIShlIGluc3RhbmNlb2YgQmlnSW50NjRBcnJheXx8ZSBpbnN0YW5jZW9mIEJpZ1VpbnQ2NEFycmF5KSYmKG51bGw9PT10fHxlLmxlbmd0aD09PXQpfWZ1bmN0aW9uIGxvb2t1cE1hdHJpeChlLHQpe3JldHVybiBpc051bWJlckFycmF5KGUsNik/ZTp0fWZ1bmN0aW9uIGxvb2t1cFJlY3QoZSx0KXtyZXR1cm4gaXNOdW1iZXJBcnJheShlLDQpP2U6dH1mdW5jdGlvbiBsb29rdXBOb3JtYWxSZWN0KGUsdCl7cmV0dXJuIGlzTnVtYmVyQXJyYXkoZSw0KT9VdGlsLm5vcm1hbGl6ZVJlY3QoZSk6dH1mdW5jdGlvbiBwYXJzZVhGQVBhdGgoZSl7Y29uc3QgdD0vKC4rKVxbKFxkKylcXSQvO3JldHVybiBlLnNwbGl0KCIuIikubWFwKGU9Pntjb25zdCBuPWUubWF0Y2godCk7cmV0dXJuIG4/e25hbWU6blsxXSxwb3M6cGFyc2VJbnQoblsyXSwxMCl9OntuYW1lOmUscG9zOjB9fSl9ZnVuY3Rpb24gZXNjYXBlUERGTmFtZShlKXtjb25zdCB0PVtdO2xldCBuPTA7Zm9yKGxldCBhPTAscz1lLmxlbmd0aDthPHM7YSsrKXtjb25zdCBzPWUuY2hhckNvZGVBdChhKTtpZihzPDMzfHxzPjEyNnx8MzU9PT1zfHw0MD09PXN8fDQxPT09c3x8NjA9PT1zfHw2Mj09PXN8fDkxPT09c3x8OTM9PT1zfHwxMjM9PT1zfHwxMjU9PT1zfHw0Nz09PXN8fDM3PT09cyl7bjxhJiZ0LnB1c2goZS5zdWJzdHJpbmcobixhKSk7dC5wdXNoKGAjJHtzLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIil9YCk7bj1hKzF9fWlmKDA9PT10Lmxlbmd0aClyZXR1cm4gZTtuPGUubGVuZ3RoJiZ0LnB1c2goZS5zdWJzdHJpbmcobikpO3JldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIGVzY2FwZVN0cmluZyhlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC8oWygpXFxcblxyXSkvZyxlPT4iXG4iPT09ZT8iXFxuIjoiXHIiPT09ZT8iXFxyIjpgXFwke2V9YCl9ZnVuY3Rpb24gX2NvbGxlY3RKUyhlLHQsbixhKXtpZighZSlyZXR1cm47bGV0IHM9bnVsbDtpZihlIGluc3RhbmNlb2YgUmVmKXtpZihhLmhhcyhlKSlyZXR1cm47cz1lO2EucHV0KHMpO2U9dC5mZXRjaChlKX1pZihBcnJheS5pc0FycmF5KGUpKWZvcihjb25zdCBzIG9mIGUpX2NvbGxlY3RKUyhzLHQsbixhKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBEaWN0KXtpZihpc05hbWUoZS5nZXQoIlMiKSwiSmF2YVNjcmlwdCIpKXtjb25zdCB0PWUuZ2V0KCJKUyIpO2xldCBhO3QgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2E9dC5nZXRTdHJpbmcoKToic3RyaW5nIj09dHlwZW9mIHQmJihhPXQpO2EmJj1zdHJpbmdUb1BERlN0cmluZyhhLCEwKS5yZXBsYWNlQWxsKCJcMCIsIiIpO2EmJm4ucHVzaChhLnRyaW0oKSl9X2NvbGxlY3RKUyhlLmdldFJhdygiTmV4dCIpLHQsbixhKX1zJiZhLnJlbW92ZShzKX1mdW5jdGlvbiBjb2xsZWN0QWN0aW9ucyhlLHQsbil7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLHM9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiQUEiLHN0b3BXaGVuRm91bmQ6ITF9KTtpZihzKWZvcihsZXQgdD1zLmxlbmd0aC0xO3Q+PTA7dC0tKXtjb25zdCByPXNbdF07aWYociBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3Qsc11vZiByLmdldFJhd0VudHJpZXMoKSl7Y29uc3Qgcj1uW3RdO2lmKCFyKWNvbnRpbnVlO2NvbnN0IGk9W107X2NvbGxlY3RKUyhzLGUsaSxuZXcgUmVmU2V0KTtpLmxlbmd0aD4wJiYoYVtyXT1pKX19aWYodC5oYXMoIkEiKSl7Y29uc3Qgbj1bXTtfY29sbGVjdEpTKHQuZ2V0KCJBIiksZSxuLG5ldyBSZWZTZXQpO24ubGVuZ3RoPjAmJihhLkFjdGlvbj1uKX1yZXR1cm4gT2JqZWN0LmtleXMoYSkubGVuZ3RoP2E6bnVsbH1jb25zdCBrbj17NjA6IiZsdDsiLDYyOiImZ3Q7IiwzODoiJmFtcDsiLDM0OiImcXVvdDsiLDM5OiImYXBvczsifTtmdW5jdGlvbipjb2RlUG9pbnRJdGVyKGUpe2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1lLmNvZGVQb2ludEF0KHQpO24+NTUyOTUmJihuPDU3MzQ0fHxuPjY1NTMzKSYmdCsrO3lpZWxkIG59fWZ1bmN0aW9uIGVuY29kZVRvWG1sU3RyaW5nKGUpe2NvbnN0IHQ9W107bGV0IG49MDtmb3IobGV0IGE9MCxzPWUubGVuZ3RoO2E8czthKyspe2NvbnN0IHM9ZS5jb2RlUG9pbnRBdChhKTtpZigzMjw9cyYmczw9MTI2KXtjb25zdCByPWtuW3NdO2lmKHIpe248YSYmdC5wdXNoKGUuc3Vic3RyaW5nKG4sYSkpO3QucHVzaChyKTtuPWErMX19ZWxzZXtuPGEmJnQucHVzaChlLnN1YnN0cmluZyhuLGEpKTt0LnB1c2goYCYjeCR7cy50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX07YCk7cz42NTUzNSYmYSsrO249YSsxfX1pZigwPT09dC5sZW5ndGgpcmV0dXJuIGU7bjxlLmxlbmd0aCYmdC5wdXNoKGUuc3Vic3RyaW5nKG4pKTtyZXR1cm4gdC5qb2luKCIiKX1mdW5jdGlvbiB2YWxpZGF0ZUZvbnROYW1lKGUsdD0hMSl7Y29uc3Qgbj0vXigifCcpLiooInwnKSQvLmV4ZWMoZSk7aWYobiYmblsxXT09PW5bMl0pe2lmKG5ldyBSZWdFeHAoYFteXFxcXF0ke25bMV19YCkudGVzdChlLnNsaWNlKDEsLTEpKSl7dCYmd2FybihgRm9udEZhbWlseSBjb250YWlucyB1bmVzY2FwZWQgJHtuWzFdfTogJHtlfS5gKTtyZXR1cm4hMX19ZWxzZSBmb3IoY29uc3QgbiBvZiBlLnNwbGl0KC9bIFx0XSsvKSlpZigvXig/OlxkfC1bXGQtXSkvLnRlc3Qobil8fCEvXltcd1xcLV0rJC8udGVzdChuKSl7dCYmd2FybihgRm9udEZhbWlseSBjb250YWlucyBpbnZhbGlkIDxjdXN0b20taWRlbnQ+OiAke2V9LmApO3JldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIHZhbGlkYXRlQ1NTRm9udChlKXtjb25zdCB0PW5ldyBTZXQoWyIxMDAiLCIyMDAiLCIzMDAiLCI0MDAiLCI1MDAiLCI2MDAiLCI3MDAiLCI4MDAiLCI5MDAiLCIxMDAwIiwibm9ybWFsIiwiYm9sZCIsImJvbGRlciIsImxpZ2h0ZXIiXSkse2ZvbnRGYW1pbHk6bixmb250V2VpZ2h0OmEsaXRhbGljQW5nbGU6c309ZTtpZighdmFsaWRhdGVGb250TmFtZShuLCEwKSlyZXR1cm4hMTtjb25zdCByPWE/YS50b1N0cmluZygpOiIiO2UuZm9udFdlaWdodD10LmhhcyhyKT9yOiI0MDAiO2NvbnN0IGk9cGFyc2VGbG9hdChzKTtlLml0YWxpY0FuZ2xlPWlzTmFOKGkpfHxpPC05MHx8aT45MD8iMTQiOnMudG9TdHJpbmcoKTtyZXR1cm4hMH1mdW5jdGlvbiByZWNvdmVySnNVUkwoZSl7Y29uc3QgdD1uZXcgUmVnRXhwKCJeXFxzKigiK1siYXBwLmxhdW5jaFVSTCIsIndpbmRvdy5vcGVuIiwieGZhLmhvc3QuZ290b1VSTCJdLmpvaW4oInwiKS5yZXBsYWNlQWxsKCIuIiwiXFwuIikrIilcXCgoPzonfFwiKShbXidcIl0qKSg/Oid8XCIpKD86LFxccyooXFx3KylcXCl8XFwpKSIsImkiKS5leGVjKGUpO3JldHVybiB0Py5bMl0/e3VybDp0WzJdLG5ld1dpbmRvdzoiYXBwLmxhdW5jaFVSTCI9PT10WzFdJiYidHJ1ZSI9PT10WzNdfTpudWxsfWZ1bmN0aW9uIG51bWJlclRvU3RyaW5nKGUpe2lmKE51bWJlci5pc0ludGVnZXIoZSkpcmV0dXJuIGUudG9TdHJpbmcoKTtjb25zdCB0PU1hdGgucm91bmQoMTAwKmUpO3JldHVybiB0JTEwMD09MD8odC8xMDApLnRvU3RyaW5nKCk6dCUxMD09MD9lLnRvRml4ZWQoMSk6ZS50b0ZpeGVkKDIpfWZ1bmN0aW9uIGdldE5ld0Fubm90YXRpb25zTWFwKGUpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHQ9bmV3IE1hcDtmb3IoY29uc3RbbixhXW9mIGUpbi5zdGFydHNXaXRoKHApJiZ0LmdldE9ySW5zZXJ0Q29tcHV0ZWQoYS5wYWdlSW5kZXgsbWFrZUFycikucHVzaChhKTtyZXR1cm4gdC5zaXplPjA/dDpudWxsfWZ1bmN0aW9uIGdldE1vZGlmaWNhdGlvbkRhdGUoZT1uZXcgRGF0ZSl7ZSBpbnN0YW5jZW9mIERhdGV8fChlPW5ldyBEYXRlKGUpKTtyZXR1cm5bZS5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCksKGUuZ2V0VVRDTW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0hvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIildLmpvaW4oIiIpfWZ1bmN0aW9uIGdldFJvdGF0aW9uTWF0cml4KGUsdCxuKXtzd2l0Y2goZSl7Y2FzZSA5MDpyZXR1cm5bMCwxLC0xLDAsdCwwXTtjYXNlIDE4MDpyZXR1cm5bLTEsMCwwLC0xLHQsbl07Y2FzZSAyNzA6cmV0dXJuWzAsLTEsMSwwLDAsbl07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19ZnVuY3Rpb24gZ2V0U2l6ZUluQnl0ZXMoZSl7cmV0dXJuIE1hdGguY2VpbChNYXRoLmNlaWwoTWF0aC5sb2cyKDErZSkpLzgpfWNvbnN0IHluPTE9PT1uZXcgVWludDhBcnJheShuZXcgVWludDMyQXJyYXkoWzFdKS5idWZmZXIpWzBdPzQyNzgxOTAwODA6MjU1LHFuPX55bjtjbGFzcyBRQ01Te3N0YXRpYyNyPW51bGw7c3RhdGljIF9tZW1vcnk9bnVsbDtzdGF0aWMgX2Rlc3RCdWZmZXI9bnVsbDtzdGF0aWMgX2Rlc3RPZmZzZXQ9MDtzdGF0aWMgX2tlZXBBbHBoYT0hMTtzdGF0aWMgZ2V0IF9tZW1vcnlBcnJheSgpe2NvbnN0IGU9dGhpcy4jcjtyZXR1cm4gZT8uYnl0ZUxlbmd0aD9lOnRoaXMuI3I9bmV3IFVpbnQ4QXJyYXkodGhpcy5fbWVtb3J5LmJ1ZmZlcil9fWNvbnN0IHZuPU9iamVjdC5mcmVlemUoe1JHQjg6MCwwOiJSR0I4IixSR0JBODoxLDE6IlJHQkE4IixCR1JBODoyLDI6IkJHUkE4IixHcmF5ODozLDM6IkdyYXk4IixHcmF5QTg6NCw0OiJHcmF5QTgiLENNWUs6NSw1OiJDTVlLIn0pLFNuPU9iamVjdC5mcmVlemUoe1BlcmNlcHR1YWw6MCwwOiJQZXJjZXB0dWFsIixSZWxhdGl2ZUNvbG9yaW1ldHJpYzoxLDE6IlJlbGF0aXZlQ29sb3JpbWV0cmljIixTYXR1cmF0aW9uOjIsMjoiU2F0dXJhdGlvbiIsQWJzb2x1dGVDb2xvcmltZXRyaWM6MywzOiJBYnNvbHV0ZUNvbG9yaW1ldHJpYyJ9KTtmdW5jdGlvbiBxY21zX2NvbnZlcnRfYXJyYXkoZSx0LG4pe2NvbnN0IGE9cGFzc0FycmF5OFRvV2FzbTAodCxSbi5fX3diaW5kZ2VuX21hbGxvYykscz1PbjtSbi5xY21zX2NvbnZlcnRfYXJyYXkoZSxhLHMsbil9ZnVuY3Rpb24gX193YmdfZ2V0X2ltcG9ydHMoKXtyZXR1cm57X19wcm90b19fOm51bGwsIi4vcWNtc19iZy5qcyI6e19fcHJvdG9fXzpudWxsLF9fd2JnX19fd2JpbmRnZW5fdGhyb3dfMzQ0ZjQyZDMyMTFjNDc2NTpmdW5jdGlvbihlLHQpe3Rocm93IG5ldyBFcnJvcihmdW5jdGlvbiBnZXRTdHJpbmdGcm9tV2FzbTAoZSx0KXtyZXR1cm4gZnVuY3Rpb24gZGVjb2RlVGV4dChlLHQpe0luKz10O2lmKEluPj1Dbil7eG49bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIse2lnbm9yZUJPTTohMCxmYXRhbDohMH0pO3huLmRlY29kZSgpO0luPXR9cmV0dXJuIHhuLmRlY29kZShnZXRVaW50OEFycmF5TWVtb3J5MCgpLnN1YmFycmF5KGUsZSt0KSl9KGU+Pj4wLHQpfShlLHQpKX0sX193YmdfY29weV9yZXN1bHRfMGQxNWYzYmY5ZDkwMTJhZTpmdW5jdGlvbihlLHQpeyFmdW5jdGlvbiBjb3B5X3Jlc3VsdChlLHQpe2NvbnN0e19kZXN0QnVmZmVyOm4sX2Rlc3RPZmZzZXQ6YSxfa2VlcEFscGhhOnMsX21lbW9yeUFycmF5OnJ9PVFDTVM7aWYoIXMpe24uc2V0KHIuc3ViYXJyYXkoZSxlK3QpLGEpO3JldHVybn1jb25zdCBpPXQ+PjIsbz1uLmJ5dGVPZmZzZXQrYTtpZighKDMmKG98ZSkpKXtjb25zdCB0PW5ldyBVaW50MzJBcnJheShuLmJ1ZmZlcixvLGkpLGE9bmV3IFVpbnQzMkFycmF5KFFDTVMuX21lbW9yeS5idWZmZXIsZSxpKTtmb3IobGV0IGU9MDtlPGk7ZSsrKXRbZV09dFtlXSZ5bnxhW2VdJnFuO3JldHVybn1mb3IobGV0IHM9ZSxpPWUrdCxvPWE7czxpO3MrPTQsbys9NCl7bltvXT1yW3NdO25bbysxXT1yW3MrMV07bltvKzJdPXJbcysyXX19KGU+Pj4wLHQ+Pj4wKX0sX193YmluZGdlbl9pbml0X2V4dGVybnJlZl90YWJsZTpmdW5jdGlvbigpe2NvbnN0IGU9Um4uX193YmluZGdlbl9leHRlcm5yZWZzLHQ9ZS5ncm93KDQpO2Uuc2V0KDAsdm9pZCAwKTtlLnNldCh0KzAsdm9pZCAwKTtlLnNldCh0KzEsbnVsbCk7ZS5zZXQodCsyLCEwKTtlLnNldCh0KzMsITEpfX19fWxldCBBbj1udWxsO2Z1bmN0aW9uIGdldFVpbnQ4QXJyYXlNZW1vcnkwKCl7bnVsbCE9PUFuJiYwIT09QW4uYnl0ZUxlbmd0aHx8KEFuPW5ldyBVaW50OEFycmF5KFJuLm1lbW9yeS5idWZmZXIpKTtyZXR1cm4gQW59ZnVuY3Rpb24gcGFzc0FycmF5OFRvV2FzbTAoZSx0KXtjb25zdCBuPXQoMSplLmxlbmd0aCwxKT4+PjA7Z2V0VWludDhBcnJheU1lbW9yeTAoKS5zZXQoZSxuLzEpO09uPWUubGVuZ3RoO3JldHVybiBufWxldCB4bj1uZXcgVGV4dERlY29kZXIoInV0Zi04Iix7aWdub3JlQk9NOiEwLGZhdGFsOiEwfSk7eG4uZGVjb2RlKCk7Y29uc3QgQ249MjE0NjQzNTA3MjtsZXQgSW49MDtsZXQgRm4sVG4sUm4sT249MDtmdW5jdGlvbiBfX3diZ19maW5hbGl6ZV9pbml0KGUsdCl7VG49ZTtSbj1lLmV4cG9ydHM7Rm49dDtBbj1udWxsO1JuLl9fd2JpbmRnZW5fc3RhcnQoKTtyZXR1cm4gUm59ZnVuY3Rpb24gTWF0aENsYW1wKGUsdCxuKXtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoZSx0KSxuKX1mdW5jdGlvbiBpc0RlZmF1bHREZWNvZGVIZWxwZXIoZSx0KXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4hMDtjb25zdCBuPWUubGVuZ3RoO2lmKG48dCl7d2FybigiRGVjb2RlIG1hcCBsZW5ndGggaXMgdG9vIHNob3J0LiIpO3JldHVybiEwfWlmKG4+dCl7aW5mbygiVHJ1bmNhdGluZyB0b28gbG9uZyBkZWNvZGUgbWFwLiIpO2UubGVuZ3RoPXR9cmV0dXJuITF9Y2xhc3MgQ29sb3JTcGFjZXtzdGF0aWMjaT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5hbWU9ZTt0aGlzLm51bUNvbXBzPXR9Z2V0UmdiKGUsdCxuPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKSl7dGhpcy5nZXRSZ2JJdGVtKGUsdCxuLDApO3JldHVybiBufWdldFJnYkhleChlLHQpe2NvbnN0IG49dGhpcy5nZXRSZ2IoZSx0LENvbG9yU3BhY2UuI2kpO3JldHVybiBVdGlsLm1ha2VIZXhDb2xvcihuWzBdLG5bMV0sblsyXSl9Z2V0UmdiSXRlbShlLHQsbixhKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiSXRlbSIpfWdldFJnYkJ1ZmZlcihlLHQsbixhLHMscixpKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiQnVmZmVyIil9Z2V0UmdiSXRlbXMoZSx0LG4sYSxzKXtjb25zdHtudW1Db21wczpyfT10aGlzO2ZvcihsZXQgaT0wLG89MDtpPHQ7aSsrLG8rPXIpe3RoaXMuZ2V0UmdiSXRlbShlLG8sbixhKTthKz0zK3N9fWdldE91dHB1dExlbmd0aChlLHQpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRPdXRwdXRMZW5ndGgiKX1pc1Bhc3N0aHJvdWdoKGUpe3JldHVybiExfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiBDb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZShlLHRoaXMubnVtQ29tcHMpfWZpbGxSZ2IoZSx0LG4sYSxzLHIsaSxvLGwpe2NvbnN0IGY9dCpuO2xldCBjPW51bGw7Y29uc3QgaD0xPDxpLHU9biE9PXN8fHQhPT1hO2lmKHRoaXMuaXNQYXNzdGhyb3VnaChpKSljPW87ZWxzZSBpZigxPT09dGhpcy5udW1Db21wcyYmZj5oJiYiRGV2aWNlR3JheSIhPT10aGlzLm5hbWUmJiJEZXZpY2VSR0IiIT09dGhpcy5uYW1lKXtjb25zdCB0PWk8PTg/bmV3IFVpbnQ4QXJyYXkoaCk6bmV3IFVpbnQxNkFycmF5KGgpO2ZvcihsZXQgZT0wO2U8aDtlKyspdFtlXT1lO2NvbnN0IG49bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqaCk7dGhpcy5nZXRSZ2JCdWZmZXIodCwwLGgsbiwwLGksMCk7aWYodSl7Yz1uZXcgVWludDhBcnJheSgzKmYpO2xldCBlPTA7Zm9yKGxldCB0PTA7dDxmOysrdCl7Y29uc3QgYT0zKm9bdF07Y1tlKytdPW5bYV07Y1tlKytdPW5bYSsxXTtjW2UrK109blthKzJdfX1lbHNle2xldCB0PTA7Zm9yKGxldCBhPTA7YTxmOysrYSl7Y29uc3Qgcz0zKm9bYV07ZVt0KytdPW5bc107ZVt0KytdPW5bcysxXTtlW3QrK109bltzKzJdO3QrPWx9fX1lbHNlIGlmKHUpe2M9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqZik7dGhpcy5nZXRSZ2JCdWZmZXIobywwLGYsYywwLGksMCl9ZWxzZSB0aGlzLmdldFJnYkJ1ZmZlcihvLDAsYSpyLGUsMCxpLGwpO2lmKGMpaWYodSkhZnVuY3Rpb24gcmVzaXplUmdiSW1hZ2UoZSx0LG4sYSxzLHIsaSl7aT0xIT09aT8wOmk7Y29uc3Qgbz1uL3MsbD1hL3I7bGV0IGYsYz0wO2NvbnN0IGg9bmV3IFVpbnQxNkFycmF5KHMpLHU9MypuO2ZvcihsZXQgZT0wO2U8cztlKyspaFtlXT0zKk1hdGguZmxvb3IoZSpvKTtmb3IobGV0IG49MDtuPHI7bisrKXtjb25zdCBhPU1hdGguZmxvb3IobipsKSp1O2ZvcihsZXQgbj0wO248cztuKyspe2Y9YStoW25dO3RbYysrXT1lW2YrK107dFtjKytdPWVbZisrXTt0W2MrK109ZVtmKytdO2MrPWl9fX0oYyxlLHQsbixhLHMsbCk7ZWxzZXtsZXQgdD0wLG49MDtmb3IobGV0IHM9MCxpPWEqcjtzPGk7cysrKXtlW3QrK109Y1tuKytdO2VbdCsrXT1jW24rK107ZVt0KytdPWNbbisrXTt0Kz1sfX19Z2V0IHVzZXNaZXJvVG9PbmVSYW5nZSgpe3JldHVybiBzaGFkb3codGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMCl9c3RhdGljIGlzRGVmYXVsdERlY29kZShlLHQpe2lmKGlzRGVmYXVsdERlY29kZUhlbHBlcihlLDIqdCkpcmV0dXJuITA7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCs9MilpZigwIT09ZVt0XXx8MSE9PWVbdCsxXSlyZXR1cm4hMTtyZXR1cm4hMH19Y2xhc3MgQWx0ZXJuYXRlQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcigiQWx0ZXJuYXRlIixlKTt0aGlzLmJhc2U9dDt0aGlzLnRpbnRGbj1uO3RoaXMudG1wQnVmPW5ldyBGbG9hdDMyQXJyYXkodC5udW1Db21wcyl9Z2V0UmdiSXRlbShlLHQsbixhKXtjb25zdCBzPXRoaXMudG1wQnVmO3RoaXMudGludEZuKGUsdCxzLDApO3RoaXMuYmFzZS5nZXRSZ2JJdGVtKHMsMCxuLGEpfWdldFJnYkl0ZW1zKGUsdCxuLGEscyl7Y29uc3R7YmFzZTpyLG51bUNvbXBzOmksdGludEZuOm99PXRoaXMsbD1yLm51bUNvbXBzLGY9bmV3IEZsb2F0MzJBcnJheSh0KmwpO2ZvcihsZXQgbj0wLGE9MCxzPTA7bjx0O24rKyl7byhlLGEsZixzKTthKz1pO3MrPWx9ci5nZXRSZ2JJdGVtcyhmLHQsbixhLHMpfWdldFJnYkJ1ZmZlcihlLHQsbixhLHMscixpKXtjb25zdCBvPXRoaXMudGludEZuLGw9dGhpcy5iYXNlLGY9MS8oKDE8PHIpLTEpLGM9bC5udW1Db21wcyxoPWwudXNlc1plcm9Ub09uZVJhbmdlLHU9KGwuaXNQYXNzdGhyb3VnaCg4KXx8IWgpJiYwPT09aTtsZXQgbT11P3M6MDtjb25zdCBwPXU/YTpuZXcgVWludDhDbGFtcGVkQXJyYXkoYypuKSxkPXRoaXMubnVtQ29tcHMsZz1uZXcgRmxvYXQzMkFycmF5KGQpLGI9bmV3IEZsb2F0MzJBcnJheShjKTtsZXQgdyxqO2Zvcih3PTA7dzxuO3crKyl7Zm9yKGo9MDtqPGQ7aisrKWdbal09ZVt0KytdKmY7byhnLDAsYiwwKTtpZihoKWZvcihqPTA7ajxjO2orKylwW20rK109MjU1KmJbal07ZWxzZXtsLmdldFJnYkl0ZW0oYiwwLHAsbSk7bSs9Y319dXx8bC5nZXRSZ2JCdWZmZXIocCwwLG4sYSxzLDgsaSl9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoZSp0aGlzLmJhc2UubnVtQ29tcHMvdGhpcy5udW1Db21wcyx0KX19Y2xhc3MgUGF0dGVybkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigiUGF0dGVybiIsbnVsbCk7dGhpcy5iYXNlPWV9aXNEZWZhdWx0RGVjb2RlKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBQYXR0ZXJuQ1MuaXNEZWZhdWx0RGVjb2RlIil9fWNsYXNzIEluZGV4ZWRDUyBleHRlbmRzIENvbG9yU3BhY2V7I287Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKCJJbmRleGVkIiwxKTt0aGlzLmhpZ2hWYWw9dDtjb25zdCBhPXQrMSxzPWUubnVtQ29tcHMqYSxyPW5ldyBVaW50OEFycmF5KHMpO2lmKG4gaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXIuc2V0KG4uZ2V0Qnl0ZXMocykpO2Vsc2V7aWYoInN0cmluZyIhPXR5cGVvZiBuKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW5kZXhlZENTIC0gdW5yZWNvZ25pemVkIGxvb2t1cCB0YWJsZTogJHtufWApO2ZvcihsZXQgZT0wO2U8czsrK2UpcltlXT1uLmNoYXJDb2RlQXQoZSl9dGhpcy4jbz1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyphKTtlLmdldFJnYkJ1ZmZlcihyLDAsYSx0aGlzLiNvLDAsOCwwKX1nZXRSZ2JJdGVtKGUsdCxuLGEpe2NvbnN0IHM9dGhpcy4jbyxyPTMqTWF0aENsYW1wKE1hdGgucm91bmQoZVt0XSksMCx0aGlzLmhpZ2hWYWwpO25bYV09c1tyXTtuW2ErMV09c1tyKzFdO25bYSsyXT1zW3IrMl19Z2V0UmdiQnVmZmVyKGUsdCxuLGEscyxyLGkpe2NvbnN0e2hpZ2hWYWw6b309dGhpcyxsPXRoaXMuI287Zm9yKGxldCByPTA7cjxuOysrcil7Y29uc3Qgbj0zKk1hdGhDbGFtcChNYXRoLnJvdW5kKGVbdCsrXSksMCxvKTthW3MrK109bFtuXTthW3MrK109bFtuKzFdO2FbcysrXT1sW24rMl07cys9aX19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9aXNEZWZhdWx0RGVjb2RlKGUsdCl7aWYoaXNEZWZhdWx0RGVjb2RlSGVscGVyKGUsMikpcmV0dXJuITA7aWYoIU51bWJlci5pc0ludGVnZXIodCl8fHQ8MSl7d2FybigiQml0cyBwZXIgY29tcG9uZW50IGlzIG5vdCBjb3JyZWN0Iik7cmV0dXJuITB9cmV0dXJuIDA9PT1lWzBdJiZlWzFdPT09KDE8PHQpLTF9fWNsYXNzIERldmljZUdyYXlDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlR3JheSIsMSl9Z2V0UmdiSXRlbShlLHQsbixhKXtjb25zdCBzPTI1NSplW3RdO25bYV09blthKzFdPW5bYSsyXT1zfWdldFJnYkJ1ZmZlcihlLHQsbixhLHMscixpKXtjb25zdCBvPTI1NS8oKDE8PHIpLTEpO2xldCBsPXQsZj1zO2ZvcihsZXQgdD0wO3Q8bjsrK3Qpe2NvbnN0IHQ9byplW2wrK107YVtmKytdPXQ7YVtmKytdPXQ7YVtmKytdPXQ7Zis9aX19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fWNsYXNzIERldmljZVJnYkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VSR0IiLDMpfWdldFJnYkl0ZW0oZSx0LG4sYSl7blthXT0yNTUqZVt0XTtuW2ErMV09MjU1KmVbdCsxXTtuW2ErMl09MjU1KmVbdCsyXX1nZXRSZ2JCdWZmZXIoZSx0LG4sYSxzLHIsaSl7aWYoOD09PXImJjA9PT1pKXthLnNldChlLnN1YmFycmF5KHQsdCszKm4pLHMpO3JldHVybn1jb25zdCBvPTI1NS8oKDE8PHIpLTEpO2xldCBsPXQsZj1zO2ZvcihsZXQgdD0wO3Q8bjsrK3Qpe2FbZisrXT1vKmVbbCsrXTthW2YrK109byplW2wrK107YVtmKytdPW8qZVtsKytdO2YrPWl9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpLzN8MH1pc1Bhc3N0aHJvdWdoKGUpe3JldHVybiA4PT09ZX19Y2xhc3MgRGV2aWNlUmdiYUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VSR0JBIiw0KX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gNCplfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfWZpbGxSZ2IoZSx0LG4sYSxzLHIsaSxvLGwpe24hPT1zfHx0IT09YT9mdW5jdGlvbiByZXNpemVSZ2JhSW1hZ2UoZSx0LG4sYSxzLHIsaSl7Y29uc3Qgbz1uL3MsbD1hL3I7bGV0IGY9MDtjb25zdCBjPW5ldyBVaW50MTZBcnJheShzKTtpZigxPT09aSl7Zm9yKGxldCBlPTA7ZTxzO2UrKyljW2VdPU1hdGguZmxvb3IoZSpvKTtjb25zdCBhPW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlciksaT1uZXcgVWludDMyQXJyYXkodC5idWZmZXIpLGg9RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/MTY3NzcyMTU6NDI5NDk2NzA0MDtmb3IobGV0IGU9MDtlPHI7ZSsrKXtjb25zdCB0PWEuc3ViYXJyYXkoTWF0aC5mbG9vcihlKmwpKm4pO2ZvcihsZXQgZT0wO2U8cztlKyspaVtmKytdfD10W2NbZV1dJmh9fWVsc2V7Y29uc3QgYT00LGk9biphO2ZvcihsZXQgZT0wO2U8cztlKyspY1tlXT1NYXRoLmZsb29yKGUqbykqYTtmb3IobGV0IG49MDtuPHI7bisrKXtjb25zdCBhPWUuc3ViYXJyYXkoTWF0aC5mbG9vcihuKmwpKmkpO2ZvcihsZXQgZT0wO2U8cztlKyspe2NvbnN0IG49Y1tlXTt0W2YrK109YVtuXTt0W2YrK109YVtuKzFdO3RbZisrXT1hW24rMl19fX19KG8sZSx0LG4sYSxzLGwpOmZ1bmN0aW9uIGNvcHlSZ2JhSW1hZ2UoZSx0LG4pe2lmKDE9PT1uKXtjb25zdCBuPW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlciksYT1uZXcgVWludDMyQXJyYXkodC5idWZmZXIpLHM9RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/MTY3NzcyMTU6NDI5NDk2NzA0MDtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspYVtlXXw9bltlXSZzfWVsc2V7bGV0IG49MDtmb3IobGV0IGE9MCxzPWUubGVuZ3RoO2E8czthKz00KXt0W24rK109ZVthXTt0W24rK109ZVthKzFdO3RbbisrXT1lW2ErMl19fX0obyxlLGwpfX1jbGFzcyBEZXZpY2VDbXlrQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUNNWUsiLDQpfSNsKGUsdCxuLGEscyl7Y29uc3Qgcj1lW3RdKm4saT1lW3QrMV0qbixvPWVbdCsyXSpuLGw9ZVt0KzNdKm47YVtzXT0yNTUrciooLTQuMzg3MzMyMzg0NjA5OTg4KnIrNTQuNDg2MTUxOTQxODkxNzYqaSsxOC44MjI5MDUwMjE2NTMwMipvKzIxMi4yNTY2MjQ1MTYzOTU4NSpsLTI4NS4yMzMxMDI2MTM3MDA0KStpKigxLjcxNDk3NjM0NzczNjIxMzQqaS01LjYwOTY3MzY5MDQwNDczMTUqbystMTcuODczODcwODYxNDE1NDQ0KmwtNS40OTcwMDY0MjcxOTYzNjYpK28qKC0yLjUyMTczNDAxMzE2ODMwMzMqby0yMS4yNDg5MjMzMzczNTMwNzMqbCsxNy41MTE5MjcwODQxODEzKStsKigtMjEuODYxMjIxNDc0NjM2MDUqbC0xODkuNDgxODA4MzU5MjI3NDcpO2FbcysxXT0yNTUrciooOC44NDEwNDE0MjIwMzYxNDkqcis2MC4xMTgwMjcwNDU1OTczNjYqaSs2Ljg3MTQyNTU5MjA0OTAwNypvKzMxLjE1OTEwMDEzMDA1NTkyMipsLTc5LjI5NzA4NDQ4MTY1NDgpK2kqKC0xNS4zMTAzNjEzMDY5Njc4MTcqaSsxNy41NzUyNTEyNjExMDk0ODIqbysxMzEuMzUyNTA5MTI0OTM5NzYqbC0xOTAuOTQ1MzMwMjU4ODk1MSkrbyooNC40NDQzMzkxMDI4NTI3Mzkqbys5Ljg2MzI4NjE0OTM0MDUqbC0yNC44Njc0MTU4MjU1NTg3OCkrbCooLTIwLjczNzMyNTQ3MTE4MTAzNCpsLTE4Ny44MDQ1MzcwOTcxOTU3OCk7YVtzKzJdPTI1NStyKiguODg0MjUyMjQzMDAwMzI5NipyKzguMDc4Njc3NTAzMTEyOTI4KmkrMzAuODk5NzgzMDk3MDM3Mjkqby0uMjM4ODMyMzg2ODkxNzg5MzQqbC0xNC4xODM1NzY3OTk2NzMyODYpK2kqKDEwLjQ5NTkzMjczNDMyMDcyKmkrNjMuMDIzNzg0OTQ3NTQwNTIqbys1MC42MDY5NTc2NTYzNjA3MzQqbC0xMTIuMjM4ODQyNTM3MTkyNDgpK28qKC4wMzI5NjA0MTExNDg3MzIxNypvKzExNS42MDM4NDQ0OTY0NjY0MSpsLTE5My41ODIwOTM1Njg2MTUwNSkrbCooLTIyLjMzODE2ODA3MzA5ODg2KmwtMTgwLjEyNjEzOTc0NzA4MzY3KX1nZXRSZ2JJdGVtKGUsdCxuLGEpe3RoaXMuI2woZSx0LDEsbixhKX1nZXRSZ2JCdWZmZXIoZSx0LG4sYSxzLHIsaSl7Y29uc3Qgbz0xLygoMTw8ciktMSk7Zm9yKGxldCByPTA7cjxuO3IrKyl7dGhpcy4jbChlLHQsbyxhLHMpO3QrPTQ7cys9MytpfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZS80KigzK3QpfDB9fWNsYXNzIENhbEdyYXlDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKCJDYWxHcmF5IiwxKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxHcmF5Iik7W3RoaXMuWFcsdGhpcy5ZVyx0aGlzLlpXXT1lO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTt0aGlzLkc9bnx8MTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXtpbmZvKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH0wPT09dGhpcy5YQiYmMD09PXRoaXMuWUImJjA9PT10aGlzLlpCfHx3YXJuKGAke3RoaXMubmFtZX0sIEJsYWNrUG9pbnQ6IFhCOiAke3RoaXMuWEJ9LCBZQjogJHt0aGlzLllCfSwgWkI6ICR7dGhpcy5aQn0sIG9ubHkgZGVmYXVsdCB2YWx1ZXMgYXJlIHN1cHBvcnRlZC5gKTtpZih0aGlzLkc8MSl7aW5mbyhgSW52YWxpZCBHYW1tYTogJHt0aGlzLkd9IGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuRz0xfX0jbChlLHQsbixhLHMpe2NvbnN0IHI9KGVbdF0qcykqKnRoaXMuRyxpPXRoaXMuWVcqcixvPU1hdGgubWF4KDI5NS44KmkqKi4zMzMzMzMzMzMzMzMzMzMzLTQwLjgsMCk7blthXT1vO25bYSsxXT1vO25bYSsyXT1vfWdldFJnYkl0ZW0oZSx0LG4sYSl7dGhpcy4jbChlLHQsbixhLDEpfWdldFJnYkJ1ZmZlcihlLHQsbixhLHMscixpKXtjb25zdCBvPTEvKCgxPDxyKS0xKTtmb3IobGV0IHI9MDtyPG47KytyKXt0aGlzLiNsKGUsdCxhLHMsbyk7dCs9MTtzKz0zK2l9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpfX1jbGFzcyBDYWxSR0JDUyBleHRlbmRzIENvbG9yU3BhY2V7c3RhdGljI2Y9bmV3IEZsb2F0MzJBcnJheShbLjg5NTEsLjI2NjQsLS4xNjE0LC0uNzUwMiwxLjcxMzUsLjAzNjcsLjAzODksLS4wNjg1LDEuMDI5Nl0pO3N0YXRpYyNjPW5ldyBGbG9hdDMyQXJyYXkoWy45ODY5OTI5LC0uMTQ3MDU0MywuMTU5OTYyNywuNDMyMzA1MywuNTE4MzYwMywuMDQ5MjkxMiwtLjAwODUyODcsLjA0MDA0MjgsLjk2ODQ4NjddKTtzdGF0aWMjaD1uZXcgRmxvYXQzMkFycmF5KFszLjI0MDQ1NDIsLTEuNTM3MTM4NSwtLjQ5ODUzMTQsLS45NjkyNjYsMS44NzYwMTA4LC4wNDE1NTYsLjA1NTY0MzQsLS4yMDQwMjU5LDEuMDU3MjI1Ml0pO3N0YXRpYyN1PW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7c3RhdGljI209bmV3IEZsb2F0MzJBcnJheSgzKTtzdGF0aWMjcD1uZXcgRmxvYXQzMkFycmF5KDMpO3N0YXRpYyNkPW5ldyBGbG9hdDMyQXJyYXkoMyk7c3RhdGljI2c9KDI0LzExNikqKjMvODtjb25zdHJ1Y3RvcihlLHQsbixhKXtzdXBlcigiQ2FsUkdCIiwzKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxSR0IiKTtjb25zdFtzLHIsaV09dGhpcy53aGl0ZVBvaW50PWUsW28sbCxmXT10aGlzLmJsYWNrUG9pbnQ9dHx8bmV3IEZsb2F0MzJBcnJheSgzKTtbdGhpcy5HUix0aGlzLkdHLHRoaXMuR0JdPW58fG5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7W3RoaXMuTVhBLHRoaXMuTVlBLHRoaXMuTVpBLHRoaXMuTVhCLHRoaXMuTVlCLHRoaXMuTVpCLHRoaXMuTVhDLHRoaXMuTVlDLHRoaXMuTVpDXT1hfHxuZXcgRmxvYXQzMkFycmF5KFsxLDAsMCwwLDEsMCwwLDAsMV0pO2lmKHM8MHx8aTwwfHwxIT09cil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKG88MHx8bDwwfHxmPDApe2luZm8oYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9IFske299LCAke2x9LCAke2Z9XSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5ibGFja1BvaW50PW5ldyBGbG9hdDMyQXJyYXkoMyl9aWYodGhpcy5HUjwwfHx0aGlzLkdHPDB8fHRoaXMuR0I8MCl7aW5mbyhgSW52YWxpZCBHYW1tYSBbJHt0aGlzLkdSfSwgJHt0aGlzLkdHfSwgJHt0aGlzLkdCfV0gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HUj10aGlzLkdHPXRoaXMuR0I9MX19I2IoZSx0LG4pe25bMF09ZVswXSp0WzBdK2VbMV0qdFsxXStlWzJdKnRbMl07blsxXT1lWzNdKnRbMF0rZVs0XSp0WzFdK2VbNV0qdFsyXTtuWzJdPWVbNl0qdFswXStlWzddKnRbMV0rZVs4XSp0WzJdfSN3KGUsdCxuKXtuWzBdPTEqdFswXS9lWzBdO25bMV09MSp0WzFdL2VbMV07blsyXT0xKnRbMl0vZVsyXX0jaihlLHQsbil7blswXT0uOTUwNDcqdFswXS9lWzBdO25bMV09MSp0WzFdL2VbMV07blsyXT0xLjA4ODgzKnRbMl0vZVsyXX0jayhlKXtyZXR1cm4gZTw9LjAwMzEzMDg/TWF0aENsYW1wKDEyLjkyKmUsMCwxKTplPj0uOTk1NTQ1MjU/MTpNYXRoQ2xhbXAoMS4wNTUqZSoqKDEvMi40KS0uMDU1LDAsMSl9I3koZSl7cmV0dXJuIGU8MD8tdGhpcy4jeSgtZSk6ZT44PygoZSsxNikvMTE2KSoqMzplKkNhbFJHQkNTLiNnfSNxKGUsdCxuKXtpZigwPT09ZVswXSYmMD09PWVbMV0mJjA9PT1lWzJdKXtuWzBdPXRbMF07blsxXT10WzFdO25bMl09dFsyXTtyZXR1cm59Y29uc3QgYT10aGlzLiN5KDApLHM9KDEtYSkvKDEtdGhpcy4jeShlWzBdKSkscj0xLXMsaT0oMS1hKS8oMS10aGlzLiN5KGVbMV0pKSxvPTEtaSxsPSgxLWEpLygxLXRoaXMuI3koZVsyXSkpLGY9MS1sO25bMF09dFswXSpzK3I7blsxXT10WzFdKmkrbztuWzJdPXRbMl0qbCtmfSN2KGUsdCxuKXtpZigxPT09ZVswXSYmMT09PWVbMl0pe25bMF09dFswXTtuWzFdPXRbMV07blsyXT10WzJdO3JldHVybn1jb25zdCBhPW47dGhpcy4jYihDYWxSR0JDUy4jZix0LGEpO2NvbnN0IHM9Q2FsUkdCQ1MuI207dGhpcy4jdyhlLGEscyk7dGhpcy4jYihDYWxSR0JDUy4jYyxzLG4pfSNTKGUsdCxuKXtjb25zdCBhPW47dGhpcy4jYihDYWxSR0JDUy4jZix0LGEpO2NvbnN0IHM9Q2FsUkdCQ1MuI207dGhpcy4jaihlLGEscyk7dGhpcy4jYihDYWxSR0JDUy4jYyxzLG4pfSNsKGUsdCxuLGEscyl7Y29uc3Qgcj1NYXRoQ2xhbXAoZVt0XSpzLDAsMSksaT1NYXRoQ2xhbXAoZVt0KzFdKnMsMCwxKSxvPU1hdGhDbGFtcChlW3QrMl0qcywwLDEpLGw9MT09PXI/MTpyKip0aGlzLkdSLGY9MT09PWk/MTppKip0aGlzLkdHLGM9MT09PW8/MTpvKip0aGlzLkdCLGg9dGhpcy5NWEEqbCt0aGlzLk1YQipmK3RoaXMuTVhDKmMsdT10aGlzLk1ZQSpsK3RoaXMuTVlCKmYrdGhpcy5NWUMqYyxtPXRoaXMuTVpBKmwrdGhpcy5NWkIqZit0aGlzLk1aQypjLHA9Q2FsUkdCQ1MuI3A7cFswXT1oO3BbMV09dTtwWzJdPW07Y29uc3QgZD1DYWxSR0JDUy4jZDt0aGlzLiN2KHRoaXMud2hpdGVQb2ludCxwLGQpO2NvbnN0IGc9Q2FsUkdCQ1MuI3A7dGhpcy4jcSh0aGlzLmJsYWNrUG9pbnQsZCxnKTtjb25zdCBiPUNhbFJHQkNTLiNkO3RoaXMuI1MoQ2FsUkdCQ1MuI3UsZyxiKTtjb25zdCB3PUNhbFJHQkNTLiNwO3RoaXMuI2IoQ2FsUkdCQ1MuI2gsYix3KTtuW2FdPTI1NSp0aGlzLiNrKHdbMF0pO25bYSsxXT0yNTUqdGhpcy4jayh3WzFdKTtuW2ErMl09MjU1KnRoaXMuI2sod1syXSl9Z2V0UmdiSXRlbShlLHQsbixhKXt0aGlzLiNsKGUsdCxuLGEsMSl9Z2V0UmdiQnVmZmVyKGUsdCxuLGEscyxyLGkpe2NvbnN0IG89MS8oKDE8PHIpLTEpO2ZvcihsZXQgcj0wO3I8bjsrK3Ipe3RoaXMuI2woZSx0LGEscyxvKTt0Kz0zO3MrPTMraX19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX1jbGFzcyBMYWJDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKCJMYWIiLDMpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIExhYiIpO1t0aGlzLlhXLHRoaXMuWVcsdGhpcy5aV109ZTtbdGhpcy5hbWluLHRoaXMuYW1heCx0aGlzLmJtaW4sdGhpcy5ibWF4XT1ufHxbLTEwMCwxMDAsLTEwMCwxMDBdO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cywgbm8gZmFsbGJhY2sgYXZhaWxhYmxlIik7aWYodGhpcy5YQjwwfHx0aGlzLllCPDB8fHRoaXMuWkI8MCl7aW5mbygiSW52YWxpZCBCbGFja1BvaW50LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdCIpO3RoaXMuWEI9dGhpcy5ZQj10aGlzLlpCPTB9aWYodGhpcy5hbWluPnRoaXMuYW1heHx8dGhpcy5ibWluPnRoaXMuYm1heCl7aW5mbygiSW52YWxpZCBSYW5nZSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHRzIik7dGhpcy5hbWluPS0xMDA7dGhpcy5hbWF4PTEwMDt0aGlzLmJtaW49LTEwMDt0aGlzLmJtYXg9MTAwfX0jQShlKXtyZXR1cm4gZT49Ni8yOT9lKiozOjEwOC84NDEqKGUtNC8yOSl9I3goZSx0LG4sYSl7cmV0dXJuIG4rZSooYS1uKS90fSNsKGUsdCxuLGEscyl7bGV0IHI9ZVt0XSxpPWVbdCsxXSxvPWVbdCsyXTtpZighMSE9PW4pe3I9dGhpcy4jeChyLG4sMCwxMDApO2k9dGhpcy4jeChpLG4sdGhpcy5hbWluLHRoaXMuYW1heCk7bz10aGlzLiN4KG8sbix0aGlzLmJtaW4sdGhpcy5ibWF4KX1pPnRoaXMuYW1heD9pPXRoaXMuYW1heDppPHRoaXMuYW1pbiYmKGk9dGhpcy5hbWluKTtvPnRoaXMuYm1heD9vPXRoaXMuYm1heDpvPHRoaXMuYm1pbiYmKG89dGhpcy5ibWluKTtjb25zdCBsPShyKzE2KS8xMTYsZj1sK2kvNTAwLGM9bC1vLzIwMCxoPXRoaXMuWFcqdGhpcy4jQShmKSx1PXRoaXMuWVcqdGhpcy4jQShsKSxtPXRoaXMuWlcqdGhpcy4jQShjKTtsZXQgcCxkLGc7aWYodGhpcy5aVzwxKXtwPTMuMTMzOSpoKy0xLjYxNyp1Ky0uNDkwNiptO2Q9LS45Nzg1KmgrMS45MTYqdSsuMDMzMyptO2c9LjA3MipoKy0uMjI5KnUrMS40MDU3Km19ZWxzZXtwPTMuMjQwNipoKy0xLjUzNzIqdSstLjQ5ODYqbTtkPS0uOTY4OSpoKzEuODc1OCp1Ky4wNDE1Km07Zz0uMDU1NypoKy0uMjA0KnUrMS4wNTcqbX1hW3NdPTI1NSpNYXRoLnNxcnQocCk7YVtzKzFdPTI1NSpNYXRoLnNxcnQoZCk7YVtzKzJdPTI1NSpNYXRoLnNxcnQoZyl9Z2V0UmdiSXRlbShlLHQsbixhKXt0aGlzLiNsKGUsdCwhMSxuLGEpfWdldFJnYkJ1ZmZlcihlLHQsbixhLHMscixpKXtjb25zdCBvPSgxPDxyKS0xO2ZvcihsZXQgcj0wO3I8bjtyKyspe3RoaXMuI2woZSx0LG8sYSxzKTt0Kz0zO3MrPTMraX19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiEwfWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITEpfX1mdW5jdGlvbiBmZXRjaFN5bmMoZSl7Y29uc3QgdD1uZXcgWE1MSHR0cFJlcXVlc3Q7dC5vcGVuKCJHRVQiLGUsITEpO3QucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7dC5zZW5kKG51bGwpO3JldHVybiB0LnJlc3BvbnNlfWNsYXNzIEljY0NvbG9yU3BhY2UgZXh0ZW5kcyBDb2xvclNwYWNleyNDOyNJO3N0YXRpYyNGPSEwO3N0YXRpYyNUPW51bGw7c3RhdGljI1I9bnVsbDtjb25zdHJ1Y3RvcihlLHQsbil7aWYoIUljY0NvbG9yU3BhY2UuaXNVc2FibGUpdGhyb3cgbmV3IEVycm9yKCJObyBJQ0MgY29sb3Igc3BhY2Ugc3VwcG9ydCIpO3N1cGVyKHQsbik7bGV0IGE7c3dpdGNoKG4pe2Nhc2UgMTphPXZuLkdyYXk4O3RoaXMuI0k9KGUsdCk9PmZ1bmN0aW9uIHFjbXNfY29udmVydF9vbmUoZSx0KXtyZXR1cm4gUm4ucWNtc19jb252ZXJ0X29uZShlLHQpPj4+MH0odGhpcy4jQywyNTUqZVt0XSk7YnJlYWs7Y2FzZSAzOmE9dm4uUkdCODt0aGlzLiNJPShlLHQpPT5mdW5jdGlvbiBxY21zX2NvbnZlcnRfdGhyZWUoZSx0LG4sYSl7cmV0dXJuIFJuLnFjbXNfY29udmVydF90aHJlZShlLHQsbixhKT4+PjB9KHRoaXMuI0MsMjU1KmVbdF0sMjU1KmVbdCsxXSwyNTUqZVt0KzJdKTticmVhaztjYXNlIDQ6YT12bi5DTVlLO3RoaXMuI0k9KGUsdCk9PmZ1bmN0aW9uIHFjbXNfY29udmVydF9mb3VyKGUsdCxuLGEscyl7cmV0dXJuIFJuLnFjbXNfY29udmVydF9mb3VyKGUsdCxuLGEscyk+Pj4wfSh0aGlzLiNDLDI1NSplW3RdLDI1NSplW3QrMV0sMjU1KmVbdCsyXSwyNTUqZVt0KzNdKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgbnVtYmVyIG9mIGNvbXBvbmVudHM6ICR7bn1gKX10aGlzLiNDPWZ1bmN0aW9uIHFjbXNfdHJhbnNmb3JtZXJfZnJvbV9tZW1vcnkoZSx0LG4pe2NvbnN0IGE9cGFzc0FycmF5OFRvV2FzbTAoZSxSbi5fX3diaW5kZ2VuX21hbGxvYykscz1PbjtyZXR1cm4gUm4ucWNtc190cmFuc2Zvcm1lcl9mcm9tX21lbW9yeShhLHMsdCxuKT4+PjB9KGUsYSxTbi5QZXJjZXB0dWFsKTtpZighdGhpcy4jQyl0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCB0byBjcmVhdGUgSUNDIGNvbG9yIHNwYWNlIik7SWNjQ29sb3JTcGFjZS4jUnx8PW5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShlPT57IWZ1bmN0aW9uIHFjbXNfZHJvcF90cmFuc2Zvcm1lcihlKXtSbi5xY21zX2Ryb3BfdHJhbnNmb3JtZXIoZSl9KGUpfSk7SWNjQ29sb3JTcGFjZS4jUi5yZWdpc3Rlcih0aGlzLHRoaXMuI0MpfWdldFJnYkhleChlLHQpe2NvbnN0IG49dGhpcy4jSShlLHQpO3JldHVybiBVdGlsLm1ha2VIZXhDb2xvcihuPj4xNixuPj44JjI1NSwyNTUmbil9Z2V0UmdiSXRlbShlLHQsbixhKXtjb25zdCBzPXRoaXMuI0koZSx0KTtuW2FdPXM+PjE2O25bYSsxXT1zPj44JjI1NTtuW2ErMl09MjU1JnN9Z2V0UmdiSXRlbXMoZSx0LG4sYSxzKXtjb25zdHtudW1Db21wczpyfT10aGlzLGk9dCpyLG89bmV3IFVpbnQ4QXJyYXkoaSk7Zm9yKGxldCB0PTA7dDxpO3QrKylvW3RdPTI1NSplW3RdO1FDTVMuX2Rlc3RCdWZmZXI9bjtRQ01TLl9kZXN0T2Zmc2V0PWE7UUNNUy5fa2VlcEFscGhhPTE9PT1zO3FjbXNfY29udmVydF9hcnJheSh0aGlzLiNDLG8sMT09PXMpO1FDTVMuX2Rlc3RCdWZmZXI9bnVsbH1nZXRSZ2JCdWZmZXIoZSx0LG4sYSxzLHIsaSl7ZT1lLnN1YmFycmF5KHQsdCtuKnRoaXMubnVtQ29tcHMpO2lmKDghPT1yKXtjb25zdCB0PTI1NS8oKDE8PHIpLTEpO2ZvcihsZXQgbj0wLGE9ZS5sZW5ndGg7bjxhO24rKyllW25dKj10fVFDTVMuX2Rlc3RCdWZmZXI9YTtRQ01TLl9kZXN0T2Zmc2V0PXM7UUNNUy5fa2VlcEFscGhhPTE9PT1pJiZhLmJ1ZmZlciE9PWUuYnVmZmVyO3FjbXNfY29udmVydF9hcnJheSh0aGlzLiNDLGUsMT09PWkpO1FDTVMuX2Rlc3RCdWZmZXI9bnVsbH1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZS90aGlzLm51bUNvbXBzKigzK3QpfDB9c3RhdGljIHNldE9wdGlvbnMoe3VzZVdhc206ZSx1c2VXb3JrZXJGZXRjaDp0LHdhc21Vcmw6bn0pe2lmKHQpe3RoaXMuI0Y9ZTt0aGlzLiNUPW59ZWxzZSB0aGlzLiNGPSExfXN0YXRpYyBnZXQgaXNVc2FibGUoKXtsZXQgZT0hMTtpZih0aGlzLiNGKWlmKHRoaXMuI1QpdHJ5e3RoaXMuX21vZHVsZT1mdW5jdGlvbiBpbml0U3luYyhlKXtpZih2b2lkIDAhPT1SbilyZXR1cm4gUm47dm9pZCAwIT09ZSYmKE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PU9iamVjdC5wcm90b3R5cGU/KHttb2R1bGU6ZX09ZSk6Y29uc29sZS53YXJuKCJ1c2luZyBkZXByZWNhdGVkIHBhcmFtZXRlcnMgZm9yIGBpbml0U3luYygpYDsgcGFzcyBhIHNpbmdsZSBvYmplY3QgaW5zdGVhZCIpKTtjb25zdCB0PV9fd2JnX2dldF9pbXBvcnRzKCk7ZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5Lk1vZHVsZXx8KGU9bmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShlKSk7cmV0dXJuIF9fd2JnX2ZpbmFsaXplX2luaXQobmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKGUsdCksZSl9KHttb2R1bGU6ZmV0Y2hTeW5jKGAke3RoaXMuI1R9cWNtc19iZy53YXNtYCl9KTtlPSEhdGhpcy5fbW9kdWxlO1FDTVMuX21lbW9yeT10aGlzLl9tb2R1bGUubWVtb3J5fWNhdGNoKGUpe3dhcm4oYElDQ0Jhc2VkIGNvbG9yIHNwYWNlOiAiJHtlfSIuYCl9ZWxzZSB3YXJuKCJObyBJQ0MgY29sb3Igc3BhY2Ugc3VwcG9ydCBkdWUgdG8gbWlzc2luZyBgd2FzbVVybGAgQVBJIG9wdGlvbiIpO3JldHVybiBzaGFkb3codGhpcywiaXNVc2FibGUiLGUpfX1jbGFzcyBDbXlrSUNDQmFzZWRDUyBleHRlbmRzIEljY0NvbG9yU3BhY2V7c3RhdGljI087Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheShmZXRjaFN5bmMoYCR7Q215a0lDQ0Jhc2VkQ1MuI099Q0dBVFMwMDFDb21wYXQtdjItbWljcm8uaWNjYCkpLCJEZXZpY2VDTVlLIiw0KX1zdGF0aWMgc2V0T3B0aW9ucyh7aWNjVXJsOmV9KXt0aGlzLiNPPWV9c3RhdGljIGdldCBpc1VzYWJsZSgpe2xldCBlPSExO0ljY0NvbG9yU3BhY2UuaXNVc2FibGUmJih0aGlzLiNPP2U9ITA6d2FybigiTm8gQ01ZSyBJQ0MgcHJvZmlsZSBzdXBwb3J0IGR1ZSB0byBtaXNzaW5nIGBpY2NVcmxgIEFQSSBvcHRpb24iKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc1VzYWJsZSIsZSl9fWNsYXNzIFN0cmVhbSBleHRlbmRzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSx0LG4sYSl7c3VwZXIoKTt0aGlzLmJ5dGVzPWUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6bmV3IFVpbnQ4QXJyYXkoZSk7dGhpcy5zdGFydD10fHwwO3RoaXMucG9zPXRoaXMuc3RhcnQ7dGhpcy5lbmQ9dCtufHx0aGlzLmJ5dGVzLmxlbmd0aDt0aGlzLmRpY3Q9YX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kLXRoaXMuc3RhcnR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubGVuZ3RofWdldEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLnBvcyxuPWU/TWF0aC5taW4odCtlLHRoaXMuZW5kKTp0aGlzLmVuZDt0aGlzLnBvcz1uO3JldHVybiB0aGlzLmJ5dGVzLnN1YmFycmF5KHQsbil9Z2V0Qnl0ZVJhbmdlKGUsdCl7ZTwwJiYoZT0wKTt0PnRoaXMuZW5kJiYodD10aGlzLmVuZCk7cmV0dXJuIHRoaXMuYnl0ZXMuc3ViYXJyYXkoZSx0KX1yZXNldCgpe3RoaXMucG9zPXRoaXMuc3RhcnR9bW92ZVN0YXJ0KCl7dGhpcy5zdGFydD10aGlzLnBvc31tYWtlU3ViU3RyZWFtKGUsdCxuPW51bGwpe3JldHVybiBuZXcgU3RyZWFtKHRoaXMuYnl0ZXMuYnVmZmVyLGUsdCxuKX1jbG9uZSgpe3JldHVybiBuZXcgU3RyZWFtKHRoaXMuYnl0ZXMuYnVmZmVyLHRoaXMuc3RhcnQsdGhpcy5sZW5ndGgsdGhpcy5kaWN0Py5jbG9uZSgpKX19Y2xhc3MgU3RyaW5nU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKGUsdD1udWxsKXtzdXBlcihzdHJpbmdUb0J5dGVzKGUpLE5hTixOYU4sdCl9fWNsYXNzIE51bGxTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheSgwKSl9fWNsYXNzIENodW5rZWRTdHJlYW0gZXh0ZW5kcyBTdHJlYW17cHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPTA7X2xhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rPS0xO19sb2FkZWRDaHVua3M9bmV3IFNldDtjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIobmV3IFVpbnQ4QXJyYXkoZSksMCxlLG51bGwpO3RoaXMuY2h1bmtTaXplPXQ7dGhpcy5udW1DaHVua3M9TWF0aC5jZWlsKGUvdCk7dGhpcy5tYW5hZ2VyPW59Z2V0TWlzc2luZ0NodW5rcygpe2NvbnN0IGU9W107Zm9yKGxldCB0PTAsbj10aGlzLm51bUNodW5rczt0PG47Kyt0KXRoaXMuX2xvYWRlZENodW5rcy5oYXModCl8fGUucHVzaCh0KTtyZXR1cm4gZX1nZXQgbnVtQ2h1bmtzTG9hZGVkKCl7cmV0dXJuIHRoaXMuX2xvYWRlZENodW5rcy5zaXplfWdldCBpc0RhdGFMb2FkZWQoKXtyZXR1cm4gdGhpcy5udW1DaHVua3NMb2FkZWQ9PT10aGlzLm51bUNodW5rc31vblJlY2VpdmVEYXRhKGUsdCl7Y29uc3Qgbj10aGlzLmNodW5rU2l6ZTtpZihlJW4hPT0wKXRocm93IG5ldyBFcnJvcihgQmFkIGJlZ2luIG9mZnNldDogJHtlfWApO2NvbnN0IGE9ZSt0LmJ5dGVMZW5ndGg7aWYoYSVuIT09MCYmYSE9PXRoaXMuYnl0ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQmFkIGVuZCBvZmZzZXQ6ICR7YX1gKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheSh0KSxlKTtjb25zdCBzPU1hdGguZmxvb3IoZS9uKSxyPU1hdGguZmxvb3IoKGEtMSkvbikrMTtmb3IobGV0IGU9cztlPHI7KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9b25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKGUpe2xldCB0PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoO2NvbnN0IG49TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheShlKSx0KTt0Kz1lLmJ5dGVMZW5ndGg7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9dDtjb25zdCBhPXQ+PXRoaXMuZW5kP3RoaXMubnVtQ2h1bmtzOk1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7Zm9yKGxldCBlPW47ZTxhOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfWVuc3VyZUJ5dGUoZSl7aWYoZTx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgdD1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKCEodD50aGlzLm51bUNodW5rcykmJnQhPT10aGlzLl9sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuayl7aWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXModCkpdGhyb3cgbmV3IE1pc3NpbmdEYXRhRXhjZXB0aW9uKGUsZSsxKTt0aGlzLl9sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz10fX1lbnN1cmVSYW5nZShlLHQpe2lmKGU+PXQpcmV0dXJuO2lmKHQ8PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybjtjb25zdCBuPU1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSk7aWYobj50aGlzLm51bUNodW5rcylyZXR1cm47Y29uc3QgYT1NYXRoLm1pbihNYXRoLmZsb29yKCh0LTEpL3RoaXMuY2h1bmtTaXplKSsxLHRoaXMubnVtQ2h1bmtzKTtmb3IobGV0IHM9bjtzPGE7KytzKWlmKCF0aGlzLl9sb2FkZWRDaHVua3MuaGFzKHMpKXRocm93IG5ldyBNaXNzaW5nRGF0YUV4Y2VwdGlvbihlLHQpfW5leHRFbXB0eUNodW5rKGUpe2NvbnN0IHQ9dGhpcy5udW1DaHVua3M7Zm9yKGxldCBuPTA7bjx0Oysrbil7Y29uc3QgYT0oZStuKSV0O2lmKCF0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGEpKXJldHVybiBhfXJldHVybiBudWxsfWhhc0NodW5rKGUpe3JldHVybiB0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGUpfWdldEJ5dGUoKXtjb25zdCBlPXRoaXMucG9zO2lmKGU+PXRoaXMuZW5kKXJldHVybi0xO2U+PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZUJ5dGUoZSk7cmV0dXJuIHRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLnBvcyxuPWU/TWF0aC5taW4odCtlLHRoaXMuZW5kKTp0aGlzLmVuZDtuPnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKHQsbik7dGhpcy5wb3M9bjtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheSh0LG4pfWdldEJ5dGVSYW5nZShlLHQpe2U8MCYmKGU9MCk7dD50aGlzLmVuZCYmKHQ9dGhpcy5lbmQpO3Q+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoZSx0KTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfW1ha2VTdWJTdHJlYW0oZSx0LG49bnVsbCl7dD9lK3Q+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoZSxlK3QpOmU+PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZUJ5dGUoZSk7ZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbSgpe31DaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHRoaXMpO0NodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlLmdldE1pc3NpbmdDaHVua3M9ZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMuY2h1bmtTaXplLHQ9TWF0aC5mbG9vcih0aGlzLnN0YXJ0L2UpLG49TWF0aC5mbG9vcigodGhpcy5lbmQtMSkvZSkrMSxhPVtdO2ZvcihsZXQgZT10O2U8bjsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKXx8YS5wdXNoKGUpO3JldHVybiBhfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUsImlzRGF0YUxvYWRlZCIse2dldCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfHwwPT09dGhpcy5nZXRNaXNzaW5nQ2h1bmtzKCkubGVuZ3RofSxjb25maWd1cmFibGU6ITB9KTtjb25zdCBhPW5ldyBDaHVua2VkU3RyZWFtU3Vic3RyZWFtO2EucG9zPWEuc3RhcnQ9ZTthLmVuZD1lK3R8fHRoaXMuZW5kO2EuZGljdD1uO3JldHVybiBhfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuW3RoaXNdfX1jbGFzcyBDaHVua2VkU3RyZWFtTWFuYWdlcnsjSD0hMTtjdXJyUmVxdWVzdElkPTA7X2NodW5rc05lZWRlZEJ5UmVxdWVzdD1uZXcgTWFwOyNCPVByb21pc2Uud2l0aFJlc29sdmVycygpO19wcm9taXNlc0J5UmVxdWVzdD1uZXcgTWFwO19yZXF1ZXN0c0J5Q2h1bms9bmV3IE1hcDtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubGVuZ3RoPXQubGVuZ3RoO3RoaXMuY2h1bmtTaXplPXQucmFuZ2VDaHVua1NpemU7dGhpcy5zdHJlYW09bmV3IENodW5rZWRTdHJlYW0odGhpcy5sZW5ndGgsdGhpcy5jaHVua1NpemUsdGhpcyk7dGhpcy5wZGZTdHJlYW09ZTt0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoO3RoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXJ9YXN5bmMgc2VuZFJlcXVlc3QoZSx0KXtjb25zdCBuPXRoaXMucGRmU3RyZWFtLmdldFJhbmdlUmVhZGVyKGUsdCk7bGV0IGE9W107Zm9yKDs7KXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgbi5yZWFkKCk7aWYodGhpcy4jSCl7YT1udWxsO3JldHVybn1pZih0KWJyZWFrO2EucHVzaChlKX1pZigwPT09YS5sZW5ndGgmJnRoaXMuZGlzYWJsZUF1dG9GZXRjaClyZXR1cm47Y29uc3Qgcz1hcnJheUJ1ZmZlcnNUb0J5dGVzKGEpO2E9bnVsbDt0aGlzLm9uUmVjZWl2ZURhdGEoe2NodW5rOnMuYnVmZmVyLGJlZ2luOmV9KX1yZXF1ZXN0QWxsQ2h1bmtzKGU9ITEpe2lmKCFlKXtjb25zdCBlPXRoaXMuc3RyZWFtLmdldE1pc3NpbmdDaHVua3MoKTt0aGlzLl9yZXF1ZXN0Q2h1bmtzKGUpfXJldHVybiB0aGlzLiNCLnByb21pc2V9X3JlcXVlc3RDaHVua3MoZSl7Y29uc3QgdD10aGlzLmN1cnJSZXF1ZXN0SWQrKyxuPW5ldyBTZXQ7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0LnNldCh0LG4pO2Zvcihjb25zdCB0IG9mIGUpdGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fG4uYWRkKHQpO2lmKDA9PT1uLnNpemUpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGE9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Quc2V0KHQsYSk7Y29uc3Qgcz1bXTtmb3IoY29uc3QgZSBvZiBuKXt0aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0T3JJbnNlcnRDb21wdXRlZChlLCgpPT57cy5wdXNoKGUpO3JldHVybltdfSkucHVzaCh0KX1pZihzLmxlbmd0aD4wKXtjb25zdCBlPXRoaXMuZ3JvdXBDaHVua3Mocyk7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT10LmJlZ2luQ2h1bmsqdGhpcy5jaHVua1NpemUsbj1NYXRoLm1pbih0LmVuZENodW5rKnRoaXMuY2h1bmtTaXplLHRoaXMubGVuZ3RoKTt0aGlzLnNlbmRSZXF1ZXN0KGUsbikuY2F0Y2goYS5yZWplY3QpfX1yZXR1cm4gYS5wcm9taXNlLmNhdGNoKGU9PntpZighdGhpcy4jSCl0aHJvdyBlfSl9Z2V0U3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtfXJlcXVlc3RSYW5nZShlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Y29uc3Qgbj10aGlzLmdldEJlZ2luQ2h1bmsoZSksYT10aGlzLmdldEVuZENodW5rKHQpLHM9W107Zm9yKGxldCBlPW47ZTxhOysrZSlzLnB1c2goZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3Mocyl9cmVxdWVzdFJhbmdlcyhlPVtdKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IGU9dGhpcy5nZXRCZWdpbkNodW5rKG4uYmVnaW4pLGE9dGhpcy5nZXRFbmRDaHVuayhuLmVuZCk7Zm9yKGxldCBuPWU7bjxhOysrbil0LmluY2x1ZGVzKG4pfHx0LnB1c2gobil9dC5zb3J0KChlLHQpPT5lLXQpO3JldHVybiB0aGlzLl9yZXF1ZXN0Q2h1bmtzKHQpfWdyb3VwQ2h1bmtzKGUpe2NvbnN0IHQ9W107bGV0IG49LTEsYT0tMTtmb3IobGV0IHM9MCxyPWUubGVuZ3RoO3M8cjsrK3Mpe2NvbnN0IHI9ZVtzXTtuPDAmJihuPXIpO2lmKGE+PTAmJmErMSE9PXIpe3QucHVzaCh7YmVnaW5DaHVuazpuLGVuZENodW5rOmErMX0pO249cn1zKzE9PT1lLmxlbmd0aCYmdC5wdXNoKHtiZWdpbkNodW5rOm4sZW5kQ2h1bms6cisxfSk7YT1yfXJldHVybiB0fW9uUmVjZWl2ZURhdGEoZSl7Y29uc3R7Y2h1bmtTaXplOnQsbGVuZ3RoOm4sc3RyZWFtOmF9PXRoaXMscz1lLmNodW5rLHI9dm9pZCAwPT09ZS5iZWdpbixpPXI/YS5wcm9ncmVzc2l2ZURhdGFMZW5ndGg6ZS5iZWdpbixvPWkrcy5ieXRlTGVuZ3RoLGw9TWF0aC5mbG9vcihpL3QpLGY9bzxuP01hdGguZmxvb3Ioby90KTpNYXRoLmNlaWwoby90KTtyP2Eub25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKHMpOmEub25SZWNlaXZlRGF0YShpLHMpO2EuaXNEYXRhTG9hZGVkJiZ0aGlzLiNCLnJlc29sdmUoYSk7Y29uc3QgYz1bXTtmb3IobGV0IGU9bDtlPGY7KytlKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYodCl7dGhpcy5fcmVxdWVzdHNCeUNodW5rLmRlbGV0ZShlKTtmb3IoY29uc3QgbiBvZiB0KXtjb25zdCB0PXRoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5nZXQobik7dC5oYXMoZSkmJnQuZGVsZXRlKGUpO3Quc2l6ZT4wfHxjLnB1c2gobil9fX1pZighdGhpcy5kaXNhYmxlQXV0b0ZldGNoJiYwPT09dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNpemUpe2xldCBlO2lmKDE9PT1hLm51bUNodW5rc0xvYWRlZCl7Y29uc3QgdD1hLm51bUNodW5rcy0xO2EuaGFzQ2h1bmsodCl8fChlPXQpfWVsc2UgZT1hLm5leHRFbXB0eUNodW5rKGYpO051bWJlci5pc0ludGVnZXIoZSkmJnRoaXMuX3JlcXVlc3RDaHVua3MoW2VdKX1mb3IoY29uc3QgZSBvZiBjKXtjb25zdCB0PXRoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LmdldChlKTt0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5kZWxldGUoZSk7dC5yZXNvbHZlKCl9dGhpcy5tc2dIYW5kbGVyLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOk1hdGhDbGFtcChhLm51bUNodW5rc0xvYWRlZCp0LGEucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoLG4pLHRvdGFsOm59KX1nZXRCZWdpbkNodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpfWdldEVuZENodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKChlLTEpL3RoaXMuY2h1bmtTaXplKSsxfWFib3J0KGUpe3RoaXMuI0g9ITA7dGhpcy5wZGZTdHJlYW0/LmNhbmNlbEFsbFJlcXVlc3RzKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LnZhbHVlcygpKXQucmVqZWN0KGUpO3RoaXMuI0IucmVqZWN0KGUpfX1mdW5jdGlvbiBjb252ZXJ0VG9SR0JBKGUpe3N3aXRjaChlLmtpbmQpe2Nhc2UgQzpyZXR1cm4gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoZSk7Y2FzZSBGOnJldHVybiBmdW5jdGlvbiBjb252ZXJ0UkdCVG9SR0JBKHtzcmM6ZSxzcmNQb3M6dD0wLGRlc3Q6bixkZXN0UG9zOmE9MCx3aWR0aDpzLGhlaWdodDpyfSl7bGV0IGk9MDtjb25zdCBvPXMqciozLGw9bz4+MixmPW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlcix0LGwpLGM9RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTU7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pe2Zvcig7aTxsLTI7aSs9MyxhKz00KXtjb25zdCBlPWZbaV0sdD1mW2krMV0scz1mW2krMl07blthXT1lfGM7blthKzFdPWU+Pj4yNHx0PDw4fGM7blthKzJdPXQ+Pj4xNnxzPDwxNnxjO25bYSszXT1zPj4+OHxjfWZvcihsZXQgcz00Kmkscj10K287czxyO3MrPTMpblthKytdPWVbc118ZVtzKzFdPDw4fGVbcysyXTw8MTZ8Y31lbHNle2Zvcig7aTxsLTI7aSs9MyxhKz00KXtjb25zdCBlPWZbaV0sdD1mW2krMV0scz1mW2krMl07blthXT1lfGM7blthKzFdPWU8PDI0fHQ+Pj44fGM7blthKzJdPXQ8PDE2fHM+Pj4xNnxjO25bYSszXT1zPDw4fGN9Zm9yKGxldCBzPTQqaSxyPXQrbztzPHI7cys9MyluW2ErK109ZVtzXTw8MjR8ZVtzKzFdPDwxNnxlW3MrMl08PDh8Y31yZXR1cm57c3JjUG9zOnQrbyxkZXN0UG9zOmF9fShlKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQSh7c3JjOmUsc3JjUG9zOnQ9MCxkZXN0Om4sd2lkdGg6YSxoZWlnaHQ6cyxub25CbGFja0NvbG9yOnI9NDI5NDk2NzI5NSxpbnZlcnNlRGVjb2RlOmk9ITF9KXtjb25zdCBvPUZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuPzQyNzgxOTAwODA6MjU1LFtsLGZdPWk/W3Isb106W28scl0sYz1hPj4zLGg9NyZhLHU9bF5mLG09ZS5sZW5ndGg7bj1uZXcgVWludDMyQXJyYXkobi5idWZmZXIpO2xldCBwPTA7Zm9yKGxldCBhPTA7YTxzOysrYSl7Zm9yKGNvbnN0IGE9dCtjO3Q8YTsrK3QscCs9OCl7Y29uc3QgYT1lW3RdO25bcF09bF4tKGE+PjcmMSkmdTtuW3ArMV09bF4tKGE+PjYmMSkmdTtuW3ArMl09bF4tKGE+PjUmMSkmdTtuW3ArM109bF4tKGE+PjQmMSkmdTtuW3ArNF09bF4tKGE+PjMmMSkmdTtuW3ArNV09bF4tKGE+PjImMSkmdTtuW3ArNl09bF4tKGE+PjEmMSkmdTtuW3ArN109bF4tKDEmYSkmdX1pZigwPT09aCljb250aW51ZTtjb25zdCBhPXQ8bT9lW3QrK106MjU1O2ZvcihsZXQgZT0wO2U8aDsrK2UsKytwKW5bcF09bF4tKGE+PjctZSYxKSZ1fXJldHVybntzcmNQb3M6dCxkZXN0UG9zOnB9fWNsYXNzIEltYWdlUmVzaXplcntzdGF0aWMjRD0yMDQ4O3N0YXRpYyNNPUZlYXR1cmVUZXN0LmlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5faW1nRGF0YT1lO3RoaXMuX2lzTWFzaz10fXN0YXRpYyBnZXQgY2FuVXNlSW1hZ2VEZWNvZGVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYW5Vc2VJbWFnZURlY29kZXIiLHRoaXMuI00/SW1hZ2VEZWNvZGVyLmlzVHlwZVN1cHBvcnRlZCgiaW1hZ2UvYm1wIik6UHJvbWlzZS5yZXNvbHZlKCExKSl9c3RhdGljIG5lZWRzVG9CZVJlc2l6ZWQoZSx0KXtpZihlPD10aGlzLiNEJiZ0PD10aGlzLiNEKXJldHVybiExO2NvbnN0e01BWF9ESU06bn09dGhpcztpZihlPm58fHQ+bilyZXR1cm4hMDtjb25zdCBhPWUqdDtpZih0aGlzLl9oYXNNYXhBcmVhKXJldHVybiBhPnRoaXMuTUFYX0FSRUE7aWYoYTx0aGlzLiNEKioyKXJldHVybiExO2lmKHRoaXMuX2FyZUdvb2REaW1zKGUsdCkpe3RoaXMuI0Q9TWF0aC5tYXgodGhpcy4jRCxNYXRoLmZsb29yKE1hdGguc3FydChlKnQpKSk7cmV0dXJuITF9dGhpcy4jRD10aGlzLl9ndWVzc01heCh0aGlzLiNELG4sMTI4LDApO3JldHVybiBhPih0aGlzLk1BWF9BUkVBPXRoaXMuI0QqKjIpfXN0YXRpYyBnZXRSZWR1Y2VQb3dlckZvckpQWChlLHQsbil7Y29uc3QgYT1lKnQscz0yKiozMC8oNCpuKTtpZighdGhpcy5uZWVkc1RvQmVSZXNpemVkKGUsdCkpcmV0dXJuIGE+cz9NYXRoLmNlaWwoTWF0aC5sb2cyKGEvcykpOjA7Y29uc3R7TUFYX0RJTTpyLE1BWF9BUkVBOml9PXRoaXMsbz1NYXRoLm1heChlL3IsdC9yLE1hdGguc3FydChhL01hdGgubWluKHMsaSkpKTtyZXR1cm4gTWF0aC5jZWlsKE1hdGgubG9nMihvKSl9c3RhdGljIGdldCBNQVhfRElNKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJNQVhfRElNIix0aGlzLl9ndWVzc01heCgyMDQ4LDMyNzY4LDAsMSkpfXN0YXRpYyBnZXQgTUFYX0FSRUEoKXt0aGlzLl9oYXNNYXhBcmVhPSEwO3JldHVybiBzaGFkb3codGhpcywiTUFYX0FSRUEiLHRoaXMuX2d1ZXNzTWF4KHRoaXMuI0QsdGhpcy5NQVhfRElNLDEyOCwwKSoqMil9c3RhdGljIHNldCBNQVhfQVJFQShlKXtpZihlPj0wKXt0aGlzLl9oYXNNYXhBcmVhPSEwO3NoYWRvdyh0aGlzLCJNQVhfQVJFQSIsZSl9fXN0YXRpYyBzZXRPcHRpb25zKHtjYW52YXNNYXhBcmVhSW5CeXRlczplPS0xLGlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkOnQ9ITF9KXt0aGlzLl9oYXNNYXhBcmVhfHwodGhpcy5NQVhfQVJFQT1lPj4yKTt0aGlzLiNNPXR9c3RhdGljIF9hcmVHb29kRGltcyhlLHQpe3RyeXtjb25zdCBuPW5ldyBPZmZzY3JlZW5DYW52YXMoZSx0KSxhPW4uZ2V0Q29udGV4dCgiMmQiKTthLmZpbGxSZWN0KDAsMCwxLDEpO2NvbnN0IHM9YS5nZXRJbWFnZURhdGEoMCwwLDEsMSkuZGF0YVszXTtuLndpZHRoPW4uaGVpZ2h0PTE7cmV0dXJuIDAhPT1zfWNhdGNoe3JldHVybiExfX1zdGF0aWMgX2d1ZXNzTWF4KGUsdCxuLGEpe2Zvcig7ZStuKzE8dDspe2NvbnN0IG49TWF0aC5mbG9vcigoZSt0KS8yKSxzPWF8fG47dGhpcy5fYXJlR29vZERpbXMobixzKT9lPW46dD1ufXJldHVybiBlfXN0YXRpYyBhc3luYyBjcmVhdGVJbWFnZShlLHQ9ITEpe3JldHVybiBuZXcgSW1hZ2VSZXNpemVyKGUsdCkuX2NyZWF0ZUltYWdlKCl9YXN5bmMgX2NyZWF0ZUltYWdlKCl7Y29uc3R7X2ltZ0RhdGE6ZX09dGhpcyx7d2lkdGg6dCxoZWlnaHQ6bn09ZTtpZih0Km4qND5kbil7Y29uc3QgZT10aGlzLiNOKCk7aWYoZSlyZXR1cm4gZX1jb25zdCBhPXRoaXMuX2VuY29kZUJNUCgpO2xldCBzLHI7aWYoYXdhaXQgSW1hZ2VSZXNpemVyLmNhblVzZUltYWdlRGVjb2Rlcil7cz1uZXcgSW1hZ2VEZWNvZGVyKHtkYXRhOmEsdHlwZToiaW1hZ2UvYm1wIixwcmVmZXJBbmltYXRpb246ITEsdHJhbnNmZXI6W2EuYnVmZmVyXX0pO3I9cy5kZWNvZGUoKS5jYXRjaChlPT57d2FybihgQk1QIGltYWdlIGRlY29kaW5nIGZhaWxlZDogJHtlfWApO3JldHVybiBjcmVhdGVJbWFnZUJpdG1hcChuZXcgQmxvYihbdGhpcy5fZW5jb2RlQk1QKCkuYnVmZmVyXSx7dHlwZToiaW1hZ2UvYm1wIn0pKX0pLmZpbmFsbHkoKCk9PntzLmNsb3NlKCl9KX1lbHNlIHI9Y3JlYXRlSW1hZ2VCaXRtYXAobmV3IEJsb2IoW2EuYnVmZmVyXSx7dHlwZToiaW1hZ2UvYm1wIn0pKTtjb25zdHtNQVhfQVJFQTppLE1BWF9ESU06b309SW1hZ2VSZXNpemVyLGw9TWF0aC5tYXgodC9vLG4vbyxNYXRoLnNxcnQodCpuL2kpKSxmPU1hdGgubWF4KGwsMiksYz1NYXRoLnJvdW5kKDEwKihsKzEuMjUpKS8xMC9mLGg9TWF0aC5mbG9vcihNYXRoLmxvZzIoYykpLHU9bmV3IEFycmF5KGgrMikuZmlsbCgyKTt1WzBdPWY7dS5zcGxpY2UoLTEsMSxjLygxPDxoKSk7bGV0IG09dCxwPW47Y29uc3QgZD1hd2FpdCByO2xldCBnPWQuaW1hZ2V8fGQ7Zm9yKGNvbnN0IGUgb2YgdSl7Y29uc3QgdD1tLG49cDttPU1hdGguZmxvb3IobS9lKTtwPU1hdGguZmxvb3IocC9lKTtjb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXMobSxwKTthLmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKGcsMCwwLHQsbiwwLDAsbSxwKTtnLmNsb3NlKCk7Zz1hLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfWUuZGF0YT1udWxsO2UuYml0bWFwPWc7ZS53aWR0aD1tO2UuaGVpZ2h0PXA7cmV0dXJuIGV9I04oKXtjb25zdHtfaW1nRGF0YTplfT10aGlzLHtkYXRhOnQsd2lkdGg6bixoZWlnaHQ6YSxraW5kOnN9PWUscj1uKmEqNCxpPU1hdGguY2VpbChNYXRoLmxvZzIoci9kbikpLG89bj4+aSxsPWE+Pmk7bGV0IGYsYz1hO3RyeXtmPW5ldyBVaW50OEFycmF5KHIpfWNhdGNoe2xldCBlPU1hdGguZmxvb3IoTWF0aC5sb2cyKHIrMSkpO2Zvcig7Oyl0cnl7Zj1uZXcgVWludDhBcnJheSgyKiplLTEpO2JyZWFrfWNhdGNoe2UtPTF9Yz1NYXRoLmZsb29yKCgyKiplLTEpLyg0Km4pKTtjb25zdCB0PW4qYyo0O3Q8Zi5sZW5ndGgmJihmPW5ldyBVaW50OEFycmF5KHQpKX1jb25zdCBoPW5ldyBVaW50MzJBcnJheShmLmJ1ZmZlciksdT1uZXcgVWludDMyQXJyYXkobypsKTtsZXQgbT0wLHA9MDtjb25zdCBkPU1hdGguY2VpbChhL2MpLGc9YSVjPT09MD9hOmElYztmb3IobGV0IGU9MDtlPGQ7ZSsrKXtjb25zdCBhPWU8ZC0xP2M6Zzsoe3NyY1BvczptfT1jb252ZXJ0VG9SR0JBKHtraW5kOnMsc3JjOnQsZGVzdDpoLHdpZHRoOm4saGVpZ2h0OmEsaW52ZXJzZURlY29kZTp0aGlzLl9pc01hc2ssc3JjUG9zOm19KSk7Zm9yKGxldCBlPTAsdD1hPj5pO2U8dDtlKyspe2NvbnN0IHQ9aC5zdWJhcnJheSgoZTw8aSkqbik7Zm9yKGxldCBlPTA7ZTxvO2UrKyl1W3ArK109dFtlPDxpXX19aWYoSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQobyxsKSl7ZS5kYXRhPXU7ZS53aWR0aD1vO2UuaGVpZ2h0PWw7ZS5raW5kPVQ7cmV0dXJuIG51bGx9Y29uc3QgYj1uZXcgT2Zmc2NyZWVuQ2FudmFzKG8sbCk7Yi5nZXRDb250ZXh0KCIyZCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pLnB1dEltYWdlRGF0YShuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheSh1LmJ1ZmZlciksbyxsKSwwLDApO2UuZGF0YT1udWxsO2UuYml0bWFwPWIudHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7ZS53aWR0aD1vO2UuaGVpZ2h0PWw7cmV0dXJuIGV9X2VuY29kZUJNUCgpe2NvbnN0e3dpZHRoOmUsaGVpZ2h0OnQsa2luZDpufT10aGlzLl9pbWdEYXRhO2xldCBhLHM9dGhpcy5faW1nRGF0YS5kYXRhLHI9bmV3IFVpbnQ4QXJyYXkoMCksaT1yLG89MDtzd2l0Y2gobil7Y2FzZSBDOnthPTE7cj1uZXcgVWludDhBcnJheSh0aGlzLl9pc01hc2s/WzI1NSwyNTUsMjU1LDI1NSwwLDAsMCwwXTpbMCwwLDAsMCwyNTUsMjU1LDI1NSwyNTVdKTtjb25zdCBuPWUrNz4+MyxpPW4rMyYtNDtpZihuIT09aSl7Y29uc3QgZT1uZXcgVWludDhBcnJheShpKnQpO2xldCBhPTA7Zm9yKGxldCByPTAsbz10Km47cjxvO3IrPW4sYSs9aSllLnNldChzLnN1YmFycmF5KHIscituKSxhKTtzPWV9YnJlYWt9Y2FzZSBGOmE9MjQ7aWYoMyZlKXtjb25zdCBuPTMqZSxhPW4rMyYtNCxyPWEtbixpPW5ldyBVaW50OEFycmF5KGEqdCk7bGV0IG89MDtmb3IobGV0IGU9MCxhPXQqbjtlPGE7ZSs9bil7Y29uc3QgdD1zLnN1YmFycmF5KGUsZStuKTtmb3IobGV0IGU9MDtlPG47ZSs9Myl7aVtvKytdPXRbZSsyXTtpW28rK109dFtlKzFdO2lbbysrXT10W2VdfW8rPXJ9cz1pfWVsc2UgZm9yKGxldCBlPTAsdD1zLmxlbmd0aDtlPHQ7ZSs9Myl7Y29uc3QgdD1zW2VdO3NbZV09c1tlKzJdO3NbZSsyXT10fWJyZWFrO2Nhc2UgVDphPTMyO289MztpPW5ldyBVaW50OEFycmF5KDY4KTtjb25zdCBuPW5ldyBEYXRhVmlldyhpLmJ1ZmZlcik7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pe24uc2V0VWludDMyKDAsMjU1LCEwKTtuLnNldFVpbnQzMig0LDY1MjgwLCEwKTtuLnNldFVpbnQzMig4LDE2NzExNjgwLCEwKTtuLnNldFVpbnQzMigxMiw0Mjc4MTkwMDgwLCEwKX1lbHNle24uc2V0VWludDMyKDAsNDI3ODE5MDA4MCwhMCk7bi5zZXRVaW50MzIoNCwxNjcxMTY4MCwhMCk7bi5zZXRVaW50MzIoOCw2NTI4MCwhMCk7bi5zZXRVaW50MzIoMTIsMjU1LCEwKX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmb3JtYXQiKX1sZXQgbD0wO2NvbnN0IGY9NDAraS5sZW5ndGgsYz0xNCtmK3IubGVuZ3RoK3MubGVuZ3RoLGg9bmV3IFVpbnQ4QXJyYXkoYyksdT1uZXcgRGF0YVZpZXcoaC5idWZmZXIpO3Uuc2V0VWludDE2KGwsMTk3NzgsITApO2wrPTI7dS5zZXRVaW50MzIobCxjLCEwKTtsKz00O3Uuc2V0VWludDMyKGwsMCwhMCk7bCs9NDt1LnNldFVpbnQzMihsLDE0K2Yrci5sZW5ndGgsITApO2wrPTQ7dS5zZXRVaW50MzIobCxmLCEwKTtsKz00O3Uuc2V0SW50MzIobCxlLCEwKTtsKz00O3Uuc2V0SW50MzIobCwtdCwhMCk7bCs9NDt1LnNldFVpbnQxNihsLDEsITApO2wrPTI7dS5zZXRVaW50MTYobCxhLCEwKTtsKz0yO3Uuc2V0VWludDMyKGwsbywhMCk7bCs9NDt1LnNldFVpbnQzMihsLDAsITApO2wrPTQ7dS5zZXRJbnQzMihsLDAsITApO2wrPTQ7dS5zZXRJbnQzMihsLDAsITApO2wrPTQ7dS5zZXRVaW50MzIobCxyLmxlbmd0aC80LCEwKTtsKz00O3Uuc2V0VWludDMyKGwsMCwhMCk7bCs9NDtoLnNldChpLGwpO2wrPWkubGVuZ3RoO2guc2V0KHIsbCk7bCs9ci5sZW5ndGg7aC5zZXQocyxsKTtyZXR1cm4gaH19Y29uc3QgSG49bmV3IFVpbnQ4QXJyYXkoMCk7Y2xhc3MgRGVjb2RlU3RyZWFtIGV4dGVuZHMgQmFzZVN0cmVhbXtidWZmZXI9SG47YnVmZmVyTGVuZ3RoPTA7ZW9mPSExO21pbkJ1ZmZlckxlbmd0aD01MTI7cG9zPTA7Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9yYXdNaW5CdWZmZXJMZW5ndGg9ZXx8MDtpZihlKWZvcig7dGhpcy5taW5CdWZmZXJMZW5ndGg8ZTspdGhpcy5taW5CdWZmZXJMZW5ndGgqPTJ9cmVhZEJsb2NrKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgcmVhZEJsb2NrYCBjYWxsZWQiKX1nZXQgaXNFbXB0eSgpe2Zvcig7IXRoaXMuZW9mJiYwPT09dGhpcy5idWZmZXJMZW5ndGg7KXRoaXMucmVhZEJsb2NrKCk7cmV0dXJuIDA9PT10aGlzLmJ1ZmZlckxlbmd0aH1lbnN1cmVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJ1ZmZlcjtpZihlPD10LmJ5dGVMZW5ndGgpcmV0dXJuIHQ7bGV0IG49dGhpcy5taW5CdWZmZXJMZW5ndGg7Zm9yKDtuPGU7KW4qPTI7Y29uc3QgYT1uZXcgVWludDhBcnJheShuKTthLnNldCh0KTtyZXR1cm4gdGhpcy5idWZmZXI9YX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPD1lOyl7aWYodGhpcy5lb2YpcmV0dXJuLTE7dGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gdGhpcy5idWZmZXJbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSx0PW51bGwpe2NvbnN0IG49dGhpcy5wb3M7bGV0IGE7aWYoZSl7dGhpcy5lbnN1cmVCdWZmZXIobitlKTthPW4rZTtmb3IoOyF0aGlzLmVvZiYmdGhpcy5idWZmZXJMZW5ndGg8YTspdGhpcy5yZWFkQmxvY2sodCk7Y29uc3Qgcz10aGlzLmJ1ZmZlckxlbmd0aDthPnMmJihhPXMpfWVsc2V7Zm9yKDshdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKHQpO2E9dGhpcy5idWZmZXJMZW5ndGh9dGhpcy5wb3M9YTtyZXR1cm4gdGhpcy5idWZmZXIuc3ViYXJyYXkobixhKX1hc3luYyBnZXRJbWFnZURhdGEoZSx0KXtpZighdGhpcy5jYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcilyZXR1cm4gdGhpcy5pc0FzeW5jRGVjb2Rlcj90aGlzLmRlY29kZUltYWdlKG51bGwsZSx0KTp0aGlzLmdldEJ5dGVzKGUsdCk7Y29uc3Qgbj1hd2FpdCB0aGlzLnN0cmVhbS5hc3luY0dldEJ5dGVzKCk7cmV0dXJuIHRoaXMuZGVjb2RlSW1hZ2UobixlLHQpfWFzeW5jIGFzeW5jR2V0Qnl0ZXNGcm9tRGVjb21wcmVzc2lvblN0cmVhbShlKXt0aGlzLnN0cmVhbS5yZXNldCgpO2NvbnN0IHQ9dGhpcy5zdHJlYW0uaXNBc3luYz9hd2FpdCB0aGlzLnN0cmVhbS5hc3luY0dldEJ5dGVzKCk6dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoKTt0cnl7Y29uc3R7cmVhZGFibGU6bix3cml0YWJsZTphfT1uZXcgRGVjb21wcmVzc2lvblN0cmVhbShlKSxzPWEuZ2V0V3JpdGVyKCk7YXdhaXQgcy5yZWFkeTtzLndyaXRlKHQpLnRoZW4oYXN5bmMoKT0+e2F3YWl0IHMucmVhZHk7YXdhaXQgcy5jbG9zZSgpfSkuY2F0Y2goKCk9Pnt9KTtjb25zdCByPVtdO2xldCBpPTA7Zm9yIGF3YWl0KGNvbnN0IGUgb2Ygbil7ci5wdXNoKGUpO2krPWUuYnl0ZUxlbmd0aH1jb25zdCBvPW5ldyBVaW50OEFycmF5KGkpO2xldCBsPTA7Zm9yKGNvbnN0IGUgb2Ygcil7by5zZXQoZSxsKTtsKz1lLmJ5dGVMZW5ndGh9cmV0dXJue2RlY29tcHJlc3NlZDpvLGNvbXByZXNzZWQ6dH19Y2F0Y2h7cmV0dXJue2RlY29tcHJlc3NlZDpudWxsLGNvbXByZXNzZWQ6dH19fXJlc2V0KCl7dGhpcy5wb3M9MH1tYWtlU3ViU3RyZWFtKGUsdCxuPW51bGwpe2lmKHZvaWQgMD09PXQpZm9yKDshdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKCk7ZWxzZXtjb25zdCBuPWUrdDtmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPD1uJiYhdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKCl9cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5idWZmZXIsZSx0LG4pfWNsb25lKCl7Zm9yKDshdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKCk7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5idWZmZXIsMCx0aGlzLmJ1ZmZlckxlbmd0aCx0aGlzLmRpY3Q/LmNsb25lKCkpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIHRoaXMuc3RyZWFtP3RoaXMuc3RyZWFtLmdldEJhc2VTdHJlYW1zKCk6bnVsbH19Y2xhc3MgU3RyZWFtc1NlcXVlbmNlU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdD1udWxsKXtlPWUuZmlsdGVyKGU9PmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhZS5pc0ltYWdlU3RyZWFtKTtsZXQgbj0wO2Zvcihjb25zdCB0IG9mIGUpbis9dCBpbnN0YW5jZW9mIERlY29kZVN0cmVhbT90Ll9yYXdNaW5CdWZmZXJMZW5ndGg6dC5sZW5ndGg7c3VwZXIobik7dGhpcy5zdHJlYW1zPWU7dGhpcy5fb25FcnJvcj10fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW1zO2lmKDA9PT1lLmxlbmd0aCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IHQ9ZS5zaGlmdCgpO2xldCBuO3RyeXtuPXQuZ2V0Qnl0ZXMoKX1jYXRjaChlKXtpZih0aGlzLl9vbkVycm9yKXt0aGlzLl9vbkVycm9yKGUsdC5kaWN0Py5vYmpJZCk7cmV0dXJufXRocm93IGV9Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aCxzPWErbi5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIocykuc2V0KG4sYSk7dGhpcy5idWZmZXJMZW5ndGg9c31nZXRCYXNlU3RyZWFtcygpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5zdHJlYW1zKXtjb25zdCBuPXQuZ2V0QmFzZVN0cmVhbXMoKTtuJiZlLnB1c2goLi4ubil9cmV0dXJuIGUubGVuZ3RoPjA/ZTpudWxsfX1jbGFzcyBDb2xvclNwYWNlVXRpbHN7c3RhdGljIHBhcnNlKHtjczplLHhyZWY6dCxyZXNvdXJjZXM6bj1udWxsLHBkZkZ1bmN0aW9uRmFjdG9yeTphLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnIsYXN5bmNJZk5vdENhY2hlZDppPSExfSl7Y29uc3Qgbz17eHJlZjp0LHJlc291cmNlczpuLHBkZkZ1bmN0aW9uRmFjdG9yeTphLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnJ9O2xldCBsLGYsYztpZihlIGluc3RhbmNlb2YgUmVmKXtmPWU7Y29uc3Qgbj1zLmdldEJ5UmVmKGYpfHxyLmdldEJ5UmVmKGYpO2lmKG4pcmV0dXJuIG47ZT10LmZldGNoKGUpfWlmKGUgaW5zdGFuY2VvZiBOYW1lKXtsPWUubmFtZTtjb25zdCB0PXIuZ2V0QnlOYW1lKGwpO2lmKHQpcmV0dXJuIHR9dHJ5e2M9dGhpcy4jUChlLG8pfWNhdGNoKGUpe2lmKGkmJiEoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSlyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7dGhyb3cgZX1pZihsfHxmKXtyLnNldChsLGYsYyk7ZiYmcy5zZXQobnVsbCxmLGMpfXJldHVybiBpP1Byb21pc2UucmVzb2x2ZShjKTpjfXN0YXRpYyNFKGUsdCl7Y29uc3R7Z2xvYmFsQ29sb3JTcGFjZUNhY2hlOm59PXQ7bGV0IGE7aWYoZSBpbnN0YW5jZW9mIFJlZil7YT1lO2NvbnN0IHQ9bi5nZXRCeVJlZihhKTtpZih0KXJldHVybiB0fWNvbnN0IHM9dGhpcy4jUChlLHQpO2EmJm4uc2V0KG51bGwsYSxzKTtyZXR1cm4gc31zdGF0aWMjUChlLHQpe2NvbnN0e3hyZWY6bixyZXNvdXJjZXM6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6cyxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6cn09dDtpZigoZT1uLmZldGNoSWZSZWYoZSkpaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5ncmF5O2Nhc2UiUkdCIjpjYXNlIkRldmljZVJHQiI6cmV0dXJuIHRoaXMucmdiO2Nhc2UiRGV2aWNlUkdCQSI6cmV0dXJuIHRoaXMucmdiYTtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuY215aztjYXNlIlBhdHRlcm4iOnJldHVybiBuZXcgUGF0dGVybkNTKG51bGwpO2RlZmF1bHQ6aWYoYSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IG49YS5nZXQoIkNvbG9yU3BhY2UiKTtpZihuIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgYT1uLmdldChlLm5hbWUpO2lmKGEpe2lmKGEgaW5zdGFuY2VvZiBOYW1lKXJldHVybiB0aGlzLiNQKGEsdCk7ZT1hO2JyZWFrfX19d2FybihgVW5yZWNvZ25pemVkIENvbG9yU3BhY2U6ICR7ZS5uYW1lfWApO3JldHVybiB0aGlzLmdyYXl9aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgYT1uLmZldGNoSWZSZWYoZVswXSkubmFtZTtsZXQgaSxvLGwsZixjLGg7c3dpdGNoKGEpe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5ncmF5O2Nhc2UiUkdCIjpjYXNlIkRldmljZVJHQiI6cmV0dXJuIHRoaXMucmdiO2Nhc2UiQ01ZSyI6Y2FzZSJEZXZpY2VDTVlLIjpyZXR1cm4gdGhpcy5jbXlrO2Nhc2UiQ2FsR3JheSI6aT1uLmZldGNoSWZSZWYoZVsxXSk7Zj1pLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7Yz1pLmdldEFycmF5KCJCbGFja1BvaW50Iik7aD1pLmdldCgiR2FtbWEiKTtyZXR1cm4gbmV3IENhbEdyYXlDUyhmLGMsaCk7Y2FzZSJDYWxSR0IiOmk9bi5mZXRjaElmUmVmKGVbMV0pO2Y9aS5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2M9aS5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2g9aS5nZXRBcnJheSgiR2FtbWEiKTtjb25zdCB1PWkuZ2V0QXJyYXkoIk1hdHJpeCIpO3JldHVybiBuZXcgQ2FsUkdCQ1MoZixjLGgsdSk7Y2FzZSJJQ0NCYXNlZCI6Y29uc3QgbT1lWzFdaW5zdGFuY2VvZiBSZWY7aWYobSl7Y29uc3QgdD1yLmdldEJ5UmVmKGVbMV0pO2lmKHQpcmV0dXJuIHR9Y29uc3QgcD1uLmZldGNoSWZSZWYoZVsxXSksZD1wLmRpY3Q7bz1kLmdldCgiTiIpO2lmKEljY0NvbG9yU3BhY2UuaXNVc2FibGUpdHJ5e2NvbnN0IHQ9bmV3IEljY0NvbG9yU3BhY2UocC5nZXRCeXRlcygpLCJJQ0NCYXNlZCIsbyk7bSYmci5zZXQobnVsbCxlWzFdLHQpO3JldHVybiB0fWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyB0O3dhcm4oYElDQ0Jhc2VkIGNvbG9yIHNwYWNlICgke2VbMV19KTogIiR7dH0iLmApfWNvbnN0IGc9ZC5nZXRSYXcoIkFsdGVybmF0ZSIpO2lmKGcpe2NvbnN0IGU9dGhpcy4jRShnLHQpO2lmKGUubnVtQ29tcHM9PT1vKXJldHVybiBlO3dhcm4oIklDQ0Jhc2VkIGNvbG9yIHNwYWNlOiBJZ25vcmluZyBpbmNvcnJlY3QgL0FsdGVybmF0ZSBlbnRyeS4iKX1pZigxPT09bylyZXR1cm4gdGhpcy5ncmF5O2lmKDM9PT1vKXJldHVybiB0aGlzLnJnYjtpZig0PT09bylyZXR1cm4gdGhpcy5jbXlrO2JyZWFrO2Nhc2UiUGF0dGVybiI6bD1lWzFdfHxudWxsO2wmJj10aGlzLiNFKGwsdCk7cmV0dXJuIG5ldyBQYXR0ZXJuQ1MobCk7Y2FzZSJJIjpjYXNlIkluZGV4ZWQiOmw9dGhpcy4jRShlWzFdLHQpO2NvbnN0IGI9TWF0aENsYW1wKG4uZmV0Y2hJZlJlZihlWzJdKSwwLDI1NSksdz1uLmZldGNoSWZSZWYoZVszXSk7cmV0dXJuIG5ldyBJbmRleGVkQ1MobCxiLHcpO2Nhc2UiU2VwYXJhdGlvbiI6Y2FzZSJEZXZpY2VOIjpjb25zdCBqPW4uZmV0Y2hJZlJlZihlWzFdKTtvPUFycmF5LmlzQXJyYXkoaik/ai5sZW5ndGg6MTtsPXRoaXMuI0UoZVsyXSx0KTtjb25zdCBrPXMuY3JlYXRlKGVbM10pO3JldHVybiBuZXcgQWx0ZXJuYXRlQ1MobyxsLGspO2Nhc2UiTGFiIjppPW4uZmV0Y2hJZlJlZihlWzFdKTtmPWkuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtjPWkuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtjb25zdCB5PWkuZ2V0QXJyYXkoIlJhbmdlIik7cmV0dXJuIG5ldyBMYWJDUyhmLGMseSk7ZGVmYXVsdDp3YXJuKGBVbmltcGxlbWVudGVkIENvbG9yU3BhY2Ugb2JqZWN0OiAke2F9YCk7cmV0dXJuIHRoaXMuZ3JheX19d2FybihgVW5yZWNvZ25pemVkIENvbG9yU3BhY2Ugb2JqZWN0OiAke2V9YCk7cmV0dXJuIHRoaXMuZ3JheX1zdGF0aWMgZ2V0IGdyYXkoKXtyZXR1cm4gc2hhZG93KHRoaXMsImdyYXkiLG5ldyBEZXZpY2VHcmF5Q1MpfXN0YXRpYyBnZXQgcmdiKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJyZ2IiLG5ldyBEZXZpY2VSZ2JDUyl9c3RhdGljIGdldCByZ2JhKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJyZ2JhIixuZXcgRGV2aWNlUmdiYUNTKX1zdGF0aWMgZ2V0IGNteWsoKXtpZihDbXlrSUNDQmFzZWRDUy5pc1VzYWJsZSl0cnl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjbXlrIixuZXcgQ215a0lDQ0Jhc2VkQ1MpfWNhdGNoe3dhcm4oIkNNWUsgZmFsbGJhY2s6IERldmljZUNNWUsiKX1yZXR1cm4gc2hhZG93KHRoaXMsImNteWsiLG5ldyBEZXZpY2VDbXlrQ1MpfX1jbGFzcyBKcGVnRXJyb3IgZXh0ZW5kcyBhbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJKcGVnRXJyb3IiKX19Y2xhc3MgRE5MTWFya2VyRXJyb3IgZXh0ZW5kcyBhbntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIkROTE1hcmtlckVycm9yIik7dGhpcy5zY2FuTGluZXM9dH19Y2xhc3MgRU9JTWFya2VyRXJyb3IgZXh0ZW5kcyBhbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJFT0lNYXJrZXJFcnJvciIpfX1jb25zdCBCbj1uZXcgVWludDhBcnJheShbMCwxLDgsMTYsOSwyLDMsMTAsMTcsMjQsMzIsMjUsMTgsMTEsNCw1LDEyLDE5LDI2LDMzLDQwLDQ4LDQxLDM0LDI3LDIwLDEzLDYsNywxNCwyMSwyOCwzNSw0Miw0OSw1Niw1Nyw1MCw0MywzNiwyOSwyMiwxNSwyMywzMCwzNyw0NCw1MSw1OCw1OSw1Miw0NSwzOCwzMSwzOSw0Niw1Myw2MCw2MSw1NCw0Nyw1NSw2Miw2M10pLERuPTQwMTcsTW49Nzk5LE5uPTM0MDYsUG49MjI3NixFbj0xNTY3LF9uPTM3ODQsem49NTc5MyxMbj0yODk2O2Z1bmN0aW9uIGJ1aWxkSHVmZm1hblRhYmxlKGUsdCl7bGV0IG4sYSxzPTAscj0xNjtmb3IoO3I+MCYmIWVbci0xXTspci0tO2NvbnN0IGk9W3tjaGlsZHJlbjpbXSxpbmRleDowfV07bGV0IG8sbD1pWzBdO2ZvcihuPTA7bjxyO24rKyl7Zm9yKGE9MDthPGVbbl07YSsrKXtsPWkucG9wKCk7bC5jaGlsZHJlbltsLmluZGV4XT10W3NdO2Zvcig7bC5pbmRleD4wOylsPWkucG9wKCk7bC5pbmRleCsrO2kucHVzaChsKTtmb3IoO2kubGVuZ3RoPD1uOyl7aS5wdXNoKG89e2NoaWxkcmVuOltdLGluZGV4OjB9KTtsLmNoaWxkcmVuW2wuaW5kZXhdPW8uY2hpbGRyZW47bD1vfXMrK31pZihuKzE8cil7aS5wdXNoKG89e2NoaWxkcmVuOltdLGluZGV4OjB9KTtsLmNoaWxkcmVuW2wuaW5kZXhdPW8uY2hpbGRyZW47bD1vfX1yZXR1cm4gaVswXS5jaGlsZHJlbn1mdW5jdGlvbiBnZXRCbG9ja0J1ZmZlck9mZnNldChlLHQsbil7cmV0dXJuIDY0KigoZS5ibG9ja3NQZXJMaW5lKzEpKnQrbil9ZnVuY3Rpb24gZGVjb2RlU2NhbihlLHQsbixhLHMscixpLG8sbCxmLGM9ITEpe2NvbnN0IGg9YS5tY3VzUGVyTGluZSx1PWEucHJvZ3Jlc3NpdmUsbT1uO2xldCBwPTAsZD0wO2Z1bmN0aW9uIHJlYWRCaXQoKXtpZihkPjApe2QtLTtyZXR1cm4gcD4+ZCYxfXA9ZVtuKytdO2lmKDI1NT09PXApe2NvbnN0IHM9ZVtuKytdO2lmKHMpe2lmKDIyMD09PXMmJmMpe24rPTI7Y29uc3QgZT10LmdldFVpbnQxNihuKTtuKz0yO2lmKGU+MCYmZSE9PWEuc2NhbkxpbmVzKXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRE5MIG1hcmtlciAoMHhGRkRDKSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIsZSl9ZWxzZSBpZigyMTc9PT1zKXtpZihjKXtjb25zdCBlPWoqKDg9PT1hLnByZWNpc2lvbj84OjApO2lmKGU+MCYmTWF0aC5yb3VuZChhLnNjYW5MaW5lcy9lKT49NSl0aHJvdyBuZXcgRE5MTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEsIHBvc3NpYmx5IGNhdXNlZCBieSBpbmNvcnJlY3QgYHNjYW5MaW5lc2AgcGFyYW1ldGVyIixlKX10aHJvdyBuZXcgRU9JTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEiKX10aHJvdyBuZXcgSnBlZ0Vycm9yKGB1bmV4cGVjdGVkIG1hcmtlciAkeyhwPDw4fHMpLnRvU3RyaW5nKDE2KX1gKX19ZD03O3JldHVybiBwPj4+N31mdW5jdGlvbiBkZWNvZGVIdWZmbWFuKGUpe2xldCB0PWU7Zm9yKDs7KXt0PXRbcmVhZEJpdCgpXTtzd2l0Y2godHlwZW9mIHQpe2Nhc2UibnVtYmVyIjpyZXR1cm4gdDtjYXNlIm9iamVjdCI6Y29udGludWV9dGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBodWZmbWFuIHNlcXVlbmNlIil9fWZ1bmN0aW9uIHJlY2VpdmUoZSl7bGV0IHQ9MDtmb3IoO2U+MDspe3Q9dDw8MXxyZWFkQml0KCk7ZS0tfXJldHVybiB0fWZ1bmN0aW9uIHJlY2VpdmVBbmRFeHRlbmQoZSl7aWYoMT09PWUpcmV0dXJuIDE9PT1yZWFkQml0KCk/MTotMTtjb25zdCB0PXJlY2VpdmUoZSk7cmV0dXJuIHQ+PTE8PGUtMT90OnQrKC0xPDxlKSsxfWxldCBnPTA7bGV0IGIsdz0wO2xldCBqPTA7ZnVuY3Rpb24gZGVjb2RlTWN1KGUsdCxuLGEscyl7Y29uc3Qgcj1uJWg7aj0obi9ofDApKmUudithO2NvbnN0IGk9ciplLmgrczt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSxqLGkpKX1mdW5jdGlvbiBkZWNvZGVCbG9jayhlLHQsbil7aj1uL2UuYmxvY2tzUGVyTGluZXwwO2NvbnN0IGE9biVlLmJsb2Nrc1BlckxpbmU7dChlLGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUsaixhKSl9Y29uc3Qgaz1zLmxlbmd0aDtsZXQgeSxxLHYsUyx4LEM7Qz11PzA9PT1pPzA9PT1sP2Z1bmN0aW9uIGRlY29kZURDRmlyc3QoZSx0KXtjb25zdCBuPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVEQyksYT0wPT09bj8wOnJlY2VpdmVBbmRFeHRlbmQobik8PGY7ZS5ibG9ja0RhdGFbdF09ZS5wcmVkKz1hfTpmdW5jdGlvbiBkZWNvZGVEQ1N1Y2Nlc3NpdmUoZSx0KXtlLmJsb2NrRGF0YVt0XXw9cmVhZEJpdCgpPDxmfTowPT09bD9mdW5jdGlvbiBkZWNvZGVBQ0ZpcnN0KGUsdCl7aWYoZz4wKXtnLS07cmV0dXJufWxldCBuPWk7Y29uc3QgYT1vO2Zvcig7bjw9YTspe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxzPTE1JmEscj1hPj40O2lmKDA9PT1zKXtpZihyPDE1KXtnPXJlY2VpdmUocikrKDE8PHIpLTE7YnJlYWt9bis9MTY7Y29udGludWV9bis9cjtjb25zdCBpPUJuW25dO2UuYmxvY2tEYXRhW3QraV09cmVjZWl2ZUFuZEV4dGVuZChzKSooMTw8Zik7bisrfX06ZnVuY3Rpb24gZGVjb2RlQUNTdWNjZXNzaXZlKGUsdCl7bGV0IG49aTtjb25zdCBhPW87bGV0IHMscixsPTA7Zm9yKDtuPD1hOyl7Y29uc3QgYT10K0JuW25dLGk9ZS5ibG9ja0RhdGFbYV08MD8tMToxO3N3aXRjaCh3KXtjYXNlIDA6cj1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpO3M9MTUmcjtsPXI+PjQ7aWYoMD09PXMpaWYobDwxNSl7Zz1yZWNlaXZlKGwpKygxPDxsKTt3PTR9ZWxzZXtsPTE2O3c9MX1lbHNle2lmKDEhPT1zKXRocm93IG5ldyBKcGVnRXJyb3IoImludmFsaWQgQUNuIGVuY29kaW5nIik7Yj1yZWNlaXZlQW5kRXh0ZW5kKHMpO3c9bD8yOjN9Y29udGludWU7Y2FzZSAxOmNhc2UgMjppZihlLmJsb2NrRGF0YVthXSllLmJsb2NrRGF0YVthXSs9aSoocmVhZEJpdCgpPDxmKTtlbHNle2wtLTswPT09bCYmKHc9Mj09PXc/MzowKX1icmVhaztjYXNlIDM6aWYoZS5ibG9ja0RhdGFbYV0pZS5ibG9ja0RhdGFbYV0rPWkqKHJlYWRCaXQoKTw8Zik7ZWxzZXtlLmJsb2NrRGF0YVthXT1iPDxmO3c9MH1icmVhaztjYXNlIDQ6ZS5ibG9ja0RhdGFbYV0mJihlLmJsb2NrRGF0YVthXSs9aSoocmVhZEJpdCgpPDxmKSl9bisrfWlmKDQ9PT13KXtnLS07MD09PWcmJih3PTApfX06ZnVuY3Rpb24gZGVjb2RlQmFzZWxpbmUoZSx0KXtjb25zdCBuPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVEQyksYT0wPT09bj8wOnJlY2VpdmVBbmRFeHRlbmQobik7ZS5ibG9ja0RhdGFbdF09ZS5wcmVkKz1hO2xldCBzPTE7Zm9yKDtzPDY0Oyl7Y29uc3Qgbj1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpLGE9MTUmbixyPW4+PjQ7aWYoMD09PWEpe2lmKHI8MTUpYnJlYWs7cys9MTY7Y29udGludWV9cys9cjtjb25zdCBpPUJuW3NdO2UuYmxvY2tEYXRhW3QraV09cmVjZWl2ZUFuZEV4dGVuZChhKTtzKyt9fTtsZXQgRixUPTA7Y29uc3QgUj0xPT09az9zWzBdLmJsb2Nrc1BlckxpbmUqc1swXS5ibG9ja3NQZXJDb2x1bW46aCphLm1jdXNQZXJDb2x1bW47bGV0IE8sSDtmb3IoO1Q8PVI7KXtjb25zdCBhPXI/TWF0aC5taW4oUi1ULHIpOlI7aWYoYT4wKXtmb3IocT0wO3E8aztxKyspc1txXS5wcmVkPTA7Zz0wO2lmKDE9PT1rKXt5PXNbMF07Zm9yKHg9MDt4PGE7eCsrKXtkZWNvZGVCbG9jayh5LEMsVCk7VCsrfX1lbHNlIGZvcih4PTA7eDxhO3grKyl7Zm9yKHE9MDtxPGs7cSsrKXt5PXNbcV07Tz15Lmg7SD15LnY7Zm9yKHY9MDt2PEg7disrKWZvcihTPTA7UzxPO1MrKylkZWNvZGVNY3UoeSxDLFQsdixTKX1UKyt9fWQ9MDtGPWZpbmROZXh0RmlsZU1hcmtlcihlLHQsbik7aWYoIUYpYnJlYWs7aWYoRi5pbnZhbGlkKXt3YXJuKGBkZWNvZGVTY2FuIC0gJHthPjA/InVuZXhwZWN0ZWQiOiJleGNlc3NpdmUifSBNQ1UgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICR7Ri5pbnZhbGlkfWApO249Ri5vZmZzZXR9aWYoIShGLm1hcmtlcj49NjU0ODgmJkYubWFya2VyPD02NTQ5NSkpYnJlYWs7bis9Mn1yZXR1cm4gbi1tfWZ1bmN0aW9uIHF1YW50aXplQW5kSW52ZXJzZShlLHQsbil7Y29uc3QgYT1lLnF1YW50aXphdGlvblRhYmxlLHM9ZS5ibG9ja0RhdGE7bGV0IHIsaSxvLGwsZixjLGgsdSxtLHAsZCxnLGIsdyxqLGsseTtpZighYSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJtaXNzaW5nIHJlcXVpcmVkIFF1YW50aXphdGlvbiBUYWJsZS4iKTtmb3IobGV0IGU9MDtlPDY0O2UrPTgpe209c1t0K2VdO3A9c1t0K2UrMV07ZD1zW3QrZSsyXTtnPXNbdCtlKzNdO2I9c1t0K2UrNF07dz1zW3QrZSs1XTtqPXNbdCtlKzZdO2s9c1t0K2UrN107bSo9YVtlXTtpZigwIT09KHB8ZHxnfGJ8d3xqfGspKXtwKj1hW2UrMV07ZCo9YVtlKzJdO2cqPWFbZSszXTtiKj1hW2UrNF07dyo9YVtlKzVdO2oqPWFbZSs2XTtrKj1hW2UrN107cj16biptKzEyOD4+ODtpPXpuKmIrMTI4Pj44O289ZDtsPWo7Zj1MbioocC1rKSsxMjg+Pjg7dT1MbioocCtrKSsxMjg+Pjg7Yz1nPDw0O2g9dzw8NDtyPXIraSsxPj4xO2k9ci1pO3k9bypfbitsKkVuKzEyOD4+ODtvPW8qRW4tbCpfbisxMjg+Pjg7bD15O2Y9ZitoKzE+PjE7aD1mLWg7dT11K2MrMT4+MTtjPXUtYztyPXIrbCsxPj4xO2w9ci1sO2k9aStvKzE+PjE7bz1pLW87eT1mKlBuK3UqTm4rMjA0OD4+MTI7Zj1mKk5uLXUqUG4rMjA0OD4+MTI7dT15O3k9YypNbitoKkRuKzIwNDg+PjEyO2M9YypEbi1oKk1uKzIwNDg+PjEyO2g9eTtuW2VdPXIrdTtuW2UrN109ci11O25bZSsxXT1pK2g7bltlKzZdPWktaDtuW2UrMl09bytjO25bZSs1XT1vLWM7bltlKzNdPWwrZjtuW2UrNF09bC1mfWVsc2V7eT16biptKzUxMj4+MTA7bltlXT15O25bZSsxXT15O25bZSsyXT15O25bZSszXT15O25bZSs0XT15O25bZSs1XT15O25bZSs2XT15O25bZSs3XT15fX1mb3IobGV0IGU9MDtlPDg7KytlKXttPW5bZV07cD1uW2UrOF07ZD1uW2UrMTZdO2c9bltlKzI0XTtiPW5bZSszMl07dz1uW2UrNDBdO2o9bltlKzQ4XTtrPW5bZSs1Nl07aWYoMCE9PShwfGR8Z3xifHd8anxrKSl7cj16biptKzIwNDg+PjEyO2k9em4qYisyMDQ4Pj4xMjtvPWQ7bD1qO2Y9TG4qKHAtaykrMjA0OD4+MTI7dT1MbioocCtrKSsyMDQ4Pj4xMjtjPWc7aD13O3I9NDExMisocitpKzE+PjEpO2k9ci1pO3k9bypfbitsKkVuKzIwNDg+PjEyO289bypFbi1sKl9uKzIwNDg+PjEyO2w9eTtmPWYraCsxPj4xO2g9Zi1oO3U9dStjKzE+PjE7Yz11LWM7cj1yK2wrMT4+MTtsPXItbDtpPWkrbysxPj4xO289aS1vO3k9ZipQbit1Kk5uKzIwNDg+PjEyO2Y9ZipObi11KlBuKzIwNDg+PjEyO3U9eTt5PWMqTW4raCpEbisyMDQ4Pj4xMjtjPWMqRG4taCpNbisyMDQ4Pj4xMjtoPXk7bT1yK3U7az1yLXU7cD1pK2g7aj1pLWg7ZD1vK2M7dz1vLWM7Zz1sK2Y7Yj1sLWY7bTwxNj9tPTA6bT49NDA4MD9tPTI1NTptPj49NDtwPDE2P3A9MDpwPj00MDgwP3A9MjU1OnA+Pj00O2Q8MTY/ZD0wOmQ+PTQwODA/ZD0yNTU6ZD4+PTQ7ZzwxNj9nPTA6Zz49NDA4MD9nPTI1NTpnPj49NDtiPDE2P2I9MDpiPj00MDgwP2I9MjU1OmI+Pj00O3c8MTY/dz0wOnc+PTQwODA/dz0yNTU6dz4+PTQ7ajwxNj9qPTA6aj49NDA4MD9qPTI1NTpqPj49NDtrPDE2P2s9MDprPj00MDgwP2s9MjU1Oms+Pj00O3NbdCtlXT1tO3NbdCtlKzhdPXA7c1t0K2UrMTZdPWQ7c1t0K2UrMjRdPWc7c1t0K2UrMzJdPWI7c1t0K2UrNDBdPXc7c1t0K2UrNDhdPWo7c1t0K2UrNTZdPWt9ZWxzZXt5PXpuKm0rODE5Mj4+MTQ7eT15PC0yMDQwPzA6eT49MjAyND8yNTU6eSsyMDU2Pj40O3NbdCtlXT15O3NbdCtlKzhdPXk7c1t0K2UrMTZdPXk7c1t0K2UrMjRdPXk7c1t0K2UrMzJdPXk7c1t0K2UrNDBdPXk7c1t0K2UrNDhdPXk7c1t0K2UrNTZdPXl9fX1mdW5jdGlvbiBidWlsZENvbXBvbmVudERhdGEoZSx0KXtjb25zdCBuPXQuYmxvY2tzUGVyTGluZSxhPXQuYmxvY2tzUGVyQ29sdW1uLHM9bmV3IEludDE2QXJyYXkoNjQpO2ZvcihsZXQgZT0wO2U8YTtlKyspZm9yKGxldCBhPTA7YTxuO2ErKyl7cXVhbnRpemVBbmRJbnZlcnNlKHQsZ2V0QmxvY2tCdWZmZXJPZmZzZXQodCxlLGEpLHMpfXJldHVybiB0LmJsb2NrRGF0YX1mdW5jdGlvbiBmaW5kTmV4dEZpbGVNYXJrZXIoZSx0LG4sYT1uKXtjb25zdCBzPWUubGVuZ3RoLTE7bGV0IHI9YTxuP2E6bjtpZihuPj1zKXJldHVybiBudWxsO2NvbnN0IGk9dC5nZXRVaW50MTYobik7aWYoaT49NjU0NzImJmk8PTY1NTM0KXJldHVybntpbnZhbGlkOm51bGwsbWFya2VyOmksb2Zmc2V0Om59O2xldCBvPXQuZ2V0VWludDE2KHIpO2Zvcig7IShvPj02NTQ3MiYmbzw9NjU1MzQpOyl7aWYoKytyPj1zKXJldHVybiBudWxsO289dC5nZXRVaW50MTYocil9cmV0dXJue2ludmFsaWQ6aS50b1N0cmluZygxNiksbWFya2VyOm8sb2Zmc2V0OnJ9fWZ1bmN0aW9uIHByZXBhcmVDb21wb25lbnRzKGUpe2NvbnN0IHQ9TWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOC9lLm1heEgpLG49TWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgvZS5tYXhWKTtmb3IoY29uc3QgYSBvZiBlLmNvbXBvbmVudHMpe2NvbnN0IHM9TWF0aC5jZWlsKE1hdGguY2VpbChlLnNhbXBsZXNQZXJMaW5lLzgpKmEuaC9lLm1heEgpLHI9TWF0aC5jZWlsKE1hdGguY2VpbChlLnNjYW5MaW5lcy84KSphLnYvZS5tYXhWKSxpPXQqYS5oLG89NjQqKG4qYS52KSooaSsxKTthLmJsb2NrRGF0YT1uZXcgSW50MTZBcnJheShvKTthLmJsb2Nrc1BlckxpbmU9czthLmJsb2Nrc1BlckNvbHVtbj1yfWUubWN1c1BlckxpbmU9dDtlLm1jdXNQZXJDb2x1bW49bn1mdW5jdGlvbiByZWFkRGF0YUJsb2NrKGUsdCxuKXtjb25zdCBhPXQuZ2V0VWludDE2KG4pO2xldCBzPShuKz0yKSthLTI7Y29uc3Qgcj1maW5kTmV4dEZpbGVNYXJrZXIoZSx0LHMsbik7aWYocj8uaW52YWxpZCl7d2FybigicmVhZERhdGFCbG9jayAtIGluY29ycmVjdCBsZW5ndGgsIGN1cnJlbnQgbWFya2VyIGlzOiAiK3IuaW52YWxpZCk7cz1yLm9mZnNldH1jb25zdCBpPWUuc3ViYXJyYXkobixzKTtyZXR1cm57YXBwRGF0YTppLG9sZE9mZnNldDpuLG5ld09mZnNldDpuK2kubGVuZ3RofX1mdW5jdGlvbiBza2lwRGF0YShlLHQsbil7Y29uc3QgYT10LmdldFVpbnQxNihuKSxzPShuKz0yKSthLTIscj1maW5kTmV4dEZpbGVNYXJrZXIoZSx0LHMsbik7cmV0dXJuIHI/LmludmFsaWQ/ci5vZmZzZXQ6c31jbGFzcyBKcGVnSW1hZ2V7Y29uc3RydWN0b3Ioe2RlY29kZVRyYW5zZm9ybTplPW51bGwsY29sb3JUcmFuc2Zvcm06dD0tMX09e30pe3RoaXMuX2RlY29kZVRyYW5zZm9ybT1lO3RoaXMuX2NvbG9yVHJhbnNmb3JtPXR9c3RhdGljIGNhblVzZUltYWdlRGVjb2RlcihlLHQ9LTEpe2NvbnN0IG49bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpO2xldCBhPW51bGwscz0wLHI9bnVsbCxpPW4uZ2V0VWludDE2KHMpO3MrPTI7aWYoNjU0OTYhPT1pKXRocm93IG5ldyBKcGVnRXJyb3IoIlNPSSBub3QgZm91bmQiKTtpPW4uZ2V0VWludDE2KHMpO3MrPTI7ZTpmb3IoOzY1NDk3IT09aTspe3N3aXRjaChpKXtjYXNlIDY1NTA1OmNvbnN0e2FwcERhdGE6dCxvbGRPZmZzZXQ6byxuZXdPZmZzZXQ6bH09cmVhZERhdGFCbG9jayhlLG4scyk7cz1sO2lmKDY5PT09dFswXSYmMTIwPT09dFsxXSYmMTA1PT09dFsyXSYmMTAyPT09dFszXSYmMD09PXRbNF0mJjA9PT10WzVdKXtpZihhKXRocm93IG5ldyBKcGVnRXJyb3IoIkR1cGxpY2F0ZSBFWElGLWJsb2NrcyBmb3VuZC4iKTthPXtleGlmU3RhcnQ6bys2LGV4aWZFbmQ6bH19aT1uLmdldFVpbnQxNihzKTtzKz0yO2NvbnRpbnVlO2Nhc2UgNjU0NzI6Y2FzZSA2NTQ3MzpjYXNlIDY1NDc0OnI9ZVtzKzddO2JyZWFrIGU7Y2FzZSA2NTUzNToyNTUhPT1lW3NdJiZzLS19cz1za2lwRGF0YShlLG4scyk7aT1uLmdldFVpbnQxNihzKTtzKz0yfXJldHVybiA0PT09cnx8Mz09PXImJjA9PT10P251bGw6YXx8e319cGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQ9bnVsbH09e30pe2NvbnN0IG49bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLGE9ZS5sZW5ndGgtMTtsZXQgcyxyLGk9MCxvPW51bGwsbD1udWxsLGY9MDtjb25zdCBjPVtdLGg9W10sdT1bXTtsZXQgbT1uLmdldFVpbnQxNihpKTtpKz0yO2lmKDY1NDk2IT09bSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7bT1uLmdldFVpbnQxNihpKTtpKz0yO2U6Zm9yKDs2NTQ5NyE9PW07KXtsZXQgcCxkLGc7c3dpdGNoKG0pe2Nhc2UgNjU1MDQ6Y2FzZSA2NTUwNTpjYXNlIDY1NTA2OmNhc2UgNjU1MDc6Y2FzZSA2NTUwODpjYXNlIDY1NTA5OmNhc2UgNjU1MTA6Y2FzZSA2NTUxMTpjYXNlIDY1NTEyOmNhc2UgNjU1MTM6Y2FzZSA2NTUxNDpjYXNlIDY1NTE1OmNhc2UgNjU1MTY6Y2FzZSA2NTUxNzpjYXNlIDY1NTE4OmNhc2UgNjU1MTk6Y2FzZSA2NTUzNDpjb25zdHthcHBEYXRhOmIsbmV3T2Zmc2V0Ond9PXJlYWREYXRhQmxvY2soZSxuLGkpO2k9dzs2NTUwND09PW0mJjc0PT09YlswXSYmNzA9PT1iWzFdJiY3Mz09PWJbMl0mJjcwPT09YlszXSYmMD09PWJbNF0mJihvPXt2ZXJzaW9uOnttYWpvcjpiWzVdLG1pbm9yOmJbNl19LGRlbnNpdHlVbml0czpiWzddLHhEZW5zaXR5OmJbOF08PDh8Yls5XSx5RGVuc2l0eTpiWzEwXTw8OHxiWzExXSx0aHVtYldpZHRoOmJbMTJdLHRodW1iSGVpZ2h0OmJbMTNdLHRodW1iRGF0YTpiLnN1YmFycmF5KDE0LDE0KzMqYlsxMl0qYlsxM10pfSk7NjU1MTg9PT1tJiY2NT09PWJbMF0mJjEwMD09PWJbMV0mJjExMT09PWJbMl0mJjk4PT09YlszXSYmMTAxPT09Yls0XSYmKGw9e3ZlcnNpb246Yls1XTw8OHxiWzZdLGZsYWdzMDpiWzddPDw4fGJbOF0sZmxhZ3MxOmJbOV08PDh8YlsxMF0sdHJhbnNmb3JtQ29kZTpiWzExXX0pO2JyZWFrO2Nhc2UgNjU0OTk6Y29uc3Qgaj1uLmdldFVpbnQxNihpKTtpKz0yO2NvbnN0IGs9aitpLTI7bGV0IHk7Zm9yKDtpPGs7KXtjb25zdCB0PWVbaSsrXSxhPW5ldyBVaW50MTZBcnJheSg2NCk7aWYodD4+NCl7aWYodD4+NCE9MSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJEUVQgLSBpbnZhbGlkIHRhYmxlIHNwZWMiKTtmb3IoZD0wO2Q8NjQ7ZCsrKXt5PUJuW2RdO2FbeV09bi5nZXRVaW50MTYoaSk7aSs9Mn19ZWxzZSBmb3IoZD0wO2Q8NjQ7ZCsrKXt5PUJuW2RdO2FbeV09ZVtpKytdfWNbMTUmdF09YX1icmVhaztjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDppZihzKXRocm93IG5ldyBKcGVnRXJyb3IoIk9ubHkgc2luZ2xlIGZyYW1lIEpQRUdzIHN1cHBvcnRlZCIpO2krPTI7cz17fTtzLmV4dGVuZGVkPTY1NDczPT09bTtzLnByb2dyZXNzaXZlPTY1NDc0PT09bTtzLnByZWNpc2lvbj1lW2krK107Y29uc3QgcT1uLmdldFVpbnQxNihpKTtpKz0yO3Muc2NhbkxpbmVzPXR8fHE7cy5zYW1wbGVzUGVyTGluZT1uLmdldFVpbnQxNihpKTtpKz0yO3MuY29tcG9uZW50cz1bXTtzLmNvbXBvbmVudElkcz17fTtjb25zdCB2PWVbaSsrXTtsZXQgUz0wLHg9MDtmb3IocD0wO3A8djtwKyspe2NvbnN0IHQ9ZVtpXSxuPWVbaSsxXT4+NCxhPTE1JmVbaSsxXTtTPG4mJihTPW4pO3g8YSYmKHg9YSk7Y29uc3Qgcj1lW2krMl07Zz1zLmNvbXBvbmVudHMucHVzaCh7aDpuLHY6YSxxdWFudGl6YXRpb25JZDpyLHF1YW50aXphdGlvblRhYmxlOm51bGx9KTtzLmNvbXBvbmVudElkc1t0XT1nLTE7aSs9M31zLm1heEg9UztzLm1heFY9eDtwcmVwYXJlQ29tcG9uZW50cyhzKTticmVhaztjYXNlIDY1NDc2OmNvbnN0IEM9bi5nZXRVaW50MTYoaSk7aSs9Mjtmb3IocD0yO3A8Qzspe2NvbnN0IHQ9ZVtpKytdLG49bmV3IFVpbnQ4QXJyYXkoMTYpO2xldCBhPTA7Zm9yKGQ9MDtkPDE2O2QrKyxpKyspYSs9bltkXT1lW2ldO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoYSk7Zm9yKGQ9MDtkPGE7ZCsrLGkrKylzW2RdPWVbaV07cCs9MTcrYTsodD4+ND9oOnUpWzE1JnRdPWJ1aWxkSHVmZm1hblRhYmxlKG4scyl9YnJlYWs7Y2FzZSA2NTUwMTppKz0yO3I9bi5nZXRVaW50MTYoaSk7aSs9MjticmVhaztjYXNlIDY1NDk4OmNvbnN0IEY9MT09PSsrZiYmIXQ7aSs9Mjtjb25zdCBUPWVbaSsrXSxSPVtdO2ZvcihwPTA7cDxUO3ArKyl7Y29uc3QgdD1lW2krK10sbj1zLmNvbXBvbmVudElkc1t0XSxhPXMuY29tcG9uZW50c1tuXTthLmluZGV4PXQ7Y29uc3Qgcj1lW2krK107YS5odWZmbWFuVGFibGVEQz11W3I+PjRdO2EuaHVmZm1hblRhYmxlQUM9aFsxNSZyXTtSLnB1c2goYSl9Y29uc3QgTz1lW2krK10sSD1lW2krK10sRD1lW2krK107dHJ5e2krPWRlY29kZVNjYW4oZSxuLGkscyxSLHIsTyxILEQ+PjQsMTUmRCxGKX1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgRE5MTWFya2VyRXJyb3Ipe3dhcm4oYCR7dC5tZXNzYWdlfSAtLSBhdHRlbXB0aW5nIHRvIHJlLXBhcnNlIHRoZSBKUEVHIGltYWdlLmApO3JldHVybiB0aGlzLnBhcnNlKGUse2RubFNjYW5MaW5lczp0LnNjYW5MaW5lc30pfWlmKHQgaW5zdGFuY2VvZiBFT0lNYXJrZXJFcnJvcil7d2FybihgJHt0Lm1lc3NhZ2V9IC0tIGlnbm9yaW5nIHRoZSByZXN0IG9mIHRoZSBpbWFnZSBkYXRhLmApO2JyZWFrIGV9dGhyb3cgdH1icmVhaztjYXNlIDY1NTAwOmkrPTQ7YnJlYWs7Y2FzZSA2NTUzNToyNTUhPT1lW2ldJiZpLS07YnJlYWs7ZGVmYXVsdDpjb25zdCBNPWZpbmROZXh0RmlsZU1hcmtlcihlLG4saS0yLGktMyk7aWYoTT8uaW52YWxpZCl7d2FybigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5leHBlY3RlZCBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogIitNLmludmFsaWQpO2k9TS5vZmZzZXQ7YnJlYWt9aWYoIU18fGk+PWEpe3dhcm4oIkpwZWdJbWFnZS5wYXJzZSAtIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW1hZ2UgZGF0YSB3aXRob3V0IGZpbmRpbmcgYW4gRU9JIG1hcmtlciAoMHhGRkQ5KS4iKTticmVhayBlfXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIHVua25vd24gbWFya2VyOiAiK20udG9TdHJpbmcoMTYpKX1pZihpPGEpe209bi5nZXRVaW50MTYoaSk7aSs9Mn1lbHNlIG09MH1pZighcyl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJKcGVnSW1hZ2UucGFyc2UgLSBubyBmcmFtZSBkYXRhIGZvdW5kLiIpO3RoaXMud2lkdGg9cy5zYW1wbGVzUGVyTGluZTt0aGlzLmhlaWdodD1zLnNjYW5MaW5lczt0aGlzLmpmaWY9bzt0aGlzLmFkb2JlPWw7dGhpcy5jb21wb25lbnRzPVtdO2Zvcihjb25zdCBlIG9mIHMuY29tcG9uZW50cyl7Y29uc3QgdD1jW2UucXVhbnRpemF0aW9uSWRdO3QmJihlLnF1YW50aXphdGlvblRhYmxlPXQpO3RoaXMuY29tcG9uZW50cy5wdXNoKHtpbmRleDplLmluZGV4LG91dHB1dDpidWlsZENvbXBvbmVudERhdGEoMCxlKSxzY2FsZVg6ZS5oL3MubWF4SCxzY2FsZVk6ZS52L3MubWF4VixibG9ja3NQZXJMaW5lOmUuYmxvY2tzUGVyTGluZSxibG9ja3NQZXJDb2x1bW46ZS5ibG9ja3NQZXJDb2x1bW59KX10aGlzLm51bUNvbXBvbmVudHM9dGhpcy5jb21wb25lbnRzLmxlbmd0aH0jXyhlLHQsbil7Y29uc3QgYT10aGlzLndpZHRoL2Uscz10aGlzLmhlaWdodC90O2xldCByLGksbyxsLGYsYyxoLHUsbSxwLGQsZz0wO2NvbnN0IGI9dGhpcy5jb21wb25lbnRzLmxlbmd0aCx3PWUqdCpiLGo9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHcpLGs9bmV3IFVpbnQzMkFycmF5KGUpLHk9NDI5NDk2NzI4ODtsZXQgcTtmb3IoaD0wO2g8YjtoKyspe3I9dGhpcy5jb21wb25lbnRzW2hdO2k9ci5zY2FsZVgqYTtvPXIuc2NhbGVZKnM7Zz1oO2Q9ci5vdXRwdXQ7bD1yLmJsb2Nrc1BlckxpbmUrMTw8MztpZihpIT09cSl7Zm9yKGY9MDtmPGU7ZisrKXt1PTB8ZippO2tbZl09KHUmeSk8PDN8NyZ1fXE9aX1mb3IoYz0wO2M8dDtjKyspe3U9MHxjKm87cD1sKih1JnkpfCg3JnUpPDwzO2ZvcihmPTA7ZjxlO2YrKyl7altnXT1kW3Ara1tmXV07Zys9Yn19fWxldCB2PXRoaXMuX2RlY29kZVRyYW5zZm9ybTtpZih2KWZvcihoPTA7aDx3Oylmb3IodT0wLG09MDt1PGI7dSsrLGgrKyxtKz0yKWpbaF09KGpbaF0qdlttXT4+OCkrdlttKzFdO3JldHVybiBqfWdldCBfaXNDb2xvckNvbnZlcnNpb25OZWVkZWQoKXtyZXR1cm4gdGhpcy5hZG9iZT8hIXRoaXMuYWRvYmUudHJhbnNmb3JtQ29kZTozPT09dGhpcy5udW1Db21wb25lbnRzPzAhPT10aGlzLl9jb2xvclRyYW5zZm9ybSYmKDgyIT09dGhpcy5jb21wb25lbnRzWzBdLmluZGV4fHw3MSE9PXRoaXMuY29tcG9uZW50c1sxXS5pbmRleHx8NjYhPT10aGlzLmNvbXBvbmVudHNbMl0uaW5kZXgpOjE9PT10aGlzLl9jb2xvclRyYW5zZm9ybX1fY29udmVydFljY1RvUmdiKGUpe2xldCB0LG4sYTtmb3IobGV0IHM9MCxyPWUubGVuZ3RoO3M8cjtzKz0zKXt0PWVbc107bj1lW3MrMV07YT1lW3MrMl07ZVtzXT10LTE3OS40NTYrMS40MDIqYTtlW3MrMV09dCsxMzUuNDU5LS4zNDQqbi0uNzE0KmE7ZVtzKzJdPXQtMjI2LjgxNisxLjc3MipufXJldHVybiBlfV9jb252ZXJ0WWNjVG9SZ2JhKGUsdCl7Zm9yKGxldCBuPTAsYT0wLHM9ZS5sZW5ndGg7bjxzO24rPTMsYSs9NCl7Y29uc3Qgcz1lW25dLHI9ZVtuKzFdLGk9ZVtuKzJdO3RbYV09cy0xNzkuNDU2KzEuNDAyKmk7dFthKzFdPXMrMTM1LjQ1OS0uMzQ0KnItLjcxNCppO3RbYSsyXT1zLTIyNi44MTYrMS43NzIqcjt0W2ErM109MjU1fXJldHVybiB0fV9jb252ZXJ0WWNja1RvUmdiKGUpe3RoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKGUpO3JldHVybiB0aGlzLl9jb252ZXJ0Q215a1RvUmdiKGUpfV9jb252ZXJ0WWNja1RvUmdiYShlKXt0aGlzLl9jb252ZXJ0WWNja1RvQ215ayhlKTtyZXR1cm4gdGhpcy5fY29udmVydENteWtUb1JnYmEoZSl9X2NvbnZlcnRZY2NrVG9DbXlrKGUpe2xldCB0LG4sYTtmb3IobGV0IHM9MCxyPWUubGVuZ3RoO3M8cjtzKz00KXt0PWVbc107bj1lW3MrMV07YT1lW3MrMl07ZVtzXT00MzQuNDU2LXQtMS40MDIqYTtlW3MrMV09MTE5LjU0MS10Ky4zNDQqbisuNzE0KmE7ZVtzKzJdPTQ4MS44MTYtdC0xLjc3MipufXJldHVybiBlfV9jb252ZXJ0Q215a1RvUmdiKGUpe2NvbnN0IHQ9ZS5sZW5ndGgvNDtDb2xvclNwYWNlVXRpbHMuY215ay5nZXRSZ2JCdWZmZXIoZSwwLHQsZSwwLDgsMCk7cmV0dXJuIGUuc3ViYXJyYXkoMCwzKnQpfV9jb252ZXJ0Q215a1RvUmdiYShlKXtDb2xvclNwYWNlVXRpbHMuY215ay5nZXRSZ2JCdWZmZXIoZSwwLGUubGVuZ3RoLzQsZSwwLDgsMSk7aWYoQ29sb3JTcGFjZVV0aWxzLmNteWsgaW5zdGFuY2VvZiBEZXZpY2VDbXlrQ1MpZm9yKGxldCB0PTMsbj1lLmxlbmd0aDt0PG47dCs9NCllW3RdPTI1NTtyZXR1cm4gZX1nZXREYXRhKHt3aWR0aDplLGhlaWdodDp0LGZvcmNlUkdCQTpuPSExLGZvcmNlUkdCOmE9ITEsaXNTb3VyY2VQREY6cz0hMH0pe2lmKHRoaXMubnVtQ29tcG9uZW50cz40KXRocm93IG5ldyBKcGVnRXJyb3IoIlVuc3VwcG9ydGVkIGNvbG9yIG1vZGUiKTtjb25zdCByPXRoaXMuI18oZSx0LHMpO2lmKDE9PT10aGlzLm51bUNvbXBvbmVudHMmJihufHxhKSl7Y29uc3QgZT1yLmxlbmd0aCoobj80OjMpLHQ9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGUpO2xldCBhPTA7aWYobikhZnVuY3Rpb24gZ3JheVRvUkdCQShlLHQpe2lmKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKWZvcihsZXQgbj0wLGE9ZS5sZW5ndGg7bjxhO24rKyl0W25dPTY1NzkzKmVbbl18NDI3ODE5MDA4MDtlbHNlIGZvcihsZXQgbj0wLGE9ZS5sZW5ndGg7bjxhO24rKyl0W25dPTE2ODQzMDA4KmVbbl18MjU1fShyLG5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlcikpO2Vsc2UgZm9yKGNvbnN0IGUgb2Ygcil7dFthKytdPWU7dFthKytdPWU7dFthKytdPWV9cmV0dXJuIHR9aWYoMz09PXRoaXMubnVtQ29tcG9uZW50cyYmdGhpcy5faXNDb2xvckNvbnZlcnNpb25OZWVkZWQpe2lmKG4pe2NvbnN0IGU9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHIubGVuZ3RoLzMqNCk7cmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYmEocixlKX1yZXR1cm4gdGhpcy5fY29udmVydFljY1RvUmdiKHIpfWlmKDQ9PT10aGlzLm51bUNvbXBvbmVudHMpe2lmKHRoaXMuX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKXJldHVybiBuP3RoaXMuX2NvbnZlcnRZY2NrVG9SZ2JhKHIpOmE/dGhpcy5fY29udmVydFljY2tUb1JnYihyKTp0aGlzLl9jb252ZXJ0WWNja1RvQ215ayhyKTtpZihuKXJldHVybiB0aGlzLl9jb252ZXJ0Q215a1RvUmdiYShyKTtpZihhKXJldHVybiB0aGlzLl9jb252ZXJ0Q215a1RvUmdiKHIpfXJldHVybiByfX1jbGFzcyBKcGVnU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte3N0YXRpYyNNPUZlYXR1cmVUZXN0LmlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkO2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPW59c3RhdGljIGdldCBjYW5Vc2VJbWFnZURlY29kZXIoKXtyZXR1cm4gc2hhZG93KHRoaXMsImNhblVzZUltYWdlRGVjb2RlciIsdGhpcy4jTT9JbWFnZURlY29kZXIuaXNUeXBlU3VwcG9ydGVkKCJpbWFnZS9qcGVnIik6UHJvbWlzZS5yZXNvbHZlKCExKSl9c3RhdGljIHNldE9wdGlvbnMoe2lzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkOmU9ITF9KXt0aGlzLiNNPWV9Z2V0IGJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKCl7dGhpcy5kZWNvZGVJbWFnZSgpfWdldCBqcGVnT3B0aW9ucygpe2NvbnN0IGU9e2RlY29kZVRyYW5zZm9ybTp2b2lkIDAsY29sb3JUcmFuc2Zvcm06dm9pZCAwfSx0PXRoaXMuZGljdC5nZXRBcnJheSgiRCIsIkRlY29kZSIpO2lmKCh0aGlzLmZvcmNlUkdCQXx8dGhpcy5mb3JjZVJHQikmJkFycmF5LmlzQXJyYXkodCkpe2NvbnN0IG49dGhpcy5kaWN0LmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpfHw4LGE9dC5sZW5ndGgscz1uZXcgSW50MzJBcnJheShhKTtsZXQgcj0hMTtjb25zdCBpPSgxPDxuKS0xO2ZvcihsZXQgZT0wO2U8YTtlKz0yKXtzW2VdPTI1NioodFtlKzFdLXRbZV0pfDA7c1tlKzFdPXRbZV0qaXwwOzI1Nj09PXNbZV0mJjA9PT1zW2UrMV18fChyPSEwKX1yJiYoZS5kZWNvZGVUcmFuc2Zvcm09cyl9aWYodGhpcy5wYXJhbXMgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCB0PXRoaXMucGFyYW1zLmdldCgiQ29sb3JUcmFuc2Zvcm0iKTtOdW1iZXIuaXNJbnRlZ2VyKHQpJiYoZS5jb2xvclRyYW5zZm9ybT10KX1yZXR1cm4gc2hhZG93KHRoaXMsImpwZWdPcHRpb25zIixlKX0jeihlKXtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoLTE7dDxuO3QrKylpZigyNTU9PT1lW3RdJiYyMTY9PT1lW3QrMV0pe3Q+MCYmKGU9ZS5zdWJhcnJheSh0KSk7YnJlYWt9cmV0dXJuIGV9ZGVjb2RlSW1hZ2UoZSl7aWYodGhpcy5lb2YpcmV0dXJuIHRoaXMuYnVmZmVyO2U9dGhpcy4jeihlfHx0aGlzLmJ5dGVzKTtjb25zdCB0PW5ldyBKcGVnSW1hZ2UodGhpcy5qcGVnT3B0aW9ucyk7dC5wYXJzZShlKTtjb25zdCBuPXQuZ2V0RGF0YSh7d2lkdGg6dGhpcy5kcmF3V2lkdGgsaGVpZ2h0OnRoaXMuZHJhd0hlaWdodCxmb3JjZVJHQkE6dGhpcy5mb3JjZVJHQkEsZm9yY2VSR0I6dGhpcy5mb3JjZVJHQn0pO3RoaXMuYnVmZmVyPW47dGhpcy5idWZmZXJMZW5ndGg9bi5sZW5ndGg7dGhpcy5lb2Y9ITA7cmV0dXJuIHRoaXMuYnVmZmVyfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiB0aGlzLnN0cmVhbS5pc0FzeW5jfWFzeW5jIGdldFRyYW5zZmVyYWJsZUltYWdlKCl7aWYoIWF3YWl0IEpwZWdTdHJlYW0uY2FuVXNlSW1hZ2VEZWNvZGVyKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5qcGVnT3B0aW9ucztpZihlLmRlY29kZVRyYW5zZm9ybSlyZXR1cm4gbnVsbDtsZXQgdDt0cnl7Y29uc3Qgbj10aGlzLmNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyJiZhd2FpdCB0aGlzLnN0cmVhbS5hc3luY0dldEJ5dGVzKCl8fHRoaXMuYnl0ZXM7aWYoIW4pcmV0dXJuIG51bGw7bGV0IGE9dGhpcy4jeihuKTtjb25zdCBzPUpwZWdJbWFnZS5jYW5Vc2VJbWFnZURlY29kZXIoYSxlLmNvbG9yVHJhbnNmb3JtKTtpZighcylyZXR1cm4gbnVsbDtpZihzLmV4aWZTdGFydCl7YT1hLnNsaWNlKCk7YS5maWxsKDAscy5leGlmU3RhcnQscy5leGlmRW5kKX10PW5ldyBJbWFnZURlY29kZXIoe2RhdGE6YSx0eXBlOiJpbWFnZS9qcGVnIixwcmVmZXJBbmltYXRpb246ITF9KTtyZXR1cm4oYXdhaXQgdC5kZWNvZGUoKSkuaW1hZ2V9Y2F0Y2goZSl7d2FybihgZ2V0VHJhbnNmZXJhYmxlSW1hZ2UgLSBmYWlsZWQ6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH1maW5hbGx5e3Q/LmNsb3NlKCl9fWdldCBpc0ltYWdlU3RyZWFtKCl7cmV0dXJuITB9fWZ1bmN0aW9uIGFkZFN0YXRlKGUsdCxuLGEscyl7bGV0IHI9ZTtmb3IobGV0IGU9MCxuPXQubGVuZ3RoLTE7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdO3I9cltuXXx8PVtdfXJbdC5hdCgtMSldPXtjaGVja0ZuOm4saXRlcmF0ZUZuOmEscHJvY2Vzc0ZuOnN9fWNvbnN0IFVuPVtdO2FkZFN0YXRlKFVuLFt5ZSx2ZSxfdCxxZV0sbnVsbCxmdW5jdGlvbiBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cChlLHQpe2NvbnN0IG49ZS5mbkFycmF5LGE9KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gblt0XT09PXllO2Nhc2UgMTpyZXR1cm4gblt0XT09PXZlO2Nhc2UgMjpyZXR1cm4gblt0XT09PV90O2Nhc2UgMzpyZXR1cm4gblt0XT09PXFlfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZUlubGluZUltYWdlR3JvdXAgLSBpbnZhbGlkIHBvczogJHthfWApfSxmdW5jdGlvbiBmb3VuZElubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBuPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHM9ZS5pQ3VycixyPXMtMyxpPXMtMixvPXMtMSxsPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcikvNCksMjAwKTtpZihsPDEwKXJldHVybiB0LSh0LXIpJTQ7bGV0IGY9MDtjb25zdCBjPVtdO2xldCBoPTAsdT0xLG09MTtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdCB0PWFbaSsoZTw8MildLG49YVtvKyhlPDwyKV1bMF07aWYodStuLndpZHRoPjFlMyl7Zj1NYXRoLm1heChmLHUpO20rPWgrMjt1PTA7aD0wfWMucHVzaCh7dHJhbnNmb3JtOnQseDp1LHk6bSx3Om4ud2lkdGgsaDpuLmhlaWdodH0pO3UrPW4ud2lkdGgrMjtoPU1hdGgubWF4KGgsbi5oZWlnaHQpfWNvbnN0IHA9TWF0aC5tYXgoZix1KSsxLGQ9bStoKzEsZz1uZXcgVWludDhBcnJheShwKmQqNCksYj1wPDwyO2ZvcihsZXQgZT0wO2U8bDtlKyspe2NvbnN0IHQ9YVtvKyhlPDwyKV1bMF0uZGF0YSxuPWNbZV0udzw8MjtsZXQgcz0wLHI9Y1tlXS54K2NbZV0ueSpwPDwyO2cuc2V0KHQuc3ViYXJyYXkoMCxuKSxyLWIpO2ZvcihsZXQgYT0wLGk9Y1tlXS5oO2E8aTthKyspe2cuc2V0KHQuc3ViYXJyYXkocyxzK24pLHIpO3MrPW47cis9Yn1nLnNldCh0LnN1YmFycmF5KHMtbixzKSxyKTtmb3IoO3I+PTA7KXt0W3ItNF09dFtyXTt0W3ItM109dFtyKzFdO3Rbci0yXT10W3IrMl07dFtyLTFdPXRbciszXTt0W3Irbl09dFtyK24tNF07dFtyK24rMV09dFtyK24tM107dFtyK24rMl09dFtyK24tMl07dFtyK24rM109dFtyK24tMV07ci09Yn19Y29uc3Qgdz17d2lkdGg6cCxoZWlnaHQ6ZH07aWYoZS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3QgZT1uZXcgT2Zmc2NyZWVuQ2FudmFzKHAsZCk7ZS5nZXRDb250ZXh0KCIyZCIpLnB1dEltYWdlRGF0YShuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheShnLmJ1ZmZlcikscCxkKSwwLDApO3cuYml0bWFwPWUudHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7dy5kYXRhPW51bGx9ZWxzZXt3LmtpbmQ9VDt3LmRhdGE9Z31uLnNwbGljZShyLDQqbCx6dCk7YS5zcGxpY2Uociw0KmwsW3csY10pO3JldHVybiByKzF9KTthZGRTdGF0ZShVbixbeWUsdmUsTnQscWVdLG51bGwsZnVuY3Rpb24gaXRlcmF0ZUltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3Qgbj1lLmZuQXJyYXksYT0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiBuW3RdPT09eWU7Y2FzZSAxOnJldHVybiBuW3RdPT09dmU7Y2FzZSAyOnJldHVybiBuW3RdPT09TnQ7Y2FzZSAzOnJldHVybiBuW3RdPT09cWV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAgLSBpbnZhbGlkIHBvczogJHthfWApfSxmdW5jdGlvbiBmb3VuZEltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3Qgbj1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxzPWUuaUN1cnIscj1zLTMsaT1zLTIsbz1zLTE7bGV0IGw9TWF0aC5mbG9vcigodC1yKS80KTtpZihsPDEwKXJldHVybiB0LSh0LXIpJTQ7bGV0IGYsYyxoPSExO2NvbnN0IHU9YVtvXVswXSxtPWFbaV1bMF0scD1hW2ldWzFdLGQ9YVtpXVsyXSxnPWFbaV1bM107aWYocD09PWQpe2g9ITA7Zj1pKzQ7bGV0IGU9bys0O2ZvcihsZXQgdD0xO3Q8bDt0KyssZis9NCxlKz00KXtjPWFbZl07aWYoYVtlXVswXSE9PXV8fGNbMF0hPT1tfHxjWzFdIT09cHx8Y1syXSE9PWR8fGNbM10hPT1nKXt0PDEwP2g9ITE6bD10O2JyZWFrfX19aWYoaCl7bD1NYXRoLm1pbihsLDFlMyk7Y29uc3QgZT1uZXcgRmxvYXQzMkFycmF5KDIqbCk7Zj1pO2ZvcihsZXQgdD0wO3Q8bDt0KyssZis9NCl7Yz1hW2ZdO2VbdDw8MV09Y1s0XTtlWzErKHQ8PDEpXT1jWzVdfW4uc3BsaWNlKHIsNCpsLFV0KTthLnNwbGljZShyLDQqbCxbdSxtLHAsZCxnLGVdKX1lbHNle2w9TWF0aC5taW4obCwxMDApO2NvbnN0IGU9W107Zm9yKGxldCB0PTA7dDxsO3QrKyl7Yz1hW2krKHQ8PDIpXTtjb25zdCBuPWFbbysodDw8MildWzBdO2UucHVzaCh7ZGF0YTpuLmRhdGEsd2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWlnaHQsaW50ZXJwb2xhdGU6bi5pbnRlcnBvbGF0ZSxjb3VudDpuLmNvdW50LHRyYW5zZm9ybTpjfSl9bi5zcGxpY2Uociw0KmwsUHQpO2Euc3BsaWNlKHIsNCpsLFtlXSl9cmV0dXJuIHIrMX0pO2FkZFN0YXRlKFVuLFt5ZSx2ZSxFdCxxZV0sZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmFyZ3NBcnJheSxuPWUuaUN1cnItMjtyZXR1cm4gMD09PXRbbl1bMV0mJjA9PT10W25dWzJdfSxmdW5jdGlvbiBpdGVyYXRlSW1hZ2VHcm91cChlLHQpe2NvbnN0IG49ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscz0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2gocyl7Y2FzZSAwOnJldHVybiBuW3RdPT09eWU7Y2FzZSAxOmlmKG5bdF0hPT12ZSlyZXR1cm4hMTtjb25zdCBzPWUuaUN1cnItMixyPWFbc11bMF0saT1hW3NdWzNdO3JldHVybiBhW3RdWzBdPT09ciYmMD09PWFbdF1bMV0mJjA9PT1hW3RdWzJdJiZhW3RdWzNdPT09aTtjYXNlIDI6aWYoblt0XSE9PUV0KXJldHVybiExO2NvbnN0IG89YVtlLmlDdXJyLTFdWzBdO3JldHVybiBhW3RdWzBdPT09bztjYXNlIDM6cmV0dXJuIG5bdF09PT1xZX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbWFnZUdyb3VwIC0gaW52YWxpZCBwb3M6ICR7c31gKX0sZnVuY3Rpb24oZSx0KXtjb25zdCBuPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHM9ZS5pQ3VycixyPXMtMyxpPXMtMixvPWFbcy0xXVswXSxsPWFbaV1bMF0sZj1hW2ldWzNdLGM9TWF0aC5taW4oTWF0aC5mbG9vcigodC1yKS80KSwxZTMpO2lmKGM8MylyZXR1cm4gdC0odC1yKSU0O2NvbnN0IGg9bmV3IEZsb2F0MzJBcnJheSgyKmMpO2xldCB1PWk7Zm9yKGxldCBlPTA7ZTxjO2UrKyx1Kz00KXtjb25zdCB0PWFbdV07aFtlPDwxXT10WzRdO2hbMSsoZTw8MSldPXRbNV19Y29uc3QgbT1bbyxsLGYsaF07bi5zcGxpY2Uociw0KmMsTHQpO2Euc3BsaWNlKHIsNCpjLG0pO3JldHVybiByKzF9KTthZGRTdGF0ZShVbixbTGUsVmUsWmUsdHQsVWVdLG51bGwsZnVuY3Rpb24gaXRlcmF0ZVNob3dUZXh0R3JvdXAoZSx0KXtjb25zdCBuPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHM9KHQtKGUuaUN1cnItNCkpJTU7c3dpdGNoKHMpe2Nhc2UgMDpyZXR1cm4gblt0XT09PUxlO2Nhc2UgMTpyZXR1cm4gblt0XT09PVZlO2Nhc2UgMjpyZXR1cm4gblt0XT09PVplO2Nhc2UgMzppZihuW3RdIT09dHQpcmV0dXJuITE7Y29uc3Qgcz1lLmlDdXJyLTMscj1hW3NdWzBdLGk9YVtzXVsxXTtyZXR1cm4gYVt0XVswXT09PXImJmFbdF1bMV09PT1pO2Nhc2UgNDpyZXR1cm4gblt0XT09PVVlfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZVNob3dUZXh0R3JvdXAgLSBpbnZhbGlkIHBvczogJHtzfWApfSxmdW5jdGlvbihlLHQpe2NvbnN0IG49ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscz1lLmlDdXJyLHI9cy00LGk9cy0zLG89cy0yLGw9cy0xLGY9cyxjPWFbaV1bMF0saD1hW2ldWzFdO2xldCB1PU1hdGgubWluKE1hdGguZmxvb3IoKHQtcikvNSksMWUzKTtpZih1PDMpcmV0dXJuIHQtKHQtciklNTtsZXQgbT1yO2lmKHI+PTQmJm5bci00XT09PW5baV0mJm5bci0zXT09PW5bb10mJm5bci0yXT09PW5bbF0mJm5bci0xXT09PW5bZl0mJmFbci00XVswXT09PWMmJmFbci00XVsxXT09PWgpe3UrKzttLT01fWxldCBwPW0rNDtmb3IobGV0IGU9MTtlPHU7ZSsrKXtuLnNwbGljZShwLDMpO2Euc3BsaWNlKHAsMyk7cCs9Mn1yZXR1cm4gcCsxfSk7YWRkU3RhdGUoVW4sW3llLHZlLFh0LHFlXSxlPT57Y29uc3QgdD1lLmFyZ3NBcnJheSxuPXRbZS5pQ3Vyci0xXVswXTtpZihuIT09UmUmJm4hPT1PZSYmbiE9PURlJiZuIT09TWUmJm4hPT1OZSYmbiE9PVBlKXJldHVybiEwO2NvbnN0IGE9dFtlLmlDdXJyLTJdO3JldHVybiAxPT09YVswXSYmMD09PWFbMV0mJjA9PT1hWzJdJiYxPT09YVszXX0sKCk9PiExLChlLHQpPT57Y29uc3R7Zm5BcnJheTphLGFyZ3NBcnJheTpzfT1lLHI9ZS5pQ3VycixpPXItMyxvPXItMixsPXNbci0xXSxmPXNbb10sWyxbY10saF09bDtpZihoKXtjb25zdCBlPW4uc2xpY2UoKTtVdGlsLmF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGgsZixlKTtoLnNldChlKTtmb3IobGV0IGU9MCx0PWMubGVuZ3RoO2U8dDspc3dpdGNoKGNbZSsrXSl7Y2FzZSAkdDpjYXNlIFl0OlV0aWwuYXBwbHlUcmFuc2Zvcm0oYyxmLGUpO2UrPTI7YnJlYWs7Y2FzZSBKdDpVdGlsLmFwcGx5VHJhbnNmb3JtVG9CZXppZXIoYyxmLGUpO2UrPTZ9fWEuc3BsaWNlKGksNCxYdCk7cy5zcGxpY2UoaSw0LGwpO3JldHVybiBpKzF9KTtjbGFzcyBOdWxsT3B0aW1pemVye2NvbnN0cnVjdG9yKGUpe3RoaXMucXVldWU9ZX1fb3B0aW1pemUoKXt9cHVzaChlLHQpe3RoaXMucXVldWUuZm5BcnJheS5wdXNoKGUpO3RoaXMucXVldWUuYXJnc0FycmF5LnB1c2godCk7dGhpcy5fb3B0aW1pemUoKX1mbHVzaCgpe31yZXNldCgpe319Y2xhc3MgUXVldWVPcHRpbWl6ZXIgZXh0ZW5kcyBOdWxsT3B0aW1pemVye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuc3RhdGU9bnVsbDt0aGlzLmNvbnRleHQ9e2lDdXJyOjAsZm5BcnJheTplLmZuQXJyYXksYXJnc0FycmF5OmUuYXJnc0FycmF5LGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOk9wZXJhdG9yTGlzdC5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZH07dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfV9vcHRpbWl6ZSgpe2NvbnN0IGU9dGhpcy5xdWV1ZS5mbkFycmF5O2xldCB0PXRoaXMubGFzdFByb2Nlc3NlZCxuPWUubGVuZ3RoLGE9dGhpcy5zdGF0ZSxzPXRoaXMubWF0Y2g7aWYoIWEmJiFzJiZ0KzE9PT1uJiYhVW5bZVt0XV0pe3RoaXMubGFzdFByb2Nlc3NlZD1uO3JldHVybn1jb25zdCByPXRoaXMuY29udGV4dDtmb3IoO3Q8bjspe2lmKHMpe2lmKCgwLHMuaXRlcmF0ZUZuKShyLHQpKXt0Kys7Y29udGludWV9dD0oMCxzLnByb2Nlc3NGbikocix0KzEpO249ZS5sZW5ndGg7cz1udWxsO2E9bnVsbDtpZih0Pj1uKWJyZWFrfWE9KGF8fFVuKVtlW3RdXTtpZihhJiYhQXJyYXkuaXNBcnJheShhKSl7ci5pQ3Vycj10O3QrKztpZighYS5jaGVja0ZufHwoMCxhLmNoZWNrRm4pKHIpKXtzPWE7YT1udWxsfWVsc2UgYT1udWxsfWVsc2UgdCsrfXRoaXMuc3RhdGU9YTt0aGlzLm1hdGNoPXM7dGhpcy5sYXN0UHJvY2Vzc2VkPXR9Zmx1c2goKXtmb3IoO3RoaXMubWF0Y2g7KXtjb25zdCBlPXRoaXMucXVldWUuZm5BcnJheS5sZW5ndGg7dGhpcy5sYXN0UHJvY2Vzc2VkPSgwLHRoaXMubWF0Y2gucHJvY2Vzc0ZuKSh0aGlzLmNvbnRleHQsZSk7dGhpcy5tYXRjaD1udWxsO3RoaXMuc3RhdGU9bnVsbDt0aGlzLl9vcHRpbWl6ZSgpfX1yZXNldCgpe3RoaXMuc3RhdGU9bnVsbDt0aGlzLm1hdGNoPW51bGw7dGhpcy5sYXN0UHJvY2Vzc2VkPTB9fWNsYXNzIE9wZXJhdG9yTGlzdHtzdGF0aWMgQ0hVTktfU0laRT0xZTM7c3RhdGljIENIVU5LX1NJWkVfQUJPVVQ9dGhpcy5DSFVOS19TSVpFLTU7c3RhdGljIGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPSExO2NvbnN0cnVjdG9yKGU9MCx0KXt0aGlzLl9zdHJlYW1TaW5rPXQ7dGhpcy5mbkFycmF5PVtdO3RoaXMuYXJnc0FycmF5PVtdO3RoaXMub3B0aW1pemVyPSF0fHxlJm0/bmV3IE51bGxPcHRpbWl6ZXIodGhpcyk6bmV3IFF1ZXVlT3B0aW1pemVyKHRoaXMpO3RoaXMuZGVwZW5kZW5jaWVzPW5ldyBTZXQ7dGhpcy5fdG90YWxMZW5ndGg9MDt0aGlzLndlaWdodD0wO3RoaXMuX3Jlc29sdmVkPXQ/bnVsbDpQcm9taXNlLnJlc29sdmUoKX1zdGF0aWMgc2V0T3B0aW9ucyh7aXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6ZX0pe3RoaXMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuYXJnc0FycmF5Lmxlbmd0aH1nZXQgcmVhZHkoKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZWR8fHRoaXMuX3N0cmVhbVNpbmsucmVhZHl9Z2V0IHRvdGFsTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX3RvdGFsTGVuZ3RoK3RoaXMubGVuZ3RofWFkZE9wKGUsdCl7dGhpcy5vcHRpbWl6ZXIucHVzaChlLHQpO3RoaXMud2VpZ2h0Kys7dGhpcy5fc3RyZWFtU2luayYmKHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRXx8dGhpcy53ZWlnaHQ+PU9wZXJhdG9yTGlzdC5DSFVOS19TSVpFX0FCT1VUJiYoZT09PXFlfHxlPT09VWUpKSYmdGhpcy5mbHVzaCgpfWFkZEltYWdlT3BzKGUsdCxuLGE9ITEpe2lmKGEpe3RoaXMuYWRkT3AoeWUpO3RoaXMuYWRkT3Aoa2UsW1tbIlNNYXNrIiwhMV1dXSl9dm9pZCAwIT09biYmdGhpcy5hZGRPcChDdCxbIk9DIixuXSk7dGhpcy5hZGRPcChlLHQpO3ZvaWQgMCE9PW4mJnRoaXMuYWRkT3AoSXQsW10pO2EmJnRoaXMuYWRkT3AocWUpfWFkZERlcGVuZGVuY3koZSl7aWYoIXRoaXMuZGVwZW5kZW5jaWVzLmhhcyhlKSl7dGhpcy5kZXBlbmRlbmNpZXMuYWRkKGUpO3RoaXMuYWRkT3AodWUsW2VdKX19YWRkRGVwZW5kZW5jaWVzKGUpe2Zvcihjb25zdCB0IG9mIGUpdGhpcy5hZGREZXBlbmRlbmN5KHQpfWFkZE9wTGlzdChlKXtpZihlIGluc3RhbmNlb2YgT3BlcmF0b3JMaXN0KXtmb3IoY29uc3QgdCBvZiBlLmRlcGVuZGVuY2llcyl0aGlzLmRlcGVuZGVuY2llcy5hZGQodCk7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXRoaXMuYWRkT3AoZS5mbkFycmF5W3RdLGUuYXJnc0FycmF5W3RdKX1lbHNlIHdhcm4oJ2FkZE9wTGlzdCAtIGlnbm9yaW5nIGludmFsaWQgIm9wTGlzdCIgcGFyYW1ldGVyLicpfWdldElSKCl7cmV0dXJue2ZuQXJyYXk6dGhpcy5mbkFycmF5LGFyZ3NBcnJheTp0aGlzLmFyZ3NBcnJheSxsZW5ndGg6dGhpcy5sZW5ndGh9fWdldCBfdHJhbnNmZXJzKCl7Y29uc3QgZT1bXSx7Zm5BcnJheTp0LGFyZ3NBcnJheTpuLGxlbmd0aDphfT10aGlzO2ZvcihsZXQgcz0wO3M8YTtzKyspc3dpdGNoKHRbc10pe2Nhc2UgX3Q6Y2FzZSB6dDpjYXNlIE50Ontjb25zdHtiaXRtYXA6dCxkYXRhOmF9PW5bc11bMF07KHR8fGE/LmJ1ZmZlcikmJmUucHVzaCh0fHxhLmJ1ZmZlcik7YnJlYWt9Y2FzZSBYdDp7Y29uc3RbLFt0XSxhXT1uW3NdO3QmJmUucHVzaCh0LmJ1ZmZlcixhLmJ1ZmZlcik7YnJlYWt9Y2FzZSBSdDpjb25zdFt0LGFdPW5bc107dCYmZS5wdXNoKHQuYnVmZmVyKTthJiZlLnB1c2goYS5idWZmZXIpO2JyZWFrO2Nhc2UgWmU6ZS5wdXNoKG5bc11bMF0uYnVmZmVyKX1yZXR1cm4gZX1mbHVzaChlPSExLHQ9bnVsbCl7dGhpcy5vcHRpbWl6ZXIuZmx1c2goKTtjb25zdCBuPXRoaXMubGVuZ3RoO3RoaXMuX3RvdGFsTGVuZ3RoKz1uO3RoaXMuX3N0cmVhbVNpbmsuZW5xdWV1ZSh7Zm5BcnJheTp0aGlzLmZuQXJyYXksYXJnc0FycmF5OnRoaXMuYXJnc0FycmF5LGxhc3RDaHVuazplLHNlcGFyYXRlQW5ub3RzOnQsbGVuZ3RoOm59LDEsdGhpcy5fdHJhbnNmZXJzKTt0aGlzLmRlcGVuZGVuY2llcy5jbGVhcigpO3RoaXMuZm5BcnJheS5sZW5ndGg9MDt0aGlzLmFyZ3NBcnJheS5sZW5ndGg9MDt0aGlzLndlaWdodD0wO3RoaXMub3B0aW1pemVyLnJlc2V0KCl9fWNsYXNzIENoZWNrZWRPcGVyYXRvckxpc3QgZXh0ZW5kcyBPcGVyYXRvckxpc3R7bmVlZHNJc29sYXRpb249ITE7aGFzU29mdE1hc2s9ITE7YWRkT3AoZSx0KXtpZighdGhpcy5uZWVkc0lzb2xhdGlvbnx8IXRoaXMuaGFzU29mdE1hc2spaWYoZT09PUh0KXt0aGlzLm5lZWRzSXNvbGF0aW9ufHw9dFswXS5uZWVkc0lzb2xhdGlvbjt0aGlzLmhhc1NvZnRNYXNrfHw9dFswXS5oYXNTb2Z0TWFza31lbHNlIGlmKGU9PT1rZSlmb3IoY29uc3RbZSxuXW9mIHRbMF0paWYoIkJNIj09PWUmJiJzb3VyY2Utb3ZlciIhPT1uKXRoaXMubmVlZHNJc29sYXRpb249ITA7ZWxzZSBpZigiU01hc2siPT09ZSYmITEhPT1uKXt0aGlzLm5lZWRzSXNvbGF0aW9uPSEwO3RoaXMuaGFzU29mdE1hc2s9ITB9c3VwZXIuYWRkT3AoZSx0KX19Y29uc3QgV249MSxYbj0yLEtuPTMsR249NCxWbj01LCRuPTYsWW49NztmdW5jdGlvbiBnZXRDb2xvckNvbnZlcnNpb25CYXRjaFNpemUoZSx0KXtyZXR1cm4gTWF0aENsYW1wKE1hdGguZmxvb3IoNjU1MzYvdCksMSxlKX1jbGFzcyBQYXR0ZXJue3N0YXRpYyNMPSExO2NvbnN0cnVjdG9yKCl7dW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIFBhdHRlcm4uIil9c3RhdGljIHNldE9wdGlvbnMoe2hhc0dQVTplfSl7dGhpcy4jTD1lfXN0YXRpYyBwYXJzZVNoYWRpbmcoZSx0LG4sYSxzLHIpe2NvbnN0IGk9ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/ZS5kaWN0OmUsbz1pLmdldCgiU2hhZGluZ1R5cGUiKTt0cnl7c3dpdGNoKG8pe2Nhc2UgV246cmV0dXJuIG5ldyBGdW5jdGlvbkJhc2VkU2hhZGluZyhpLHQsbixhLHMscik7Y2FzZSBYbjpjYXNlIEtuOnJldHVybiBuZXcgUmFkaWFsQXhpYWxTaGFkaW5nKGksdCxuLGEscyxyKTtjYXNlIEduOmNhc2UgVm46Y2FzZSAkbjpjYXNlIFluOnJldHVybiBuZXcgTWVzaFNoYWRpbmcoZSx0LG4sYSxzLHIpO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbnN1cHBvcnRlZCBTaGFkaW5nVHlwZTogIitvKX19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihlKTtyZXR1cm4gbmV3IER1bW15U2hhZGluZ319fWNsYXNzIEJhc2VTaGFkaW5ne3N0YXRpYyBTTUFMTF9OVU1CRVI9MWUtNjtnZXRJUigpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldElSYCBjYWxsZWQuIil9fWNsYXNzIFJhZGlhbEF4aWFsU2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne2NvbnN0cnVjdG9yKGUsdCxuLGEscyxyKXtzdXBlcigpO3RoaXMuc2hhZGluZ1R5cGU9ZS5nZXQoIlNoYWRpbmdUeXBlIik7bGV0IGk9MDt0aGlzLnNoYWRpbmdUeXBlPT09WG4/aT00OnRoaXMuc2hhZGluZ1R5cGU9PT1LbiYmKGk9Nik7dGhpcy5jb29yZHNBcnI9ZS5nZXRBcnJheSgiQ29vcmRzIik7aWYoIWlzTnVtYmVyQXJyYXkodGhpcy5jb29yZHNBcnIsaSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJSYWRpYWxBeGlhbFNoYWRpbmc6IEludmFsaWQgL0Nvb3JkcyBhcnJheS4iKTtjb25zdCBvPUNvbG9yU3BhY2VVdGlscy5wYXJzZSh7Y3M6ZS5nZXRSYXcoIkNTIil8fGUuZ2V0UmF3KCJDb2xvclNwYWNlIikseHJlZjp0LHJlc291cmNlczpuLHBkZkZ1bmN0aW9uRmFjdG9yeTphLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnJ9KTt0aGlzLmJib3g9bG9va3VwTm9ybWFsUmVjdChlLmdldEFycmF5KCJCQm94IiksbnVsbCk7bGV0IGw9MCxmPTE7Y29uc3QgYz1lLmdldEFycmF5KCJEb21haW4iKTtpc051bWJlckFycmF5KGMsMikmJihbbCxmXT1jKTtsZXQgaD0hMSx1PSExO2NvbnN0IG09ZS5nZXRBcnJheSgiRXh0ZW5kIik7KGZ1bmN0aW9uIGlzQm9vbGVhbkFycmF5KGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJihudWxsPT09dHx8ZS5sZW5ndGg9PT10KSYmZS5ldmVyeShlPT4iYm9vbGVhbiI9PXR5cGVvZiBlKX0pKG0sMikmJihbaCx1XT1tKTt0aGlzLmV4dGVuZFN0YXJ0PWg7dGhpcy5leHRlbmRFbmQ9dTtjb25zdCBwPWUuZ2V0UmF3KCJGdW5jdGlvbiIpLGQ9YS5jcmVhdGUocCwhMCksZz04NDAsYj0oZi1sKS9nLHc9dGhpcy5jb2xvclN0b3BzPVtdO2lmKGw+PWZ8fGI8PTApe2luZm8oIkJhZCBzaGFkaW5nIGRvbWFpbi4iKTtyZXR1cm59Y29uc3R7bnVtQ29tcHM6an09byxrPW5ldyBGbG9hdDMyQXJyYXkoMSkseT1nZXRDb2xvckNvbnZlcnNpb25CYXRjaFNpemUoZyxqKSxxPW5ldyBGbG9hdDMyQXJyYXkoeSpqKSx2PW5ldyBVaW50OENsYW1wZWRBcnJheSgyNTIwKTtmb3IobGV0IGU9MDtlPGc7ZSs9eSl7Y29uc3QgdD1NYXRoLm1pbih5LGctZSk7Zm9yKGxldCBuPTAsYT0wO248dDtuKyssYSs9ail7a1swXT1sKyhlK24pKmI7ZChrLDAscSxhKX1vLmdldFJnYkl0ZW1zKHEsdCx2LDMqZSwwKX1sZXQgUz0wLHg9dlswXSxDPXZbMV0sRj12WzJdO3cucHVzaChbMCxVdGlsLm1ha2VIZXhDb2xvcih4LEMsRildKTtsZXQgVD0xLFI9dlszXSxPPXZbNF0sSD12WzVdLEQ9Ui14KzEsTT1PLUMrMSxOPUgtRisxLEU9Ui14LTEsXz1PLUMtMSx6PUgtRi0xO2ZvcihsZXQgZT0yO2U8ZztlKyspe2NvbnN0IHQ9MyplLG49dlt0XSxhPXZbdCsxXSxzPXZbdCsyXSxyPWUtUztEPU1hdGgubWluKEQsKG4teCsxKS9yKTtNPU1hdGgubWluKE0sKGEtQysxKS9yKTtOPU1hdGgubWluKE4sKHMtRisxKS9yKTtFPU1hdGgubWF4KEUsKG4teC0xKS9yKTtfPU1hdGgubWF4KF8sKGEtQy0xKS9yKTt6PU1hdGgubWF4KHosKHMtRi0xKS9yKTtpZighKEU8PUQmJl88PU0mJno8PU4pKXtjb25zdCBlPVV0aWwubWFrZUhleENvbG9yKFIsTyxIKTt3LnB1c2goW1QvZyxlXSk7RD1uLVIrMTtNPWEtTysxO049cy1IKzE7RT1uLVItMTtfPWEtTy0xO3o9cy1ILTE7Uz1UO3g9UjtDPU87Rj1IfVQ9ZTtSPW47Tz1hO0g9c313LnB1c2goWzEsVXRpbC5tYWtlSGV4Q29sb3IoUixPLEgpXSk7Y29uc3QgTD1lLmhhcygiQmFja2dyb3VuZCIpP28uZ2V0UmdiSGV4KGUuZ2V0KCJCYWNrZ3JvdW5kIiksMCk6InRyYW5zcGFyZW50IjtpZighaCl7dy51bnNoaWZ0KFswLExdKTt3WzFdWzBdKz1CYXNlU2hhZGluZy5TTUFMTF9OVU1CRVJ9aWYoIXUpe3cuYXQoLTEpWzBdLT1CYXNlU2hhZGluZy5TTUFMTF9OVU1CRVI7dy5wdXNoKFsxLExdKX10aGlzLmNvbG9yU3RvcHM9d31nZXRJUigpe2NvbnN0e2Nvb3Jkc0FycjplLHNoYWRpbmdUeXBlOnR9PXRoaXM7bGV0IG4sYSxzLHIsaTtpZih0PT09WG4pe2E9W2VbMF0sZVsxXV07cz1bZVsyXSxlWzNdXTtyPW51bGw7aT1udWxsO249ImF4aWFsIn1lbHNlIGlmKHQ9PT1Lbil7YT1bZVswXSxlWzFdXTtzPVtlWzNdLGVbNF1dO3I9ZVsyXTtpPWVbNV07bj0icmFkaWFsIn1lbHNlIHVucmVhY2hhYmxlKGBnZXRQYXR0ZXJuIHR5cGUgdW5rbm93bjogJHt0fWApO3JldHVyblsiUmFkaWFsQXhpYWwiLG4sdGhpcy5iYm94LHRoaXMuY29sb3JTdG9wcyxhLHMscixpXX19ZnVuY3Rpb24gYnVpbGRNZXNoVmVydGV4RGF0YShlLHQsbil7bGV0IGE9MDtmb3IoY29uc3QgZSBvZiBuKWlmKGUudHlwZT09PXkpYSs9ZS5jb29yZHMubGVuZ3RoO2Vsc2UgaWYoZS50eXBlPT09cSl7Y29uc3QgdD1lLnZlcnRpY2VzUGVyUm93O2ErPShNYXRoLmZsb29yKGUuY29vcmRzLmxlbmd0aC90KS0xKSoodC0xKSo2fWNvbnN0IHM9bmV3IEZsb2F0MzJBcnJheSgyKmEpLHI9bmV3IFVpbnQ4QXJyYXkoNCphKTtsZXQgaT0wLG89MDtjb25zdCBhZGRWZXJ0ZXg9KG4sYSk9PntzW2krK109ZVsyKm5dO3NbaSsrXT1lWzIqbisxXTtyW28rK109dFs0KmFdO3JbbysrXT10WzQqYSsxXTtyW28rK109dFs0KmErMl07bysrfTtmb3IoY29uc3QgZSBvZiBuKXtjb25zdCB0PWUuY29vcmRzLG49ZS5jb2xvcnM7aWYoZS50eXBlPT09eSlmb3IobGV0IGU9MCxhPXQubGVuZ3RoO2U8YTtlKyspYWRkVmVydGV4KHRbZV0sbltlXSk7ZWxzZSBpZihlLnR5cGU9PT1xKXtjb25zdCBhPWUudmVydGljZXNQZXJSb3cscz1NYXRoLmZsb29yKHQubGVuZ3RoL2EpLTEscj1hLTE7Zm9yKGxldCBlPTA7ZTxzO2UrKyl7bGV0IHM9ZSphO2ZvcihsZXQgZT0wO2U8cjtlKysscysrKXthZGRWZXJ0ZXgodFtzXSxuW3NdKTthZGRWZXJ0ZXgodFtzKzFdLG5bcysxXSk7YWRkVmVydGV4KHRbcythXSxuW3MrYV0pO2FkZFZlcnRleCh0W3MrYSsxXSxuW3MrYSsxXSk7YWRkVmVydGV4KHRbcysxXSxuW3MrMV0pO2FkZFZlcnRleCh0W3MrYV0sbltzK2FdKX19fX1yZXR1cm57cG9zRGF0YTpzLGNvbERhdGE6cix2ZXJ0ZXhDb3VudDphfX1jbGFzcyBGdW5jdGlvbkJhc2VkU2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne3N0YXRpYyBNQVhfU1RFUF9DT1VOVD01MTI7Y29uc3RydWN0b3IoZSxuLGEscyxyLGkpe3N1cGVyKCk7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3QoZS5nZXRBcnJheSgiQkJveCIpLG51bGwpO2NvbnN0IG89Q29sb3JTcGFjZVV0aWxzLnBhcnNlKHtjczplLmdldFJhdygiQ1MiKXx8ZS5nZXRSYXcoIkNvbG9yU3BhY2UiKSx4cmVmOm4scmVzb3VyY2VzOmEscGRmRnVuY3Rpb25GYWN0b3J5OnMsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnIsbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX0pO3RoaXMuYmFja2dyb3VuZD1lLmhhcygiQmFja2dyb3VuZCIpP28uZ2V0UmdiKGUuZ2V0KCJCYWNrZ3JvdW5kIiksMCk6bnVsbDtjb25zdCBsPWUuZ2V0UmF3KCJGdW5jdGlvbiIpO2lmKCFsKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRnVuY3Rpb25CYXNlZFNoYWRpbmc6IG1pc3NpbmcgL0Z1bmN0aW9uIik7Y29uc3QgZj1zLmNyZWF0ZShsLCEwKSxbYyxoLHUsbV09bG9va3VwUmVjdChlLmdldEFycmF5KCJEb21haW4iKSxbMCwxLDAsMV0pLHA9bG9va3VwTWF0cml4KGUuZ2V0QXJyYXkoIk1hdHJpeCIpLGduKTt0aGlzLmJvdW5kcz10LnNsaWNlKCk7VXRpbC5heGlhbEFsaWduZWRCb3VuZGluZ0JveChbYyx1LGgsbV0scCx0aGlzLmJvdW5kcyk7Y29uc3QgZD10aGlzLmJvdW5kc1syXS10aGlzLmJvdW5kc1swXSxnPXRoaXMuYm91bmRzWzNdLXRoaXMuYm91bmRzWzFdLGI9TWF0aENsYW1wKE1hdGguY2VpbChkKSwxLEZ1bmN0aW9uQmFzZWRTaGFkaW5nLk1BWF9TVEVQX0NPVU5UKSx3PU1hdGhDbGFtcChNYXRoLmNlaWwoZyksMSxGdW5jdGlvbkJhc2VkU2hhZGluZy5NQVhfU1RFUF9DT1VOVCksaj1iKzEsaz0odysxKSpqLHk9dGhpcy5jb29yZHM9bmV3IEZsb2F0MzJBcnJheSgyKmspLHY9dGhpcy5jb2xvcnM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqaykse251bUNvbXBzOlN9PW8seD1uZXcgRmxvYXQzMkFycmF5KDIpLEM9Z2V0Q29sb3JDb252ZXJzaW9uQmF0Y2hTaXplKGssUyksRj1uZXcgRmxvYXQzMkFycmF5KEMqUyksVD0oaC1jKS9iLFI9KG0tdSkvdyxPPVQvMixIPVIvMjtsZXQgRD0wLE09MCxOPTAsRT0wO2ZvcihsZXQgZT0wO2U8PXc7ZSsrKXtjb25zdCB0PXUrUiplO3hbMV09ZT09PXc/dC1IOnQ7Zm9yKGxldCBlPTA7ZTw9YjtlKyspe2NvbnN0IG49YytUKmU7eFswXT1lPT09Yj9uLU86bjtmKHgsMCxGLE0pO00rPVM7TisrO3lbRF09bjt5W0QrMV09dDtVdGlsLmFwcGx5VHJhbnNmb3JtKHkscCxEKTtEKz0yO2lmKE49PT1DKXtvLmdldFJnYkl0ZW1zKEYsTix2LEUsMSk7RSs9NCpOO009Tj0wfX19Tj4wJiZvLmdldFJnYkl0ZW1zKEYsTix2LEUsMSk7Y29uc3QgXz1uZXcgVWludDMyQXJyYXkoayk7Zm9yKGxldCBlPTA7ZTxrO2UrKylfW2VdPWU7dGhpcy5maWd1cmVzPVt7dHlwZTpxLGNvb3JkczpfLGNvbG9yczpuZXcgVWludDMyQXJyYXkoXyksdmVydGljZXNQZXJSb3c6an1dfWdldElSKCl7Y29uc3R7cG9zRGF0YTplLGNvbERhdGE6dCx2ZXJ0ZXhDb3VudDpufT1idWlsZE1lc2hWZXJ0ZXhEYXRhKHRoaXMuY29vcmRzLHRoaXMuY29sb3JzLHRoaXMuZmlndXJlcyk7cmV0dXJuWyJNZXNoIixXbixlLHQsbix0aGlzLmJvdW5kcyx0aGlzLmJib3gsdGhpcy5iYWNrZ3JvdW5kXX19Y2xhc3MgTWVzaFN0cmVhbVJlYWRlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc3RyZWFtPWU7dGhpcy5jb250ZXh0PXQ7dGhpcy5idWZmZXI9MDt0aGlzLmJ1ZmZlckxlbmd0aD0wO2NvbnN0IG49dC5udW1Db21wczt0aGlzLnRtcENvbXBzQnVmPW5ldyBGbG9hdDMyQXJyYXkobik7Y29uc3QgYT10LmNvbG9yU3BhY2UubnVtQ29tcHM7dGhpcy50bXBDc0NvbXBzQnVmPXQuY29sb3JGbj9uZXcgRmxvYXQzMkFycmF5KGEpOnRoaXMudG1wQ29tcHNCdWZ9Z2V0IGhhc0RhdGEoKXtpZih0aGlzLnN0cmVhbS5lbmQpcmV0dXJuIHRoaXMuc3RyZWFtLnBvczx0aGlzLnN0cmVhbS5lbmQ7aWYodGhpcy5idWZmZXJMZW5ndGg+MClyZXR1cm4hMDtjb25zdCBlPXRoaXMuc3RyZWFtLmdldEJ5dGUoKTtpZihlPDApcmV0dXJuITE7dGhpcy5idWZmZXI9ZTt0aGlzLmJ1ZmZlckxlbmd0aD04O3JldHVybiEwfXJlYWRCaXRzKGUpe2NvbnN0e3N0cmVhbTp0fT10aGlzO2xldHtidWZmZXI6bixidWZmZXJMZW5ndGg6YX09dGhpcztpZigzMj09PWUpe2lmKDA9PT1hKXJldHVybiB0LmdldEludDMyKCk+Pj4wO249bjw8MjR8dC5nZXRCeXRlKCk8PDE2fHQuZ2V0Qnl0ZSgpPDw4fHQuZ2V0Qnl0ZSgpO2NvbnN0IGU9dC5nZXRCeXRlKCk7dGhpcy5idWZmZXI9ZSYoMTw8YSktMTtyZXR1cm4objw8OC1hfCgyNTUmZSk+PmEpPj4+MH1pZig4PT09ZSYmMD09PWEpcmV0dXJuIHQuZ2V0Qnl0ZSgpO2Zvcig7YTxlOyl7bj1uPDw4fHQuZ2V0Qnl0ZSgpO2ErPTh9YS09ZTt0aGlzLmJ1ZmZlckxlbmd0aD1hO3RoaXMuYnVmZmVyPW4mKDE8PGEpLTE7cmV0dXJuIG4+PmF9YWxpZ24oKXt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTB9cmVhZEZsYWcoKXtyZXR1cm4gdGhpcy5yZWFkQml0cyh0aGlzLmNvbnRleHQuYml0c1BlckZsYWcpfXJlYWRDb29yZGluYXRlKCl7Y29uc3R7Yml0c1BlckNvb3JkaW5hdGU6ZSxkZWNvZGU6dH09dGhpcy5jb250ZXh0LG49dGhpcy5yZWFkQml0cyhlKSxhPXRoaXMucmVhZEJpdHMoZSkscz1lPDMyPzEvKCgxPDxlKS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwO3JldHVybltuKnMqKHRbMV0tdFswXSkrdFswXSxhKnMqKHRbM10tdFsyXSkrdFsyXV19cmVhZENvbXBvbmVudHMoKXtjb25zdHtiaXRzUGVyQ29tcG9uZW50OmUsY29sb3JGbjp0LGNvbG9yU3BhY2U6bixkZWNvZGU6YSxudW1Db21wczpzfT10aGlzLmNvbnRleHQscj1lPDMyPzEvKCgxPDxlKS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwLGk9dGhpcy50bXBDb21wc0J1Zjtmb3IobGV0IHQ9MCxuPTQ7dDxzO3QrKyxuKz0yKXtjb25zdCBzPXRoaXMucmVhZEJpdHMoZSk7aVt0XT1zKnIqKGFbbisxXS1hW25dKSthW25dfWNvbnN0IG89dGhpcy50bXBDc0NvbXBzQnVmO3Q/LihpLDAsbywwKTtyZXR1cm4gbi5nZXRSZ2IobywwKX19bGV0IEpuPW51bGw7ZnVuY3Rpb24gZ2V0QihlKXtyZXR1cm4oSm4/Pz1uZXcgTWFwKS5nZXRPckluc2VydENvbXB1dGVkKGUsKCk9PkFycmF5LmZyb20oe2xlbmd0aDplKzF9LCh0LG4pPT57Y29uc3QgYT1uL2Uscz0xLWE7cmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoW3MqKjMsMyphKnMqKjIsMyphKioyKnMsYSoqM10pfSkpfWNsYXNzIE1lc2hTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7c3RhdGljIE1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5UPTM7c3RhdGljIE1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5UPTIwO3N0YXRpYyBUUklBTkdMRV9ERU5TSVRZPTIwO2NvbnN0cnVjdG9yKGUsdCxuLGEscyxyKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWVzaCBkYXRhIGlzIG5vdCBhIHN0cmVhbSIpO2NvbnN0IGk9ZS5kaWN0O3RoaXMuc2hhZGluZ1R5cGU9aS5nZXQoIlNoYWRpbmdUeXBlIik7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3QoaS5nZXRBcnJheSgiQkJveCIpLG51bGwpO2NvbnN0IG89Q29sb3JTcGFjZVV0aWxzLnBhcnNlKHtjczppLmdldFJhdygiQ1MiKXx8aS5nZXRSYXcoIkNvbG9yU3BhY2UiKSx4cmVmOnQscmVzb3VyY2VzOm4scGRmRnVuY3Rpb25GYWN0b3J5OmEsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6cn0pO3RoaXMuYmFja2dyb3VuZD1pLmhhcygiQmFja2dyb3VuZCIpP28uZ2V0UmdiKGkuZ2V0KCJCYWNrZ3JvdW5kIiksMCk6bnVsbDtjb25zdCBsPWkuZ2V0UmF3KCJGdW5jdGlvbiIpLGY9bD9hLmNyZWF0ZShsLCEwKTpudWxsO3RoaXMuY29vcmRzPVtdO3RoaXMuY29sb3JzPVtdO3RoaXMuZmlndXJlcz1bXTtjb25zdCBjPXtiaXRzUGVyQ29vcmRpbmF0ZTppLmdldCgiQml0c1BlckNvb3JkaW5hdGUiKSxiaXRzUGVyQ29tcG9uZW50OmkuZ2V0KCJCaXRzUGVyQ29tcG9uZW50IiksYml0c1BlckZsYWc6aS5nZXQoIkJpdHNQZXJGbGFnIiksZGVjb2RlOmkuZ2V0QXJyYXkoIkRlY29kZSIpLGNvbG9yRm46Zixjb2xvclNwYWNlOm8sbnVtQ29tcHM6Zj8xOm8ubnVtQ29tcHN9LGg9bmV3IE1lc2hTdHJlYW1SZWFkZXIoZSxjKTtsZXQgdT0hMTtzd2l0Y2godGhpcy5zaGFkaW5nVHlwZSl7Y2FzZSBHbjp0aGlzLl9kZWNvZGVUeXBlNFNoYWRpbmcoaCk7YnJlYWs7Y2FzZSBWbjpjb25zdCBlPTB8aS5nZXQoIlZlcnRpY2VzUGVyUm93Iik7aWYoZTwyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBWZXJ0aWNlc1BlclJvdyIpO3RoaXMuX2RlY29kZVR5cGU1U2hhZGluZyhoLGUpO2JyZWFrO2Nhc2UgJG46dGhpcy5fZGVjb2RlVHlwZTZTaGFkaW5nKGgpO3U9ITA7YnJlYWs7Y2FzZSBZbjp0aGlzLl9kZWNvZGVUeXBlN1NoYWRpbmcoaCk7dT0hMDticmVhaztkZWZhdWx0OnVucmVhY2hhYmxlKCJVbnN1cHBvcnRlZCBtZXNoIHR5cGUuIil9aWYodSl7dGhpcy5fdXBkYXRlQm91bmRzKCk7Zm9yKGxldCBlPTAsdD10aGlzLmZpZ3VyZXMubGVuZ3RoO2U8dDtlKyspdGhpcy5fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl9dGhpcy5fdXBkYXRlQm91bmRzKCk7dGhpcy5fcGFja0RhdGEoKX1fZGVjb2RlVHlwZTRTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsbj10aGlzLmNvbG9ycyxhPVtdLHM9W107bGV0IHI9MDtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IGk9ZS5yZWFkRmxhZygpLG89ZS5yZWFkQ29vcmRpbmF0ZSgpLGw9ZS5yZWFkQ29tcG9uZW50cygpO2lmKDA9PT1yKXtpZighKDA8PWkmJmk8PTIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNCBmbGFnIik7c3dpdGNoKGkpe2Nhc2UgMDpyPTM7YnJlYWs7Y2FzZSAxOnMucHVzaChzLmF0KC0yKSxzLmF0KC0xKSk7cj0xO2JyZWFrO2Nhc2UgMjpzLnB1c2gocy5hdCgtMykscy5hdCgtMSkpO3I9MX1hLnB1c2goaSl9cy5wdXNoKHQubGVuZ3RoKTt0LnB1c2gobyk7bi5wdXNoKGwpO3ItLTtlLmFsaWduKCl9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6eSxjb29yZHM6bmV3IEludDMyQXJyYXkocyksY29sb3JzOm5ldyBJbnQzMkFycmF5KHMpfSl9X2RlY29kZVR5cGU1U2hhZGluZyhlLHQpe2NvbnN0IG49dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxzPVtdO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3QgdD1lLnJlYWRDb29yZGluYXRlKCkscj1lLnJlYWRDb21wb25lbnRzKCk7cy5wdXNoKG4ubGVuZ3RoKTtuLnB1c2godCk7YS5wdXNoKHIpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOnEsY29vcmRzOm5ldyBJbnQzMkFycmF5KHMpLGNvbG9yczpuZXcgSW50MzJBcnJheShzKSx2ZXJ0aWNlc1BlclJvdzp0fSl9X2RlY29kZVR5cGU2U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLG49dGhpcy5jb2xvcnMsYT1uZXcgSW50MzJBcnJheSgxNikscz1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHI9ZS5yZWFkRmxhZygpO2lmKCEoMDw9ciYmcjw9MykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU2IGZsYWciKTtjb25zdCBpPXQubGVuZ3RoO2ZvcihsZXQgbj0wLGE9MCE9PXI/ODoxMjtuPGE7bisrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IG89bi5sZW5ndGg7Zm9yKGxldCB0PTAsYT0wIT09cj8yOjQ7dDxhO3QrKyluLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgbCxmLGMsaDtzd2l0Y2gocil7Y2FzZSAwOmFbMTJdPWkrMzthWzEzXT1pKzQ7YVsxNF09aSs1O2FbMTVdPWkrNjthWzhdPWkrMjthWzExXT1pKzc7YVs0XT1pKzE7YVs3XT1pKzg7YVswXT1pO2FbMV09aSsxMTthWzJdPWkrMTA7YVszXT1pKzk7c1syXT1vKzE7c1szXT1vKzI7c1swXT1vO3NbMV09byszO2JyZWFrO2Nhc2UgMTpsPWFbMTJdO2Y9YVsxM107Yz1hWzE0XTtoPWFbMTVdO2FbMTJdPWg7YVsxM109aSswO2FbMTRdPWkrMTthWzE1XT1pKzI7YVs4XT1jO2FbMTFdPWkrMzthWzRdPWY7YVs3XT1pKzQ7YVswXT1sO2FbMV09aSs3O2FbMl09aSs2O2FbM109aSs1O2w9c1syXTtmPXNbM107c1syXT1mO3NbM109bztzWzBdPWw7c1sxXT1vKzE7YnJlYWs7Y2FzZSAyOmw9YVsxNV07Zj1hWzExXTthWzEyXT1hWzNdO2FbMTNdPWkrMDthWzE0XT1pKzE7YVsxNV09aSsyO2FbOF09YVs3XTthWzExXT1pKzM7YVs0XT1mO2FbN109aSs0O2FbMF09bDthWzFdPWkrNzthWzJdPWkrNjthWzNdPWkrNTtsPXNbM107c1syXT1zWzFdO3NbM109bztzWzBdPWw7c1sxXT1vKzE7YnJlYWs7Y2FzZSAzOmFbMTJdPWFbMF07YVsxM109aSswO2FbMTRdPWkrMTthWzE1XT1pKzI7YVs4XT1hWzFdO2FbMTFdPWkrMzthWzRdPWFbMl07YVs3XT1pKzQ7YVswXT1hWzNdO2FbMV09aSs3O2FbMl09aSs2O2FbM109aSs1O3NbMl09c1swXTtzWzNdPW87c1swXT1zWzFdO3NbMV09bysxfWFbNV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFthWzBdXVswXS10W2FbMTVdXVswXSs2Kih0W2FbNF1dWzBdK3RbYVsxXV1bMF0pLTIqKHRbYVsxMl1dWzBdK3RbYVszXV1bMF0pKzMqKHRbYVsxM11dWzBdK3RbYVs3XV1bMF0pKS85LCgtNCp0W2FbMF1dWzFdLXRbYVsxNV1dWzFdKzYqKHRbYVs0XV1bMV0rdFthWzFdXVsxXSktMioodFthWzEyXV1bMV0rdFthWzNdXVsxXSkrMyoodFthWzEzXV1bMV0rdFthWzddXVsxXSkpLzldKTthWzZdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbYVszXV1bMF0tdFthWzEyXV1bMF0rNioodFthWzJdXVswXSt0W2FbN11dWzBdKS0yKih0W2FbMF1dWzBdK3RbYVsxNV1dWzBdKSszKih0W2FbNF1dWzBdK3RbYVsxNF1dWzBdKSkvOSwoLTQqdFthWzNdXVsxXS10W2FbMTJdXVsxXSs2Kih0W2FbMl1dWzFdK3RbYVs3XV1bMV0pLTIqKHRbYVswXV1bMV0rdFthWzE1XV1bMV0pKzMqKHRbYVs0XV1bMV0rdFthWzE0XV1bMV0pKS85XSk7YVs5XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W2FbMTJdXVswXS10W2FbM11dWzBdKzYqKHRbYVs4XV1bMF0rdFthWzEzXV1bMF0pLTIqKHRbYVswXV1bMF0rdFthWzE1XV1bMF0pKzMqKHRbYVsxMV1dWzBdK3RbYVsxXV1bMF0pKS85LCgtNCp0W2FbMTJdXVsxXS10W2FbM11dWzFdKzYqKHRbYVs4XV1bMV0rdFthWzEzXV1bMV0pLTIqKHRbYVswXV1bMV0rdFthWzE1XV1bMV0pKzMqKHRbYVsxMV1dWzFdK3RbYVsxXV1bMV0pKS85XSk7YVsxMF09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFthWzE1XV1bMF0tdFthWzBdXVswXSs2Kih0W2FbMTFdXVswXSt0W2FbMTRdXVswXSktMioodFthWzEyXV1bMF0rdFthWzNdXVswXSkrMyoodFthWzJdXVswXSt0W2FbOF1dWzBdKSkvOSwoLTQqdFthWzE1XV1bMV0tdFthWzBdXVsxXSs2Kih0W2FbMTFdXVsxXSt0W2FbMTRdXVsxXSktMioodFthWzEyXV1bMV0rdFthWzNdXVsxXSkrMyoodFthWzJdXVsxXSt0W2FbOF1dWzFdKSkvOV0pO3RoaXMuZmlndXJlcy5wdXNoKHt0eXBlOnYsY29vcmRzOm5ldyBJbnQzMkFycmF5KGEpLGNvbG9yczpuZXcgSW50MzJBcnJheShzKX0pfX1fZGVjb2RlVHlwZTdTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsbj10aGlzLmNvbG9ycyxhPW5ldyBJbnQzMkFycmF5KDE2KSxzPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgcj1lLnJlYWRGbGFnKCk7aWYoISgwPD1yJiZyPD0zKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTcgZmxhZyIpO2NvbnN0IGk9dC5sZW5ndGg7Zm9yKGxldCBuPTAsYT0wIT09cj8xMjoxNjtuPGE7bisrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IG89bi5sZW5ndGg7Zm9yKGxldCB0PTAsYT0wIT09cj8yOjQ7dDxhO3QrKyluLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgbCxmLGMsaDtzd2l0Y2gocil7Y2FzZSAwOmFbMTJdPWkrMzthWzEzXT1pKzQ7YVsxNF09aSs1O2FbMTVdPWkrNjthWzhdPWkrMjthWzldPWkrMTM7YVsxMF09aSsxNDthWzExXT1pKzc7YVs0XT1pKzE7YVs1XT1pKzEyO2FbNl09aSsxNTthWzddPWkrODthWzBdPWk7YVsxXT1pKzExO2FbMl09aSsxMDthWzNdPWkrOTtzWzJdPW8rMTtzWzNdPW8rMjtzWzBdPW87c1sxXT1vKzM7YnJlYWs7Y2FzZSAxOmw9YVsxMl07Zj1hWzEzXTtjPWFbMTRdO2g9YVsxNV07YVsxMl09aDthWzEzXT1pKzA7YVsxNF09aSsxO2FbMTVdPWkrMjthWzhdPWM7YVs5XT1pKzk7YVsxMF09aSsxMDthWzExXT1pKzM7YVs0XT1mO2FbNV09aSs4O2FbNl09aSsxMTthWzddPWkrNDthWzBdPWw7YVsxXT1pKzc7YVsyXT1pKzY7YVszXT1pKzU7bD1zWzJdO2Y9c1szXTtzWzJdPWY7c1szXT1vO3NbMF09bDtzWzFdPW8rMTticmVhaztjYXNlIDI6bD1hWzE1XTtmPWFbMTFdO2FbMTJdPWFbM107YVsxM109aSswO2FbMTRdPWkrMTthWzE1XT1pKzI7YVs4XT1hWzddO2FbOV09aSs5O2FbMTBdPWkrMTA7YVsxMV09aSszO2FbNF09ZjthWzVdPWkrODthWzZdPWkrMTE7YVs3XT1pKzQ7YVswXT1sO2FbMV09aSs3O2FbMl09aSs2O2FbM109aSs1O2w9c1szXTtzWzJdPXNbMV07c1szXT1vO3NbMF09bDtzWzFdPW8rMTticmVhaztjYXNlIDM6YVsxMl09YVswXTthWzEzXT1pKzA7YVsxNF09aSsxO2FbMTVdPWkrMjthWzhdPWFbMV07YVs5XT1pKzk7YVsxMF09aSsxMDthWzExXT1pKzM7YVs0XT1hWzJdO2FbNV09aSs4O2FbNl09aSsxMTthWzddPWkrNDthWzBdPWFbM107YVsxXT1pKzc7YVsyXT1pKzY7YVszXT1pKzU7c1syXT1zWzBdO3NbM109bztzWzBdPXNbMV07c1sxXT1vKzF9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6dixjb29yZHM6bmV3IEludDMyQXJyYXkoYSksY29sb3JzOm5ldyBJbnQzMkFycmF5KHMpfSl9fV9idWlsZEZpZ3VyZUZyb21QYXRjaChlKXtjb25zdCB0PXRoaXMuZmlndXJlc1tlXTthc3NlcnQodC50eXBlPT09diwiVW5leHBlY3RlZCBwYXRjaCBtZXNoIGZpZ3VyZSIpO2NvbnN0IG49dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxzPXQuY29vcmRzLHI9dC5jb2xvcnMsaT1NYXRoLm1pbihuW3NbMF1dWzBdLG5bc1szXV1bMF0sbltzWzEyXV1bMF0sbltzWzE1XV1bMF0pLG89TWF0aC5taW4obltzWzBdXVsxXSxuW3NbM11dWzFdLG5bc1sxMl1dWzFdLG5bc1sxNV1dWzFdKSxsPU1hdGgubWF4KG5bc1swXV1bMF0sbltzWzNdXVswXSxuW3NbMTJdXVswXSxuW3NbMTVdXVswXSksZj1NYXRoLm1heChuW3NbMF1dWzFdLG5bc1szXV1bMV0sbltzWzEyXV1bMV0sbltzWzE1XV1bMV0pO2xldCBjPU1hdGguY2VpbCgobC1pKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1syXS10aGlzLmJvdW5kc1swXSkpO2M9TWF0aENsYW1wKGMsTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQpO2xldCBoPU1hdGguY2VpbCgoZi1vKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1szXS10aGlzLmJvdW5kc1sxXSkpO2g9TWF0aENsYW1wKGgsTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQpO2NvbnN0IHU9YysxLG09bmV3IEludDMyQXJyYXkoKGgrMSkqdSkscD1uZXcgSW50MzJBcnJheSgoaCsxKSp1KTtsZXQgZD0wO2NvbnN0IGc9bmV3IFVpbnQ4QXJyYXkoMyksYj1uZXcgVWludDhBcnJheSgzKSx3PWFbclswXV0saj1hW3JbMV1dLGs9YVtyWzJdXSx5PWFbclszXV0sUz1nZXRCKGgpLHg9Z2V0QihjKTtmb3IobGV0IGU9MDtlPD1oO2UrKyl7Z1swXT0od1swXSooaC1lKStrWzBdKmUpL2h8MDtnWzFdPSh3WzFdKihoLWUpK2tbMV0qZSkvaHwwO2dbMl09KHdbMl0qKGgtZSkra1syXSplKS9ofDA7YlswXT0oalswXSooaC1lKSt5WzBdKmUpL2h8MDtiWzFdPShqWzFdKihoLWUpK3lbMV0qZSkvaHwwO2JbMl09KGpbMl0qKGgtZSkreVsyXSplKS9ofDA7Zm9yKGxldCB0PTA7dDw9Yzt0KyssZCsrKXtpZighKDAhPT1lJiZlIT09aHx8MCE9PXQmJnQhPT1jKSljb250aW51ZTtsZXQgcj0wLGk9MCxvPTA7Zm9yKGxldCBhPTA7YTw9MzthKyspZm9yKGxldCBsPTA7bDw9MztsKyssbysrKXtjb25zdCBmPVNbZV1bYV0qeFt0XVtsXTtyKz1uW3Nbb11dWzBdKmY7aSs9bltzW29dXVsxXSpmfW1bZF09bi5sZW5ndGg7bi5wdXNoKFtyLGldKTtwW2RdPWEubGVuZ3RoO2NvbnN0IGw9bmV3IFVpbnQ4QXJyYXkoMyk7bFswXT0oZ1swXSooYy10KStiWzBdKnQpL2N8MDtsWzFdPShnWzFdKihjLXQpK2JbMV0qdCkvY3wwO2xbMl09KGdbMl0qKGMtdCkrYlsyXSp0KS9jfDA7YS5wdXNoKGwpfX1tWzBdPXNbMF07cFswXT1yWzBdO21bY109c1szXTtwW2NdPXJbMV07bVt1KmhdPXNbMTJdO3BbdSpoXT1yWzJdO21bdSpoK2NdPXNbMTVdO3BbdSpoK2NdPXJbM107dGhpcy5maWd1cmVzW2VdPXt0eXBlOnEsY29vcmRzOm0sY29sb3JzOnAsdmVydGljZXNQZXJSb3c6dX19X3VwZGF0ZUJvdW5kcygpeyFmdW5jdGlvbiBtZXNoVXBkYXRlQm91bmRzKGUpe2xldCB0PWUuY29vcmRzWzBdWzBdLG49ZS5jb29yZHNbMF1bMV0sYT10LHM9bjtmb3IobGV0IHI9MSxpPWUuY29vcmRzLmxlbmd0aDtyPGk7cisrKXtjb25zdCBpPWUuY29vcmRzW3JdWzBdLG89ZS5jb29yZHNbcl1bMV07dD10Pmk/aTp0O249bj5vP286bjthPWE8aT9pOmE7cz1zPG8/bzpzfWUuYm91bmRzPVt0LG4sYSxzXX0odGhpcyl9X3BhY2tEYXRhKCl7IWZ1bmN0aW9uIG1lc2hQYWNrRGF0YShlKXtsZXQgdCxuLGE7Y29uc3Qgcz1lLmNvb3JkcyxyPW5ldyBGbG9hdDMyQXJyYXkoMipzLmxlbmd0aCk7Zm9yKHQ9MCxuPTAsYT1zLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBlPXNbdF07cltuKytdPWVbMF07cltuKytdPWVbMV19ZS5jb29yZHM9cjtjb25zdCBpPWUuY29sb3JzLG89bmV3IFVpbnQ4QXJyYXkoNCppLmxlbmd0aCk7Zm9yKHQ9MCxuPTAsYT1pLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBlPWlbdF07b1tuKytdPWVbMF07b1tuKytdPWVbMV07b1tuKytdPWVbMl07bisrfWUuY29sb3JzPW87Zm9yKGNvbnN0IHQgb2YgZS5maWd1cmVzKXt0LmNvb3Jkcz1uZXcgVWludDMyQXJyYXkodC5jb29yZHMpO3QuY29sb3JzPW5ldyBVaW50MzJBcnJheSh0LmNvbG9ycyl9fSh0aGlzKX1nZXRJUigpe2NvbnN0e3Bvc0RhdGE6ZSxjb2xEYXRhOnQsdmVydGV4Q291bnQ6bn09YnVpbGRNZXNoVmVydGV4RGF0YSh0aGlzLmNvb3Jkcyx0aGlzLmNvbG9ycyx0aGlzLmZpZ3VyZXMpO3JldHVyblsiTWVzaCIsdGhpcy5zaGFkaW5nVHlwZSxlLHQsbix0aGlzLmJvdW5kcyx0aGlzLmJib3gsdGhpcy5iYWNrZ3JvdW5kXX19Y2xhc3MgRHVtbXlTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Z2V0SVIoKXtyZXR1cm5bIkR1bW15Il19fWZ1bmN0aW9uIGdldFRpbGluZ1BhdHRlcm5JUihlLHQsbixhPSEwKXtjb25zdCBzPWxvb2t1cE1hdHJpeCh0LmdldEFycmF5KCJNYXRyaXgiKSxnbikscj1sb29rdXBOb3JtYWxSZWN0KHQuZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtpZighcnx8clsyXS1yWzBdPT09MHx8clszXS1yWzFdPT09MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9CQm94IGFycmF5LiIpO2NvbnN0IGk9dC5nZXQoIlhTdGVwIik7aWYoIm51bWJlciIhPXR5cGVvZiBpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL1hTdGVwIHZhbHVlLiIpO2NvbnN0IG89dC5nZXQoIllTdGVwIik7aWYoIm51bWJlciIhPXR5cGVvZiBvKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL1lTdGVwIHZhbHVlLiIpO2NvbnN0IGw9dC5nZXQoIlBhaW50VHlwZSIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGwpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL1BhaW50VHlwZSB2YWx1ZS4iKTtjb25zdCBmPXQuZ2V0KCJUaWxpbmdUeXBlIik7aWYoIU51bWJlci5pc0ludGVnZXIoZikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvVGlsaW5nVHlwZSB2YWx1ZS4iKTtyZXR1cm5bIlRpbGluZ1BhdHRlcm4iLG4sZSxzLHIsaSxvLGwsZixhXX1mdW5jdGlvbiBoZXhUb0ludChlLHQpe2xldCBuPTA7Zm9yKGxldCBhPTA7YTw9dDthKyspbj1uPDw4fGVbYV07cmV0dXJuIG4+Pj4wfWZ1bmN0aW9uIGhleFRvU3RyKGUsdCl7cmV0dXJuIDE9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdKTozPT09dD9TdHJpbmcuZnJvbUNoYXJDb2RlKGVbMF0sZVsxXSxlWzJdLGVbM10pOlN0cmluZy5mcm9tQ2hhckNvZGUoLi4uZS5zdWJhcnJheSgwLHQrMSkpfWZ1bmN0aW9uIGFkZEhleChlLHQsbil7bGV0IGE9MDtmb3IobGV0IHM9bjtzPj0wO3MtLSl7YSs9ZVtzXSt0W3NdO2Vbc109MjU1JmE7YT4+PTh9fWZ1bmN0aW9uIGluY0hleChlLHQpe2xldCBuPTE7Zm9yKGxldCBhPXQ7YT49MCYmbj4wO2EtLSl7bis9ZVthXTtlW2FdPTI1NSZuO24+Pj04fX1jb25zdCBRbj0xNjtjbGFzcyBCaW5hcnlDTWFwU3RyZWFtIGV4dGVuZHMgU3RyZWFte3RtcEJ1Zj1uZXcgVWludDhBcnJheSgxOSk7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwwLGUubGVuZ3RoLG51bGwpfXJlYWROdW1iZXIoKXtsZXQgZSx0PTA7ZG97Y29uc3Qgbj10aGlzLmdldEJ5dGUoKTtpZihuPDApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2U9ISgxMjgmbik7dD10PDw3fDEyNyZufXdoaWxlKCFlKTtyZXR1cm4gdH1yZWFkU2lnbmVkKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gMSZlP34oZT4+PjEpOmU+Pj4xfXJlYWRIZXgoZSx0KXtlLnNldCh0aGlzLmdldEJ5dGVzKHQrMSkpfXJlYWRIZXhOdW1iZXIoZSx0KXtsZXQgbjtjb25zdCBhPXRoaXMudG1wQnVmO2xldCBzPTA7ZG97Y29uc3QgZT10aGlzLmdldEJ5dGUoKTtpZihlPDApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO249ISgxMjgmZSk7YVtzKytdPTEyNyZlfXdoaWxlKCFuKTtsZXQgcj10LGk9MCxvPTA7Zm9yKDtyPj0wOyl7Zm9yKDtvPDgmJmEubGVuZ3RoPjA7KXtpfD1hWy0tc108PG87bys9N31lW3JdPTI1NSZpO3ItLTtpPj49ODtvLT04fX1yZWFkSGV4U2lnbmVkKGUsdCl7dGhpcy5yZWFkSGV4TnVtYmVyKGUsdCk7Y29uc3Qgbj0xJmVbdF0/MjU1OjA7bGV0IGE9MDtmb3IobGV0IHM9MDtzPD10O3MrKyl7YT0oMSZhKTw8OHxlW3NdO2Vbc109YT4+MV5ufX1yZWFkU3RyaW5nKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKSx0PW5ldyBBcnJheShlKTtmb3IobGV0IG49MDtuPGU7bisrKXRbbl09dGhpcy5yZWFkTnVtYmVyKCk7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoLi4udCl9fWNsYXNzIEJpbmFyeUNNYXBSZWFkZXJ7YXN5bmMgcHJvY2VzcyhlLHQsbil7Y29uc3QgYT1uZXcgQmluYXJ5Q01hcFN0cmVhbShlKSxzPWEuZ2V0Qnl0ZSgpO3QudmVydGljYWw9ISEoMSZzKTtsZXQgcj1udWxsO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoUW4pLG89bmV3IFVpbnQ4QXJyYXkoUW4pLGw9bmV3IFVpbnQ4QXJyYXkoUW4pLGY9bmV3IFVpbnQ4QXJyYXkoUW4pLGM9bmV3IFVpbnQ4QXJyYXkoUW4pO2xldCBoLHU7Zm9yKDsodT1hLmdldEJ5dGUoKSk+PTA7KXtjb25zdCBlPXU+PjU7aWYoNz09PWUpe3N3aXRjaCgzMSZ1KXtjYXNlIDA6YS5yZWFkU3RyaW5nKCk7YnJlYWs7Y2FzZSAxOnI9YS5yZWFkU3RyaW5nKCl9Y29udGludWV9Y29uc3Qgbj0hISgxNiZ1KSxzPTE1JnU7aWYocysxPlFuKXRocm93IG5ldyBFcnJvcigiQmluYXJ5Q01hcFJlYWRlci5wcm9jZXNzOiBJbnZhbGlkIGRhdGFTaXplLiIpO2NvbnN0IG09MSxwPWEucmVhZE51bWJlcigpO3N3aXRjaChlKXtjYXNlIDA6YS5yZWFkSGV4KGkscyk7YS5yZWFkSGV4TnVtYmVyKG8scyk7YWRkSGV4KG8saSxzKTt0LmFkZENvZGVzcGFjZVJhbmdlKHMrMSxoZXhUb0ludChpLHMpLGhleFRvSW50KG8scykpO2ZvcihsZXQgZT0xO2U8cDtlKyspe2luY0hleChvLHMpO2EucmVhZEhleE51bWJlcihpLHMpO2FkZEhleChpLG8scyk7YS5yZWFkSGV4TnVtYmVyKG8scyk7YWRkSGV4KG8saSxzKTt0LmFkZENvZGVzcGFjZVJhbmdlKHMrMSxoZXhUb0ludChpLHMpLGhleFRvSW50KG8scykpfWJyZWFrO2Nhc2UgMTphLnJlYWRIZXgoaSxzKTthLnJlYWRIZXhOdW1iZXIobyxzKTthZGRIZXgobyxpLHMpO2EucmVhZE51bWJlcigpO2ZvcihsZXQgZT0xO2U8cDtlKyspe2luY0hleChvLHMpO2EucmVhZEhleE51bWJlcihpLHMpO2FkZEhleChpLG8scyk7YS5yZWFkSGV4TnVtYmVyKG8scyk7YWRkSGV4KG8saSxzKTthLnJlYWROdW1iZXIoKX1icmVhaztjYXNlIDI6YS5yZWFkSGV4KGwscyk7aD1hLnJlYWROdW1iZXIoKTt0Lm1hcE9uZShoZXhUb0ludChsLHMpLGgpO2ZvcihsZXQgZT0xO2U8cDtlKyspe2luY0hleChsLHMpO2lmKCFuKXthLnJlYWRIZXhOdW1iZXIoYyxzKTthZGRIZXgobCxjLHMpfWg9YS5yZWFkU2lnbmVkKCkrKGgrMSk7dC5tYXBPbmUoaGV4VG9JbnQobCxzKSxoKX1icmVhaztjYXNlIDM6YS5yZWFkSGV4KGkscyk7YS5yZWFkSGV4TnVtYmVyKG8scyk7YWRkSGV4KG8saSxzKTtoPWEucmVhZE51bWJlcigpO3QubWFwQ2lkUmFuZ2UoaGV4VG9JbnQoaSxzKSxoZXhUb0ludChvLHMpLGgpO2ZvcihsZXQgZT0xO2U8cDtlKyspe2luY0hleChvLHMpO2lmKG4paS5zZXQobyk7ZWxzZXthLnJlYWRIZXhOdW1iZXIoaSxzKTthZGRIZXgoaSxvLHMpfWEucmVhZEhleE51bWJlcihvLHMpO2FkZEhleChvLGkscyk7aD1hLnJlYWROdW1iZXIoKTt0Lm1hcENpZFJhbmdlKGhleFRvSW50KGkscyksaGV4VG9JbnQobyxzKSxoKX1icmVhaztjYXNlIDQ6YS5yZWFkSGV4KGwsbSk7YS5yZWFkSGV4KGYscyk7dC5tYXBPbmUoaGV4VG9JbnQobCxtKSxoZXhUb1N0cihmLHMpKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgobCxtKTtpZighbil7YS5yZWFkSGV4TnVtYmVyKGMsbSk7YWRkSGV4KGwsYyxtKX1pbmNIZXgoZixzKTthLnJlYWRIZXhTaWduZWQoYyxzKTthZGRIZXgoZixjLHMpO3QubWFwT25lKGhleFRvSW50KGwsbSksaGV4VG9TdHIoZixzKSl9YnJlYWs7Y2FzZSA1OmEucmVhZEhleChpLG0pO2EucmVhZEhleE51bWJlcihvLG0pO2FkZEhleChvLGksbSk7YS5yZWFkSGV4KGYscyk7dC5tYXBCZlJhbmdlKGhleFRvSW50KGksbSksaGV4VG9JbnQobyxtKSxoZXhUb1N0cihmLHMpKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgobyxtKTtpZihuKWkuc2V0KG8pO2Vsc2V7YS5yZWFkSGV4TnVtYmVyKGksbSk7YWRkSGV4KGksbyxtKX1hLnJlYWRIZXhOdW1iZXIobyxtKTthZGRIZXgobyxpLG0pO2EucmVhZEhleChmLHMpO3QubWFwQmZSYW5nZShoZXhUb0ludChpLG0pLGhleFRvSW50KG8sbSksaGV4VG9TdHIoZixzKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEJpbmFyeUNNYXBSZWFkZXIucHJvY2VzcyAtIHVua25vd24gdHlwZTogJHtlfWApfX1yZXR1cm4gcj9uKHIpOnR9fWNsYXNzIEFzY2lpODVTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17I1U9bmV3IFVpbnQ4QXJyYXkoNSk7Y29uc3RydWN0b3IoZSx0KXt0JiYodCo9LjgpO3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyZWFtO2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dHx8MTI2PT09dCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IG49dGhpcy5idWZmZXJMZW5ndGg7bGV0IGEscztpZigxMjI9PT10KXthPXRoaXMuZW5zdXJlQnVmZmVyKG4rNCk7YS5maWxsKDAsbixuKzQpO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgcj10aGlzLiNVO3JbMF09dDtmb3Iocz0xO3M8NTsrK3Mpe3Q9ZS5nZXRCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UodCk7KXQ9ZS5nZXRCeXRlKCk7cltzXT10O2lmKC0xPT09dHx8MTI2PT09dClicmVha31hPXRoaXMuZW5zdXJlQnVmZmVyKG4rcy0xKTt0aGlzLmJ1ZmZlckxlbmd0aCs9cy0xO2lmKHM8NSl7ci5maWxsKDExNyxzLDUpO3RoaXMuZW9mPSEwfWxldCBpPTA7Zm9yKHM9MDtzPDU7KytzKWk9ODUqaSsocltzXS0zMyk7Zm9yKHM9MztzPj0wOy0tcyl7YVtuK3NdPTI1NSZpO2k+Pj04fX19fWNsYXNzIEFzY2lpSGV4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS41KTtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5maXJzdERpZ2l0PS0xfXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoOGUzKTtpZighZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCB0PWUubGVuZ3RoKzE+PjEsbj10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCt0KTtsZXQgYT10aGlzLmJ1ZmZlckxlbmd0aCxzPXRoaXMuZmlyc3REaWdpdDtmb3IoY29uc3QgdCBvZiBlKXtsZXQgZTtpZih0Pj00OCYmdDw9NTcpZT0xNSZ0O2Vsc2V7aWYoISh0Pj02NSYmdDw9NzB8fHQ+PTk3JiZ0PD0xMDIpKXtpZig2Mj09PXQpe3RoaXMuZW9mPSEwO2JyZWFrfWNvbnRpbnVlfWU9OSsoMTUmdCl9aWYoczwwKXM9ZTtlbHNle25bYSsrXT1zPDw0fGU7cz0tMX19aWYocz49MCYmdGhpcy5lb2Ype25bYSsrXT1zPDw0O3M9LTF9dGhpcy5maXJzdERpZ2l0PXM7dGhpcy5idWZmZXJMZW5ndGg9YX19bGV0IFpuPSgoKT0+e2NvbnN0IGU9SW50MzJBcnJheS5mcm9tKFsyNTYsNDAyLDQzNiw0NjgsNTAwLDUzNCw1NjYsNTk4LDYzMCw2NjIsNjk0LDcyNiw3NTgsNzkwLDgyMiw4NTQsODg2LDkyMCw5NTIsOTg0LDEwMTYsMTA0OCwxMDgwXSksdD1JbnQzMkFycmF5LmZyb20oWzEsMiwzLDQsMCw1LDE3LDYsMTYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTVdKSxuPUludDMyQXJyYXkuZnJvbShbMCwzLDIsMSwwLDAsMCwwLDAsMCwzLDMsMywzLDMsM10pLGE9SW50MzJBcnJheS5mcm9tKFswLDAsMCwwLC0xLDEsLTIsMiwtMywzLC0xLDEsLTIsMiwtMywzXSkscz1JbnQzMkFycmF5LmZyb20oWzEzMTA3MiwxMzEwNzYsMTMxMDc1LDE5NjYxMCwxMzEwNzIsMTMxMDc2LDEzMTA3NSwyNjIxNDUsMTMxMDcyLDEzMTA3NiwxMzEwNzUsMTk2NjEwLDEzMTA3MiwxMzEwNzYsMTMxMDc1LDI2MjE0OV0pLHI9SW50MzJBcnJheS5mcm9tKFsxLDUsOSwxMywxNywyNSwzMyw0MSw0OSw2NSw4MSw5NywxMTMsMTQ1LDE3NywyMDksMjQxLDMwNSwzNjksNDk3LDc1MywxMjY1LDIyODksNDMzNyw4NDMzLDE2NjI1XSksaT1JbnQzMkFycmF5LmZyb20oWzIsMiwyLDIsMywzLDMsMyw0LDQsNCw0LDUsNSw1LDUsNiw2LDcsOCw5LDEwLDExLDEyLDEzLDI0XSksbz1JbnQxNkFycmF5LmZyb20oWzAsMCwwLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw3LDgsOSwxMCwxMiwxNCwyNF0pLGw9SW50MTZBcnJheS5mcm9tKFswLDAsMCwwLDAsMCwwLDAsMSwxLDIsMiwzLDMsNCw0LDUsNSw2LDcsOCw5LDEwLDI0XSksZj1uZXcgSW50MTZBcnJheSgyODE2KTshZnVuY3Rpb24gdW5wYWNrQ29tbWFuZExvb2t1cFRhYmxlKGUpe2NvbnN0IHQ9bmV3IEludDMyQXJyYXkoMjQpLG49bmV3IEludDMyQXJyYXkoMjQpO25bMF09Mjtmb3IobGV0IGU9MDtlPDIzOysrZSl7dFtlKzFdPXRbZV0rKDE8PG9bZV0pO25bZSsxXT1uW2VdKygxPDxsW2VdKX1mb3IobGV0IGE9MDthPDcwNDsrK2Epe2xldCBzPWE+PjYscj0tNDtpZihzPj0yKXtzLT0yO3I9MH1jb25zdCBpPSgxNzAwNjQ+PjIqcyYzKTw8M3xhPj4zJjcsZj0oMTU2MjI4Pj4yKnMmMyk8PDN8NyZhLGM9bltmXSxoPXIrTWF0aC5taW4oYyw1KS0yLHU9NCphO2VbdV09b1tpXXxsW2ZdPDw4O2VbdSsxXT10W2ldO2VbdSsyXT1uW2ZdO2VbdSszXT1ofX0oZik7ZnVuY3Rpb24gbG9nMmZsb29yKGUpe2xldCB0PS0xLG49MTYsYT1lO2Zvcig7bj4wOyl7bGV0IGU9YT4+bjtpZigwIT09ZSl7dCs9bjthPWV9bj4+PTF9cmV0dXJuIHQrYX1mdW5jdGlvbiBjYWxjdWxhdGVEaXN0YW5jZUFscGhhYmV0U2l6ZShlLHQsbil7cmV0dXJuIDE2K3QrMioobjw8ZSl9ZnVuY3Rpb24gY2FsY3VsYXRlRGlzdGFuY2VBbHBoYWJldExpbWl0KGUsdCxuLGEpe2lmKHQ8YSsoMjw8bikpcmV0dXJuIG1ha2VFcnJvcihlLC0yMyk7Y29uc3Qgcz00Kyh0LWE+Pm4pLHI9bG9nMmZsb29yKHMpLTE7cmV0dXJuKChyLTE8PDF8cz4+ciYxKS0xPDxuKSsoMTw8bikrYSsxNn1mdW5jdGlvbiBpbml0U3RhdGUoZSl7aWYoMCE9PWUucnVubmluZ1N0YXRlKXJldHVybiBtYWtlRXJyb3IoZSwtMjYpO2UuYmxvY2tUcmVlcz1uZXcgSW50MzJBcnJheSgzMDkxKTtlLmJsb2NrVHJlZXNbMF09NztlLmRpc3RSYklkeD0zO2xldCB0PWNhbGN1bGF0ZURpc3RhbmNlQWxwaGFiZXRMaW1pdChlLDIxNDc0ODM2NDQsMywxMjApO2lmKHQ8MClyZXR1cm4gdDtjb25zdCBuPXQ7ZS5kaXN0RXh0cmFCaXRzPW5ldyBJbnQ4QXJyYXkobik7ZS5kaXN0T2Zmc2V0PW5ldyBJbnQzMkFycmF5KG4pO3Q9ZnVuY3Rpb24gaW5pdEJpdFJlYWRlcihlKXtlLmJ5dGVCdWZmZXI9bmV3IEludDhBcnJheSg0MTYwKTtlLmFjY3VtdWxhdG9yMzI9MDtlLnNob3J0QnVmZmVyPW5ldyBJbnQxNkFycmF5KDIwODApO2UuYml0T2Zmc2V0PTMyO2UuaGFsZk9mZnNldD0yMDQ4O2UuZW5kT2ZTdHJlYW1SZWFjaGVkPTA7cmV0dXJuIHByZXBhcmUoZSl9KGUpO2lmKHQ8MClyZXR1cm4gdDtlLnJ1bm5pbmdTdGF0ZT0xO3JldHVybiAwfWZ1bmN0aW9uIGRlY29kZVZhckxlblVuc2lnbmVkQnl0ZShlKXtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWlmKDAhPT1yZWFkRmV3Qml0cyhlLDEpKXtjb25zdCB0PXJlYWRGZXdCaXRzKGUsMyk7cmV0dXJuIDA9PT10PzE6cmVhZEZld0JpdHMoZSx0KSsoMTw8dCl9cmV0dXJuIDB9ZnVuY3Rpb24gcmVhZFN5bWJvbChlLHQsbil7bGV0IGE9ZVt0XTtjb25zdCBzPW4uYWNjdW11bGF0b3IzMj4+Pm4uYml0T2Zmc2V0O2ErPTI1NSZzO2NvbnN0IHI9ZVthXT4+MTYsaT02NTUzNSZlW2FdO2lmKHI8PTgpe24uYml0T2Zmc2V0Kz1yO3JldHVybiBpfWErPWk7YSs9KHMmKDE8PHIpLTEpPj4+ODtuLmJpdE9mZnNldCs9OCsoZVthXT4+MTYpO3JldHVybiA2NTUzNSZlW2FdfWZ1bmN0aW9uIHJlYWRCbG9ja0xlbmd0aChlLHQsbil7aWYobi5iaXRPZmZzZXQ+PTE2KXtuLmFjY3VtdWxhdG9yMzI9bi5zaG9ydEJ1ZmZlcltuLmhhbGZPZmZzZXQrK108PDE2fG4uYWNjdW11bGF0b3IzMj4+PjE2O24uYml0T2Zmc2V0LT0xNn1jb25zdCBhPXJlYWRTeW1ib2woZSx0LG4pLHM9aVthXTtpZihuLmJpdE9mZnNldD49MTYpe24uYWNjdW11bGF0b3IzMj1uLnNob3J0QnVmZmVyW24uaGFsZk9mZnNldCsrXTw8MTZ8bi5hY2N1bXVsYXRvcjMyPj4+MTY7bi5iaXRPZmZzZXQtPTE2fXJldHVybiByW2FdKyhzPD0xNj9yZWFkRmV3Qml0cyhuLHMpOnJlYWRNYW55Qml0cyhuLHMpKX1mdW5jdGlvbiBtb3ZlVG9Gcm9udChlLHQpe2xldCBuPXQ7Y29uc3QgYT1lW25dO2Zvcig7bj4wOyl7ZVtuXT1lW24tMV07bi0tfWVbMF09YX1mdW5jdGlvbiByZWFkU2ltcGxlSHVmZm1hbkNvZGUoZSx0LG4sYSxzKXtjb25zdCByPW5ldyBJbnQzMkFycmF5KHQpLGk9bmV3IEludDMyQXJyYXkoNCksbz0xK2xvZzJmbG9vcihlLTEpLGw9cmVhZEZld0JpdHMocywyKSsxO2ZvcihsZXQgZT0wO2U8bDsrK2Upe2lmKHMuYml0T2Zmc2V0Pj0xNil7cy5hY2N1bXVsYXRvcjMyPXMuc2hvcnRCdWZmZXJbcy5oYWxmT2Zmc2V0KytdPDwxNnxzLmFjY3VtdWxhdG9yMzI+Pj4xNjtzLmJpdE9mZnNldC09MTZ9Y29uc3Qgbj1yZWFkRmV3Qml0cyhzLG8pO2lmKG4+PXQpcmV0dXJuIG1ha2VFcnJvcihzLC0xNSk7aVtlXT1ufWNvbnN0IGY9ZnVuY3Rpb24gY2hlY2tEdXBlcyhlLHQsbil7Zm9yKGxldCBhPTA7YTxuLTE7KythKWZvcihsZXQgcz1hKzE7czxuOysrcylpZih0W2FdPT09dFtzXSlyZXR1cm4gbWFrZUVycm9yKGUsLTcpO3JldHVybiAwfShzLGksbCk7aWYoZjwwKXJldHVybiBmO2xldCBjPWw7ND09PWwmJihjKz1yZWFkRmV3Qml0cyhzLDEpKTtzd2l0Y2goYyl7Y2FzZSAxOnJbaVswXV09MTticmVhaztjYXNlIDI6cltpWzBdXT0xO3JbaVsxXV09MTticmVhaztjYXNlIDM6cltpWzBdXT0xO3JbaVsxXV09MjtyW2lbMl1dPTI7YnJlYWs7Y2FzZSA0OnJbaVswXV09MjtyW2lbMV1dPTI7cltpWzJdXT0yO3JbaVszXV09MjticmVhaztjYXNlIDU6cltpWzBdXT0xO3JbaVsxXV09MjtyW2lbMl1dPTM7cltpWzNdXT0zfXJldHVybiBidWlsZEh1ZmZtYW5UYWJsZShuLGEsOCxyLHQpfWZ1bmN0aW9uIHJlYWRDb21wbGV4SHVmZm1hbkNvZGUoZSxuLGEscixpKXtjb25zdCBvPW5ldyBJbnQzMkFycmF5KGUpLGw9bmV3IEludDMyQXJyYXkoMTgpO2xldCBmPTMyLGM9MDtmb3IobGV0IGU9bjtlPDE4OysrZSl7Y29uc3Qgbj10W2VdO2lmKGkuYml0T2Zmc2V0Pj0xNil7aS5hY2N1bXVsYXRvcjMyPWkuc2hvcnRCdWZmZXJbaS5oYWxmT2Zmc2V0KytdPDwxNnxpLmFjY3VtdWxhdG9yMzI+Pj4xNjtpLmJpdE9mZnNldC09MTZ9Y29uc3QgYT1pLmFjY3VtdWxhdG9yMzI+Pj5pLmJpdE9mZnNldCYxNTtpLmJpdE9mZnNldCs9c1thXT4+MTY7Y29uc3Qgcj02NTUzNSZzW2FdO2xbbl09cjtpZigwIT09cil7Zi09MzI+PnI7YysrO2lmKGY8PTApYnJlYWt9fWlmKDAhPT1mJiYxIT09YylyZXR1cm4gbWFrZUVycm9yKGksLTQpO2NvbnN0IGg9ZnVuY3Rpb24gcmVhZEh1ZmZtYW5Db2RlTGVuZ3RocyhlLHQsbixhKXtsZXQgcz0wLHI9OCxpPTAsbz0wLGw9MzI3Njg7Y29uc3QgZj1uZXcgSW50MzJBcnJheSgzMyk7YnVpbGRIdWZmbWFuVGFibGUoZixmLmxlbmd0aC0xLDUsZSwxOCk7Zm9yKDtzPHQmJmw+MDspe2lmKGEuaGFsZk9mZnNldD4yMDMwKXtjb25zdCBlPXJlYWRNb3JlSW5wdXQoYSk7aWYoZTwwKXJldHVybiBlfWlmKGEuYml0T2Zmc2V0Pj0xNil7YS5hY2N1bXVsYXRvcjMyPWEuc2hvcnRCdWZmZXJbYS5oYWxmT2Zmc2V0KytdPDwxNnxhLmFjY3VtdWxhdG9yMzI+Pj4xNjthLmJpdE9mZnNldC09MTZ9Y29uc3QgZT1hLmFjY3VtdWxhdG9yMzI+Pj5hLmJpdE9mZnNldCYzMTthLmJpdE9mZnNldCs9ZltlXT4+MTY7Y29uc3QgYz02NTUzNSZmW2VdO2lmKGM8MTYpe2k9MDtuW3MrK109YztpZigwIT09Yyl7cj1jO2wtPTMyNzY4Pj5jfX1lbHNle2NvbnN0IGU9Yy0xNDtsZXQgZj0wOzE2PT09YyYmKGY9cik7aWYobyE9PWYpe2k9MDtvPWZ9Y29uc3QgaD1pO2lmKGk+MCl7aS09MjtpPDw9ZX1pZihhLmJpdE9mZnNldD49MTYpe2EuYWNjdW11bGF0b3IzMj1hLnNob3J0QnVmZmVyW2EuaGFsZk9mZnNldCsrXTw8MTZ8YS5hY2N1bXVsYXRvcjMyPj4+MTY7YS5iaXRPZmZzZXQtPTE2fWkrPXJlYWRGZXdCaXRzKGEsZSkrMztjb25zdCB1PWktaDtpZihzK3U+dClyZXR1cm4gbWFrZUVycm9yKGEsLTIpO2ZvcihsZXQgZT0wO2U8dTsrK2UpbltzKytdPW87MCE9PW8mJihsLT11PDwxNS1vKX19aWYoMCE9PWwpcmV0dXJuIG1ha2VFcnJvcihhLC0xOCk7bi5maWxsKDAscyx0KTtyZXR1cm4gMH0obCxlLG8saSk7cmV0dXJuIGg8MD9oOmJ1aWxkSHVmZm1hblRhYmxlKGEsciw4LG8sZSl9ZnVuY3Rpb24gcmVhZEh1ZmZtYW5Db2RlKGUsdCxuLGEscyl7aWYocy5oYWxmT2Zmc2V0PjIwMzApe2NvbnN0IGU9cmVhZE1vcmVJbnB1dChzKTtpZihlPDApcmV0dXJuIGV9aWYocy5iaXRPZmZzZXQ+PTE2KXtzLmFjY3VtdWxhdG9yMzI9cy5zaG9ydEJ1ZmZlcltzLmhhbGZPZmZzZXQrK108PDE2fHMuYWNjdW11bGF0b3IzMj4+PjE2O3MuYml0T2Zmc2V0LT0xNn1jb25zdCByPXJlYWRGZXdCaXRzKHMsMik7cmV0dXJuIDE9PT1yP3JlYWRTaW1wbGVIdWZmbWFuQ29kZShlLHQsbixhLHMpOnJlYWRDb21wbGV4SHVmZm1hbkNvZGUodCxyLG4sYSxzKX1mdW5jdGlvbiBkZWNvZGVDb250ZXh0TWFwKHQsbixhKXtsZXQgcztpZihhLmhhbGZPZmZzZXQ+MjAzMCl7cz1yZWFkTW9yZUlucHV0KGEpO2lmKHM8MClyZXR1cm4gc31jb25zdCByPWRlY29kZVZhckxlblVuc2lnbmVkQnl0ZShhKSsxO2lmKDE9PT1yKXtuLmZpbGwoMCwwLHQpO3JldHVybiByfWlmKGEuYml0T2Zmc2V0Pj0xNil7YS5hY2N1bXVsYXRvcjMyPWEuc2hvcnRCdWZmZXJbYS5oYWxmT2Zmc2V0KytdPDwxNnxhLmFjY3VtdWxhdG9yMzI+Pj4xNjthLmJpdE9mZnNldC09MTZ9bGV0IGk9MDswIT09cmVhZEZld0JpdHMoYSwxKSYmKGk9cmVhZEZld0JpdHMoYSw0KSsxKTtjb25zdCBvPXIraSxsPWVbbyszMT4+NV0sZj1uZXcgSW50MzJBcnJheShsKzEpLGM9Zi5sZW5ndGgtMTtzPXJlYWRIdWZmbWFuQ29kZShvLG8sZixjLGEpO2lmKHM8MClyZXR1cm4gcztsZXQgaD0wO2Zvcig7aDx0Oyl7aWYoYS5oYWxmT2Zmc2V0PjIwMzApe3M9cmVhZE1vcmVJbnB1dChhKTtpZihzPDApcmV0dXJuIHN9aWYoYS5iaXRPZmZzZXQ+PTE2KXthLmFjY3VtdWxhdG9yMzI9YS5zaG9ydEJ1ZmZlclthLmhhbGZPZmZzZXQrK108PDE2fGEuYWNjdW11bGF0b3IzMj4+PjE2O2EuYml0T2Zmc2V0LT0xNn1jb25zdCBlPXJlYWRTeW1ib2woZixjLGEpO2lmKDA9PT1lKXtuW2hdPTA7aCsrfWVsc2UgaWYoZTw9aSl7aWYoYS5iaXRPZmZzZXQ+PTE2KXthLmFjY3VtdWxhdG9yMzI9YS5zaG9ydEJ1ZmZlclthLmhhbGZPZmZzZXQrK108PDE2fGEuYWNjdW11bGF0b3IzMj4+PjE2O2EuYml0T2Zmc2V0LT0xNn1sZXQgcz0oMTw8ZSkrcmVhZEZld0JpdHMoYSxlKTtmb3IoOzAhPT1zOyl7aWYoaD49dClyZXR1cm4gbWFrZUVycm9yKGEsLTMpO25baF09MDtoKys7cy0tfX1lbHNle25baF09ZS1pO2grK319aWYoYS5iaXRPZmZzZXQ+PTE2KXthLmFjY3VtdWxhdG9yMzI9YS5zaG9ydEJ1ZmZlclthLmhhbGZPZmZzZXQrK108PDE2fGEuYWNjdW11bGF0b3IzMj4+PjE2O2EuYml0T2Zmc2V0LT0xNn0xPT09cmVhZEZld0JpdHMoYSwxKSYmZnVuY3Rpb24gaW52ZXJzZU1vdmVUb0Zyb250VHJhbnNmb3JtKGUsdCl7Y29uc3Qgbj1uZXcgSW50MzJBcnJheSgyNTYpO2ZvcihsZXQgZT0wO2U8MjU2OysrZSluW2VdPWU7Zm9yKGxldCBhPTA7YTx0OysrYSl7Y29uc3QgdD0yNTUmZVthXTtlW2FdPW5bdF07MCE9PXQmJm1vdmVUb0Zyb250KG4sdCl9fShuLHQpO3JldHVybiByfWZ1bmN0aW9uIGRlY29kZUJsb2NrVHlwZUFuZExlbmd0aChlLHQsbil7Y29uc3QgYT1lLnJpbmdzLHM9NCsyKnQ7aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1sZXQgcj1yZWFkU3ltYm9sKGUuYmxvY2tUcmVlcywyKnQsZSk7Y29uc3QgaT1yZWFkQmxvY2tMZW5ndGgoZS5ibG9ja1RyZWVzLDIqdCsxLGUpOzE9PT1yP3I9YVtzKzFdKzE6MD09PXI/cj1hW3NdOnItPTI7cj49biYmKHItPW4pO2Fbc109YVtzKzFdO2FbcysxXT1yO3JldHVybiBpfWZ1bmN0aW9uIGRlY29kZUxpdGVyYWxCbG9ja1N3aXRjaChlKXtlLmxpdGVyYWxCbG9ja0xlbmd0aD1kZWNvZGVCbG9ja1R5cGVBbmRMZW5ndGgoZSwwLGUubnVtTGl0ZXJhbEJsb2NrVHlwZXMpO2NvbnN0IHQ9ZS5yaW5nc1s1XTtlLmNvbnRleHRNYXBTbGljZT10PDw2O2UubGl0ZXJhbFRyZWVJZHg9MjU1JmUuY29udGV4dE1hcFtlLmNvbnRleHRNYXBTbGljZV07Y29uc3Qgbj1lLmNvbnRleHRNb2Rlc1t0XTtlLmNvbnRleHRMb29rdXBPZmZzZXQxPW48PDk7ZS5jb250ZXh0TG9va3VwT2Zmc2V0Mj1lLmNvbnRleHRMb29rdXBPZmZzZXQxKzI1Nn1mdW5jdGlvbiBkZWNvZGVDb21tYW5kQmxvY2tTd2l0Y2goZSl7ZS5jb21tYW5kQmxvY2tMZW5ndGg9ZGVjb2RlQmxvY2tUeXBlQW5kTGVuZ3RoKGUsMSxlLm51bUNvbW1hbmRCbG9ja1R5cGVzKTtlLmNvbW1hbmRUcmVlSWR4PWUucmluZ3NbN119ZnVuY3Rpb24gZGVjb2RlRGlzdGFuY2VCbG9ja1N3aXRjaChlKXtlLmRpc3RhbmNlQmxvY2tMZW5ndGg9ZGVjb2RlQmxvY2tUeXBlQW5kTGVuZ3RoKGUsMixlLm51bURpc3RhbmNlQmxvY2tUeXBlcyk7ZS5kaXN0Q29udGV4dE1hcFNsaWNlPWUucmluZ3NbOV08PDJ9ZnVuY3Rpb24gcmVhZE5leHRNZXRhYmxvY2tIZWFkZXIoZSl7aWYoMCE9PWUuaW5wdXRFbmQpe2UubmV4dFJ1bm5pbmdTdGF0ZT0xMDtlLnJ1bm5pbmdTdGF0ZT0xMjtyZXR1cm4gMH1lLmxpdGVyYWxUcmVlR3JvdXA9bmV3IEludDMyQXJyYXkoMCk7ZS5jb21tYW5kVHJlZUdyb3VwPW5ldyBJbnQzMkFycmF5KDApO2UuZGlzdGFuY2VUcmVlR3JvdXA9bmV3IEludDMyQXJyYXkoMCk7bGV0IHQ7aWYoZS5oYWxmT2Zmc2V0PjIwMzApe3Q9cmVhZE1vcmVJbnB1dChlKTtpZih0PDApcmV0dXJuIHR9dD1mdW5jdGlvbiBkZWNvZGVNZXRhQmxvY2tMZW5ndGgoZSl7aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1lLmlucHV0RW5kPXJlYWRGZXdCaXRzKGUsMSk7ZS5tZXRhQmxvY2tMZW5ndGg9MDtlLmlzVW5jb21wcmVzc2VkPTA7ZS5pc01ldGFkYXRhPTA7aWYoMCE9PWUuaW5wdXRFbmQmJjAhPT1yZWFkRmV3Qml0cyhlLDEpKXJldHVybiAwO2NvbnN0IHQ9cmVhZEZld0JpdHMoZSwyKSs0O2lmKDc9PT10KXtlLmlzTWV0YWRhdGE9MTtpZigwIT09cmVhZEZld0JpdHMoZSwxKSlyZXR1cm4gbWFrZUVycm9yKGUsLTYpO2NvbnN0IHQ9cmVhZEZld0JpdHMoZSwyKTtpZigwPT09dClyZXR1cm4gMDtmb3IobGV0IG49MDtuPHQ7KytuKXtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWNvbnN0IGE9cmVhZEZld0JpdHMoZSw4KTtpZigwPT09YSYmbisxPT09dCYmdD4xKXJldHVybiBtYWtlRXJyb3IoZSwtOCk7ZS5tZXRhQmxvY2tMZW5ndGgrPWE8PDgqbn19ZWxzZSBmb3IobGV0IG49MDtuPHQ7KytuKXtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWNvbnN0IGE9cmVhZEZld0JpdHMoZSw0KTtpZigwPT09YSYmbisxPT09dCYmdD40KXJldHVybiBtYWtlRXJyb3IoZSwtOCk7ZS5tZXRhQmxvY2tMZW5ndGgrPWE8PDQqbn1lLm1ldGFCbG9ja0xlbmd0aCsrOzA9PT1lLmlucHV0RW5kJiYoZS5pc1VuY29tcHJlc3NlZD1yZWFkRmV3Qml0cyhlLDEpKTtyZXR1cm4gMH0oZSk7aWYodDwwKXJldHVybiB0O2lmKDA9PT1lLm1ldGFCbG9ja0xlbmd0aCYmMD09PWUuaXNNZXRhZGF0YSlyZXR1cm4gMDtpZigwIT09ZS5pc1VuY29tcHJlc3NlZHx8MCE9PWUuaXNNZXRhZGF0YSl7dD1qdW1wVG9CeXRlQm91bmRhcnkoZSk7aWYodDwwKXJldHVybiB0OzA9PT1lLmlzTWV0YWRhdGE/ZS5ydW5uaW5nU3RhdGU9NjplLnJ1bm5pbmdTdGF0ZT01fWVsc2UgZS5ydW5uaW5nU3RhdGU9MztpZigwIT09ZS5pc01ldGFkYXRhKXJldHVybiAwO2UuZXhwZWN0ZWRUb3RhbFNpemUrPWUubWV0YUJsb2NrTGVuZ3RoO2UuZXhwZWN0ZWRUb3RhbFNpemU+MTw8MzAmJihlLmV4cGVjdGVkVG90YWxTaXplPTE8PDMwKTtlLnJpbmdCdWZmZXJTaXplPGUubWF4UmluZ0J1ZmZlclNpemUmJmZ1bmN0aW9uIG1heWJlUmVhbGxvY2F0ZVJpbmdCdWZmZXIoZSl7bGV0IHQ9ZS5tYXhSaW5nQnVmZmVyU2l6ZTtpZih0PmUuZXhwZWN0ZWRUb3RhbFNpemUpe2NvbnN0IG49ZS5leHBlY3RlZFRvdGFsU2l6ZTtmb3IoO3Q+PjE+bjspdD4+PTE7MD09PWUuaW5wdXRFbmQmJnQ8MTYzODQmJmUubWF4UmluZ0J1ZmZlclNpemU+PTE2Mzg0JiYodD0xNjM4NCl9aWYodDw9ZS5yaW5nQnVmZmVyU2l6ZSlyZXR1cm47Y29uc3Qgbj1uZXcgSW50OEFycmF5KHQrMzcpLGE9ZS5yaW5nQnVmZmVyOzAhPT1hLmxlbmd0aCYmbi5zZXQoYS5zdWJhcnJheSgwLGUucmluZ0J1ZmZlclNpemUpLDApO2UucmluZ0J1ZmZlcj1uO2UucmluZ0J1ZmZlclNpemU9dH0oZSk7cmV0dXJuIDB9ZnVuY3Rpb24gcmVhZE1ldGFibG9ja1BhcnRpdGlvbihlLHQsbil7bGV0IGE9ZS5ibG9ja1RyZWVzWzIqdF07aWYobjw9MSl7ZS5ibG9ja1RyZWVzWzIqdCsxXT1hO2UuYmxvY2tUcmVlc1syKnQrMl09YTtyZXR1cm4gMTw8Mjh9Y29uc3Qgcz1uKzI7bGV0IHI9cmVhZEh1ZmZtYW5Db2RlKHMscyxlLmJsb2NrVHJlZXMsMip0LGUpO2lmKHI8MClyZXR1cm4gcjthKz1yO2UuYmxvY2tUcmVlc1syKnQrMV09YTtyPXJlYWRIdWZmbWFuQ29kZSgyNiwyNixlLmJsb2NrVHJlZXMsMip0KzEsZSk7aWYocjwwKXJldHVybiByO2ErPXI7ZS5ibG9ja1RyZWVzWzIqdCsyXT1hO3JldHVybiByZWFkQmxvY2tMZW5ndGgoZS5ibG9ja1RyZWVzLDIqdCsxLGUpfWZ1bmN0aW9uIHJlYWRNZXRhYmxvY2tIdWZmbWFuQ29kZXNBbmRDb250ZXh0TWFwcyhlKXtlLm51bUxpdGVyYWxCbG9ja1R5cGVzPWRlY29kZVZhckxlblVuc2lnbmVkQnl0ZShlKSsxO2xldCB0PXJlYWRNZXRhYmxvY2tQYXJ0aXRpb24oZSwwLGUubnVtTGl0ZXJhbEJsb2NrVHlwZXMpO2lmKHQ8MClyZXR1cm4gdDtlLmxpdGVyYWxCbG9ja0xlbmd0aD10O2UubnVtQ29tbWFuZEJsb2NrVHlwZXM9ZGVjb2RlVmFyTGVuVW5zaWduZWRCeXRlKGUpKzE7dD1yZWFkTWV0YWJsb2NrUGFydGl0aW9uKGUsMSxlLm51bUNvbW1hbmRCbG9ja1R5cGVzKTtpZih0PDApcmV0dXJuIHQ7ZS5jb21tYW5kQmxvY2tMZW5ndGg9dDtlLm51bURpc3RhbmNlQmxvY2tUeXBlcz1kZWNvZGVWYXJMZW5VbnNpZ25lZEJ5dGUoZSkrMTt0PXJlYWRNZXRhYmxvY2tQYXJ0aXRpb24oZSwyLGUubnVtRGlzdGFuY2VCbG9ja1R5cGVzKTtpZih0PDApcmV0dXJuIHQ7ZS5kaXN0YW5jZUJsb2NrTGVuZ3RoPXQ7aWYoZS5oYWxmT2Zmc2V0PjIwMzApe3Q9cmVhZE1vcmVJbnB1dChlKTtpZih0PDApcmV0dXJuIHR9aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1lLmRpc3RhbmNlUG9zdGZpeEJpdHM9cmVhZEZld0JpdHMoZSwyKTtlLm51bURpcmVjdERpc3RhbmNlQ29kZXM9cmVhZEZld0JpdHMoZSw0KTw8ZS5kaXN0YW5jZVBvc3RmaXhCaXRzO2UuY29udGV4dE1vZGVzPW5ldyBJbnQ4QXJyYXkoZS5udW1MaXRlcmFsQmxvY2tUeXBlcyk7bGV0IG49MDtmb3IoO248ZS5udW1MaXRlcmFsQmxvY2tUeXBlczspe2NvbnN0IGE9TWF0aC5taW4obis5NixlLm51bUxpdGVyYWxCbG9ja1R5cGVzKTtmb3IoO248YTspe2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9ZS5jb250ZXh0TW9kZXNbbl09cmVhZEZld0JpdHMoZSwyKTtuKyt9aWYoZS5oYWxmT2Zmc2V0PjIwMzApe3Q9cmVhZE1vcmVJbnB1dChlKTtpZih0PDApcmV0dXJuIHR9fWNvbnN0IGE9ZS5udW1MaXRlcmFsQmxvY2tUeXBlczw8NjtlLmNvbnRleHRNYXA9bmV3IEludDhBcnJheShhKTt0PWRlY29kZUNvbnRleHRNYXAoYSxlLmNvbnRleHRNYXAsZSk7aWYodDwwKXJldHVybiB0O2NvbnN0IHM9dDtlLnRyaXZpYWxMaXRlcmFsQ29udGV4dD0xO2ZvcihsZXQgdD0wO3Q8YTsrK3QpaWYoZS5jb250ZXh0TWFwW3RdIT09dD4+Nil7ZS50cml2aWFsTGl0ZXJhbENvbnRleHQ9MDticmVha31lLmRpc3RDb250ZXh0TWFwPW5ldyBJbnQ4QXJyYXkoZS5udW1EaXN0YW5jZUJsb2NrVHlwZXM8PDIpO3Q9ZGVjb2RlQ29udGV4dE1hcChlLm51bURpc3RhbmNlQmxvY2tUeXBlczw8MixlLmRpc3RDb250ZXh0TWFwLGUpO2lmKHQ8MClyZXR1cm4gdDtjb25zdCByPXQ7ZS5saXRlcmFsVHJlZUdyb3VwPW5ldyBJbnQzMkFycmF5KGh1ZmZtYW5UcmVlR3JvdXBBbGxvY1NpemUoMjU2LHMpKTt0PWRlY29kZUh1ZmZtYW5UcmVlR3JvdXAoMjU2LDI1NixzLGUsZS5saXRlcmFsVHJlZUdyb3VwKTtpZih0PDApcmV0dXJuIHQ7ZS5jb21tYW5kVHJlZUdyb3VwPW5ldyBJbnQzMkFycmF5KGh1ZmZtYW5UcmVlR3JvdXBBbGxvY1NpemUoNzA0LGUubnVtQ29tbWFuZEJsb2NrVHlwZXMpKTt0PWRlY29kZUh1ZmZtYW5UcmVlR3JvdXAoNzA0LDcwNCxlLm51bUNvbW1hbmRCbG9ja1R5cGVzLGUsZS5jb21tYW5kVHJlZUdyb3VwKTtpZih0PDApcmV0dXJuIHQ7bGV0IGk9Y2FsY3VsYXRlRGlzdGFuY2VBbHBoYWJldFNpemUoZS5kaXN0YW5jZVBvc3RmaXhCaXRzLGUubnVtRGlyZWN0RGlzdGFuY2VDb2RlcywyNCksbz1pO2lmKDE9PT1lLmlzTGFyZ2VXaW5kb3cpe2k9Y2FsY3VsYXRlRGlzdGFuY2VBbHBoYWJldFNpemUoZS5kaXN0YW5jZVBvc3RmaXhCaXRzLGUubnVtRGlyZWN0RGlzdGFuY2VDb2Rlcyw2Mik7dD1jYWxjdWxhdGVEaXN0YW5jZUFscGhhYmV0TGltaXQoZSwyMTQ3NDgzNjQ0LGUuZGlzdGFuY2VQb3N0Zml4Qml0cyxlLm51bURpcmVjdERpc3RhbmNlQ29kZXMpO2lmKHQ8MClyZXR1cm4gdDtvPXR9ZS5kaXN0YW5jZVRyZWVHcm91cD1uZXcgSW50MzJBcnJheShodWZmbWFuVHJlZUdyb3VwQWxsb2NTaXplKG8scikpO3Q9ZGVjb2RlSHVmZm1hblRyZWVHcm91cChpLG8scixlLGUuZGlzdGFuY2VUcmVlR3JvdXApO2lmKHQ8MClyZXR1cm4gdDshZnVuY3Rpb24gY2FsY3VsYXRlRGlzdGFuY2VMdXQoZSx0KXtjb25zdCBuPWUuZGlzdEV4dHJhQml0cyxhPWUuZGlzdE9mZnNldCxzPWUuZGlzdGFuY2VQb3N0Zml4Qml0cyxyPWUubnVtRGlyZWN0RGlzdGFuY2VDb2RlcyxpPTE8PHM7bGV0IG89MSxsPTAsZj0xNjtmb3IobGV0IGU9MDtlPHI7KytlKXtuW2ZdPTA7YVtmXT1lKzE7KytmfWZvcig7Zjx0Oyl7Y29uc3QgZT1yKygoMitsPDxvKS00PDxzKSsxO2ZvcihsZXQgdD0wO3Q8aTsrK3Qpe25bZl09bzthW2ZdPWUrdDsrK2Z9bys9bDtsXj0xfX0oZSxvKTtlLmNvbnRleHRNYXBTbGljZT0wO2UuZGlzdENvbnRleHRNYXBTbGljZT0wO2UuY29udGV4dExvb2t1cE9mZnNldDE9NTEyKmUuY29udGV4dE1vZGVzWzBdO2UuY29udGV4dExvb2t1cE9mZnNldDI9ZS5jb250ZXh0TG9va3VwT2Zmc2V0MSsyNTY7ZS5saXRlcmFsVHJlZUlkeD0wO2UuY29tbWFuZFRyZWVJZHg9MDtlLnJpbmdzWzRdPTE7ZS5yaW5nc1s1XT0wO2UucmluZ3NbNl09MTtlLnJpbmdzWzddPTA7ZS5yaW5nc1s4XT0xO2UucmluZ3NbOV09MDtyZXR1cm4gMH1mdW5jdGlvbiBjb3B5VW5jb21wcmVzc2VkRGF0YShlKXtjb25zdCB0PWUucmluZ0J1ZmZlcjtsZXQgbjtpZihlLm1ldGFCbG9ja0xlbmd0aDw9MCl7bj1yZWxvYWQoZSk7aWYobjwwKXJldHVybiBuO2UucnVubmluZ1N0YXRlPTI7cmV0dXJuIDB9Y29uc3QgYT1NYXRoLm1pbihlLnJpbmdCdWZmZXJTaXplLWUucG9zLGUubWV0YUJsb2NrTGVuZ3RoKTtuPWZ1bmN0aW9uIGNvcHlSYXdCeXRlcyhlLHQsbixhKXtsZXQgcz1uLHI9YTtpZig3JmUuYml0T2Zmc2V0KXJldHVybiBtYWtlRXJyb3IoZSwtMzApO2Zvcig7MzIhPT1lLmJpdE9mZnNldCYmMCE9PXI7KXt0W3MrK109ZS5hY2N1bXVsYXRvcjMyPj4+ZS5iaXRPZmZzZXQ7ZS5iaXRPZmZzZXQrPTg7ci0tfWlmKDA9PT1yKXJldHVybiAwO2NvbnN0IGk9TWF0aC5taW4oaGFsZkF2YWlsYWJsZShlKSxyPj4xKTtpZihpPjApe2NvbnN0IG49ZS5oYWxmT2Zmc2V0PDwxLGE9aTw8MTt0LnNldChlLmJ5dGVCdWZmZXIuc3ViYXJyYXkobixuK2EpLHMpO3MrPWE7ci09YTtlLmhhbGZPZmZzZXQrPWl9aWYoMD09PXIpcmV0dXJuIDA7aWYoaGFsZkF2YWlsYWJsZShlKT4wKXtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWZvcig7MCE9PXI7KXt0W3MrK109ZS5hY2N1bXVsYXRvcjMyPj4+ZS5iaXRPZmZzZXQ7ZS5iaXRPZmZzZXQrPTg7ci0tfXJldHVybiBjaGVja0hlYWx0aChlLDApfWZvcig7cj4wOyl7Y29uc3Qgbj1yZWFkSW5wdXQoZSx0LHMscik7aWYobjwtMSlyZXR1cm4gbjtpZihuPD0wKXJldHVybiBtYWtlRXJyb3IoZSwtMTYpO3MrPW47ci09bn1yZXR1cm4gMH0oZSx0LGUucG9zLGEpO2lmKG48MClyZXR1cm4gbjtlLm1ldGFCbG9ja0xlbmd0aC09YTtlLnBvcys9YTtpZihlLnBvcz09PWUucmluZ0J1ZmZlclNpemUpe2UubmV4dFJ1bm5pbmdTdGF0ZT02O2UucnVubmluZ1N0YXRlPTEyO3JldHVybiAwfW49cmVsb2FkKGUpO2lmKG48MClyZXR1cm4gbjtlLnJ1bm5pbmdTdGF0ZT0yO3JldHVybiAwfWZ1bmN0aW9uIHdyaXRlUmluZ0J1ZmZlcihlKXtjb25zdCB0PU1hdGgubWluKGUub3V0cHV0TGVuZ3RoLWUub3V0cHV0VXNlZCxlLnJpbmdCdWZmZXJCeXRlc1JlYWR5LWUucmluZ0J1ZmZlckJ5dGVzV3JpdHRlbik7aWYoMCE9PXQpe2Uub3V0cHV0LnNldChlLnJpbmdCdWZmZXIuc3ViYXJyYXkoZS5yaW5nQnVmZmVyQnl0ZXNXcml0dGVuLGUucmluZ0J1ZmZlckJ5dGVzV3JpdHRlbit0KSxlLm91dHB1dE9mZnNldCtlLm91dHB1dFVzZWQpO2Uub3V0cHV0VXNlZCs9dDtlLnJpbmdCdWZmZXJCeXRlc1dyaXR0ZW4rPXR9cmV0dXJuIGUub3V0cHV0VXNlZDxlLm91dHB1dExlbmd0aD8wOjJ9ZnVuY3Rpb24gaHVmZm1hblRyZWVHcm91cEFsbG9jU2l6ZSh0LG4pe3JldHVybiBuK24qZVt0KzMxPj41XX1mdW5jdGlvbiBkZWNvZGVIdWZmbWFuVHJlZUdyb3VwKGUsdCxuLGEscyl7bGV0IHI9bjtmb3IobGV0IGk9MDtpPG47KytpKXtzW2ldPXI7Y29uc3Qgbj1yZWFkSHVmZm1hbkNvZGUoZSx0LHMsaSxhKTtpZihuPDApcmV0dXJuIG47cis9bn1yZXR1cm4gMH1mdW5jdGlvbiBjYWxjdWxhdGVGZW5jZShlKXtsZXQgdD1lLnJpbmdCdWZmZXJTaXplOzAhPT1lLmlzRWFnZXImJih0PU1hdGgubWluKHQsZS5yaW5nQnVmZmVyQnl0ZXNXcml0dGVuK2Uub3V0cHV0TGVuZ3RoLWUub3V0cHV0VXNlZCkpO3JldHVybiB0fWZ1bmN0aW9uIGRvVXNlRGljdGlvbmFyeShlLHQpe2lmKGUuZGlzdGFuY2U+MjE0NzQ4MzY0NClyZXR1cm4gbWFrZUVycm9yKGUsLTkpO2NvbnN0IG49ZS5kaXN0YW5jZS1lLm1heERpc3RhbmNlLTEtZS5jZFRvdGFsU2l6ZTtpZihuPDApe2NvbnN0IHQ9ZnVuY3Rpb24gaW5pdGlhbGl6ZUNvbXBvdW5kRGljdGlvbmFyeUNvcHkoZSx0LG4pey0xPT09ZS5jZEJsb2NrQml0cyYmZnVuY3Rpb24gaW5pdGlhbGl6ZUNvbXBvdW5kRGljdGlvbmFyeShlKXtlLmNkQmxvY2tNYXA9bmV3IEludDhBcnJheSgyNTYpO2xldCB0PTg7Zm9yKDtlLmNkVG90YWxTaXplLTE+PnQ7KXQrKzt0LT04O2UuY2RCbG9ja0JpdHM9dDtsZXQgbj0wLGE9MDtmb3IoO248ZS5jZFRvdGFsU2l6ZTspe2Zvcig7ZS5jZENodW5rT2Zmc2V0c1thKzFdPG47KWErKztlLmNkQmxvY2tNYXBbbj4+dF09YTtuKz0xPDx0fX0oZSk7bGV0IGE9ZS5jZEJsb2NrTWFwW3Q+PmUuY2RCbG9ja0JpdHNdO2Zvcig7dD49ZS5jZENodW5rT2Zmc2V0c1thKzFdOylhKys7aWYoZS5jZFRvdGFsU2l6ZT50K24pcmV0dXJuIG1ha2VFcnJvcihlLC05KTtlLmRpc3RSYklkeD1lLmRpc3RSYklkeCsxJjM7ZS5yaW5nc1tlLmRpc3RSYklkeF09ZS5kaXN0YW5jZTtlLm1ldGFCbG9ja0xlbmd0aC09bjtlLmNkQnJJbmRleD1hO2UuY2RCck9mZnNldD10LWUuY2RDaHVua09mZnNldHNbYV07ZS5jZEJyTGVuZ3RoPW47ZS5jZEJyQ29waWVkPTA7cmV0dXJuIDB9KGUsLW4tMSxlLmNvcHlMZW5ndGgpO2lmKHQ8MClyZXR1cm4gdDtlLnJ1bm5pbmdTdGF0ZT0xNH1lbHNle2NvbnN0IGE9dSxzPWUuY29weUxlbmd0aDtpZihzPjMxKXJldHVybiBtYWtlRXJyb3IoZSwtOSk7Y29uc3Qgcj1wW3NdO2lmKDA9PT1yKXJldHVybiBtYWtlRXJyb3IoZSwtOSk7bGV0IGk9bVtzXTtjb25zdCBvPW4+PnI7aSs9KG4mKDE8PHIpLTEpKnM7Y29uc3QgbD1jO2lmKG8+PWwubnVtVHJhbnNmb3JtcylyZXR1cm4gbWFrZUVycm9yKGUsLTkpO2NvbnN0IGY9ZnVuY3Rpb24gdHJhbnNmb3JtRGljdGlvbmFyeVdvcmQoZSx0LG4sYSxzLHIsaSl7bGV0IG89dDtjb25zdCBsPXIudHJpcGxldHMsZj1yLnByZWZpeFN1ZmZpeFN0b3JhZ2UsYz1yLnByZWZpeFN1ZmZpeEhlYWRzLGg9MyppLHU9bFtoXSxtPWxbaCsxXSxwPWxbaCsyXTtsZXQgZD1jW3VdO2NvbnN0IGc9Y1t1KzFdO2xldCBiPWNbcF07Y29uc3Qgdz1jW3ArMV07bGV0IGo9bS0xMSxrPW07KGo8MXx8aj45KSYmKGo9MCk7KGs8MXx8az45KSYmKGs9MCk7Zm9yKDtkIT09ZzspZVtvKytdPWZbZCsrXTtsZXQgeT1zO2o+eSYmKGo9eSk7bGV0IHE9YStqO3ktPWo7eS09aztsZXQgdj15O2Zvcig7dj4wOyl7ZVtvKytdPW5bcSsrXTt2LS19aWYoMTA9PT1tfHwxMT09PW0pe2xldCB0PW8teTsxMD09PW0mJih5PTEpO2Zvcig7eT4wOyl7Y29uc3Qgbj0yNTUmZVt0XTtpZihuPDE5Mil7bj49OTcmJm48PTEyMiYmKGVbdF09MzJeZVt0XSk7dCs9MTt5LT0xfWVsc2UgaWYobjwyMjQpe2VbdCsxXT0zMl5lW3QrMV07dCs9Mjt5LT0yfWVsc2V7ZVt0KzJdPTVeZVt0KzJdO3QrPTM7eS09M319fWVsc2UgaWYoMjE9PT1tfHwyMj09PW0pe2xldCB0PW8teTtjb25zdCBuPXIucGFyYW1zW2ldO2xldCBhPTE2Nzc3MjE2LSgzMjc2OCZuKSsoMzI3Njcmbik7Zm9yKDt5PjA7KXtsZXQgbj0xO2NvbnN0IHM9MjU1JmVbdF07aWYoczwxMjgpe2ErPXM7ZVt0XT0xMjcmYX1lbHNlIGlmKHM8MTkyKTtlbHNlIGlmKHM8MjI0KWlmKHk+PTIpe2NvbnN0IHI9ZVt0KzFdO2ErPTYzJnJ8KDMxJnMpPDw2O2VbdF09MTkyfGE+PjYmMzE7ZVt0KzFdPTE5MiZyfDYzJmE7bj0yfWVsc2Ugbj15O2Vsc2UgaWYoczwyNDApaWYoeT49Myl7Y29uc3Qgcj1lW3QrMV0saT1lW3QrMl07YSs9NjMmaXwoNjMmcik8PDZ8KDE1JnMpPDwxMjtlW3RdPTIyNHxhPj4xMiYxNTtlW3QrMV09MTkyJnJ8YT4+NiY2MztlW3QrMl09MTkyJml8NjMmYTtuPTN9ZWxzZSBuPXk7ZWxzZSBpZihzPDI0OClpZih5Pj00KXtjb25zdCByPWVbdCsxXSxpPWVbdCsyXSxvPWVbdCszXTthKz02MyZvfCg2MyZpKTw8NnwoNjMmcik8PDEyfCg3JnMpPDwxODtlW3RdPTI0MHxhPj4xOCY3O2VbdCsxXT0xOTImcnxhPj4xMiY2MztlW3QrMl09MTkyJml8YT4+NiY2MztlW3QrM109MTkyJm98NjMmYTtuPTR9ZWxzZSBuPXk7dCs9bjt5LT1uOzIxPT09bSYmKHk9MCl9fWZvcig7YiE9PXc7KWVbbysrXT1mW2IrK107cmV0dXJuIG8tdH0oZS5yaW5nQnVmZmVyLGUucG9zLGEsaSxzLGwsbyk7ZS5wb3MrPWY7ZS5tZXRhQmxvY2tMZW5ndGgtPWY7aWYoZS5wb3M+PXQpe2UubmV4dFJ1bm5pbmdTdGF0ZT00O2UucnVubmluZ1N0YXRlPTEyO3JldHVybiAwfWUucnVubmluZ1N0YXRlPTR9cmV0dXJuIDB9ZnVuY3Rpb24gY29weUZyb21Db21wb3VuZERpY3Rpb25hcnkoZSx0KXtsZXQgbj1lLnBvcztjb25zdCBhPW47Zm9yKDtlLmNkQnJMZW5ndGghPT1lLmNkQnJDb3BpZWQ7KXtjb25zdCBhPXQtbixzPWUuY2RDaHVua09mZnNldHNbZS5jZEJySW5kZXgrMV0tZS5jZENodW5rT2Zmc2V0c1tlLmNkQnJJbmRleF0tZS5jZEJyT2Zmc2V0O2xldCByPWUuY2RCckxlbmd0aC1lLmNkQnJDb3BpZWQ7cj5zJiYocj1zKTtyPmEmJihyPWEpO2UucmluZ0J1ZmZlci5zZXQoZS5jZENodW5rc1tlLmNkQnJJbmRleF0uc3ViYXJyYXkoZS5jZEJyT2Zmc2V0LGUuY2RCck9mZnNldCtyKSxuKTtuKz1yO2UuY2RCck9mZnNldCs9cjtlLmNkQnJDb3BpZWQrPXI7aWYocj09PXMpe2UuY2RCckluZGV4Kys7ZS5jZEJyT2Zmc2V0PTB9aWYobj49dClicmVha31yZXR1cm4gbi1hfWZ1bmN0aW9uIGRlY29tcHJlc3MoZSl7bGV0IHQ7aWYoMD09PWUucnVubmluZ1N0YXRlKXJldHVybiBtYWtlRXJyb3IoZSwtMjUpO2lmKGUucnVubmluZ1N0YXRlPDApcmV0dXJuIG1ha2VFcnJvcihlLC0yOCk7aWYoMTE9PT1lLnJ1bm5pbmdTdGF0ZSlyZXR1cm4gbWFrZUVycm9yKGUsLTIyKTtpZigxPT09ZS5ydW5uaW5nU3RhdGUpe2NvbnN0IHQ9ZnVuY3Rpb24gZGVjb2RlV2luZG93Qml0cyhlKXtjb25zdCB0PWUuaXNMYXJnZVdpbmRvdztlLmlzTGFyZ2VXaW5kb3c9MDtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWlmKDA9PT1yZWFkRmV3Qml0cyhlLDEpKXJldHVybiAxNjtsZXQgbj1yZWFkRmV3Qml0cyhlLDMpO2lmKDAhPT1uKXJldHVybiAxNytuO249cmVhZEZld0JpdHMoZSwzKTtpZigwIT09bil7aWYoMT09PW4pe2lmKDA9PT10KXJldHVybi0xO2UuaXNMYXJnZVdpbmRvdz0xO2lmKDE9PT1yZWFkRmV3Qml0cyhlLDEpKXJldHVybi0xO249cmVhZEZld0JpdHMoZSw2KTtyZXR1cm4gbjwxMHx8bj4zMD8tMTpufXJldHVybiA4K259cmV0dXJuIDE3fShlKTtpZigtMT09PXQpcmV0dXJuIG1ha2VFcnJvcihlLC0xMSk7ZS5tYXhSaW5nQnVmZmVyU2l6ZT0xPDx0O2UubWF4QmFja3dhcmREaXN0YW5jZT1lLm1heFJpbmdCdWZmZXJTaXplLTE2O2UucnVubmluZ1N0YXRlPTJ9bGV0IHM9Y2FsY3VsYXRlRmVuY2UoZSkscj1lLnJpbmdCdWZmZXJTaXplLTEsaT1lLnJpbmdCdWZmZXI7Zm9yKDsxMCE9PWUucnVubmluZ1N0YXRlOylzd2l0Y2goZS5ydW5uaW5nU3RhdGUpe2Nhc2UgMjppZihlLm1ldGFCbG9ja0xlbmd0aDwwKXJldHVybiBtYWtlRXJyb3IoZSwtMTApO3Q9cmVhZE5leHRNZXRhYmxvY2tIZWFkZXIoZSk7aWYodDwwKXJldHVybiB0O3M9Y2FsY3VsYXRlRmVuY2UoZSk7cj1lLnJpbmdCdWZmZXJTaXplLTE7aT1lLnJpbmdCdWZmZXI7Y29udGludWU7Y2FzZSAzOnQ9cmVhZE1ldGFibG9ja0h1ZmZtYW5Db2Rlc0FuZENvbnRleHRNYXBzKGUpO2lmKHQ8MClyZXR1cm4gdDtlLnJ1bm5pbmdTdGF0ZT00O2NvbnRpbnVlO2Nhc2UgNDppZihlLm1ldGFCbG9ja0xlbmd0aDw9MCl7ZS5ydW5uaW5nU3RhdGU9Mjtjb250aW51ZX1pZihlLmhhbGZPZmZzZXQ+MjAzMCl7dD1yZWFkTW9yZUlucHV0KGUpO2lmKHQ8MClyZXR1cm4gdH0wPT09ZS5jb21tYW5kQmxvY2tMZW5ndGgmJmRlY29kZUNvbW1hbmRCbG9ja1N3aXRjaChlKTtlLmNvbW1hbmRCbG9ja0xlbmd0aC0tO2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9Y29uc3Qgbz1yZWFkU3ltYm9sKGUuY29tbWFuZFRyZWVHcm91cCxlLmNvbW1hbmRUcmVlSWR4LGUpPDwyLGw9ZltvXSxjPWZbbysxXSx1PWZbbysyXTtlLmRpc3RhbmNlQ29kZT1mW28rM107aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1jb25zdCBtPTI1NSZsO2UuaW5zZXJ0TGVuZ3RoPWMrKG08PTE2P3JlYWRGZXdCaXRzKGUsbSk6cmVhZE1hbnlCaXRzKGUsbSkpO2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9Y29uc3QgcD1sPj44O2UuY29weUxlbmd0aD11KyhwPD0xNj9yZWFkRmV3Qml0cyhlLHApOnJlYWRNYW55Qml0cyhlLHApKTtlLmo9MDtlLnJ1bm5pbmdTdGF0ZT03O2NvbnRpbnVlO2Nhc2UgNzppZigwIT09ZS50cml2aWFsTGl0ZXJhbENvbnRleHQpZm9yKDtlLmo8ZS5pbnNlcnRMZW5ndGg7KXtpZihlLmhhbGZPZmZzZXQ+MjAzMCl7dD1yZWFkTW9yZUlucHV0KGUpO2lmKHQ8MClyZXR1cm4gdH0wPT09ZS5saXRlcmFsQmxvY2tMZW5ndGgmJmRlY29kZUxpdGVyYWxCbG9ja1N3aXRjaChlKTtlLmxpdGVyYWxCbG9ja0xlbmd0aC0tO2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9aVtlLnBvc109cmVhZFN5bWJvbChlLmxpdGVyYWxUcmVlR3JvdXAsZS5saXRlcmFsVHJlZUlkeCxlKTtlLnBvcysrO2UuaisrO2lmKGUucG9zPj1zKXtlLm5leHRSdW5uaW5nU3RhdGU9NztlLnJ1bm5pbmdTdGF0ZT0xMjticmVha319ZWxzZXtsZXQgbj0yNTUmaVtlLnBvcy0xJnJdLGE9MjU1JmlbZS5wb3MtMiZyXTtmb3IoO2UuajxlLmluc2VydExlbmd0aDspe2lmKGUuaGFsZk9mZnNldD4yMDMwKXt0PXJlYWRNb3JlSW5wdXQoZSk7aWYodDwwKXJldHVybiB0fTA9PT1lLmxpdGVyYWxCbG9ja0xlbmd0aCYmZGVjb2RlTGl0ZXJhbEJsb2NrU3dpdGNoKGUpO2NvbnN0IHI9aFtlLmNvbnRleHRMb29rdXBPZmZzZXQxK25dfGhbZS5jb250ZXh0TG9va3VwT2Zmc2V0MithXSxvPTI1NSZlLmNvbnRleHRNYXBbZS5jb250ZXh0TWFwU2xpY2Urcl07ZS5saXRlcmFsQmxvY2tMZW5ndGgtLTthPW47aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1uPXJlYWRTeW1ib2woZS5saXRlcmFsVHJlZUdyb3VwLG8sZSk7aVtlLnBvc109bjtlLnBvcysrO2UuaisrO2lmKGUucG9zPj1zKXtlLm5leHRSdW5uaW5nU3RhdGU9NztlLnJ1bm5pbmdTdGF0ZT0xMjticmVha319fWlmKDchPT1lLnJ1bm5pbmdTdGF0ZSljb250aW51ZTtlLm1ldGFCbG9ja0xlbmd0aC09ZS5pbnNlcnRMZW5ndGg7aWYoZS5tZXRhQmxvY2tMZW5ndGg8PTApe2UucnVubmluZ1N0YXRlPTQ7Y29udGludWV9bGV0IGQ9ZS5kaXN0YW5jZUNvZGU7aWYoZDwwKWUuZGlzdGFuY2U9ZS5yaW5nc1tlLmRpc3RSYklkeF07ZWxzZXtpZihlLmhhbGZPZmZzZXQ+MjAzMCl7dD1yZWFkTW9yZUlucHV0KGUpO2lmKHQ8MClyZXR1cm4gdH0wPT09ZS5kaXN0YW5jZUJsb2NrTGVuZ3RoJiZkZWNvZGVEaXN0YW5jZUJsb2NrU3dpdGNoKGUpO2UuZGlzdGFuY2VCbG9ja0xlbmd0aC0tO2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9Y29uc3Qgcz0yNTUmZS5kaXN0Q29udGV4dE1hcFtlLmRpc3RDb250ZXh0TWFwU2xpY2UrZF07ZD1yZWFkU3ltYm9sKGUuZGlzdGFuY2VUcmVlR3JvdXAscyxlKTtpZihkPDE2KXtjb25zdCB0PWUuZGlzdFJiSWR4K25bZF0mMztlLmRpc3RhbmNlPWUucmluZ3NbdF0rYVtkXTtpZihlLmRpc3RhbmNlPDApcmV0dXJuIG1ha2VFcnJvcihlLC0xMil9ZWxzZXtjb25zdCB0PWUuZGlzdEV4dHJhQml0c1tkXTtsZXQgbjtpZihlLmJpdE9mZnNldCt0PD0zMiluPXJlYWRGZXdCaXRzKGUsdCk7ZWxzZXtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fW49dDw9MTY/cmVhZEZld0JpdHMoZSx0KTpyZWFkTWFueUJpdHMoZSx0KX1lLmRpc3RhbmNlPWUuZGlzdE9mZnNldFtkXSsobjw8ZS5kaXN0YW5jZVBvc3RmaXhCaXRzKX19ZS5tYXhEaXN0YW5jZSE9PWUubWF4QmFja3dhcmREaXN0YW5jZSYmZS5wb3M8ZS5tYXhCYWNrd2FyZERpc3RhbmNlP2UubWF4RGlzdGFuY2U9ZS5wb3M6ZS5tYXhEaXN0YW5jZT1lLm1heEJhY2t3YXJkRGlzdGFuY2U7aWYoZS5kaXN0YW5jZT5lLm1heERpc3RhbmNlKXtlLnJ1bm5pbmdTdGF0ZT05O2NvbnRpbnVlfWlmKGQ+MCl7ZS5kaXN0UmJJZHg9ZS5kaXN0UmJJZHgrMSYzO2UucmluZ3NbZS5kaXN0UmJJZHhdPWUuZGlzdGFuY2V9aWYoZS5jb3B5TGVuZ3RoPmUubWV0YUJsb2NrTGVuZ3RoKXJldHVybiBtYWtlRXJyb3IoZSwtOSk7ZS5qPTA7ZS5ydW5uaW5nU3RhdGU9ODtjb250aW51ZTtjYXNlIDg6bGV0IGc9ZS5wb3MtZS5kaXN0YW5jZSZyLGI9ZS5wb3M7Y29uc3Qgdz1lLmNvcHlMZW5ndGgtZS5qLGo9Zyt3LGs9Yit3O2lmKGo8ciYmazxyKXtpZih3PDEyfHxqPmImJms+Zyl7Y29uc3QgZT13KzM+PjI7Zm9yKGxldCB0PTA7dDxlOysrdCl7aVtiKytdPWlbZysrXTtpW2IrK109aVtnKytdO2lbYisrXT1pW2crK107aVtiKytdPWlbZysrXX19ZWxzZSBpLmNvcHlXaXRoaW4oYixnLGopO2Uuais9dztlLm1ldGFCbG9ja0xlbmd0aC09dztlLnBvcys9d31lbHNlIGZvcig7ZS5qPGUuY29weUxlbmd0aDspe2lbZS5wb3NdPWlbZS5wb3MtZS5kaXN0YW5jZSZyXTtlLm1ldGFCbG9ja0xlbmd0aC0tO2UucG9zKys7ZS5qKys7aWYoZS5wb3M+PXMpe2UubmV4dFJ1bm5pbmdTdGF0ZT04O2UucnVubmluZ1N0YXRlPTEyO2JyZWFrfX04PT09ZS5ydW5uaW5nU3RhdGUmJihlLnJ1bm5pbmdTdGF0ZT00KTtjb250aW51ZTtjYXNlIDk6dD1kb1VzZURpY3Rpb25hcnkoZSxzKTtpZih0PDApcmV0dXJuIHQ7Y29udGludWU7Y2FzZSAxNDplLnBvcys9Y29weUZyb21Db21wb3VuZERpY3Rpb25hcnkoZSxzKTtpZihlLnBvcz49cyl7ZS5uZXh0UnVubmluZ1N0YXRlPTE0O2UucnVubmluZ1N0YXRlPTEyO3JldHVybiAyfWUucnVubmluZ1N0YXRlPTQ7Y29udGludWU7Y2FzZSA1OmZvcig7ZS5tZXRhQmxvY2tMZW5ndGg+MDspe2lmKGUuaGFsZk9mZnNldD4yMDMwKXt0PXJlYWRNb3JlSW5wdXQoZSk7aWYodDwwKXJldHVybiB0fWlmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9cmVhZEZld0JpdHMoZSw4KTtlLm1ldGFCbG9ja0xlbmd0aC0tfWUucnVubmluZ1N0YXRlPTI7Y29udGludWU7Y2FzZSA2OnQ9Y29weVVuY29tcHJlc3NlZERhdGEoZSk7aWYodDwwKXJldHVybiB0O2NvbnRpbnVlO2Nhc2UgMTI6ZS5yaW5nQnVmZmVyQnl0ZXNSZWFkeT1NYXRoLm1pbihlLnBvcyxlLnJpbmdCdWZmZXJTaXplKTtlLnJ1bm5pbmdTdGF0ZT0xMztjb250aW51ZTtjYXNlIDEzOnQ9d3JpdGVSaW5nQnVmZmVyKGUpO2lmKDAhPT10KXJldHVybiB0O2UucG9zPj1lLm1heEJhY2t3YXJkRGlzdGFuY2UmJihlLm1heERpc3RhbmNlPWUubWF4QmFja3dhcmREaXN0YW5jZSk7aWYoZS5wb3M+PWUucmluZ0J1ZmZlclNpemUpe2UucG9zPmUucmluZ0J1ZmZlclNpemUmJmkuY29weVdpdGhpbigwLGUucmluZ0J1ZmZlclNpemUsZS5wb3MpO2UucG9zPWUucG9zJnI7ZS5yaW5nQnVmZmVyQnl0ZXNXcml0dGVuPTB9ZS5ydW5uaW5nU3RhdGU9ZS5uZXh0UnVubmluZ1N0YXRlO2NvbnRpbnVlO2RlZmF1bHQ6cmV0dXJuIG1ha2VFcnJvcihlLC0yOCl9aWYoMTAhPT1lLnJ1bm5pbmdTdGF0ZSlyZXR1cm4gbWFrZUVycm9yKGUsLTI5KTtpZihlLm1ldGFCbG9ja0xlbmd0aDwwKXJldHVybiBtYWtlRXJyb3IoZSwtMTApO3Q9anVtcFRvQnl0ZUJvdW5kYXJ5KGUpO2lmKDAhPT10KXJldHVybiB0O3Q9Y2hlY2tIZWFsdGgoZSwxKTtyZXR1cm4gMCE9PXQ/dDoxfWNvbnN0IGM9bmV3IGZ1bmN0aW9uIFRyYW5zZm9ybXMoZSx0LG4pe3RoaXMubnVtVHJhbnNmb3Jtcz0wO3RoaXMudHJpcGxldHM9bmV3IEludDMyQXJyYXkoMCk7dGhpcy5wcmVmaXhTdWZmaXhTdG9yYWdlPW5ldyBJbnQ4QXJyYXkoMCk7dGhpcy5wcmVmaXhTdWZmaXhIZWFkcz1uZXcgSW50MzJBcnJheSgwKTt0aGlzLnBhcmFtcz1uZXcgSW50MTZBcnJheSgwKTt0aGlzLm51bVRyYW5zZm9ybXM9ZTt0aGlzLnRyaXBsZXRzPW5ldyBJbnQzMkFycmF5KDMqZSk7dGhpcy5wYXJhbXM9bmV3IEludDE2QXJyYXkoZSk7dGhpcy5wcmVmaXhTdWZmaXhTdG9yYWdlPW5ldyBJbnQ4QXJyYXkodCk7dGhpcy5wcmVmaXhTdWZmaXhIZWFkcz1uZXcgSW50MzJBcnJheShuKzEpfSgxMjEsMTY3LDUwKTshZnVuY3Rpb24gdW5wYWNrVHJhbnNmb3JtcyhlLHQsbixhLHMpe2NvbnN0IHI9dG9VdGY4UnVuZXMoYSksaT1yLmxlbmd0aDtsZXQgbz0xLGw9MDtmb3IobGV0IG49MDtuPGk7KytuKXtjb25zdCBhPXJbbl07MzU9PT1hP3RbbysrXT1sOmVbbCsrXT1hfWZvcihsZXQgZT0wO2U8MzYzOysrZSluW2VdPXMuY2hhckNvZGVBdChlKS0zMn0oYy5wcmVmaXhTdWZmaXhTdG9yYWdlLGMucHJlZml4U3VmZml4SGVhZHMsYy50cmlwbGV0cywnIyAjcyAjLCAjZSAjLiMgdGhlICMuY29tLyPDgsKgIyBvZiAjIGFuZCAjIGluICMgdG8gIyIjIj4jXG4jXSMgZm9yICMgYSAjIHRoYXQgIy4gIyB3aXRoICNcJyMgZnJvbSAjIGJ5ICMuIFRoZSAjIG9uICMgYXMgIyBpcyAjaW5nICNcblx0IzojZWQgIygjIGF0ICNseSAjPSIjIG9mIHRoZSAjLiBUaGlzICMsIyBub3QgI2VyICNhbCAjPVwnI2Z1bCAjaXZlICNsZXNzICNlc3QgI2l6ZSAjb3VzICMnLCIgICAgICEhICEgLCAgKiEgICYhICBcIiAhICApICogICAqIC0gICEgIyAhICAjISohICArICAsJCAhICAtICAlICAuICAvICMgICAwICAxIC4gIFwiICAgMiAgMyEqICAgNCUgICEgIyAvICAgNSAgNiAgNyAgOCAwICAxICYgICAkICAgOSArICAgOiAgOyAgPCAnICAhPSAgPiAgPyEgNCAgQCA0ICAyICAmICAgQSAqIyAoICAgQiAgQyYgKSAlICApICEqIyAqLSUgQSArISAqLiAgRCEgJScgICYgRSAqNiAgRiAgRyUgISAqQSAqJSAgSCEgRCAgSSErISAgSiErICAgSyArLSAqNCEgQSAgTCEqNCAgTSAgTiArNiAgTyEqJSArLiEgSyAqRyAgUCArJSggICEgRyAqRCArRCAgUSArIyAqSyEqRyErRCErIyArRyArQSArNCErJSArSyErNCEqRCErSyEqSyIpO2Z1bmN0aW9uIGdldE5leHRLZXkoZSx0KXtsZXQgbj0xPDx0LTE7Zm9yKDswIT09KGUmbik7KW4+Pj0xO3JldHVybihlJm4tMSkrbn1mdW5jdGlvbiByZXBsaWNhdGVWYWx1ZShlLHQsbixhLHMpe2xldCByPWE7Zm9yKDtyPjA7KXtyLT1uO2VbdCtyXT1zfX1mdW5jdGlvbiBuZXh0VGFibGVCaXRTaXplKGUsdCxuKXtsZXQgYT10LHM9MTw8YS1uO2Zvcig7YTwxNTspe3MtPWVbYV07aWYoczw9MClicmVhazthKys7czw8PTF9cmV0dXJuIGEtbn1mdW5jdGlvbiBidWlsZEh1ZmZtYW5UYWJsZShlLHQsbixhLHMpe2NvbnN0IHI9ZVt0XSxpPW5ldyBJbnQzMkFycmF5KHMpLG89bmV3IEludDMyQXJyYXkoMTYpLGw9bmV3IEludDMyQXJyYXkoMTYpO2ZvcihsZXQgZT0wO2U8czsrK2Upb1thW2VdXSsrO2xbMV09MDtmb3IobGV0IGU9MTtlPDE1OysrZSlsW2UrMV09bFtlXStvW2VdO2ZvcihsZXQgZT0wO2U8czsrK2UpMCE9PWFbZV0mJihpW2xbYVtlXV0rK109ZSk7bGV0IGY9bixjPTE8PGYsaD1jO2lmKDE9PT1sWzE1XSl7Zm9yKGxldCB0PTA7dDxoOysrdCllW3IrdF09aVswXTtyZXR1cm4gaH1sZXQgdT0wLG09MCxwPTE7Zm9yKGxldCB0PTE7dDw9bjsrK3Qpe3A8PD0xO2Zvcig7b1t0XT4wOyl7cmVwbGljYXRlVmFsdWUoZSxyK3UscCxjLHQ8PDE2fGlbbSsrXSk7dT1nZXROZXh0S2V5KHUsdCk7b1t0XS0tfX1jb25zdCBkPWgtMTtsZXQgZz0tMSxiPXI7cD0xO2ZvcihsZXQgdD1uKzE7dDw9MTU7Kyt0KXtwPDw9MTtmb3IoO29bdF0+MDspe2lmKCh1JmQpIT09Zyl7Yis9YztmPW5leHRUYWJsZUJpdFNpemUobyx0LG4pO2M9MTw8ZjtoKz1jO2c9dSZkO2VbcitnXT1mK248PDE2fGItci1nfXJlcGxpY2F0ZVZhbHVlKGUsYisodT4+bikscCxjLHQtbjw8MTZ8aVttKytdKTt1PWdldE5leHRLZXkodSx0KTtvW3RdLS19fXJldHVybiBofWZ1bmN0aW9uIHJlYWRNb3JlSW5wdXQoZSl7aWYoMCE9PWUuZW5kT2ZTdHJlYW1SZWFjaGVkKXJldHVybiBoYWxmQXZhaWxhYmxlKGUpPj0tMj8wOm1ha2VFcnJvcihlLC0xNik7Y29uc3QgdD1lLmhhbGZPZmZzZXQ8PDE7bGV0IG49NDA5Ni10O2UuYnl0ZUJ1ZmZlci5jb3B5V2l0aGluKDAsdCw0MDk2KTtlLmhhbGZPZmZzZXQ9MDtmb3IoO248NDA5Njspe2NvbnN0IHQ9NDA5Ni1uLGE9cmVhZElucHV0KGUsZS5ieXRlQnVmZmVyLG4sdCk7aWYoYTwtMSlyZXR1cm4gYTtpZihhPD0wKXtlLmVuZE9mU3RyZWFtUmVhY2hlZD0xO2UudGFpbEJ5dGVzPW47bis9MTticmVha31uKz1hfSFmdW5jdGlvbiBieXRlc1RvTmliYmxlcyhlLHQpe2NvbnN0IG49ZS5ieXRlQnVmZmVyLGE9dD4+MSxzPWUuc2hvcnRCdWZmZXI7Zm9yKGxldCBlPTA7ZTxhOysrZSlzW2VdPTI1NSZuWzIqZV18KDI1NSZuWzIqZSsxXSk8PDh9KGUsbik7cmV0dXJuIDB9ZnVuY3Rpb24gY2hlY2tIZWFsdGgoZSx0KXtpZigwPT09ZS5lbmRPZlN0cmVhbVJlYWNoZWQpcmV0dXJuIDA7Y29uc3Qgbj0oZS5oYWxmT2Zmc2V0PDwxKSsoZS5iaXRPZmZzZXQrNz4+MyktNDtyZXR1cm4gbj5lLnRhaWxCeXRlcz9tYWtlRXJyb3IoZSwtMTMpOjAhPT10JiZuIT09ZS50YWlsQnl0ZXM/bWFrZUVycm9yKGUsLTE3KTowfWZ1bmN0aW9uIHJlYWRGZXdCaXRzKGUsdCl7Y29uc3Qgbj1lLmFjY3VtdWxhdG9yMzI+Pj5lLmJpdE9mZnNldCYoMTw8dCktMTtlLmJpdE9mZnNldCs9dDtyZXR1cm4gbn1mdW5jdGlvbiByZWFkTWFueUJpdHMoZSx0KXtjb25zdCBuPXJlYWRGZXdCaXRzKGUsMTYpO2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2O3JldHVybiBufHJlYWRGZXdCaXRzKGUsdC0xNik8PDE2fWZ1bmN0aW9uIHByZXBhcmUoZSl7aWYoZS5oYWxmT2Zmc2V0PjIwMzApe2NvbnN0IHQ9cmVhZE1vcmVJbnB1dChlKTtpZigwIT09dClyZXR1cm4gdH1sZXQgdD1jaGVja0hlYWx0aChlLDApO2lmKDAhPT10KXJldHVybiB0O2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2O2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2O3JldHVybiAwfWZ1bmN0aW9uIHJlbG9hZChlKXtyZXR1cm4gMzI9PT1lLmJpdE9mZnNldD9wcmVwYXJlKGUpOjB9ZnVuY3Rpb24ganVtcFRvQnl0ZUJvdW5kYXJ5KGUpe2NvbnN0IHQ9MzItZS5iaXRPZmZzZXQmNztpZigwIT09dCl7aWYoMCE9PXJlYWRGZXdCaXRzKGUsdCkpcmV0dXJuIG1ha2VFcnJvcihlLC01KX1yZXR1cm4gMH1mdW5jdGlvbiBoYWxmQXZhaWxhYmxlKGUpe2xldCB0PTIwNDg7MCE9PWUuZW5kT2ZTdHJlYW1SZWFjaGVkJiYodD1lLnRhaWxCeXRlcysxPj4xKTtyZXR1cm4gdC1lLmhhbGZPZmZzZXR9Y29uc3QgaD1uZXcgSW50MzJBcnJheSgyMDQ4KTshZnVuY3Rpb24gdW5wYWNrTG9va3VwVGFibGUoZSx0LG4pe2ZvcihsZXQgdD0wO3Q8MjU2OysrdCl7ZVt0XT02MyZ0O2VbNTEyK3RdPXQ+PjI7ZVsxNzkyK3RdPTIrKHQ+PjYpfWZvcihsZXQgbj0wO248MTI4OysrbillWzEwMjQrbl09NCoodC5jaGFyQ29kZUF0KG4pLTMyKTtmb3IobGV0IHQ9MDt0PDY0OysrdCl7ZVsxMTUyK3RdPTEmdDtlWzEyMTYrdF09MisoMSZ0KX1sZXQgYT0xMjgwO2ZvcihsZXQgdD0wO3Q8MTk7Kyt0KXtjb25zdCBzPTMmdCxyPW4uY2hhckNvZGVBdCh0KS0zMjtmb3IobGV0IHQ9MDt0PHI7Kyt0KWVbYSsrXT1zfWZvcihsZXQgdD0wO3Q8MTY7Kyt0KXtlWzE3OTIrdF09MTtlWzIwMzIrdF09Nn1lWzE3OTJdPTA7ZVsyMDQ3XT03O2ZvcihsZXQgdD0wO3Q8MjU2OysrdCllWzE1MzYrdF09ZVsxNzkyK3RdPDwzfShoLCIgICAgICAgICAhISAgISAgICAgICAgICAgICAgICAgIFwiIyQjIyUjJCYnIyMoIykjKysrKysrKysrKygoJionIyMsLS0tLC0tLSwtLS0tLSwtLS0tLSwtLS0tLSYjJyMjIy4vLy8uLy8vLi8vLy8vLi8vLy8vLi8vLy8vJiMnIyAiLCJBLyogICc6ICAmIDogJCAgwoEgQCIpO2Z1bmN0aW9uIFN0YXRlKCl7dGhpcy5yaW5nQnVmZmVyPW5ldyBJbnQ4QXJyYXkoMCk7dGhpcy5jb250ZXh0TW9kZXM9bmV3IEludDhBcnJheSgwKTt0aGlzLmNvbnRleHRNYXA9bmV3IEludDhBcnJheSgwKTt0aGlzLmRpc3RDb250ZXh0TWFwPW5ldyBJbnQ4QXJyYXkoMCk7dGhpcy5kaXN0RXh0cmFCaXRzPW5ldyBJbnQ4QXJyYXkoMCk7dGhpcy5vdXRwdXQ9bmV3IEludDhBcnJheSgwKTt0aGlzLmJ5dGVCdWZmZXI9bmV3IEludDhBcnJheSgwKTt0aGlzLnNob3J0QnVmZmVyPW5ldyBJbnQxNkFycmF5KDApO3RoaXMuaW50QnVmZmVyPW5ldyBJbnQzMkFycmF5KDApO3RoaXMucmluZ3M9bmV3IEludDMyQXJyYXkoMCk7dGhpcy5ibG9ja1RyZWVzPW5ldyBJbnQzMkFycmF5KDApO3RoaXMubGl0ZXJhbFRyZWVHcm91cD1uZXcgSW50MzJBcnJheSgwKTt0aGlzLmNvbW1hbmRUcmVlR3JvdXA9bmV3IEludDMyQXJyYXkoMCk7dGhpcy5kaXN0YW5jZVRyZWVHcm91cD1uZXcgSW50MzJBcnJheSgwKTt0aGlzLmRpc3RPZmZzZXQ9bmV3IEludDMyQXJyYXkoMCk7dGhpcy5hY2N1bXVsYXRvcjY0PTA7dGhpcy5ydW5uaW5nU3RhdGU9MDt0aGlzLm5leHRSdW5uaW5nU3RhdGU9MDt0aGlzLmFjY3VtdWxhdG9yMzI9MDt0aGlzLmJpdE9mZnNldD0wO3RoaXMuaGFsZk9mZnNldD0wO3RoaXMudGFpbEJ5dGVzPTA7dGhpcy5lbmRPZlN0cmVhbVJlYWNoZWQ9MDt0aGlzLm1ldGFCbG9ja0xlbmd0aD0wO3RoaXMuaW5wdXRFbmQ9MDt0aGlzLmlzVW5jb21wcmVzc2VkPTA7dGhpcy5pc01ldGFkYXRhPTA7dGhpcy5saXRlcmFsQmxvY2tMZW5ndGg9MDt0aGlzLm51bUxpdGVyYWxCbG9ja1R5cGVzPTA7dGhpcy5jb21tYW5kQmxvY2tMZW5ndGg9MDt0aGlzLm51bUNvbW1hbmRCbG9ja1R5cGVzPTA7dGhpcy5kaXN0YW5jZUJsb2NrTGVuZ3RoPTA7dGhpcy5udW1EaXN0YW5jZUJsb2NrVHlwZXM9MDt0aGlzLnBvcz0wO3RoaXMubWF4RGlzdGFuY2U9MDt0aGlzLmRpc3RSYklkeD0wO3RoaXMudHJpdmlhbExpdGVyYWxDb250ZXh0PTA7dGhpcy5saXRlcmFsVHJlZUlkeD0wO3RoaXMuY29tbWFuZFRyZWVJZHg9MDt0aGlzLmo9MDt0aGlzLmluc2VydExlbmd0aD0wO3RoaXMuY29udGV4dE1hcFNsaWNlPTA7dGhpcy5kaXN0Q29udGV4dE1hcFNsaWNlPTA7dGhpcy5jb250ZXh0TG9va3VwT2Zmc2V0MT0wO3RoaXMuY29udGV4dExvb2t1cE9mZnNldDI9MDt0aGlzLmRpc3RhbmNlQ29kZT0wO3RoaXMubnVtRGlyZWN0RGlzdGFuY2VDb2Rlcz0wO3RoaXMuZGlzdGFuY2VQb3N0Zml4Qml0cz0wO3RoaXMuZGlzdGFuY2U9MDt0aGlzLmNvcHlMZW5ndGg9MDt0aGlzLm1heEJhY2t3YXJkRGlzdGFuY2U9MDt0aGlzLm1heFJpbmdCdWZmZXJTaXplPTA7dGhpcy5yaW5nQnVmZmVyU2l6ZT0wO3RoaXMuZXhwZWN0ZWRUb3RhbFNpemU9MDt0aGlzLm91dHB1dE9mZnNldD0wO3RoaXMub3V0cHV0TGVuZ3RoPTA7dGhpcy5vdXRwdXRVc2VkPTA7dGhpcy5yaW5nQnVmZmVyQnl0ZXNXcml0dGVuPTA7dGhpcy5yaW5nQnVmZmVyQnl0ZXNSZWFkeT0wO3RoaXMuaXNFYWdlcj0wO3RoaXMuaXNMYXJnZVdpbmRvdz0wO3RoaXMuY2ROdW1DaHVua3M9MDt0aGlzLmNkVG90YWxTaXplPTA7dGhpcy5jZEJySW5kZXg9MDt0aGlzLmNkQnJPZmZzZXQ9MDt0aGlzLmNkQnJMZW5ndGg9MDt0aGlzLmNkQnJDb3BpZWQ9MDt0aGlzLmNkQ2h1bmtzPW5ldyBBcnJheSgwKTt0aGlzLmNkQ2h1bmtPZmZzZXRzPW5ldyBJbnQzMkFycmF5KDApO3RoaXMuY2RCbG9ja0JpdHM9MDt0aGlzLmNkQmxvY2tNYXA9bmV3IEludDhBcnJheSgwKTt0aGlzLmlucHV0PW5ldyBJbnB1dFN0cmVhbShuZXcgSW50OEFycmF5KDApKTt0aGlzLnJpbmdCdWZmZXI9bmV3IEludDhBcnJheSgwKTt0aGlzLnJpbmdzPW5ldyBJbnQzMkFycmF5KDEwKTt0aGlzLnJpbmdzWzBdPTE2O3RoaXMucmluZ3NbMV09MTU7dGhpcy5yaW5nc1syXT0xMTt0aGlzLnJpbmdzWzNdPTR9bGV0IHU9bmV3IEludDhBcnJheSgwKTtjb25zdCBtPW5ldyBJbnQzMkFycmF5KDMyKSxwPW5ldyBJbnQzMkFycmF5KDMyKTtjb25zdCBkPW5ldyBJbnQ4QXJyYXkoMTIyNzg0KSxnPW5ldyBJbnQzMkFycmF5KDI1KTshZnVuY3Rpb24gdW5wYWNrRGljdGlvbmFyeURhdGEoZSx0LG4sYSxzLHIpe2NvbnN0IGk9ZnVuY3Rpb24gdG9Vc0FzY2lpQnl0ZXMoZSl7Y29uc3QgdD1lLmxlbmd0aCxuPW5ldyBJbnQ4QXJyYXkodCk7Zm9yKGxldCBhPTA7YTx0OysrYSluW2FdPWUuY2hhckNvZGVBdChhKTtyZXR1cm4gbn0odCtuKSxvPXRvVXRmOFJ1bmVzKGEpO2xldCBsPTA7Y29uc3QgZj1vLmxlbmd0aD4+MTtmb3IobGV0IGU9MDtlPGY7KytlKXtjb25zdCB0PW9bMiplXS0zNixuPW9bMiplKzFdLTM2O2ZvcihsZXQgZT0wO2U8dDsrK2Upe2lbbF09M15pW2xdO2wrK31mb3IobGV0IGU9MDtlPG47KytlKXtpW2xdPTIzNl5pW2xdO2wrK319Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDsrK2Upc1tlXT1yLmNoYXJDb2RlQXQoZSktNjU7ZS5zZXQoaSl9KGQsJ3dqbmZnbHRtb2plZm9mZXdhYmBoYGxnZmdid2Jwa2x0bG1venBqd2Zgand6bHNmbWl2cHdvamhmZXFmZnRscWh3Znt3emZicWx1ZnFhbGd6b2x1ZmVscW5hbGxoc29iem9qdWZvam1ma2Zvc2tsbmZwamdmbmxxZnRscWdvbG1kd2tmbnVqZnRlam1nc2JkZmdienBldm9va2ZiZ3dmcW5mYmBrYnFmYmVxbG53cXZmbmJxaGJhb2Z2c2xta2pka2did2ZvYm1nbWZ0cGZ1Zm1tZnt3YGJwZmFsd2tzbHB3dnBmZ25iZ2ZrYm1na2ZxZnRrYndtYm5mT2ptaGFvbGRwanlmYWJwZmtmb2duYmhmbmJqbXZwZnEkKiMoa2xvZ2ZtZ3B0andrTWZ0cHFmYmd0ZnFmcGpkbXdiaGZrYnVmZGJuZnBmZm1gYm9vc2J3a3Rmb29zb3ZwbmZtdmVqb25zYnF3aWxqbXdranBvanB3ZGxsZ21mZmd0YnpwdGZwd2lsYXBuam1nYm9wbG9sZGxxamBrdnBmcG9icHd3ZmJuYnFuemVsbGdoam1kdGpvb2ZicHd0YnFnYWZwd2VqcWZTYmRmaG1sdGJ0Ynotc21kbmx1ZndrYm1vbGJnZGp1ZnBmb2VtbHdmbnZga2VmZmduYm16cWxgaGpgbG1sbWBmb2xsaGtqZ2ZnamZnS2xuZnF2b2ZrbHB3Ymlie2ptZWxgb3Zhb2J0cG9mcHBrYm9lcGxuZnB2YGt5bG1mMjMzJmxtZnBgYnFmV2puZnFiYGZhb3ZmZWx2cXRmZmhlYmBma2xzZmRidWZrYnFnb2xwd3RrZm1zYnFoaGZzd3NicHBwa2pzcWxsbktXTk9zb2JtV3pzZmdsbWZwYnVmaGZmc2VvYmRvam1ocGxvZ2VqdWZ3bGxocWJ3ZndsdG1pdm5zd2t2cGdicWhgYnFnZWpvZmVmYnFwd2J6aGpvb3drYndlYm9vYnZ3bGZ1ZnEtYGxud2JvaHBrbHN1bHdmZ2Zmc25sZ2ZxZnB3d3ZxbWFscW1hYm1nZWZvb3FscGZ2cW8rcGhqbXFsb2ZgbG5mYmB3cGJkZnBuZmZ3ZGxvZy1pc2Rqd2ZudWJxemVmb3d3a2ZtcGZtZ2dxbHNVamZ0YGxzejItMyE/LGI9cHdsc2ZvcGZvamZwd2x2cXNiYGgtZGplc2Jwd2BwcDxkcWJ6bmZibSVkdzhxamdmcGtsd29id2ZwYmpncWxiZ3VicSNlZmZvaWxrbXFqYGhzbHF3ZWJwdyRWQi5nZmJnPyxhPXNsbHFham9vd3pzZlYtUC10bGxnbnZwdzFzezhKbWVscWJtaHRqZ2Z0Ym13dGJvb29mYmdYM144c2J2b3RidWZwdnFmXCcrJCB0Ymp3bmJwcGJxbnBkbGZwZGJqbW9ibWRzYmpnIi4uI29sYGh2bWp3cWxsd3Rib2hlanFudGplZntubyFwbG1kd2ZwdzEzc3toam1ncWx0cHdsbG9lbG13bmJqb3BiZWZwd2JxbmJzcGBscWZxYmptZW9sdGFiYXpwc2JtcGJ6cDdzezg1c3s4YnF3cGVsbHdxZmJvdGpoamtmYndwd2Zzd3Fqc2xxZCxvYmhmdGZiaHdsb2dFbHFuYGJwd2VibXBhYm1odWZxenF2bXBpdm96d2JwaDJzezhkbGJvZHFmdHBvbHRmZ2Rmamc+IXBmd3A2c3s4LWlwPDczc3tqZSMrcGxsbXBmYndtbG1md3ZhZnlmcWxwZm13cWZmZ2ViYHdqbXdsZGpld2ticW4yO3N7YGJuZmtqb29hbG9neWxsbnVsamdmYnB6cWptZGVqb29zZmJoam1qd2BscHcwc3s4aWJgaHdiZHBhandwcWxvb2ZnandobWZ0bWZicT8iLi5kcWx0SVBMTWd2d3pNYm5mcGJvZnpsdiNvbHdwc2JqbWlieXlgbG9nZnpmcGVqcGt0dHQtcWpwaHdiYXBzcWZ1MjNze3FqcGYxNnN7QW92ZmdqbWQwMzMvYWJvb2VscWdmYnFtdGpvZ2Fsey1lYmpxb2JgaHVmcXBzYmpxaXZtZndmYGtqZSsic2pgaGZ1am9cJyshIHRicW5vbHFnZ2xmcHN2b28vMzMzamdmYmdxYnRrdmRmcHNsd2V2bWdhdnFta3FmZWBmb29oZnpwd2pgaGtsdnFvbHBwZXZmbzIxc3twdmp3Z2Zib1FQUCFiZGZnZHFmekRGVyFmYnBmYmpucGRqcW9iamdwO3N7OG1idXpkcWpnd2pzcCA6Ojp0YnFwb2JnemBicXAqOCN+c2tzPGtmb293Ym9vdGtsbnlrOVx0KSwOXHQjMjMza2Jvby1cdFx0QjRzezhzdnBrYGtidzNzezhgcWZ0KSw/LGticGs0NnN7ZW9id3FicWYjJSUjd2Zvb2BibnNsbXdsb2JqZ25qcHBwaGpzd2Ztd2VqbWZuYm9mZGZ3cHNvbHc3MzMvDlx0Dlx0YGxsb2VmZnctc2tzP2FxPWZxamBubHB3ZHZqZ2Fmb29nZnBga2JqcW5id2tid2xuLGpuZCUgOzFvdmBoYGZtdzMzMzh3am16ZGxtZmt3bm9wZm9vZ3F2ZEVRRkZtbGdmbWpgaDxqZz5vbHBmbXZvb3VicHd0am1nUVBQI3RmYnFxZm96YWZmbXBibmZndmhmbWJwYmBic2Z0anBrZHZvZVcxMDlrandwcG9sd2Rid2ZoamBoYW92cXdrZnoyNnN7JCQqOCo4IT1ucGpmdGptcGFqcWdwbHF3YWZ3YnBmZmhXMjs5bHFncHdxZmZuYm9vNTNze2VicW4ObHVwYWx6cFgzXi0kKjghU0xQV2FmYnFoamdwKjh+fm5icXp3Zm1nK1ZIKnJ2Ymd5azlcbi5wankuLi4uc3FscyQqOA5vamV3VzI6OXVqYGZibWd6Z2Zhdz1RUFBzbGxvbWZgaGFvbHRXMjU5Z2xscWZ1Ym9XMjQ5b2Z3cGViam9scWJvc2xvb21sdWJgbG9wZGZtZiMObHhwbGV3cWxuZndqb29xbHBwP2swPXNsdnFlYmdmc2ptaD93cT1uam1qKn8iK25qbWZ5azkEYWJxcGtmYnEzMyo4bmpvaCMuLj1qcWxtZXFmZ2dqcGh0Zm13cGxqb3N2d3AsaXAsa2xvelcxMTlKUEFNVzEzOWJnYm5wZmZwP2sxPWlwbG0kLyMkYGxtd1cxMjkjUVBQb2xsc2JwamJubGxtPyxzPXBsdm9PSk1GZWxxd2BicXdXMjc5P2syPTszc3siLi4/OnN7OFczNzluamhmOTc1WW1qYGZqbWBrWmxxaHFqYGZ5azlcYiQqKjhzdnFmbmJkZnNicWJ3bG1mYWxtZzkwNFlcXGxlXFwkXio4MzMzL3lrOVx2d2JtaHpicWdhbHRvYXZwazk2NVlJYnViMDNze1x0f35cdCZAMCY5MDdZaWZlZUZbU0pgYnBrdWpwYmRsb2VwbWx0eWs5BXJ2ZnEtYHBwcGpgaG5mYnduam0tYWptZ2dmb29ranFmc2pgcHFmbXc5MDVZS1dXUy4xMzJlbHdsdGxvZUZNRyN7YWx7OTY3WUFMR1pnamBoOFx0flx0ZntqdzkwNll1YnFwYWZidyR+KjhnamZ3Ojo6OGJtbWZ+fj8sWGpeLU9ibWRobi5edGpxZndsenBiZ2dwcGZib2JvZns4XHRcbn5mYGtsbWptZi1scWQzMzYqd2xtemlmdHBwYm1nb2ZkcHFsbGUzMzMqIzEzM3RqbWZkZmJxZ2xkcGFsbHdkYnF6YHZ3cHd6b2Z3Zm5zd2psbS17bm9gbGBoZGJtZFwnKyQtNjNze1NrLUduanBgYm9ibW9sYm1nZnBobmpvZnF6Ym12bWp7Z2pwYCo4flx0Z3Zwd2BvanMqLVx0XHQ0M3N7LjEzM0dVR3A0Xj0/d2JzZmdmbmxqKCgqdGJkZmZ2cWxza2pvbHN3cGtsb2ZFQlJwYnBqbS4xNVdvYmFwc2Z3cFZRTyNhdm9oYGxsaDh+Dlx0S0ZCR1gzXipiYWFxaXZibSsyOjtvZnBrd3RqbT8saj1wbG16ZHZ6cGV2YGhzanNmfy5cdCIzMzEqbWdsdFgyXjhYXjhcdE9sZCNwYm93Dlx0XG5cbmFibWR3cWpuYWJ3ayp4Dlx0MzNze1x0fio4aGw5XDBlZmZwYmc9DnA5LCwjWF44d2xvb3NvdmQrKnhcdHgOXHQjLWlwJDEzM3NndmJvYWxidy1JU0QqOFx0fnJ2bHcqOFx0XHQkKjhcdA5cdH4OMTMyNzEzMjYxMzI1MTMyNDEzMjsxMzI6MTMxMzEzMTIxMzExMTMxMDEzMTcxMzE2MTMxNTEzMTQxMzE7MTMxOjEzMDMxMzAyMTMwMTEzMDAxMzA3MTMwNjEzMDUxMzA0MTMyMDEzMjExMzIyMTMyMzEzMzoxMzM7MTMzNDEzMzUxMzM2MTMzNzEzMzAxMzMxMTMzMjEzMzMyOjo6Mjo6OzI6OjQyOjo1Mjo6NjI6OjcyOjowMjo6MTI6OjIyOjozMjo7OjI6OzsyOjs0Mjo7NTI6OzYyOjs3Mjo7MDI6OzEyOjsyMjo7MzI6NDoyOjQ7Mjo0NDI6NDUyOjQ2Mjo0NzI6NDAyOjQxMjo0MjI6NDMyOjU6Mjo1OzI6NTQyOjU1Mjo1NjI6NTcyOjUwMjo1MTI6NTIyOjUzMjo2OjI6NjsyOjY0Mjo2NTI6NjYyOjY3Mjo2MDI6NjEyOjYyMjo2MzIzMzMyMzE3MjA6NzMzMzM6Ojo6YGxubG4vTXBmcHdmZnB3YnNmcWx3bGdsa2JgZmBiZ2JiL11sYWpmbWcvQWJicC9BdWpnYmBicGxsd3FsZWxxbHBsb2xsd3FiYHZib2dqaWxwamdsZHFibXdqc2x3Zm5iZ2ZhZmJvZGxydi9FZnB3bG1iZ2J3cWZwc2xgbGBicGJhYmlsd2xnYnBqbWxiZHZic3ZmcHZtbHBibXdmZ2pgZm92anBmb29ibmJ6bHlsbWJibmxxc2pwbGxhcWJgb2pgZm9vbGdqbHBrbHFiYGJwajxbPFxcPFE8XFw8UjxQPWw8XFw9bD1vPW48XFw8UTxZPFM8UjxSPW48VDxbPFE8UjxYPFI9bjxSPFo8WTxSPFE8VD1pPHE8XFw8WTxZPF09ZzxQPWc8fj1nPW08UjxePWc8XjxSPHE8UjxSPF08czxSPFc8VDxRPFQ8TDxIPHE8WTxwPWc9bj1nPHI8UTxUPFA8WDxcXDx7PFxcPHg8XFw8cT1vPHI8XT1uPFk8dDxbPFk8VTxRPW88UDxQPE49Zz1vPFo1bTVmNE81ajVpNEs1aTRVNW81aDRPNWQ0XTRDNWY0SzVtNWU1azVkNWg1aTVoNW80SzVkNWg1azRENF80SzVoNEk1ajVrNWY0TzVmNW40QzVrNWg0RzVpNEQ1azVoNWQ1aDVmNEQ1aDRLNWY0RDVvNFg1ZjRLNWk0TzVpNWo0RjRENWY1aDVqNEE0RDVrNWk1aTRYNWQ0WGVqcXB3dWpnZmxvamRrd3RscW9nbmZnamJ0a2p3ZmBvbHBmYW9iYGhxamRrd3BuYm9vYWxsaHBzb2JgZm52cGpgZWpmb2dscWdmcXNsam13dWJvdmZvZnVmb3diYW9mYWxicWdrbHZwZmRxbHZzdGxxaHB6ZmJxcHB3Yndmd2xnYnp0YndmcXB3YnF3cHd6b2ZnZmJ3a3NsdGZxc2tsbWZtamRrd2ZxcWxxam1zdndiYWx2d3dmcW5wd2p3b2Z3bGxvcGZ1Zm13b2xgYm93am5mcG9icWRmdGxxZ3BkYm5mcHBrbHF3cHNiYGZlbGB2cGBvZmJxbmxnZm9hb2xgaGR2amdmcWJnamxwa2JxZnRsbmZtYmRiam1ubG1mempuYmRmbWJuZnB6bHZtZG9qbWZwb2J3ZnFgbG9scWRxZmZtZXFsbXclYm5zOHRid2BrZWxxYGZzcWpgZnF2b2ZwYWZkam1iZXdmcXVqcGp3anBwdmZicWZicGFmb2x0am1nZnt3bHdib2tsdnFwb2JhZm9zcWptd3NxZnBwYXZqb3dvam1ocHBzZmZncHd2Z3p3cWJnZmVsdm1ncGZtcGZ2bWdmcXBrbHRtZWxxbnBxYm1kZmJnZ2ZncHdqb29ubHVmZ3diaGZtYmFsdWZlb2Jwa2Vqe2ZnbGV3Zm1sd2tmcXVqZnRwYGtmYGhvZmRib3FqdWZxandmbnBydmpgaHBrYnNma3ZuYm1me2pwd2Rsam1kbmx1amZ3a2pxZ2FicGpgc2ZiYGZwd2JkZnRqZ3drb2xkam1qZ2ZicHRxbHdmc2JkZnB2cGZxcGdxanVmcHdscWZhcWZiaHBsdndrdWxqYGZwandmcG5sbXdrdGtmcWZhdmpvZ3RramBrZmJxd2tlbHF2bndrcWZmcHNscXdzYnF3ekBvamBob2x0ZnFvanVmcGBvYnBwb2J6ZnFmbXdxenB3bHF6dnBiZGZwbHZtZ2BsdnF3emx2cSNhanF3a3Nsc3Zzd3pzZnBic3NvekpuYmRmYWZqbWR2c3NmcW1sd2ZwZnVmcXpwa2x0cG5mYm1wZnt3cWJuYndga3dxYmBoaG1sdG1mYnFvemFmZGJtcHZzZnFzYnNmcW1scXdrb2ZicW1kanVmbW1ibmZnZm1nZmdXZnFucHNicXdwRHFsdnNhcWJtZ3Zwam1kdGxuYm1lYm9wZnFmYmd6YnZnamx3YmhmcHRram9mLWBsbixvanVmZ2BicGZwZ2Jqb3pga2pvZ2RxZmJ3aXZnZGZ3a2xwZnZtandwbWZ1ZnFhcWxiZ2BsYnB3YGx1ZnFic3NvZmVqb2ZwYHpgb2ZwYGZtZnNvYm1wYG9qYGh0cWp3ZnJ2ZmZtc2pmYGZmbmJqb2VxYm5mbG9nZnFza2x3bG9qbmp3YGJga2ZganVqb3BgYm9mZm13ZnF3a2ZuZndrZnFmd2x2YGthbHZtZ3FsemJvYnBoZmd0a2xvZnBqbWBmcHdsYGgjbWJuZmViandra2ZicXdmbnN3emxlZWZxcGBsc2ZsdG1mZ25qZGt3Ym9hdm53a2ptaGFvbGxnYnFxYnpuYmlscXdxdnB3YGJtbG12bWpsbWBsdm13dWJvamdwd2xtZlB3em9mT2xkam1rYnNzemxgYHZxb2ZldzllcWZwa3J2andmZWpvbnBkcWJnZm1mZmdwdnFhYm1lamRrd2FicGpwa2x1ZnFidndsOHFsdndmLWt3bm9uantmZ2VqbWJvWmx2cSNwb2pnZndsc2pgYXFsdG1ib2xtZmdxYnRtcHNvandxZmJga1FqZGt3Z2J3ZnBuYnFga3J2bHdmZGxsZ3BPam1ocGdsdmF3YnB6bWB3a3ZuYWJvb2x0YGtqZmV6bHZ3a21sdWZvMjNzezhwZnF1ZnZtd2pva2JtZ3BAa2ZgaFBzYmBmcnZmcXppYm5mcGZydmJvd3RqYGYzLzMzM1B3YnF3c2JtZm9wbG1kcHFsdm1nZmpka3dwa2pld3RscXdrc2xwd3BvZmJncHRmZmhwYnVsamd3a2ZwZm5qb2Zwc29ibWZwbmJxd2Jvc2tic29ibXduYnFocHFid2Zwc29ienBgb2JqbnBib2Zwd2Z7d3Bwd2JxcHRxbG1kPyxrMD13a2ptZC1scWQsbnZvd2prZmJxZ1NsdGZxcHdibWd3bGhmbXBsb2pnK3dranBhcWptZHBranNwcHdiZWV3cWpmZ2Bib29wZXZvb3plYmB3cGJkZm13V2tqcCMsLC4uPWJnbmptZmR6c3dGdWZtdzI2c3s4Rm5iam93cXZmIWBxbHBwcHNmbXdhb2xkcGFseyE9bWx3ZmdvZmJ1ZmBram1icGp5ZnBkdmZwdz8sazc9cWxhbHdrZmJ1endxdmYvcGZ1Zm1kcWJtZ2Bxam5mcGpkbXBidGJxZmdibWBmc2ticGY9PyIuLmZtXFxWUCUgMDo4MTMzc3tcXG1ibmZvYndqbWZtaWx6Ymliey1id2psbXBuandrVi1QLSNrbG9ncHNmd2Zxam1namJtYnUhPWBrYmptcGBscWZgbG5mcGdsam1kc3FqbHFQa2JxZjI6OjNwcWxuYm1vanB3cGlic2JtZWJvb3B3cWpib2x0bWZxYmRxZmY/LGsxPWJhdnBmYm9mcXdsc2ZxYiEuLCxUYGJxZ3Bram9vcHdmYm5wU2tsd2x3cXZ3a2BvZmJtLXNrczxwYmptd25md2Jvb2x2anBuZmJtd3NxbGxlYXFqZmVxbHQhPWRmbXFmd3F2YGhvbGxocFVib3ZmRXFibmYtbWZ3LC4uPVx0P3dxeiN4XHR1YnEjbmJoZnBgbHB3cHNvYmptYmd2b3dydmZwd3dxYmptb2JhbHFrZm9zcGBidnBmbmJkamBubHdscXdrZmpxMTYzc3tvZmJwd3B3ZnNwQGx2bXdgbHZvZ2RvYnBwcGpnZnBldm1ncGtsd2ZvYnRicWdubHZ3a25sdWZwc2JxanBkanVmcGd2d2Brd2Z7YnBlcXZqd212b28vf39YXjh3bHMhPVx0PyIuLlNMUFchbGBmYm0/YXEsPWVvbGxxcHNmYmhnZnN3ayNwanlmYWJtaHBgYndga2BrYnF3MTNzezhib2pkbWdmYm9wdGx2b2c2M3N7OHZxbz4hc2JxaHBubHZwZk5scHcjLS0tPyxibmxtZGFxYmptYWxneiNtbG1mOGFicGZnYGJxcXpncWJld3FmZWZxc2JkZlxca2xuZi1uZndmcWdmb2J6Z3FmYm5zcWx1Zmlsam13Pyx3cT1ncXZkcD8iLi4jYnNxam9qZ2Zib2Jvb2ZtZntiYHdlbHF3a2BsZ2Zwb2xkamBVamZ0I3BmZm5wYW9ibWhzbHF3cCMrMTMzcGJ1ZmdcXG9qbWhkbGJvcGRxYm13ZHFmZmhrbG5mcHFqbWRwcWJ3ZmcwM3N7OHRrbHBmc2JxcGYrKjghI0FvbGBob2ptdntpbG1mcHNqe2ZvJCo4IT0qOGplKy5vZmV3Z2J1amdrbHFwZkVsYHZwcWJqcGZhbHtmcFdxYmBoZm5mbXc/LGZuPWFicSE9LXBxYD53bHRmcWJvdz4hYGJhb2ZrZm1xejE3c3s4cGZ3dnNqd2JvenBrYnFzbmptbHF3YnB3ZnRibXdwd2tqcC1xZnBmd3RrZmZvZGpxb3AsYHBwLDIzMyY4YG92YXBwd3ZlZWFqYW9mdWx3ZnAjMjMzM2hscWZifio4Dlx0YWJtZ3BydmZ2Zj4jeH44OzNzezhgaGptZHgOXHRcblxuYmtmYmdgb2xgaGpxanBrb2poZiNxYndqbHB3YndwRWxxbiF6YmtsbCpYM144QmFsdndlam1ncD8sazI9Z2ZhdmR3YnBocFZRTyM+YGZvb3B+KisqODIxc3s4c3FqbmZ3Zm9vcHd2cW1wM3s1MzMtaXNkIXBzYmptYWZiYGt3YntmcG5qYHFsYm1kZm8uLj0/LGRqZXdwcHdmdWYub2ptaGFsZ3otfio4XHRcbm5sdm13IysyOjpFQlI/LHFsZGZxZXFibWhAb2JwcDE7c3s4ZWZmZ3A/azI9P3BgbHd3d2Zwd3AxMXN7OGdxam1oKiN/fyNvZnRqcHBrYm9vIDMwOjgjZWxxI29sdWZndGJwd2YzM3N7OGliOQ9ucGpubG0/ZWxtd3Fmc296bmZmd3B2bXdmcWBrZmJzd2pka3dBcWJtZyojIj4jZ3FmcHBgb2pzcHFsbG5wbG1oZnpubGFqb25iam0tTWJuZiNzb2J3ZmV2bW16d3FmZnBgbG4sITItaXNkdG5sZ2ZzYnFiblBXQlFXb2ZldyNqZ2dmbS8jMTMyKjhcdH5cdGVscW4tdWpxdnBga2JqcXdxYm1wdGxxcHdTYmRmcGp3amxtc2J3YGs/Ii4uXHRsLmBiYGVqcW5wd2x2cXAvMzMzI2JwamJtaigoKnhiZ2xhZiQqWDNeamc+MjNhbHdrOG5mbXYjLTEtbmotc21kIWhmdWptYGxiYGtAa2pvZ2FxdmBmMS1pc2RWUU8qKC1pc2R/cHZqd2Zwb2pgZmticXF6MjEzISNwdGZmd3dxPQ5cdG1ibmY+Z2pmZGxzYmRmI3B0anBwLi49XHRcdCBlZWU4IT1PbGQtYGxuIXdxZmJ3cGtmZncqIyUlIzI3c3s4cG9mZnNtd2Ztd2Vqb2ZnaWI5D29qZz4hYE1ibmYhdGxxcGZwa2x3cC5hbHsuZ2Zvd2JcdCVvdzhhZmJxcDk3O1k/Z2J3Yi5xdnFibz8sYj0jcHNmbWdhYmhmcXBrbHNwPiMhIThza3MhPWB3amxtMjBzezhhcWpibWtmb29scGp5Zj5sPiYxRSNpbGptbmJ6YWY/am5kI2puZCE9LyNlaXBqbmQhIyEqWDNeTldsc0FXenNmIW1mdG96R2JtcGhgeWZga3dxYmpvaG1sdHA/LGs2PWViciE9eWsuYG0yMyo4XHQuMiEqOHd6c2Y+YW92ZnB3cXZvemdidWpwLWlwJDg9Dlx0PyJwd2ZmbyN6bHYjazE9Dlx0ZWxxbiNpZnB2cDIzMyYjbmZtdi0OXHRcbg5cdHRib2ZwcWpwaHB2bmZtd2dnam1kYS5vamh3ZmJga2RqZSEjdWZkYnBnYm1waGZmcHdqcGtyanNwdmxuanBsYXFmZ2ZwZ2ZmbXdxZndsZ2xwc3ZmZ2ZiL11scGZwdy9Nd2pmbWZrYnB3Ymx3cWxwc2Jxd2ZnbG1nZm12ZnVsa2JgZnFlbHFuYm5qcG5sbmZpbHFudm1nbGJydi9BZy9BYnBwL19vbGJ6dmdiZWZga2J3bGdicHdibXdsbmZtbHBnYndscGx3cWJwcGp3amxudmBrbGJrbHFib3ZkYnFuYnpscWZwd2xwa2xxYnB3Zm1mcWJtd2ZwZWx3bHBmcHdicHNiL0FwbXZmdWJwYm92Z2VscWxwbmZnamxydmpmbW5mcGZwc2xnZnFga2pvZnBmcS9NdWZgZnBnZmBqcWlscC9FZnB3YnF1Zm13YmRxdnNsa2Zga2xmb29scHdmbWRsYm5qZGxgbHBicG1qdWZvZGZtd2ZuanBuYmJqcWZwaXZvamx3Zm5icGtiYGpiZWJ1bHFpdm1qbG9qYXFmc3Ztd2xhdmZtbGJ2d2xxYmFxam9hdmZtYndme3dsbmJxeWxwYmFmcW9qcHdib3ZmZGxgL19ubGZtZnFsaXZmZGxzZnEvVmtiYWZxZnB3bHptdm1gYm52aWZxdWJvbHFldmZxYm9qYXFsZHZwd2JqZHZib3Vsd2xwYGJwbHBkdi9BYnN2ZmdscGxubHBidWpwbHZwd2ZnZ2ZhZm1tbGBrZmF2cGBiZWJvd2JmdnFscHBmcWpmZ2pga2xgdnFwbGBvYnVmYGJwYnBvZi9fbXNvYnlsb2JxZGxsYXFicHVqcHdiYnNsemxpdm13bHdxYndidWpwd2xgcWZicWBibnNsa2ZubHBgam1gbGBicWRsc2pwbHBscWdmbWtiYGZtL01xZmJnanBgbHNmZ3FsYGZxYGJzdmZnYnNic2ZvbmZtbHEvVndqb2BvYnFsaWxxZGZgYm9vZnNsbWZxd2JxZ2ZtYmdqZm5icWBicGpkdmZmb29icHBqZG9sYGxga2ZubHdscG5iZ3FmYG9icGZxZnB3bG1qL11scnZmZ2JzYnBicWFibWBsa2ppbHB1amJpZnNiYW9sL0Vwd2Z1amZtZnFmam1sZ2ZpYnFlbG1nbGBibWJvbWxxd2ZvZndxYmBidnBid2xuYnFuYm1scG92bWZwYnZ3bHB1am9vYnVmbWdsc2ZwYnF3anNscHdmbWRibmJxYGxvb2Z1YnNiZ3Fmdm1qZ2x1Ym5scHlsbWJwYm5hbHBhYm1nYm5icWpiYmF2cGxudmBrYnB2YWpxcWpsaWJ1anVqcWRxYmdsYGtqYGJib28vQWlsdWZtZ2pga2JmcHdibXdib2ZwcGJvanFwdmZvbHNmcGxwZWptZnBvb2JuYmF2cGBsL0Vwd2Jvb2ZkYm1mZHFsc29ieWJrdm5scXNiZGJxaXZtd2JnbGFvZmpwb2JwYWxvcGJhYi9dbGtiYW9ib3Zga2IvbXFmYmdqYGZtaXZkYnFtbHdicHVib29mYm9vL01gYnFkYmdsb2xxYmFiaWxmcHcvRWR2cHdsbmZtd2ZuYnFqbGVqcW5iYGxwd2xlamBrYnNvYndia2xkYnFicXdmcG9memZwYnJ2Zm9udnBmbGFicGZwc2xgbHBuandiZ2BqZm9sYGtqYGxuamZnbGRibWJxcGJtd2xmd2JzYmdmYWZwc29iemJxZmdmcHBqZndmYGxxd2ZgbHFmYmd2Z2JwZ2ZwZmx1amZpbGdmcGZiYmR2YnAlcnZsdzhnbG5iam1gbG5ubG1wd2J3dnBmdWZtd3BuYnB3ZnFwenB3Zm5iYHdqbG1hYm1tZnFxZm5sdWZwYHFsb292c2did2Zkb2xhYm9uZmdqdm5lam93ZnFtdm5hZnFga2JtZGZxZnB2b3dzdmFvamBwYHFmZm1ga2xscGZtbHFuYm93cWJ1Zm9qcHB2ZnBwbHZxYGZ3YnFkZndwc3FqbWRubGd2b2ZubGFqb2ZwdGp3YGtza2x3bHBhbHFnZnFxZmRqbG1qd3Bmb2VwbGBqYm9iYHdqdWZgbG92bm1xZmBscWdlbG9vbHR3andvZj1mandrZnFvZm1kd2tlYm5qb3plcWpmbWdvYnpsdndidndrbHFgcWZid2ZxZnVqZnRwdm5uZnFwZnF1ZnFzb2J6Zmdzb2J6ZnFme3NibWdzbG9qYHplbHFuYndnbHZhb2ZzbGptd3BwZnFqZnBzZnFwbG1vanVqbWRnZnBqZG1ubG13a3BlbHFgZnB2bWpydmZ0Zmpka3dzZmxzb2ZmbWZxZHptYnd2cWZwZmJxYGtlamR2cWZrYnVqbWRgdnB3bG5sZWVwZndvZnd3ZnF0am1nbHRwdmFuandxZm1nZnFkcWx2c3B2c29sYmdrZmJvd2tuZndrbGd1amdmbHBwYGtsbG9ldnd2cWZwa2JnbHRnZmFid2Z1Ym92ZnBMYWlmYHdsd2tmcXBxamRrd3BvZmJkdmZga3FsbmZwam5zb2ZtbHdqYGZwa2JxZmdmbWdqbWRwZmJwbG1xZnNscXdsbW9qbWZwcnZicWZhdnd3bG1qbmJkZnBmbWJhb2ZubHVqbWRvYndmcHd0am13ZnFFcWJtYGZzZnFqbGdwd3FsbWRxZnNmYndPbG1nbG1nZndiam9lbHFuZmdnZm5ibWdwZmB2cWZzYnBwZmd3bGRkb2Zzb2JgZnBnZnVqYGZwd2J3amBgandqZnBwd3FmYm56Zm9vbHRid3diYGhwd3FmZndlb2pka3dramdnZm1qbWVsIT1sc2ZtZmd2cGZldm91Ym9vZnpgYnZwZnBvZmJnZnFwZmBxZndwZmBsbWdnYm5iZGZwc2xxd3Bme2Bmc3dxYndqbWRwamRtZmd3a2ptZHBmZWVmYHdlamZvZ3Bwd2J3ZnBsZWVqYGZ1anB2Ym9mZ2p3bHF1bG92bmZRZnNscXdudnBmdm5ubHVqZnBzYnFmbXdiYGBmcHBubHB3b3pubHdrZnEhI2pnPiFuYnFoZndkcWx2bWdga2JtYGZwdnF1ZnphZmVscWZwem5hbG9ubG5mbXdwc2ZmYGtubHdqbG1qbXBqZ2ZuYnd3ZnFAZm13ZnFsYWlmYHdme2pwd3Buamdnb2ZGdnFsc2ZkcWx0d2tvZmRiYHpuYm1tZnFmbWx2ZGtgYnFmZnFibXB0ZnFscWpkam1zbHF3Ym9gb2pmbXdwZm9mYHdxYm1nbG5gb2xwZmd3bHNqYHBgbG5qbWRlYndrZnFsc3dqbG1wam5zb3pxYmpwZmdmcGBic2Zga2xwZm1ga3ZxYGtnZmVqbWZxZmJwbG1gbHFtZnFsdndzdnduZm5scXpqZXFibmZzbG9qYGZubGdmb3BNdm5hZnFndnFqbWRsZWVmcXBwd3pvZnBoam9vZmdvanB3ZmdgYm9vZmdwam91ZnFuYnFkam1nZm9md2ZhZnd3ZnFhcWx0cGZvam5qd3BEb2xhYm9wam1kb2Z0amdkZndgZm13ZnFhdmdkZndtbHRxYnNgcWZnandgb2JqbnBmbWRqbWZwYmVmd3pga2xqYGZwc2pxancucHd6b2Zwc3FmYmduYmhqbWRtZmZnZmdxdnBwamJzb2ZicGZme3dmbXdQYHFqc3dhcWxoZm1ib29sdHBga2JxZGZnanVqZ2ZlYmB3bHFuZm5hZnEuYWJwZmd3a2ZscXpgbG1lamRicWx2bWd0bHFoZmdrZm9zZmdAa3ZxYGtqbnNiYHdwa2x2b2dib3RienBvbGRsISNhbHd3bG5vanB3IT0qeHVicSNzcWZlantscWJtZGZLZmJnZnEtc3ZwaytgbHZzb2ZkYnFnZm1hcWpnZGZvYnZtYGtRZnVqZnR3YmhqbWR1anBqbG1vand3b2ZnYndqbWRBdnd3bG1hZmJ2d3p3a2ZuZnBlbHFkbHdQZmJxYGtibWBrbHFib25scHdvbGJnZmdAa2JtZGZxZnd2cW1wd3FqbWRxZm9sYmdObGFqb2ZqbWBsbmZwdnNzb3pQbHZxYGZscWdmcXB1amZ0ZmclbWFwczhgbHZxcGZCYWx2dyNqcG9ibWc/a3dubyNgbGxoamZtYm5mPiFibmJ5bG1ubGdmcW1iZ3VqYGZqbT8sYj05I1drZiNnamJvbGRrbHZwZnBBRkRKTSNOZntqYGxwd2Jxd3BgZm13cWZrZmpka3diZ2dqbWRKcG9ibWdicHBmd3BGbnNqcWZQYGtsbG9mZWVscXdnanFmYHdtZmJxb3puYm12Ym9QZm9mYHctXHRcdExtZmlsam1mZ25mbXYhPVNram9qc2J0YnFncGtibWdvZmpuc2xxd0xlZWpgZnFmZGJxZ3Boam9vcG1id2psbVBzbHF3cGdmZHFmZnRmZmhveiMrZi1kLWFma2ptZ2dsYHdscW9sZGRmZ3ZtandmZz8sYT0/LGFmZGptcHNvYm13cGJwcGpwd2Jxd2pwd2pwcHZmZzAzM3N7f2BibWJnYmJkZm1genBga2ZuZnFmbmJqbUFxYnlqb3BibnNvZm9sZGwhPWFmemxtZy5wYGJvZmJgYGZzd3BmcXVmZ25icWptZkVsbHdmcWBibmZxYj8sazI9XHRcXGVscW4hb2ZidWZwcHdxZnBwISMsPQ5cdC1kamUhI2xtb2xiZ29sYmdmcUx7ZWxxZ3BqcHdmcXB2cXVqdW9qcHdmbWVmbmJvZkdmcGpkbXBqeWY+IWJzc2Zib3dme3chPW9mdWZvcHdrYm1ocGtqZGtmcWVscWBmZ2Jtam5ib2JtemxtZkJlcWpgYmJkcWZmZ3FmYGZtd1NmbHNvZj9hcSMsPXRsbWdmcXNxamBmcHd2cW1mZ39/I3h+OG5iam0hPWptb2ptZnB2bWdienRxYnMhPWViam9mZ2BmbXB2cG5qbXZ3ZmFmYmBsbXJ2bHdmcDI2M3N7f2Zwd2J3ZnFmbmx3ZmZuYmpvIW9qbWhmZ3FqZGt3OHBqZG1ib2VscW5ibzIta3dub3BqZG12c3Nxam1gZmVvbGJ3OS1zbWQhI2VscXZuLUJgYGZwcHNic2ZxcHBsdm1ncGZ7d2ZtZ0tmamRrd3BvamdmcVZXRS47ISVibnM4I0FmZWxxZi0jVGp3a3B3dmdqbGx0bWZxcG5ibWJkZnNxbGVqd2lSdmZxemJtbXZib3NicWJucGFsdmRrd2Vibmx2cGRsbGRvZm9sbWRmcWooKCojeGpwcWJmb3BiemptZGdmYGpnZmtsbmYhPWtmYmdmcWZtcHZxZmFxYm1ga3NqZmBmcGFvbGBoOHB3YndmZ3dscyE9P3FiYGptZHFmcGp5Zi4uJWR3OHNiYGp3enBme3Zib2F2cWZidi1pc2QhIzIzLzMzM2xhd2JqbXdqd29mcGJubHZtdy8jSm1gLWBsbmZnem5mbXYhI296cWpgcHdsZ2J6LWptZ2ZmZ2Bsdm13elxcb2xkbC1FYm5qb3pvbGxoZmdOYnFoZndvcGYjamVTb2J6ZnF3dnFoZnoqOHVicSNlbHFmcHdkanVqbWRmcXFscXBHbG5iam1+Zm9wZnhqbXBmcXdBb2xkPyxlbGx3ZnFvbGRqbS1lYnB3ZnFiZGZtd3A/YWxneiMyM3N7IzNzcWJkbmJlcWpnYnppdm1qbHFnbG9vYnFzb2JgZmdgbHVmcXBzb3Zkam02LzMzMyNzYmRmIT1hbHB3bG0td2ZwdytidWJ3YnF3ZnB3ZmdcXGBsdm13ZWxxdm5wcGBrZm5iam1nZnsvZWpvb2ZncGticWZwcWZiZ2ZxYm9mcXcrYnNzZmJxUHZhbmp3b2ptZiE9YWxneiE9XHQpI1drZldrbHZka3BmZmptZGlmcXBmek1mdHA/LHVmcWplemZ7c2Zxd2ptaXZxenRqZ3drPkBsbGhqZlBXQlFXI2JgcWxwcFxcam5iZGZ3a3FmYmdtYndqdWZzbGBoZndhbHshPVx0UHpwd2ZuI0didWpnYGJtYGZxd2Jhb2Zwc3FsdWZnQnNxam8jcWZib296Z3FqdWZxandmbiE9bmxxZiE9YWxicWdwYGxvbHFwYGJuc3ZwZWpxcHcjf38jWF44bmZnamItZHZqd2JxZWptanBrdGpnd2s5cGtsdGZnTHdrZnEjLXNrcyEjYnBwdm5mb2J6ZnFwdGpvcGxtcHdscWZwcWZvamZlcHRmZ2ZtQHZwd2xuZmJwam96I3psdnEjUHdxam1kXHRcdFRram93YnpvbHFgb2ZicTlxZnBscXdlcWZtYGt3a2x2ZGshKiMoIyE/YWxnej1hdnpqbWRhcWJtZ3BOZm5hZnFtYm5mIT1sc3NqbWRwZmB3bHE2c3s4IT11cHNiYGZzbHB3ZnFuYmlscSNgbGVlZmZuYnF3am1uYnd2cWZrYnNzZm0/LG1idT1oYm1wYnBvam1oIT1KbmJkZnA+ZWJvcGZ0a2pvZiNrcHNiYGYzJWJuczgjXHRcdEptIyNzbHRmcVNsb3Boai5gbG9scWlscWdibUFsd3dsblB3YnF3Iy5gbHZtdzEta3dub21mdHAhPTMyLWlzZExtb2ptZi5xamRrd25qb29mcXBmbWpscUpQQU0jMzMvMzMzI2R2amdmcHVib3ZmKmZgd2psbXFmc2JqcS17bm8hIyNxamRrd3Ata3duby5hb2xgaHFmZEZ7czlrbHVmcXRqd2tqbXVqcWRqbXNrbG1mcD8sd3E9DnZwam1kI1x0XG51YnEjPSQqOFx0XG4/LHdnPVx0Pyx3cT1cdGFia2JwYmFxYnBqb2Rib2ZkbG5iZHpicXNsb3BoanBxc3BoajRdNEM1ZFxiVEFcbnprXHZCbFxiUX9cdlVtBUd4XGJTTVxubUNcYlRBXHR3UVxuZH1cYldAXGJUbFxiVEZcdGlAXHRjVFx2Qk1cdnxqBEJWXHRxd1x0Y0NcYldJXG5wYVx0Zk1cbntaBXtYXGJURlxiVlZcYlZLXHR/bQRrRlx0W11cYlBtXGJUdlxuc0lcdnBnXHRbSVxiUXAEbXhcdl9XXG5eTVxucGVcdlF9XHZHdVxuZWxcbnBlBENoBEJWXGJUQVx0U29cbnprXHZHTFx2eERcbmRbBUp6BU1ZXGJRcARsaVxuZmxcbnBDBXtCBU50XHZ3VFx0aV9cYlRnBFFRXG58cFx2WE5cYlFTXHZ4RARRQ1xiV1pcdHBEXHZWU1xiVFcFTnQEWWhcbnp1BEtqBU59XHR3clx0SGFcbl9EXHRqYFx2UX1cdldwXG54WgR7Y1x0amlcdEJVXG5iRARhfFx0VG5cdHBWXG5aZFxubUNcdkVWBXtYXHRjfVx0VG9cYldsXGJVZFx0SVFcdGNnXHZ4c1xuWFdcdHdSXHZla1x0Y31cdF15XHRKblxucnBcbmVnXG5wVlxuelxcBXtXXG5wbFxuelxcXG56VVx0UGNcdGB7XGJWQFxuY3xcYlJ3XHRpX1xiVmJcbndYXHRIdgRTdVxiVEZcdl9XXHZXc1x2c0kFbX9cblRUXG5kY1x0VVNcdH1mXHRpWlxiV3pcdGN9BE1EXHRCZVx0aURcdkBAXGJUbFxiUHZcdH10BFN3BE1gXHZuVVx0a1dcdmVkXG5xb1x2eFlcdEF8XGJUelx2eWAEQlIEQk1cdGlhBFhVXG55dQRuXlx0ZkxcdGlJXG5YV1x0ZkRcYld6XGJXQFx0eWpcdH9tXHRhdlx0Qk5cdmJcXFx0cERcYlRmXG5ZW1x0Sm5cYlF5XHRbXlx2V2Ncdnl1BERsBENKXHZXalx2SFJcdGBWXHZ1V1x0UXlcbnBAXHZHdQVwbARKbVxiV1tcbkxQXG54Q1xuYG1cdHdRBXVpBX9SXG5iSVx0d1FcdEJaXHRXVgRCUlxucGdcdGNnBXRpBENXXG5feVx0UmdcYlFhXHZRQlx2V2NcblliBWxlXG5nRQRTdVxuTFtcdFF/XHRlYVx0ZGpcdl1XXG5ifgRNYFx0d0xcYlRWXGJWSFxudH9cbnBsXHR8YgVzX1xiVXxcYlRhBG9RBWx2BFNrBE1gXGJUdlx2S31cbmZsXHRjQwRvUQRCUlx0SGtcdHxkXGJRcFx0SEtcdEJaXHZIUlxiUHZcdkx4XHZFWlxiVH9cYlR2XHRpRAVvRAVNVVx2d0IEU3UFa2AEU3RcbnRDXHRQbFx0S2dcbm9pXHRqWVx2eFkEaH1cbnprXGJXWlx0f21cdmVgXHRUQlx0ZkVcbnprXHRgegRZaFxuVnxcdEhLXHRBSlx0QUpcYlVMXHRwXFxcdHFsXG5ZYwRLZFxuZnkEWWhcdFtJXHZEZwRKbVxuXW5cbmxiXGJVZFxue1pcdGx1XHRmcwRvUVxiVFcESm1cdndCXHRlYQRZaARCQ1x0c2JcdFRuXG56VVxuX3lcdnhZXHRRXVxuZ3cEbXRcdE9cXFxudGJcYldXXGJReVx0bUlcdFZbXG55XFxcbmFCXHZSYlx0d1Fcbl1RBFFKXGJXZ1x2V2FcYlFqXG50Q1xiVkhcblltXHZ4c1xiVktcbmVsXGJXSVx2eFkEQ3FcbnRSXHZIVlxiVGxcYlZ3XHRheVxiUWFcYlZWXHR9dFx0ZGpcbnJ8XHRwXFxcdHdSXG57aVxuVFRcdFtJXHRpW1x0QUpcdnhzXHZfV1x0ZHtcdlF9XHRjZ1x0VHpcdEF8XHRDalx2TG0FTn0FbX9cbmJLXHRkWlx0cFxcXHRgVlx0c1ZcbnBAXHRpRFx0d1FcdlF9XGJUZgVrYQRKbVx2QEBcYlZgXHR6cFxuQE4EU3dcdGlJXHRjZ1xub2kEU3VcYlZ3BGxvBEN5XHRjfVx2YlxcXHRzVQRCQVxiV0lcYlRmXG54U1x0VnBcbmR8XGJUVlx2YkNcdE5vBUp1XG5UQ1x0fGBcbntaXHREXVxiVXxcdGN9BWxtXGJUbFx0QnZcdFBsXHRjfVxiUXBcdH9tXG5Ma1x0a2pcbkBOBFNiBEtPXHRqX1x0cFxcXG56VVxiVGxcYlRnXGJXSVx0Y2YEWE9cYldXXG5kegRsaVx0Qk5cbmRbXGJXTwRNRFx2S0NcdGRqXHRJX1xiVlZcbnlcXFx2TG0FeGxcdHhCXHRrVlx2YlxcXHZKV1x2VlNcdFZ4XHZ4RFx0ZHsETURcYlRhXHR8YFx2UHoEUn1cdldzBEJNXG5zSQRDTlxiVGEESm1cbnBlXHRpX1xucFZcbnJoXHRSZFx0SHZcbn5BXG54Ulx2V2hcdldrXG54U1x2QXpcdndYXG5iSQRvUVx0ZndcbnFJXG5WfFxudW4Fen9cdnBnXHRkXFxcdm9BBXtEXHRpXwV4QlxiVH9cdGBWBXFyXHRUVARnXQRDQVx2dVJcdFZKXHRUYFxucHdcdlJiXHRJX1xuQ3gEUm9cdnNJBENqBEtoXHRCdlx0V1YEQkIFb0QFe0RcbmhjBEttXHZeUlx0UUVcbntJXG5wQFxuY3wFR3RcdGN9BERsXG56VQVxTlx0c1YFa31cdEhoXHZ8alxucW8FdXxcdFFdXHZlawV/WgRNYARTdFxucGVcdGRqXGJWR1x2ZUVcdH9tXHZXYwR8SVxuW1dcdGZMXGJUf1x0QloEU3VcdkthBENxBU50BFlbXG5xSVxiVHZcdGZNXHRpQFx0fWYEQlxcXHRReVx2QmxcYldnBFhEBWtjXHZ4W1xiVlZcdFFdXHR/YVx0UHlcdnhEXG5mSVx0fWYFb0RcdGRqXHRTRwVsc1x0fkQEQ05cbntaXHRcXHZcbl9EXG5oY1x2eF8EQ1tcdEFKXG5MTVx0VngEQ0lcdGJqXHRjXlx0Y0ZcbnRDBFN4XHR3cgRYQVxiVVxcXHR8YVx2S1xcXGJUVlxiVmpcbmR8XHRmcwRDWFxudGJcYlJ3XHRWeFx0QUVcdEF8XGJUfwVOdFx2RGdcdFZjXGJUbARkQFxucG9cdH9NXHRjRlxucGVcdGlaXHRCb1xiU3FcbmZIBGxgXGJUeFxiV2ZcdEhFXHZGe1x0Y09cdGZEXG5sbVx2ZlpcbmxtXHZlVVx0ZEcEQkhcYlRWXHRTaQVNV1xud1hcbnpcXFx0XFxjBENYXG5kfVx0bH1cYlFwXGJUVlx0Rn5cYlF/XHRgaVxuZ0AFbk9cYlVkXGJUbFxuTFtcdHdRXHRqaVxudENcdHxKXG5MVVxuYUJcdnhZBEtqXHRBSgV1Tlx0aVtcbnBlBFNrXHZEZ1x2eF1cYlZiXGJWVlxuZWFcdGtWXG5xSVxiVGEEU2tcbkFPXHRwRFxudGJcbnRzXG55aVxiVmdcdGlfXHZfV1xuTGsFTnRcdHlqXHRmTQRSf1x0aUlcYlRsXHZ3WFx0c1Zcdk1sXG55dVx0QUpcYlZqBEtPXHRXVlx2QX1cdld/XG5ycFx0aURcdnxvBWx2XHZzSQRCTVx0ZH5cdENVXGJWYgRlVlxucENcdndUXHRqYFx0Y31cdnhzXHZwc1x2dmhcdFdWXHZHZ1x2QWVcdlZLXHZdV1x0cmdcdldjBUZgXHRCclx2YlxcXHRkWlxiUXBcbnFJBGtGXG5Ma1x2QVJcYldJXGJUZ1x0YnNcdGR3XG57TFxuX3lcdGlaXGJUQVx0bGdcYlZWXGJUbFx0ZGtcbmBrXHRhe1x0aV8Fe0EFd2pcdHdOXHZAQFxiVGVcdGlfXG5fRFx0d0xcbkFIXHZpS1x2ZWtcbltdXHRwX1x0eWpcYlR2XHRVU1x0W3JcbntJXG5wcwVHdFx2VktcbnBsBFN9XHZXUFx0fGQETURcdkhWXGJUfwRSfQRNYFxiVFZcYlZIBWx2BENoXGJXWwRLZVx0Untcdl5SXHRhYlx0QlpcdFZBXHRCYFxuZHxcbmhzBEtlXHRCZQRPaVx0UntcdGRcXAVuQlxiV1pcdGRaXHRWSgVPc1x0f20EdVFcdmhaBFFABFFRXG5mSVxiV1sEQlxcBGxpXG56VVxuTWQETWBcbnhTXGJWVlxuXFx9XHZ4RFx0f21cYlRwBElTXG5jfFx0a1YFaX5cdFZ7XHZoWlx0fGJcYld0XG5AUlx2b0Fcdm5VXGJXSVx0ZWFcdEJgXHRpRFx0Y31cdFR6BEJSXHZRQgVOalx0Q1BcdFtJXGJUdlx0YFcFdU5cdnBnXHZwZ1x2V2NcdGlUXHRic1x0d0xcdFVfXHRjXFxcdHxoXHZLYVx0TnJcdGZMXG5xfFxuenVcbnpcXFx0TnJcYlVnXHR8YgRtYFxiVHZcbnlkXG5ycFxiV2ZcdFVYBEJWXG56a1xuZH1cdHdRXHR9ZgRDZVx2ZWRcYlRXXGJTQlxueFVcdGNuXGJUYlxuZX9cdGFcXFx0U0dcYlV8XG5wVlxuTlxcBEtuXHZuVVx0QXRcdHBEXHZeUlx2SXIEYltcdFJ7XHRkRVx2eERcdldLXHZXQVxiUUxcYldABFN1XGJVZFxuRE1cdFBjBENBBERsBG9RXHRIcwV3aQR1Ylxuf2FcYlFwBU9iXG5MUFxiVGwEWVtcdkt9XHRBSlxiUX8Ebl5cdnNBXGJTTVxucU1cYldaXG5eV1x2ensEU3xcdGZEXGJWS1xiVHZcYlB2BEJCXHRDUARkRlx0aWRcdnhzBG14XHZ3c1x0Y0NcbnRDXHR5YwVNYFx2V39cbnJoXGJRcFx2eEQEXFxvXG5zSQRfa1xuenUEa0ZcdGZEBFhzBFhPXHRqcFxiVHYEQlMFe0JcdEJyXG56UVxuYklcdGN7BEJEBEJWBW5PXGJURlx0Y2EFSmRcdGZMXHRQVlx0SV9cbmxLBGBvXHR3WFxucGFcdGd1XGJQfQV7XlxiV2ZcbntJXHRCTlxucGEES2xcdnBnXHRjblx0ZkxcdnZoBENxXGJUbFx2blVcYlNxBENtXHR3UlxiVUpcbnBlXG55ZFxuWWcEQ3lcdktXXHRmRFxuZWEEb1FcdGpfXHRCdgRuTVx2SURcYlRhXG56QQVwbFxuXW5cYlRhXHRSe1x0ZnJcbl95XGJVZwV7WAVra1x2eEQEfEkFeGxcbmZ5BENlXHZ3QlxuTGtcdmRdXG5vaVxufWhcdFFdXG5wZVxiVncESGsET1FcbnprXHRBSlxucFZcYlB2XG55XFxcdEF7BE9pXGJTQgRYQVx2ZUVcdGpwXG5xfVx0aUQFcU5cdl5SXHR/bVx0aVpcdEJyXGJWZ1xub2lcblxcWFx0VV9cbmN8XHZIVlxiVGZcdFRuBFxcTgRcXE5cbnVCBWx2XG55dVx0VGRcYlRmXGJQTFx2XVdcdGRHXG5BYFxud15cbmdJXG5wZVx0ZHdcbnpcXAVpYVxiV1pcdGNGBEptXG57WlxiV08EX2sERGYEUlJcdGRcXFxiVlZcdnhzBEJOBXRpBGxtXHRUZFx0XXlcdkhWXHRTb1x2fGoEWFhcdEF8XHZaXlx2R3VcYlRXBU1gBGtGXHZoWlx2VktcdGRHXHZCbFx0YXlcbnhVBXFFBW5PXGJWd1xucUkEQ1hcbmV/XHRQbFxiV09cdkxtXHRkTAV1SARDbVx0ZFQEZm5cdndCBWthXHZuVVxuQE1cbnlUXHRIdlx0XFx9BEtoXHRkfgRZaAVrfVxuZVJcdGRcXFxiV0lcdHxiXHRIS1x0aURcYlRXBU1ZXG5wbFxiUV9cdHdyXHZBeFx0SEVcYlRnXGJTcQV2cFx2YlxcXGJXT1xuT2xcbnNJXG5meVx2SURcdFxcY1xue1pcbl5+XG5wZVxuQU9cdFRUXHZ4dgRrX1xiV09cdnxqXHZ3Qlx0UXlcdGlAXHRQbFx0SGFcdGRaBWt9BHJhXHRVVFx2SmNcdmVkXG5wQFx0UU5cbmR8XHRralx0SGsETWBcbm9pXHR3clx0ZFxcXG5scVxub19cbmxiXG5MW1x0YWMEQkIEQkgEQ21cbnBsXHRJUVxiVktcdnhzXG5gZVx2aUtcbnBhBE9pXHRVU1xiVHBcdGZEXG5QRwVrawRYQVxuelxcXG5lZ1x2V2hcdHdSBXFOXG5xU1x0Y24EbG9cbnhTXG5eV1x0QlVcbnR/XHRIRVx0cFxcXHRmRlx0ZndcYlZWXGJXQFx0YWtcdlZLBWxzXHRWSlxiVlZcdmVFBFxcb1xueVhcblltBE1gBWxMXG5kfFxuemtcdEF7BXNFXHR3UQRYVFxudH9cdFBsXHRdeVx2d1QFe3AETURcdmJcXFx0UV0ES2pcdEpuXG5BSFx2UmJcdEJVXHRIS1x0XFxjXG5mSQVtf1xucU1cbkBSXHRTb1xub2kEQlRcdEh2XG5feQRLaFx0QlpcdF1pXGJVSlx0VnsEU3JcbmJJXHZHZ1x0YV9cYlRSXG5mSVxuZmxcdFtLXHRJSQRTfFx2dVdcdGlJXGJXSVxucUlcdnxqBEJWXGJWZ1xiV1oEa0ZcdnhdXGJUQVx0YWJcdGZyXHRpQFx0SmRcdEpkXHZwc1xuQU9cYlRhBXh1XHRpRFxuemtcdHxkXHR8YFxiV1tcdGxQXHRkR1xiVlZcdnd9XHZxT1x0aVtcYlF/XGJUelx2VkZcdHdOBXRzXHRkd1xiVHZcbmVTXG5naVx0TnIFeVNcbnBlXGJWVlxiU3FcbmBtXHR5alx0QlpcdldYXGJTQlx0Y1xcXG5VUlx0W0pcdGNfBG5NXGJXUVx2QXhcbk1kXHRCcgV1aVx2eFlcYlNNXHZXY1x2fGpcdnhzXHR9UVx0Qk9cYlBMXGJXV1x0Zk1cbkFPXHRQY1x2ZVUEZV5cYlRnXG5xSVx0YWNcYlB2XHRjRgRvUVx0UX9cdmhaBWthXG56XFxcdGlLXHRCVVxuYGtcdENQBFN8BE1gXG57SVx0U3sEX09cdEJaBFppBFNrXHRwc1x0cFxcXG5ZdVxuXXNcbnhDXGJXdFxuYkRcdGtWXHZHdQV5U1xucUFcdFtyXG5lSwRNYFx0ZFoFbExcYlVnXGJUbFxuYkRcdFVTXHZiXFxcdHBWXG5jYwRTXFxcdGN0XHRgelxiUExcdldzXG5BYFxuZWdcYlNxBXVFBENSXHZEZ1x0YFdcdnp7XHZXYwRTawRTa1x0YldcYlVnXHRlYVxueFpcdGlJXHRVWFx0VkpcbnFuXHRTe1x2UmJcYlRRXG5wbAVHdFx2dVcFdWpcbnBGXG5xSVx0ZkxcdFtJXHRpYQRYT1xueXVcdkRnXHZlZFx0cXsEVkdcYlF/BWthXHRWalx0a1ZcdHhCXG5kfFxucEBcdFFOXHRQY1x0cHMEXWpcdGtWXHRvVVxiVHBcbnpVBW5CXHZCXVx0YXtcYlZAXG5dbgRtYFx0Y3pcdFJ7BG1gXGJRYVx2d1RcYlNNBU1ZBXFOXHRkagV+c1x2UX0FTVlcdk1CXHRCdlx0d1JcYlJnXHZRfVx0cWxcdktDXG5ybQV4dQRDQ1x2d0JcdnZoXHRCcQRYcVxucFZcdGlfBU9iBXVFXG5iZFxucW9cdntpXG5Dflx0QkxcdmVFBXVIXGJWagRFeQRHelx2elJcdntpXHRjZlxue1pcbl1uBFhBXHZHdVx2blVcdGhTXHZHSVxuQ2NcdEhFXGJUQVx0SEIEQkgEQ2pcbkNjXGJURlx0SEVcblhJXHRBe1xiUX9cdGNcXFx2bU9cdldYXG5mSFxucEAFTVlcYlRGXG5sS1x0QnRcbnpVXHRUVARLbVx2d1RcbnBWXG5kdFx2eUlcdFZ4XHRRf1x0UmdcdFRkXG56VVxiUlNcbkxNXHR3QQRuTVx0VG5cbmRTXHRdZ1xuTGNcdndCXHR9dFx0W0lcdENQBGtYXHZGbVx2aFoFbX9cdGlbXG5wQFx2UX1cdld/XHR8ZFxuTU9cbk1kXHRmX1x0ZkRcdGNKXHRIelx2UmJcdGlvXHRQeQRZW1xueFVcdGN0XHZAQFx0d3dcYlB2BEJNBEZGXG50YgV2fFx2S21cdEJxXHRCcQRLaARgb1xuWmQEWFVcdGldXHR8YFx0U3QEQlxcXGJRf1x2X1dcdFRKXG5xSVx0fGFcdEF7XHZ1UARNRFx0UGxcbnhSXHRmTFx2d3NcdGN7XHRkXFxcYlZgXG5lZ1x0SEsFa2NcbmR8XGJWVlxueVxcBWtjXHRpXVxiVkdcdGBWXHRzc1x0SV9cdEFFXHRic1x0ZHVcbmVsXHRwRFx2V39cbnFzBWx2XGJTTQRaaVx2VksFaWFcdlFCXHRRf1xue1pcYlB0XHZLbFxubEtcbmhzXG5kU1xiVksFbWZcbmReXHRrVlx0Y09cbmN8XGJWSFx0XFxdXGJUdlxiU3FcdG1JXHZEZ1x0VkpcdGNuXG55XFxcYlZnXGJUdlxueVhcYlRGXHRdXVxiVHBcbm9pXG5oc1x2ZVVcbkJmXHRkagVNclxufHBcdFxcZ1x0XXJcYlZiBXtEXG5kWwRYTlx0Zk1cdE9cXAVzX1x0Y2ZcdGlaBFhOXHZXY1x0cXZcbmBtXHRVXgVvRFxuZHxcdkdnXHRkRVx2d2YEbG8EdX1cbmR8BW9RXHRgaQRPaVx2eERcbmRaXG5DeARZd1xuemtcbnRiXG5nd1x0eWpcdEJgXG55WFx2cHNcbnRDXHZwUFx2cXdcYlB1XGJQWFx0RG1cbnB3BU5qXHRzc1x0YUdcdnhzXGJQdFxub0wER3pcdE9rXHRpQFx0aV0EZUNcdElRXHRpaVx0ZGpcdkBKXHR8ZAV1aFxiV1pcdmVVXHZuVVxiVGFcdGNDBGddXG56awRZaFxiVktcbkxVXG5wQFxudGJcbnRSXHRDalx2TlBcdGlAXGJQe1xuXFx9XG57Y1xud1hcdGZMXGJWR1x0Y3tcdHxgXHRBSlx0fENcdGZEBWxuXHR8ZFx0YnNcbnFJBXtCXHZBeFxucEBcbnprXHZSYgVPc1x2V1MEZV5cdkRfXHRCdlx2V2RcYlZiXHZ4c1x2ZUVcYlJ3XG5dblxufHBcdmd8XHRmdwVrY1xiVEkFa2FcblxcVARTcFx0anVcdnBzXG5wZQV1fFx2R3JcYlZlXHRDVQRdTQRYVVx2eERcYlRhXHRJUVx2V3FcdENVXHRhbVx0ZGpcYlNvBFN3XHZuVQRDaFx0UV0Fc19cYlB0XHRmU1xiVGFcdFxcfVxuQE8EWWNcdFVaXGJUeFxucGVcdm5VXG56VVx0fH1cdGlEXG56XFxcYlNNXHZ4RARCUlxuelFcdFFOBF1NBFloXG5MUFx2Rm1cdkxYBXZjXHZxbAVrYVx0SEtcYlZiXG50Q1xuQ3lcYlR2XG51VgRvUVx0YHpcdFtJXHRCYFx2UmJcdHlqXHRzYlx2V3NcYlRsXHRrVlx2ZWRcbmV/BWxMXHZ4Tlx0f21cbkpuXHRqWVx2eERcYlZiXGJTcVx2eXVcdHdMXHZYTFxiVEFcdHBnXHRBdFx0bkQEWFhcdHdSXG5wbFxuaHcFeVNcbnBzXHRjT1xiV1tcdnxqBFhOXHRzVlx0cFxcXHRCZVxuYn5cbkFKXG5dZQVrYAVxTlx0ZHdcdFdWXHRIRVx2RVYFSnpcdGlkXHRCYFx0emgFRV1cdGZEXGJUZwVxTlxiVGFcdGphBEN2XGJTTVxuaGNcYlVlBXRfXHRpZQRnXVx0d1FcblBuXGJWQlx0andcYlZnXHZiRVx0QlpcdlJIXGJQe1x0anBcblxcfVx0YV9cdGNDXHR8YVx2RF1cdEJaXHRpW1x0ZkRcdnhXXG5vX1x0ZFxcXG5fRFxudGJcdFxcY1x0QUpcbmxLBG9RBGxvXHZMeFx2TUBcYldaBEtuXHZwZ1xuVGlcbkl2XG58clx2QH0FSnoFTG0FV2gFa30FbG5cdnhEXG5dcwRnY1x2cHNcdEJyXGJUV1x2Qk0FdFpcbkJZBERXXHRqZlx2U1cEQ31cbnFvXHRkRVx0bXZcdElRXGJQUFxiVWIFbHYEQkNcbnpRXHRbSVx2Z2xcbmlnXGJVcwRCVFx2YkNcYlNxXHRzVVx0aVdcbkpuXHRTWVx0SEtcdHJnXG5wVlx2SURcdnxqBEtPXHRgU1x0fGFgdmJtZ2xmbXVqYnFuYmdxamdhdnBgYnFqbWpgamx3amZuc2xzbHFydmZgdmZtd2JmcHdiZ2xzdmZnZm1pdmZkbHBgbG13cWJmcHcvTW1tbG5hcWZ3amZtZm1zZnFlam9uYm1mcWJibmpkbHBganZnYmdgZm13cWxidm1ydmZzdmZnZnBnZm13cWxzcWpuZnFzcWZgamxwZmQvVm1hdmZtbHB1bG91ZnFzdm13bHBwZm5ibWJrYmEvQWJiZGxwd2xtdmZ1bHB2bWpnbHBgYnFvbHBmcnZqc2xtai9dbHBudmBrbHBib2R2bWJgbHFxZmxqbmJkZm1zYnF3anFicXFqYWJuYnEvQWJrbG5hcWZmbnNvZmx1ZnFnYmdgYm5hamxudmBrYnBldmZxbG1zYnBiZ2xvL0FtZmJzYnFmYGZtdmZ1YnBgdnFwbHBmcHdiYWJydmpmcWxvamFxbHBgdmJtd2xiYGBmcGxuamR2Zm91YnFqbHBgdmJ3cWx3amZtZnBkcXZzbHBwZnEvTW1mdnFsc2JuZmdqbHBlcWZtd2ZiYGZxYGJnZm4vTXBsZWZxd2JgbGBrZnBubGdmb2xqd2JvamJvZndxYnBib2QvVm1gbG5zcWJgdmJvZnBme2pwd2ZgdmZxc2xwamZtZ2xzcWZtcGJvb2ZkYnF1amJpZnBnam1mcWxudnFgamJzbGdxL01zdmZwd2xnamJxamxzdmZhb2xydmpmcWZuYm12Zm9zcWxzamxgcWpwanBgamZxd2xwZmR2cWxudmZxd2ZldmZtd2ZgZnFxYnFkcWJtZ2ZmZWZgd2xzYnF3ZnBuZmdqZ2JzcWxzamJsZXFmYGZ3amZxcWJmLm5iam91YnFqYnBlbHFuYnBldnd2cWxsYWlmd2xwZmR2anFxamZwZGxtbHFuYnBuanBubHAvVm1qYGxgYm5qbWxwandqbHBxYnkvX21nZmFqZ2xzcXZmYWJ3bG9mZ2x3Zm0vQWJpZnAvVnBmcHNmcWxgbGBqbWJscWpkZm13amZtZ2JgamZtd2xgL01nanlrYmFvYnFwZnEvQWJvYndqbWJldmZxeWJmcHdqb2xkdmZxcWJmbXdxYnEvRXtqd2xvL19zZnliZGZtZ2J1L0FnZmxmdWp3YnFzYmRqbWJuZndxbHBpYnVqZnFzYmdxZnBlL01gam9gYmFmeWIvTXFmYnBwYm9qZ2JmbXUvQWxpYnMvX21iYXZwbHBhamZtZnB3Znt3bHBvb2Z1YnFzdmZnYm1ldmZxd2ZgbG4vVm1gb2JwZnBrdm5ibWx3Zm1qZ2xham9hYmx2bWpnYmdmcHcvTXBmZ2p3YnFgcWZiZ2w8WDxXPWM9az1uPFI8VjxcXDxWPFQ8VzxUPWE9bjxSPF49bTxZPFk8XzxSPFM9bDxUPW48XFw8VjxZPWU8WT1vPFo8WTx2PFxcPFY8XTxZPFs8XT1nPFc8UjxRPFQ8fj1tPFk8UzxSPFg8QT1uPFI9bjxSPFA9azxZPFA8UTxZPW48VzxZPW49bDxcXDxbPFI8UTxcXDxfPFg8WTxQPFE8WTx4PFc9YzxzPWw8VDxRPFxcPW08UTxUPWk9bjxZPFA8Vj1uPFI8XzxSPFg8XjxSPW49bjxcXDxQPE08RDx8PFA8XFw9YzxLPW48UjxePFxcPW08XjxcXDxQPFk8UD1vPE48XFw8VjxYPF48XFw8UTxcXDxQPWE9bjxUPWE9bj1vPH48XFw8UD1uPFk9aTxTPWw8Uj1uPW89bjxRPFxcPFg8WDxRPWM8fjxSPW49bj1sPFQ8UTxZPFU8fjxcXD1tPFE8VDxQPW08XFw8UD1uPFI9bj1sPW88XTxyPFE8VDxQPFQ9bDxRPFk8WTxyPHI8cjxXPFQ9aj1hPW48XFw8cjxRPFxcPFE8WTxQPFg8UjxQPFA8UjxVPFg8XjxZPFI8UTxSPW09bzxYXGZIeVxmSWtcZkhVXGZJZFxmSHlcZklsXGZIVFxmSWtcZkh5XGZIUlxmSHlcZklnXGZIeFxmSFxcXGZIRlxmSFxcXGZIRFxmSWtcZkhjXGZIeVxmSHlcZkhTXGZIQVxmSWxcZkhrXGZIVFxmSHlcZkhcXFxmSEhcZklnXGZIVVxmSWdcZkhqXGZIRlxmSFVcZklsXGZIQ1xmSFVcZkhDXGZIUlxmSEhcZkh5XGZISVxmSFJpYmRxYm1cZkhqXGZIcFxmSHBcZklnXGZIaVxmSEBcZkhKXGZJZ1xmSHtcZkhkXGZIcFxmSFJcZkh7XGZIY1xmSFVcZkhCXGZIa1xmSERcZkhZXGZIVVxmSENcZklrXGZISVxmSWtcZkhJXGZJbFxmSHRcZkhcXFxmSHBcZkhAXGZISlxmSWxcZkh5XGZIZFxmSHBcZklsXGZIWVxmSWtcZkhEXGZIZFxmSERcZkhjXGZIVVxmSFxcXGZIZVxmSFRcZkhCXGZJa1xmSHlcZkhCXGZIWVxmSWdcZkheXGZJa1xmSFRcZkhAXGZIQlxmSGRcZkhKXGZJa1xmSH9cZkhcXFxmSGpcZkhCXGZIQFxmSFRcZkhBXGZIXFxcZkhAXGZIRFxmSHZcZkheXGZIQlxmSERcZkhqXGZIe1xmSFRcZklsXGZIXlxmSWw0VTVoNWU0STVoNWU1azRcXDRLNE40QjRdNFU0QzRDNEs1aDVlNWs0XFw1azRZNWQ0XTRWNWY0XTVvNEs1ajVkNWg0SzRENWY1ajRVNF00WjRcXDVoNW81azVqNEs1ZjVkNWk1bjRLNWg0VTVoNWY0SzVqNEs1aDVvNWo0QTRGNWU1bjRENWg1ZDRBNEU0SzRCNF01bTVuNFs0VTRENEM0XTVvNWo0STRcXDRLNW81aTRLNEs0QTRDNEk1aDRLNW01ZjVrNEQ0VTRaNW81ZjVtNEQ0QTRHNWQ1aTVqNWQ1azVkNE81ajRLNEA0QzRLNWg1azRLNF81aDVpNFU1ajRDNWg1ZjRfNFU0RDRdNFk1aDVlNWk1ajRcXDRENWs0SzRPNWo1azVpNEc1aDVvNWo0RjRLNWg0SzRBNWY0RzVpNFk0XTRYNF00QTRBNWQ1aDVkNW01ZjRLNFxcNEs1aDVvNWg1aTRdNEU0SzVqNEY0SzVoNW00TzRENWQ0QjRLNFk0TzVqNEY0SzVqNWs0SzVoNWY0VTRaNWQ1ZDVuNEM0SzRENWo0QjVmNF00RDVqNEY1aDVvNWk0WDRLNE01ZDVrNWY0SzRENWQ1bjRZNFk1ZDVpNEs0XTVuNWk0TzRBNEM1ajRBNWo0VTRDNWk0XTRPNWY0SzRBNEU1bzRGNEQ0QzVkNWo1ZjRANEQ1aTVqNWs0RjRBNEY0QDVrNEU0XzVqNEU1ZjRGNWk1bzRdNEU0VjReNEU1ajVtNF80RDVmNEY1aDVoNWs1aDVqNEs0RjVoNW81bjVoNEQ1aDVpNEs0VTVqNWs0TzVkNWg0WDVmNE01ajVkNF00TzVpNEs1bTVmNW80RDVvNWg0XFw0SzRGNF00RjRENEQ0TzVqNWs1aTRfNEs1ajVvNEQ1ZjRVNW01bjRDNEE0XzVqNWg1azVpNFg0VTRdNE81azVoNFg1azRdNW40WzRdNFs1aDREc3FsZWpvZnBmcXVqYGZnZmVidm93a2pucGZvZWdmd2Jqb3BgbG13Zm13cHZzc2xxd3B3YnF3ZmduZnBwYmRmcHZgYGZwcGVicGtqbG0/d2p3b2Y9YGx2bXdxemJgYGx2bXdgcWZid2ZncHdscWpmcHFmcHZvd3Bxdm1tam1kc3FsYGZwcHRxandqbWRsYWlmYHdwdWpwamFvZnRmb2BsbmZicXdqYG9mdm1obWx0bW1md3RscWhgbG5zYm16Z3ptYm5qYGFxbHRwZnFzcWp1YmB6c3FsYW9mblBmcXVqYGZxZnBzZmB3Z2pwc29ienFmcnZmcHdxZnBmcXVmdGZhcGp3ZmtqcHdscXplcWpmbWdwbHN3amxtcHRscWhqbWR1ZnFwamxtbmpvb2psbWBrYm1tZm90am1nbHQtYmdncWZwcHVqcGp3Zmd0ZmJ3a2ZxYGxxcWZgd3NxbGd2YHdmZ2pxZmB3ZWxxdGJxZ3psdiNgYm1xZm5sdWZncHZhaWZgd2BsbXdxbG9icWBranVmYHZxcWZtd3FmYmdqbWRvamFxYnF6b2puandmZ25ibWJkZnFldnF3a2ZxcHZubmJxem5iYGtqbWZuam12d2Zwc3FqdWJ3ZmBsbXdme3dzcWxkcWJucGxgamZ3em12bmFmcXB0cWp3d2ZtZm1iYW9mZ3dxamRkZnFwbHZxYGZwb2xiZ2ptZGZvZm5mbXdzYnF3bWZxZWptYm9venNmcWVmYHduZmJtam1kcHpwd2ZucGhmZnNqbWRgdm93dnFmJXJ2bHc4L2lsdnFtYm9zcWxpZmB3cHZxZWJgZnAlcnZsdzhme3NqcWZwcWZ1amZ0cGFib2JtYGZGbWRvanBrQGxtd2Ztd3drcWx2ZGtTb2ZicGYjbHNqbWpsbWBsbXdiYHdidWZxYmRmc3FqbmJxenVqb29iZGZQc2JtanBrZGJvb2ZxemdmYG9qbWZuZmZ3am1kbmpwcGpsbXNsc3ZvYnFydmJvand6bmZicHZxZmRmbWZxYm9wc2ZgamZwcGZwcGpsbXBmYHdqbG10cWp3ZnFwYGx2bXdmcWptandqYm9xZnNscXdwZWpkdnFmcG5mbmFmcXBrbG9nam1kZ2pwc3Z3ZmZicW9qZnFme3NxZnBwZ2pkandib3NqYHd2cWZCbWx3a2ZxbmJxcWpmZ3dxYmVlamBvZmJnam1kYGtibWRmZ2BmbXdxYm91amB3bHF6am5iZGZwLHFmYnBsbXBwd3ZnamZwZWZid3ZxZm9qcHdqbWRudnB3I2FmcGBrbGxvcFVmcXBqbG12cHZib296ZnNqcGxnZnNvYnpqbWRkcWx0am1kbGF1amx2cGx1ZnFvYnpzcWZwZm13YmB3amxtcD8sdm89Dlx0dHFic3NmcWJvcWZiZ3pgZnF3YmptcWZib2p3enB3bHFiZGZibWx3a2ZxZ2ZwaHdsc2xlZWZxZmdzYnd3ZnFtdm12cHZib0dqZGp3Ym9gYnNqd2JvVGZhcGp3ZmViam92cWZgbG1tZmB3cWZndmBmZ0JtZ3FsamdnZmBiZ2ZwcWZkdm9icSMlYm5zOCNibWpuYm9wcWZvZmJwZkJ2d2xuYndkZnd3am1kbmZ3a2xncG1sd2tqbWRTbHN2b2JxYGJzd2psbW9md3dmcXBgYnN3dnFmcGBqZm1gZm9qYGZtcGZga2JtZGZwRm1kb2JtZz4yJWJuczhLanB3bHF6Iz4jbWZ0I0BmbXdxYm92c2did2ZnUHNmYGpib01md3RscWhxZnJ2anFmYGxubmZtd3RicW1qbWRAbG9vZmRmd2xsb2FicXFmbmJqbXBhZmBidnBmZm9mYHdmZ0dmdndwYGtlam1ibWBmdGxxaGZxcHJ2amBob3phZnd0ZmZtZntiYHdvenBmd3dqbWRnanBmYnBmUGxgamZ3enRmYnNsbXBme2tqYWp3JW93OCIuLkBsbXdxbG9gb2JwcGZwYGx1ZnFmZ2x2d29qbWZid3diYGhwZ2Z1amBmcCt0am1nbHRzdnFzbHBmd2p3b2Y+IU5sYWpvZiNoam9vam1kcGtsdGptZEp3Ym9qYm1ncWxzc2Zna2ZidWpvemZlZWZgd3AuMiReKjhcdGBsbWVqcW5AdnFxZm13Ymd1Ym1gZnBrYnFqbWRsc2Ztam1kZ3FidGptZGFqb29qbG1scWdmcWZnRGZxbmJtenFmb2J3Zmc/LGVscW49am1gb3ZnZnRrZndrZnFnZmVqbWZnUGBqZm1gZmBid2JvbGRCcXdqYG9mYXZ3d2xtcG9icWRmcHd2bWplbHFuaWx2cW1menBqZ2ZhYnFAa2pgYmRsa2xvamdiekRmbWZxYm9zYnBwYmRmLyVydmx3OGJtam5id2ZlZmZvam1kYnFxanVmZ3NicHBqbWRtYnd2cWJvcWx2ZGtvei1cdFx0V2tmI2F2dyNtbHdnZm1wand6QXFqd2JqbUBram1mcGZvYmBoI2xld3FqYXZ3ZkpxZm9ibWchI2did2IuZWJgd2xxcHFmYGZqdWZ3a2J3I2pwT2phcWJxemt2cGFibWdqbSNlYmB3YmVlYmpxcEBrYnFvZnBxYmdqYGJvYXFsdmRrd2VqbWdqbWRvYm1nam1kOW9ibWQ+IXFmd3ZxbSNvZmJnZnFwc29ibW1mZ3NxZm5qdm5zYmBoYmRmQm5mcWpgYkZnandqbG1eJXJ2bHc4TmZwcGJkZm1mZmcjd2x1Ym92Zj4hYGxuc29me29sbGhqbWRwd2J3amxtYWZvamZ1ZnBuYm9vZnEubmxham9mcWZgbHFncHRibXcjd2xoam1nI2xlRWpxZmVse3psdiNicWZwam5qb2JxcHd2Z2pmZ25ie2pudm5rZmJnam1kcWJzamdvemBvam5id2Zoam1kZ2xuZm5mcWRmZ2JubHZtd3BlbHZtZ2Znc2psbWZmcWVscW52b2Jnem1icHd6a2x0I3dsI1B2c3NscXdxZnVmbXZmZmBsbWxuelFmcHZvd3BhcWx3a2ZxcGxvZ2pmcW9icWRmb3pgYm9vam1kLSVydmx3OEJgYGx2bXdGZ3RicWcjcGZkbmZtd1FsYWZxdyNmZWVscXdwU2JgamVqYG9mYnFtZmd2cyN0andra2ZqZGt3OXRmI2tidWZCbWRmb2ZwbWJ3amxtcFxccGZicWBrYnNzb2pmZ2JgcnZqcWZuYnBwanVmZHFibXdmZzkjZWJvcGZ3cWZid2ZnYWpkZGZwd2FmbWZlandncWp1am1kUHd2Z2pmcG5qbWpudm5zZnFrYnNwbmxxbWptZHBmb29qbWRqcCN2cGZncWZ1ZnFwZnVicWpibXcjcWxvZj4hbmpwcGptZGJga2pmdWZzcWxubHdmcHd2Z2Ztd3BsbmZsbWZme3dxZm5mcWZwd2xxZmFsd3dsbjlmdWxvdWZnYm9vI3drZnBqd2ZuYnNmbWRvanBrdGJ6I3dsIyNCdmR2cHdwem5hbG9wQGxuc2Jtem5id3dmcXBudnBqYGJvYmRiam1wd3BmcXVqbWR+KisqOA5cdHNiem5mbXd3cWx2YW9mYGxtYGZzd2BsbnNicWZzYnFmbXdwc29iemZxcHFmZGpsbXBubG1qd2xxIyQkV2tmI3RqbW1qbWRme3NvbHFmYmdic3dmZ0Rib29mcXpzcWxndmBmYmFqb2p3emZta2JtYGZgYnFmZnFwKi0jV2tmI2Bsb29mYHdQZmJxYGsjYm1gamZtd2Z7anB3ZmdlbGx3ZnEja2JtZ29mcXNxam13ZmdgbG1wbG9mRmJwd2ZxbWZ7c2xxd3B0am1nbHRwQGtibW1mb2pvb2ZkYm9tZnZ3cWJvcHZkZGZwd1xca2ZiZ2ZxcGpkbWptZC1rd25vIT1wZnd3b2ZndGZwd2ZxbWBidnBqbWQudGZhaGp3YG9iam5mZ0l2cHdqYGZga2Jzd2ZxdWpgd2pucFdrbG5icCNubHlqb29ic3FsbmpwZnNicXdqZnBmZ2p3amxtbHZ3cGpnZjllYm9wZi9rdm1ncWZnTG96bnNqYFxcYXZ3d2xtYnZ3a2xxcHFmYmBrZmdga3FsbWpgZ2ZuYm1ncHBmYGxtZ3BzcWx3ZmB3Ymdsc3dmZ3NxZnNicWZtZmp3a2ZxZHFmYndvemRxZmJ3ZnFsdWZxYm9vam5zcWx1ZmBsbm5ibWdwc2ZgamJvcGZicWBrLXRscXBranNldm1nam1kd2tsdmRrd2tqZGtmcHdqbXB3ZmJndndqb2p3enJ2YnF3ZnFAdm93dnFmd2Zwd2ptZGBvZmJxb3pme3NscGZnQXFsdHBmcW9qYWZxYm9+I2Bid2BrU3FsaWZgd2Z7Ym5zb2ZramdmKyo4RW9scWpnYmJtcHRmcXBib29sdGZnRm5zZnFscWdmZWZtcGZwZnFqbHZwZXFmZmdsblBmdWZxYm8uYXZ3d2xtRXZxd2tmcWx2dyNsZSMiPiNtdm9vd3Fiam1mZ0dmbW5icWh1bGpnKzMqLGJvby1pcHNxZnVmbXdRZnJ2ZnB3UHdmc2tmbVx0XHRUa2ZtI2xhcGZxdWY/LGsxPQ5cdE5sZ2ZxbSNzcWx1amdmISNib3c+IWFscWdmcXAtXHRcdEVscSNcdFx0TmJteiNicXdqcHdwc2x0ZnFmZ3NmcWVscW5lamB3amxtd3pzZiNsZW5mZ2pgYm93amBoZndwbHNzbHBmZ0Bsdm1gam90andtZnBwaXZwd2pgZkRmbHFkZiNBZm9kanZuLS0tPyxiPXd0and3ZnFtbHdiYW96dGJqd2ptZHRicWVicWYjTHdrZnEjcWJtaGptZHNrcWJwZnBuZm13amxtcHZxdWp1ZnBga2xvYnE/LHM9Dlx0I0Bsdm13cXpqZG1scWZnb2xwcCNsZWl2cHcjYnBEZmxxZGpicHdxYm1kZj9rZmJnPT9wd2xzc2ZnMiReKjgOXHRqcG9ibWdwbWx3YmFvZmFscWdmcTlvanB3I2xlYGJxcWpmZzIzMy8zMzM/LGswPVx0I3BmdWZxYm9hZmBsbmZwcGZvZmB3I3RmZ2dqbWQzMy1rd25vbmxtYnFga2xlZSN3a2Z3ZmJga2Zxa2pka296I2FqbG9sZHpvamVmI2xlbHEjZnVmbXFqcGYjbGUlcWJydmw4c292cGxtZmt2bXdqbWQrd2tsdmRrR2x2ZG9icGlsam1qbWRganFgb2ZwRWxxI3drZkJtYGpmbXdVamZ3bWJudWZramBvZnB2YGsjYnBgcXpwd2JvdWJvdmYjPlRqbWdsdHBmbWlsemZnYiNwbmJvb2JwcHZuZmc/YiNqZz4hZWxxZmpkbSNCb28jcWprbHQjd2tmR2pwc29ienFmd2pxZmdrbHRmdWZxa2pnZ2ZtOGFid3dvZnBwZmZoam1kYGJham1md3RicCNtbHdvbGxoI2J3YGxtZ3Zgd2RmdyN3a2ZJYm12YnF6a2Jzc2ZtcHd2cW1qbWRiOWtsdWZxTG1vam1mI0VxZm1gayNvYmBoam1kd3pzamBib2Z7d3FiYHdmbWZuamZwZnVmbSNqZWRmbWZxYndnZmBqZ2ZnYnFmI21sdyxwZmJxYGthZm9qZmVwLmpuYmRmOW9sYGJ3Zmdwd2J3amAtb2xkam0hPWBsbXVmcXd1amxvZm13Zm13ZnFmZ2VqcXB3IT1ganFgdmp3RWptb2JtZ2BrZm5qcHdwa2YjdGJwMjNzezghPWJwI3B2YGtnanVqZ2ZnPyxwc2JtPXRqb28jYWZvam1mI2xlYiNkcWZid256cHdmcXosam1nZnstZWJvb2ptZGd2ZiN3bCNxYmpvdGJ6YGxvb2ZkZm5sbXB3ZnFnZnBgZm13ancjdGp3a212YG9mYnFJZnRqcGsjc3Fsd2Zwd0FxandqcGtlb2x0ZnFwc3FmZ2pgd3FmZWxxbnBhdnd3bG0jdGtsI3RicG9mYHd2cWZqbXB3Ym13cHZqYGpnZmRmbWZxamBzZnFqbGdwbmJxaGZ3cFBsYGpibyNlanBram1kYGxuYWptZmRxYnNramB0am1tZnFwP2FxIyw9P2F6I3drZiNNYnd2cWJvU3FqdWJgemBsbGhqZnBsdndgbG5mcWZwbG91ZlB0ZmdqcGthcWpmZW96U2ZxcGpibXBsI252YGtAZm13dnF6Z2ZzamB3cGBsb3ZubXBrbHZwam1kcGBxanN3cG1me3cjd2xhZmJxam1kbmJzc2ptZHFmdWpwZmdpUnZmcXorLnRqZ3drOXdqd29mIT13bGxvd2pzUGZgd2psbWdmcGpkbXBXdnFoanBremx2bWRmcS1uYndgayt+KisqOFx0XHRhdnFtam1kbHNmcWJ3ZmdmZHFmZnBwbHZxYGY+UWpga2JxZ2BvbHBmb3pzb2Jwd2pgZm13cWpmcD8sd3E9Dlx0YGxvbHE5IHZvI2pnPiFzbHBwZnBwcWxvb2ptZHNrenBqYHBlYmpvam1kZntmYHZ3ZmBsbXdmcHdvam1oI3dsR2ZlYnZvdz9hcSMsPVx0OSN3cXZmL2BrYnF3ZnF3bHZxanBuYG9icHBqYHNxbGBmZmdme3NvYmptPyxrMj0OXHRsbW9qbWYtPHtubyN1Zmtmb3NqbWRnamJubG1ndnBmI3drZmJqcW9qbWZmbWcjLi49Ki1id3dxK3FmYmdmcXBrbHB3am1kIGVlZWVlZXFmYm9qeWZVam1gZm13cGpkbWJvcCNwcWA+ISxTcWxndmB3Z2Zwc2p3ZmdqdWZxcGZ3Zm9vam1kU3Zhb2pgI2tmb2cjam1JbHBmc2sjd2tmYndxZmJlZWZgd3A/cHd6b2Y9YiNvYnFkZmdsZnBtJHdvYndmcS8jRm9mbmZtd2VidWpgbG1gcWZid2xxS3ZtZGJxekJqcXNscXdwZmYjd2tmcGwjd2tid05qYGtiZm9QenB3Zm5wU3FsZHFibnAvI2JtZyMjdGpnd2s+ZiVydmx3OHdxYmdqbWRvZmV3IT1cdHNmcXBsbXBEbG9nZm0jQmVlYmpxcGRxYm5uYnFlbHFuam1kZ2Zwd3FsempnZmIjbGVgYnBmI2xlbG9nZnB3I3dranAjanAtcHFgIz4jYGJxd2xsbXFmZGpwd3FAbG5ubG1wTnZwb2pucFRrYncjanBqbSNuYm16bmJxaGptZHFmdWZib3BKbWdmZmcvZnJ2Ym9veixwa2x0XFxibHZ3Z2xscWZwYGJzZitCdnB3cWpiZGZtZndqYHB6cHdmbi9KbSN3a2YjcGp3d2ptZEtmI2JvcGxKcG9ibWdwQmBiZ2Zuelx0XG5cbj8iLi5HYm1qZm8jYWptZ2ptZGFvbGBoIT1qbnNscGZndndqb2p5ZkJhcWJrYm4rZntgZnN3eHRqZ3drOXN2d3dqbWQqLWt3bm8rf38jWF44XHRHQldCWCMpaGp3YGtmbW5sdm13ZmdiYHd2Ym8jZ2pib2Zgd25iam1veiNcXGFvYm1oJGptcHdib29me3NmcXdwamUrd3pzZkp3I2JvcGwlYGxzejgjIT1XZnFucGFscW0jam1Mc3dqbG1wZmJwd2ZxbXdib2hqbWRgbG1gZnFtZGJqbWZnI2xtZGxqbWRpdnB3amV6YHFqd2pgcGViYHdscXpqd3AjbHRtYnBwYnZvd2ptdWp3ZmdvYnB3am1ka2pwI2x0bWtxZmU+ISwhI3Fmbz4hZ2Z1Zm9sc2BsbWBmcXdnamJkcWJuZ2xvb2JxcGBvdnB3ZnFza3M8amc+Ym9gbGtsbyo4fiorKjh2cGptZCNiPT9wc2JtPXVmcHBmb3BxZnVqdWJvQmdncWZwcGJuYndmdnFibWdxbGpnYm9vZmRmZ2pvb21mcHB0Ym9oam1kYGZtd2ZxcHJ2Ym9qZXpuYndga2Zwdm1qZWpmZ2Z7d2ptYHdHZmVmbXBmZ2pmZyNqbVx0XG4/Ii4uI2B2cHdsbnBvam1oam1kT2p3d29mI0FsbGgjbGVmdWZtam1kbmptLWlwPGJxZiN3a2ZobG13Ymh3d2xnYnokcC1rd25vISN3YnFkZnc+dGZicWptZEJvbyNRamQ4XHR+KisqOHFianBqbWQjQm9wbC8jYHF2YGpib2JhbHZ3IT1nZmBvYnFmLi49XHQ/cGBlanFmZWx7YnAjbnZga2Jzc29qZnBqbWdmey8jcC8jYXZ3I3d6c2YjPiNcdA5cdD8iLi53bHRicWdwUWZgbHFncFNxanVid2ZFbHFmamRtU3FmbmpmcWBrbGpgZnBVanF3dmJvcWZ3dnFtcEBsbm5mbXdTbHRmcWZnam1vam1mOHNsdWZxd3pga2JuYWZxT2p1am1kI3Vsb3ZuZnBCbXdrbG16b2xkam0hI1Fmb2J3ZmdGYGxtbG56cWZiYGtmcGB2d3dqbWRkcWJ1and6b2plZiNqbUBrYnN3ZnEucGtiZ2x0TWx3YmFvZj8sd2c9Dlx0I3Fmd3ZxbXB3Ymdqdm50amdkZndwdWJxemptZHdxYnVmb3BrZm9nI2F6dGtsI2JxZnRscWgjam1lYmB2b3d6Ym1kdm9icXRrbCNrYmdianFzbHF3d2x0bSNsZVx0XHRQbG5mIyRgb2pgaCRga2JxZGZwaGZ6dGxxZ2p3I3Rqb29gand6I2xlK3dranAqOEJtZ3FmdCN2bWpydmYjYGtmYGhmZ2xxI25scWYwMzNzezgjcWZ3dnFtOHFwamxtPiFzb3Zkam1wdGp3a2ptI2tmcXBmb2VQd2J3amxtRWZnZnFib3VmbXd2cWZzdmFvanBrcGZtdyN3bHdmbXBqbG1iYHdxZnBwYGxuZiN3bGVqbWRmcXBHdmhmI2xlc2Zsc29mL2Z7c29sand0a2J3I2pwa2JxbmxtemIjbmJpbHEhOSFrd3dzam0ja2pwI25mbXYhPVx0bmxtd2tvemxlZWpgZnFgbHZtYGpvZGJqbWptZGZ1Zm0jam1Qdm5uYnF6Z2J3ZiNsZW9semJvd3plandtZnBwYm1nI3RicGZuc2ZxbHFwdnNxZm5mUGZgbG1nI2tmYnFqbWRRdnBwamJtb2xtZGZwd0JvYWZxd2JvYndmcWJvcGZ3I2xlI3BuYm9vIT0tYnNzZm1nZ2wjdGp3a2VmZ2ZxYm9hYm1oI2xlYWZtZmJ3a0dmcHNqd2ZAYnNqd2JvZHFsdm1ncCovI2JtZyNzZnFgZm13ancjZXFsbmBvbHBqbWRgbG13YmptSm1wd2ZiZ2VqZXdmZm1icCN0Zm9vLXpia2xsLXFmcHNsbWdlamRrd2ZxbGFwYHZxZnFmZW9mYHdscWRibWpgPiNOYndrLWZnandqbWRsbW9qbWYjc2JnZ2ptZGIjdGtsb2ZsbWZxcWxxemZicSNsZWZtZyNsZSNhYnFxamZxdGtmbSNqd2tmYmdmcSNrbG5mI2xlcWZwdm5mZ3FmbWJuZmdwd3FsbWQ9a2Zid2ptZHFmd2JqbXBgb2x2Z2VxdGJ6I2xlI05icWBrIzJobWx0am1kam0jc2Jxd0Fmd3RmZm1vZnBwbG1wYG9scGZwd3VqcXd2Ym9vam1ocCE9YHFscHBmZ0ZNRyMuLj1lYm5sdnAjYnRicWdmZ09qYGZtcGZLZmJvd2sjZWJqcW96I3RmYm93a3puam1qbmJvQmVxamBibWBsbnNmd2ZvYmFmbyE9cGptZGptZGVicW5mcXBBcWJwam8qZ2pwYHZwcHFmc29iYGZEcWZkbHF6ZWxtdyNgbHN2cXB2Zmdic3NmYnFwbmJoZiN2c3Fsdm1nZmdhbHdrI2xlYW9sYGhmZ3BidCN3a2ZsZWVqYGZwYGxvbHZxcGplK2dsYHZ0a2ZtI2tmZm1lbHFgZnN2cGsrZXZCdmR2cHcjVldFLjshPUVibXdicHpqbSNubHB3am1pdnFmZ1ZwdmJvb3plYnFuam1kYG9scHZxZmxhaWZgdyNnZmVmbWBmdnBmI2xlI05mZ2pgYm8/YWxnej1cdGZ1amdmbXdhZiN2cGZnaGZ6QGxnZnBqe3dmZm1KcG9ibmpgIDMzMzMzM2Ztd2pxZiN0amdmb3ojYmB3anVmIyt3enNmbGVsbWYjYGJtYGxvbHEjPnBzZmJoZnFme3dmbWdwU2t6cGpgcHdmcXFiam0/d2FsZ3o9ZXZtZnFib3VqZnRqbWRuamdnb2YjYHFqYGhmd3NxbHNrZndwa2pld2ZnZ2xgd2xxcFF2cHBmb28jd2JxZGZ3YGxuc2Jgd2JvZGZhcWJwbGBqYm8uYXZvaCNsZW5ibSNibWc/LHdnPVx0I2tmI29mZXcqLXVibysqZWJvcGYqOG9sZGpgYm9hYm1oam1ka2xuZiN3bG1ibmptZCNCcWp5bG1iYHFmZ2p3cCo4XHR+KjhcdGVsdm1nZnFqbSN3dnFtQGxvb2ptcGFmZWxxZiNBdncjd2tmYGticWRmZ1dqd29mIT1AYnN3YmptcHNmb29mZ2RsZ2dmcHBXYmQjLi49Qmdnam1kOWF2dyN0YnBRZmBmbXcjc2J3amZtd2FiYGgjam0+ZWJvcGYlT2ptYGxvbXRmI2htbHRAbHZtd2ZxSXZnYmpwbnBgcWpzdyNib3dmcWZnJF4qOFx0IyNrYnAjd2tmdm1gb2ZicUZ1Zm13JC9hbHdrI2ptbWx3I2Jvb1x0XHQ/Ii4uI3NvYmBqbWRrYnFnI3dsI2BmbXdmcXBscXcjbGVgb2pmbXdwcHdxZmZ3cEFmcW1icWdicHBmcXdwd2ZtZyN3bGVibXdicHpnbHRtI2pta2JxYWx2cUVxZmZnbG5pZnRmb3F6LGJhbHZ3LS1wZmJxYGtvZmRmbWdwanAjbmJnZm5sZ2ZxbSNsbW96I2xtbG1veiN3bGpuYmRmISNvam1mYnEjc2JqbXdmcWJtZyNtbHdxYnFmb3ojYmBxbG16bmdmb2p1ZnFwa2xxd2ZxMzMlYm5zOGJwI25ibXp0amd3az4hLCkjPyJYQHdqd29mIz5sZSN3a2Yjb2x0ZnB3I3NqYGhmZyNmcGBic2ZndnBmcCNsZXNmbHNvZnAjU3Zhb2pgTmJ3d2tmdHdiYHdqYHBnYm5iZGZndGJ6I2VscW9idHAjbGVmYnB6I3dsI3RqbWdsdHB3cWxtZCMjcGpuc29mfmBid2BrK3BmdWZtd2tqbWVsYWx7dGZtdyN3bHNiam13ZmdgandqeWZtSiNnbG0kd3Fmd3FmYnctI1BsbmYjdHQtISo4XHRhbG5ham1kbmJqb3dsOW5iZ2Yjam0tI05ibXojYGJxcWpmcH9/eH44dGp0bHFoI2xlcHptbG16bmdmZWZid3BlYnVscWZnbHN3amBib3NiZGZXcWJ2bW9mcHAjcGZtZ2ptZG9mZXchPT9gbG5QYGxxQm9vI3drZmlSdmZxei13bHZxanB3QG9icHBqYGVib3BmISNUam9rZm9ucHZhdnFhcGRmbXZqbWZhanBrbHNwLXBzb2p3K2RvbGFibyNlbG9vbHRwYWxneiNsZW1sbmptYm9AbG13YmB3cGZgdm9icW9mZXcjd2xga2pmZW96LmtqZ2dmbS5hYm1tZnE/LG9qPVx0XHQtI1RrZm0jam0jYWx3a2dqcG5qcHBGe3NvbHFmYm90YnpwI3VqYiN3a2Zwc2IvXWxvdGZvZWJxZnF2b2ptZCNicXFibWRmYGJzd2JqbWtqcCNwbG1xdm9mI2xla2Yjd2xsaGp3cGZvZS8+MyVibnM4K2Bib29mZ3BibnNvZnB3bCNuYmhmYGxuLHNiZE5icXdqbSNIZm1tZmd6YmBgZnN3cGV2b28jbGVrYm1nb2ZnQWZwamdmcCwsLi49PyxiYW9mI3dsd2JxZGZ3cGZwcGZtYGZram4jd2wjandwI2F6I2Bsbm5sbS1uam1mcWJvd2wjd2JoZnRienAjd2xwLWxxZCxvYmd1anBmZ3NmbWJvd3pwam5zb2Y5amUjd2tmek9md3dmcXBiI3BrbHF3S2ZxYWZxd3B3cWpoZnAjZHFsdnNwLW9mbWR3a2VvamRrd3BsdWZxb2JzcG9sdG96I29mcHBmcSNwbGBqYm8jPyxzPVx0XG5cbmp3I2ptd2xxYm1oZmcjcWJ3ZiNsZXZvPQ5cdCMjYnd3Zm5zd3NianEjbGVuYmhmI2p3SGxtd2Jod0Jtd2xtamxrYnVqbWQjcWJ3am1kcCNiYHdqdWZwd3FmYm5wd3Fic3NmZyEqLWBwcCtrbHB3am9mb2ZiZyN3bG9qd3dvZiNkcWx2c3AvU2pgd3ZxZi4uPQ5cdA5cdCNxbHRwPiEjbGFpZmB3am11ZnFwZj9lbGx3ZnFAdnB3bG5VPT9fLHBgcXBsb3VqbWRAa2JuYWZxcG9idWZxenRsdm1nZmd0a2ZxZmJwIj4jJHZtZ2VscSNib29zYnF3b3ojLnFqZGt3OUJxYmFqYm1hYmBoZmcjYGZtd3ZxenZtancjbGVubGFqb2YuRnZxbHNmL2pwI2tsbmZxanBoI2xlZ2ZwanFmZ0Bvam13bG1gbHB3I2xlYmRmI2xlI2FmYGxuZiNtbG1mI2xlcyVydmx3OE5qZ2dvZiNmYmckKlgzQHFqd2pgcHB3dmdqbHA9JWBsc3o4ZHFsdnMhPWJwcGZuYW9uYmhqbWQjc3FmcHBmZ3RqZ2Rmdy1zcDkhIzwjcWZhdmpvd2F6I3BsbmZFbHFuZnEjZmdqd2xxcGdmb2J6ZmdAYm1sbWpga2JnI3drZnN2cGtqbWRgb2JwcD4hYXZ3I2JxZnNicXdqYm9BYmF6b2xtYWx3d2xuI2BicXFqZnFAbG5uYm1nandwI3ZwZkJwI3Rqd2tgbHZxcGZwYiN3a2pxZ2dmbWx3ZnBib3BsI2ptS2x2cHdsbTEzc3s4IT1iYGB2cGZnZ2x2YW9mI2RsYm8jbGVFYm5sdnAjKi1ham1nK3NxamZwd3AjTG1vam1mam0jSXZvenB3IygjIWRgbG1wdm93Z2Zgam5ib2tmb3Nldm9xZnVqdWZnanAjdWZxenEkKCRqc3dvbHBqbWQjZWZuYm9mcGpwI2JvcGxwd3FqbWRwZ2J6cCNsZWJxcWp1Ym9ldnd2cWYjP2xhaWZgd2VscWBqbWRQd3FqbWQrISMsPVx0XG5cbmtmcWYjanBmbWBsZ2ZnLSMjV2tmI2Fib29sbG1nbG1mI2F6LGBsbm5sbWFkYGxvbHFvYnQjbGUjSm1namJtYmJ1bGpnZmdhdncjd2tmMXN7IzBze2lydmZxei1iZXdmcSNic2xvamB6LW5mbSNibWdlbGx3ZnEuPiN3cXZmOGVscSN2cGZwYHFmZm0tSm1namJtI2puYmRmIz5lYm5qb3ova3d3czksLCMlbWFwczhncWp1ZnFwZndmcW1ib3BibmYjYnBtbHdqYGZndWpmdGZxcH4qKyo4XHQjanAjbmxxZnBmYnBsbXBlbHFuZnEjd2tmI21mdGpwI2l2cHdgbG1wZm13I1BmYnFga3RicCN3a2Z0a3ojd2tmcGtqc3NmZ2FxPT9hcT10amd3azkja2ZqZGt3Pm5iZ2YjbGVgdmpwam1manAjd2tid2IjdWZxeiNCZ25qcWJvI2Vqe2ZnOG1scW5ibyNOanBwamxtU3FmcHAvI2xtd2Jxamxga2JxcGZ3d3F6I3dsI2ptdWJnZmc+IXdxdmYhcHNiYGptZGpwI25scHdiI25scWYjd2x3Ym9vemVib28jbGV+KjgOXHQjI2pubmZtcGZ3am5mI2ptcGZ3I2x2d3Bid2pwZXp3bCNlam1nZ2x0bSN3bG9sdyNsZSNTb2J6ZnFwam0jSXZtZnJ2Ym13dm5tbHcjd2tmd2puZiN3bGdqcHdibXdFam1tanBrcHFgIz4jK3BqbWRvZiNrZm9zI2xlRGZxbmJtI29idCNibWdvYmFmb2ZnZWxxZnB3cGBsbGhqbWRwc2JgZiE9a2ZiZ2ZxLnRmb28jYnBQd2Jtb2Z6YXFqZ2RmcCxkb2xhYm9AcWxid2piI0JhbHZ3I1gzXjhcdCMjancvI2JtZ2RxbHZzZmdhZmptZCNiKnh3a3FsdGtmI25iZ2ZvamRrd2ZxZndramBib0VFRUVFRSFhbHd3bG4hb2poZiNiI2Zuc29senBvanVmI2ptYnAjcGZmbXNxam13ZnFubHB3I2xldmEub2ptaHFmaWZgd3BibWcjdnBmam5iZGYhPXB2YGBmZmdlZmZnam1kTXZgb2ZicWptZWxxbmJ3bCNrZm9zVGxuZm0kcE1mandrZnFOZntqYGJtc3Fsd2ZqbT93YmFvZiNheiNuYm16a2Zib3drem9idHB2andnZnVqcGZnLXN2cGsreHBmb29mcXBwam5zb3ojV2txbHZkay1gbGxoamYjSm5iZGYrbG9nZnEhPXZwLWlwIT0jUGptYGYjdm1qdWZxcG9icWRmcSNsc2ZtI3dsIi4uI2ZtZ29qZnAjam0kXio4Dlx0IyNuYnFoZnd0a2wjanAjKyFHTE5AbG5ibWJkZmdsbWYjZWxxd3pzZmxlI0hqbWRnbG5zcWxlandwc3Fsc2xwZndsI3BrbHRgZm13ZnE4bmJnZiNqd2dxZnBwZmd0ZnFmI2ptbmp7d3ZxZnNxZmBqcGZicWpwam1kcHFgIz4jJG5iaGYjYiNwZmB2cWZnQWJzd2pwd3Vsd2ptZCNcdFxuXG51YnEjTmJxYGsjMWRxZnQjdnNAb2puYndmLXFmbmx1ZnBoam9vZmd0Ynojd2tmPyxrZmJnPWViYGYjbGViYHdqbWQjcWpka3chPXdsI3RscWhxZmd2YGZwa2JwI2tiZ2ZxZmB3Zmdwa2x0Kyo4YmB3amxtPmFsbGgjbGVibSNicWZiPj4jIWt3dz9rZmJnZnFcdD9rd25vPWBsbWVscW5lYmBqbWQjYGxsaGpmLXFmb3ojbG1rbHB3ZmcjLWB2cHdsbmtmI3RmbXdhdncjZWxxcHNxZmJnI0VibmpveiNiI25mYm1wbHZ3I3drZmVscXZucC1lbGx3YmRmIT1ObGFqb0BvZm5mbXdwISNqZz4hYnAja2pka2ptd2ZtcGYuLj0/Ii4uZWZuYm9mI2pwI3BmZm1qbnNvamZncGZ3I3drZmIjcHdid2ZibWcja2pwZWJwd2Zwd2FmcGpnZnBhdnd3bG1cXGFsdm1nZmchPT9qbmQjSm1lbGFse2Z1Zm13cC9iI3psdm1kYm1nI2JxZk1id2p1ZiNga2Zic2ZxV2puZmx2d2JtZyNrYnBmbWRqbWZwdGxtI3drZitubHB3b3pxamRrdzkjZWptZyNiIy5hbHd3bG5TcWptYGYjYnFmYiNsZW5scWYjbGVwZmJxYGtcXG1id3ZxZi9vZmRib296c2ZxamxnL29ibWcjbGVscSN0andram1ndmBmZ3NxbHVqbWRuanBwam9mb2xgYm9vekJkYmptcHd3a2YjdGJ6aCVydmx3OHN7OCE9Dlx0c3Zwa2ZnI2JhYm1nbG1tdm5mcWJvQGZxd2JqbUptI3dranBubHFmI2ptbHEjcGxuZm1ibmYjanBibWcvI2ptYHFsdG1mZ0pQQU0jMy5gcWZid2ZwTGB3bGFmcW5ieiNtbHdgZm13ZnEjb2J3ZiNqbUdmZWZtYGZmbWJgd2ZndGpwayN3bGFxbGJnb3pgbGxvam1kbG1vbGJnPmp3LSNXa2ZxZmBsdWZxTmZuYWZxcGtmamRrdyNicHB2bmZwP2t3bm89XHRzZmxzb2Ytam0jbG1mIz50am1nbHRlbGx3ZnFcXGIjZGxsZyNxZmhvYm5ibHdrZnFwL3dsI3dranBcXGBsbGhqZnNibWZvIT1PbG1nbG0vZ2Zlam1mcGBxdnBrZmdhYnN3anBuYGxicHdib3B3Ynd2cCN3andvZiEjbmx1ZiN3bG9scHcjam1hZnd3ZnEjam5zb2pmcHFqdWJvcXpwZnF1ZnFwI1B6cHdmblNmcWtic3BmcCNibWcjYGxtd2ZtZ2VvbHRqbWRvYnB3ZmcjcWpwZiNqbURmbWZwanB1amZ0I2xlcWpwam1kI3BmZm4jd2xhdncjam0jYWJgaGptZGtmI3Rqb29kanVmbSNiZGp1am1kI2Bqd2pmcC1lb2x0I2xlI09id2ZxI2JvbyNhdndLamRrdGJ6bG1veiNhenBqZG0jbGVrZiNnbGZwZ2plZWZxcGFid3dmcXolYm5zOG9icGptZG9mcHdrcWZid3BqbXdmZGZxd2JoZiNsbXFmZXZwZmdgYm9vZmcjPlZQJWJuc1BmZiN3a2ZtYndqdWZwYXojd2tqcHB6cHdmbi1rZmJnI2xlOWtsdWZxL29mcGFqYm1wdnFtYm5mYm1nI2Jvb2Bsbm5sbSxrZmJnZnFcXFxcc2JxYm5wS2JxdWJxZyxzantmby1xZm5sdWJvcGwjb2xtZHFsb2YjbGVpbGptd296cGh6cGBxYlZtamBsZ2ZhcSMsPQ5cdEJ3b2Jtd2JtdmBvZnZwQGx2bXd6L3N2cWZveiNgbHZtdyE9ZmJwam96I2F2am9nI2JsbWBvamBoYiNkanVmbXNsam13ZnFrJXJ2bHc4ZnVmbXdwI2ZvcGYjeFx0Z2p3amxtcG1sdCN3a2YvI3Rqd2sjbmJtI3RrbGxxZCxUZmFsbWYjYm1nYGJ1Ym9xektmI2dqZmdwZmJ3d29mMzMvMzMzI3h0am1nbHRrYnVmI3dsamUrdGptZ2JtZyNqd3BwbG9mb3ojbiVydmx3OHFmbWZ0ZmdHZndxbGp3Ym5sbWRwd2Zqd2tmcSN3a2ZuI2ptUGZtYndscVZwPyxiPT9Iam1kI2xlRXFibWBqcC5zcWxndmBrZiN2cGZnYnF3I2JtZ2tqbiNibWd2cGZnI2F6cGBscWptZGJ3I2tsbmZ3bCNrYnVmcWZvYndmcGpham9qd3plYmB3amxtQXZlZWJvbG9qbWghPT90a2J3I2tmZXFmZiN3bEBqd3ojbGVgbG5mI2ptcGZgd2xxcGBsdm13ZmdsbWYjZ2J6bWZxdWx2cHBydmJxZiN+OGplK2Rsam0jdGtid2puZCEjYm9qcCNsbW96cGZicWBrLHd2ZnBnYnpvbGxwZm96UGxvbG5sbXBme3ZibyMuIz9iI2txbmZnanZuIUdMI01MVyNFcWJtYGYvdGp3ayNiI3RicSNibWdwZmBsbWcjd2JoZiNiIz0OXHQOXHQOXHRuYnFoZncta2pka3RiemdsbWYjam1gd2p1and6IW9icHchPWxhb2pkZmdxanBmI3dsIXZtZ2Zlam5iZ2Yjd2wjRmJxb3ojc3FianBmZ2ptI2p3cCNlbHEja2pwYndrb2Z3Zkl2c2p3ZnFaYmtsbCIjd2ZxbmZnI3BsI25ibXpxZmJvb3ojcC0jV2tmI2IjdGxuYm08dWJvdmY+Z2pxZmB3I3FqZGt3ISNhamB6YG9mYmBqbWQ+IWdieiNibWdwd2J3am1kUWJ3a2ZxL2tqZGtmcSNMZWVqYGYjYnFmI21sdHdqbmZwLyN0a2ZtI2Ijc2J6I2VscWxtI3dranAub2ptaCE9OGFscWdmcWJxbHZtZyNibW12Ym8jd2tmI01mdHN2dyN3a2YtYGxuISN3YmhqbSN3bGIjYXFqZmUram0jd2tmZHFsdnNwLTgjdGpnd2tmbXl6bmZwcGpuc29mI2ptI29id2Z4cWZ3dnFtd2tmcWJzemIjc2xqbXdhYm1tam1kam1ocCE9XHQrKjghI3FmYiNzb2JgZl92MzMwQGJiYWx2dyNid3E9Dlx0XG5cbmBgbHZtdyNkanVmcCNiP1BAUUpTV1Fiam90Ynp3a2ZuZnAsd2xsb2Fse0F6SmcrIXtrdm5ibXAvdGJ3YGtmcGptI3BsbmYjamUjK3RqYGxuam1kI2VscW5id3AjVm1nZnEjYXZ3I2ticGtibWdmZyNuYmdmI2F6d2tibSNqbWVmYnEjbGVnZm1sd2ZnLGplcWJuZm9mZXcjam11bG93YmRmam0jZmJga2IlcnZsdzhhYnBmI2xlSm0jbmJtenZtZ2ZxZGxxZmRqbmZwYmB3amxtIz8scz0OXHQ/dnB3bG5VYjglZHc4PyxqbnNscXdwbHEjd2tid25scHdveiMlYm5zOHFmI3BqeWY+IT8sYj0/LGtiI2BvYnBwc2JwcGp1ZktscHcjPiNUa2Z3a2ZxZWZxd2pvZlVicWpsdnA+WF44K2V2YGJuZnFicCw9Pyx3Zz1iYHdwI2JwSm0jcGxuZj0OXHQOXHQ/ImxxZGJtanAjP2FxIyw9QWZqaWptZGBid2JvL0xnZnZ3cGBrZnZxbHNmdmZ2cGhicWJkYmZqb2RmcHVmbXBoYmZwc2IvXWJuZm1wYmlmdnB2YnFqbHdxYmFiaWxuL0V7amBscy9NZGptYnBqZm5zcWZwanB3Zm5ibGB3dmFxZmd2cWJtd2ZiL11iZ2pxZm5zcWZwYm5sbmZtd2xtdmZwd3Fsc3FqbmZxYndxYnUvRXBkcWJgamJwbXZmcHdxYnNxbGBmcGxmcHdiZ2xwYGJvamdiZ3NmcXBsbWJtL1ZuZnFsYmB2ZnFnbG4vVnBqYGJuamZuYXFsbGVmcXdicGJvZHZtbHBzYi9BcGZwZmlmbnNvbGdmcWZga2xiZ2ZuL01wc3FqdWJnbGJkcWZkYnFmbW9iYGZwc2xwamFvZmtsd2ZvZnBwZnVqb29ic3FqbmZxbC9Wb3dqbmxmdWZtd2xwYnFga2p1bGB2b3d2cWJudmlmcWZwZm13cWJnYmJtdm1gamxmbmFicWRsbmZxYGJnbGRxYm1nZnBmcHd2Z2psbmZpbHFmcGVmYXFmcWxnanBmL11sd3ZxanBubGAvX2dqZGxzbHF3YmdiZnBzYmBqbGVibmpvamJibXdsbWpsc2Zxbmp3ZmR2YnFnYnFib2R2bWJwc3FmYGpscGJvZHZqZm1wZm13amdsdWpwandicHcvQXd2b2xgbG1sYGZxcGZkdm1nbGBsbXBmaWxlcWJtYGpibmptdndscHBmZHZtZ2J3Zm1mbmxwZmVmYHdscG4vTW9iZGJwZnBqL19tcWZ1anB3YmRxYm1iZ2JgbG5zcWJxam1kcWZwbGRicWAvQWJiYGBqL19tZmB2YmdscXJ2amZtZnBqbWBvdnBsZ2ZhZnEvTW5id2ZxamJrbG5hcWZwbnZmcHdxYnNsZ3EvQWJuYi9dYm1iL1Zvd2puYmZwd2JubHBsZWpgamJvd2JuYWpmbW1qbWQvVm1wYm92Z2xwc2xnZm5scG5maWxxYnFzbHBqd2psbWF2cGptZnBwa2xuZnNiZGZwZmB2cWp3em9ibWR2YmRmcHdibWdicWdgYm5zYmpkbWVmYnd2cWZwYGJ3ZmRscXpme3dmcW1ib2Bram9ncWZtcWZwZnF1ZmdxZnBmYnFga2Z7YGtibWRmZWJ1bHFqd2Z3Zm5zb2J3Zm5qb2p3YnF6am1ndnB3cXpwZnF1amBmcG5id2ZxamJvc3FsZ3Zgd3B5LmptZ2Z7OWBsbm5mbXdwcGxld3RicWZgbG5zb2Z3ZmBib2ZtZ2Jxc29id2VscW5icXdqYG9mcHFmcnZqcWZnbmx1Zm5mbXdydmZwd2psbWF2am9nam1kc2xvandqYHBzbHBwamFvZnFmb2pkamxtc2t6cGpgYm9lZmZnYWJgaHFmZGpwd2Zxc2pgd3ZxZnBnanBiYW9mZ3NxbHdsYGxvYnZnamZtYGZwZnd3am1kcGJgd2p1and6Zm9mbmZtd3BvZmJxbWptZGJtendram1kYmFwd3FiYHdzcWxkcWZwcGx1ZnF1amZ0bmJkYnlqbWZmYGxtbG5qYHdxYmptam1kc3FmcHB2cWZ1YnFqbHZwIz9wd3FsbWQ9c3Fsc2Zxd3pwa2xzc2ptZHdsZGZ3a2ZxYmd1Ym1gZmdhZmtidWpscWdsdG1vbGJnZWZid3ZxZmdlbGx3YWJvb3Bmb2Zgd2ZnT2JtZHZiZGZnanB3Ym1gZnFmbmZuYWZxd3FiYGhqbWRzYnBwdGxxZ25sZ2plamZncHd2Z2Ztd3BnanFmYHdvemVqZGt3am1kbWxxd2tmcW1nYndiYWJwZmVmcHdqdWJvYXFmYmhqbWRvbGBid2psbWptd2ZxbWZ3Z3Fsc2dsdG1zcWJgd2pgZmZ1amdmbWBmZXZtYHdqbG1uYnFxamJkZnFmcHNsbXBmc3FsYW9mbnBtZmRid2p1ZnNxbGRxYm5wYm1ib3pwanBxZm9mYnBmZ2FibW1mcSE9c3ZxYGticGZzbG9qYGpmcHFmZGpsbWJvYHFmYndqdWZicWR2bmZtd2FsbGhuYnFocWZlZnFxZnFga2ZuamBib2dqdWpwamxtYGJvb2FiYGhwZnNicWJ3ZnNxbGlmYHdwYGxtZW9qYHdrYnFndGJxZmptd2ZxZnB3Z2ZvanVmcXpubHZtd2JqbWxhd2JqbWZnPiNlYm9wZjhlbHErdWJxI2JgYGZzd2ZnYGJzYmBqd3pgbG5zdndmcWpnZm13and6YmpxYHFiZXdmbnNvbHpmZ3NxbHNscGZnZ2xuZnB3amBqbWBvdmdmcHNxbHVqZ2Zna2xwc2p3Ym91ZnF3amBib2Bsb29ic3BmYnNzcWxiYGtzYnF3bWZxcG9sZGwhPT9iZ2J2ZGt3ZnFidndrbHEhI2B2b3d2cWJvZWJuam9qZnAsam5iZGZwLGJwcGZuYW96c2x0ZnFldm93ZmJga2ptZGVqbWpwa2ZnZ2pwd3FqYHdgcWp3amBib2Bkai5ham0sc3Zxc2xwZnBxZnJ2anFmcGZvZmB3amxtYWZgbG5qbWRzcWx1amdmcGJgYmdmbmpgZntmcWBqcGZiYHd2Ym9vem5mZ2pgam1mYGxtcHdibXdiYGBqZ2Ztd05iZGJ5am1mZ2xgdm5mbXdwd2Jxd2ptZGFsd3dsbiE9bGFwZnF1Zmc5IyVydmx3OGZ7d2ZtZ2Znc3FmdWpsdnBQbGV3dGJxZmB2cHdsbmZxZ2ZganBqbG1wd3FmbWR3a2dmd2Jqb2ZncG9qZGt3b3pzb2JtbWptZHdme3dicWZiYHZxcWZtYHpmdWZxemxtZnB3cWJqZGt3d3FibXBlZnFzbHBqd2p1ZnNxbGd2YGZna2ZxandiZGZwa2pzc2ptZGJhcGxvdndmcWZgZmp1ZmdxZm9mdWJtd2F2d3dsbSEjdWpsb2ZtYGZibXp0a2ZxZmFmbWZlandwb2J2bWBrZmdxZmBmbXdvemJvb2pibWBmZWxvb2x0Zmdudm93anNvZmF2b29md2ptam1gb3ZnZmdsYGB2cXFmZ2ptd2ZxbWJvXCcrd2tqcCotcWZzdmFvamA9P3dxPT93Z2BsbWRxZnBwcWZgbHFnZmd2b3dqbmJ3ZnBsb3Z3amxtP3ZvI2pnPiFnanBgbHVmcUtsbmY/LGI9dGZhcGp3ZnBtZnd0bHFocGJvd2tsdmRrZm13anFmb3puZm5scWpib25mcHBiZGZwYGxtd2ptdmZiYHdqdWYhPXBsbmZ0a2J3dWpgd2xxamJUZnB3ZnFtIyN3andvZj4hT2xgYndqbG1gbG13cWJgd3VqcGp3bHFwR2x0bW9sYmd0andrbHZ3I3FqZGt3IT1cdG5mYnB2cWZwdGpnd2sjPiN1YnFqYmFvZmptdWxvdWZndWpxZGptamJtbHFuYm9vemtic3NmbWZnYmBgbHZtd3Bwd2JtZ2ptZG1id2psbWJvUWZkanB3ZnFzcWZzYnFmZ2BsbXdxbG9wYmBgdnFid2ZhanF3a2dienB3cWJ3ZmR6bGVlamBqYm9kcWJza2pgcGBxam5qbWJvc2xwcGphb3pgbG1wdm5mcVNmcXBsbWJvcHNmYmhqbWR1Ym9qZ2J3ZmJga2pmdWZnLWlzZCEjLD1uYmBram1mcD8sazE9XHQjI2hmenRscWdwZXFqZm1nb3phcWx3a2ZxcGBsbmFqbWZnbHFqZGptYm9gbG5zbHBmZ2Z7c2Zgd2ZnYmdmcnZid2ZzYmhqcHdibWVsb29sdCEjdWJvdmJhb2Y/LG9iYWZvPXFmb2J3anVmYXFqbWRqbWRqbWBxZmJwZmRsdWZxbWxxc292ZGptcCxPanB3I2xlI0tmYmdmcSE9ISNtYm5mPiEjKyVydmx3OGRxYmd2YndmPyxrZmJnPVx0YGxubmZxYGZuYm9ienBqYmdqcWZgd2xxbmJqbXdiam04a2ZqZGt3OXBga2Zndm9mYGtibWRqbWRhYmBoI3dsI2Bid2tsb2pgc2J3d2ZxbXBgbG9scTkjIGRxZmJ3ZnB3cHZzc29qZnBxZm9qYmFvZj8sdm89XHRcblxuP3Bmb2ZgdyNgandqeWZtcGBvbHdram1kdGJ3YGtqbWQ/b2ojamc+IXBzZmBqZWpgYGJxcXpqbWRwZm13Zm1gZj9gZm13ZnE9YGxtd3FicHd3a2ptaGptZGBid2BrK2YqcGx2d2tmcW1OamBrYmZvI25mcWBrYm13YGJxbHZwZm9zYmdnam1kOWptd2ZxamxxLXBzb2p3KyFvanlid2psbUxgd2xhZnEjKnhxZnd2cW1qbnNxbHVmZy4uJWR3OFx0XHRgbHVmcWJkZmBrYmpxbmJtLXNtZCEjLD1wdmFpZmB3cFFqYGticWcjdGtid2Z1ZnFzcWxhYmFvenFmYGx1ZnF6YWJwZmFib29pdmdkbmZtd2BsbW1mYHctLWBwcCEjLD0jdGZhcGp3ZnFmc2xxd2ZnZ2ZlYnZvdyEsPT8sYj0OXHRmb2Zgd3FqYHBgbHdvYm1nYHFmYndqbG1ydmJtd2p3ei0jSlBBTSMzZ2pnI21sdyNqbXB3Ym1gZi5wZmJxYGsuISNvYm1kPiFwc2ZiaGZxcEBsbnN2d2ZxYGxtd2JqbXBicWBranVmcG5qbWpwd2ZxcWZiYHdqbG1nanBgbHZtd0p3Ym9qYm1sYHFqd2ZxamJwd3FsbWRvejkjJGt3d3M5JHBgcWpzdyRgbHVmcWptZGxlZWZxam1kYnNzZmJxZmdBcWp3anBrI2pnZm13amV6RWJgZmFsbGhtdm5mcWx2cHVma2pgb2ZwYGxtYGZxbXBCbmZxamBibWtibWdvam1kZ2p1I2pnPiFUam9vamJuI3NxbHVqZ2ZxXFxgbG13Zm13YmBgdnFiYHpwZmB3amxtI2JtZ2ZxcGxtZW9me2phb2ZAYndmZGxxem9idHFmbWBmP3BgcWpzdz1vYnpsdnc+IWJzc3FsdWZnI25ie2pudm5rZmJnZnEhPT8sd2Jhb2Y9UGZxdWpgZnBrYm5qb3dsbWB2cXFmbXcjYGJtYmdqYm1ga2JtbWZvcCx3a2ZuZnAsLGJxd2pgb2Zsc3dqbG1ib3NscXd2ZGJvdWJvdmY+ISFqbXdmcXVib3RqcWZvZnBwZm13andvZmdiZGZtYGpmcFBmYnFgayEjbmZicHZxZmd3a2x2cGJtZ3BzZm1nam1kJWtmb29qczhtZnQjR2J3ZiEjcGp5Zj4hc2JkZk1ibmZuamdnb2YhIyEjLD0/LGI9a2pnZ2ZtIT1wZnJ2Zm1gZnNmcXBsbWJvbHVmcWVvbHRsc2ptamxtcGpvb2ptbGpwb2ptaHAhPVx0XG4/d2p3b2Y9dWZxcGpsbXBwYnd2cWdiendmcW5qbWJvandmbnNxbHNmbWRqbWZmcXBmYHdqbG1wZ2ZwamRtZnFzcWxzbHBibz4hZWJvcGYhRnBzYi9dbG9xZm9mYnBmcHB2YW5qdyEjZnElcnZsdzhiZ2dqd2psbXB6bnN3bG5wbHFqZm13ZmdxZnBsdnFgZnFqZGt3IT0/c29mYnB2cWZwd2J3amxtcGtqcHdscXotb2ZidWptZCMjYWxxZ2ZxPmBsbXdmbXdwYGZtd2ZxIT0tXHRcdFBsbmYjZ2pxZmB3Zmdwdmp3YmFvZmF2b2RicWpiLXBrbHQrKjhnZnBqZG1mZ0RmbWZxYm8jYGxtYGZzd3BGe2Juc29mcHRqb29qYm5wTHFqZGptYm8hPT9wc2JtPXBmYnFgayE9bHNmcWJ3bHFxZnJ2ZnB3cGIjJXJ2bHc4Ym9vbHRqbWRHbGB2bmZtd3FmdWpwamxtLSNcdFx0V2tmI3psdnFwZm9lQGxtd2JgdyNuamBramRibUZtZG9qcGsjYGxvdm5hamJzcWpscWp3enNxam13am1kZ3FqbWhqbWRlYmBqb2p3enFmd3ZxbWZnQGxtd2ZtdyNsZWVqYGZxcFF2cHBqYm0jZGZtZnFid2YuOzs2Oi4yIWptZ2pgYndmZWJuam9qYnEjcnZib2p3em5icWRqbTkzI2BsbXdmbXd1amZ0c2xxd2BsbXdiYHdwLndqd29mIT1zbHF3YmFvZi1vZm1kd2sjZm9qZGphb2ZqbXVsb3VmcGJ3b2Jtd2pgbG1vbGJnPiFnZmVidm93LXB2c3NvamZnc2J6bmZtd3Bkb2xwcGJxelx0XHRCZXdmcSNkdmpnYm1gZj8sd2c9P3dnZm1gbGdqbWRuamdnb2YhPWBibmYjd2wjZ2pwc29ienBwYGx3d2pwa2lsbWJ3a2JtbmJpbHFqd3p0amdkZndwLWBvam1qYGJvd2tiam9ibWd3ZmJga2ZxcD9rZmJnPVx0XG5iZWVmYHdmZ3B2c3NscXdwc2xqbXdmcTh3bFB3cWptZD8scG5ib289bGhvYmtsbmJ0am9vI2FmI2ptdWZwd2xxMyEjYm93PiFrbG9qZ2J6cFFmcGx2cWBmb2pgZm1wZmcjK3RramBrIy0jQmV3ZnEjYGxtcGpnZnF1anBqd2ptZGZ7c29scWZxc3FqbmJxeiNwZmJxYGshI2JtZ3FsamchcnZqYGhveiNuZmZ3am1kcGZwd2puYndmOHFmd3ZxbSM4YGxvbHE5ICNrZmpka3c+YnNzcWx1Ym8vIyVydmx3OCNga2ZgaGZnLW5qbS1pcCFuYmRtZndqYD0/LGI9PyxrZWxxZmBicHctI1Rram9mI3drdnFwZ2J6Z3VmcXdqcGYlZmJgdndmOGticEBvYnBwZnVib3Zid2ZscWdmcWptZGZ7anB3am1kc2J3amZtd3AjTG1vam1mI2Bsb2xxYmdsTHN3amxtcCFgYm5zYWZvbz8iLi4jZm1nPyxwc2JtPT8/YXEjLD0OXHRcXHNsc3ZzcH9wYGpmbWBmcC8lcnZsdzgjcnZib2p3eiNUam1nbHRwI2JwcGpkbWZna2ZqZGt3OSM/YSNgb2JwcG9mJXJ2bHc4I3Vib3ZmPiEjQGxuc2JtemZ7Ym5zb2ZwP2plcWJuZiNhZm9qZnVmcHNxZnBmbXdwbmJxcGtib29zYnF3I2xlI3NxbHNmcW96Ki1cdFx0V2tmI3die2xtbG56bnZgayNsZSM/LHBzYm09XHQhI2did2IucHF3dmR2L0ZwcGBxbG9vV2wjc3FsaWZgdz9rZmJnPQ5cdGJ3d2xxbWZ6Zm5za2JwanBwc2xtcGxxcGVibWB6YWx7dGxxb2ckcCN0am9nb2plZmBrZmBoZmc+cGZwcGpsbXBzcWxkcWJubnN7OGVsbXcuI1NxbGlmYHdpbHZxbWJvcGFmb2pmdWZndWJgYndqbG13a2xuc3BsbW9qZGt3am1kYm1nI3drZiNwc2ZgamJvI2FscWdmcT4zYGtmYGhqbWQ/LHdhbGd6PT9hdnd3bG0jQGxuc29md2Zgb2ZicWVqe1x0P2tmYmc9XHRicXdqYG9mIz9wZmB3amxtZWptZ2ptZHBxbG9mI2ptI3Nsc3ZvYnEjI0xgd2xhZnF0ZmFwandmI2Z7c2xwdnFmdnBmZyN3bCMjYGtibWRmcGxzZnFid2ZnYG9qYGhqbWRmbXdmcWptZGBsbm5ibWdwam1lbHFuZmcjbXZuYWZxcCMjPyxnanU9YHFmYndqbWRsbVB2YW5qd25icXpvYm1nYGxvb2ZkZnBibWJvendqYG9qcHdqbWRwYGxtd2Jgdy1vbGRkZmdKbWJndWpwbHF6cGphb2ptZHBgbG13Zm13IXAlcnZsdzgqcC0jV2tqcCNzYmBoYmRmcGBrZmBoYWx7cHZkZGZwd3BzcWZkbWJtd3dsbmxxcWx0cHNiYGptZD5qYGxtLXNtZGlic2JtZnBmYGxnZmFicGZhdnd3bG0hPWRibmFvam1kcHZgayNicCMvI3Rram9mIz8scHNibT0jbmpwcGx2cWpwc2xxd2ptZHdsczkyc3sjLT8scHNibT13Zm1wamxtcHRqZ3drPiExb2J5em9sYmdtbHVmbmFmcXZwZmcjam0ja2ZqZGt3PiFgcWpzdyE9XHQlbWFwczg/LD93cT0/d2cja2ZqZGt3OTEsc3FsZ3Zgd2Bsdm13cXojam1gb3ZnZiNlbGx3ZnEhIyVvdzgiLi4jd2p3b2YhPT8saXJ2ZnF6LT8sZWxxbj1cdCtcdkJsXGJRfyorXHZVbQVHeCprcXVid3Boamp3Ym9qYm1scWxuL05tKG93L1BxaC9LZjRLNF00QzVkd2JuYWovRW1tbHdqYGpicG5mbXBiaWZwc2ZxcGxtYnBnZnFmYGtscG1iYGpsbWJvcGZxdWpgamxgbG13YmB3bHZwdmJxamxwc3FsZHFibmJkbGFqZnFtbGZuc3FmcGJwYm12bWBqbHB1Ym9mbWBqYmBsb2xuYWpiZ2Zwc3YvRXBnZnNscXdmcHNxbHpmYHdsc3FsZ3Zgd2xzL1Zhb2pgbG1scGx3cWxwa2pwd2xxamJzcWZwZm13Zm5qb29sbWZwbmZnamJtd2ZzcWZkdm13YmJtd2ZxamxxcWZgdnFwbHBzcWxhb2ZuYnBibXdqYmRsbXZmcHdxbHBsc2ptai9fbWpuc3FqbmpxbmpmbXdxYnBibi9FcWpgYnVmbWdmZ2xxcGxgamZnYmdxZnBzZmB3bHFmYm9qeWJxcWZkanB3cWxzYm9iYXFicGptd2ZxL0VwZm13bG1gZnBmcHNmYGpib25qZm5hcWxwcWZib2pnYmdgL19xZ2xhYnlicWJkbHlicy9NZGptYnBwbGBqYm9mcGFvbHJ2ZmJxZGZwd2ovX21ib3J2am9mcXBqcHdmbmJwYGpmbWBqYnBgbG5zb2Z3bHVmcXBqL19tYGxuc29md2JmcHd2Z2pscHMvVmFvamBibGFpZndqdWxib2pgYm13ZmF2cGBiZ2xxYGJtd2pnYmdmbXdxYmdicGJgYGpsbWZwYnFga2p1bHBwdnNmcWpscW5iemxxL0FiYm9mbmJtamJldm1gai9fbS9Wb3dqbmxwa2JgamZtZ2xicnZmb29scGZnamBqL19tZWZxbWJtZ2xibmFqZm13ZmViYGZhbGxobXZmcHdxYnBgb2pmbXdmcHNxbGBmcGxwYWJwd2Jtd2ZzcWZwZm13YnFmc2xxd2JxYGxtZHFmcGxzdmFvamBicWBsbmZxYGpsYGxtd3Fid2xpL191Zm1mcGdqcHdxandsdy9FYG1qYGJgbG1pdm13bGZtZnFkL0Fid3FiYWJpYnFicHd2cWpicHFmYGpmbXdmdndqb2p5YnFhbG9mdy9BbXBib3ViZ2xxYGxxcWZgd2J3cWJhYmlscHNxam5mcWxwbWZkbGBqbHBvamFmcXdiZ2dmd2Jvb2Zwc2Jtd2Jvb2JzcS9fe2pubGJvbmZxL0FiYm1qbmJvZnBydmovRW1mcGBscWJ5L19tcGZgYGovX21hdnBgYm1nbGxzYGpsbWZwZnt3ZnFqbHFgbG1gZnN3bHdsZ2J1L0FiZGJvZnEvQWJmcGBxamFqcW5mZ2pgam1ib2pgZm1gamJgbG1wdm93YmJwc2Zgd2xwYHEvQXdqYGJnL19vYnFmcGl2cHdqYGpiZ2ZhZnEvTW1zZnEvQWxnbG1mYGZwandibmJtd2ZtZnFzZnJ2Zi9dbHFmYGphamdid3FqYXZtYm93Zm1mcWplZmBibWBqL19tYGJtYnFqYnBnZnBgYnFkYmdqdWZxcGxwbmJvb2xxYGJxZnJ2amZxZncvRWBtamBsZ2ZhZnEvQWJ1anVqZm1nYmVqbWJteWJwYmdmb2Jtd2Zldm1gamxtYmBsbXBmaWxwZ2plL0Fgam9ganZnYmdmcGJtd2pkdmJwYnVibXliZ2J3L0VxbmptbHZtamdiZ2ZwcC9NbWBrZnlgYm5zYi9dYnBsZXdsbWpgcWZ1anB3YnBgbG13amZtZnBmYHdscWZwbmxuZm13bHBlYmB2b3diZ2BxL0VnandsZ2p1ZnFwYnBwdnN2ZnB3bGViYHdscWZwcGZkdm1nbHBzZnJ2Zi9dYjxfPFI8WDxcXDxZPW08VzxUPFk9bT1uPWA8XT1nPFc8UjxdPWc9bj1gPWE9bjxSPFA8eT1tPFc8VD1uPFI8XzxSPFA8WTxRPWM8Xj1tPFk9aT1hPW48UjxVPFg8XFw8WjxZPF09ZzxXPFQ8XzxSPFg9bzxYPFk8UT1gPWE9bjxSPW48XT1nPFc8XFw9bTxZPF09YzxSPFg8VDxRPW08WTxdPFk8UTxcXDxYPFI9bTxcXDxVPW49aDxSPW48UjxRPFk8XzxSPW08XjxSPFQ9bTxePFI8VTxUPF89bD1nPW48UjxaPFk8Xj1tPFk8UD1tPF48Uj1iPFc8VD1kPWA9YT1uPFQ9aTxTPFI8VjxcXDxYPFE8WTxVPFg8UjxQPFxcPFA8VD1sPFxcPFc8VDxdPFI9bjxZPFA9bz1pPFI9bj1jPFg8Xj1vPWk9bTxZPW48VDxXPWI8WDxUPFg8WTxXPFI8UDxUPWw8WT1uPFk8XT1jPW08XjxSPFk8XjxUPFg8WT1rPFk8XzxSPWE9bjxUPFA9bT1rPFk9bj1uPFk8UD1nPWo8WTxRPWc9bT1uPFxcPFc8XjxZPFg9YD1uPFk8UDxZPF48UjxYPWc9bjxZPF08WTxePWc9ZDxZPFE8XFw8UDxUPW48VDxTPFxcPW48UjxQPW88Uz1sPFxcPF48VzxUPWo8XFw8UjxYPFE8XFw8XzxSPFg9ZzxbPFE8XFw9YjxQPFI8Xz1vPFg9bD1vPF88Xj1tPFk8VTxUPFg8WT1uPFY8VDxRPFI8UjxYPFE8UjxYPFk8VzxcXDxYPFk8VzxZPW09bDxSPFY8VD1iPFE9YzxePFk9bT1gPHk9bT1uPWA9bDxcXDxbPFxcPFE8XFw9ZDxUNEs1aDVoNWs0SzVoNEY1ZjRANWk1ZjRVNEI0SzRZNEU0SzVoNFxcNWY0VTVoNWY1azRANEM1ZjRDNEs1aDRONWo0SzVoNF00QzRGNEE1bzVpNFk1bTRBNEU1bzRLNWo0RjRLNWg1aDVmNWY1bzVkNWo0WDRENW80RTVtNWY1azRLNEQ1ajRLNEY0QTVkNEs0TTRPNW80RzRdNEI1aDRLNWg0SzVoNEE0RDRDNWg1ZjVoNEM0XTVkNF80SzRaNFY0WzRGNW81ZDVqNWs1ajRLNW80XzRLNEE0RTVqNEs0QzVmNEs1aDRbNEQ0VTVoNWY1bzRYNW80XTRLNWY1aTVvNWo1aTVqNWs0SzRYNF01bzRFNF00SjVmNF81ajRYNWY0WzVpNEs0XFw0SzRLNWg1bTVqNFg0RDRLNEQ0RjRVNEQ0XTRdNEE1aTRFNW80SzVtNEU1ZjVuNWQ1aDVpNF01bzReNW81aDVpNEU0TzRBNWk0QzVuNWg0RDVmNWY0VTVqNWY0WTVkNF00RTRbNF01ZjVuNFg0SzRdNW80QDVkNEs1aDRPNEI0XTVlNWk0VTVqNEs0SzRENEE0RzRVNF01ZDRaNEQ0WDVvNWg1aTRfNEA1aDRENWo0SzVqNEI0SzVoNEM1bzRGNEs0RDVvNWg1ZjRFNEQ0QzVkNWo0TzVmNFo0SzVmNWQ0QDRDNW00XTVmNW41bzRGNEQ0RjRPNW00WjVoNWk0WzRENEI0SzVvNEc0XTRENEs0XTVvNEs1bTRaNWg0SzRBNWg1ZTVqNW00XzVrNE81ZjRLNWk0XTRDNWQ0QzRPNWo1azRLNEM1ZjVqNEs0SzVoNEs1ajVpNFU0XTRaNEY0VTVoNWk0QzRLNEI1aDVpNWk1bzVqAwMDAwMDAwMCAwIDAgMCAwEDAQMBAwEDBwMHAwcDBwMDAgFcMAcGBQQEBQYHXDABAgNcdlxuXHRcYg8OXHJcZlxmXHIOD1xiXHRcblx2ExIREBcWFRQUFRYXEBESExsaGRgfHh0cHB0eHxgZGhsTExMTAwMDAwMDAwMTExMTAgMDAwEDAwMBAwMDAgMDAwIDAwNcMAMDAxMTAwIDAwMCAwMTEwMCAwMDXHYDXHYDXHYDXHYDAwMCAwEDXDADBwMGAwUDBHFmcGx2cWBmcGBsdm13cWpmcHJ2ZnB3amxtcGZydmpzbmZtd2Bsbm52bWp3emJ1YmpvYmFvZmtqZGtvamRrd0dXRyx7a3dub25icWhmd2ptZGhtbHRvZmdkZnBsbmZ3a2ptZGBsbXdiam1mcWdqcWZgd2psbXB2YXBgcWphZmJndWZxd2pwZmBrYnFiYHdmcSEjdWJvdmY+IT8scGZvZmB3PUJ2cHdxYm9qYiEjYG9icHA+IXBqd3Zid2psbWJ2d2tscWp3emVsb29sdGptZHNxam5icWpvemxzZnFid2psbWBrYm9vZm1kZmdmdWZvbHNmZ2JtbG16bmx2cGV2bWB3amxtI2V2bWB3amxtcGBsbnNibWpmcHB3cXZgd3ZxZmJkcWZmbmZtdyEjd2p3b2Y+IXNsd2Ztd2pib2ZndmBid2psbWJxZHZuZm13cHBmYGxtZ2JxemBsc3pxamRrd29ibWR2YmRmcGZ7YG92cGp1ZmBsbWdqd2psbT8sZWxxbj0OXHRwd2J3Zm5mbXdid3dmbXdqbG1BamxkcWJza3p+I2ZvcGYjeFx0cGxvdndqbG1wdGtmbSN3a2YjQm1ib3p3amBwd2Zuc29id2ZwZ2JtZGZxbHZwcGJ3Zm9vandmZ2xgdm5mbXdwc3Zhb2pwa2Zxam5zbHF3Ym13c3Fsd2x3enNmam1lb3ZmbWBmJXFicnZsOD8sZmVlZmB3anVmZGZtZnFib296d3FibXBlbHFuYWZidndqZXZvd3FibXBzbHF3bHFkYm1qeWZnc3Zhb2pwa2Znc3FsbmptZm13dm13am8jd2tmd2t2bmFtYmpvTWJ3amxtYm8jLWVsYHZwKyo4bHVmcSN3a2YjbmpkcWJ3amxtYm1tbHZtYGZnZWxsd2ZxIT1cdGZ7YGZzd2psbW9mcHAjd2tibWZ7c2ZtcGp1ZmVscW5id2psbWVxYm5mdGxxaHdmcXFqd2xxem1namBid2psbWB2cXFmbXdvemBvYnBwTWJuZmBxandqYGpwbndxYmdqd2psbWZvcGZ0a2ZxZkJvZntibWdmcWJzc2xqbXdmZ25id2ZxamJvcGFxbGJnYGJwd25mbXdqbG1mZ2JlZWpvamJ3Zj8sbHN3amxtPXdxZmJ3bmZtd2dqZWVmcWZtdyxnZmVidm93LVNxZnBqZ2Ztd2xtYG9qYGg+IWFqbGRxYnNremx3a2ZxdGpwZnNmcW5ibWZtd0VxYm0vS2JqcEtsb296dGxsZ2Z7c2JtcGpsbXB3Ym1nYnFncD8scHd6b2Y9XHRxZmd2YHdqbG1HZmBmbmFmcSNzcWZlZnFxZmdAYm5hcWpnZGZsc3NsbWZtd3BBdnBqbWZwcCNgbG1ldnBqbG09XHQ/d2p3b2Y9c3FmcGZtd2ZnZntzb2JqbWZnZ2xmcCNtbHcjdGxxb2d0amdmam13ZnFlYmBmc2xwandqbG1wbWZ0cHNic2ZxPyx3YmFvZj1cdG5sdm13YmptcG9qaGYjd2tmI2ZwcGZtd2pib2VqbWJtYGpib3Bmb2Zgd2psbWJgd2psbT4hLGJhYm1nbG1mZ0ZndmBid2psbXNicXBmSm13K3B3YmFqb2p3enZtYmFvZiN3bD8sd2p3b2Y9XHRxZm9id2psbXBNbHdmI3drYndmZWVqYGpmbXdzZnFlbHFuZmd3dGwjemZicXBQam1gZiN3a2Z3a2ZxZmVscWZ0cWJzc2ZxIT1ib3dmcW1id2ZqbWBxZmJwZmdBYnd3b2YjbGVzZnFgZmp1Zmd3cXpqbWQjd2xtZmBmcHBicXpzbHF3cWJ6Zmdmb2Zgd2psbXBGb2p5YmFmd2s/LGplcWJuZj1nanBgbHVmcXpqbXB2cWJtYGZwLW9mbWR3azhvZmRmbWdicXpEZmxkcWJza3pgYm1namdid2ZgbHFzbHFid2ZwbG5md2puZnBwZnF1amBmcC1qbWtmcWp3Zmc/LHB3cWxtZD1AbG5udm1qd3pxZm9qZGpsdnBvbGBid2psbXBAbG5uand3ZmZhdmpvZ2ptZHB3a2YjdGxxb2dtbCNvbG1kZnFhZmRqbW1qbWRxZmVmcWZtYGZgYm1tbHcjYWZlcWZydmZtYHp3enNqYGJvb3pqbXdsI3drZiNxZm9id2p1ZjhxZmBscWdqbWRzcWZwamdmbXdqbWp3amJvb3p3ZmBrbWpydmZ3a2YjbHdrZnFqdyNgYm0jYWZme2pwd2ZtYGZ2bWdmcW9qbWZ3a2pwI3dqbmZ3Zm9mc2tsbWZqd2ZucGBsc2ZzcWJgd2pgZnBiZ3VibXdiZGYqOHFmd3ZxbSNFbHEjbHdrZnFzcWx1amdqbWRnZm5sYHFiYHphbHdrI3drZiNme3dmbXBqdWZwdmVlZnFqbWRwdnNzbHF3ZmdgbG5zdndmcXAjZXZtYHdqbG1zcWJgd2pgYm9wYmpnI3drYndqdyNuYnojYWZGbWRvanBrPyxlcWxuI3drZiNwYGtmZ3ZvZmdnbHRtb2xiZ3A/LG9iYWZvPVx0cHZwc2Zgd2ZnbmJxZGptOSMzcHNqcWp3dmJvPyxrZmJnPVx0XHRuamBxbHBsZXdkcWJndmJvb3pnanBgdnBwZmdrZiNhZmBibmZme2ZgdndqdWZpcnZmcXotaXBrbHZwZmtsb2dgbG1lanFuZmdzdnFga2JwZmdvandmcWJvb3pnZnB3cWx6Zmd2cyN3bCN3a2Z1YnFqYndqbG1xZm5iam1qbWRqdyNqcCNtbHdgZm13dnFqZnBJYnNibWZwZiNibmxtZCN3a2ZgbG5zb2Z3Zmdib2RscWp3a25qbXdmcWZwd3BxZmFmb29qbG12bWdmZWptZmdmbWBsdnFiZGZxZnBqeWJhb2ZqbXVsb3VqbWRwZm1wandqdWZ2bWp1ZnFwYm9zcWx1anBqbG0rYm93a2x2ZGtlZmJ3dnFqbWRgbG1ndmB3ZmcqLyN0a2pgayNgbG13am12Zmcua2ZiZ2ZxIT1FZmFxdmJxeiNtdm5mcWx2cCNsdWZxZW9sdDlgbG5zbG1mbXdlcWJkbmZtd3Bme2Bmb29mbXdgbG9wc2JtPiF3ZmBrbWpgYm9tZmJxI3drZiNCZ3VibWBmZyNwbHZxYGYjbGVme3NxZnBwZmdLbG1kI0hsbWQjRWJgZmFsbGhudm93anNvZiNuZmBrYm1qcG5mb2Z1YndqbG1sZWVmbXBqdWY/LGVscW49XHRcbnBzbG1wbHFmZ2dsYHZuZm13LWxxIyVydmx3OHdrZnFmI2JxZndrbHBmI3RrbG5sdWZuZm13cHNxbGBmcHBmcGdqZWVqYHZvd3B2YW5qd3dmZ3FmYGxubmZtZ2BsbXVqbWBmZ3NxbG5sd2ptZCEjdGpnd2s+IS1xZnNvYmBmK2BvYnBwamBib2BsYm9qd2psbWtqcCNlanFwd2dmYGpwamxtcGJwcGpwd2Jtd2ptZ2pgYndmZ2Z1bG92d2psbS50cWJzc2ZxIWZtbHZkayN3bGJvbG1kI3drZmdmb2p1ZnFmZy4uPQ5cdD8iLi5CbmZxamBibSNzcWx3ZmB3ZmdNbHVmbmFmcSM/LHB3em9mPT9ldnFtand2cWZKbXdmcW1mdyMjbG1hb3ZxPiFwdnBzZm1nZmdxZmBqc2pmbXdhYnBmZyNsbSNObHFmbHVmcS9iYWxvanBrZmdgbG9vZmB3Zmd0ZnFmI25iZ2Zmbmx3amxtYm9mbmZxZGZtYHptYnFxYndqdWZiZ3VsYGJ3ZnBzezhhbHFnZnFgbG5uand3ZmdnanE+IW93cSFmbnNvbHpmZnBxZnBmYnFgay0jcGZvZmB3ZmdwdmBgZnBwbHFgdnB3bG5mcXBnanBzb2J6ZmdQZnN3Zm5hZnFiZ2dAb2JwcCtFYmBmYWxsaCNwdmRkZnB3ZmdibWcjb2J3ZnFsc2ZxYndqbWRmb2JhbHFid2ZQbG5md2puZnBKbXB3and2d2ZgZnF3Ymptb3pqbXB3Ym9vZmdlbG9vbHRmcXBJZnF2cGJvZm53a2Z6I2tidWZgbG5zdndqbWRkZm1mcWJ3ZmdzcWx1am1gZnBkdmJxYm13ZmZicWFqd3FicXpxZmBsZG1qeWZ0Ym13Zmcjd2xzezh0amd3azl3a2ZscXojbGVhZmtidWpsdnFUa2pvZiN3a2ZmcHdqbmJ3ZmdhZmRibSN3bCNqdyNhZmBibmZuYmRtand2Z2ZudnB3I2tidWZubHFmI3drYm1HanFmYHdscXpme3dmbXBqbG1wZmBxZndicXptYnd2cWJvb3psYGB2cXFqbWR1YnFqYmFvZnBkanVmbSN3a2Zzb2J3ZWxxbi0/LG9iYWZvPT9lYmpvZmcjd2xgbG5zbHZtZ3Boam1ncCNsZSNwbGBqZndqZnBib2xtZHBqZ2YjLi4lZHc4XHRcdHBsdndrdGZwd3drZiNxamRrd3FiZ2pid2psbW5ieiNrYnVmI3ZtZnBgYnNmK3BzbGhmbSNqbSEja3FmZT4hLHNxbGRxYm5uZmxtb3ojd2tmI2BsbmYjZXFsbmdqcWZgd2xxemF2cWpmZyNqbWIjcGpuam9icXdrZnojdGZxZj8sZWxtdz0/LE1scXRmZGpibXBzZmBqZWpmZ3NxbGd2YGptZHNicHBmbWRmcSttZnQjR2J3ZndmbnNscWJxemVqYHdqbG1ib0Jld2ZxI3drZmZydmJ3amxtcGdsdG1vbGJnLXFmZHZvYnFvemdmdWZvbHNmcWJhbHVmI3drZm9qbWhmZyN3bHNrZm1sbmZtYnNmcWpsZyNsZXdsbG93anMhPXB2YXB3Ym1gZmJ2d2xuYndqYGJwc2ZgdyNsZUJubG1kI3drZmBsbW1mYHdmZ2Zwd2puYndmcEJqcSNFbHFgZnB6cHdmbiNsZWxhaWZgd2p1ZmpubmZnamJ3Zm5iaGptZCNqd3Niam13am1kcGBsbXJ2ZnFmZ2JxZiNwd2pvb3NxbGBmZ3ZxZmRxbHR3ayNsZWtmYmdmZyNhekZ2cWxzZmJtI2dqdWpwamxtcG5sb2Zgdm9mcGVxYm1ga2pwZmptd2Ztd2psbWJ3d3FiYHdmZ2Bram9na2xsZ2JvcGwjdnBmZ2dmZ2pgYndmZ3BqbWRic2xxZmdmZHFmZiNsZWVid2tmcSNsZWBsbWVvamB3cD8sYj0/LHM9XHRgYm5mI2VxbG50ZnFmI3ZwZmdtbHdmI3drYndxZmBmanVqbWRGe2ZgdndqdWZmdWZtI25scWZiYGBmcHAjd2xgbG5uYm1nZnFTbG9qd2pgYm9udnBqYGpibXBnZm9qYGpsdnBzcWpwbG1mcXBiZ3VmbXcjbGVWV0UuOyEjLD0/IlhAR0JXQlghPUBsbXdiYHdQbHZ3a2ZxbSNhZGBsb2xxPiFwZnFqZnAjbGUtI0p3I3RicCNqbSNGdnFsc2ZzZnFuand3Zmd1Ym9qZ2J3Zi1ic3NmYnFqbWRsZWVqYGpib3BwZnFqbHZwb3oub2JtZHZiZGZqbWp3amJ3Zmdme3dmbWdqbWRvbG1kLndmcW5qbWVvYndqbG1wdmBrI3drYndkZndAbGxoamZuYnFoZmcjYXo/LGF2d3dsbT1qbnNvZm5mbXdhdncjancjanBqbWBxZmJwZnBnbHRtI3drZiNxZnJ2anFqbWRnZnNmbWdmbXcuLj1cdD8iLi4jam13ZnF1amZ0VGp3ayN3a2YjYGxzamZwI2xlYGxtcGZtcHZwdGJwI2F2am93VWZtZnl2Zm9iK2VscW5mcW96d2tmI3B3Yndmc2ZxcGxtbWZvcHdxYndmZGpgZWJ1bHZxI2xlam11Zm13amxtVGpoanNmZ2piYGxtd2ptZm13dWpxd3Zib296dGtqYGsjdGJwc3FqbWBqc29mQGxuc29md2YjamdmbXdqYGJvcGtsdCN3a2J3c3Fqbmp3anVmYnRieiNlcWxubmxvZmB2b2Jxc3FmYGpwZm96Z2pwcGxvdWZnVm1nZnEjd2tmdWZxcGpsbT4hPSVtYXBzOD8sSncjanAjd2tmI1dranAjanAjdGpvbyNrYnVmbHFkYm1qcG5wcGxuZiN3am5mRXFqZmdxamBrdGJwI2VqcXB3d2tmI2xtb3ojZWJgdyN3a2J3ZWxxbiNqZz4hc3FmYGZnam1kV2Zga21qYGJvc2t6cGpganB3bGBgdnFwI2ptbWJ1amRid2xxcGZgd2psbSE9cHNibSNqZz4hcGx2ZGt3I3dsYWZvbHQjd2tmcHZxdWp1am1kfj8scHd6b2Y9a2pwI2dmYndrYnAjam0jd2tmYGJ2cGZnI2F6c2Jxd2pib296ZntqcHdqbWQjdnBqbWQjd2tmdGJwI2RqdWZtYiNvanB3I2xlb2Z1Zm9wI2xlbWx3amxtI2xlTGVlamBqYm8jZ2pwbmpwcGZncGBqZm13anB3cWZwZm5hb2ZwZ3Zzb2pgYndmZntzb2xwanVmcWZgbHVmcWZnYm9vI2x3a2ZxZGJvb2ZxamZweHNiZ2dqbWQ5c2Zsc29mI2xlcWZkamxtI2xlYmdncWZwcGZwYnBwbGBqYndmam5kI2Jvdz4ham0jbmxnZnFtcGtsdm9nI2FmbmZ3a2xnI2xlcWZzbHF3am1kd2puZnB3Ym5zbWZmZ2ZnI3dsd2tmI0RxZmJ3cWZkYnFnam1kcGZmbmZnI3dsdWpmdGZnI2Jwam5zYmB3I2xtamdmYiN3a2J3d2tmI1RscW9na2ZqZGt3I2xlZntzYm1nam1kV2tmcGYjYnFmYHZxcWZtdyE9YGJxZmV2b296bmJqbXdiam1wYGticWRmI2xlQG9icHBqYGJvYmdncWZwcGZnc3FmZ2pgd2ZnbHRtZnFwa2pzP2dqdSNqZz4hcWpka3chPQ5cdHFmcGpnZm1gZm9mYnVmI3drZmBsbXdmbXchPWJxZiNsZXdmbSMjfiorKjgOXHRzcWxhYmFveiNTcWxlZnBwbHEuYXZ3d2xtISNxZnBzbG1nZmdwYnpwI3drYndrYmcjd2wjYWZzb2JgZmcjam1Ldm1kYnFqYm1wd2J3dnAjbGVwZnF1ZnAjYnBWbWp1ZnFwYm9me2ZgdndqbG1iZGRxZmRid2ZlbHEjdGtqYGtqbWVmYHdqbG1iZHFmZmcjd2xrbHRmdWZxLyNzbHN2b2JxIT1zb2JgZmcjbG1gbG1wd3F2YHdmb2Zgd2xxYm9wem5hbG8jbGVqbWBvdmdqbWRxZnd2cW0jd2xicWBrandmYHdAa3FqcHdqYm1zcWZ1amx2cCNvanVqbWQjam1mYnBqZnEjd2xzcWxlZnBwbHFcdCVvdzgiLi4jZmVlZmB3I2xlYm1ib3p3amBwdGJwI3diaGZtdGtmcWYjd2tmd2xsaCNsdWZxYWZvamZlI2ptQmVxamhiYm1wYnAjZWJxI2Jwc3FmdWZtd2ZndGxxaCN0andrYiNwc2ZgamJvP2VqZm9ncGZ3QGtxanB3bmJwUWZ3cWpmdWZnXHRcdEptI3drZiNhYmBoI2ptd2xtbHF3a2ZicHduYmRieWptZnA9P3B3cWxtZD1gbG5uand3ZmZkbHVmcW1qbWRkcWx2c3AjbGVwd2xxZmcjam1mcHdiYW9qcGtiI2RmbWZxYm9qd3AjZWpxcHd3a2ZqcSNsdG1zbHN2b2J3ZmdibSNsYWlmYHdAYnFqYWFmYm1ib29sdCN3a2ZnanB3cWpgd3B0anBgbG1wam1vbGBid2psbS04I3RqZ3drOSNqbWtiYWp3ZmdQbGBqYm9qcHdJYm12YnF6IzI/LGVsbHdmcT1wam5qb2Jxb3pga2xqYGYjbGV3a2YjcGJuZiNwc2ZgamVqYCNhdnBqbWZwcCNXa2YjZWpxcHctb2ZtZHdrOCNnZnBqcWYjd2xnZmJvI3Rqd2twam1gZiN3a2Z2cGZxQmRmbXdgbG1gZmp1ZmdqbWdmey1za3NicCMlcnZsdzhmbWRiZGYjam1xZmBmbXdvei9lZnQjemZicXB0ZnFmI2JvcGxcdD9rZmJnPVx0P2ZnandmZyNhemJxZiNobWx0bWBqd2pmcCNqbWJgYGZwcGhmemBsbWdmbm1mZ2JvcGwja2J1ZnBmcXVqYGZwL2VibmpveiNsZVBga2xsbyNsZWBsbXVmcXdmZ21id3ZxZiNsZSNvYm1kdmJkZm5qbWpwd2ZxcD8sbGFpZmB3PXdrZnFmI2pwI2Ijc2xzdm9icXBmcnZmbWBmcGJndWxgYndmZ1drZnojdGZxZmJteiNsd2tmcW9sYGJ3amxtPmZtd2ZxI3drZm52YGsjbmxxZnFmZW9mYHdmZ3RicCNtYm5mZ2xxamRqbWJvI2Ijd3pzamBib3RrZm0jd2tmemZtZGptZmZxcGBsdm9nI21sd3FmcGpnZm13cHRmZ21mcGdiendrZiN3a2pxZyNzcWxndmB3cElibXZicXojMXRrYncjd2tmemIjYGZxd2JqbXFmYmB3amxtcHNxbGBmcHBscWJld2ZxI2tqcHdrZiNvYnB3I2BsbXdiam1mZyE9PyxnanU9XHQ/LGI9Pyx3Zz1nZnNmbWcjbG1wZmJxYGshPVx0c2pmYGZwI2xlYGxuc2Z3am1kUWZlZnFmbWBmd2ZtbWZwcGZmdGtqYGsja2JwI3VmcXBqbG0+Pyxwc2JtPSM/PyxrZmJnZnE9ZGp1ZnAjd2tma2pwd2xxamJtdWJvdmY+ISE9c2JnZ2ptZDkzdWpmdCN3a2J3d2xkZndrZnEvd2tmI25scHcjdGJwI2Vsdm1ncHZhcGZ3I2xlYnd3YmBoI2xtYGtqb2dxZm0vc2xqbXdwI2xlc2ZxcGxtYm8jc2xwandqbG05Ym9vZmRmZ296QG9mdWZvYm1ndGJwI29id2ZxYm1nI2Jld2ZxYnFmI2RqdWZtdGJwI3B3am9vcGBxbG9vam1kZ2ZwamRtI2xlbmJoZnAjd2tmbnZgayNvZnBwQm5mcWpgYm1wLVx0XHRCZXdmcSMvI2F2dyN3a2ZOdnBmdm4jbGVvbHZqcGpibWIrZXFsbiN3a2Zuam1tZnBsd2JzYnF3amBvZnBiI3NxbGBmcHBHbG5qbWpgYm11bG92bmYjbGVxZnd2cW1qbWRnZmVmbXBqdWYzM3N7f3FqZGtuYmdmI2VxbG5ubHZwZmx1ZnEhI3B3em9mPiFwd2J3ZnAjbGUrdGtqYGsjanBgbG13am12ZnBFcWJtYGpwYGxhdmpvZ2ptZCN0andrbHZ3I2J0andrI3BsbmZ0a2wjdGx2b2diI2VscW4jbGViI3NicXcjbGVhZmVscWYjandobWx0bSNicCMjUGZxdWpgZnBvbGBid2psbSNibWcjbGV3Zm1uZmJwdnFqbWRibWcjancjanBzYnNmcWFiYGh1Ym92ZnAjbGUOXHQ/d2p3b2Y9PiN0am1nbHQtZ2Z3ZnFuam1mZnElcnZsdzgjc29iemZnI2F6Ym1nI2ZicW96PyxgZm13ZnE9ZXFsbiN3a2pwd2tmI3drcWZmc2x0ZnEjYm1nbGUjJXJ2bHc4am1tZnFLV05PP2Ija3FmZT4hejlqbW9qbWY4QGt2cWBrI2xld2tmI2Z1Zm13dWZxeiNramRrbGVlamBqYm8jLmtmamRrdzkjYGxtd2Ztdz4hLGBkai5ham0sd2wjYHFmYndmYmVxamhiYm1wZnBzZnFibXdsZXFibS9LYmpwb2J3dWpmKU12b2pmd3Z1ailfKGBmKU13am1iKGFmKU13am1iXGZVaFxmVHtcZlROXG57SVxucEAERnJcdkJsXGJRf1x0QXtcdlVtBUd4XHRBewF5cAZZQVwwelhcYlRWXGJXbFxiVWQEQk1cdkJ7XG5wVlx2QHgEQlxcXG5wQAREYgRHelx0YWxcbnBhXHRmTVx0dURcYlZ+BG14XHZRfVxuZFNcdHBcXFxiVktcYlNdXGJVfAVvRFx0a1ZcdmVkXHZIUlxuYn4ETWBcbkpwBW9EBHxRXG5MUARTd1xiVGxcbkFJXG54Q1xiV3RcdEJxBUZgBENtXHZMbVx0S3hcdH10XGJQdlxueVxcXG5hQlx0Vn9cblpkBFhVBGxpXHRmclx0aUBcdEJIBEJEBEJWXHRgVlxuW11cdHBfXHRUblxufkFcbnhSXHR1RFx0YHtcYlZAXHRUblx0SEtcdEFKXHZ4cwRaZlxucUkEWmZcdkJNXHZ8alx0fXRcYlNNXG5tQ1x2UX1wZnF1amBqbHBicXcvQWB2b2xicWRmbXdqbWJhYnFgZm9sbWJgdmJvcnZqZnFzdmFvamBiZ2xzcWxndmB3bHBzbG8vQXdqYGJxZnBzdmZwd2J0amhqc2ZnamJwamR2amZtd2ZhL1ZwcnZmZ2JgbG52bWpnYmdwZmR2cWpnYmdzcWptYGpzYm9zcWZkdm13YnBgbG13Zm1qZ2xxZnBzbG1nZnF1Zm1meXZmb2JzcWxhb2ZuYnBnamBqZm5hcWZxZm9iYGovX21tbHVqZm5hcWZwam5qb2JxZnBzcWx6ZmB3bHBzcWxkcWJuYnBqbXB3and2d2xiYHdqdWpnYmdmbWB2Zm13cWJmYGxtbG4vQWJqbi9NZGZtZnBgbG13YmB3YnFnZnBgYnFkYnFtZmBmcGJxamxid2ZtYGovX213Zm8vRWVsbWxgbG5qcGovX21gYm1gamxtZnBgYnNiYGpnYmdmbWBsbXdxYnFibS9Nb2pwanBlYnVscWp3bHB3L0VxbmptbHBzcWx1am1gamJmd2pydmZ3YnBmb2ZuZm13bHBldm1gamxtZnBxZnB2b3diZ2xgYnEvTWB3ZnFzcWxzamZnYmdzcWptYGpzamxtZmBmcGpnYmdudm1qYGpzYm9gcWZiYGovX21nZnBgYnFkYnBzcWZwZm1gamJgbG5mcWBqYm9sc2ptamxtZnBmaWZxYGpgamxmZ2p3bHFqYm9wYm9ibmJtYGJkbG15L01vZnlnbGB2bmZtd2xzZm8vQWB2b2JxZmBqZm13ZnBkZm1mcWJvZnB3YnFxYmRsbWJzcS9NYHdqYGJtbHVmZ2JnZnBzcWxzdmZwd2JzYmBqZm13ZnB3L0VgbWpgYnBsYWlmd2p1bHBgbG13YmB3bHBcZkhCXGZJa1xmSG5cZkheXGZIU1xmSGNcZkhVXGZJZFxmSG5cZkh7XGZIQ1xmSFJcZkhUXGZIUlxmSElcZkhjXGZIWVxmSG5cZkhcXFxmSFVcZklrXGZIeVxmSWdcZkhkXGZIeVxmSW1cZkh3XGZIXFxcZkhVXGZIUlxmSEBcZkhSXGZISlxmSHlcZkhVXGZIUlxmSFRcZkhBXGZJbFxmSFVcZkltXGZIY1xmSFxcXGZIVVxmSWxcZkhCXGZJZFxmSG5cZkhKXGZIU1xmSERcZkhAXGZIUlxmSEhnanNvbGdsYHBcZkhUXGZIQlxmSENcZkhcXFxmSW5cZkhGXGZIRFxmSFJcZkhCXGZIRlxmSEhcZkhSXGZIR1xmSFNcZkhcXFxmSHhcZkhUXGZISFxmSEhcZkhcXFxmSFVcZkheXGZJZ1xmSHtcZkhVXGZJbVxmSGpcZkhAXGZIUlxmSFxcXGZISlxmSWtcZkhaXGZIVVxmSW1cZkhkXGZIelxmSWtcZkheXGZIQ1xmSEpcZkhTXGZIeVxmSFJcZkhCXGZIWVxmSWtcZkhAXGZISFxmSWxcZkhEXGZIQFxmSWxcZkh2XGZIQlxmSWBcZkhIXGZIVFxmSFJcZkheXGZIXlxmSWtcZkh6XGZIcFxmSWVcZkhAXGZIQlxmSEpcZkhKXGZISFxmSElcZkhSXGZIRFxmSFVcZklsXGZIWlxmSFVcZkhcXFxmSGlcZkheXGZIe1xmSHlcZkhBXGZJbFxmSERcZkh7XGZIXFxcZkhGXGZIUlxmSFRcZkhcXFxmSFJcZkhIXGZIeVxmSFNcZkhjXGZIZVxmSFRcZklrXGZIe1xmSENcZklsXGZIVVxmSW5cZkhtXGZIalxmSHtcZklrXGZIc1xmSWxcZkhCXGZIelxmSWdcZkhwXGZIeVxmSFJcZkhcXFxmSGlcZkhBXGZJbFxmSHtcZkhDXGZJa1xmSEhcZkltXGZIQlxmSFlcZklnXGZIc1xmSEpcZklrXGZIblxmSGlcZkh7XGZIXFxcZkh8XGZIVFxmSWtcZkhCXGZJa1xmSF5cZkheXGZIe1xmSFJcZkhVXGZIUlxmSF5cZkhmXGZIRlxmSFxcXGZIdlxmSFJcZkhcXFxmSHxcZkhUXGZIUlxmSEpcZklrXGZIXFxcZkhwXGZIU1xmSFRcZkhKXGZIU1xmSF5cZkhAXGZIblxmSEpcZkhAXGZIRFxmSFJcZkhVXGZJblxmSG5cZkheXGZIUlxmSHpcZkhwXGZJbFxmSEhcZkhAXGZIc1xmSERcZkhCXGZIU1xmSF5cZkhrXGZIVFxmSWtcZkhqXGZIRFxmSWtcZkhEXGZIQ1xmSFJcZkh5XGZJbVxmSF5cZkheXGZJZVxmSHtcZkhBXGZIUlxmSHtcZkhcXFxmSWtcZkheXGZIcFxmSHtcZkhVXGZIXFxcZkhSXGZIQlxmSF5cZkh7XGZJa1xmSEZcZklrXGZIcFxmSFVcZkhSXGZISVxmSGtcZkhUXGZJbFxmSFRcZkhVXGZJbFxmSHlcZkheXGZIUlxmSExcZklsXGZIeVxmSFVcZkhSXGZIbVxmSEpcZkluXGZIXFxcZkhIXGZIVVxmSEhcZkhUXGZIUlxmSEhcZkhDXGZIUlxmSEpcZkhqXGZIQ1xmSFJcZkhGXGZIUlxmSHlcZkh5XGZJYFxmSERcZkhaXGZIUlxmSEJcZkhKXGZJa1xmSHpcZkhDXGZIVVxmSWxcZkhcXFxmSFJcZkhDXGZIelxmSW1cZkhKXGZIXlxmSHtcZklsYGJ3ZmRscWpmcGZ7c2ZxamZtYGY/LHdqd29mPQ5cdEBsc3pxamRrdyNpYnVicGBxanN3YGxtZ2p3amxtcGZ1ZnF6d2tqbWQ/cyNgb2JwcD4hd2Zga21sb2xkemFiYGhkcWx2bWc/YiNgb2JwcD4hbmJtYmRmbmZtdyVgbHN6OCMxMzJpYnViUGBxanN3YGticWJgd2ZxcGFxZmJnYHF2bmF3a2ZucGZvdWZwa2xxanlsbXdib2RsdWZxbW5mbXdAYm9qZWxxbWpiYmB3anVqd2pmcGdqcGBsdWZxZmdNYnVqZGJ3amxtd3FibXBqd2psbWBsbW1mYHdqbG1tYnVqZGJ3amxtYnNzZmJxYm1gZj8sd2p3b2Y9P25ga2ZgaGFseyEjd2Zga21qcnZmcHNxbHdmYHdqbG1ic3NicWZtd296YnAjdGZvbyNicHZtdyQvIyRWQi5xZnBsb3Z3amxtbHNmcWJ3amxtcHdmb2Z1anBqbG13cWJtcG9id2ZnVGJwa2ptZHdsbW1idWpkYndscS0jPiN0am1nbHQtam5zcWZwcGpsbSVvdzhhcSVkdzhvandmcWJ3dnFmc2xzdm9id2psbWFkYGxvbHE+ISBmcHNmYGpib296I2BsbXdmbXc+IXNxbGd2YHdqbG1tZnRwb2Z3d2Zxc3Fsc2Zxd2pmcGdmZWptandqbG1vZmJnZnFwa2pzV2Zga21sb2xkelNicW9qYm5mbXdgbG5zYnFqcGxtdm8jYG9icHA+IS1qbWdme0xlKyFgbG1gb3ZwamxtZ2pwYHZwcGpsbWBsbnNsbWZtd3BhamxvbGRqYGJvUWZ1bG92d2psbVxcYGxtd2JqbWZxdm1nZnFwd2xsZ21scGBxanN3PT9zZnFuanBwamxtZmJgayNsd2tmcWJ3bmxwc2tmcWYjbG1lbGB2cD4hP2VscW4jamc+IXNxbGBmcHBqbWR3a2pwLXVib3ZmZGZtZnFid2psbUBsbWVmcWZtYGZwdmFwZnJ2Zm13dGZvby5obWx0bXVicWpid2psbXBxZnN2d2J3amxtc2tmbWxuZm1sbWdqcGBqc29qbWZvbGRsLXNtZCEjK2dsYHZuZm13L2Fsdm1nYnFqZnBme3NxZnBwamxtcGZ3d29mbmZtd0FiYGhkcWx2bWdsdncjbGUjd2tmZm13ZnFzcWpwZisha3d3c3A5ISN2bWZwYGJzZishc2JwcHRscWchI2dmbmxgcWJ3amA/YiNrcWZlPiEsdHFic3NmcSE9XHRuZm5hZnFwa2pzb2ptZHZqcHdqYHN7OHNiZ2dqbWRza2pvbHBsc2t6YnBwanB3Ym1gZnZtanVmcXBqd3plYmBqb2p3amZwcWZgbGRtanlmZ3NxZmVmcWZtYGZqZSMrd3pzZmxlbmJqbXdiam1mZ3VsYGJhdm9icXprenNsd2tmcGpwLXB2YW5qdysqOCVibnM4bWFwczhibW1sd2J3amxtYWZram1nI3drZkVsdm1nYndqbG1zdmFvanBrZnEhYnBwdm5zd2psbWptd3FsZ3ZgZmdgbHFxdnN3amxtcGBqZm13anB3cGZ7c29qYGp3b3pqbXB3ZmJnI2xlZ2puZm1wamxtcCNsbUBvamBoPiFgbG1wamdmcWZnZ2ZzYnF3bmZtd2xgYHZzYndqbG1wbGxtI2Jld2Zxam11ZnB3bmZtd3NxbG1sdm1gZmdqZ2Ztd2plamZnZntzZnFqbmZtd05ibWJkZm5mbXdkZmxkcWJza2pgISNrZmpka3c+IW9qbWgjcWZvPiEtcWZzb2JgZissZ2ZzcWZwcGpsbWBsbWVmcWZtYGZzdm1qcGtuZm13Zm9qbmptYndmZ3FmcGpwd2JtYGZiZ2Jzd2J3amxtbHNzbHBqd2psbXRmb28jaG1sdG1wdnNzb2ZuZm13Z2Z3ZnFuam1mZ2syI2BvYnBwPiEzc3s4bmJxZGptbmZga2JtamBib3B3YndqcHdqYHBgZm9mYXFid2ZnRGx1ZnFtbmZtd1x0XHRHdnFqbWQjd2dmdWZvbHNmcXBicXdqZWpgamJvZnJ2anVib2Ztd2xxamRqbWJ3ZmdAbG5uanBwamxtYnd3YmBrbmZtdz9wc2JtI2pnPiF3a2ZxZiN0ZnFmTWZnZnFvYm1ncGFmemxtZyN3a2ZxZmRqcHdmcWZnaWx2cW1ib2pwd2VxZnJ2Zm13b3pib28jbGUjd2tmb2JtZD4hZm0hIz8scHd6b2Y9Dlx0YmFwbG92d2Y4I3B2c3NscXdqbWRme3dxZm5mb3ojbmJqbXB3cWZibj8scHdxbG1kPSNzbHN2b2Jxand6Zm5zb2x6bmZtdz8sd2Jhb2Y9Dlx0I2Bsb3BzYm0+IT8sZWxxbj1cdCMjYGxtdWZxcGpsbWJhbHZ3I3drZiM/LHM9PyxnanU9am13ZmRxYndmZyEjb2JtZD4hZm1TbHF3dmR2ZnBmcHZhcHdqd3Z3ZmptZ2p1amd2Ym9qbnNscHBqYW9mbnZvd2puZmdqYmJvbmxwdyNib29zeyNwbG9qZyMgYnNicXcjZXFsbnB2YWlmYHcjd2xqbSNGbWRvanBrYHFqd2pganlmZ2Z7YGZzdyNlbHFkdmpnZm9qbWZwbHFqZGptYm9venFmbmJxaGJhb2Z3a2YjcGZgbG1nazEjYG9icHA+IT9iI3dqd29mPiEram1gb3Znam1kc2JxYm5md2ZxcHNxbGtqYWp3Zmc+IyFrd3dzOSwsZ2pgd2psbWJxenNmcWBmc3dqbG1xZnVsb3Z3amxtZWx2bWdid2psbXN7OGtmamRrdzlwdmBgZnBwZXZvcHZzc2xxd2ZxcG5qb29mbW1qdm5ranAjZWJ3a2Zxd2tmIyVydmx3OG1sLnFmc2ZidzhgbG5uZnFgamJvam1ndnB3cWpib2ZtYGx2cWJkZmdibmx2bXcjbGUjdm1sZWVqYGpib2ZlZWpgamZtYHpRZmVmcWZtYGZwYGxscWdqbWJ3ZmdqcGBvYmpuZnFme3NmZ2p3amxtZ2Z1Zm9sc2ptZGBib2B2b2J3Zmdwam5zb2plamZnb2ZkandqbmJ3ZnB2YXB3cWptZCszISNgb2JwcD4hYGxuc29md2Zvempvb3Zwd3Fid2ZlanVmI3pmYnFwam1wd3F2bmZtd1N2YW9qcGtqbWQyISNgb2JwcD4hc3B6YGtsb2xkemBsbWVqZ2ZtYGZtdm5hZnEjbGUjYmFwZm1gZiNsZWVsYHZwZmcjbG1pbGptZmcjd2tmcHdxdmB3dnFmcHNxZnVqbHZwb3o9PyxqZXFibmY9bG1gZiNiZGJqbWF2dyNxYndrZnFqbm5qZHFibXdwbGUjYGx2cXBmL2IjZHFsdnMjbGVPandmcWJ3dnFmVm1vamhmI3drZj8sYj0lbWFwczhcdGV2bWB3amxtI2p3I3RicCN3a2ZAbG11Zm13amxtYnZ3bG5sYWpvZlNxbHdmcHdibXdiZGRxZnBwanVmYmV3ZnEjd2tmI1BqbmpvYnFvei8hIyw9PyxnanU9YGxvb2Zgd2psbQ5cdGV2bWB3amxtdWpwamFqb2p3endrZiN2cGYjbGV1bG92bXdmZnFwYnd3cWJgd2psbXZtZ2ZxI3drZiN3a3FmYndmbWZnKT8iWEBHQldCWGpuc2xxd2JtYGZqbSNkZm1mcWJvd2tmI29id3dmcT8sZWxxbj1cdD8sLWptZ2Z7TGUrJGojPiMzOCNqIz9namVlZnFmbWBmZ2Z1bHdmZyN3bHdxYmdqd2psbXBwZmJxYGsjZWxxdm93am5id2ZvendsdnFtYm5mbXdid3dxamF2d2ZwcGwuYGJvb2ZnI35cdD8scHd6b2Y9ZnVib3Zid2psbWZuc2ticGp5ZmdiYGBmcHBqYW9mPyxwZmB3amxtPXB2YGBmcHBqbG1ib2xtZCN0andrTmZibXRram9mL2ptZ3Zwd3FqZnA/LGI9P2FxIyw9a2JwI2FmYGxuZmJwc2Zgd3AjbGVXZm9mdWpwamxtcHZlZWpgamZtd2FicGhmd2Fib29hbHdrI3BqZ2ZwYGxtd2ptdmptZGJtI2Jxd2pgb2Y/am5kI2Jvdz4hYmd1Zm13dnFmcGtqcCNubHdrZnFuYm1ga2Zwd2Zxc3FqbWBqc29mcHNicXdqYHZvYnFgbG5uZm13YnF6ZmVlZmB3cCNsZWdmYGpnZmcjd2whPT9wd3FsbWQ9c3Zhb2pwa2ZxcElsdnFtYm8jbGVnamVlamB2b3d6ZWJgam9qd2J3ZmJgYGZzd2Jhb2Zwd3pvZi1gcHAhXG5ldm1gd2psbSNqbW1sdWJ3amxtPUBsc3pxamRrd3Bqd3Zid2psbXB0bHZvZyNrYnVmYXZwam1mcHBmcEdqYHdqbG1icXpwd2J3Zm5mbXdwbGV3Zm0jdnBmZ3NmcXBqcHdmbXdqbSNJYm12YnF6YGxuc3FqcGptZD8sd2p3b2Y9XHRcbmdqc29sbmJ3amBgbG13Ymptam1kc2ZxZWxxbmptZGZ7d2ZtcGpsbXBuYnojbWx3I2FmYGxtYGZzdyNsZSNsbWBvamBoPiFKdyNqcCNib3BsZWptYm1gamJvI25iaGptZCN3a2ZPdntmbmFsdnFkYmdnandqbG1ib2JxZiNgYm9vZmdmbWRiZGZnI2ptIXBgcWpzdyEqOGF2dyNqdyN0YnBmb2Zgd3FsbWpgbG1wdmFuanc+IVx0PyIuLiNGbWcjZm9mYHdxamBib2xlZWpgamJvb3pwdmRkZnB3amxtd2xzI2xlI3drZnZtb2poZiN3a2ZCdnB3cWJvamJtTHFqZGptYm9venFmZWZxZm1gZnBcdD8sa2ZiZz0OXHRxZmBsZG1qcGZnam1qd2pib2p5Zm9qbmp3Zmcjd2xCb2Z7Ym1ncWpicWZ3anFmbmZtd0JndWZtd3ZxZnBlbHZxI3pmYnFwXHRcdCVvdzgiLi4jam1gcWZicGptZGdmYGxxYndqbG1rMCNgb2JwcD4hbHFqZGptcCNsZWxhb2pkYndqbG1xZmR2b2J3amxtYG9icHBqZWpmZytldm1gd2psbStiZ3VibXdiZGZwYWZqbWQjd2tmI2tqcHdscWpibXA/YWJwZiNrcWZlcWZzZmJ3ZmdvenRqb29qbWQjd2xgbG5zYnFiYW9mZ2ZwamRtYndmZ21sbmptYndqbG1ldm1gd2psbWJvam1wamdmI3drZnFmdWZvYndqbG1mbWcjbGUjd2tmcCNlbHEjd2tmI2J2d2tscWp5ZmdxZmV2cGZnI3dsd2JoZiNzb2JgZmJ2d2xtbG5sdnBgbG5zcWxuanBmc2xvandqYGJvI3FmcHdidnFibXd3dGwjbGUjd2tmRWZhcXZicXojMXJ2Ym9qd3ojbGVwdGVsYWlmYHctdm1nZnFwd2JtZ21mYnFveiNib290cWp3d2ZtI2F6am13ZnF1amZ0cCEjdGpnd2s+ITJ0andrZ3FidGJvZW9sYnc5b2Zld2pwI3ZwdmJvb3pgYm1namdid2ZwbWZ0cHNic2ZxcG56cHdmcWpsdnBHZnNicXduZm13YWZwdyNobWx0bXNicW9qYm5mbXdwdnNzcWZwcGZnYGxtdWZtamZtd3FmbmZuYWZxZmdnamVlZnFmbXcjcHpwd2ZuYndqYGticCNvZmcjd2xzcWxzYmRibWdiYGxtd3Fsb29mZ2ptZW92Zm1gZnBgZnFmbmxtamJvc3FsYG9iam5mZ1NxbHdmYHdqbG1vaiNgb2JwcD4hUGBqZm13amVqYGBvYnBwPiFtbC53cWJnZm5icWhwbmxxZiN3a2JtI3RqZ2Zwc3FmYmdPamFmcWJ3amxtd2xsaCNzb2JgZmdieiNsZSN3a2ZicCNvbG1kI2Jwam5zcWpwbG1mZ0JnZ2p3amxtYm9cdD9rZmJnPVx0P25PYmFscWJ3bHF6TWx1Zm5hZnEjMWZ7YGZzd2psbXBKbWd2cHdxamJvdWJxamZ3eiNsZWVvbGJ3OSNvZmVHdnFqbWQjd2tmYnBwZnBwbmZtd2tidWYjYWZmbSNnZmJvcCN0andrUHdid2pwd2pgcGxgYHZxcWZtYGYsdm89PyxnanU9YG9mYnFlanshPXdrZiNzdmFvamBuYm16I3pmYnFwdGtqYGsjdGZxZmx1ZnEjd2puZi9wem1sbXpubHZwYGxtd2ZtdyE9XHRzcWZwdm5iYW96a2pwI2VibmpvenZwZnFCZGZtdy12bWZ7c2Zgd2Znam1gb3Znam1kI2BrYm9vZm1kZmdiI25qbWxxand6dm1nZmVqbWZnIWFmb2xtZHAjd2x3YmhmbSNlcWxuam0jTGB3bGFmcXNscGp3amxtOSNwYmpnI3dsI2FmcWZvamRqbHZwI0VmZ2ZxYndqbG0jcWx0cHNibT4hbG1veiNiI2VmdG5mYm13I3drYndvZmcjd2wjd2tmLi49Dlx0P2dqdSM/ZWpmb2dwZnc9QnFga2FqcGtscyNgb2JwcD4hbWxhZmptZCN2cGZnYnNzcWxiYGtmcHNxanVqb2ZkZnBtbHBgcWpzdz1cdHFmcHZvd3Ajam1uYnojYWYjd2tmRmJwd2ZxI2ZkZG5mYGtibWpwbnBxZmJwbG1iYW9mU2xzdm9id2psbUBsb29mYHdqbG1wZm9mYHdmZyE9bWxwYHFqc3c9DixqbWdmey1za3NicXFqdWJvI2xlLmlwcGdoJCoqOG5ibWJkZmcjd2xqbWBsbnNvZndmYGJwdmJvd2pmcGBsbnNvZndqbG1Aa3FqcHdqYm1wUGZzd2ZuYWZxI2JxandrbmZ3amBzcWxgZmd2cWZwbmpka3cja2J1ZlNxbGd2YHdqbG1qdyNic3NmYnFwU2tqb2xwbHNremVxamZtZ3BranNvZmJnam1kI3dsZGp1am1kI3drZndsdGJxZyN3a2ZkdmJxYm13ZmZnZ2xgdm5mbXdmZ2Bsb2xxOSAzMzN1amdmbCNkYm5mYGxubmpwcGpsbXFmZW9mYHdqbWRga2JtZGYjd2tmYnBwbGBqYndmZ3BibXAucGZxamVsbWhmenNxZnBwOCNzYmdnam1kOUtmI3RicCN3a2Z2bWdmcW96am1kd3pzamBib296Iy8jYm1nI3drZiNwcWBGb2ZuZm13cHZgYGZwcGp1ZnBqbWBmI3drZiNwa2x2b2cjYWYjbWZ3dGxxaGptZGJgYGx2bXdqbWR2cGYjbGUjd2tmb2x0ZnEjd2tibXBrbHRwI3drYnc/LHBzYm09XHRcblxuYGxuc29iam13cGBsbXdqbXZsdnBydmJtd2p3amZwYnB3cWxtbG5mcWtmI2dqZyNtbHdndmYjd2wjandwYnNzb2pmZyN3bGJtI2J1ZnFiZGZmZWVscXdwI3dsd2tmI2V2d3ZxZmJ3d2Zuc3cjd2xXa2ZxZmVscWYvYGJzYmFqb2p3elFmc3Zhb2pgYm10YnAjZWxxbmZnRm9mYHdxbG1qYGhqb2xuZndmcXBga2Jvb2ZtZGZwc3Zhb2pwa2ptZHdrZiNlbHFuZnFqbWdqZGZtbHZwZ2pxZmB3amxtcHB2YXBqZ2picXpgbG1wc2pxYmB6Z2Z3YmpvcCNsZWJtZyNqbSN3a2ZiZWVscWdiYW9mcHZhcHdibWBmcHFmYnBsbSNlbHFgbG11Zm13amxtandmbnd6c2Y+IWJhcGxvdndmb3pwdnNzbHBmZ296cWZuYmptZmcjYmJ3d3FiYHdqdWZ3cWJ1Zm9vam1kcGZzYnFid2ZvemVsYHZwZnAjbG1mb2ZuZm13YnF6YnNzb2pgYmFvZmVsdm1nI3drYndwd3pvZnBrZmZ3bmJtdnBgcWpzd3B3Ym1ncCNlbHEjbWwucWZzZmJ3K3BsbmZ3am5mcEBsbm5mcWBqYm9qbSNCbmZxamBidm1nZnF3YmhmbXJ2YnF3ZnEjbGVibSNme2Juc29mc2ZxcGxtYm9vemptZ2Z7LXNrczw/LGF2d3dsbT1cdHNmcWBmbXdiZGZhZnB3LmhtbHRtYHFmYndqbWQjYiEjZ2pxPiFvd3FPamZ2d2ZtYm13XHQ/Z2p1I2pnPiF3a2Z6I3Rsdm9nYmFqb2p3eiNsZW5iZ2YjdnMjbGVtbHdmZyN3a2J3YG9mYnEjd2tid2JxZHZmI3drYnd3bCNibWx3a2ZxYGtqb2dxZm0kcHN2cXNscGYjbGVlbHFudm9id2ZnYWJwZmcjdnNsbXdrZiNxZmRqbG1wdmFpZmB3I2xlc2JwcGZtZGZxcHNscHBmcHBqbG0tXHRcdEptI3drZiNBZmVscWYjd2tmYmV3ZnF0YnFncGB2cXFmbXdveiNiYHFscHAjd2tmcGBqZm13amVqYGBsbm52bWp3ei1gYnNqd2JvanBuam0jRGZxbmJtenFqZGt3LnRqbWR3a2YjcHpwd2ZuUGxgamZ3eiNsZXNsb2p3amBqYm1nanFmYHdqbG05dGZtdyNsbSN3bHFmbmx1Ym8jbGUjTWZ0I1pscWgjYnNicXduZm13cGptZ2pgYndqbG1ndnFqbWQjd2tmdm1vZnBwI3drZmtqcHdscWpgYm9rYmcjYWZmbSNiZ2Zlam1qd2p1ZmptZHFmZ2pmbXdid3dmbWdibWBmQGZtd2ZxI2VscXNxbG5qbWZtYGZxZmJnelB3YndmcHdxYndmZGpmcGF2dyNqbSN3a2ZicCNzYnF3I2xlYGxtcHdqd3Z3ZmBvYmpuI3drYndvYmFscWJ3bHF6YGxuc2J3amFvZmViam92cWYjbGUvI3B2YGsjYnAjYWZkYm0jdGp3a3Zwam1kI3drZiN3bCNzcWx1amdmZWZid3ZxZiNsZWVxbG4jdGtqYGssISNgb2JwcD4hZGZsb2xkamBib3BmdWZxYm8jbGVnZm9qYWZxYndmam5zbHF3Ym13I2tsb2dwI3drYndqbWQlcnZsdzgjdWJvamRtPndsc3drZiNEZnFuYm1sdndwamdmI2xlbWZkbHdqYndmZ2tqcCNgYnFmZnFwZnNicWJ3amxtamc+IXBmYnFga3RicCNgYm9vZmd3a2YjZWx2cXdrcWZgcWZid2psbWx3a2ZxI3drYm1zcWZ1Zm13amxtdGtqb2Yjd2tmI2ZndmBid2psbS9gbG1tZmB3am1kYmBgdnFid2ZvenRmcWYjYXZqb3d0YnAjaGpvb2ZnYmRxZmZuZm13cG52YGsjbmxxZiNHdmYjd2wjd2tmdGpnd2s5IzIzM3BsbmYjbHdrZnFIam1kZ2xuI2xld2tmI2Ztd2pxZmVibmx2cCNlbHF3bCNgbG1tZmB3bGFpZmB3anVmcHdrZiNFcWZtYGtzZmxzb2YjYm1nZWZid3ZxZmchPWpwI3Biamcjd2xwd3F2YHd2cWJvcWZlZnFmbWd2bm5scHcjbGV3Zm1iI3Bmc2JxYndmLj1cdD9nanUjamcjTGVlamBqYm8jdGxxb2d0amdmLWJxamIub2JhZm93a2Yjc29ibWZ3Ym1nI2p3I3RicGchI3Vib3ZmPiFvbGxoam1kI2J3YWZtZmVqYGpib2JxZiNqbSN3a2ZubG1qd2xxam1kcWZzbHF3ZmdvendrZiNubGdmcW10bHFoam1kI2xtYm9vbHRmZyN3bHRrZnFmI3drZiNqbW1sdWJ3anVmPyxiPT8sZ2p1PXBsdm1nd3FiYGhwZmJxYGtFbHFud2ZtZyN3bCNhZmptc3Z3I2pnPiFsc2Ztam1kI2xlcWZwd3FqYHdmZ2JnbHN3ZmcjYXpiZ2dxZnBwam1kd2tmbG9sZGpibW5md2tsZ3AjbGV1YnFqYm13I2xlQGtxanB3amJtI3VmcXojb2JxZGZidndsbmx3anVmYXojZWJxI3drZnFibWRmI2VxbG5zdnFwdmp3I2xlZWxvb2x0I3drZmFxbHZka3cjd2xqbSNGbWRvYm1nYmRxZmYjd2tid2JgYHZwZmcjbGVgbG5mcCNlcWxuc3FmdWZtd2ptZGdqdSNwd3pvZj5ranAjbHEja2Zxd3FmbmZtZ2x2cGVxZmZnbG4jbGVgbG1gZnFtam1kMyMyZm4jMmZuOEFicGhmd2Fib28scHd6b2YtYHBwYm0jZmJxb2pmcWZ1Zm0jYmV3ZnEsISN3andvZj4hLWBsbixqbWdme3diaGptZCN3a2Zzand3cGF2cWRrYGxtd2ZtdyE9Dj9wYHFqc3c9K2V3dnFtZmcjbHZ3a2J1am1kI3drZj8scHNibT0OXHQjbGBgYnBqbG1ib2FmYGJ2cGYjandwd2Jxd2ZnI3dsc2t6cGpgYm9vej0/LGdqdT1cdCMjYHFmYndmZyNhekB2cXFmbXdvei8jYWRgbG9scT4hd2Jham1nZns+IWdqcGJwd3FsdnBCbWJvendqYHAjYm9wbCNrYnAjYj0/Z2p1I2pnPiE/LHB3em9mPVx0P2Bib29mZyNlbHFwam1kZnEjYm1nLXBxYCM+IyEsLHVqbG9id2psbXB3a2pwI3Nsam13YGxtcHdibXdvempwI29sYGJ3ZmdxZmBscWdqbWRwZyNlcWxuI3drZm1mZ2Zxb2JtZ3BzbHF3dmR2L0ZwO047fTtEO3U7RjVtNEs0XTRfN2BnZnBicXFsb29sYGxuZm13YnFqbGZndmBiYGovX21wZnN3amZuYXFmcWZkanB3cWJnbGdqcWZgYGovX212YWpgYmBqL19tc3Zhb2pgamdiZ3FmcHN2ZnB3YnBxZnB2b3diZ2xwam5zbHF3Ym13ZnFmcGZxdWJnbHBicXcvQWB2b2xwZ2plZnFmbXdmcHBqZHZqZm13ZnBxZnMvVmFvamBicGp3dmJgai9fbW5qbWpwd2ZxamxzcWp1YmBqZ2JnZ2pxZmB3bHFqbGVscW5iYGovX21zbGFvYmBqL19tc3FmcGpnZm13ZmBsbXcnLCdmbWpnbHBiYGBmcGxxamxwd2Zga21scWJ3anNmcXBsbWJvZnBgYndmZGxxL0FiZnBzZmBqYm9mcGdqcHNsbWphb2ZiYHd2Ym9qZ2JncWZlZnFmbWBqYnVib29iZ2xvamdhamFvamx3ZmBicWZvYmBqbG1mcGBib2ZtZ2JxamxzbG8vQXdqYGJwYm13ZnFqbHFmcGdsYHZuZm13bHBtYnd2cWJvZnlibmJ3ZnFqYm9mcGdqZWZxZm1gamJmYGxtL19uamBid3FibXBzbHF3ZnFsZ3EvQWR2ZnlzYnF3amBqc2JxZm1gdmZtd3FibWdqcGB2cGovX21mcHdxdmB3dnFiZXZtZ2Jgai9fbWVxZmB2Zm13ZnBzZnFuYm1mbXdmd2x3Ym9uZm13ZjxQPFI8WjxRPFI8XT1vPFg8WT1uPFA8UjxaPFk9bjxePWw8WTxQPWM9bjxcXDxWPFo8WT1rPW48UjxdPWc8XTxSPFc8WTxZPFI9azxZPFE9YD1hPW48UjxfPFI8VjxSPF88WDxcXDxTPFI9bTxXPFk8Xj1tPFk8XzxSPW08XFw8VT1uPFk9azxZPWw8WTxbPFA8UjxfPW89bj1tPFxcPFU9bjxcXDxaPFQ8WzxRPFQ8UDxZPFo8WD1vPF09bzxYPW89bjxzPFI8VD1tPFY8WzxYPFk9bT1gPF48VDxYPFk8Uj1tPF49YzxbPFQ8UT1vPFo8UTxSPW08XjxSPFk8VTxXPWI8WDxZPFU8UzxSPWw8UTxSPFA8UTxSPF88UjxYPFk9bjxZPFU9bTxePFI8VD1pPFM9bDxcXDxePFxcPW48XFw8VjxSPFU8UDxZPW09bjxSPFQ8UDxZPFk9bjxaPFQ8WzxRPWA8UjxYPFE8UjxVPFc9bz1rPWQ8WTxTPFk9bDxZPFg9azxcXD1tPW48VD1rPFxcPW09bj1gPWw8XFw8XTxSPW48UTxSPF49Zz1pPFM9bDxcXDxePFI9bTxSPF08UjxVPFM8Uj1uPFI8UDxQPFk8UTxZPFk9azxUPW08VzxZPFE8UjxePWc8WT1vPW08Vz1vPF88UjxWPFI8VzxSPFE8XFw8WzxcXDxYPW48XFw8VjxSPFk9bjxSPF88WDxcXDxTPFI9az1uPFQ8czxSPW08VzxZPW48XFw8VjxUPFk8UTxSPF49ZzxVPW09bjxSPFQ9bj1uPFxcPFY8VD1pPW09bDxcXDxbPW88TTxcXDxRPFY9bj1oPFI9bD1vPFA8djxSPF88WDxcXDxWPFE8VDxfPFQ9bTxXPFI8XjxcXDxRPFxcPWQ8WTxVPFE8XFw8VT1uPFQ9bTxePFI8VDxQPW08Xj1jPFs9YDxXPWI8XTxSPFU9azxcXD1tPW48Uj1tPWw8WTxYPFQ8dj1sPFI8UDxZPEg8Uj1sPW88UD1sPWc8UTxWPFk9bT1uPFxcPFc8VDxTPFI8VD1tPFY9bj1nPW09Yz1rPFA8WT1tPWM9aj1qPFk8UT1uPWw9bj1sPW88WDxcXD1tPFxcPFA9Zz1pPWw9ZzxRPFY8XFw8cTxSPF49ZzxVPWs8XFw9bTxSPF48UDxZPW09bjxcXD1oPFQ8Vz1gPFA8UDxcXD1sPW48XFw9bT1uPWw8XFw8UTxQPFk9bT1uPFk9bjxZPFY9bT1uPFE8XFw9ZDxUPWk8UDxUPFE9bz1uPFQ8UDxZPFE8VDxUPFA8WT1iPW48UTxSPFA8WT1sPF88Uj1sPFI8WD1tPFxcPFA8UjxQPWE9bjxSPFA9bzxWPFI8UT1qPFk9bTxePFI8WTxQPFY8XFw8VjxSPFU8fD1sPWk8VDxeNWk1ajRGNEM1ZTRJNF00XzRLNWg0XTRfNEs1aDRFNEs1aDRVNEs1aTVvNEY0RDVrNEs0RDRdNEs1aTRANEs1aDVmNWQ1aTRLNWg0WTVkNF00QDRDNWY0QzRFNEs1aDRVNFo1ZDRJNFo0SzVtNEU0SzVoNW40XzVpNEs1aDRVNEs0RDRGNEE1aTVmNWg1aTVoNW00SzRGNWk1aDRGNW41ZTRGNFU0QzVmNWg0SzVoNFg0VTRdNE80QjRENEs0XTRGNFs1ZDVmNF00VTVoNWY1bzVpNEk0XTVtNEs1bjRbNWg0RDRLNEY0SzVoNWg0VjRFNEY0XTRGNWY0RDRLNWg1ajRLNF80SzVoNFg1ZjRCNWk1ajRGNEM1ZjRLNWg0VTRdNEQ0SzVoNW40WTRZNEs1bTVoNEs1aTRVNWg1ZjVrNEs0RjRBNEM1ZjRHNEs1aDVoNWs1aTRLNWg0VTVpNWg1aTVvNEY0RDRFNWY1aTVvNWo1bzRLNWg0WzVtNWg1bTVmNEM1ZjVkNEk0QzRLNF00RTRGNEs0XTVmNEI0SzVoNFk0QTRFNEY0XzRANWY1aDRLNWg1ZDVuNEY0VTVqNEM1aTRLNWk0QzVmNWo0RTRGNFk1aTVmNWk0TzRdNFg1ZjVtNEs1aDRcXDVmNWo0VTRdNEQ1ZjRFNEQ1ZDRLNEQ0RTRPNWg0VTRLNEQ0SzVoNF81bTRdNWk0WDRLNW81aDRGNFU0SzVoNWU0SzVoNE81ZDVoNEs1aDRfNWo0RTRANEs1aTRVNEU0SzVoNFk0QTVtNEs1aDRDNWY1ajVvNWg1aTRLNEY0SzVoNEI0SzRZNEs1aDVpNWg1bTRPNFU0WjRLNE01bzRGNEs0RDRFNEs1aDRCNWY0XTRdNF80SzRKNWg0SzVoNW41aDRENEs1aDRPNEM0RDVpNW40SzRbNFU1aTRdNEs0XzVoNWk1ajRbNW40RTRLNWg1bzRGNEQ0SzVoNF00QDVoNEs0WDRGNF01bzRLNWg1bjRDNWk1ZjRVNFs1ZjVvcEF6V2JkTWJuZistaXNkISNib3c+ITJzeyNwbG9qZyMgLWRqZSEjYm93PiF3cWJtcHNicWZtd2ptZWxxbmJ3amxtYnNzb2pgYndqbG0hI2xtYG9qYGg+IWZwd2Jhb2pwa2ZnYmd1ZnF3anBqbWQtc21kISNib3c+IWZtdWpxbG1uZm13c2ZxZWxxbmJtYGZic3NxbHNxamJ3ZiVibnM4bmdicGs4am5uZmdqYndmb3o/LHB3cWxtZD0/LHFid2tmcSN3a2Jtd2Zuc2ZxYnd2cWZnZnVmb2xzbmZtd2BsbnNmd2p3amxtc29iYGZrbG9nZnF1anBqYWpvand6OWBsc3pxamRrdyE9MyEja2ZqZGt3PiFmdWZtI3drbHZka3Fmc29iYGZuZm13Z2Zwd2ptYndqbG1AbHFzbHFid2psbT92byNgb2JwcD4hQnBwbGBqYndqbG1qbWdqdWpndmJvcHNmcXBzZmB3anVmcGZ3V2puZmx2dyt2cW8ra3d3czksLG5id2tmbmJ3amBwbmJxZGptLndsczlmdWZtd3Zib296I2dmcGBxanN3amxtKiNtbC5xZnNmYndgbG9vZmB3amxtcC1JU0R/d2t2bmF/c2Jxd2pganNid2Ysa2ZiZz0/YWxnemVvbGJ3OW9mZXc4P29qI2BvYnBwPiFrdm1ncWZncCNsZVx0XHRLbHRmdWZxLyNgbG5zbHBqd2psbWBvZmJxOWFsd2s4YGxsc2ZxYndqbG10andram0jd2tmI29iYWZvI2VscT4hYWxxZ2ZxLndsczlNZnQjWWZib2JtZ3FmYGxubmZtZ2Znc2tsd2xkcWJza3pqbXdmcWZwd2ptZCVvdzhwdnMlZHc4YGxtd3FsdWZxcHpNZndrZnFvYm1ncGJvd2ZxbWJ3anVmbmJ7b2ZtZHdrPiFwdGp3eWZxb2JtZ0dmdWZvbHNuZm13ZnBwZm13amJvb3pcdFx0Qm93a2x2ZGsjPyx3Znt3YnFmYj13a3ZtZ2ZxYWpxZ3Fmc3FmcGZtd2ZnJWJuczhtZ2Jwazhwc2Zgdm9id2psbWBsbm52bWp3amZwb2ZkanBvYndqbG1mb2Zgd3FsbWpgcFx0XG4/Z2p1I2pnPiFqb292cHdxYndmZ2ZtZGptZmZxam1kd2ZxcWp3bHFqZnBidndrbHFqd2pmcGdqcHdxamF2d2ZnNSEja2ZqZGt3PiFwYm1wLnBmcWplOGBic2Jhb2YjbGUjZ2pwYnNzZmJxZmdqbXdmcWJgd2p1Zm9sbGhqbWQjZWxxancjdGx2b2cjYWZCZWRrYm1qcHdibXRicCNgcWZid2ZnTmJ3ay1lb2xscStwdnFxbHZtZ2ptZGBibSNib3BsI2FmbGFwZnF1YndqbG1uYmptd2ZtYm1gZmZtYGx2bXdmcWZnP2sxI2BvYnBwPiFubHFmI3FmYGZtd2p3I2ticCNhZmZtam11YnBqbG0jbGUqLWRmd1dqbmYrKmV2bWdibmZtd2JvR2Zwc2p3ZiN3a2YhPT9nanUjamc+IWptcHNqcWJ3amxtZntibmptYndqbG1zcWZzYnFid2psbWZ7c29ibWJ3amxtP2ptc3Z3I2pnPiE/LGI9Pyxwc2JtPXVmcXBqbG1wI2xlam1wd3F2bmZtd3BhZmVscWYjd2tmIyM+IyRrd3dzOSwsR2ZwYHFqc3dqbG1xZm9id2p1Zm96Iy1wdmFwd3FqbWQrZmJgayNsZSN3a2Zme3NmcWpuZm13cGptZW92Zm13amJvam13ZmRxYndqbG1uYm16I3NmbHNvZmd2ZiN3bCN3a2YjYGxuYWptYndqbG1nbCNtbHcja2J1Zk5qZ2dvZiNGYnB3P21scGBxanN3PT9gbHN6cWpka3chI3NmcWtic3Ajd2tmam1wd2p3dndqbG1qbSNHZmBmbmFmcWJxcWJtZGZuZm13bmxwdyNlYm5sdnBzZnFwbG1ib2p3emBxZmJ3amxtI2xlb2puandid2psbXBme2BvdnBqdWZvenBsdWZxZmpkbXd6LmBsbXdmbXchPVx0P3dnI2BvYnBwPiF2bWdmcWRxbHZtZ3NicWJvb2ZvI3dsZ2xgd3FqbWYjbGVsYGB2c2pmZyNhendmcW5qbWxvbGR6UWZtYmpwcGJtYGZiI212bmFmcSNsZXB2c3NscXcjZWxxZntzb2xxYndqbG1xZmBsZG1qd2psbXNxZmdmYGZwcGxxP2puZCNwcWA+ISw/azIjYG9icHA+IXN2YW9qYGJ3amxtbmJ6I2JvcGwjYWZwc2ZgamJvanlmZz8sZWpmb2dwZnc9c3FsZHFmcHBqdWZuam9vamxtcCNsZXB3YndmcCN3a2J3Zm1lbHFgZm5mbXdicWx2bWcjd2tmI2xtZiNibWx3a2ZxLXNicWZtd01sZ2ZiZHFqYHZvd3ZxZkJvd2ZxbWJ3anVmcWZwZmJxYGtmcXB3bHRicWdwI3drZk5scHcjbGUjd2tmbmJteiNsd2tmcSMrZnBzZmBqYm9vej93ZyN0amd3az4hOHRqZ3drOTIzMyZqbWdmc2ZtZ2Ztdz9rMCNgb2JwcD4hI2xtYGtibWRmPiEqLWJnZ0BvYnBwK2ptd2ZxYmB3amxtTG1mI2xlI3drZiNnYnZka3dmcSNsZWJgYGZwcGxxamZwYXFibWBrZnAjbGUOXHQ/Z2p1I2pnPiF3a2Yjb2JxZGZwd2dmYG9icWJ3amxtcWZkdm9id2psbXBKbWVscW5id2psbXdxYm1wb2J3amxtZ2xgdm5mbXdicXpqbSNscWdmcSN3bCE9XHQ/a2ZiZz1cdD8hI2tmamRrdz4hMmJgcWxwcCN3a2YjbHFqZm13YndqbG0qOD8scGBxanN3PWpuc29mbmZtd2ZnYGJtI2FmI3BmZm13a2ZxZiN0YnAjYmdmbmxtcHdxYndmYGxtd2JqbWZxIT1gbG1tZmB3amxtcHdrZiNBcWp3anBrdGJwI3Rxand3Zm0iam5zbHF3Ym13OHN7OCNuYnFkam0uZWxvb2x0ZmcjYXpiYWpvand6I3dsI2BsbnNvamBid2ZnZ3Zxam1kI3drZiNqbm5qZHFid2psbWJvcGwjYGJvb2ZnP2s3I2BvYnBwPiFnanB3am1gd2psbXFmc29iYGZnI2F6ZGx1ZnFtbmZtd3BvbGBid2psbSNsZWptI01sdWZuYWZxdGtmd2tmcSN3a2Y/LHM9XHQ/LGdqdT1iYHJ2anBqd2psbWBib29mZyN3a2Yjc2ZxcGZgdndqbG1nZnBqZG1id2psbXhlbG13LnBqeWY5YnNzZmJxZmcjam1qbXVmcHdqZGJ3ZmZ7c2ZxamZtYGZnbmxwdyNvamhmb3p0amdmb3ojdnBmZ2dqcGB2cHBqbG1wc3FmcGZtYGYjbGUjK2dsYHZuZm13LWZ7d2ZtcGp1Zm96Sncja2JwI2FmZm1qdyNnbGZwI21sd2BsbXdxYnF6I3dsam1rYmFqd2Jtd3BqbnNxbHVmbmZtd3Bga2xvYnFwa2pzYGxtcHZuc3dqbG1qbXB3cXZgd2psbWVscSNme2Juc29mbG1mI2xxI25scWZzezgjc2JnZ2ptZHdrZiNgdnFxZm13YiNwZnFqZnAjbGVicWYjdnB2Ym9venFsb2Yjam0jd2tmc3FmdWpsdnBveiNnZnFqdWJ3anVmcGZ1amdmbWBmI2xlZntzZnFqZm1gZnBgbG9scXBga2ZuZnB3YndmZyN3a2J3YGZxd2plamBid2Y/LGI9PyxnanU9XHQjcGZvZmB3Zmc+IWtqZGsjcGBrbGxvcWZwc2xtcGYjd2xgbG5lbHF3YmFvZmJnbHN3amxtI2xld2txZmYjemZicXB3a2YjYGx2bXdxemptI0VmYXF2YnF6cGwjd2tidyN3a2ZzZmxzb2YjdGtsI3NxbHVqZ2ZnI2F6P3NicWJuI21ibmZiZWVmYHdmZyNhemptI3dmcW5wI2xlYnNzbGptd25mbXdKUEwuOzs2Oi4yIXRicCNhbHFtI2pta2pwd2xxamBibyNxZmRicWdmZyNicG5mYnB2cWZuZm13anAjYWJwZmcjbG0jYm1nI2x3a2ZxIzkjZXZtYHdqbG0rcGpkbWplamBibXdgZm9mYXFid2psbXdxYm1wbmp3d2ZnLGlwLGlydmZxei1qcCNobWx0bSNicHdrZmxxZndqYGJvI3diYWptZ2Z7PiFqdyNgbHZvZyNhZj9tbHBgcWpzdz1cdGtidWptZCNhZmZtDlx0P2tmYmc9Dlx0PyMlcnZsdzhXa2YjYGxuc2pvYndqbG1rZiNrYmcjYWZmbXNxbGd2YGZnI2F6c2tqb2xwbHNrZnFgbG1wd3F2YHdmZ2ptd2ZtZ2ZnI3dsYm5sbWQjbHdrZnFgbG5zYnFmZyN3bHdsI3BieiN3a2J3Rm1kam1mZnFqbWRiI2dqZWVmcWZtd3FmZWZxcWZnI3dsZ2plZWZxZm1gZnBhZm9qZmUjd2tid3NrbHdsZHFic2twamdmbXdqZXpqbWRLanB3bHF6I2xlI1Fmc3Zhb2pgI2xlbWZgZnBwYnFqb3pzcWxhYmFqb2p3endmYGttamBib296b2ZidWptZCN3a2Zwc2Zgd2Jgdm9icWVxYmB3amxtI2xlZm9mYHdxamBqd3prZmJnI2xlI3drZnFmcHdidnFibXdwc2Jxd21mcXBranNmbnNrYnBqcCNsbW5scHcjcWZgZm13cGticWYjdGp3ayNwYnpqbWQjd2tid2Vqb29mZyN0andrZ2ZwamRtZmcjd2xqdyNqcCNsZXdmbSE9PyxqZXFibmY9YnAjZWxvb2x0cDluZnFkZmcjdGp3a3drcWx2ZGsjd2tmYGxubmZxYGpibyNzbGptd2ZnI2x2d2xzc2xxd3Ztand6dWpmdCNsZSN3a2ZxZnJ2anFmbmZtd2dqdWpwamxtI2xlc3FsZHFibm5qbWRrZiNxZmBmanVmZ3Bmd0ptd2ZxdWJvIT0/LHBzYm09PyxqbSNNZnQjWmxxaGJnZ2p3amxtYm8jYGxuc3FmcHBqbG1cdFx0P2dqdSNqZz4ham1gbHFzbHFid2Y4PyxwYHFqc3c9P2J3d2Jga0Z1Zm13YWZgYm5mI3drZiMhI3dicWRmdz4hXFxgYnFxamZnI2x2d1BsbmYjbGUjd2tmcGBqZm1gZiNibWd3a2Yjd2puZiNsZUBsbXdiam1mcSE9bmJqbXdiam1qbWRAa3FqcHdsc2tmcU52YGsjbGUjd2tmdHFqd2ptZHAjbGUhI2tmamRrdz4hMXBqeWYjbGUjd2tmdWZxcGpsbSNsZSNuant3dnFmI2xlI2Fmd3RmZm0jd2tmRntibnNvZnAjbGVmZ3ZgYndqbG1ib2BsbnNmd2p3anVmI2xtcHZhbmp3PiFnanFmYHdscSNsZWdqcHdqbWB3anVmLEdXRyNbS1dOTyNxZm9id2ptZCN3bHdmbWdmbWB6I3dsc3FsdWptYGYjbGV0a2pgayN0bHZvZ2dmcHNqd2Yjd2tmcGBqZm13amVqYCNvZmRqcG9id3ZxZi1qbW1mcUtXTk8jYm9vZmRid2psbXBCZHFqYHZvd3ZxZnRicCN2cGZnI2ptYnNzcWxiYGsjd2xqbXdmb29qZGZtd3pmYnFwI29id2ZxL3BibXAucGZxamVnZndmcW5qbWptZFNmcWVscW5ibWBmYnNzZmJxYm1gZnAvI3RramBrI2pwI2Vsdm1nYndqbG1wYmFhcWZ1amJ3ZmdramRrZnEjd2tibXAjZXFsbiN3a2Yjam1nanVqZ3ZibyNgbG5zbHBmZyNsZXB2c3NscGZnI3dsYG9iam5wI3drYndid3dxamF2d2psbWVsbXcucGp5ZjkyZm9mbmZtd3AjbGVLanB3bHFqYGJvI2tqcCNhcWx3a2ZxYncjd2tmI3dqbmZibW1qdWZxcGJxemRsdWZxbWZnI2F6cWZvYndmZyN3bCN2b3dqbmJ3Zm96I2ptbWx1YndqbG1wancjanAjcHdqb29gYm0jbG1veiNhZmdmZWptandqbG1wd2xETldQd3FqbWRCI212bmFmcSNsZWpuZCNgb2JwcD4hRnVmbXd2Ym9vei90YnAjYGtibWRmZ2xgYHZxcWZnI2ptbWZqZGthbHFqbWRnanB3am1kdmpwa3RrZm0ja2YjdGJwam13cWxndmBqbWR3ZnFxZnB3cWpib05ibXojbGUjd2tmYnFkdmZwI3drYndibSNCbmZxamBibWBsbXJ2ZnB3I2xldGpnZnBzcWZiZyN0ZnFmI2hqb29mZ3BgcWZmbSNibWcjSm0jbHFnZnEjd2xme3NmYHdmZyN3bGdmcGBmbWdibXdwYnFmI29sYGJ3ZmdvZmRqcG9id2p1ZmRmbWZxYndqbG1wI2FiYGhkcWx2bWdubHB3I3NmbHNvZnpmYnFwI2Jld2Zxd2tmcWYjanAjbWx3a2Yja2pka2Zwd2VxZnJ2Zm13b3ojd2tmeiNnbCNtbHdicWR2Zmcjd2tid3BrbHRmZyN3a2J3c3FmZ2xuam1ibXd3a2Zsb2xkamBib2F6I3drZiN3am5mYGxtcGpnZnFqbWRwa2xxdy5vanVmZz8scHNibT0/LGI9YGJtI2FmI3ZwZmd1ZnF6I29qd3dvZmxtZiNsZSN3a2Yja2JnI2JvcWZiZ3pqbXdmcXNxZndmZ2Bsbm52bWpgYndmZWZid3ZxZnAjbGVkbHVmcW1uZm13Lz8sbWxwYHFqc3c9Zm13ZnFmZyN3a2YhI2tmamRrdz4hMEptZ2ZzZm1nZm13c2xzdm9id2psbXBvYnFkZi5wYGJvZi0jQm93a2x2ZGsjdnBmZyNqbSN3a2ZnZnB3cXZgd2psbXNscHBqYWpvand6cHdicXdqbWQjam13dGwjbHEjbmxxZmZ7c3FmcHBqbG1wcHZhbHFnam1id2ZvYnFkZnEjd2tibWtqcHdscXojYm1nPyxsc3dqbG09Dlx0QGxtd2ptZm13Ym9mb2puam1id2ptZHRqb28jbWx3I2Fmc3FiYHdqYGYjbGVqbSNlcWxtdyNsZXBqd2YjbGUjd2tmZm1wdnFmI3drYnd3bCNgcWZid2YjYm5qcHBqcHBqc3Nqc2x3Zm13amJvb3psdndwd2JtZ2ptZGFmd3dmcSN3a2JtdGtidyNqcCNtbHRwand2YndmZyNqbW5md2IjbWJuZj4hV3FiZ2p3amxtYm9wdmRkZnB3amxtcFdxYm1wb2J3amxtd2tmI2VscW4jbGVid25scHNrZnFqYGpnZmxvbGRqYGJvZm13ZnFzcWpwZnBgYm9gdm9id2ptZGZicHcjbGUjd2tmcWZubWJtd3AjbGVzb3Zkam1wc2JkZixqbWdmey1za3M8cWZuYmptZmcjam13cWJtcGVscW5mZ0tmI3RicCNib3BsdGJwI2JvcWZiZ3pwd2J3anB3amBib2ptI2VidWxxI2xlTmptanB3cXojbGVubHVmbmZtdyNsZWVscW52b2J3amxtanAjcWZydmpxZmc/b2ptaCNxZm8+IVdranAjanAjd2tmIz9iI2txZmU+ISxzbHN2b2JxanlmZ2ptdWxvdWZnI2ptYnFmI3ZwZmcjd2xibWcjcGZ1ZnFib25iZ2YjYXojd2tmcGZmbnAjd2wjYWZvamhmb3ojd2tid1Nib2Zwd2ptamJtbWJuZmcjYmV3ZnFqdyNrYmcjYWZmbW5scHcjYGxubmxtd2wjcWZlZnEjd2xhdncjd2tqcCNqcGBsbXBmYHZ3anVmd2Zuc2xxYnFqb3pKbSNkZm1mcWJvL2BsbXVmbXdqbG1wd2JoZnAjc29iYGZwdmFnanVqcGpsbXdmcXFqd2xxamJvbHNmcWJ3amxtYm9zZnFuYm1mbXdvenRicCNvYnFkZm96bHZ3YXFmYmgjbGVqbSN3a2Yjc2Jwd2Vsb29sdGptZCNiI3tub21wOWxkPiE9P2IjYG9icHA+IWBvYnBwPiF3Znt3QGxtdWZxcGpsbSNuYnojYWYjdnBmZ25ibXZlYmB3dnFmYmV3ZnEjYWZqbWRgb2ZicWVqeyE9XHRydmZwd2psbSNsZXRicCNmb2Zgd2Znd2wjYWZgbG5mI2JhZmBidnBmI2xlI3BsbmYjc2Zsc29mam1wc2pxZmcjYXpwdmBgZnBwZXZvI2Ijd2puZiN0a2ZtbmxxZiNgbG5ubG1ibmxtZHB3I3drZmJtI2xlZWpgamJvdGpnd2s5MjMzJjh3ZmBrbWxvbGR6L3RicCNiZ2xzd2Znd2wjaGZmcyN3a2ZwZnd3b2ZuZm13cG9qdWYjYWpxd2twam1nZnsta3dubyFAbG1tZmB3amB2d2JwcGpkbWZnI3dsJWJuczh3am5mcDhiYGBsdm13I2VscWJvamRtPnFqZGt3d2tmI2BsbnNibXpib3RienAjYWZmbXFmd3ZxbWZnI3dsam11bG91Zm5mbXdBZmBidnBmI3drZndranAjc2ZxamxnISNtYm5mPiFyISNgbG1lam1mZyN3bGIjcWZwdm93I2xldWJvdmY+ISEjLD1qcCNiYHd2Ym9vekZtdWpxbG1uZm13Dlx0PyxrZmJnPQ5cdEBsbXVmcXBmb3ovPVx0P2dqdSNqZz4hMyEjdGpnd2s+ITJqcCNzcWxhYmFvemtidWYjYWZgbG5mYGxtd3Fsb29qbWR3a2Yjc3FsYW9mbmBqd2p5Zm1wI2xlc2xvandqYGpibXBxZmJga2ZnI3drZmJwI2ZicW96I2JwOW1sbWY4I2x1ZnE/d2Jhb2YjYGZvb3Vib2pnand6I2xlZ2pxZmB3b3ojd2xsbW5sdnBmZ2x0bXRrZnFmI2p3I2pwdGtmbSNqdyN0YnBuZm5hZnFwI2xlI3Fmb2J3amxtI3dsYmBgbG5ubGdid2Zib2xtZCN0andrI0ptI3drZiNvYndmd2tmI0ZtZG9qcGtnZm9qYGpsdnAhPXdranAjanAjbWx3d2tmI3NxZnBmbXdqZSN3a2Z6I2JxZmJtZyNlam1ib296YiNuYnd3ZnEjbGUOXHRcbj8sZ2p1PQ5cdA5cdD8scGBxanN3PWVicHdmcSN3a2JtbmJpbHFqd3ojbGViZXdmcSN0a2pga2BsbnNicWJ3anVmd2wjbmJqbXdiam1qbnNxbHVmI3drZmJ0YnFnZmcjd2tmZnEhI2BvYnBwPiFlcWJuZmFscWdmcXFmcHdscWJ3amxtam0jd2tmI3BibmZibWJvenBqcCNsZXdrZmpxI2VqcXB3R3Zxam1kI3drZiNgbG13am1mbXdib3BmcnZmbWBmI2xlZXZtYHdqbG0rKnhlbG13LnBqeWY5I3RscWgjbG0jd2tmPyxwYHFqc3c9XHQ/YWZkam1wI3Rqd2tpYnVicGBxanN3OWBsbXB3and2Zm13dGJwI2Vsdm1nZmdmcnZqb2phcWp2bmJwcHZuZiN3a2J3anAjZGp1Zm0jYXptZmZncCN3bCNhZmBsbHFnam1id2Zwd2tmI3VicWpsdnBicWYjc2JxdyNsZWxtb3ojam0jd2tmcGZgd2psbXAjbGVqcCNiI2Bsbm5sbXdrZmxxamZwI2xlZ2pwYGx1ZnFqZnBicHBsYGpid2psbWZnZGYjbGUjd2tmcHdxZm1kd2sjbGVzbHBqd2psbSNqbXNxZnBmbXcuZ2J6dm1qdWZxcGJvb3p3bCNlbHFuI3drZmF2dyNqbXB3ZmJnYGxxc2xxYndqbG1id3diYGtmZyN3bGpwI2Bsbm5sbW96cWZicGxtcCNlbHEjJXJ2bHc4d2tmI2BibSNhZiNuYmdmdGJwI2Jhb2Yjd2x0a2pgayNuZmJtcGF2dyNnamcjbWx3bG1ObHZwZkx1ZnFicCNzbHBwamFvZmxzZnFid2ZnI2F6YGxuam1kI2VxbG53a2Yjc3FqbmJxemJnZ2p3amxtI2xlZWxxI3BmdWZxYm93cWJtcGVmcXFmZ2Ijc2ZxamxnI2xlYnFmI2Jhb2Yjd2xrbHRmdWZxLyNqd3BrbHZvZyNrYnVmbnZgayNvYnFkZnFcdFxuPyxwYHFqc3c9Ymdsc3dmZyN3a2ZzcWxzZnF3eiNsZWdqcWZgd2ZnI2F6ZmVlZmB3anVmb3p0YnAjYXFsdmRrd2Bram9ncWZtI2xlU3FsZHFibm5qbWRvbG1kZnEjd2tibW5ibXZwYHFqc3dwdGJxI2JkYmptcHdheiNuZmJtcCNsZWJtZyNubHB3I2xlcGpuam9icSN3bCNzcWxzcWpmd2JxemxxamRqbWJ3am1kc3FmcHdqZGpsdnBkcWJubmJ3amBib2Z7c2ZxamZtYGYtd2wjbmJoZiN3a2ZKdyN0YnAjYm9wbGpwI2Vsdm1nI2ptYGxuc2Z3andscXBqbSN3a2YjVi1QLXFmc29iYGYjd2tmYXFsdmRrdyN3a2ZgYm9gdm9id2psbWVib28jbGUjd2tmd2tmI2RmbWZxYm9zcWJgd2pgYm9vemptI2tsbWxxI2xlcWZvZmJwZmcjam1xZnBqZ2Ztd2pib2JtZyNwbG5mI2xlaGptZCNsZSN3a2ZxZmJgd2psbSN3bDJwdyNGYnFvI2xlYHZvd3ZxZiNibWdzcWptYGpzYm9vej8sd2p3b2Y9XHQjI3drZnojYGJtI2FmYWJgaCN3bCN3a2ZwbG5mI2xlI2tqcGZ7c2xwdnFmI3dsYnFmI3BqbmpvYnFlbHFuI2xlI3drZmJnZ0VidWxxandmYGp3anlmbXBranNzYnF3I2ptI3drZnNmbHNvZiN0andram0jc3FiYHdqYGZ3bCNgbG13am12ZiVibnM4bmptdnA4YnNzcWx1ZmcjYXojd2tmI2VqcXB3I2Jvb2x0Zmcjd2tmYm1nI2VscSN3a2Zldm1gd2psbWptZHNvYnpqbWQjd2tmcGxvdndqbG0jd2xrZmpka3c+ITMhI2ptI2tqcCNhbGxobmxxZiN3a2JtI2JlbG9vbHRwI3drZmBxZmJ3Zmcjd2tmc3FmcGZtYGYjam0lbWFwczg/LHdnPW1id2psbWJvanB3d2tmI2pnZmIjbGViI2BrYnFiYHdmcXRmcWYjZWxxYGZnI2BvYnBwPiFhd21nYnpwI2xlI3drZmVmYnd2cWZnI2ptcGtsdGptZCN3a2ZqbXdmcWZwdyNqbWptI3NvYmBmI2xld3ZxbSNsZSN3a2Z3a2Yja2ZiZyNsZU9scWcjbGUjd2tmc2xvandqYGJvb3prYnAjandwI2x0bUZndmBid2psbWJvYnNzcWx1Ym8jbGVwbG5mI2xlI3drZmZiYGsjbHdrZnEvYWZrYnVqbHEjbGVibWcjYWZgYnZwZmJtZyNibWx3a2ZxYnNzZmJxZmcjbG1xZmBscWdmZyNqbWFvYmBoJXJ2bHc4bmJ6I2ptYG92Z2Z3a2YjdGxxb2ckcGBibSNvZmJnI3dscWZlZnFwI3dsI2JhbHFnZnE+ITMhI2RsdWZxbW5mbXcjdGptbWptZCN3a2ZxZnB2b3dmZyNqbSN0a2pvZiN3a2YjVGJwa2ptZHdsbS93a2YjcHZhaWZgd2Bqd3ojam0jd2tmPT8sZ2p1PQ5cdFxuXG5xZmVvZmB3I3drZndsI2BsbnNvZndmYWZgYm5mI25scWZxYmdqbGJgd2p1ZnFmaWZgd2ZnI2F6dGp3a2x2dyNibXpranAjZWJ3a2ZxL3RramBrI2Bsdm9nYGxzeiNsZSN3a2Z3bCNqbWdqYGJ3ZmIjc2xvandqYGJvYmBgbHZtd3AjbGVgbG1wd2p3dndmcHRscWhmZyN0andrZnE/LGI9Pyxvaj1sZSNranAjb2plZmJgYGxuc2JtamZnYG9qZm13VGpnd2tzcWZ1Zm13I3drZk9mZGpwb2J3anVmZ2plZWZxZm13b3p3bGRmd2tmcSNqbWticCNwZnVmcWJvZWxxI2JtbHdrZnF3Znt3I2xlI3drZmVsdm1nZmcjd2tmZiN0andrI3drZiNqcCN2cGZnI2VscWBrYm1kZmcjd2tmdnB2Ym9veiN3a2Zzb2JgZiN0a2ZxZnRrZnFmYnAjd2tmPSM/YiNrcWZlPiEhPT9iI2txZmU+IXdrZm5wZm91ZnAvYm93a2x2ZGsja2Z3a2J3I2BibSNhZndxYmdqd2psbWJvcWxvZiNsZSN3a2ZicCNiI3FmcHZvd3Fmbmx1ZkBram9nZ2ZwamRtZmcjYXp0ZnB3I2xlI3drZlBsbmYjc2Zsc29mc3FsZ3Zgd2psbS9wamdmI2xlI3drZm1mdHBvZnd3ZnFwdnBmZyNheiN3a2ZnbHRtI3dsI3drZmJgYGZzd2ZnI2F6b2p1ZiNqbSN3a2Zid3dmbnN3cCN3bGx2d3BqZ2Yjd2tmZXFmcnZmbWBqZnBLbHRmdWZxLyNqbXNxbGRxYm5uZnFwYncjb2ZicHcjam1ic3NxbHtqbmJ3ZmJvd2tsdmRrI2p3dGJwI3NicXcjbGVibWcjdWJxamx2cERsdWZxbWxxI2xld2tmI2Jxd2pgb2Z3dnFtZmcjam13bD0/YiNrcWZlPiEsd2tmI2ZgbG1sbnpqcCN3a2Yjbmxwd25scHcjdGpnZm96dGx2b2cjb2J3ZnFibWcjc2Zxa2JzcHFqcGYjd2wjd2tmbGBgdnFwI3RrZm12bWdmcSN0a2pga2BsbWdqd2psbXAtd2tmI3RmcHdmcW13a2ZscXojd2tid2pwI3NxbGd2YGZnd2tmI2Bqd3ojbGVqbSN0a2pgayNrZnBmZm0jam0jd2tmd2tmI2BmbXdxYm9hdmpvZ2ptZCNsZW5ibXojbGUja2pwYnFmYiNsZSN3a2ZqcCN3a2YjbG1vem5scHcjbGUjd2tmbmJteiNsZSN3a2Z3a2YjVGZwd2ZxbVdrZnFmI2pwI21sZnt3Zm1nZmcjd2xQd2J3anB3amBib2Bsb3BzYm0+MSN/cGtscXcjcHdscXpzbHBwamFvZiN3bHdsc2xvbGRqYGJvYHFqd2pgYm8jbGVxZnNscXdmZyN3bGIjQGtxanB3amJtZ2ZganBqbG0jd2xqcCNmcnZibyN3bHNxbGFvZm5wI2xlV2tqcCNgYm0jYWZuZnFga2JtZ2pwZmVscSNubHB3I2xlbWwjZnVqZ2ZtYGZmZ2p3amxtcCNsZWZvZm5mbXdwI2ptJXJ2bHc4LSNXa2ZgbG4sam5iZGZwLHRramBrI25iaGZwd2tmI3NxbGBmcHBxZm5iam1wI3drZm9qd2ZxYnd2cWYvanAjYiNuZm5hZnF3a2Yjc2xzdm9icXdrZiNibWBqZm13c3FsYW9mbnAjam13am5mI2xlI3drZmdmZWZid2ZnI2F6YWxneiNsZSN3a2ZiI2VmdCN6ZmJxcG52YGsjbGUjd2tmd2tmI3RscWgjbGVAYm9qZWxxbWpiL3BmcXVmZyNicCNiZGx1ZnFtbmZtdy1gbG1gZnN3cCNsZW5sdWZuZm13I2ptXG5cbj9nanUjamc+IWp3ISN1Ym92Zj4hb2JtZHZiZGYjbGVicCN3a2Z6I2JxZnNxbGd2YGZnI2ptanAjd2tidyN3a2Zme3NvYmptI3drZmdqdT0/LGdqdT1cdEtsdGZ1ZnEjd2tmb2ZiZyN3bCN3a2Zcbj9iI2txZmU+ISx0YnAjZHFibXdmZ3NmbHNvZiNrYnVmYGxtd2ptdmJvb3p0YnAjcGZmbSNicGJtZyNxZm9id2Znd2tmI3Fsb2YjbGVzcWxzbHBmZyNhemxlI3drZiNhZnB3ZmJgayNsd2tmcS1AbG1wd2Jtd2ptZnNmbHNvZiNlcWxuZ2pib2Zgd3AjbGV3bCNxZnVqcGpsbXRicCNxZm1ibmZnYiNwbHZxYGYjbGV3a2Yjam1qd2pib29idm1ga2ZnI2ptc3FsdWpnZiN3a2Z3bCN3a2YjdGZwd3RrZnFmI3drZnFmYm1nI3BqbmpvYnFhZnd0ZmZtI3d0bGpwI2JvcGwjd2tmRm1kb2pwayNibWdgbG1nandqbG1wL3drYncjancjdGJwZm13andvZmcjd2x3a2ZucGZvdWZwLXJ2Ym13and6I2xlcWJtcHNicWZtYHp3a2YjcGJuZiNicHdsI2lsam0jd2tmYGx2bXdxeiNibWd3a2pwI2pwI3drZldranAjb2ZnI3dsYiNwd2J3Zm5mbXdgbG13cWJwdyN3bG9icHdKbWdme0xld2txbHZkayNranBqcCNnZnBqZG1mZ3drZiN3ZnFuI2pwanAjc3FsdWpnZmdzcWx3ZmB3I3drZm1kPyxiPT8sb2o9V2tmI2B2cXFmbXd3a2YjcGp3ZiNsZXB2YXB3Ym13amJvZntzZnFqZm1gZi9qbSN3a2YjVGZwd3drZnojcGtsdm9ncG9sdWZtKGFqbWJgbG5mbXdicWpscHZtanVmcXBqZ2JnYGxtZ2pgamxtZnBiYHdqdWpnYmdmcGZ7c2ZxamZtYGpid2ZgbWxvbGQvQWJzcWxndmBgai9fbXN2bXd2YmBqL19tYnNvamBiYGovX21gbG13cWJwZi9dYmBid2ZkbHEvQWJwcWZkanB3cWJxcGZzcWxlZnBqbG1ib3dxYndibmpmbXdscWZkL0Fwd3Fid2ZwZmBxZndicS9BYnNxam1ganNib2Zwc3Fsd2ZgYGovX21qbnNscXdibXdmcGpuc2xxd2JtYGpic2xwamFqb2pnYmdqbXdmcWZwYm13ZmBxZmBqbmpmbXdsbWZgZnBqZ2JnZnBwdnBgcWphanFwZmJwbGBqYmBqL19tZ2pwc2xtamFvZnBmdWJvdmJgai9fbWZwd3ZnamJtd2ZwcWZwc2xtcGJhb2ZxZnBsb3Zgai9fbWR2Ymdib2JpYnFicWZkanB3cWJnbHBsc2xxd3ZtamdiZ2BsbmZxYGpib2ZwZWx3bGRxYmUvQWJidndscWpnYmdmcGptZGZtamZxL0Fid2ZvZnVqcGovX21gbG5zZndmbWBqYmxzZnFiYGpsbWZwZnB3YmFvZmBqZ2xwam5zb2ZuZm13ZmJgd3Zib25mbXdmbWJ1ZmRiYGovX21gbG1lbHFuamdiZ29qbWYua2ZqZGt3OWVsbXcuZWJuam96OSEjOSMha3d3czksLGJzc29qYGJ3amxtcG9qbWghI2txZmU+IXBzZmBqZWpgYm9veiwsPyJYQEdCV0JYXHRMcWRibWp5YndqbG1nanB3cWphdndqbG0zc3s4I2tmamRrdzlxZm9id2psbXBranNnZnVqYGYudGpnd2s/Z2p1I2BvYnBwPiE/b2JhZm8jZWxxPiFxZmRqcHdxYndqbG0/LG1scGBxanN3PVx0LGptZ2Z7LWt3bm8hdGptZ2x0LWxzZm0rIyJqbnNscXdibXc4YnNzb2pgYndqbG0sam1nZnNmbWdmbWBmLCx0dHQtZGxsZG9mbHFkYm1qeWJ3amxtYnZ3bGBsbnNvZndmcWZydmpxZm5mbXdwYGxtcGZxdWJ3anVmP2VscW4jbWJuZj4ham13Zm9vZmB3dmJvbmJxZGptLm9mZXc5Mjt3ayNgZm13dnF6Ym0jam5zbHF3Ym13am1wd2p3dndqbG1wYmFhcWZ1amJ3amxtP2puZCNgb2JwcD4hbHFkYm1qcGJ3amxtYGp1am9qeWJ3amxtMjp3ayNgZm13dnF6YnFga2p3ZmB3dnFmam1gbHFzbHFid2ZnMTN3ayNgZm13dnF6LmBsbXdiam1mcSE9bmxwdyNtbHdiYW96LD0/LGI9PyxnanU9bWx3amVqYGJ3amxtJHZtZ2Zlam1mZyQqRXZxd2tmcW5scWYvYWZvamZ1ZiN3a2J3am1tZnFLV05PIz4jc3FqbHEjd2wjd2tmZ3FibmJ3amBib296cWZlZnFxam1kI3dsbWZkbHdqYndqbG1wa2ZiZ3J2YnF3ZnFwUGx2d2sjQmVxamBidm1wdmBgZnBwZXZvU2ZtbXB6b3VibWpiQnAjYiNxZnB2b3cvP2t3bm8jb2JtZD4hJW93OCxwdnMlZHc4Z2Zib2ptZCN0andrc2tqb2JnZm9za2pia2pwd2xxamBib296Kjg/LHBgcWpzdz1cdHNiZ2dqbWQud2xzOWZ7c2Zxam5mbXdib2Rmd0J3d3FqYXZ3ZmptcHdxdmB3amxtcHdmYGttbG9sZGpmcHNicXcjbGUjd2tmIz5ldm1gd2psbSsqeHB2YXBgcWpzd2psbW8tZ3dnIT0OXHQ/a3dkZmxkcWJza2pgYm9AbG1wd2p3dndqbG0kLyNldm1gd2psbStwdnNzbHF3ZmcjYXpiZHFqYHZvd3ZxYm9gbG1wd3F2YHdqbG1zdmFvamBid2psbXBlbG13LnBqeWY5IzJiI3VicWpmd3ojbGU/Z2p1I3B3em9mPiFGbWB6YG9sc2ZnamJqZXFibmYjcHFgPiFnZm5sbXB3cWJ3ZmdiYGBsbnNvanBrZmd2bWp1ZnFwandqZnBHZm5sZHFic2tqYHAqOD8scGBxanN3PT9nZmdqYGJ3Zmcjd2xobWx0b2ZnZGYjbGVwYndqcGViYHdqbG1zYnF3amB2b2Jxb3o/LGdqdT0/LGdqdT1GbWRvanBrIytWUCpic3NmbWdAa2pvZyt3cWJtcG5qcHBqbG1wLSNLbHRmdWZxLyNqbXdmb29qZGZtYGYhI3diYWptZ2Z7PiFlb2xidzlxamRrdzhAbG5ubG10ZmJvd2txYm1kam1kI2VxbG5qbSN0a2pgayN3a2ZidyNvZmJwdyNsbWZxZnNxbGd2YHdqbG1mbWB6YG9sc2ZnamI4ZWxtdy5wanlmOTJpdnFqcGdqYHdqbG1idyN3a2J3I3dqbmYhPT9iI2BvYnBwPiFKbSNiZ2dqd2psbS9nZnBgcWpzd2psbShgbG11ZnFwYndqbG1gbG13YmB3I3Rqd2tqcCNkZm1mcWJvb3pxISNgbG13Zm13PiFxZnNxZnBmbXdqbWQlb3c4bmJ3ayVkdzhzcWZwZm13YndqbG1sYGBicGpsbWJvb3o/am5kI3RqZ3drPiFtYnVqZGJ3amxtIT1gbG5zZm1wYndqbG1ga2Juc2psbXBranNuZmdqYj4hYm9vISN1amxvYndqbG0jbGVxZmVmcWZtYGYjd2xxZnd2cW0jd3F2ZjhQd3FqYHcsLEZNISN3cWJtcGJgd2psbXBqbXdmcXVmbXdqbG11ZnFqZWpgYndqbG1KbWVscW5id2psbSNnamVlamB2b3dqZnBAa2Juc2psbXBranNgYnNiYWpvandqZnA/IlhmbWdqZV4uLj1+XHQ/LHBgcWpzdz1cdEBrcWpwd2pibWp3emVscSNme2Juc29mL1NxbGVmcHBqbG1ib3FmcHdxamB3amxtcHB2ZGRmcHcjd2tid3RicCNxZm9mYnBmZytwdmBrI2JwI3drZnFmbmx1ZkBvYnBwK3ZtZm5zb2x6bmZtd3drZiNCbmZxamBibXB3cXZgd3ZxZiNsZSxqbWdmey1rd25vI3N2YW9qcGtmZyNqbXBzYm0jYG9icHA+ISE9P2Ija3FmZT4hLGptd3FsZ3Zgd2psbWFmb2xtZGptZCN3bGBvYmpuZmcjd2tid2BsbXBmcnZmbWBmcD9uZndiI21ibmY+IUR2amdmI3dsI3drZmx1ZnF0a2ZvbmptZGJkYmptcHcjd2tmI2BsbWBmbXdxYndmZy9cdC1tbG13bHZgayNsYXBmcXVid2psbXA/LGI9XHQ/LGdqdT1cdGUjK2dsYHZuZm13LWFscWdmcTkjMnN7I3hlbG13LnBqeWY5MndxZmJ3bmZtdyNsZTMhI2tmamRrdz4hMm5sZ2plamBid2psbUptZ2ZzZm1nZm1gZmdqdWpnZmcjam13bGRxZmJ3ZnEjd2tibWJga2pmdWZuZm13cGZwd2Jhb2pwa2ptZElidWJQYHFqc3chI21mdWZxd2tmb2ZwcHBqZG1qZWpgYm1gZkFxbGJnYGJwd2ptZD0lbWFwczg/LHdnPWBsbXdiam1mcSE9XHRwdmBrI2JwI3drZiNqbWVvdmZtYGYjbGViI3NicXdqYHZvYnFwcWA+JGt3d3M5LCxtYnVqZGJ3amxtISNrYm9lI2xlI3drZiNwdmFwd2Jtd2pibyMlbWFwczg/LGdqdT1iZ3VibXdiZGYjbGVnanBgbHVmcXojbGVldm1nYm5mbXdibyNuZndxbHNsb2p3Ym13a2YjbHNzbHBqd2YhI3tubzlvYm1kPiFnZm9qYWZxYndmb3pib2pkbT5gZm13ZnFmdWxvdndqbG0jbGVzcWZwZnF1YndqbG1qbnNxbHVmbmZtd3BhZmRqbW1qbWQjam1JZnB2cCNAa3FqcHdTdmFvamBid2psbXBnanBiZHFmZm5mbXd3Znt3LmJvamRtOXEvI2V2bWB3amxtKypwam5qb2JxandqZnBhbGd6PT8sa3dubz1qcCNgdnFxZm13b3pib3NrYmFmd2pgYm9qcCNwbG5md2puZnB3enNmPiFqbmJkZixuYm16I2xlI3drZiNlb2x0OWtqZ2dmbThidWJqb2Jhb2Yjam1nZnBgcWphZiN3a2Zme2pwd2ZtYGYjbGVib28jbHVmcSN3a2Z3a2YjSm13ZnFtZndcbj92byNgb2JwcD4ham1wd2Jvb2J3amxtbWZqZGthbHFrbGxnYnFuZmcjZWxxYGZwcWZndmBqbWQjd2tmYGxtd2ptdmZwI3dsTWxtZndrZm9mcHAvd2Zuc2ZxYnd2cWZwXHRcblxuP2Ija3FmZT4hYG9scGYjd2wjd2tmZntibnNvZnAjbGUjanAjYmFsdncjd2tmK3BmZiNhZm9sdCotISNqZz4hcGZicWBrc3FsZWZwcGpsbWJvanAjYnViam9iYW9md2tmI2xlZWpgamJvXG5cbj8scGBxanN3PVx0XHRcblxuP2dqdSNqZz4hYmBgZm9mcWJ3amxtd2txbHZkayN3a2YjS2JvbyNsZSNFYm5mZ2ZwYHFqc3dqbG1wd3FibXBvYndqbG1wam13ZnFlZnFmbWBmI3d6c2Y+JHdme3cscWZgZm13I3pmYnFwam0jd2tmI3RscW9ndWZxeiNzbHN2b2JxeGFiYGhkcWx2bWc5d3FiZ2p3amxtYm8jcGxuZiNsZSN3a2YjYGxtbWZgd2ZnI3dsZntzb2xqd2J3amxtZm5mcWRmbWBmI2xlYGxtcHdqd3Z3amxtQiNLanB3bHF6I2xlcGpkbWplamBibXcjbmJtdmViYHd2cWZnZntzZmB3YndqbG1wPT9tbHBgcWpzdz0/YGJtI2FmI2Vsdm1nYWZgYnZwZiN3a2Yja2JwI21sdyNhZmZtbWZqZGthbHZxam1kdGp3a2x2dyN3a2YjYmdnZmcjd2wjd2tmXG4/b2ojYG9icHA+IWptcHdxdm5mbXdib1BsdWpmdyNWbWpsbWJgaG1sdG9mZ2RmZ3RramBrI2BibSNhZm1ibmYjZWxxI3drZmJ3d2Ztd2psbSN3bGJ3d2Zuc3dwI3dsI2dmdWZvbHNuZm13cEptI2ViYHcvI3drZj9vaiNgb2JwcD4hYmpuc29qYGJ3amxtcHB2andiYW9mI2VscW52YGsjbGUjd2tmI2Bsb2xtanlid2psbXNxZnBqZ2Ztd2pib2BibWBmb0F2YWFvZiNKbWVscW5id2psbW5scHcjbGUjd2tmI2pwI2dmcGBxamFmZ3FmcHcjbGUjd2tmI25scWYjbHEjb2ZwcGptI1Bmc3dmbmFmcUptd2Zvb2pkZm1gZnBxYD4ha3d3czksLHN7OCNrZmpka3c5I2J1YmpvYmFvZiN3bG5ibXZlYmB3dnFmcWt2bmJtI3FqZGt3cG9qbWgja3FmZT4hLGJ1YmpvYmFqb2p3enNxbHNscXdqbG1ib2x2d3BqZ2Yjd2tmI2Jwd3FsbWxuamBib2t2bmJtI2Fmam1kcG1ibmYjbGUjd2tmI2JxZiNlbHZtZyNqbWJxZiNhYnBmZyNsbXBuYm9vZnEjd2tibWIjc2ZxcGxtI3RrbGZ7c2JtcGpsbSNsZWJxZHZqbWQjd2tid21sdCNobWx0bSNicEptI3drZiNmYnFvemptd2ZxbmZnamJ3ZmdmcWp1ZmcjZXFsblBgYm1nam1idWpibT8sYj0/LGdqdT0OXHRgbG1wamdmcSN3a2ZibSNmcHdqbmJ3Zmd3a2YjTWJ3amxtYm8/Z2p1I2pnPiFzYmRxZnB2b3dqbWQjam1gbG5uanBwamxtZmdibWJvbGRsdnAjd2xicWYjcWZydmpxZmcsdm89XHQ/LGdqdT1cdHRicCNhYnBmZyNsbWJtZyNhZmBibmYjYiVtYXBzOCVtYXBzOHchI3Vib3ZmPiEhI3RicCNgYnN3dnFmZ21sI25scWYjd2tibXFmcHNmYHdqdWZvemBsbXdqbXZmI3dsIz0OXHQ/a2ZiZz0OXHQ/dGZxZiNgcWZid2ZnbmxxZiNkZm1mcWJvam1lbHFuYndqbG0jdnBmZyNlbHEjd2tmam1nZnNmbWdmbXcjd2tmI0puc2ZxamJvYGxuc2xtZm13I2xld2wjd2tmI21scXdram1gb3ZnZiN3a2YjQGxtcHdxdmB3amxtcGpnZiNsZSN3a2YjdGx2b2cjbWx3I2FmZWxxI2ptcHdibWBmam11Zm13amxtI2xlbmxxZiNgbG5zb2Z7YGxvb2Zgd2p1Zm96YWJgaGRxbHZtZzkjd2Z7dy5ib2pkbTkjandwI2xxamRqbWJvam13bCNiYGBsdm13d2tqcCNzcWxgZnBwYm0jZnt3Zm1wanVma2x0ZnVmcS8jd2tmd2tmeiNicWYjbWx3cWZpZmB3Zmcjd2tmYHFqd2pganBuI2xlZ3Zxam1kI3RramBrc3FsYWJhb3ojd2tmd2tqcCNicXdqYG9mK2V2bWB3amxtKyp4SncjcGtsdm9nI2FmYm0jYmRxZmZuZm13YmBgamdmbXdib296Z2plZWZxcCNlcWxuQnFga2p3ZmB3dnFmYWZ3d2ZxI2htbHRtYnFxYm1kZm5mbXdwam1lb3ZmbWBmI2xtYnd3Zm1nZmcjd2tmamdmbXdqYGJvI3dscGx2d2sjbGUjd2tmc2JwcCN3a3FsdmRre25vISN3andvZj4hdGZqZGt3OWFsb2c4YHFmYndqbWQjd2tmZ2pwc29iejltbG1mcWZzb2JgZmcjd2tmP2puZCNwcWA+ISxqa3d3c3A5LCx0dHQtVGxxb2cjVGJxI0pKd2Zwd2pubG1qYm9wZWx2bWcjam0jd2tmcWZydmpxZmcjd2wjYm1nI3drYncjd2tmYWZ3dGZmbSN3a2YjdGJwI2dmcGpkbWZnYGxtcGpwd3AjbGUjYGxtcGpnZnFiYW96c3Zhb2pwa2ZnI2F6d2tmI29ibWR2YmRmQGxtcGZxdWJ3amxtYGxtcGpwd2ZnI2xlcWZlZnEjd2wjd2tmYWJgaCN3bCN3a2YjYHBwISNuZmdqYj4hU2Zsc29mI2VxbG4jYnViam9iYW9mI2xtc3FsdWZnI3dsI2FmcHZkZGZwd2psbXAhdGJwI2htbHRtI2JwdWJxamZ3amZwI2xlb2poZm96I3dsI2FmYGxuc3FqcGZnI2xlcHZzc2xxdyN3a2Yja2JtZ3AjbGUjd2tmYGx2c29mZyN0andrYGxtbWZgdyNibWcjYWxxZ2ZxOW1sbWY4c2ZxZWxxbmJtYGZwYWZlbHFmI2Fmam1kb2J3ZnEjYWZgYm5mYGJvYHZvYndqbG1wbGV3Zm0jYGJvb2ZncWZwamdmbXdwI2xlbmZibWptZCN3a2J3PT9vaiNgb2JwcD4hZnVqZ2ZtYGYjZWxxZntzb2JtYndqbG1wZm11anFsbW5mbXdwIT0/LGI9PyxnanU9dGtqYGsjYm9vbHRwSm13cWxndmB3amxtZ2Z1Zm9sc2ZnI2F6YiN0amdmI3FibWRmbG0jYWZrYm9lI2xldWJvamRtPiF3bHMhc3FqbWBqc29mI2xlYncjd2tmI3dqbmYvPyxtbHBgcWpzdz0OcGJqZyN3bCNrYnVmam0jd2tmI2VqcXB3dGtqb2YjbHdrZnFwa3pzbHdrZndqYGJvc2tqb2xwbHNrZnFwc2x0ZnEjbGUjd2tmYGxtd2JqbWZnI2ptc2ZxZWxxbmZnI2F6am1iYWpvand6I3dsdGZxZiN0cWp3d2ZtcHNibSNwd3pvZj4ham1zdncjbWJuZj4hd2tmI3J2ZnB3amxtam13Zm1nZmcjZWxxcWZpZmB3amxtI2xlam5zb2pmcCN3a2J3am11Zm13Zmcjd2tmd2tmI3B3Ym1nYnFndGJwI3NxbGFiYW96b2ptaCNhZnd0ZmZtc3FsZWZwcGxxI2xlam13ZnFiYHdqbG1wYGtibWRqbWQjd2tmSm1namJtI0xgZmJtI2BvYnBwPiFvYnB3dGxxaGptZCN0andrJGt3d3M5LCx0dHQtemZicXAjYWZlbHFmV2tqcCN0YnAjd2tmcWZgcWZid2psbWJvZm13ZnFqbWQjd2tmbmZicHZxZm5mbXdwYm0jZnt3cWZuZm96dWJvdmYjbGUjd2tmcHdicXcjbGUjd2tmXHQ/LHBgcWpzdz1cdFx0Ym0jZmVlbHF3I3dsam1gcWZicGYjd2tmd2wjd2tmI3BsdndrcHNiYGptZD4hMyE9cHZlZWpgamZtd296d2tmI0Z2cWxzZmJtYGxtdWZxd2ZnI3dsYG9mYnFXam5mbHZ3Z2pnI21sdyNrYnVmYGxtcGZydmZtd296ZWxxI3drZiNtZnt3Znt3Zm1wamxtI2xlZmBsbWxuamAjYm1nYm93a2x2ZGsjd2tmYnFmI3NxbGd2YGZnYm1nI3Rqd2sjd2tmam1wdmVlamBqZm13ZGp1Zm0jYXojd2tmcHdid2ptZCN3a2J3ZntzZm1nand2cWZwPyxwc2JtPT8sYj1cdHdrbHZka3cjd2tid2xtI3drZiNhYnBqcGBmb29zYmdnam1kPmpuYmRmI2xlI3drZnFmd3ZxbWptZCN3bGptZWxxbmJ3amxtL3Bmc2JxYndmZyNhemJwcGJwcGptYndmZ3AhI2BsbXdmbXc+IWJ2d2tscWp3eiNsZW1scXdrdGZwd2ZxbT8sZ2p1PVx0P2dqdSMhPT8sZ2p1PQ5cdCMjYGxtcHZvd2J3amxtYGxubnZtand6I2xld2tmI21id2psbWJvancjcGtsdm9nI2Fmc2Jxd2pganNibXdwI2JvamRtPiFvZmV3d2tmI2RxZmJ3ZnB3cGZvZmB3amxtI2xlcHZzZnFtYnd2cWJvZ2ZzZm1nZm13I2xtanAjbmZtd2psbWZnYm9vbHRqbWQjd2tmdGJwI2ptdWZtd2ZnYmBgbG5zYm16am1ka2pwI3NmcXBsbWJvYnViam9iYW9mI2J3cHd2Z3ojbGUjd2tmbG0jd2tmI2x3a2ZxZntmYHZ3amxtI2xlS3ZuYm0jUWpka3dwd2ZxbnAjbGUjd2tmYnBwbGBqYndqbG1wcWZwZmJxYGsjYm1ncHZgYGZmZ2ZnI2F6Z2ZlZmJ3Zmcjd2tmYm1nI2VxbG4jd2tmYXZ3I3drZnojYnFmYGxubmJtZ2ZxI2xlcHdid2YjbGUjd2tmemZicXAjbGUjYmRmd2tmI3B3dmd6I2xlP3ZvI2BvYnBwPiFwc29iYGYjam0jd2tmdGtmcWYja2YjdGJwP29qI2BvYnBwPiFld2tmcWYjYnFmI21sdGtqYGsjYWZgYm5ma2Yjc3Zhb2pwa2ZnZntzcWZwcGZnI2ptd2wjdGtqYGsjd2tmYGxubmpwcGpsbWZxZWxtdy50Zmpka3c5d2ZxcWp3bHF6I2xlZnt3Zm1wamxtcCE9UWxuYm0jRm5zanFmZnJ2Ym8jd2wjd2tmSm0jYGxtd3FicHcva2x0ZnVmcS8jYm1nanAjd3pzamBib296Ym1nI2tqcCN0amVmK2JvcGwjYGJvb2ZnPT92byNgb2JwcD4hZmVlZmB3anVmb3ojZnVsb3VmZyNqbXdscGZmbiN3bCNrYnVmdGtqYGsjanAjd2tmd2tmcWYjdGJwI21sYm0jZntgZm9vZm13Ym9vI2xlI3drZnBmZ2ZwYHFqYWZnI2F6Sm0jc3FiYHdqYGYvYXFsYmdgYnB3am1kYGticWRmZyN0andrcWZlb2Zgd2ZnI2ptcHZhaWZgd2ZnI3dsbmpvandicXojYm1nd2wjd2tmI3Nsam13ZmBsbWxuamBib296cGZ3V2JxZGZ3am1kYnFmI2Jgd3Zib296dWpgd2xxeiNsdWZxKyo4PyxwYHFqc3c9YGxtd2ptdmx2cG96cWZydmpxZmcjZWxxZnVsb3Z3amxtYnF6Ym0jZmVlZmB3anVmbWxxd2sjbGUjd2tmLyN0a2pgayN0YnAjZXFsbXcjbGUjd2tmbHEjbHdrZnF0anBmcGxuZiNlbHFuI2xla2JnI21sdyNhZmZtZGZtZnFid2ZnI2F6am1lbHFuYndqbG0tc2Zxbmp3d2ZnI3dsam1gb3ZnZnAjd2tmZ2Z1Zm9sc25mbXcvZm13ZnFmZyNqbXdsd2tmI3NxZnVqbHZwYGxtcGpwd2Ztd296YnFmI2htbHRtI2Jwd2tmI2VqZm9nI2xld2tqcCN3enNmI2xlZGp1Zm0jd2wjd2tmd2tmI3dqd29mI2xlYGxtd2JqbXAjd2tmam1wd2JtYGZwI2xlam0jd2tmI21scXdrZ3ZmI3dsI3drZmpxYnFmI2dmcGpkbWZnYGxxc2xxYndqbG1wdGJwI3drYncjd2tmbG1mI2xlI3drZnBmbmxxZiNzbHN2b2JxcHZgYGZmZ2ZnI2ptcHZzc2xxdyNlcWxuam0jZ2plZWZxZm13Z2xuam1id2ZnI2F6Z2ZwamRtZmcjZWxxbHRtZnFwa2pzI2xlYm1nI3NscHBqYW96cHdibWdicWdqeWZncWZwc2xtcGZXZnt3dGJwI2ptd2ZtZ2ZncWZgZmp1Zmcjd2tmYnBwdm5mZyN3a2J3YnFmYnAjbGUjd2tmc3FqbmJxam96I2ptd2tmI2FicGpwI2xlam0jd2tmI3BmbXBmYmBgbHZtd3AjZWxxZ2Zwd3FsemZnI2F6Yncjb2ZicHcjd3RsdGJwI2dmYG9icWZnYGx2b2cjbWx3I2FmUGZgcWZ3YnF6I2xlYnNzZmJxI3dsI2FmbmJxZGptLndsczkyLF1fcCh/X3AoXCcsZGYqeHdrcWx0I2Z+OHdrZiNwd2JxdyNsZXd0bCNwZnNicWJ3Zm9ibWR2YmRmI2JtZ3RrbCNrYmcjYWZmbWxzZnFid2psbSNsZWdmYndrI2xlI3drZnFmYm8jbXZuYWZxcFxuP29qbWgjcWZvPiFzcWx1amdmZyN3a2Z3a2YjcHdscXojbGVgbG5zZndqd2psbXBmbWRvanBrIytWSCpmbWRvanBrIytWUCo8cDxSPFE8XzxSPFc8TT1sPFM9bTxWPFQ9bT1sPFM9bTxWPFQ9bT1sPFM9bTxWPFI1aDRVNF00RDVmNEVcbkFPBUd4XGJUQVxuemtcdkJsXGJRf1xiVEFcbnprXHZVbVxiUX9cYlRBXG56a1xucGUFdXxcdGlAXHRjVFxiVlZcblxcfVxueFNcdFZwBXRTBWtgXHRbWFx0W1hcdkhSXGJQdlxiVFdcYlVlXG5/YVxiUXBcdl9XXHZXc1xueFNcdkF6XG5feQRLaGptZWxxbmJgai9fbWtmcXFibmpmbXdicGZvZmB3cS9fbWpgbGdmcGBxanNgai9fbWBvYnBqZWpgYmdscGBsbWxgam5qZm13bHN2YW9qYGJgai9fbXFmb2JgamxtYmdicGptZWxxbi9Nd2pgYnFmb2JgamxtYmdscGdmc2Jxd2JuZm13bHdxYmFiaWJnbHFmcGdqcWZgd2JuZm13ZmJ6dm13Ym5qZm13bG5mcWBiZ2xPamFxZmBsbXcvTWB3Zm1scGtiYWp3YmBqbG1mcGB2bnNvam5qZm13bHFmcHdidnFibXdmcGdqcHNscGpgai9fbWBsbXBmYHZmbWBqYmZvZmB3cS9fbWpgYmJzb2pgYmBqbG1mcGdmcGBsbWZgd2JnbGptcHdib2Jgai9fbXFmYm9qeWJgai9fbXZ3am9qeWJgai9fbWZtYGpgb2xzZmdqYmZtZWZxbmZnYmdmcGptcHdxdm5mbXdscGZ7c2ZxamZtYGpicGptcHdqd3Zgai9fbXNicXdqYHZvYnFmcHB2YWBid2ZkbHFqYj1uPFI8Vz1gPFY8UjxMPFI9bT1tPFQ8VD1sPFxcPF08Uj1uPWc8XTxSPFc9YD1kPFk8Uz1sPFI9bT1uPFI8UDxSPFo8WT1uPFk8WD1sPW88XzxUPWk9bTxXPW89azxcXDxZPW08WTxVPWs8XFw9bTxePW08WTxfPFg8XFw8TDxSPW09bTxUPWM8cDxSPW08VjxePFk8WD1sPW88XzxUPFk8XzxSPWw8UjxYPFxcPF48UjxTPWw8Uj1tPFg8XFw8UTxRPWc9aTxYPFI8VzxaPFE9ZzxUPFA8WTxRPFE8UjxwPFI9bTxWPF49Zz1sPW88XTxXPFk8VTxwPFI9bTxWPF48XFw9bT1uPWw8XFw8UT1nPFE8VD1rPFk8XzxSPWw8XFw8XTxSPW48WTxYPFI8VzxaPFk8UT1vPW08Vz1vPF88VD1uPFk8UzxZPWw9YDxyPFg8UTxcXDxWPFI8UzxSPW48UjxQPW89bDxcXDxdPFI9bj1vPFxcPFM9bDxZPFc9YzxePFI8UjxdPWU8WTxSPFg8UTxSPF88Uj1tPF48UjxZPF88Uj1tPW48XFw9bj1gPFQ8WD1sPW88XzxSPFU9aDxSPWw9bzxQPFk9aTxSPWw8Uj1kPFI8Uz1sPFI9bjxUPF49bT1tPWc8VzxWPFxcPFY8XFw8WjxYPWc8VTxePFc8XFw9bT1uPFQ8Xz1sPW88UzxTPWc8XjxQPFk9bT1uPFk9bDxcXDxdPFI9bjxcXD1tPFY8XFw8WzxcXDxXPFM8WT1sPF49ZzxVPFg8WTxXPFxcPW49YDxYPFk8UT1gPF88VDxTPFk9bDxUPFI8WDxdPFQ8WzxRPFk9bTxSPW08UTxSPF48WTxQPFI8UDxZPFE9bjxWPW88UzxUPW49YDxYPFI8VzxaPFE8XFw9bDxcXDxQPFY8XFw9aTxRPFxcPWs8XFw8VzxSPEw8XFw8XTxSPW48XFw8TjxSPFc9YDxWPFI9bTxSPF49bTxZPFA8Xj1uPFI9bDxSPFU8UTxcXD1rPFxcPFc8XFw9bTxTPFQ9bTxSPFY9bTxXPW88WjxdPWc9bTxUPW09bjxZPFA8UzxZPWs8XFw9bjxUPFE8UjxePFI8XzxSPFM8UjxQPFI9ZTxUPW08XFw8VT1uPFI8XjxTPFI9azxZPFA9bzxTPFI8UDxSPWU9YDxYPFI8VzxaPFE8Uj1tPW09ZzxXPFY8VDxdPWc9bT1uPWw8UjxYPFxcPFE8UT1nPFk8UDxRPFI8XzxUPFk8Uz1sPFI8WTxWPW48TTxZPFU9azxcXD1tPFA8UjxYPFk8VzxUPW48XFw8VjxSPF88UjxSPFE8VzxcXDxVPFE8XzxSPWw8UjxYPFk8XjxZPWw9bTxUPWM9bT1uPWw8XFw8UTxZPWg8VDxXPWA8UD1nPW89bDxSPF48UT1jPWw8XFw8WzxRPWc9aTxUPW08VjxcXD1uPWA8UTxZPFg8WTxXPWI9YzxRPF48XFw9bD1jPFA8WTxRPWA9ZDxZPFA8UTxSPF88VD1pPFg8XFw8UTxRPFI8VTxbPFE8XFw9azxUPW48UTxZPFc9YDxbPWM9aDxSPWw9bzxQPFxcPE48WTxTPFk9bD1gPFA8WT1tPWM9ajxcXDxbPFxcPWU8VD1uPWc8dz1vPWs9ZDxUPFlcZkhEXGZIVVxmSWxcZkhuXGZIeVxmSFxcXGZIRFxmSWtcZkhpXGZIRlxmSERcZklrXGZIeVxmSFNcZkhDXGZIUlxmSHlcZkhcXFxmSWtcZkhuXGZIaVxmSERcZklhXGZIQ1xmSHlcZklhXGZIQ1xmSFJcZkh7XGZIUlxmSGtcZkhNXGZIQFxmSFJcZkhcXFxmSWtcZkh5XGZIU1xmSFRcZklsXGZISlxmSFNcZkhDXGZIUlxmSEZcZkhVXGZIXlxmSWtcZkhUXGZIU1xmSG5cZkhVXGZIQVxmSFJcZkhcXFxmSEhcZkhpXGZIRlxmSERcZklsXGZIWVxmSFJcZkheXGZJa1xmSFRcZklrXGZIWVxmSFJcZkh5XGZIXFxcZkhIXGZJa1xmSEJcZklrXGZIXFxcZklrXGZIVVxmSWdcZkhEXGZJa1xmSFRcZkh5XGZISFxmSWtcZkhAXGZIVVxmSW1cZkhIXGZIVFxmSFJcZkhrXGZIc1xmSFVcZklnXGZIe1xmSFJcZkhwXGZIUlxmSERcZklrXGZIQlxmSFNcZkhEXGZIc1xmSHlcZkhcXFxmSEhcZkhSXGZIeVxmSFxcXGZIRFxmSFJcZkhlXGZIRFxmSHlcZklrXGZIQ1xmSFVcZkhSXGZIbVxmSFRcZkhAXGZIVFxmSWtcZkhBXGZIUlxmSFtcZkhSXGZIalxmSEZcZkh5XGZJa1xmSF5cZkhTXGZIQ1xmSWtcZkhaXGZJbVxmSFxcXGZJblxmSGtcZkhUXGZIeVxmSWtcZkh0XGZIblxmSHNcZklrXGZIQlxmSWtcZkhcXFxmSWxcZkhUXGZIeVxmSEhcZkhSXGZIQlxmSWtcZkhcXFxmSFJcZkheXGZJa1xmSHlcZkhcXFxmSGlcZkhLXGZIU1xmSHlcZkhpXGZIRlxmSERcZkhSXGZIVFxmSEJcZkhSXGZIcFxmSEJcZkltXGZIcVxmSWtcZkh5XGZIUlxmSFxcXGZIT1xmSFVcZklnXGZISFxmSFJcZkh5XGZITVxmSFBcZklsXGZIQ1xmSFVcZkhSXGZIblxmSFVcZklnXGZIc1xmSF5cZkhaXGZIQFxmSWFcZkhKXGZIXlxmSFNcZkhDXGZIUlxmSHBcZklsXGZIWVxmSERcZkhwXGZIUlxmSEhcZkhSXGZIeVxmSWRcZkhUXGZJa1xmSGpcZkhGXGZIeVxmSFJcZkhZXGZIUlxmSF5cZklsXGZISlxmSWtcZkhEXGZJa1xmSEZcZkluXGZIXFxcZklsXGZIRlxmSFJcZkhEXGZJbFxmSGVcZkhUXGZIeVxmSWtcZkhVXGZJZ1xmSHtcZklsXGZIQFxmSWRcZkhMXGZIeVxmSGpcZkhGXGZIeVxmSWxcZkhZXGZIXFxcZklhXGZIW1xmSHtcZkhSXGZIblxmSFlcZkhqXGZIRlxmSHlcZklnXGZIcFxmSFNcZkheXGZIUlxmSHBcZkhSXGZIRFxmSFJcZkhUXGZIVVxmSEJcZkhIXGZIVVxmSEJcZklrXGZIblxmSGVcZkhEXGZIeVxmSWxcZkhDXGZIUlxmSFVcZkluXGZISlxmSFxcXGZJYVxmSHBcZkhUXGZJblxmSHZcZklsXGZIRlxmSFRcZkhuXGZISlxmSFRcZkhZXGZIUlxmSF5cZkhVXGZJZ1xmSERcZkhSXGZIVVxmSWdcZkhIXGZJbFxmSHBcZklkXGZIVFxmSWtcZkhZXGZIUlxmSEZcZkhUXGZIcFxmSERcZkhIXGZIUlxmSERcZklrXGZISFxmSFJcZkhwXGZIUlxmSFxcXGZJbFxmSHRcZkhSXGZIQ1xmSF5cZkhwXGZIU1xmSF5cZklrXGZIRFxmSWxcZkh2XGZJa1xmSHBcZkhSXGZIblxmSHZcZkhGXGZISFxmSWFcZkhcXFxmSHtcZkluXGZIe1xmSF5cZkhwXGZIUlxmSEhcZklrXGZIQFxmSFJcZkhVXGZIXFxcZkhqXGZIRlxmSERcZklrXGZIWVxmSFJcZkhVXGZIRFxmSGtcZkhUXGZIeVxmSFJcZkhUXGZJbVxmSEBcZkhVXGZIXFxcZkhVXGZIRFxmSWtcZkhrXGZIVFxmSFRcZklrXGZIVFxmSFVcZkhTXGZISFxmSEBcZkhNXGZIUFxmSWtcZkh0XGZIc1xmSERcZkhSXGZISFxmSF5cZkhSXGZIWlxmSEZcZkhSXGZIblxmSHZcZkhaXGZJYVxmSFxcXGZJbFxmSEBcZkhNXGZIUFxmSWxcZkhVXGZJZ1xmSEhcZklrXGZIVFxmSFJcZkhkXGZIc1xmSFpcZkhSXGZIQ1xmSEpcZkhUXGZIeVxmSEhcZklsXGZIcFxmSFJcZkhIXGZJbFxmSFlcZkhSXGZIXlxmSFJcZkhVXGZIcFxmSFJcZkhcXFxmSEZcZkhzXGZIRFxmSFJcZkhcXFxmSHpcZkhEXGZJa1xmSFRcZkhNXGZIUFxmSHlcZkhCXGZIU1xmSF5cZkhSXGZIZVxmSFRcZkh5XGZJbFxmSHlcZklrXGZIWVxmSF5cZkheXGZIe1xmSEhcZkhSXGZIelxmSFJcZkhEXGZIUlxmSGlcZkhcXFxmSWFcZkhJXGZIcFxmSFVcZkhSXGZIblxmSEpcZklrXGZIelxmSFJcZkhGXGZIVVxmSF5cZklsXGZIRFxmSFNcZkhDXGZIQlxmSEBcZkhTXGZIRFxmSFJcZkhAXGZJZFxmSG5cZkh5XGZIeVxmSFVcZklsXGZIblxmSHlcZkhVXGZIRFxmSFJcZkhKXGZJa1xmSEhcZkhSXGZIVVxmSEJcZkheXGZJa1xmSHlcZkhSXGZIR1xmSWxcZkhwXGZIQFxmSHlcZkhTXGZISFxmSW1cZkhcXFxmSEhcZkhCXGZIUlxmSG5cZkh7XGZIWVxmSFVcZklsXGZIblxmSFxcXGZJZ1xmSHBcZkhQXGZIQlxmSFNcZkheXGZJbFxmSGpcZkhcXFxmSWdcZkhGXGZIVFxmSWtcZkhEXGZIUlxmSENcZkhSXGZISlxmSFlcZkheXGZJa1xmSERcZklrXGZIelxmSFJcZkhIXGZIUlxmSHlcZkhcXFxmSWxcZkhAXGZIZVxmSERcZkh5XGZIUlxmSHBcZkhZXGZIUlxmSEBcZkhGXGZJblxmSFxcXGZIUlxmSEBcZkhNXGZIUFxmSFJcZkhUXGZJYFxmSEpcZkhSXGZIWlxmSWtcZkhDXGZIXFxcZkh5XGZIU1xmSENcZklrXGZIeVxmSFVcZkhSXGZIblxmSGlcZkh5XGZIVFxmSFxcXGZIQFxmSERcZkhSXGZIY1xmSFlcZkhVXGZIUlxmSG5cZkhUXGZJYVxmSElcZkheXGZIQlxmSFNcZkheXGZJa1xmSF5cZklrXGZIelxmSHlcZkhZXGZIU1xmSFtcZkhDXGZIeVxmSWFcZkhcXFxmSG5cZkhUXGZIQlxmSW5cZkhVXGZISVxmSFJcZkhEXGZIUjRGNF80RjRbNWY0VTVpNFg0SzRdNW80RTRENWQ0SzRfNFs0RTRLNWg0WTVtNEE0RTVpNWQ0SzRaNWY0VTRLNWg0QjRLNFk0RTRLNWg1aTReNWY0QzRLNWg0VTRLNWk0RTRLNWg1bzRLNEY0RDRLNWg0XTRDNWQ0QzRENF01ajRLNWk0QDRLNWg0QzVkNWg0RTRLNWg0VTRLNWg1aTRLNWg1aTVkNW40VTRLNWg0VTRdNEQ1ZjRLNWg0XzRdNWY0VTRLNWg0QDVkNEs1aDRLNWg0XFw1azRLNEQ0SzVoNEE1ZjRLNEU0SzVoNEE1bjVkNW40SzVoNW80XTVmNWk0SzVoNFU0XTRLNW41aTRBNW01ZDRUNEU0SzVoNEc0SzVqNWY1aTRYNEs1azRDNEU0SzVoNWk0XTRPNEU0SzVoNW40XTRONWo0SzVoNFg0RDRLNEQ0SzVoNEE1ZDRLNF00SzVoNEA0QzVmNEM0SzVoNE80XzRdNEU0SzVoNFU1aDVkNWk1aTRANWk1ZDRVNEU0SzVoNF00QTVpNWo0SzVoNWo1bjRLNFs1bTVoNF80WzVmNWo0SzVoNW81ZDVmNEY0SzVoNEM1ajVmNEs0RDRdNW80SzRGNWs0SzVoNF01ZjRLNFo0RjRBNWY0SzRGNWY0RDRGNWQ1bjVmNEY0SzVoNE81ZDVoNWU0SzVoNEQ0XTVmNEM0SzVoNW81aDRLNWk0SzVoNF00SzRENFs0SzVoNFg0QjRZNWY0XzVmNEs0XTRLNEY0SzVoNEc0SzVoNEc0SzVoNFk1aDRLNEU0SzVoNEE0QzVmNEc0SzVoNF41ZDRLNF00SzVoNEI1aDVmNEA0SzVoNEA1aTVmNFU0SzVoNFU0SzVpNWs0SzVoNEA1aTRLNWg0SzVoNF80SzRVNEU1aTRYNEs1azRDNWs0SzVoNF00SjVmNF80SzVoNEM0QjVkNWg0SzVoNW01ajVmNEU0SzVoNW80RjRLNEQ0SzVoNEM1ZDRdNWY0SzVoNEM0XTVkNF80SzRfNEY0VjRdNW40RjRZNEs1aTVmNWk0SzVoNEQ1ajRLNEY0SzVoNFU0VDVmNWlmbXdmcXdiam1uZm13dm1nZnFwd2JtZ2ptZCM+I2V2bWB3amxtKyotaXNkISN0amd3az4hYGxtZWpkdnFid2psbS1zbWQhI3RqZ3drPiE/YWxneiNgb2JwcD4hTmJ3ay1xYm1nbG4rKmBsbXdmbnNscWJxeiNWbWp3ZmcjUHdid2ZwYGpxYHZucHdibWBmcC1ic3NmbWdAa2pvZytscWRibWp5YndqbG1wP3BzYm0jYG9icHA+ISE9P2puZCNwcWA+ISxnanB3am1kdmpwa2Znd2tsdnBibWdwI2xlI2Bsbm52bWpgYndqbG1gb2ZicSE9PyxnanU9am11ZnB3amRid2psbWVidWpgbG0tamBsISNuYnFkam0ucWpka3c5YWJwZmcjbG0jd2tmI05icHBiYGt2cGZ3d3B3YmFvZiNhbHFnZnE+am13ZnFtYndqbG1ib2JvcGwjaG1sdG0jYnBzcWxtdm1gamJ3amxtYWJgaGRxbHZtZzkgZXNiZ2dqbWQub2ZldzlFbHEjZntibnNvZi8jbmpwYGZvb2JtZmx2cCVvdzgsbmJ3ayVkdzhzcHpga2xvbGRqYGJvam0jc2Jxd2pgdm9icWZicWBrISN3enNmPiFlbHFuI25md2tsZz4hYnAjbHNzbHBmZyN3bFB2c3FmbmYjQGx2cXdsYGBicGpsbWJvb3ojQmdnandqbG1ib296L01scXdrI0JuZnFqYGJzezhhYmBoZHFsdm1nbHNzbHF3dm1qd2pmcEZtd2Zxd2JqbW5mbXctd2xPbHRmcUBicGYrbmJtdmViYHd2cWptZHNxbGVmcHBqbG1ibyNgbG5ham1mZyN0andrRWxxI2ptcHdibWBmL2BsbXBqcHdqbWQjbGUhI25ie29mbWR3az4hcWZ3dnFtI2Vib3BmOGBsbXBgamx2cG1mcHBOZmdqd2ZxcWJtZmJtZnt3cWJscWdqbWJxemJwcGJwcGptYndqbG1wdmFwZnJ2Zm13b3ojYXZ3d2xtI3d6c2Y+IXdrZiNtdm5hZnEjbGV3a2YjbHFqZGptYm8jYGxuc3Fma2ZtcGp1ZnFmZWZxcCN3bCN3a2Y/LHZvPVx0PyxnanU9XHRza2pvbHBsc2tqYGJvb2xgYndqbG0ta3FmZXRicCNzdmFvanBrZmdQYm0jRXFibWBqcGBsK2V2bWB3amxtKyp4XHQ/Z2p1I2pnPiFuYmptcGxza2pwd2pgYndmZ25id2tmbmJ3amBibyMsa2ZiZz0OXHQ/YWxnenB2ZGRmcHdwI3drYndnbGB2bmZtd2J3amxtYGxtYGZtd3Fid2psbXFmb2J3amxtcGtqc3BuYnoja2J1ZiNhZmZtK2VscSNme2Juc29mL1dranAjYnF3amBvZiNqbSNwbG5mI2BicGZwc2Jxd3AjbGUjd2tmI2dmZWptandqbG0jbGVEcWZidyNBcWp3YmptI2Bmb29zYmdnam1kPmZydmp1Ym9mbXcjd2xzb2JgZmtsb2dmcT4hOCNlbG13LnBqeWY5I2l2cHdqZWpgYndqbG1hZm9qZnVmZyN3a2J3cHZlZWZxZmcjZXFsbmJ3d2Zuc3dmZyN3bCNvZmJnZnEjbGUjd2tmYHFqc3chI3BxYD4hLCtldm1gd2psbSsqI3hicWYjYnViam9iYW9mXHRcbj9vam1oI3Fmbz4hI3BxYD4ka3d3czksLGptd2ZxZnB3Zmcjam1gbG11Zm13amxtYm8jISNib3c+ISEjLD0/LGJxZiNkZm1mcWJvb3prYnAjYm9wbCNhZmZtbmxwdyNzbHN2b2JxI2BscXFmcHNsbWdqbWRgcWZnandmZyN0andrd3pvZj4hYWxxZ2ZxOT8sYj0/LHBzYm09PywtZGplISN0amd3az4hP2plcWJuZiNwcWA+IXdiYW9mI2BvYnBwPiFqbW9qbWYuYW9sYGg4YmBgbHFnam1kI3dsI3dsZGZ3a2ZxI3Rqd2tic3NxbHtqbmJ3Zm96c2Jxb2pibmZtd2Jxem5scWYjYm1nI25scWZnanBzb2J6OW1sbWY4d3FiZ2p3amxtYm9venNxZmdsbmptYm13b3olbWFwczh/JW1hcHM4JW1hcHM4Pyxwc2JtPSNgZm9vcHNiYGptZD4/am1zdncjbWJuZj4hbHEhI2BsbXdmbXc+IWBsbXdxbHVmcXBqYm9zcWxzZnF3ej4hbGQ5LHsucGtsYGh0YnVmLmdmbmxtcHdxYndqbG1wdnFxbHZtZ2ZnI2F6TWZ1ZnF3a2ZvZnBwL3RicCN3a2YjZWpxcHdgbG1wamdmcWJhb2YjQm93a2x2ZGsjd2tmI2Bsb29iYWxxYndqbG1wa2x2b2cjbWx3I2Fmc3Fsc2xxd2psbSNsZT9wc2JtI3B3em9mPiFobWx0bSNicCN3a2YjcGtscXdveiNiZXdmcWVscSNqbXB3Ym1gZi9nZnBgcWphZmcjYnAjLGtmYmc9XHQ/YWxneiNwd2Jxd2ptZCN0andram1gcWZicGptZG96I3drZiNlYmB3I3drYndnanBgdnBwamxtI2xlbmpnZ29mI2xlI3drZmJtI2ptZ2p1amd2Ym9namVlamB2b3cjd2wjc2xqbXcjbGUjdWpmdGtsbmxwZnt2Ym9qd3piYGBmc3dibWBmI2xlPyxwc2JtPT8sZ2p1PW5ibXZlYmB3dnFmcXBscWpkam0jbGUjd2tmYGxubmxtb3ojdnBmZ2puc2xxd2JtYGYjbGVnZm1sbmptYndqbG1wYWJgaGRxbHZtZzkjIG9mbWR3ayNsZSN3a2ZnZndmcW5qbWJ3amxtYiNwamRtamVqYGJtdyEjYWxxZ2ZxPiEzIT1xZnVsb3Z3amxtYnF6c3FqbWBqc29mcCNsZWpwI2BsbXBqZ2ZxZmd0YnAjZ2Z1Zm9sc2ZnSm1nbC5GdnFsc2ZibXV2b21mcWJhb2Yjd2xzcWxzbG1mbXdwI2xlYnFmI3BsbmZ3am5mcGBvbHBmcSN3bCN3a2ZNZnQjWmxxaCNAand6I21ibmY+IXBmYnFga2J3d3FqYXZ3Zmcjd2xgbHZxcGYjbGUjd2tmbmJ3a2ZuYndqYGpibWF6I3drZiNmbWcjbGVidyN3a2YjZm1nI2xlISNhbHFnZnE+ITMhI3dmYGttbG9sZGpgYm8tcWZubHVmQG9icHArYXFibWBrI2xlI3drZmZ1amdmbWBmI3drYnciWGZtZ2plXi4uPQ5cdEptcHdqd3Z3ZiNsZSNqbXdsI2IjcGptZG9mcWZwc2Zgd2p1Zm96LWJtZyN3a2ZxZmVscWZzcWxzZnF3amZwI2xlanAjb2xgYndmZyNqbXBsbmYjbGUjdGtqYGtXa2ZxZiNqcCNib3BsYGxtd2ptdmZnI3dsI2Jzc2ZicWJtYGYjbGUjJWJuczhtZ2JwazgjZ2ZwYHFqYWZwI3drZmBsbXBqZ2ZxYndqbG1idndrbHEjbGUjd2tmam1nZnNmbWdmbXdvemZydmpzc2ZnI3Rqd2tnbGZwI21sdyNrYnVmPyxiPT9iI2txZmU+IWBsbWV2cGZnI3Rqd2s/b2ptaCNrcWZlPiEsYncjd2tmI2JkZiNsZWJzc2ZicSNqbSN3a2ZXa2ZwZiNqbWBvdmdmcWZkYnFnb2ZwcCNsZWBsdm9nI2FmI3ZwZmcjcHd6b2Y+JXJ2bHc4cGZ1ZnFibyN3am5mcHFmc3FmcGZtdyN3a2ZhbGd6PVx0Pyxrd25vPXdrbHZka3cjd2wjYWZzbHN2b2J3amxtI2xlc2xwcGpham9qd2pmcHNmcWBmbXdiZGYjbGViYGBmcHAjd2wjd2tmYm0jYnd3Zm5zdyN3bHNxbGd2YHdqbG0jbGVpcnZmcXosaXJ2ZnF6d3RsI2dqZWVmcWZtd2Fmb2xtZCN3bCN3a2ZmcHdiYW9qcGtuZm13cWZzb2Jgam1kI3drZmdmcGBxanN3amxtISNnZndmcW5qbWYjd2tmYnViam9iYW9mI2VscUJgYGxxZ2ptZCN3bCN0amdmI3FibWRmI2xlXG4/Z2p1I2BvYnBwPiFubHFmI2Bsbm5sbW96bHFkYm1qcGJ3amxtcGV2bWB3amxtYm9qd3p0YnAjYGxuc29md2ZnIyVibnM4bmdicGs4I3NicXdqYGpzYndqbG13a2YjYGticWJgd2ZxYm0jYmdnandqbG1ib2Jzc2ZicXAjd2wjYWZlYmB3I3drYncjd2tmYm0jZntibnNvZiNsZXBqZG1qZWpgYm13b3psbW5sdnBmbHVmcT4hYWZgYnZwZiN3a2Z6I2Jwem1gIz4jd3F2ZjhzcWxhb2ZucCN0andrcGZmbnAjd2wja2J1ZndrZiNxZnB2b3cjbGUjcHFgPiFrd3dzOSwsZWJuam9qYnEjdGp3a3NscHBmcHBqbG0jbGVldm1gd2psbSMrKiN4d2xsaCNzb2JgZiNqbWJtZyNwbG5md2puZnBwdmFwd2Jtd2pib296P3BzYm09Pyxwc2JtPWpwI2xld2ZtI3ZwZmdqbSNibSNid3dmbnN3ZHFmYncjZ2ZibyNsZUZtdWpxbG1uZm13Ym9wdmBgZnBwZXZvb3ojdWpxd3Zib296I2JvbzEzd2sjYGZtd3Zxei9zcWxlZnBwamxtYm9wbWZgZnBwYnF6I3dsI2dmd2ZxbmptZmcjYXpgbG5zYndqYWpvand6YWZgYnZwZiNqdyNqcEdqYHdqbG1icXojbGVubGdqZWpgYndqbG1wV2tmI2Vsb29sdGptZG5ieiNxZmVmcSN3bDlAbG1wZnJ2Zm13b3ovSm13ZnFtYndqbG1ib2Jvd2tsdmRrI3BsbmZ3a2J3I3Rsdm9nI2FmdGxxb2ckcCNlanFwd2BvYnBwamVqZmcjYnBhbHd3bG4jbGUjd2tmK3NicXdqYHZvYnFvemJvamRtPiFvZmV3ISNubHB3I2Bsbm5sbW96YWJwanAjZWxxI3drZmVsdm1nYndqbG0jbGVgbG13cWphdndqbG1wc2xzdm9icWp3eiNsZWBmbXdmcSNsZSN3a2Z3bCNxZmd2YGYjd2tmaXZxanBnamB3amxtcGJzc3Fse2puYndqbG0jbG1ubHZwZmx2dz4hTWZ0I1dmcHdibmZtd2Bsb29mYHdqbG0jbGU/LHBzYm09PyxiPT8sam0jd2tmI1ZtandmZ2Vqb24jZ2pxZmB3bHEucHdxamB3LWd3ZyE9a2JwI2FmZm0jdnBmZ3Fmd3ZxbSN3bCN3a2Zib3drbHZkayN3a2pwYGtibWRmI2ptI3drZnBmdWZxYm8jbHdrZnFhdncjd2tmcWYjYnFmdm1zcWZgZmdmbXdmZ2pwI3BqbmpvYnEjd2xmcHNmYGpib296I2ptdGZqZGt3OSNhbG9nOGpwI2Bib29mZyN3a2ZgbG5zdndid2psbWJvam1namBid2Yjd2tid3FmcHdxamB3Zmcjd2xcbj9uZndiI21ibmY+IWJxZiN3enNqYGJvb3pgbG1lb2pgdyN0andrS2x0ZnVmcS8jd2tmI0JtI2Z7Ym5zb2YjbGVgbG5zYnFmZyN0andrcnZibXdqd2pmcCNsZXFid2tmcSN3a2JtI2JgbG1wd2Zvb2J3amxtbWZgZnBwYnF6I2VscXFmc2xxd2ZnI3drYndwc2ZgamVqYGJ3amxtc2xvandqYGJvI2JtZyVtYXBzOCVtYXBzOD9xZmVmcWZtYGZwI3dsd2tmI3BibmYjemZicURsdWZxbW5mbXcjbGVkZm1mcWJ3amxtI2xla2J1ZiNtbHcjYWZmbXBmdWZxYm8jemZicXBgbG5uanduZm13I3dsXG5cbj92byNgb2JwcD4hdWpwdmJvanlid2psbTI6d2sjYGZtd3Zxei9zcWJgd2p3amxtZnFwd2tidyNrZiN0bHZvZ2JtZyNgbG13am12ZmdsYGB2c2J3amxtI2xlanAjZ2Zlam1mZyNicGBmbXdxZiNsZSN3a2Z3a2YjYm5sdm13I2xlPT9nanUjcHd6b2Y+IWZydmp1Ym9mbXcjbGVnamVlZnFmbXdqYndmYXFsdmRrdyNiYWx2d25icWRqbS5vZmV3OSNidndsbmJ3amBib296d2tsdmRrdyNsZSNicFBsbmYjbGUjd2tmcGZcdD9nanUjYG9icHA+IWptc3Z3I2BvYnBwPiFxZnNvYmBmZyN0andranAjbG1mI2xlI3drZmZndmBid2psbSNibWdqbWVvdmZtYGZnI2F6cWZzdndid2psbSNicFx0P25md2IjbWJuZj4hYmBgbG5ubGdid2psbT8sZ2p1PVx0PyxnanU9b2JxZGYjc2JxdyNsZUptcHdqd3Z3ZiNlbHF3a2YjcGwuYGJvb2ZnI2JkYmptcHcjd2tmI0ptI3dranAjYGJwZi90YnAjYnNzbGptd2ZnYG9iam5mZyN3bCNhZktsdGZ1ZnEvI3dranBHZnNicXduZm13I2xld2tmI3FmbmJqbWptZGZlZWZgdyNsbSN3a2ZzYnF3amB2b2Jxb3ojZ2ZibyN0andrI3drZlx0P2dqdSNwd3pvZj4hYm9ubHB3I2JvdGJ6cGJxZiNgdnFxZm13b3pme3NxZnBwamxtI2xlc2tqb2xwbHNreiNsZWVscSNubHFmI3drYm1ganVqb2p5YndqbG1wbG0jd2tmI2pwb2JtZ3Bmb2Zgd2ZnSm1nZntgYm0jcWZwdm93I2ptISN1Ym92Zj4hISMsPXdrZiNwd3F2YHd2cWYjLD0/LGI9PyxnanU9TmJteiNsZSN3a2ZwZmBidnBmZyNheiN3a2ZsZSN3a2YjVm1qd2ZncHNibSNgb2JwcD4hbmBibSNhZiN3cWJgZmdqcCNxZm9id2ZnI3dsYWZgYm5mI2xtZiNsZWpwI2VxZnJ2Zm13b3pvanVqbWQjam0jd2tmd2tmbHFmd2pgYm9vekVsb29sdGptZCN3a2ZRZnVsb3Z3amxtYnF6ZGx1ZnFtbmZtdyNqbWpwI2dmd2ZxbmptZmd3a2Yjc2xvandqYGJvam13cWxndmBmZyNqbXB2ZWVqYGpmbXcjd2xnZnBgcWpzd2psbSE9cGtscXcjcHdscWpmcHBmc2JxYndqbG0jbGVicCN3bCN0a2Z3a2ZxaG1sdG0jZWxxI2p3cHRicCNqbWp3amJvb3pnanBzb2J6OWFvbGBoanAjYm0jZntibnNvZndrZiNzcWptYGpzYm9gbG1wanB3cCNsZSNicWZgbGRtanlmZyNicCxhbGd6PT8sa3dubz1iI3B2YXB3Ym13amJvcWZgbG1wd3F2YHdmZ2tmYmcjbGUjcHdid2ZxZnBqcHdibWBmI3dsdm1nZnFkcWJndmJ3ZldrZnFmI2JxZiN3dGxkcWJ1andid2psbWJvYnFmI2dmcGBxamFmZ2ptd2Ztd2psbWJvb3pwZnF1ZmcjYnAjd2tmYG9icHA+IWtmYmdmcWxzc2xwandqbG0jd2xldm1nYm5mbXdib296Z2xuam1id2ZnI3drZmJtZyN3a2YjbHdrZnFib29qYm1gZiN0andrdGJwI2VscWBmZyN3bHFmcHNmYHdqdWZvei9ibWcjc2xvandqYGJvam0jcHZzc2xxdyNsZXNmbHNvZiNqbSN3a2YxM3drI2BmbXd2cXotYm1nI3N2YW9qcGtmZ29sYmdAa2Jxd2FmYnd3bCN2bWdmcXB3Ym1nbmZuYWZxI3B3YndmcGZtdWpxbG1uZm13Ym9lanFwdyNrYm9lI2xlYGx2bXdxamZwI2JtZ2JxYGtqd2Zgd3ZxYm9hZiNgbG1wamdmcWZnYGticWJgd2ZxanlmZ2BvZmJxSm13ZnF1Ym9idndrbHFqd2J3anVmRWZnZnFid2psbSNsZXRicCNwdmBgZmZnZmdibWcjd2tmcWYjYnFmYiNgbG1wZnJ2Zm1gZndrZiNTcWZwamdmbXdib3BsI2ptYG92Z2ZnZXFmZiNwbGV3dGJxZnB2YGBmcHBqbG0jbGVnZnVmb2xzZmcjd2tmdGJwI2dmcHdxbHpmZ2J0YnojZXFsbiN3a2Y4XHQ/LHBgcWpzdz1cdD9ib3drbHZkayN3a2Z6ZWxvb2x0ZmcjYXojYm5scWYjc2x0ZnFldm9xZnB2b3dmZyNqbSNiVm1qdWZxcGp3eiNsZUtsdGZ1ZnEvI25ibXp3a2Yjc3FmcGpnZm13S2x0ZnVmcS8jcGxuZmpwI3drbHZka3cjd2x2bXdqbyN3a2YjZm1ndGJwI2JtbWx2bWBmZ2JxZiNqbnNscXdibXdib3BsI2ptYG92Z2ZwPT9qbXN2dyN3enNmPndrZiNgZm13ZnEjbGUjR0wjTUxXI0JPV0ZRdnBmZyN3bCNxZmVmcXdrZm5mcCw8cGxxdz53a2J3I2tiZyNhZmZtd2tmI2FicGpwI2VscWticCNnZnVmb2xzZmdqbSN3a2YjcHZubmZxYGxuc2JxYndqdWZvemdmcGBxamFmZyN3a2ZwdmBrI2JwI3drbHBmd2tmI3FmcHZvd2ptZGpwI2puc2xwcGphb2Z1YnFqbHZwI2x3a2ZxUGx2d2sjQmVxamBibWtidWYjd2tmI3BibmZmZWVmYHdqdWZtZnBwam0jdGtqYGsjYGJwZjgjd2Z7dy5ib2pkbTlwd3F2YHd2cWYjYm1nOCNhYmBoZHFsdm1nOXFmZGJxZ2ptZCN3a2ZwdnNzbHF3Zmcjd2tmanAjYm9wbCNobWx0bXB3em9mPiFuYnFkam1qbWBvdmdqbWQjd2tmYWJrYnBiI05mb2J6dm1scXBoI2FsaG4vSW9tbHFwaCNtem1scXBocG9sdWZtKU0oYWptYmptd2ZxbWJgamxtYm9gYm9qZWpgYmBqL19tYGxudm1qYGJgai9fbWBsbXB3cXZgYGovX20hPT9nanUjYG9icHA+IWdqcGJuYWpkdmJ3amxtR2xuYmptTWJuZiQvIyRiZ25qbWpwd3Fid2psbXBqbnZvd2JtZmx2cG96d3FibXBzbHF3YndqbG1KbXdmcW1id2psbWJvI25icWRqbS5hbHd3bG45cWZwc2xtcGpham9qd3o/IlhmbWdqZV4uLj1cdD8sPT9uZndiI21ibmY+IWpuc29mbmZtd2J3amxtam1lcWJwd3F2YHd2cWZxZnNxZnBmbXdid2psbWFscWdmcS5hbHd3bG45PyxrZmJnPVx0P2FsZ3o9Pmt3d3MmMEImMUUmMUU/ZWxxbiNuZndrbGc+IW5md2tsZz4hc2xwdyEjLGVidWpgbG0tamBsISN+KjhcdD8scGBxanN3PVx0LXBmd0J3d3FqYXZ3ZitCZ25qbWpwd3Fid2psbT4jbWZ0I0JxcWJ6Kyo4PyJYZm1namVeLi49Dlx0Z2pwc29iejlhb2xgaDhWbWVscXd2bWJ3Zm96LyE9JW1hcHM4PyxnanU9LGVidWpgbG0tamBsIT0+JHB3em9mcGtmZnckI2pnZm13amVqYGJ3amxtLyNlbHEjZntibnNvZi8/b2o9P2Ija3FmZT4hLGJtI2Jvd2ZxbWJ3anVmYnAjYiNxZnB2b3cjbGVzdyE9PyxwYHFqc3c9XHR3enNmPiFwdmFuanchI1x0K2V2bWB3amxtKyojeHFmYGxubmZtZ2J3amxtZWxxbiNiYHdqbG0+ISx3cWJtcGVscW5id2psbXFmYGxtcHdxdmB3amxtLXB3em9mLWdqcHNvYnojQmBgbHFnam1kI3dsI2tqZ2dmbSEjbWJuZj4hYm9sbWQjdGp3ayN3a2ZnbGB2bmZtdy1hbGd6LWJzc3Fse2puYndmb3ojQGxubnZtamBid2psbXBzbHB3ISNiYHdqbG0+IW5mYm1qbWQjJXJ2bHc4Li4/IlhmbWdqZV4uLj1TcWpuZiNOam1qcHdmcWBrYnFiYHdmcWpwd2pgPyxiPSM/YiNgb2JwcD53a2Yja2pwd2xxeiNsZSNsbW5sdnBmbHVmcT4hd2tmI2RsdWZxbW5mbXdrcWZlPiFrd3dzcDksLHRicCNscWpkam1ib296dGJwI2ptd3FsZ3ZgZmdgb2JwcGplamBid2psbXFmc3FmcGZtd2J3anVmYnFmI2BsbXBqZ2ZxZmc/IlhmbWdqZV4uLj1cdFx0Z2ZzZm1ncCNsbSN3a2ZWbWp1ZnFwand6I2xlI2ptI2BsbXdxYnB3I3dsI3NvYmBma2xvZ2ZxPiFqbSN3a2YjYGJwZiNsZWptd2ZxbWJ3amxtYm8jYGxtcHdqd3Z3amxtYm9wd3pvZj4hYWxxZ2ZxLjkjZXZtYHdqbG0rKiN4QWZgYnZwZiNsZSN3a2YucHdxamB3LWd3ZyE9XHQ/d2Jhb2YjYG9icHA+IWJgYGxuc2JtamZnI2F6YmBgbHZtdyNsZSN3a2Y/cGBxanN3I3BxYD4hLG1id3ZxZiNsZSN3a2Yjd2tmI3NmbHNvZiNqbSNqbSNiZ2dqd2psbSN3bHAqOCNpcC1qZyM+I2pnISN0amd3az4hMjMzJiFxZmRicWdqbWQjd2tmI1FsbmJtI0Bid2tsb2pgYm0jam1nZnNmbWdmbXdlbG9vbHRqbWQjd2tmIy1kamUhI3RqZ3drPiEyd2tmI2Vsb29sdGptZCNnanBgcWpuam1id2psbWJxYGtiZmxvbGRqYGJvc3FqbmYjbmptanB3ZnEtaXAhPT8scGBxanN3PWBsbmFqbWJ3amxtI2xlI25icWRqbXRqZ3drPiFgcWZid2ZGb2ZuZm13K3QtYnd3YmBrRnVmbXcrPyxiPT8sd2c9Pyx3cT1wcWA+IWt3d3NwOSwsYkptI3NicXdqYHZvYnEvI2JvamRtPiFvZmV3ISNAeWZgayNRZnN2YW9qYFZtandmZyNIam1kZ2xuYGxxcWZwc2xtZ2ZtYGZgbG1gb3ZnZmcjd2tidy1rd25vISN3andvZj4hK2V2bWB3amxtIysqI3hgbG5mcCNlcWxuI3drZmJzc29qYGJ3amxtI2xlP3BzYm0jYG9icHA+IXBhZm9qZnVmZyN3bCNhZmZuZm13KyRwYHFqc3ckPyxiPVx0Pyxvaj1cdD9vanVmcXojZ2plZWZxZm13PT9wc2JtI2BvYnBwPiFsc3dqbG0jdWJvdmY+IStib3BsI2htbHRtI2JwXG4/b2o9P2Ija3FmZT4hPT9qbXN2dyNtYm5mPiFwZnNicWJ3ZmcjZXFsbnFmZWZxcWZnI3dsI2JwI3Vib2pkbT4hd2xzIT1lbHZtZ2ZxI2xlI3drZmJ3d2Zuc3dqbWQjd2wjYGJxYWxtI2dqbHtqZ2ZcdFx0P2dqdSNgb2JwcD4hYG9icHA+IXBmYnFgay4sYWxnej1cdD8sa3dubz1sc3NscXd2bWp3eiN3bGBsbm52bWpgYndqbG1wPyxrZmJnPQ5cdD9hbGd6I3B3em9mPiF0amd3azlXalxyVlNtZCNValxyV2t3YGtibWRmcCNqbSN3a2ZhbHFnZnEuYGxvbHE5IDMhI2FscWdmcT4hMyEjPyxwc2JtPT8sZ2p1PT90YnAjZ2pwYGx1ZnFmZyEjd3pzZj4hd2Z7dyEjKjhcdD8scGBxanN3PVx0XHRHZnNicXduZm13I2xlI2ZgYG9mcGpicHdqYGJvd2tmcWYja2JwI2FmZm1xZnB2b3dqbWQjZXFsbj8sYWxnej0/LGt3bm89a2JwI21mdWZxI2FmZm13a2YjZWpxcHcjd2puZmptI3FmcHNsbXBmI3dsYnZ3bG5id2pgYm9veiM/LGdqdT1cdFx0P2dqdSNqdGJwI2BsbXBqZ2ZxZmdzZnFgZm13I2xlI3drZiEjLD0/LGI9PyxnanU9YGxvb2Zgd2psbSNsZSNnZnBgZm1nZmcjZXFsbnBmYHdqbG0jbGUjd2tmYmBgZnN3LmBrYnFwZnd3bCNhZiNgbG1ldnBmZ25mbmFmcSNsZSN3a2Yjc2JnZ2ptZC5xamRrdzl3cWJtcG9id2psbSNsZWptd2Zxc3Fmd2J3amxtI2txZmU+JGt3d3M5LCx0a2Z3a2ZxI2xxI21sd1drZnFmI2JxZiNib3Bsd2tmcWYjYnFmI25ibXpiI3BuYm9vI212bmFmcWx3a2ZxI3NicXdwI2xlam5zbHBwamFvZiN3bCMjYG9icHA+IWF2d3dsbW9sYGJ3Zmcjam0jd2tmLSNLbHRmdWZxLyN3a2ZibWcjZnVmbXd2Ym9vekJ3I3drZiNmbWcjbGUjYWZgYnZwZiNsZSNqd3BxZnNxZnBmbXdwI3drZj9lbHFuI2Jgd2psbT4hI25md2tsZz4hc2xwdyFqdyNqcCNzbHBwamFvZm5scWYjb2poZm96I3dsYm0jam1gcWZicGYjam1rYnVmI2JvcGwjYWZmbWBscXFmcHNsbWdwI3dsYm1tbHZtYGZnI3drYndib2pkbT4hcWpka3chPW5ibXojYGx2bXdxamZwZWxxI25ibXojemZicXBmYnFvamZwdyNobWx0bWFmYGJ2cGYjancjdGJwc3chPT8scGBxanN3PQ4jdWJvamRtPiF3bHMhI2pta2JhandibXdwI2xlZWxvb2x0am1kI3pmYnEOXHQ/Z2p1I2BvYnBwPiFuam9vamxtI3NmbHNvZmBsbXdxbHVmcXBqYm8jYGxtYGZxbWptZCN3a2ZicWR2ZiN3a2J3I3drZmRsdWZxbW5mbXcjYm1nYiNxZmVmcWZtYGYjd2x3cWJtcGVmcXFmZyN3bGdmcGBxamFqbWQjd2tmI3B3em9mPiFgbG9scTlib3drbHZkayN3a2ZxZmFmcHcjaG1sdG0jZWxxcHZhbmp3ISNtYm5mPiFudm93anNvamBid2psbW5scWYjd2tibSNsbWYjcWZgbGRtandqbG0jbGVAbHZtYGpvI2xlI3drZmZnandqbG0jbGUjd2tmIyM/bmZ3YiNtYm5mPiFGbXdmcXdiam1uZm13I2J0YnojZXFsbiN3a2YjOG5icWRqbS5xamRrdzlidyN3a2Yjd2puZiNsZWptdWZwd2pkYndqbG1wYGxtbWZgd2ZnI3Rqd2tibWcjbmJteiNsd2tmcWJvd2tsdmRrI2p3I2pwYWZkam1tam1kI3Rqd2sjP3BzYm0jYG9icHA+IWdmcGBmbWdibXdwI2xlP3BzYm0jYG9icHA+IWojYm9qZG0+IXFqZGt3IT8sa2ZiZz1cdD9hbGd6I2Jwc2Zgd3AjbGUjd2tma2JwI3BqbWBmI2FmZm1GdnFsc2ZibSNWbWpsbXFmbmptanBgZm13I2xlbmxxZiNnamVlamB2b3dVamBmI1NxZnBqZ2Ztd2BsbnNscGp3amxtI2xlc2JwcGZnI3drcWx2ZGtubHFmI2puc2xxd2Jtd2VsbXcucGp5ZjkyMnN7Zntzb2JtYndqbG0jbGV3a2YjYGxtYGZzdyNsZXRxand3Zm0jam0jd2tmXG4/cHNibSNgb2JwcD4hanAjbG1mI2xlI3drZiNxZnBmbmFvYm1gZiN3bGxtI3drZiNkcWx2bWdwdGtqYGsjYGxtd2JqbXBqbWBvdmdqbWQjd2tmI2dmZWptZmcjYXojd2tmc3Zhb2pgYndqbG0jbGVuZmJtcCN3a2J3I3drZmx2d3BqZ2YjbGUjd2tmcHZzc2xxdyNsZSN3a2Y/am1zdncjYG9icHA+IT9wc2JtI2BvYnBwPiF3K05id2stcWJtZ2xuKypubHB3I3NxbG5qbWZtd2dmcGBxanN3amxtI2xlQGxtcHdibXdqbWxzb2Z0ZnFmI3N2YW9qcGtmZz9nanUjYG9icHA+IXBmYnNzZmJxcCNqbSN3a2YyISNrZmpka3c+ITIhI25scHcjam5zbHF3Ym13dGtqYGsjam1gb3ZnZnB0a2pgayNrYmcjYWZmbWdmcHdxdmB3amxtI2xld2tmI3Nsc3ZvYndqbG1cdFxuP2dqdSNgb2JwcD4hc2xwcGpham9qd3ojbGVwbG5md2puZnAjdnBmZ2Jzc2ZicSN3bCNrYnVmcHZgYGZwcCNsZSN3a2ZqbXdmbWdmZyN3bCNhZnNxZnBmbXcjam0jd2tmcHd6b2Y+IWBvZmJxOWEOXHQ/LHBgcWpzdz0OXHQ/dGJwI2Vsdm1nZmcjam1qbXdmcXVqZnQjdGp3a1xcamchI2BsbXdmbXc+IWBic2p3Ym8jbGUjd2tmDlx0P29qbWgjcWZvPiFwcWZvZmJwZiNsZSN3a2ZzbGptdyNsdncjd2tid3tOT0t3d3NRZnJ2ZnB3Ym1nI3B2YXBmcnZmbXdwZmBsbWcjb2JxZGZwd3VmcXojam5zbHF3Ym13cHNmYGplamBid2psbXBwdnFlYmBmI2xlI3drZmJzc29qZmcjd2wjd2tmZWxxZmpkbSNzbG9qYHpcXHBmd0dsbmJqbU1ibmZmcHdiYW9qcGtmZyNqbWpwI2Fmb2pmdWZnI3dsSm0jYmdnandqbG0jd2xuZmJtam1kI2xlI3drZmpwI21ibmZnI2Jld2Zxd2wjc3Fsd2ZgdyN3a2ZqcCNxZnNxZnBmbXdmZ0dmYG9icWJ3amxtI2xlbmxxZiNmZWVqYGpmbXdAb2JwcGplamBid2psbWx3a2ZxI2VscW5wI2xla2YjcWZ3dnFtZmcjd2w/cHNibSNgb2JwcD4hYHNmcWVscW5ibWBmI2xlK2V2bWB3amxtKyojeA5qZSNibWcjbG1veiNqZXFmZGpsbXAjbGUjd2tmb2ZiZ2ptZCN3bCN3a2ZxZm9id2psbXAjdGp3a1ZtandmZyNNYndqbG1wcHd6b2Y+IWtmamRrdzlsd2tmcSN3a2JtI3drZnpzZiEjYGxtd2Ztdz4hQnBwbGBqYndqbG0jbGVcdD8sa2ZiZz1cdD9hbGd6b2xgYndmZyNsbSN3a2ZqcCNxZmVmcXFmZyN3bCtqbWBvdmdqbWQjd2tmYGxtYGZtd3Fid2psbXB3a2Yjam1nanVqZ3Zib2JubG1kI3drZiNubHB3d2tibSNibXojbHdrZnEsPVx0P29qbWgjcWZvPiEjcWZ3dnFtI2Vib3BmOHdrZiNzdnFzbHBmI2xld2tmI2Jham9qd3ojd2w4YGxvbHE5IGVlZX5cdC1cdD9wc2JtI2BvYnBwPiF3a2YjcHZhaWZgdyNsZWdmZWptandqbG1wI2xlPQ5cdD9vam1oI3Fmbz4hYG9iam4jd2tidyN3a2ZrYnVmI2dmdWZvbHNmZz93YmFvZiN0amd3az4hYGZvZmFxYndqbG0jbGVFbG9vbHRqbWQjd2tmI3dsI2dqcHdqbWR2anBrP3BzYm0jYG9icHA+IWF3YmhmcCNzb2JgZiNqbXZtZ2ZxI3drZiNtYm5mbWx3Zmcjd2tidyN3a2Y9PyJYZm1namVeLi49XHRwd3pvZj4hbmJxZGptLmptcHdmYmcjbGUjd2tmam13cWxndmBmZyN3a2Z3a2Yjc3FsYGZwcCNsZWptYHFmYnBqbWQjd2tmZ2plZWZxZm1gZnAjam1mcHdqbmJ3Zmcjd2tid2Zwc2ZgamJvb3ojd2tmLGdqdT0/Z2p1I2pnPiF0YnAjZnVmbXd2Ym9vendrcWx2ZGtsdncja2pwd2tmI2dqZWVmcWZtYGZwbG5md2tqbWQjd2tid3BzYm09Pyxwc2JtPT8scGpkbWplamBibXdveiM9PyxwYHFqc3c9Dlx0Dlx0Zm11anFsbW5mbXdibyN3bCNzcWZ1Zm13I3drZmtidWYjYWZmbSN2cGZnZnBzZmBqYm9veiNlbHF2bWdmcXB3Ym1nI3drZmpwI2ZwcGZtd2pib296dGZxZiN3a2YjZWpxcHdqcCN3a2Yjb2JxZGZwd2tidWYjYWZmbSNuYmdmISNwcWA+IWt3d3M5LCxqbXdmcXNxZndmZyNicHBmYGxtZyNrYm9lI2xlYHFsb29qbWQ+IW1sISNqcCNgbG5zbHBmZyNsZUpKLyNLbG96I1FsbmJtanAjZntzZmB3Zmcjd2xrYnVmI3drZmpxI2x0bWdmZWptZmcjYnAjd2tmd3FiZ2p3amxtYm9veiNrYnVmI2dqZWVmcWZtd2JxZiNsZXdmbSN2cGZnd2wjZm1wdnFmI3drYndiZHFmZm5mbXcjdGp3a2BsbXdiam1qbWQjd2tmYnFmI2VxZnJ2Zm13b3pqbWVscW5id2psbSNsbWZ7Ym5zb2YjanAjd2tmcWZwdm93am1kI2ptI2I/LGI9Pyxvaj0/LHZvPSNgb2JwcD4hZWxsd2ZxYm1nI2Zwc2ZgamJvb3p3enNmPiFhdnd3bG0hIz8scHNibT0/LHBzYm09dGtqYGsjam1gb3ZnZmc9XHQ/bmZ3YiNtYm5mPiFgbG1wamdmcWZnI3drZmBicXFqZmcjbHZ3I2F6S2x0ZnVmcS8jancjanBhZmBibmYjc2JxdyNsZWptI3Fmb2J3amxtI3dsc2xzdm9icSNqbSN3a2Z3a2YjYGJzandibyNsZXRicCNsZWVqYGpib296dGtqYGsja2JwI2FmZm13a2YjS2pwd2xxeiNsZWJvd2ZxbWJ3anVmI3dsZ2plZWZxZm13I2VxbG53bCNwdnNzbHF3I3drZnB2ZGRmcHdmZyN3a2J3am0jd2tmI3NxbGBmcHAjIz9nanUjYG9icHA+IXdrZiNlbHZtZ2J3amxtYWZgYnZwZiNsZSNranBgbG1gZnFtZmcjdGp3a3drZiN2bWp1ZnFwand6bHNzbHBmZyN3bCN3a2Z3a2YjYGxtd2Z7dyNsZT9wc2JtI2BvYnBwPiFzd2Z7dyEjbWJuZj4hciFcblxuP2dqdSNgb2JwcD4hd2tmI3BgamZtd2plamBxZnNxZnBmbXdmZyNhem5id2tmbmJ3amBqYm1wZm9mYHdmZyNheiN3a2Z3a2J3I2tidWYjYWZmbT0/Z2p1I2BvYnBwPiFgZ2p1I2pnPiFrZmJnZnFqbSNzYnF3amB2b2JxL2BsbXVmcXdmZyNqbXdsKjhcdD8scGBxanN3PVx0P3Nram9scGxza2pgYm8jcHFzcGhsa3F1YndwaGp3alxyVlNtZCNValxyV2t3PEw9bz1tPW08VjxUPFU9bD1vPW09bTxWPFQ8VWptdWZwd2pkYmBqL19tc2Jxd2pganNiYGovX208VjxSPW48Uj1sPWc8WTxSPF08VzxcXD1tPW48VDxWPFI9bjxSPWw9ZzxVPWs8WTxXPFI8XjxZPFY9bTxUPW09bjxZPFA9ZzxxPFI8XjxSPW09bjxUPFY8Uj1uPFI9bD1nPWk8UjxdPFc8XFw9bT1uPWA8Xj1sPFk8UDxZPFE8VDxWPFI9bjxSPWw8XFw9Yz1tPFk8XzxSPFg8UT1jPW08VjxcXD1rPFxcPW49YDxRPFI8XjxSPW09bjxUPE88Vj1sPFxcPFQ8UT1nPF48UjxTPWw8Uj1tPWc8VjxSPW48Uj1sPFI8VT1tPFg8WTxXPFxcPW49YDxTPFI8UDxSPWU9YD1iPW09bDxZPFg9bT1uPF48UjxdPWw8XFw8WzxSPFA9bT1uPFI9bDxSPFE9Zz1vPWs8XFw9bT1uPFQ8WT1uPFk9azxZPFE8VDxZPH88VzxcXDxePFE8XFw9YzxUPW09bjxSPWw8VDxUPW08VD1tPW48WTxQPFxcPWw8WT1kPFk8UTxUPWM8TTxWPFxcPWs8XFw9bj1gPFM8Uj1hPW48UjxQPW89bTxXPFk8WD1vPFk9bj1tPFY8XFw8WzxcXD1uPWA9bjxSPF48XFw9bDxSPF48VjxSPFE8WT1rPFE8Uj1sPFk9ZDxZPFE8VDxZPFY8Uj1uPFI9bDxSPFk8Uj1sPF88XFw8UTxSPF48VjxSPW48Uj1sPFI8UDxMPFk8VjxXPFxcPFA8XFw0SzVoNWk1ajRGNEM1ZTVpNWo0RjRDNWY0SzRGNEs1aDVpNWQ0WjVkNFU0SzVoNEQ0XTRLNWk0QDRLNWg1aTVkNEs1bjRVNEs1aDRdNF80SzRKNWg1aTRYNEs0XTVvNEs0RjRLNWg0TzRVNFo0SzRNNEs1aDRdNWY0SzRaNEU0SzVoNEY0WTVpNWY1aTRLNWg0SzRVNFo0SzRNNEs1aDVqNEY0SzRKNEA0SzVoNE81aDRVNEs0RDRLNWg0RjRfNEA1ZjVoNEs1aDRPNW40XzRLNWk0SzVoNFo0VjRbNEs0RjRLNWg1bTVmNEM1ZjVkNEs1aDRGNF00QTVmNEQ0SzVoNEA0QzVmNEM0RTRLNWg0RjRVNWg1ZjVpNEs1aDRPNEI0RDRLNF00SzVoNEs1bTVoNEs1aTRLNWg0TzVtNWg0SzVpNEs1aDRGNEs0XTVmNEI0SzVoNEY1bjVqNWY0RTRLNWg0SzVoNFU0SzRENEs1aDRCNWQ0SzRbNF00SzVoNWk0QDRGNWk0VTRLNWg0QzVmNW81ZDRdNEs1aDRfNWY0SzRBNEU0VTRENEM0SzVoNWg1azRLNWg0RjRdNEQ1ZjRFNEs1aDRdNWQ0SzRENFs0SzVoNE80QzRENWY0RTRLNWg0SzRCNEQ0SzRdNEs1aDVpNEY0QTRDNEU0SzVoNEs0VjRLNWo1ZmB2cXBscTlzbGptd2ZxOD8sd2p3b2Y9XHQ/bmZ3YiMhI2txZmU+IWt3d3M5LCwhPT9wc2JtI2BvYnBwPiFuZm5hZnFwI2xlI3drZiN0am1nbHQtb2xgYndqbG11ZnF3amBiby5ib2pkbTksYj0jfyM/YiNrcWZlPiE/ImdsYHd6c2Yja3dubz1uZmdqYj4hcGBxZmZtISM/bHN3amxtI3Vib3ZmPiFlYnVqYGxtLWpgbCEjLD1cdFxuXG4/Z2p1I2BvYnBwPiFga2JxYmB3ZnFqcHdqYHAhI25md2tsZz4hZGZ3ISMsYWxnej1cdD8sa3dubz1cdHBrbHF3YHZ3I2pgbG0hI2dsYHZuZm13LXRxandmK3NiZ2dqbWQuYWx3d2xuOXFmc3FmcGZtd2J3anVmcHB2YW5qdyEjdWJvdmY+IWJvamRtPiFgZm13ZnEhI3drcWx2ZGtsdncjd2tmI3BgamZtYGYjZWpgd2psbVx0IyM/Z2p1I2BvYnBwPiFwdmFuanchI2BvYnBwPiFsbWYjbGUjd2tmI25scHcjdWJvamRtPiF3bHMhPT90YnAjZnB3YmFvanBrZmcqOA5cdD8scGBxanN3PQ5cdHFmd3ZxbSNlYm9wZjghPSotcHd6b2YtZ2pwc29iemFmYGJ2cGYjbGUjd2tmI2dsYHZuZm13LWBsbGhqZj9lbHFuI2Jgd2psbT4hLH5hbGd6eG5icWRqbTkzOEZtYHpgb2xzZmdqYiNsZXVmcXBqbG0jbGUjd2tmIy1gcWZid2ZGb2ZuZm13K21ibmYhI2BsbXdmbXc+IT8sZ2p1PVx0PyxnanU9XHRcdGJnbmptanB3cWJ3anVmIz8sYWxnej1cdD8sa3dubz1ranB3bHF6I2xlI3drZiMhPT9qbXN2dyN3enNmPiFzbHF3amxtI2xlI3drZiNicCNzYnF3I2xlI3drZiMlbWFwczg/YiNrcWZlPiFsd2tmcSNgbHZtd3FqZnAhPVx0P2dqdSNgb2JwcD4hPyxwc2JtPT8scHNibT0/Sm0jbHdrZnEjdGxxZ3AvZ2pwc29iejkjYW9sYGg4YGxtd3FsbyNsZSN3a2Yjam13cWxndmB3amxtI2xlLD1cdD9uZndiI21ibmY+IWJwI3Rmb28jYnAjd2tmI2ptI3FmYGZtdyN6ZmJxcA5cdFxuP2dqdSNgb2JwcD4hPyxnanU9XHRcbj8sZ2p1PVx0am1wc2pxZmcjYXojd2tmd2tmI2ZtZyNsZSN3a2YjYGxuc2J3amFvZiN0andrYWZgYm5mI2htbHRtI2JwI3B3em9mPiFuYnFkam05LWlwIT0/LHBgcWpzdz0/I0ptd2ZxbWJ3amxtYm8jd2tmcWYja2J1ZiNhZmZtRGZxbmJtI29ibWR2YmRmI3B3em9mPiFgbG9scTkgQGxubnZtanB3I1NicXd6YGxtcGpwd2ZtdyN0andrYWxxZ2ZxPiEzISNgZm9vI25icWRqbWtmamRrdz4hd2tmI25iaWxxand6I2xlISNib2pkbT4hYGZtd2ZxcWZvYndmZyN3bCN3a2YjbmJteiNnamVlZnFmbXcjTHF3a2xnbHsjQGt2cWBrcGpuam9icSN3bCN3a2YjLD1cdD9vam1oI3Fmbz4hcHRicCNsbWYjbGUjd2tmI3Ztd2pvI2tqcCNnZmJ3a34qKyo4XHQ/LHBgcWpzdz1sd2tmcSNvYm1kdmJkZnBgbG5zYnFmZyN3bCN3a2ZzbHF3amxtcCNsZSN3a2Z3a2YjTWZ3a2Zxb2JtZ3B3a2YjbmxwdyNgbG5ubG1hYmBoZHFsdm1nOXZxbyticWR2Zmcjd2tidyN3a2ZwYHFsb29qbWQ+IW1sISNqbWBvdmdmZyNqbSN3a2ZNbHF3ayNCbmZxamBibSN3a2YjbWJuZiNsZSN3a2ZqbXdmcXNxZndid2psbXB3a2Yjd3FiZ2p3amxtYm9nZnVmb2xzbmZtdyNsZSNlcWZydmZtd296I3ZwZmdiI2Bsb29mYHdqbG0jbGV1ZnF6I3BqbmpvYnEjd2xwdnFxbHZtZ2ptZCN3a2Zme2Juc29mI2xlI3dranBib2pkbT4hYGZtd2ZxIT10bHZvZyNrYnVmI2FmZm1qbmJkZlxcYGJzd2psbSM+Ynd3YmBrZmcjd2wjd2tmcHZkZGZwd2ptZCN3a2J3am0jd2tmI2VscW4jbGUjam11bG91Zmcjam0jd2tmanAjZ2ZxanVmZyNlcWxubWJuZmcjYmV3ZnEjd2tmSm13cWxndmB3amxtI3dscWZwd3FqYHdqbG1wI2xtI3B3em9mPiF0amd3azkjYGJtI2FmI3ZwZmcjd2wjd2tmI2BxZmJ3amxtI2xlbmxwdyNqbnNscXdibXcjam1lbHFuYndqbG0jYm1ncWZwdm93Zmcjam0jd2tmYGxvb2JzcGYjbGUjd2tmV2tqcCNuZmJtcCN3a2J3Zm9mbmZtd3AjbGUjd2tmdGJwI3Fmc29iYGZnI2F6Ym1ib3pwanAjbGUjd2tmam1wc2pxYndqbG0jZWxxcWZkYnFnZmcjYnAjd2tmbmxwdyNwdmBgZnBwZXZvaG1sdG0jYnAjJXJ2bHc4YiNgbG5zcWZrZm1wanVmS2pwd2xxeiNsZSN3a2YjdGZxZiNgbG1wamdmcWZncWZ3dnFtZmcjd2wjd2tmYnFmI3FmZWZxcWZnI3dsVm1wbHZxYGZnI2puYmRmPVx0XG4/Z2p1I2BvYnBwPiFgbG1wanB3cCNsZSN3a2Zwd2xzU3Fsc2JkYndqbG1qbXdmcWZwdyNqbSN3a2ZidWJqb2Jham9qd3ojbGVic3NmYnFwI3dsI2tidWZmb2Zgd3FsbmJkbWZ3amBmbWJhb2ZQZnF1amBmcCtldm1gd2psbSNsZSN3a2ZKdyNqcCNqbnNscXdibXc/LHBgcWpzdz0/LGdqdT1ldm1gd2psbSsqeHVicSNxZm9id2p1ZiN3bCN3a2ZicCNiI3FmcHZvdyNsZSN3a2Yjc2xwandqbG0jbGVFbHEjZntibnNvZi8jam0jbmZ3a2xnPiFzbHB3ISN0YnAjZWxvb2x0ZmcjYXolYm5zOG5nYnBrOCN3a2Z3a2YjYnNzb2pgYndqbG1pcCE9PyxwYHFqc3c9Dlx0dm89PyxnanU9PyxnanU9YmV3ZnEjd2tmI2dmYndrdGp3ayNxZnBzZmB3I3dscHd6b2Y+IXNiZ2dqbWQ5anAjc2Jxd2pgdm9icW96Z2pwc29iejlqbW9qbWY4I3d6c2Y+IXB2YW5qdyEjanAjZ2p1amdmZyNqbXdsXGJUQVxuemsjK1x2QmxcYlF/KnFmcHNsbXBiYWpvamdiZ2JnbmptanB3cWJgai9fbWptd2ZxbWJgamxtYm9mcGBscXFmcHNsbWdqZm13ZlxmSGVcZkhGXGZIQ1xmSWdcZkh7XGZIRlxmSW5cZkhcXFxmSWFcZkhZXGZIVVxmSEJcZkhSXGZIXFxcZklrXGZIXlxmSWdcZkh7XGZJZ1xmSG5cZkh2XGZJbVxmSERcZkhSXGZIWVxmSF5cZklrXGZIeVxmSFNcZkhEXGZIVFxmSFxcXGZIeVxmSFJcZkhcXFxmSEZcZkltXGZIXlxmSFNcZkhUXGZIelxmSWdcZkhwXGZJa1xmSG5cZkh2XGZIUlxmSFVcZkhTXGZIY1xmSEFcZklrXGZIcFxmSWtcZkhuXGZIWlxmSFJcZkhCXGZIU1xmSF5cZkhVXGZIQlxmSFJcZkhcXFxmSWxcZkhwXGZIUlxmSHtcZkhcXFxmSE9cZkhAXGZIRFxmSFJcZkhEXGZJa1xmSHlcZkltXGZIQlxmSFJcZkhcXFxmSEBcZklhXGZIXlxmSWVcZkh7XGZIQlxmSFJcZkheXGZIU1xmSHlcZkhCXGZIVVxmSFNcZkheXGZIUlxmSEZcZklvXGZIW1xmSWFcZkhMXGZIQFxmSE5cZkhQXGZISFxmSWtcZkhBXGZIUlxmSHBcZkhGXGZIUlxmSHlcZklhXGZIXlxmSFNcZkh5XGZIc1xmSWFcZkhcXFxmSWtcZkhEXGZIelxmSFNcZkheXGZIUlxmSEdcZkhKXGZJYFxmSFxcXGZIUlxmSERcZkhCXGZIUlxmSEJcZkheXGZJa1xmSEJcZkhIXGZISlxmSFJcZkhEXGZIQFxmSFJcZkhwXGZIUlxmSFxcXGZIWVxmSFNcZkh5XGZIUlxmSFRcZkh5XGZJYVxmSENcZklnXGZIblxmSHZcZkhSXGZIVVxmSEhcZklrXGZIRlxmSFVcZkltXGZIbVxmSHZcZkhAXGZISFxmSFJcZkhDXGZIUlxmSFRcZkhuXGZIWVxmSFJcZkhKXGZISlxmSWtcZkh6XGZIRFxmSWtcZkhGXGZIU1xmSHdcZkheXGZJa1xmSFlcZkhTXGZIWlxmSWtcZkhbXGZIXFxcZkhSXGZIcFxmSWFcZkhDXGZIZVxmSEhcZklhXGZISFxmSFxcXGZIQlxmSW1cZkhuXGZIQFxmSGRcZkhKXGZJZ1xmSERcZklnXGZIblxmSGVcZkhGXGZIeVxmSFxcXGZIT1xmSEZcZkhOXGZIUFxmSWtcZkhuXGZIVFxmSWFcZkhJXGZIU1xmSEhcZkhHXGZIU1xmSF5cZklhXGZIQlxmSEJcZkltXGZIelxmSWFcZkhDXGZIaVxmSHZcZklhXGZId1xmSFJcZkh3XGZJblxmSHNcZkhIXGZJbFxmSFRcZkhuXGZIe1xmSWxcZkhIXGZIcFxmSFJcZkhjXGZIe1xmSFJcZkhZXGZIU1xmSEFcZkhSXGZIe1xmSHRcZkhPXGZJYVxmSHNcZklrXGZISlxmSW5cZkhUXGZIXFxcZklrXGZISlxmSFNcZkhEXGZJZ1xmSG5cZkhVXGZISFxmSWFcZkhDXGZIUlxmSFRcZklrXGZIeVxmSWFcZkhUXGZIe1xmSFJcZkhuXGZIS1xmSWxcZkhZXGZIU1xmSFpcZklhXGZIWVxmSFxcXGZIUlxmSEhcZklrXGZIblxmSEpcZklkXGZIc1xmSWFcZkhUXGZIRFxmSHlcZklhXGZIWlxmSFJcZkhUXGZIUlxmSEJcZkhEXGZJa1xmSGlcZkhKXGZIUlxmSF5cZkhIXGZIQFxmSFNcZkhwXGZIXlxmSWxcZkhGXGZJbVxmSFxcXGZJblxmSFtcZkhVXGZIU1xmSG5cZkhKXGZJbFxmSEJcZkhTXGZISFxmSWFcZkhcXFxmSHlcZkhZXGZIU1xmSEhcZkhSXGZIXFxcZkltXGZIRlxmSENcZklrXGZIVFxmSWFcZkhJXGZIUlxmSERcZkh5XGZIXFxcZklnXGZITVxmSFBcZkhCXGZJbVxmSHlcZklhXGZISFxmSENcZklnXGZIcFxmSERcZkhSXGZIeVxmSW9cZkhGXGZIQ1xmSFJcZkhGXGZJZ1xmSFRcZklhXGZIc1xmSHRcZkhcXFxmSWtcZkheXGZJblxmSHlcZkhSXGZIXFxcZklhXGZIQ1xmSFlcZkhTXGZIdlxmSFJcZkhcXFxmSFRcZkluXGZIdlxmSERcZkhSXGZIQlxmSW5cZkheXGZJYVxmSENcZkhKXGZJa1xmSHpcZklrXGZIblxmSFVcZkhCXGZJa1xmSFpcZkhSXGZIVFxmSWFcZkh5XGZJblxmSF5cZkhCXGZJZFxmSG5cZkhEXGZJa1xmSEhcZklkXGZIQ1xmSFJcZkhcXFxmSHBcZkhTXGZIVFxmSHlcZklrcXBwKHtubyEjd2p3b2Y+IS53enNmISNgbG13Zm13PiF3andvZiEjYGxtd2Ztdz4hYncjd2tmI3BibmYjd2puZi1pcCE9PyxwYHFqc3c9XHQ/ISNuZndrbGc+IXNscHchIz8scHNibT0/LGI9Pyxvaj11ZnF3amBiby5ib2pkbTl3LGlydmZxei1uam0taXAhPS1gb2pgaCtldm1gd2psbSsjcHd6b2Y+IXNiZ2dqbWQufiorKjhcdD8scGBxanN3PVx0Pyxwc2JtPT9iI2txZmU+IT9iI2txZmU+IWt3d3M5LCwqOCNxZnd2cW0jZWJvcGY4d2Z7dy5nZmBscWJ3amxtOSNwYHFsb29qbWQ+IW1sISNhbHFnZnEuYGxvb2JzcGY5YnBwbGBqYndmZyN0andrI0Fia2JwYiNKbWdsbWZwamJGbWRvanBrI29ibWR2YmRmP3dme3cje25vOXBzYmBmPi1kamUhI2FscWdmcT4hMyE/LGFsZ3o9XHQ/LGt3bm89XHRsdWZxZW9sdDlramdnZm04am5kI3BxYD4ha3d3czksLGJnZ0Z1Zm13T2pwd2ZtZnFxZnBzbG1wamFvZiNlbHEjcC1pcCE9PyxwYHFqc3c9XHQsZWJ1amBsbS1qYGwhIyw9bHNmcWJ3am1kI3B6cHdmbiEjcHd6b2Y+IXRqZ3drOTJ3YnFkZnc+IVxcYW9ibWghPVB3YndmI1ZtanVmcXBqd3p3Znt3LmJvamRtOW9mZXc4XHRnbGB2bmZtdy10cWp3ZisvI2ptYG92Z2ptZCN3a2YjYnFsdm1nI3drZiN0bHFvZyo4Dlx0PyxwYHFqc3c9Dlx0PyEjcHd6b2Y+IWtmamRrdzk4bHVmcWVvbHQ5a2pnZ2ZtbmxxZiNqbWVscW5id2psbWJtI2ptd2ZxbWJ3amxtYm9iI25mbmFmcSNsZSN3a2YjbG1mI2xlI3drZiNlanFwd2BibSNhZiNlbHZtZyNqbSM/LGdqdT1cdFxuXG4/LGdqdT1cdGdqcHNvYno5I21sbWY4IT0hIyw9XHQ/b2ptaCNxZm8+IVx0IyMrZXZtYHdqbG0rKiN4d2tmIzI2d2sjYGZtd3Zxei1zcWZ1Zm13R2ZlYnZvdytvYnFkZiNtdm5hZnEjbGUjQXp5Ym13am1mI0Zuc2pxZi1pc2R/d2t2bmF/b2Zld391YnB3I25iaWxxand6I2xlbmJpbHFqd3ojbGUjd2tmIyNib2pkbT4hYGZtd2ZxIT1WbWp1ZnFwand6I1NxZnBwZ2xuam1id2ZnI2F6I3drZlBmYGxtZyNUbHFvZyNUYnFnanB3cWphdndqbG0jbGUjcHd6b2Y+IXNscGp3amxtOXdrZiNxZnB3I2xlI3drZiNga2JxYmB3ZnFqeWZnI2F6I3Fmbz4hbWxlbG9vbHQhPWdmcWp1ZnAjZXFsbiN3a2ZxYndrZnEjd2tibSN3a2YjYiNgbG5ham1id2psbSNsZXB3em9mPiF0amd3azkyMzNGbWRvanBrLnBzZmJoam1kYGxuc3Z3ZnEjcGBqZm1gZmFscWdmcT4hMyEjYm93PiF3a2YjZntqcHdmbWBmI2xlR2ZubGBxYndqYCNTYnF3eiEjcHd6b2Y+IW5icWRqbS5FbHEjd2tqcCNxZmJwbG0vLWlwIT0/LHBgcWpzdz1cdFxucEF6V2JkTWJuZitwKlgzXmlwIT0/LHBgcWpzdz0OXHQ/LWlwIT0/LHBgcWpzdz0OXHRvam1oI3Fmbz4hamBsbSEjJCNib3c+JCQjYG9icHA+JGVscW5id2psbSNsZSN3a2Z1ZnFwamxtcCNsZSN3a2YjPyxiPT8sZ2p1PT8sZ2p1PSxzYmRmPVx0IyM/c2JkZj1cdD9nanUjYG9icHA+IWBsbXdhZmBibmYjd2tmI2VqcXB3YWJrYnBiI0ptZ2xtZnBqYmZtZG9qcGsjK3BqbnNvZioieSJXIlciWyJRIlUiViJAPWk9bDxePFxcPW49bTxWPFQ8VjxSPFA8UzxcXDxRPFQ8VD1jPF48Vz1jPFk9bj1tPWM8eDxSPF08XFw8XjxUPW49YD1rPFk8VzxSPF48WTxWPFxcPWw8XFw8WzxePFQ9bjxUPWM8dDxRPW48WT1sPFE8WT1uPHI9bjxePFk9bjxUPW49YDxRPFxcPFM9bDxUPFA8WT1sPFQ8UT1uPFk9bDxRPFk9bjxWPFI9bjxSPWw8UjxfPFI9bT1uPWw8XFw8UTxUPWo9ZzxWPFxcPWs8WT1tPW48XjxZPW89bTxXPFI8XjxUPWM9aTxTPWw8UjxdPFc8WTxQPWc8UzxSPFc9bz1rPFQ9bj1gPWM8XjxXPWM9Yj1uPW09YzxRPFxcPFQ8XTxSPFc8WTxZPFY8UjxQPFM8XFw8UTxUPWM8XjxRPFQ8UDxcXDxRPFQ8WT1tPWw8WTxYPW09bjxePFxcNEs1aDVpNWQ0SzRaNWY0VTRLNWg0XTRKNWY0XzVmNEU0SzVoNEs1ajRGNW40SzVoNWk0WDRLNF01bzRLNEY1bzRLNWg0XzVmNEs0XTRLNEY0SzVoNWk1bzRGNWQ0RDRFNEs1aDRfNFU1ZDRDNWY0RTRLNEE0WTRLNEo1ZjRLNEY0SzVoNFU0SzVoNWk1ZjRFNEs1aDRZNWQ0RjVmNEs0RjRLNWg0SzVqNEY0XTVqNEY0SzVoNEY0WTRLNWk1ZjVpNEs1aDRJNF81aDRLNWk1ZjRLNWg1aTRYNEs0XTVvNEU0SzVoNWk0XTRKNWY0SzRGcWxhbHdwISNgbG13Zm13PiE/Z2p1I2pnPiFlbGx3ZnEhPXdrZiNWbWp3ZmcjUHdid2ZwP2puZCNwcWA+IWt3d3M5LCwtaXNkf3FqZGt3f3drdm5hfy1pcCE9PyxwYHFqc3c9Dlx0P29sYGJ3amxtLXNxbHdsYGxvZXFibmZhbHFnZnE+ITMhI3AhIyw9XHQ/bmZ3YiNtYm5mPiE/LGI9PyxnanU9PyxnanU9P2VsbXcudGZqZGt3OWFsb2c4JXJ2bHc4I2JtZyMlcnZsdzhnZnNmbWdqbWQjbG0jd2tmI25icWRqbTkzOHNiZ2dqbWQ5ISNxZm8+IW1sZWxvb2x0ISNTcWZwamdmbXcjbGUjd2tmI3d0Zm13amZ3ayNgZm13dnF6ZnVqcGpsbT1cdCMjPyxzYmRmSm13ZnFtZncjRntzb2xxZnFiLWJwem1gIz4jd3F2ZjgOXHRqbWVscW5id2psbSNiYWx2dz9nanUjamc+IWtmYmdmcSE9ISNiYHdqbG0+IWt3d3M5LCw/YiNrcWZlPiFrd3dzcDksLD9nanUjamc+IWBsbXdmbXchPyxnanU9Dlx0PyxnanU9Dlx0P2dmcWp1ZmcjZXFsbiN3a2YjP2puZCNwcWA+JGt3d3M5LCxiYGBscWdqbWQjd2wjd2tmI1x0PyxhbGd6PVx0Pyxrd25vPVx0cHd6b2Y+IWVsbXcucGp5ZjlwYHFqc3cjb2JtZHZiZGY+IUJxamJvLyNLZm91ZndqYGIvPyxiPT9wc2JtI2BvYnBwPiE/LHBgcWpzdz0/cGBxanN3I3Nsb2p3amBibyNzYnF3amZwd2c9Pyx3cT0/LHdiYW9mPT9rcWZlPiFrd3dzOSwsdHR0LWptd2Zxc3Fmd2J3amxtI2xlcWZvPiFwd3pvZnBrZmZ3ISNnbGB2bmZtdy10cWp3ZiskP2BrYnFwZnc+IXZ3ZS47IT1cdGFmZGptbWptZCNsZSN3a2YjcWZ1ZmJvZmcjd2tidyN3a2Z3Zm9mdWpwamxtI3BmcWpmcCEjcWZvPiFtbGVsb29sdCE9I3dicWRmdz4hXFxhb2JtaCE9YG9iam5qbWQjd2tidyN3a2Zrd3dzJjBCJjFFJjFFdHR0LW5ibWplZnB3YndqbG1wI2xlU3FqbmYjTmptanB3ZnEjbGVqbWVvdmZtYGZnI2F6I3drZmBvYnBwPiFgb2ZicWVqeyE9LGdqdT0OXHQ/LGdqdT0OXHQOXHR3a3FmZi5nam5mbXBqbG1ib0BrdnFgayNsZSNGbWRvYm1nbGUjTWxxd2sjQGJxbG9qbWJwcnZicWYjaGpvbG5md3FmcC1iZ2dGdWZtd09qcHdmbWZxZ2pwd2ptYHcjZXFsbiN3a2ZgbG5ubG1veiNobWx0bSNicFNrbG1md2pgI0Jvc2tiYWZ3Z2Zgb2JxZmcjd2tidyN3a2ZgbG13cWxvb2ZnI2F6I3drZkFmbWlibmptI0VxYm1ob2ptcWxvZi5zb2J6am1kI2RibmZ3a2YjVm1qdWZxcGp3eiNsZWptI1RmcHdmcW0jRnZxbHNmc2ZxcGxtYm8jYGxuc3Z3ZnFTcWxpZmB3I0R2d2ZtYWZxZHFmZGJxZ29mcHAjbGUjd2tma2JwI2FmZm0jc3Fsc2xwZmd3bGRmd2tmcSN0andrI3drZj0/LG9qPT9vaiNgb2JwcD4ham0jcGxuZiNgbHZtd3FqZnBuam0taXAhPT8scGBxanN3PWxlI3drZiNzbHN2b2J3amxtbGVlamBqYm8jb2JtZHZiZGY/am5kI3BxYD4ham5iZGZwLGpnZm13amVqZmcjYXojd2tmbWJ3dnFibyNxZnBsdnFgZnBgb2JwcGplamBid2psbSNsZWBibSNhZiNgbG1wamdmcWZncnZibXd2biNuZmBrYm1qYHBNZnVmcXdrZm9mcHAvI3drZm5qb29qbG0jemZicXAjYmRsPyxhbGd6PQ5cdD8sa3dubz0OInkiVyJXIlsiUSJVIlYiQFx0d2JoZiNiZ3VibXdiZGYjbGVibWcvI2JgYGxxZ2ptZCN3bGJ3d3FqYXZ3Zmcjd2wjd2tmTmpgcWxwbGV3I1RqbWdsdHB3a2YjZWpxcHcjYGZtd3ZxenZtZ2ZxI3drZiNgbG13cWxvZ2p1I2BvYnBwPiFrZmJnZnFwa2xxd296I2Jld2ZxI3drZm1sd2Jhb2YjZntgZnN3amxtd2ZtcCNsZSN3a2x2cGJtZ3BwZnVmcWJvI2dqZWVmcWZtd2JxbHZtZyN3a2YjdGxxb2ctcWZiYGtqbWQjbmpvandicXpqcGxvYndmZyNlcWxuI3drZmxzc2xwandqbG0jd2wjd2tmd2tmI0xvZyNXZnB3Ym5mbXdCZXFqYGJtI0JuZnFqYGJtcGptcGZxd2ZnI2ptd2wjd2tmcGZzYnFid2YjZXFsbiN3a2ZuZndxbHNsb2p3Ym0jYnFmYm5iaGZwI2p3I3NscHBqYW9mYmBobWx0b2ZnZGZnI3drYndicWR2YmFveiN3a2Yjbmxwd3d6c2Y+IXdme3csYHBwIT1cdHdrZiNKbXdmcW1id2psbWJvQmBgbHFnam1kI3dsI3drZiNzZj4hd2Z7dyxgcHAhIyw9XHRgbGptYGpnZiN0andrI3drZnd0bC53a2pxZ3AjbGUjd2tmR3Zxam1kI3dranAjd2puZi9ndnFqbWQjd2tmI3NmcWpsZ2JtbWx2bWBmZyN3a2J3I2tmd2tmI2ptd2ZxbWJ3amxtYm9ibWcjbmxxZiNxZmBmbXdvemFmb2pmdWZnI3drYncjd2tmYGxtcGBqbHZwbWZwcCNibWdlbHFuZnFveiNobWx0bSNicHB2cXFsdm1nZmcjYXojd2tmZWpxcHcjYnNzZmJxZmcjam1sYGBicGpsbWJvb3ojdnBmZ3NscGp3amxtOWJhcGxvdndmOCEjd2JxZGZ3PiFcXGFvYm1oISNzbHBqd2psbTlxZm9id2p1Zjh3Znt3LmJvamRtOWBmbXdmcThpYnssb2phcCxpcnZmcXosMi1hYmBoZHFsdm1nLmBsb2xxOSB3enNmPiFic3NvamBid2psbSxibWR2YmRmISNgbG13Zm13PiE/bmZ3YiNrd3dzLmZydmp1PiFTcWp1YmB6I1Nsb2pgej8sYj1mKyEmMEBwYHFqc3cjcHFgPiQhI3dicWRmdz4hXFxhb2JtaCE9TG0jd2tmI2x3a2ZxI2tibWcvLWlzZH93a3ZuYX9xamRrd38xPyxnanU9P2dqdSNgb2JwcD4hP2dqdSNwd3pvZj4hZW9sYnc5bWptZndmZm13ayNgZm13dnF6PyxhbGd6PQ5cdD8sa3dubz0OXHQ/am5kI3BxYD4ha3d3czksLHA4d2Z7dy5ib2pkbTlgZm13ZnFlbG13LnRmamRrdzkjYWxvZzgjQmBgbHFnam1kI3dsI3drZiNnamVlZnFmbWBmI2Fmd3RmZm0hI2VxYm5mYWxxZ2ZxPiEzISMhI3B3em9mPiFzbHBqd2psbTlvam1oI2txZmU+IWt3d3M5LCxrd25vNyxvbGxwZi1nd2chPVx0Z3Zxam1kI3dranAjc2ZxamxnPyx3Zz0/LHdxPT8sd2Jhb2Y9YG9scGZveiNxZm9id2ZnI3dsZWxxI3drZiNlanFwdyN3am5mOGVsbXcudGZqZGt3OWFsb2c4am1zdncjd3pzZj4hd2Z7dyEjP3BzYm0jcHd6b2Y+IWVsbXcubG1xZmJnenB3YndmYGtibWRmXG4/Z2p1I2BvYnBwPiFgb2ZicWdsYHZuZm13LW9sYGJ3amxtLSNFbHEjZntibnNvZi8jd2tmI2IjdGpnZiN1YnFqZnd6I2xlIz8iR0xAV1pTRiNrd25vPQ5cdD8lbWFwczglbWFwczglbWFwczghPT9iI2txZmU+IWt3d3M5LCxwd3pvZj4hZW9sYnc5b2ZldzhgbG1gZnFtZmcjdGp3ayN3a2Y+a3d3cyYwQiYxRSYxRXR0dC1qbSNzbHN2b2JxI2B2b3d2cWZ3enNmPiF3Znt3LGBwcCEjLD1qdyNqcCNzbHBwamFvZiN3bCNLYnF1YnFnI1ZtanVmcXBqd3p3em9mcGtmZnchI2txZmU+ISx3a2YjbmJqbSNga2JxYmB3ZnFMe2VscWcjVm1qdWZxcGp3eiMjbWJuZj4haGZ6dGxxZ3AhI2Bwd3pvZj4hd2Z7dy5ib2pkbTl3a2YjVm1qd2ZnI0hqbWRnbG5lZmdmcWJvI2RsdWZxbW5mbXc/Z2p1I3B3em9mPiFuYnFkam0jZ2ZzZm1nam1kI2xtI3drZiNnZnBgcWpzd2psbSNsZSN3a2Y/Z2p1I2BvYnBwPiFrZmJnZnEtbmptLWlwIT0/LHBgcWpzdz1nZnB3cXZgd2psbSNsZSN3a2Zwb2pka3dveiNnamVlZnFmbXdqbSNiYGBscWdibWBmI3Rqd2t3Zm9mYGxubnZtamBid2psbXBqbWdqYGJ3ZnAjd2tidyN3a2Zwa2xxd296I3drZnFmYmV3ZnFmcHNmYGpib296I2ptI3drZiNGdnFsc2ZibSNgbHZtd3FqZnBLbHRmdWZxLyN3a2ZxZiNicWZwcWA+IWt3d3M5LCxwd2J3amBwdmRkZnB3Zmcjd2tidyN3a2YhI3BxYD4ha3d3czksLHR0dC1iI29icWRmI212bmFmcSNsZSNXZm9mYGxubnZtamBid2psbXAhI3Fmbz4hbWxlbG9vbHQhI3dLbG96I1FsbmJtI0Zuc2ZxbHFib25scHcjZntgb3ZwanVmb3ohI2FscWdmcT4hMyEjYm93PiFQZmBxZndicXojbGUjUHdid2Zgdm9uam1id2ptZCNqbSN3a2ZASkIjVGxxb2cjRWJgd2FsbGh3a2YjbmxwdyNqbnNscXdibXdibW1qdWZxcGJxeiNsZSN3a2Zwd3pvZj4hYWJgaGRxbHZtZy4/b2o9P2ZuPT9iI2txZmU+ISx3a2YjQndvYm13amAjTGBmYm1wd3FqYHdveiNwc2ZiaGptZC9wa2xxd296I2FmZWxxZiN3a2ZnamVlZnFmbXcjd3pzZnAjbGV3a2YjTHd3bG5ibSNGbnNqcWY9P2puZCNwcWA+IWt3d3M5LCxCbSNKbXdxbGd2YHdqbG0jd2xgbG1wZnJ2Zm1gZiNsZSN3a2ZnZnNicXd2cWYjZXFsbiN3a2ZAbG1lZmdmcWJ3ZiNQd2J3ZnBqbWdqZGZtbHZwI3NmbHNvZnBTcWxgZmZnam1kcCNsZSN3a2ZqbWVscW5id2psbSNsbSN3a2Z3a2ZscWpmcCNrYnVmI2FmZm1qbXVsb3VmbmZtdyNqbSN3a2ZnanVqZ2ZnI2ptd2wjd2txZmZiZ2liYGZtdyNgbHZtd3FqZnBqcCNxZnBzbG1wamFvZiNlbHFnanBwbG92d2psbSNsZSN3a2ZgbG9vYmFscWJ3amxtI3Rqd2t0amdmb3ojcWZkYnFnZmcjYnBranAjYGxtd2Zuc2xxYnFqZnBlbHZtZ2ptZCNuZm5hZnEjbGVHbG5qbWpgYm0jUWZzdmFvamBkZm1mcWJvb3ojYmBgZnN3Zmd3a2Yjc2xwcGpham9qd3ojbGVicWYjYm9wbCNidWJqb2Jhb2Z2bWdmcSNgbG1wd3F2YHdqbG1xZnB3bHFid2psbSNsZSN3a2Z3a2YjZGZtZnFibyNzdmFvamBqcCNib25scHcjZm13anFmb3pzYnBwZnAjd2txbHZkayN3a2ZrYnAjYWZmbSNwdmRkZnB3ZmdgbG5zdndmcSNibWcjdWpnZmxEZnFuYm1qYCNvYm1kdmJkZnAjYmBgbHFnam1kI3dsI3drZiNnamVlZnFmbXcjZXFsbiN3a2Zwa2xxd296I2Jld2ZxdGJxZ3BrcWZlPiFrd3dzcDksLHR0dC1xZmBmbXcjZ2Z1Zm9sc25mbXdBbGJxZyNsZSNHanFmYHdscXA/Z2p1I2BvYnBwPiFwZmJxYGt/Iz9iI2txZmU+IWt3d3M5LCxKbSNzYnF3amB2b2JxLyN3a2ZOdm93anNvZiNlbGx3bWx3ZnBscSNsd2tmcSNwdmFwd2JtYGZ3a2x2cGJtZ3AjbGUjemZicXB3cWJtcG9id2psbSNsZSN3a2Y/LGdqdT0OXHQ/LGdqdT0OXHQOXHQ/YiNrcWZlPiFqbWdmey1za3N0YnAjZnB3YmFvanBrZmcjam1uam0taXAhPT8scGBxanN3PVx0c2Jxd2pganNid2Yjam0jd2tmYiNwd3FsbWQjam1lb3ZmbWBmcHd6b2Y+IW5icWRqbS53bHM5cWZzcWZwZm13ZmcjYXojd2tmZHFiZ3Zid2ZnI2VxbG4jd2tmV3FiZ2p3amxtYm9vei8jd2tmRm9mbmZtdyshcGBxanN3ISo4S2x0ZnVmcS8jcGptYGYjd2tmLGdqdT1cdD8sZ2p1PVx0P2dqdSNvZmV3OCNuYnFkam0ub2ZldzlzcWx3ZmB3amxtI2JkYmptcHczOCN1ZnF3amBiby5ib2pkbTlWbWVscXd2bWJ3Zm96LyN3a2Z3enNmPiFqbmJkZix7LmpgbG0sZ2p1PVx0P2dqdSNgb2JwcD4hI2BvYnBwPiFgb2ZicWVqeyE9P2dqdSNgb2JwcD4hZWxsd2ZxXG5cbj8sZ2p1PVx0XG5cbj8sZ2p1PVx0d2tmI25sd2psbSNzamB3dnFmPH09ZjxXPF88XFw9bD1tPFY8VDxdPWY8VzxfPFxcPWw9bTxWPFQ8SDxZPFg8WT1sPFxcPWo8VDxUPFE8WT1tPFY8UjxXPWA8VjxSPW08UjxSPF09ZTxZPFE8VDxZPW08UjxSPF09ZTxZPFE8VD1jPFM9bDxSPF89bDxcXDxQPFA9ZzxyPW48Uz1sPFxcPF48VD1uPWA8XTxZPW08UzxXPFxcPW48UTxSPFA8XFw9bjxZPWw8VDxcXDxXPWc8UzxSPFs8XjxSPFc9YzxZPW48UzxSPW08VzxZPFg8UTxUPFk9bDxcXDxbPFc8VD1rPFE9Zz1pPFM9bDxSPFg9bzxWPWo8VDxUPFM9bDxSPF89bDxcXDxQPFA8XFw8UzxSPFc8UTxSPW09bj1gPWI8UTxcXD1pPFI8WDxUPW49bT1jPFQ8WzxdPWw8XFw8UTxRPFI8WTxRPFxcPW08WTxXPFk8UTxUPWM8VDxbPFA8WTxRPFk8UTxUPWM8VjxcXD1uPFk8XzxSPWw8VDxUPHw8VzxZPFY9bTxcXDxRPFg9bFxmSEpcZklhXGZIWVxmSFJcZkhcXFxmSFJcZkhCXGZJZFxmSERcZkltXGZIaVxmSF5cZkhGXGZJYVxmSFxcXGZISlxmSFJcZkhEXGZIQVxmSFJcZkhcXFxmSEhcZklsXGZIQ1xmSGlcZkhEXGZJbVxmSEpcZklrXGZIWlxmSFVcZkhTXGZIRFxmSWFcZkhKXGZJbFxmSGtcZkhuXGZITVxmSFNcZkhDXGZIUlxmSEpcZkhTXGZIXlxmSWFcZkheXGZJbFxmSGlcZkhLXGZIU1xmSHlcZkhSXGZIXFxcZkhZXGZJbFxmSE1cZkhTXGZIQ1xmSWdcZkh2XGZIU1xmSHNcZklhXGZITFxmSWtcZkhUXGZIQlxmSFJcZkh2XGZIUlxmSFxcXGZIcFxmSG5cZkh5XGZJYVxmSFpcZkhEXGZISlxmSW1cZkhEXGZIU1xmSENcZkhSXGZIRlxmSWFcZkhcXFxmSENcZklnXGZIe1xmSGlcZkhEXGZJbVxmSFRcZkhSXGZIXFxcZkh9XGZIRFxmSF5cZkhSXGZIa1xmSERcZkhGXGZIUlxmSFxcXGZJYVxmSHNcZklsXGZIWlxmSFxcXGZJYVxmSEhcZklnXGZIblxmSF5cZklnXGZIeVxmSFRcZkhBXGZIUlxmSEdcZkhQXGZJYVxmSF5cZklkXGZIWlxmSFpcZkhcXFxmSWFcZkhIXGZJa1xmSG5cZkhGXGZJYVxmSFxcXGZISlxmSWtcZkhaXGZIRlxmSWFcZkheXGZJa1xmSENcZkhcXFxmSHlcZklrXGZIblxmSEpcZklhXGZIXFxcZkhUXGZJYVxmSElcZkhTXGZISFxmSFNcZkhlXGZISFxmSWFcZkhGXGZIUlxmSEpcZkhlXGZIRFxmSWFcZkhVXGZJa1xmSG5cZkh2XGZIU1xmSHNcZklhXGZITFxmSFJcZkhDXGZIUlxmSEhcZklhXGZIXFxcZkhSXGZIcFxmSWFcZkhDXGZIUlxmSEpcZkhSXGZIRlxmSW1cZkhcXFxmSFJcZkhEXGZJa1xmSHBcZklnXGZITVxmSFBcZklrXGZIblxmSGlcZkhEXGZJbVxmSFlcZkhSXGZISlxmSFpcZklhXGZIXFxcZklrXGZIT1xmSWxcZkhaXGZIU1xmSHlcZklhXGZIW1xmSFJcZkhUXGZIXFxcZkh5XGZIUlxmSFxcXGZJbFxmSFRcZkhuXGZIe1xmSWFcZkhcXFxmSFVcZkhGXGZIXFxcZkhTXGZIT1xmSFJcZkhCXGZIQFxmSWFcZkhcXFxmSFJcZkhuXGZITVxmSEBcZkh2XGZJYVxmSHZcZklnXGZIblxmSGVcZkhGXGZIXlxmSEBcZklhXGZIS1xmSEJcZkhuXGZISFxmSWFcZkhcXFxmSWxcZkhUXGZIblxmSEZcZkhcXFxmSWFcZkh5XGZIZVxmSEJcZklhXGZIQlxmSWxcZkhKXGZIQlxmSFJcZkhLXGZJYVxmSENcZkhCXGZIVFxmSFVcZkhSXGZIQ1xmSEhcZkhSXGZIWlxmSEBcZklhXGZISlxmSWdcZkhuXGZIQlxmSWxcZkhNXGZIU1xmSENcZkhSXGZIalxmSGRcZkhGXGZJbFxmSGNcZkheXGZIQlxmSWdcZkhAXGZIUlxmSGtcZkheXGZIVFxmSG5cZkh6XGZJYVxmSENcZkhSXGZIalxmSEZcZkhcXFxmSWtcZkhaXGZIRFxmSGlcZkhEXGZJbVxmSEBcZkhuXGZIS1xmSEBcZkhSXGZIcFxmSFBcZkhSXGZIXFxcZkhEXGZIWVxmSWxcZkhEXGZISFxmSEJcZkhGXGZJYVxmSFxcXGZIQlxmSW1cZkh6XGZIRlxmSWFcZkhcXFxmSFpcZklhXGZIRFxmSEZcZkhcXFxmSFNcZkhZXGZIUlxmSFxcXGZIRFxmSW1cZkh5XGZIVFxmSFJcZkhEXGZIVFxmSEJcZkhcXFxmSWFcZkhJXGZIRFxmSGpcZkhDXGZJZ1xmSHBcZkhTXGZISFxmSFRcZklnXGZIQlxmSFlcZkhSXGZIXFw0SzVoNWk0WDRLNF01bzRLNEY0SzVoNWk1ajRGNEM1ZjRLNEY0SzVoNW81aTRENWY1ZDRGNF00SzVoNWk0WDRLNWs0QzRLNEY0VTRDNEM0SzVoNF41ZDRLNF00VTRDNEM0SzVoNF00QzVkNEM0SzVoNEk0XzVoNEs1aTVmNEU0SzVoNW01ZDRGNWQ0WDVkNEQ0SzVoNWk0XzRLNEQ1bjRLNEY0SzVoNWk0VTVoNWQ1aTRLNEY0SzVoNWk0XzVoNF81aDRLNEY0SzVoNEA0XTRLNW01ZjVvNF80SzVoNEs0XzVoNEs1aTVmNEU0SzVoNEs0RjRZNEs1aDRLNEZoZnp0bHFncCEjYGxtd2Ztdz4hdDAtbHFkLDI6Ojose2t3bm8hPT9iI3dicWRmdz4hXFxhb2JtaCEjd2Z7dyxrd25vOCNga2JxcGZ3PiEjd2JxZGZ3PiFcXGFvYm1oIT0/d2Jhb2YjYGZvb3NiZ2dqbWQ+IWJ2d2xgbG5zb2Z3Zj4hbGVlISN3Znt3LmJvamRtOSNgZm13ZnE4d2wjb2JwdyN1ZnFwamxtI2F6I2FiYGhkcWx2bWcuYGxvbHE5IyAhI2txZmU+IWt3d3M5LCx0dHQtLGdqdT0/LGdqdT0/Z2p1I2pnPj9iI2txZmU+ISAhI2BvYnBwPiEhPT9qbmQjcHFgPiFrd3dzOSwsYHFqc3chI3BxYD4ha3d3czksLFx0P3BgcWpzdyNvYm1kdmJkZj4hLCxGTSEjIWt3d3M5LCx0dHQtdGZtYGxnZlZRSkBsbnNsbWZtdyshI2txZmU+IWlidWJwYHFqc3c5P2dqdSNgb2JwcD4hYGxtd2Ztd2dsYHZuZm13LXRxandmKyQ/cGBzbHBqd2psbTkjYmFwbG92d2Y4cGBxanN3I3BxYD4ha3d3czksLCNwd3pvZj4hbmJxZGptLndsczktbmptLWlwIT0/LHBgcWpzdz1cdD8sZ2p1PVx0P2dqdSNgb2JwcD4hdDAtbHFkLDI6Ojose2t3bm8hI1x0Dlx0PyxhbGd6PQ5cdD8sa3dubz1nanB3am1gd2psbSNhZnd0ZmZtLCEjd2JxZGZ3PiFcXGFvYm1oIT0/b2ptaCNrcWZlPiFrd3dzOSwsZm1gbGdqbWQ+IXZ3ZS47ITw9XHR0LWJnZ0Z1Zm13T2pwd2ZtZnE8YmB3amxtPiFrd3dzOSwsdHR0LWpgbG0hI2txZmU+IWt3d3M5LCwjcHd6b2Y+IWFiYGhkcWx2bWc5d3pzZj4hd2Z7dyxgcHAhIyw9XHRuZndiI3NxbHNmcXd6PiFsZDl3P2ptc3Z3I3d6c2Y+IXdme3chIyNwd3pvZj4hd2Z7dy5ib2pkbTl3a2YjZ2Z1Zm9sc25mbXcjbGUjd3pvZnBrZmZ3ISN3enNmPiF3Zmt3bm84I2BrYnFwZnc+dndlLjtqcCNgbG1wamdmcWZnI3dsI2Fmd2Jhb2YjdGpnd2s+ITIzMyYhI0ptI2JnZ2p3amxtI3dsI3drZiNgbG13cWphdndmZyN3bCN3a2YjZ2plZWZxZm1gZnAjYWZ3dGZmbWdmdWZvbHNuZm13I2xlI3drZiNKdyNqcCNqbnNscXdibXcjd2wjPyxwYHFqc3c9XHRcdD9wYHFqc3cjI3B3em9mPiFlbG13LnBqeWY5Mj0/LHBzYm09P3BzYm0jamc+ZGFPamFxYnF6I2xlI0BsbWRxZnBwP2puZCNwcWA+IWt3d3M5LCxqbkZtZG9qcGsjd3FibXBvYndqbG1CYGJnZm56I2xlI1BgamZtYGZwZ2p1I3B3em9mPiFnanBzb2J6OWBsbXB3cXZgd2psbSNsZSN3a2YtZGZ3Rm9mbmZtd0F6Smcramcqam0jYGxtaXZtYHdqbG0jdGp3a0ZvZm5mbXcrJHBgcWpzdyQqOCM/bmZ3YiNzcWxzZnF3ej4hbGQ5PH09ZjxXPF88XFw9bD1tPFY8VFx0I3d6c2Y+IXdme3chI21ibmY+IT1TcWp1YmB6I1Nsb2pgej8sYj1iZ25qbWpwd2ZxZmcjYXojd2tmZm1iYW9mUGptZG9mUWZydmZwd3B3em9mPiVydmx3OG5icWRqbTk/LGdqdT0/LGdqdT0/LGdqdT0/PT9qbmQjcHFgPiFrd3dzOSwsaiNwd3pvZj4lcnZsdzhlb2xidzlxZmVmcXFmZyN3bCNicCN3a2Yjd2x3Ym8jc2xzdm9id2psbSNsZWptI1RicGtqbWR3bG0vI0ctQC0jcHd6b2Y+IWFiYGhkcWx2bWcuYm5sbWQjbHdrZnEjd2tqbWRwL2xxZGJtanlid2psbSNsZSN3a2ZzYnF3amBqc2J3Zmcjam0jd2tmd2tmI2ptd3FsZ3Zgd2psbSNsZWpnZm13amVqZmcjdGp3ayN3a2ZlamB3amxtYm8jYGticWJgd2ZxI0x7ZWxxZyNWbWp1ZnFwand6I25qcHZtZ2ZxcHdibWdqbWQjbGVXa2ZxZiNicWYvI2tsdGZ1ZnEvcHd6b2Zwa2ZmdyEja3FmZT4hLEBsb3ZuYWpiI1ZtanVmcXBqd3pme3NibWdmZyN3bCNqbWBvdmdmdnB2Ym9veiNxZmVmcXFmZyN3bGptZ2pgYndqbWQjd2tidyN3a2ZrYnVmI3B2ZGRmcHdmZyN3a2J3YmVlam9qYndmZyN0andrI3drZmBscXFmb2J3amxtI2Fmd3RmZm1tdm5hZnEjbGUjZ2plZWZxZm13PT8sd2c9Pyx3cT0/LHdiYW9mPVFmc3Zhb2pgI2xlI0pxZm9ibWdcdD8scGBxanN3PVx0P3BgcWpzdyN2bWdmcSN3a2Yjam1lb3ZmbWBmYGxtd3FqYXZ3amxtI3dsI3drZkxlZWpgamJvI3RmYXBqd2YjbGVrZmJncnZicXdmcXAjbGUjd2tmYGZtd2ZxZmcjYnFsdm1nI3drZmpuc29qYGJ3amxtcCNsZSN3a2ZrYnVmI2FmZm0jZ2Z1Zm9sc2ZnRWZnZnFibyNRZnN2YW9qYCNsZWFmYGJuZiNqbWBxZmJwam1kb3pgbG13am12YndqbG0jbGUjd2tmTWx3Zi8ja2x0ZnVmcS8jd2tid3BqbmpvYnEjd2wjd2tidyNsZSNgYnNiYWpvandqZnAjbGUjd2tmYmBgbHFnYm1gZiN0andrI3drZnNicXdqYGpzYm13cCNqbSN3a2ZldnF3a2ZxI2dmdWZvbHNuZm13dm1nZnEjd2tmI2dqcWZgd2psbWpwI2xld2ZtI2BsbXBqZ2ZxZmdranAjemx2bWRmcSNhcWx3a2ZxPyx3Zz0/LHdxPT8sd2Jhb2Y9P2Ija3d3cy5mcnZqdT4hWy5WQi5za3pwamBibyNzcWxzZnF3amZwbGUjQXFqd2pwayNAbG92bmFqYmticCNhZmZtI2BxandqYGp5ZmcrdGp3ayN3a2YjZntgZnN3amxtcnZmcHdqbG1wI2JhbHZ3I3drZnNicHBqbWQjd2txbHZkayN3a2YzISNgZm9vc2JnZ2ptZD4hMyEjd2tsdnBibWdwI2xlI3NmbHNvZnFmZ2pxZmB3cCNrZnFmLSNFbHFrYnVmI2Bram9ncWZtI3ZtZ2ZxJjBGJjBALHBgcWpzdyYwRiEqKjg/YiNrcWZlPiFrd3dzOSwsdHR0LT9vaj0/YiNrcWZlPiFrd3dzOSwscGp3ZlxcbWJuZiEjYGxtd2Ztdz4hd2Z7dy5nZmBscWJ3amxtOW1sbWZwd3pvZj4hZ2pwc29iejkjbWxtZj9uZndiI2t3d3MuZnJ2anU+IVsubWZ0I0did2YrKi1kZndXam5mKyojd3pzZj4ham5iZGYsey5qYGxtIT8scHNibT0/cHNibSNgb2JwcD4hb2JtZHZiZGY+IWlidWJwYHFqc3d0am1nbHQtb2xgYndqbG0ta3FmZT9iI2txZmU+IWlidWJwYHFqc3c5Li49Dlx0P3BgcWpzdyN3enNmPiF3P2Ija3FmZT4ka3d3czksLHR0dC1rbHF3YHZ3I2pgbG0hI2txZmU+IT8sZ2p1PQ5cdD9nanUjYG9icHA+IT9wYHFqc3cjcHFgPiFrd3dzOSwsISNxZm8+IXB3em9mcGtmZnchI3c/LGdqdT1cdD9wYHFqc3cjd3pzZj4sYj0jP2Ija3FmZT4ha3d3czksLCNib29sdFdxYm1wc2JxZm1gej4hWy5WQi5AbG5zYndqYW9mISNgbG1xZm9id2psbXBranMjYWZ3dGZmbVx0PyxwYHFqc3c9Dlx0P3BgcWpzdyM/LGI9Pyxvaj0/LHZvPT8sZ2p1PWJwcGxgamJ3ZmcjdGp3ayN3a2Yjc3FsZHFibm5qbWQjb2JtZHZiZGY/LGI9P2Ija3FmZT4ha3d3czksLD8sYj0/LG9qPT9vaiNgb2JwcD4hZWxxbiNiYHdqbG0+IWt3d3M5LCw/Z2p1I3B3em9mPiFnanBzb2J6OXd6c2Y+IXdme3chI21ibmY+IXIhP3diYW9mI3RqZ3drPiEyMzMmISNhYmBoZHFsdm1nLnNscGp3amxtOSEjYWxxZ2ZxPiEzISN0amd3az4hcWZvPiFwa2xxd2B2dyNqYGxtISNrNT0/dm89P29qPT9iI2txZmU+ISMjP25md2Ija3d3cy5mcnZqdT4hYHBwISNuZmdqYj4hcGBxZmZtISNxZnBzbG1wamFvZiNlbHEjd2tmIyEjd3pzZj4hYnNzb2pgYndqbG0sISNwd3pvZj4hYWJgaGRxbHZtZy5rd25vOCNga2JxcGZ3PnZ3ZS47ISNib29sdHdxYm1wc2JxZm1gej4hcHd6b2Zwa2ZmdyEjd3pzZj4hd2YOXHQ/bmZ3YiNrd3dzLmZydmp1PiE9Pyxwc2JtPT9wc2JtI2BvYnBwPiEzISNgZm9vcHNiYGptZD4hMyE9OFx0PyxwYHFqc3c9XHQ/cGBxanN3I3BsbmZ3am5mcCNgYm9vZmcjd2tmZ2xmcCNtbHcjbWZgZnBwYnFqb3pFbHEjbmxxZiNqbWVscW5id2psbWJ3I3drZiNhZmRqbW1qbWQjbGUjPyJHTEBXWlNGI2t3bm89P2t3bm9zYnF3amB2b2Jxb3ojam0jd2tmI3d6c2Y+IWtqZ2dmbSEjbWJuZj4haWJ1YnBgcWpzdzl1bGpnKzMqOCFmZWVmYHdqdWZtZnBwI2xlI3drZiNidndsYGxuc29md2Y+IWxlZSEjZGZtZnFib296I2BsbXBqZ2ZxZmc9P2ptc3Z3I3d6c2Y+IXdme3chIyE9PyxwYHFqc3c9Dlx0P3BgcWpzd3drcWx2ZGtsdncjd2tmI3RscW9nYGxubmxtI25qcGBsbWBmc3dqbG1icHBsYGpid2psbSN0andrI3drZj8sZ2p1PVx0PyxnanU9XHQ/Z2p1I2BndnFqbWQja2pwI29qZWZ3am5mL2BscXFmcHNsbWdqbWQjd2wjd2tmd3pzZj4ham5iZGYsey5qYGxtISNibSNqbWBxZmJwam1kI212bmFmcWdqc29sbmJ3amAjcWZvYndqbG1wYnFmI2xld2ZtI2BsbXBqZ2ZxZmduZndiI2BrYnFwZnc+IXZ3ZS47ISM/am1zdncjd3pzZj4hd2Z7dyEjZntibnNvZnAjam1gb3ZnZiN3a2YhPT9qbmQjcHFgPiFrd3dzOSwsanNicXdqYGpzYndqbG0jam0jd2tmd2tmI2Zwd2Jhb2pwa25mbXcjbGVcdD8sZ2p1PVx0P2dqdSNgb2JwcD4hJWJuczhtYXBzOCVibnM4bWFwczh3bCNnZndmcW5qbWYjdGtmd2tmcXJ2andmI2dqZWVmcWZtdyNlcWxubmJxaGZnI3drZiNhZmRqbW1qbWRnanB3Ym1gZiNhZnd0ZmZtI3drZmBsbXdxamF2d2psbXAjd2wjd2tmYGxtZW9qYHcjYWZ3dGZmbSN3a2Z0amdmb3ojYGxtcGpnZnFmZyN3bHRicCNsbWYjbGUjd2tmI2VqcXB3dGp3ayN1YnF6am1kI2dmZHFmZnBrYnVmI3BzZmB2b2J3Zmcjd2tidytnbGB2bmZtdy1kZndGb2ZuZm13c2Jxd2pganNid2ptZCNqbSN3a2ZscWpkam1ib296I2dmdWZvbHNmZ2Z3YiNga2JxcGZ3PiF2d2UuOyE9I3d6c2Y+IXdme3csYHBwISMsPVx0am13ZnFga2JtZGZiYW96I3Rqd2tubHFmI2BvbHBmb3ojcWZvYndmZ3BsYGpibyNibWcjc2xvandqYGJvd2tidyN0bHZvZyNsd2tmcXRqcGZzZnFzZm1namB2b2JxI3dsI3drZnB3em9mI3d6c2Y+IXdme3csYHBwd3pzZj4hcHZhbmp3ISNtYm5mPiFlYm5qb2pmcCNxZnBqZ2ptZCNqbWdmdWZvbHNqbWQjYGx2bXdxamZwYGxuc3Z3ZnEjc3FsZHFibm5qbWRmYGxtbG5qYCNnZnVmb2xzbmZtd2dmd2ZxbmptYndqbG0jbGUjd2tmZWxxI25scWYjam1lbHFuYndqbG1sbSNwZnVmcWJvI2xgYGJwamxtcHNscXd2ZHYvRnAjK0Z2cWxzZnYqPE88Vj1sPFxcPXs8UT1tPWA8VjxcXD1vPFY9bDxcXD17PFE9bT1gPFY8XFw8TDxSPW09bTxUPFU9bTxWPFI8VTxQPFxcPW48WT1sPFQ8XFw8VzxSPF48VDxRPWg8Uj1sPFA8XFw9ajxUPFQ9bzxTPWw8XFw8XjxXPFk8UTxUPWM8UTxZPFI8XT1pPFI8WDxUPFA8UjxUPFE9aDxSPWw8UDxcXD1qPFQ9Yzx0PFE9aDxSPWw8UDxcXD1qPFQ9YzxMPFk9bTxTPW88XTxXPFQ8VjxUPFY8UjxXPFQ9azxZPW09bjxePFI8VDxRPWg8Uj1sPFA8XFw9ajxUPWI9bjxZPWw9bDxUPW48Uj1sPFQ8VDxYPFI9bT1uPFxcPW48Uj1rPFE8UjRLNWg1aTRGNWQ0SzRANEM1ZDVqNEs1aDRLNFg0RjRdNEs1bzRLNEY0SzVoNEs1bjRGNF00SzRBNEs0Rmt3bm84I2BrYnFwZnc+VldFLjshI3Bmd1dqbmZsdncrZXZtYHdqbG0rKmdqcHNvYno5am1vam1mLmFvbGBoOD9qbXN2dyN3enNmPiFwdmFuanchI3d6c2YjPiMkd2Z7dyxpYnVicGBxaj9qbmQjcHFgPiFrd3dzOSwsdHR0LSEjIWt3d3M5LCx0dHQtdDAtbHFkLHBrbHF3YHZ3I2pgbG0hI2txZmU+ISEjYnZ3bGBsbnNvZndmPiFsZWUhIz8sYj0/LGdqdT0/Z2p1I2BvYnBwPj8sYj0/LG9qPVx0P29qI2BvYnBwPiFgcHAhI3d6c2Y+IXdme3csYHBwISM/ZWxxbiNiYHdqbG0+IWt3d3M5LCx7dyxgcHAhI2txZmU+IWt3d3M5LCxvam1oI3Fmbz4hYm93ZnFtYndmISMOXHQ/cGBxanN3I3d6c2Y+IXdme3csI2xtYG9qYGg+IWlidWJwYHFqc3c5K21mdCNHYndmKi1kZndXam5mKyp+a2ZqZGt3PiEyISN0amd3az4hMiEjU2Zsc29mJHAjUWZzdmFvamAjbGUjIz9iI2txZmU+IWt3d3M5LCx0dHQtd2Z7dy5nZmBscWJ3amxtOXZtZ2Zxd2tmI2FmZGptbWptZCNsZSN3a2YjPyxnanU9XHQ/LGdqdT1cdD8sZ2p1PVx0ZnB3YmFvanBrbmZtdyNsZSN3a2YjPyxnanU9PyxnanU9PyxnanU9PyxnIHVqZnRzbHF3eG5qbS5rZmpka3c5XHQ/cGBxanN3I3BxYD4ha3d3czksLGxzd2psbT0/bHN3amxtI3Vib3ZmPmxld2ZtI3FmZWZxcWZnI3dsI2JwIyxsc3dqbG09XHQ/bHN3amxtI3Vib3Y/IkdMQFdaU0Yja3dubz1cdD8iLi5YSm13ZnFtYndqbG1ibyNCanFzbHF3PVx0P2Ija3FmZT4ha3d3czksLHR0dD8sYj0/YiNrcWZlPiFrd3dzOSwsdFxmVExcZlReXGZURVxmVF5cZlVoXGZUe1xmVE5ccm9JXHJvfFxyb0xccm97XHJvT1xyb3Zccm90XG5BTwVHeFxiVEFcbnprIytcdlVtBUd4KlxmSERcZkhTXGZIXFxcZklhXGZISlxmSWtcZkhaXGZITVxmSFJcZkhlXGZIRFxmSF5cZklnXGZITVxmSHlcZklhXGZIW1xmSWtcZkhIXGZJYVxmSFxcXGZIcFxmSFJcZkhEXGZIeVxmSFJcZkhcXFxmSWxcZkhUXGZIblxmSEBcZkhuXGZIS1xmSFNcZkhIXGZIVFxmSWFcZkhJXGZIUlxmSEZcZkhEXGZIUlxmSFRcZklhXGZIWVxmSWxcZkh5XGZIUlxmSFxcXGZIVFxmSG5cZkhUXGZJYVxmSHlcZkhcXFxmSE9cZkhUXGZIUlxmSEJcZkh7XGZJYVxmSFxcXGZJbFxmSHZcZkhTXGZIc1xmSWFcZkhMXGZJZ1xmSG5cZkhZXGZIU1xmSHBcZklhXGZIclxmSFJcZkhEXGZIaVxmSEJcZklrXGZIXFxcZkhTXGZIeVxmSFJcZkhZXGZIU1xmSEFcZkhTXGZIRFxmSWFcZkhEXGZIe1xmSFJcZkhNXGZIU1xmSENcZkhSXGZIbVxmSHlcZklhXGZIQ1xmSWdcZkhuXGZIeVxmSFNcZkhUXGZJbVxmSFxcXGZIeVxmSWFcZkhbXGZIUlxmSEZcZkhVXGZJbVxmSG1cZkh2XGZISFxmSWxcZkhGXGZJYVxmSFxcXGZIQFxmSG5cZkhLXGZIRFxmSHNcZkhTXGZIRlxmSWFcZkhGXGZIT1xmSWxcZkh5XGZJYVxmSFxcXGZIU1xmSHlcZklrXGZIc1xmSEZcZklhXGZIXFxcZkhSXGZIXFxcZkhuXGZIQVxmSEZcZklhXGZIXFxcZkhSXGZIRlxmSWFcZkhIXGZIQlxmSFJcZkheXGZIU1xmSHlcZklnXGZIblxmSFxcXGZIR1xmSFBcZklhXGZISFxmSFJcZkhcXFxmSERcZkhTXGZIXFxcZklhXGZIQlxmSFJcZkhPXGZIXlxmSFNcZkhCXGZIU1xmSHNcZklrXGZITWdmcGBxanN3amxtISNgbG13Zm13PiFnbGB2bmZtdy1vbGBid2psbS1zcWx3LWRmd0ZvZm5mbXdwQXpXYmRNYm5mKz8iR0xAV1pTRiNrd25vPVx0P2t3bm8jP25md2IjYGticXBmdz4hdndlLjshPTl2cW8hI2BsbXdmbXc+IWt3d3M5LCwtYHBwISNxZm8+IXB3em9mcGtmZnchcHd6b2Yjd3pzZj4hd2Z7dyxgcHAhPXd6c2Y+IXdme3csYHBwISNrcWZlPiF0MC1scWQsMjo6Oix7a3dubyEje25vd3pzZj4hd2Z7dyxpYnVicGBxanN3ISNuZndrbGc+IWRmdyEjYmB3amxtPiFvam1oI3Fmbz4hcHd6b2Zwa2ZmdyEjIz4jZ2xgdm5mbXctZGZ3Rm9mbmZtd3d6c2Y+IWpuYmRmLHsuamBsbSEjLD1gZm9vc2JnZ2ptZD4hMyEjYGZvb3BzLWBwcCEjd3pzZj4hd2Z7dyxgcHAhIz8sYj0/LG9qPT9vaj0/YiNrcWZlPiEhI3RqZ3drPiEyISNrZmpka3c+ITIhIT0/YiNrcWZlPiFrd3dzOSwsdHR0LXB3em9mPiFnanBzb2J6OW1sbWY4IT1ib3dmcW1id2YhI3d6c2Y+IWJzc29qLiwsVDBALCxHV0cjW0tXTk8jMi0zI2Zvb3BzYmBqbWQ+ITMhI2Bmb29zYmcjd3pzZj4ha2pnZ2ZtISN1Ym92Zj4hLGI9JW1hcHM4P3BzYm0jcWxvZj4hcFx0P2ptc3Z3I3d6c2Y+IWtqZ2dmbSEjb2JtZHZiZGY+IUlidWJQYHFqc3chIyNnbGB2bmZtdy1kZndGb2ZuZm13cEFkPiEzISNgZm9vcHNiYGptZD4hMyEjenNmPiF3Znt3LGBwcCEjbmZnamI+IXd6c2Y+JHdme3csaWJ1YnBgcWpzdyR0andrI3drZiNme2Bmc3dqbG0jbGUjenNmPiF3Znt3LGBwcCEjcWZvPiFwdyNrZmpka3c+ITIhI3RqZ3drPiEyISM+JChmbWBsZ2ZWUUpAbG5zbG1mbXcrP29qbWgjcWZvPiFib3dmcW1id2YhI1x0YWxnei8jd3EvI2ptc3Z3LyN3Znt3bmZ3YiNtYm5mPiFxbGFsd3AhI2BsbW5md2tsZz4hc2xwdyEjYmB3amxtPiE9XHQ/YiNrcWZlPiFrd3dzOSwsdHR0LWBwcCEjcWZvPiFwd3pvZnBrZmZ3ISM/LGdqdT0/LGdqdT0/Z2p1I2BvYnBwb2JtZHZiZGY+IWlidWJwYHFqc3chPWJxamIua2pnZ2ZtPiF3cXZmIT0uWz9xanN3ISN3enNmPiF3Znt3LGlidWJwbz4zOH4qKyo4XHQrZXZtYHdqbG0rKnhhYmBoZHFsdm1nLmpuYmRmOSN2cW8rLGI9Pyxvaj0/b2o9P2Ija3FmZT4ha1xuXG4/b2o9P2Ija3FmZT4ha3d3czksLGJ3bHEhI2JxamIua2pnZ2ZtPiF3cXY9Iz9iI2txZmU+IWt3d3M5LCx0dHQtb2JtZHZiZGY+IWlidWJwYHFqc3chIyxsc3dqbG09XHQ/bHN3amxtI3Vib3ZmLGdqdT0/LGdqdT0/Z2p1I2BvYnBwPnFid2xxISNicWpiLmtqZ2dmbT4hd3FmPittZnQjR2J3ZiotZGZ3V2puZisqc2xxd3Zkdi9GcCMrZ2wjQXFicGpvKjxSPWw8XzxcXDxRPFQ8WzxcXD1qPFQ8VDxePFI8WzxQPFI8WjxRPFI9bT1uPWA8UjxdPWw8XFw8WzxSPF48XFw8UTxUPWM9bDxZPF88VD1tPW49bDxcXD1qPFQ8VDxePFI8WzxQPFI8WjxRPFI9bT1uPFQ8UjxdPWM8WzxcXD1uPFk8Vz1gPFE8XFw/IkdMQFdaU0Yja3dubyNTVkFPSkAjIW13Lld6c2YhI2BsbXdmbXc+IXdme3csP25md2Ija3d3cy5mcnZqdT4hQGxtd2ZxYm1wandqbG1ibywsRk0hIyFrd3dzOT9rd25vI3tub21wPiFrd3dzOSwsdHR0LiwsVDBALCxHV0cjW0tXTk8jMi0zI1dHV0cse2t3bm8yLndxYm1wandqbG1ibywsdHR0LXQwLWxxZCxXUSx7a3dubzIsc2YjPiMkd2Z7dyxpYnVicGBxanN3JDg/bmZ3YiNtYm5mPiFnZnBgcWpzd2psbXNicWZtd01sZ2Ytam1wZnF3QWZlbHFmP2ptc3Z3I3d6c2Y+IWtqZ2dmbSEjbWJpcCEjd3pzZj4hd2Z7dyxpYnVicGBxaitnbGB2bmZtdyotcWZiZ3orZXZtYHdqcGBxanN3I3d6c2Y+IXdme3csaWJ1YnBqbmJkZiEjYGxtd2Ztdz4ha3d3czksLFZCLkBsbnNid2phb2YhI2BsbXdmbXc+d25vOCNga2JxcGZ3PnZ3ZS47ISMsPVx0b2ptaCNxZm8+IXBrbHF3YHZ3I2pgbG0/b2ptaCNxZm8+IXB3em9mcGtmZnchIz8scGBxanN3PVx0P3BgcWpzdyN3enNmPj4jZ2xgdm5mbXctYHFmYndmRm9mbmZtP2Ijd2JxZGZ3PiFcXGFvYm1oISNrcWZlPiNnbGB2bmZtdy1kZndGb2ZuZm13cEFqbXN2dyN3enNmPiF3Znt3ISNtYm5mPmItd3pzZiM+IyR3Znt3LGlidWJwYHFqbXN2dyN3enNmPiFramdnZm0hI21ibmZrd25vOCNga2JxcGZ3PnZ3ZS47ISMsPWd3ZyE9XHQ/a3dubyN7bm9tcD4ha3d3cy4sLFQwQCwsR1dHI0tXTk8jNy0zMiNXZm13cEF6V2JkTWJuZiskcGBxanN3JCpqbXN2dyN3enNmPiFramdnZm0hI21ibj9wYHFqc3cjd3pzZj4hd2Z7dyxpYnVicCEjcHd6b2Y+IWdqcHNvYno5bWxtZjghPWdsYHZuZm13LWRmd0ZvZm5mbXdBekpnKz5nbGB2bmZtdy1gcWZid2ZGb2ZuZm13KyQjd3pzZj4kd2Z7dyxpYnVicGBxanN3JGptc3Z3I3d6c2Y+IXdme3chI21ibmY+IWctZGZ3Rm9mbmZtd3BBeldiZE1ibmYrcG1qYGJvISNrcWZlPiFrd3dzOSwsdHR0LUAsLEdXRyNLV05PIzctMzIjV3FibXBqdz9wd3pvZiN3enNmPiF3Znt3LGBwcCE9XHRcdD9wd3pvZiN3enNmPiF3Znt3LGBwcCE9amxtYm8tZ3dnIT1cdD9rd25vI3tub21wPmt3d3MuZnJ2anU+IUBsbXdmbXcuV3pzZmdqbWQ+ITMhI2Bmb29wc2Jgam1kPiEzIWt3bm84I2BrYnFwZnc+dndlLjshIyw9XHQjcHd6b2Y+IWdqcHNvYno5bWxtZjghPT8/b2o9P2Ija3FmZT4ha3d3czksLHR0dC0jd3pzZj4kd2Z7dyxpYnVicGBxanN3JD08WDxZPWM9bjxZPFc9YDxRPFI9bT1uPFQ9bTxSPFI9bjxePFk9bj1tPW48XjxUPFQ8Uz1sPFI8VDxbPF48UjxYPW09bjxePFxcPF08WTxbPFI8UzxcXD1tPFE8Uj1tPW48VFxmSEZcZkltXGZIVFxmSWFcZkhIXGZIU1xmSHlcZkhSXGZIeVxmSFJcZkhuXGZIe1xmSWFcZkhcXFxmSWtcZkhUXGZIZVxmSERcZklhXGZIVVxmSWdcZkhuXGZIRFxmSWtcZkhZXGZIU1xmSEtcZkhSXGZIRFxmSFRcZkhBXGZIUlxmSEdcZkhTXGZIeVxmSWFcZkhUXGZIU1xmSG5cZkh7XGZIVFxmSW1cZkhcXFxmSHlcZklhXGZIW1xmSFNcZkhIXGZIeVxmSWVcZkhGXGZJbFxmSFxcXGZIUlxmSGtcZkhzXGZIWVxmSFNcZkhwXGZJYVxmSHJcZkhSXGZIRlxmSERcZkh5XGZIUlxmSFxcXGZJYVxmSFxcXGZIWVxmSFJcZkhkXGZIVFxmSHlcZklhXGZIXFxcZkhTXGZIQ1xmSEhcZkhSJywi27clxownVCXChSdXJcOXJU8lZyXCpibGkyXHpSY+JiomJyZeJsKIxbjgsL4mxq0mxpImKSZeJiUmJybCgiZQJjEmwrEmMyZdJm0mdSZFJnQmQybDjyZWJlYmLyY+JjYm4L224Z28byZwJkAmRSZNJlAmeCZAJkYmZSbDjCY3JjomKCZEJjAmQyYpJi4mRiYtJjEmKCZMJkYmMcmeKs+q4oezJuGNsiZLJjsmKSZFJkgmUCYwJj8mOSZWJsKBJi0mdiZhJiwmRSYpJj8mPSYnJicmQibgtK4m1IMmzJYqJio4JiUmJSYmJiUsKSbCmiY+JsKGJjcmXSZGJjImPiZKJjYmbiYyJiUmPybCjiYyJjYmSiZnJi0mMCYsJiomSiYqJk8mKSY2JigmPCZCJk4mLiZQJkAmMiYuJlcmTSYl1LzChCgsKDwmLCbPmibho4cmLSYsKCUmKCYlJijEuzAmWCZEJsKBJmomJyZKJigmLiZCJjMmWiZSJmgmMyZFJkUmPMOGLc2g4buzJiU4PyZAJiwmWiZAJjAmSiYsJl4meCZfJjYmQyY2JkPcrOKopSZmJi0mLSYtJi0mLCZKJjImOCZ6JjgmQyZZJjgmLSZkJuG5uMOMLSY3JjEmRiY3JnQmVyY3JkkmLiYuJl4mPeC+nOGnkyY4KD4mLyYvJt27Jykn4YGlJyknJUAvJjAmJdC+4KeAKiYqQCZD1L3XlMm016s04LeX3JrTkTbgtoQmL8W4zINaJiolyYbPvybEtCYxwqjStMW0IixnLCJBQUFBS0tMTEtLS0tLSkpJSEhJSEhHR0ZGIik7IWZ1bmN0aW9uIHNldERhdGEoZSx0KXtjb25zdCBuPW0sYT1wO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7KytlKWFbZV09dFtlXTtsZXQgcz0wO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7KytlKXtuW2VdPXM7Y29uc3QgdD1hW2VdOzAhPT10JiYocys9ZTw8KDMxJnQpKX1mb3IobGV0IGU9dC5sZW5ndGg7ZTwzMjsrK2UpbltlXT1zO3U9ZX0oZCxnKTtmdW5jdGlvbiBJbnB1dFN0cmVhbShlKXt0aGlzLmRhdGE9bmV3IEludDhBcnJheSgwKTt0aGlzLm9mZnNldD0wO3RoaXMuZGF0YT1lfWZ1bmN0aW9uIHJlYWRJbnB1dChlLHQsbixhKXtpZihudWxsPT09ZS5pbnB1dClyZXR1cm4tMTtjb25zdCBzPWUuaW5wdXQscj1NYXRoLm1pbihzLm9mZnNldCthLHMuZGF0YS5sZW5ndGgpLGk9ci1zLm9mZnNldDt0LnNldChzLmRhdGEuc3ViYXJyYXkocy5vZmZzZXQsciksbik7cy5vZmZzZXQrPWk7cmV0dXJuIGl9ZnVuY3Rpb24gdG9VdGY4UnVuZXMoZSl7Y29uc3QgdD1lLmxlbmd0aCxuPW5ldyBJbnQzMkFycmF5KHQpO2ZvcihsZXQgYT0wO2E8dDsrK2EpblthXT1lLmNoYXJDb2RlQXQoYSk7cmV0dXJuIG59ZnVuY3Rpb24gbWFrZUVycm9yKGUsdCl7aWYodD49MClyZXR1cm4gdDtlLnJ1bm5pbmdTdGF0ZT49MCYmKGUucnVubmluZ1N0YXRlPXQpO3Rocm93IG5ldyBFcnJvcigiQnJvdGxpIGVycm9yIGNvZGU6ICIrdCl9cmV0dXJuIGZ1bmN0aW9uIGRlY29kZShlLHQpe2xldCBuPW5ldyBTdGF0ZTtuLmlucHV0PW5ldyBJbnB1dFN0cmVhbShlKTtpbml0U3RhdGUobik7aWYodCl7bGV0IGU9dC5jdXN0b21EaWN0aW9uYXJ5O2UmJmZ1bmN0aW9uIGF0dGFjaERpY3Rpb25hcnlDaHVuayhlLHQpe2lmKDEhPT1lLnJ1bm5pbmdTdGF0ZSlyZXR1cm4gbWFrZUVycm9yKGUsLTI0KTtpZigwPT09ZS5jZE51bUNodW5rcyl7ZS5jZENodW5rcz1uZXcgQXJyYXkoMTYpO2UuY2RDaHVua09mZnNldHM9bmV3IEludDMyQXJyYXkoMTYpO2UuY2RCbG9ja0JpdHM9LTF9aWYoMTU9PT1lLmNkTnVtQ2h1bmtzKXJldHVybiBtYWtlRXJyb3IoZSwtMjcpO2UuY2RDaHVua3NbZS5jZE51bUNodW5rc109dDtlLmNkTnVtQ2h1bmtzKys7ZS5jZFRvdGFsU2l6ZSs9dC5sZW5ndGg7ZS5jZENodW5rT2Zmc2V0c1tlLmNkTnVtQ2h1bmtzXT1lLmNkVG90YWxTaXplO3JldHVybiAwfShuLGUpfWxldCBhPTAscz1bXTtmb3IoOzspe2xldCBlPW5ldyBJbnQ4QXJyYXkoMTYzODQpO3MucHVzaChlKTtuLm91dHB1dD1lO24ub3V0cHV0T2Zmc2V0PTA7bi5vdXRwdXRMZW5ndGg9MTYzODQ7bi5vdXRwdXRVc2VkPTA7ZGVjb21wcmVzcyhuKTthKz1uLm91dHB1dFVzZWQ7aWYobi5vdXRwdXRVc2VkPDE2Mzg0KWJyZWFrfSFmdW5jdGlvbiBjbG9zZShlKXtpZigwPT09ZS5ydW5uaW5nU3RhdGUpcmV0dXJuIG1ha2VFcnJvcihlLC0yNSk7ZS5ydW5uaW5nU3RhdGU+MCYmKGUucnVubmluZ1N0YXRlPTExKTtyZXR1cm4gMH0obik7IWZ1bmN0aW9uIGNsb3NlSW5wdXQoZSl7ZS5pbnB1dD1uZXcgSW5wdXRTdHJlYW0obmV3IEludDhBcnJheSgwKSl9KG4pO2xldCByPW5ldyBJbnQ4QXJyYXkoYSksaT0wO2ZvcihsZXQgZT0wO2U8cy5sZW5ndGg7KytlKXtsZXQgdD1zW2VdLG49TWF0aC5taW4oYSxpKzE2Mzg0KS1pO248MTYzODQ/ci5zZXQodC5zdWJhcnJheSgwLG4pLGkpOnIuc2V0KHQsaSk7aSs9bn1yZXR1cm4gcn19KSgpO2NsYXNzIEJyb3RsaVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXsjVz0hMDtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyZWFtLmdldEJ5dGVzKCksdD1abihuZXcgSW50OEFycmF5KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmxlbmd0aCkpO3RoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0Lmxlbmd0aCk7dGhpcy5idWZmZXJMZW5ndGg9dGhpcy5idWZmZXIubGVuZ3RoO3RoaXMuZW9mPSEwfWFzeW5jIGdldEltYWdlRGF0YShlLHQpe2NvbnN0IG49YXdhaXQgdGhpcy5hc3luY0dldEJ5dGVzKCk7cmV0dXJuIG4/bi5sZW5ndGg8PWU/bjpuLnN1YmFycmF5KDAsZSk6dGhpcy5nZXRCeXRlcyhlKX1hc3luYyBhc3luY0dldEJ5dGVzKCl7Y29uc3R7ZGVjb21wcmVzc2VkOmUsY29tcHJlc3NlZDp0fT1hd2FpdCB0aGlzLmFzeW5jR2V0Qnl0ZXNGcm9tRGVjb21wcmVzc2lvblN0cmVhbSgiYnJvdGxpIik7aWYoZSlyZXR1cm4gZTt0aGlzLiNXPSExO3RoaXMuc3RyZWFtPW5ldyBTdHJlYW0odCwwLHQubGVuZ3RoLHRoaXMuc3RyZWFtLmRpY3QpO3RoaXMucmVzZXQoKTtyZXR1cm4gbnVsbH1nZXQgaXNBc3luYygpe3JldHVybiB0aGlzLiNXfX1jb25zdCBlYT1hc3luYyBmdW5jdGlvbiBKQmlnMihlPXt9KXt2YXIgdD1lLHF1aXRfPShlLHQpPT57dGhyb3cgdH0sbj1pbXBvcnQubWV0YS51cmw7dHJ5e25ldyBVUkwoIi4iLG4pLmhyZWZ9Y2F0Y2h7fTA7Y29uc29sZS5sb2cuYmluZChjb25zb2xlKTt2YXIgYSxzLHIsaSxvLGw9Y29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpLGY9ITEsYz0hMTtmdW5jdGlvbiB1cGRhdGVNZW1vcnlWaWV3cygpe3ZhciBlPXUuYnVmZmVyO2k9bmV3IEludDhBcnJheShlKTtuZXcgSW50MTZBcnJheShlKTtvPW5ldyBVaW50OEFycmF5KGUpO25ldyBVaW50MTZBcnJheShlKTtuZXcgSW50MzJBcnJheShlKTtuZXcgVWludDMyQXJyYXkoZSk7bmV3IEZsb2F0MzJBcnJheShlKTtuZXcgRmxvYXQ2NEFycmF5KGUpO25ldyBCaWdJbnQ2NEFycmF5KGUpO25ldyBCaWdVaW50NjRBcnJheShlKX1jbGFzcyBFeGl0U3RhdHVze25hbWU9IkV4aXRTdGF0dXMiO2NvbnN0cnVjdG9yKGUpe3RoaXMubWVzc2FnZT1gUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgke2V9KWA7dGhpcy5zdGF0dXM9ZX19dmFyIGgsdSxjYWxsUnVudGltZUNhbGxiYWNrcz1lPT57Zm9yKDtlLmxlbmd0aD4wOyllLnNoaWZ0KCkodCl9LG09W10sYWRkT25Qb3N0UnVuPWU9Pm0ucHVzaChlKSxwPVtdLGFkZE9uUHJlUnVuPWU9PnAucHVzaChlKSxkPSEwLGc9MCxiPXt9LGhhbmRsZUV4Y2VwdGlvbj1lPT57aWYoZSBpbnN0YW5jZW9mIEV4aXRTdGF0dXN8fCJ1bndpbmQiPT1lKXJldHVybiBhO3F1aXRfKDAsZSl9LGtlZXBSdW50aW1lQWxpdmU9KCk9PmR8fGc+MCxfcHJvY19leGl0PWU9PnthPWU7aWYoIWtlZXBSdW50aW1lQWxpdmUoKSl7dC5vbkV4aXQ/LihlKTtmPSEwfXF1aXRfKDAsbmV3IEV4aXRTdGF0dXMoZSkpfSxfZXhpdD0oZSx0KT0+e2E9ZTtfcHJvY19leGl0KGUpfSxjYWxsVXNlckNhbGxiYWNrPWU9PntpZighZil0cnl7cmV0dXJuIGUoKX1jYXRjaChlKXtoYW5kbGVFeGNlcHRpb24oZSl9ZmluYWxseXsoKCk9PntpZigha2VlcFJ1bnRpbWVBbGl2ZSgpKXRyeXtfZXhpdChhKX1jYXRjaChlKXtoYW5kbGVFeGNlcHRpb24oZSl9fSkoKX19LGFsaWduTWVtb3J5PShlLHQpPT5NYXRoLmNlaWwoZS90KSp0LGdyb3dNZW1vcnk9ZT0+e3ZhciB0PShlLXUuYnVmZmVyLmJ5dGVMZW5ndGgrNjU1MzUpLzY1NTM2fDA7dHJ5e3UuZ3Jvdyh0KTt1cGRhdGVNZW1vcnlWaWV3cygpO3JldHVybiAxfWNhdGNoKGUpe319O3Qubm9FeGl0UnVudGltZSYmKGQ9dC5ub0V4aXRSdW50aW1lKTt0LnByaW50JiZ0LnByaW50O3QucHJpbnRFcnImJihsPXQucHJpbnRFcnIpO3Qud2FzbUJpbmFyeSYmdC53YXNtQmluYXJ5O3QuYXJndW1lbnRzJiZ0LmFyZ3VtZW50czt0LnRoaXNQcm9ncmFtJiZ0LnRoaXNQcm9ncmFtO2lmKHQucHJlSW5pdCl7ImZ1bmN0aW9uIj09dHlwZW9mIHQucHJlSW5pdCYmKHQucHJlSW5pdD1bdC5wcmVJbml0XSk7Zm9yKDt0LnByZUluaXQubGVuZ3RoPjA7KXQucHJlSW5pdC5zaGlmdCgpKCl9dC53cml0ZUFycmF5VG9NZW1vcnk9KGUsdCk9PntpLnNldChlLHQpfTt2YXIgdyxqPXtlOigpPT5mdW5jdGlvbiBhYm9ydChlKXt0Lm9uQWJvcnQ/LihlKTtsKGU9IkFib3J0ZWQoIitlKyIpIik7Zj0hMDtlKz0iLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiI7dmFyIG49bmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcihlKTtyPy4obik7dGhyb3cgbn0oIiIpLGI6KCk9PntkPSExO2c9MH0sYzooZSx0KT0+e2lmKGJbZV0pe2NsZWFyVGltZW91dChiW2VdLmlkKTtkZWxldGUgYltlXX1pZighdClyZXR1cm4gMDt2YXIgbj1zZXRUaW1lb3V0KCgpPT57ZGVsZXRlIGJbZV07Y2FsbFVzZXJDYWxsYmFjaygoKT0+aChlLHBlcmZvcm1hbmNlLm5vdygpKSl9LHQpO2JbZV09e2lkOm4sdGltZW91dF9tczp0fTtyZXR1cm4gMH0sZzpmdW5jdGlvbiBfY3JlYXRlSW1hZ2VEYXRhKGUpe3QuaW1hZ2VEYXRhPW5ldyBVaW50OEFycmF5KGUpfSxkOmU9Pnt2YXIgdD1vLmxlbmd0aCxuPTIxNDc0ODM2NDg7aWYoKGU+Pj49MCk+bilyZXR1cm4hMTtmb3IodmFyIGE9MTthPD00O2EqPTIpe3ZhciBzPXQqKDErLjIvYSk7cz1NYXRoLm1pbihzLGUrMTAwNjYzMjk2KTt2YXIgcj1NYXRoLm1pbihuLGFsaWduTWVtb3J5KE1hdGgubWF4KGUscyksNjU1MzYpKTtpZihncm93TWVtb3J5KHIpKXJldHVybiEwfXJldHVybiExfSxhOl9wcm9jX2V4aXQsaDpmdW5jdGlvbiBfc2V0SW1hZ2VEYXRhKGUsbixhLHMpe2lmKGE9PT1uKXt0LmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoby5zdWJhcnJheShlLGUrYSpzKSk7cmV0dXJufWNvbnN0IHI9bipzLGk9dC5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHIpO2ZvcihsZXQgdD1lLHM9MDtzPHI7dCs9YSxzKz1uKWkuc2V0KG8uc3ViYXJyYXkodCx0K24pLHMpfSxmOmZ1bmN0aW9uIF9zZXRMaW5lRGF0YShlLG4sYSl7dC5pbWFnZURhdGEuc2V0KG8uc3ViYXJyYXkoZSxlK24pLGEpfX07dz1hd2FpdCBhc3luYyBmdW5jdGlvbiBjcmVhdGVXYXNtKCl7ZnVuY3Rpb24gcmVjZWl2ZUluc3RhbmNlKGUsbil7IWZ1bmN0aW9uIGFzc2lnbldhc21FeHBvcnRzKGUpe3QuX21hbGxvYz1lLms7dC5fZnJlZT1lLmw7dC5famJpZzJfZGVjb2RlPWUubTt0Ll9jY2l0dF9kZWNvZGU9ZS5uO2g9ZS5vO3U9ZS5pO2UuX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZX0odz1lLmV4cG9ydHMpO3VwZGF0ZU1lbW9yeVZpZXdzKCk7cmV0dXJuIHd9dmFyIGU9ZnVuY3Rpb24gZ2V0V2FzbUltcG9ydHMoKXtyZXR1cm57YTpqfX0oKTtyZXR1cm4gbmV3IFByb21pc2UoKG4sYSk9Pnt0Lmluc3RhbnRpYXRlV2FzbShlLChlLHQpPT57bihyZWNlaXZlSW5zdGFuY2UoZSkpfSl9KX0oKTshZnVuY3Rpb24gcnVuKCl7IWZ1bmN0aW9uIHByZVJ1bigpe2lmKHQucHJlUnVuKXsiZnVuY3Rpb24iPT10eXBlb2YgdC5wcmVSdW4mJih0LnByZVJ1bj1bdC5wcmVSdW5dKTtmb3IoO3QucHJlUnVuLmxlbmd0aDspYWRkT25QcmVSdW4odC5wcmVSdW4uc2hpZnQoKSl9Y2FsbFJ1bnRpbWVDYWxsYmFja3MocCl9KCk7ZnVuY3Rpb24gZG9SdW4oKXt0LmNhbGxlZFJ1bj0hMDtpZighZil7IWZ1bmN0aW9uIGluaXRSdW50aW1lKCl7Yz0hMDt3LmooKX0oKTtzPy4odCk7dC5vblJ1bnRpbWVJbml0aWFsaXplZD8uKCk7IWZ1bmN0aW9uIHBvc3RSdW4oKXtpZih0LnBvc3RSdW4peyJmdW5jdGlvbiI9PXR5cGVvZiB0LnBvc3RSdW4mJih0LnBvc3RSdW49W3QucG9zdFJ1bl0pO2Zvcig7dC5wb3N0UnVuLmxlbmd0aDspYWRkT25Qb3N0UnVuKHQucG9zdFJ1bi5zaGlmdCgpKX1jYWxsUnVudGltZUNhbGxiYWNrcyhtKX0oKX19aWYodC5zZXRTdGF0dXMpe3Quc2V0U3RhdHVzKCJSdW5uaW5nLi4uIik7c2V0VGltZW91dCgoKT0+e3NldFRpbWVvdXQoKCk9PnQuc2V0U3RhdHVzKCIiKSwxKTtkb1J1bigpfSwxKX1lbHNlIGRvUnVuKCl9KCk7cmV0dXJuIGM/dDpuZXcgUHJvbWlzZSgoZSx0KT0+e3M9ZTtyPXR9KX07Y2xhc3MgV2FzbUltYWdle3N0YXRpYyNYPW51bGw7c3RhdGljI0s9bmV3IFNldDtzdGF0aWMjRj0hMDtzdGF0aWMjRz0hMDtzdGF0aWMjVD1udWxsOyNWPW51bGw7IyQ9bnVsbDtfZmlsZW5hbWU9bnVsbDtfbm9XYXNtRmlsZW5hbWU9bnVsbDtzdGF0aWMgc2V0T3B0aW9ucyh7aGFuZGxlcjplLHVzZVdhc206dCx1c2VXb3JrZXJGZXRjaDpuLHdhc21Vcmw6YX0pe1dhc21JbWFnZS4jRj10O1dhc21JbWFnZS4jRz1uO1dhc21JbWFnZS4jVD1hO258fChXYXNtSW1hZ2UuI1g9ZSl9c3RhdGljIGdldCBpbnN0YW5jZSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGluc3RhbmNlYCBhY2Nlc3NlZCIpfXN0YXRpYyBjbGVhbnVwKCl7Zm9yKGNvbnN0IGUgb2YgV2FzbUltYWdlLiNLKWUuIyQ9bnVsbH1jb25zdHJ1Y3RvcihlPSExKXtlJiZXYXNtSW1hZ2UuI0suYWRkKHRoaXMpfWFzeW5jI1koZSl7bGV0IHQ9bnVsbDt0cnl7dD0oYXdhaXQgaW1wb3J0KAovKndlYnBhY2tJZ25vcmU6IHRydWUqLwovKkB2aXRlLWlnbm9yZSovCmAke1dhc21JbWFnZS4jVH0ke3RoaXMuX25vV2FzbUZpbGVuYW1lfWApKS5kZWZhdWx0KCl9Y2F0Y2goZSl7d2FybihgI2dldEpzTW9kdWxlOiAke2V9YCl9ZSh0KX1hc3luYyNKKGUsdCxuKXt0cnl7dGhpcy4jVnx8KFdhc21JbWFnZS4jRz90aGlzLiNWPWF3YWl0IGZldGNoQmluYXJ5RGF0YShgJHtXYXNtSW1hZ2UuI1R9JHt0aGlzLl9maWxlbmFtZX1gKTp0aGlzLiNWPWF3YWl0IFdhc21JbWFnZS4jWC5zZW5kV2l0aFByb21pc2UoIkZldGNoQmluYXJ5RGF0YSIse2tpbmQ6Indhc21VcmwiLGZpbGVuYW1lOnRoaXMuX2ZpbGVuYW1lfSkpO3JldHVybiBuKChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh0aGlzLiNWLHQpKS5pbnN0YW5jZSl9Y2F0Y2godCl7d2FybihgI2luc3RhbnRpYXRlV2FzbTogJHt0fWApO3RoaXMuI1koZSk7cmV0dXJuIG51bGx9fV9nZXRNb2R1bGUoZSl7aWYoIXRoaXMuIyQpe2NvbnN0e3Byb21pc2U6dCxyZXNvbHZlOm59PVByb21pc2Uud2l0aFJlc29sdmVycygpLGE9W3RdO1dhc21JbWFnZS4jRj9hLnB1c2goZSh7d2FybixpbnN0YW50aWF0ZVdhc206dGhpcy4jSi5iaW5kKHRoaXMsbil9KSk6dGhpcy4jWShuKTt0aGlzLiMkPVByb21pc2UucmFjZShhKX1yZXR1cm4gdGhpcy4jJH1hc3luYyBkZWNvZGUoZSx0KXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBkZWNvZGVgIGNhbGxlZCIpfX1jbGFzcyBKYmlnMkVycm9yIGV4dGVuZHMgYW57Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSmJpZzJFcnJvciIpfX1jbGFzcyBKQmlnMkNDSVRURmF4SW1hZ2UgZXh0ZW5kcyBXYXNtSW1hZ2V7X2ZpbGVuYW1lPSJqYmlnMi53YXNtIjtfbm9XYXNtRmlsZW5hbWU9ImpiaWcyX25vd2FzbV9mYWxsYmFjay5qcyI7c3RhdGljIGdldCBpbnN0YW5jZSgpe3JldHVybiBzaGFkb3codGhpcywiaW5zdGFuY2UiLG5ldyBKQmlnMkNDSVRURmF4SW1hZ2UoITApKX1hc3luYyBkZWNvZGUoZSx0LG4sYSxzKXtjb25zdCByPWF3YWl0IHRoaXMuX2dldE1vZHVsZShlYSk7aWYoIXIpdGhyb3cgbmV3IEpiaWcyRXJyb3IoIkpCaWcyIGZhaWxlZCB0byBpbml0aWFsaXplIik7bGV0IGksbzt0cnl7Y29uc3QgbD1lLmxlbmd0aDtpPXIuX21hbGxvYyhsKTtyLndyaXRlQXJyYXlUb01lbW9yeShlLGkpO2lmKHMpci5fY2NpdHRfZGVjb2RlKGksbCx0LG4scy5LLHMuRW5kT2ZMaW5lPzE6MCxzLkVuY29kZWRCeXRlQWxpZ24/MTowLHMuQmxhY2tJczE/MTowLHMuQ29sdW1ucyxzLlJvd3MpO2Vsc2V7Y29uc3QgZT1hP2EubGVuZ3RoOjA7aWYoZT4wKXtvPXIuX21hbGxvYyhlKTtyLndyaXRlQXJyYXlUb01lbW9yeShhLG8pfXIuX2piaWcyX2RlY29kZShpLGwsdCxuLG8sZSl9aWYoIXIuaW1hZ2VEYXRhKXRocm93IG5ldyBKYmlnMkVycm9yKCJVbmtub3duIGVycm9yIik7Y29uc3R7aW1hZ2VEYXRhOmZ9PXI7ci5pbWFnZURhdGE9bnVsbDtyZXR1cm4gZn1maW5hbGx5e2kmJnIuX2ZyZWUoaSk7byYmci5fZnJlZShvKX19fWNsYXNzIENDSVRURmF4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLmRpY3Q9ZS5kaWN0O24gaW5zdGFuY2VvZiBEaWN0fHwobj1EaWN0LmVtcHR5KTt0aGlzLnBhcmFtcz17SzpuLmdldCgiSyIpfHwwLEVuZE9mTGluZTohIW4uZ2V0KCJFbmRPZkxpbmUiKSxFbmNvZGVkQnl0ZUFsaWduOiEhbi5nZXQoIkVuY29kZWRCeXRlQWxpZ24iKSxDb2x1bW5zOm4uZ2V0KCJDb2x1bW5zIil8fDE3MjgsUm93czpuLmdldCgiUm93cyIpfHwwLEVuZE9mQmxvY2s6ISEobi5nZXQoIkVuZE9mQmxvY2siKT8/MSksQmxhY2tJczE6ISFuLmdldCgiQmxhY2tJczEiKX19Z2V0IGJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWdldCBpc0ltYWdlU3RyZWFtKCl7cmV0dXJuITB9Z2V0IGlzQXN5bmNEZWNvZGVyKCl7cmV0dXJuITB9YXN5bmMgZGVjb2RlSW1hZ2UoZSx0LG4pe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlPz89dGhpcy5zdHJlYW0uaXNBc3luYyYmYXdhaXQgdGhpcy5zdHJlYW0uYXN5bmNHZXRCeXRlcygpfHx0aGlzLmJ5dGVzO3RoaXMuYnVmZmVyPWF3YWl0IEpCaWcyQ0NJVFRGYXhJbWFnZS5pbnN0YW5jZS5kZWNvZGUoZSx0aGlzLmRpY3QuZ2V0KCJXIiwiV2lkdGgiKSx0aGlzLmRpY3QuZ2V0KCJIIiwiSGVpZ2h0IiksbnVsbCx0aGlzLnBhcmFtcyk7dGhpcy5idWZmZXJMZW5ndGg9dGhpcy5idWZmZXIubGVuZ3RoO3RoaXMuZW9mPSEwO3JldHVybiB0aGlzLmJ1ZmZlcn19Y29uc3QgdGE9bmV3IEludDMyQXJyYXkoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKSxuYT1uZXcgSW50MzJBcnJheShbMyw0LDUsNiw3LDgsOSwxMCw2NTU0Nyw2NTU0OSw2NTU1MSw2NTU1MywxMzEwOTEsMTMxMDk1LDEzMTA5OSwxMzExMDMsMTk2NjQzLDE5NjY1MSwxOTY2NTksMTk2NjY3LDI2MjIxMSwyNjIyMjcsMjYyMjQzLDI2MjI1OSwzMjc4MTEsMzI3ODQzLDMyNzg3NSwzMjc5MDcsMjU4LDI1OCwyNThdKSxhYT1uZXcgSW50MzJBcnJheShbMSwyLDMsNCw2NTU0MSw2NTU0MywxMzEwODEsMTMxMDg1LDE5NjYyNSwxOTY2MzMsMjYyMTc3LDI2MjE5MywzMjc3NDUsMzI3Nzc3LDM5MzM0NSwzOTM0MDksNDU5MDA5LDQ1OTEzNyw1MjQ4MDEsNTI1MDU3LDU5MDg0OSw1OTEzNjEsNjU3NDA5LDY1ODQzMyw3MjQ5OTMsNzI3MDQxLDc5NDYyNSw3OTg3MjEsODY4MzUzLDg3NjU0NV0pLHNhPVtuZXcgSW50MzJBcnJheShbNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNiw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODQsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ4LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OCw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzIsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTllNCw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjQsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNCw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTIsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU2LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Niw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDAsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA4LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Miw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIwLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OCw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTIsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTcyLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNiw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDQsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY4LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjgsNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk2LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MCw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODAsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ0LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMiw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzYsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOCw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODYsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUwLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MCw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzQsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAyLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Niw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI2LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NCw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTgsNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc4LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Miw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTAsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc0LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjIsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkwLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NCw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzQsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM4LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNiw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzAsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMCw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTgsNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYyLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Miw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDYsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE0LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OCw0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE3LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NSw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDksNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY5LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMyw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OTAwMDEsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY1LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjUsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkzLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Nyw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzcsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQxLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOSw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzMsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMSw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODksNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUzLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Myw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzcsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA1LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OSw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI5LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Nyw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjEsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgxLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NSw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTMsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc3LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTksNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg3LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MSw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzEsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM1LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMyw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjcsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNyw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTUsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU5LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OSw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDMsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDExLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NSw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIzLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MSw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTUsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc1LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOSw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDcsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcxLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzEsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk5LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Myw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODMsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ3LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNSw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzldKSw5XSxyYT1bbmV3IEludDMyQXJyYXkoWzMyNzY4MCwzMjc2OTYsMzI3Njg4LDMyNzcwNCwzMjc2ODQsMzI3NzAwLDMyNzY5MiwzMjc3MDgsMzI3NjgyLDMyNzY5OCwzMjc2OTAsMzI3NzA2LDMyNzY4NiwzMjc3MDIsMzI3Njk0LDAsMzI3NjgxLDMyNzY5NywzMjc2ODksMzI3NzA1LDMyNzY4NSwzMjc3MDEsMzI3NjkzLDMyNzcwOSwzMjc2ODMsMzI3Njk5LDMyNzY5MSwzMjc3MDcsMzI3Njg3LDMyNzcwMywzMjc2OTUsMF0pLDVdO2NsYXNzIEZsYXRlU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFteyNXPSEwO2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O2NvbnN0IG49ZS5nZXRCeXRlKCksYT1lLmdldEJ5dGUoKTtpZigtMT09PW58fC0xPT09YSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgaGVhZGVyIGluIGZsYXRlIHN0cmVhbTogJHtufSwgJHthfWApO2lmKDghPSgxNSZuKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIGluIGZsYXRlIHN0cmVhbTogJHtufSwgJHthfWApO2lmKCgobjw8OCkrYSklMzEhPTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCYWQgRkNIRUNLIGluIGZsYXRlIHN0cmVhbTogJHtufSwgJHthfWApO2lmKDMyJmEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBGRElDVCBiaXQgc2V0IGluIGZsYXRlIHN0cmVhbTogJHtufSwgJHthfWApO3RoaXMuY29kZVNpemU9MDt0aGlzLmNvZGVCdWY9MH1hc3luYyBnZXRJbWFnZURhdGEoZSx0KXtjb25zdCBuPWF3YWl0IHRoaXMuYXN5bmNHZXRCeXRlcygpO3JldHVybiBuP24ubGVuZ3RoPD1lP246bi5zdWJhcnJheSgwLGUpOnRoaXMuZ2V0Qnl0ZXMoZSl9YXN5bmMgYXN5bmNHZXRCeXRlcygpe2NvbnN0e2RlY29tcHJlc3NlZDplLGNvbXByZXNzZWQ6dH09YXdhaXQgdGhpcy5hc3luY0dldEJ5dGVzRnJvbURlY29tcHJlc3Npb25TdHJlYW0oImRlZmxhdGUiKTtpZihlKXJldHVybiBlO3RoaXMuI1c9ITE7dGhpcy5zdHJlYW09bmV3IFN0cmVhbSh0LDIsdC5sZW5ndGgsdGhpcy5zdHJlYW0uZGljdCk7dGhpcy5yZXNldCgpO3JldHVybiBudWxsfWdldCBpc0FzeW5jKCl7cmV0dXJuIHRoaXMuI1d9Z2V0Qml0cyhlKXtjb25zdCB0PXRoaXMuc3RyZWFtO2xldCBuLGE9dGhpcy5jb2RlU2l6ZSxzPXRoaXMuY29kZUJ1Zjtmb3IoO2E8ZTspe2lmKC0xPT09KG49dC5nZXRCeXRlKCkpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQmFkIGVuY29kaW5nIGluIGZsYXRlIHN0cmVhbSIpO3N8PW48PGE7YSs9OH1uPXMmKDE8PGUpLTE7dGhpcy5jb2RlQnVmPXM+PmU7dGhpcy5jb2RlU2l6ZT1hLT1lO3JldHVybiBufWdldENvZGUoZSl7Y29uc3QgdD10aGlzLnN0cmVhbSxuPWVbMF0sYT1lWzFdO2xldCBzLHI9dGhpcy5jb2RlU2l6ZSxpPXRoaXMuY29kZUJ1Zjtmb3IoO3I8YSYmLTEhPT0ocz10LmdldEJ5dGUoKSk7KXtpfD1zPDxyO3IrPTh9Y29uc3Qgbz1uW2kmKDE8PGEpLTFdLGw9bz4+MTYsZj02NTUzNSZvO2lmKGw8MXx8cjxsKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQmFkIGVuY29kaW5nIGluIGZsYXRlIHN0cmVhbSIpO3RoaXMuY29kZUJ1Zj1pPj5sO3RoaXMuY29kZVNpemU9ci1sO3JldHVybiBmfWdlbmVyYXRlSHVmZm1hblRhYmxlKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IG4sYT0wO2ZvcihuPTA7bjx0OysrbillW25dPmEmJihhPWVbbl0pO2NvbnN0IHM9MTw8YSxyPW5ldyBJbnQzMkFycmF5KHMpO2ZvcihsZXQgaT0xLG89MCxsPTI7aTw9YTsrK2ksbzw8PTEsbDw8PTEpZm9yKGxldCBhPTA7YTx0OysrYSlpZihlW2FdPT09aSl7bGV0IGU9MCx0PW87Zm9yKG49MDtuPGk7KytuKXtlPWU8PDF8MSZ0O3Q+Pj0xfWZvcihuPWU7bjxzO24rPWwpcltuXT1pPDwxNnxhOysrb31yZXR1cm5bcixhXX0jUShlKXtpbmZvKGUpO3RoaXMuZW9mPSEwfXJlYWRCbG9jaygpe2xldCBlLHQsbjtjb25zdCBhPXRoaXMuc3RyZWFtO3RyeXt0PXRoaXMuZ2V0Qml0cygzKX1jYXRjaChlKXt0aGlzLiNRKGUubWVzc2FnZSk7cmV0dXJufTEmdCYmKHRoaXMuZW9mPSEwKTt0Pj49MTtpZigwPT09dCl7bGV0IHQ7aWYoLTE9PT0odD1hLmdldEJ5dGUoKSkpe3RoaXMuI1EoIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7cmV0dXJufWxldCBuPXQ7aWYoLTE9PT0odD1hLmdldEJ5dGUoKSkpe3RoaXMuI1EoIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7cmV0dXJufW58PXQ8PDg7aWYoLTE9PT0odD1hLmdldEJ5dGUoKSkpe3RoaXMuI1EoIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7cmV0dXJufWxldCBzPXQ7aWYoLTE9PT0odD1hLmdldEJ5dGUoKSkpe3RoaXMuI1EoIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7cmV0dXJufXN8PXQ8PDg7aWYocyE9PSg2NTUzNSZ+bikmJigwIT09bnx8MCE9PXMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQmFkIHVuY29tcHJlc3NlZCBibG9jayBsZW5ndGggaW4gZmxhdGUgc3RyZWFtIik7dGhpcy5jb2RlQnVmPTA7dGhpcy5jb2RlU2l6ZT0wO2NvbnN0IHI9dGhpcy5idWZmZXJMZW5ndGgsaT1yK247ZT10aGlzLmVuc3VyZUJ1ZmZlcihpKTt0aGlzLmJ1ZmZlckxlbmd0aD1pO2lmKDA9PT1uKS0xPT09YS5wZWVrQnl0ZSgpJiYodGhpcy5lb2Y9ITApO2Vsc2V7Y29uc3QgdD1hLmdldEJ5dGVzKG4pO2Uuc2V0KHQscik7dC5sZW5ndGg8biYmKHRoaXMuZW9mPSEwKX1yZXR1cm59bGV0IHMscjtpZigxPT09dCl7cz1zYTtyPXJhfWVsc2V7aWYoMiE9PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIGJsb2NrIHR5cGUgaW4gZmxhdGUgc3RyZWFtIik7e2NvbnN0IGU9dGhpcy5nZXRCaXRzKDUpKzI1Nyx0PXRoaXMuZ2V0Qml0cyg1KSsxLGE9dGhpcy5nZXRCaXRzKDQpKzQsaT1uZXcgVWludDhBcnJheSh0YS5sZW5ndGgpO2xldCBvO2ZvcihvPTA7bzxhOysrbylpW3RhW29dXT10aGlzLmdldEJpdHMoMyk7Y29uc3QgbD10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKGkpO249MDtvPTA7Y29uc3QgZj1lK3QsYz1uZXcgVWludDhBcnJheShmKTtsZXQgaCx1LG07Zm9yKDtvPGY7KXtjb25zdCBlPXRoaXMuZ2V0Q29kZShsKTtpZigxNj09PWUpe2g9Mjt1PTM7bT1ufWVsc2UgaWYoMTc9PT1lKXtoPTM7dT0zO209bj0wfWVsc2V7aWYoMTghPT1lKXtjW28rK109bj1lO2NvbnRpbnVlfWg9Nzt1PTExO209bj0wfWxldCB0PXRoaXMuZ2V0Qml0cyhoKSt1O2Zvcig7dC0tID4wOyljW28rK109bX1zPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUoYy5zdWJhcnJheSgwLGUpKTtyPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUoYy5zdWJhcnJheShlLGYpKX19ZT10aGlzLmJ1ZmZlcjtsZXQgaT1lP2UubGVuZ3RoOjAsbz10aGlzLmJ1ZmZlckxlbmd0aDtmb3IoOzspe2xldCB0PXRoaXMuZ2V0Q29kZShzKTtpZih0PDI1Nil7aWYobysxPj1pKXtlPXRoaXMuZW5zdXJlQnVmZmVyKG8rMSk7aT1lLmxlbmd0aH1lW28rK109dDtjb250aW51ZX1pZigyNTY9PT10KXt0aGlzLmJ1ZmZlckxlbmd0aD1vO3JldHVybn10LT0yNTc7dD1uYVt0XTtsZXQgYT10Pj4xNjthPjAmJihhPXRoaXMuZ2V0Qml0cyhhKSk7bj0oNjU1MzUmdCkrYTt0PXRoaXMuZ2V0Q29kZShyKTt0PWFhW3RdO2E9dD4+MTY7YT4wJiYoYT10aGlzLmdldEJpdHMoYSkpO2NvbnN0IGw9KDY1NTM1JnQpK2E7aWYobytuPj1pKXtlPXRoaXMuZW5zdXJlQnVmZmVyKG8rbik7aT1lLmxlbmd0aH1mb3IobGV0IHQ9MDt0PG47Kyt0LCsrbyllW29dPWVbby1sXX19fWNsYXNzIEpiaWcyU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPW59Z2V0IGJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9Z2V0IGlzQXN5bmNEZWNvZGVyKCl7cmV0dXJuITB9Z2V0IGlzSW1hZ2VTdHJlYW0oKXtyZXR1cm4hMH1zdGF0aWMgc3RyaXBGaWxlSGVhZGVyKGUpe2lmKGUubGVuZ3RoPj05JiYxNTE9PT1lWzBdJiY3ND09PWVbMV0mJjY2PT09ZVsyXSYmNTA9PT1lWzNdJiYxMz09PWVbNF0mJjEwPT09ZVs1XSYmMjY9PT1lWzZdJiYxMD09PWVbN10pe2NvbnN0IHQ9MiZlWzhdPzk6MTM7cmV0dXJuIGUuc3ViYXJyYXkodCl9cmV0dXJuIGV9YXN5bmMgZGVjb2RlSW1hZ2UoZSx0LG4pe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlPUpiaWcyU3RyZWFtLnN0cmlwRmlsZUhlYWRlcihlfHx0aGlzLmJ5dGVzKTtsZXQgYT1udWxsO2lmKHRoaXMucGFyYW1zIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10aGlzLnBhcmFtcy5nZXQoIkpCSUcyR2xvYmFscyIpO2UgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYoYT1KYmlnMlN0cmVhbS5zdHJpcEZpbGVIZWFkZXIoZS5nZXRCeXRlcygpKSl9dGhpcy5idWZmZXI9YXdhaXQgSkJpZzJDQ0lUVEZheEltYWdlLmluc3RhbmNlLmRlY29kZShlLHRoaXMuZGljdC5nZXQoIldpZHRoIiksdGhpcy5kaWN0LmdldCgiSGVpZ2h0IiksYSk7dGhpcy5idWZmZXJMZW5ndGg9dGhpcy5idWZmZXIubGVuZ3RoO3RoaXMuZW9mPSEwO3JldHVybiB0aGlzLmJ1ZmZlcn1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0uaXNBc3luY319Y29uc3QgaWE9YXN5bmMgZnVuY3Rpb24gT3BlbkpQRUcoZT17fSl7dmFyIHQ9ZSxuPSIuL3RoaXMucHJvZ3JhbSIscXVpdF89KGUsdCk9Pnt0aHJvdyB0fSxhPWltcG9ydC5tZXRhLnVybDt0cnl7bmV3IFVSTCgiLiIsYSkuaHJlZn1jYXRjaHt9MDt2YXIgcyxyLGksbyxsLGYsYyxoPWNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksdT1jb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSksbT0hMSxwPSExO2Z1bmN0aW9uIHVwZGF0ZU1lbW9yeVZpZXdzKCl7dmFyIGU9Zy5idWZmZXI7bD1uZXcgSW50OEFycmF5KGUpO25ldyBJbnQxNkFycmF5KGUpO2M9bmV3IFVpbnQ4QXJyYXkoZSk7bmV3IFVpbnQxNkFycmF5KGUpO289bmV3IEludDMyQXJyYXkoZSk7Zj1uZXcgVWludDMyQXJyYXkoZSk7bmV3IEZsb2F0MzJBcnJheShlKTtuZXcgRmxvYXQ2NEFycmF5KGUpO25ldyBCaWdJbnQ2NEFycmF5KGUpO25ldyBCaWdVaW50NjRBcnJheShlKX1jbGFzcyBFeGl0U3RhdHVze25hbWU9IkV4aXRTdGF0dXMiO2NvbnN0cnVjdG9yKGUpe3RoaXMubWVzc2FnZT1gUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgke2V9KWA7dGhpcy5zdGF0dXM9ZX19dmFyIGQsZyxjYWxsUnVudGltZUNhbGxiYWNrcz1lPT57Zm9yKDtlLmxlbmd0aD4wOyllLnNoaWZ0KCkodCl9LGI9W10sYWRkT25Qb3N0UnVuPWU9PmIucHVzaChlKSx3PVtdLGFkZE9uUHJlUnVuPWU9PncucHVzaChlKSxqPSEwLGs9MCx5PXt9LGhhbmRsZUV4Y2VwdGlvbj1lPT57aWYoZSBpbnN0YW5jZW9mIEV4aXRTdGF0dXN8fCJ1bndpbmQiPT1lKXJldHVybiBzO3F1aXRfKDAsZSl9LGtlZXBSdW50aW1lQWxpdmU9KCk9Pmp8fGs+MCxfcHJvY19leGl0PWU9PntzPWU7aWYoIWtlZXBSdW50aW1lQWxpdmUoKSl7dC5vbkV4aXQ/LihlKTttPSEwfXF1aXRfKDAsbmV3IEV4aXRTdGF0dXMoZSkpfSxfZXhpdD0oZSx0KT0+e3M9ZTtfcHJvY19leGl0KGUpfSxjYWxsVXNlckNhbGxiYWNrPWU9PntpZighbSl0cnl7cmV0dXJuIGUoKX1jYXRjaChlKXtoYW5kbGVFeGNlcHRpb24oZSl9ZmluYWxseXsoKCk9PntpZigha2VlcFJ1bnRpbWVBbGl2ZSgpKXRyeXtfZXhpdChzKX1jYXRjaChlKXtoYW5kbGVFeGNlcHRpb24oZSl9fSkoKX19LGFsaWduTWVtb3J5PShlLHQpPT5NYXRoLmNlaWwoZS90KSp0LGdyb3dNZW1vcnk9ZT0+e3ZhciB0PShlLWcuYnVmZmVyLmJ5dGVMZW5ndGgrNjU1MzUpLzY1NTM2fDA7dHJ5e2cuZ3Jvdyh0KTt1cGRhdGVNZW1vcnlWaWV3cygpO3JldHVybiAxfWNhdGNoKGUpe319LHE9e30sZ2V0RW52U3RyaW5ncz0oKT0+e2lmKCFnZXRFbnZTdHJpbmdzLnN0cmluZ3Mpe3ZhciBlPXtVU0VSOiJ3ZWJfdXNlciIsTE9HTkFNRToid2ViX3VzZXIiLFBBVEg6Ii8iLFBXRDoiLyIsSE9NRToiL2hvbWUvd2ViX3VzZXIiLExBTkc6KGdsb2JhbFRoaXMubmF2aWdhdG9yPy5sYW5ndWFnZT8/IkMiKS5yZXBsYWNlKCItIiwiXyIpKyIuVVRGLTgiLF86bnx8Ii4vdGhpcy5wcm9ncmFtIn07Zm9yKHZhciB0IGluIHEpdm9pZCAwPT09cVt0XT9kZWxldGUgZVt0XTplW3RdPXFbdF07dmFyIGE9W107Zm9yKHZhciB0IGluIGUpYS5wdXNoKGAke3R9PSR7ZVt0XX1gKTtnZXRFbnZTdHJpbmdzLnN0cmluZ3M9YX1yZXR1cm4gZ2V0RW52U3RyaW5ncy5zdHJpbmdzfSxzdHJpbmdUb1VURjg9KGUsdCxuKT0+KChlLHQsbixhKT0+e2lmKCEoYT4wKSlyZXR1cm4gMDtmb3IodmFyIHM9bixyPW4rYS0xLGk9MDtpPGUubGVuZ3RoOysraSl7dmFyIG89ZS5jb2RlUG9pbnRBdChpKTtpZihvPD0xMjcpe2lmKG4+PXIpYnJlYWs7dFtuKytdPW99ZWxzZSBpZihvPD0yMDQ3KXtpZihuKzE+PXIpYnJlYWs7dFtuKytdPTE5MnxvPj42O3RbbisrXT0xMjh8NjMmb31lbHNlIGlmKG88PTY1NTM1KXtpZihuKzI+PXIpYnJlYWs7dFtuKytdPTIyNHxvPj4xMjt0W24rK109MTI4fG8+PjYmNjM7dFtuKytdPTEyOHw2MyZvfWVsc2V7aWYobiszPj1yKWJyZWFrO3RbbisrXT0yNDB8bz4+MTg7dFtuKytdPTEyOHxvPj4xMiY2Mzt0W24rK109MTI4fG8+PjYmNjM7dFtuKytdPTEyOHw2MyZvO2krK319dFtuXT0wO3JldHVybiBuLXN9KShlLGMsdCxuKSxsZW5ndGhCeXRlc1VURjg9ZT0+e2Zvcih2YXIgdD0wLG49MDtuPGUubGVuZ3RoOysrbil7dmFyIGE9ZS5jaGFyQ29kZUF0KG4pO2lmKGE8PTEyNyl0Kys7ZWxzZSBpZihhPD0yMDQ3KXQrPTI7ZWxzZSBpZihhPj01NTI5NiYmYTw9NTczNDMpe3QrPTQ7KytufWVsc2UgdCs9M31yZXR1cm4gdH0sdj1bbnVsbCxbXSxbXV0sUz1nbG9iYWxUaGlzLlRleHREZWNvZGVyJiZuZXcgVGV4dERlY29kZXIsVVRGOEFycmF5VG9TdHJpbmc9KGUsdD0wLG4sYSk9Pnt2YXIgcz0oKGUsdCxuLGEpPT57dmFyIHM9dCtuO2lmKGEpcmV0dXJuIHM7Zm9yKDtlW3RdJiYhKHQ+PXMpOykrK3Q7cmV0dXJuIHR9KShlLHQsbixhKTtpZihzLXQ+MTYmJmUuYnVmZmVyJiZTKXJldHVybiBTLmRlY29kZShlLnN1YmFycmF5KHQscykpO2Zvcih2YXIgcj0iIjt0PHM7KXt2YXIgaT1lW3QrK107aWYoMTI4Jmkpe3ZhciBvPTYzJmVbdCsrXTtpZigxOTIhPSgyMjQmaSkpe3ZhciBsPTYzJmVbdCsrXTtpZigoaT0yMjQ9PSgyNDAmaSk/KDE1JmkpPDwxMnxvPDw2fGw6KDcmaSk8PDE4fG88PDEyfGw8PDZ8NjMmZVt0KytdKTw2NTUzNilyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpO2Vsc2V7dmFyIGY9aS02NTUzNjtyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fGY+PjEwLDU2MzIwfDEwMjMmZil9fWVsc2Ugcis9U3RyaW5nLmZyb21DaGFyQ29kZSgoMzEmaSk8PDZ8byl9ZWxzZSByKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpfXJldHVybiByfSxwcmludENoYXI9KGUsdCk9Pnt2YXIgbj12W2VdO2lmKDA9PT10fHwxMD09PXQpeygxPT09ZT9oOnUpKFVURjhBcnJheVRvU3RyaW5nKG4pKTtuLmxlbmd0aD0wfWVsc2Ugbi5wdXNoKHQpfSxVVEY4VG9TdHJpbmc9KGUsdCxuKT0+ZT9VVEY4QXJyYXlUb1N0cmluZyhjLGUsdCxuKToiIjt0Lm5vRXhpdFJ1bnRpbWUmJihqPXQubm9FeGl0UnVudGltZSk7dC5wcmludCYmKGg9dC5wcmludCk7dC5wcmludEVyciYmKHU9dC5wcmludEVycik7dC53YXNtQmluYXJ5JiZ0Lndhc21CaW5hcnk7dC5hcmd1bWVudHMmJnQuYXJndW1lbnRzO3QudGhpc1Byb2dyYW0mJihuPXQudGhpc1Byb2dyYW0pO2lmKHQucHJlSW5pdCl7ImZ1bmN0aW9uIj09dHlwZW9mIHQucHJlSW5pdCYmKHQucHJlSW5pdD1bdC5wcmVJbml0XSk7Zm9yKDt0LnByZUluaXQubGVuZ3RoPjA7KXQucHJlSW5pdC5zaGlmdCgpKCl9dC53cml0ZUFycmF5VG9NZW1vcnk9KGUsdCk9PntsLnNldChlLHQpfTt2YXIgeCxDPXttOigpPT5mdW5jdGlvbiBhYm9ydChlKXt0Lm9uQWJvcnQ/LihlKTt1KGU9YEFib3J0ZWQoJHtlfSlgKTttPSEwO2UrPSIuIEJ1aWxkIHdpdGggLXNBU1NFUlRJT05TIGZvciBtb3JlIGluZm8uIjt2YXIgbj1uZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKGUpO2k/LihuKTt0aHJvdyBufSgiIiksbDooKT0+e2o9ITE7az0wfSxpOihlLHQpPT57aWYoeVtlXSl7Y2xlYXJUaW1lb3V0KHlbZV0uaWQpO2RlbGV0ZSB5W2VdfWlmKCF0KXJldHVybiAwO3ZhciBuPXNldFRpbWVvdXQoKCk9PntkZWxldGUgeVtlXTtjYWxsVXNlckNhbGxiYWNrKCgpPT5kKGUscGVyZm9ybWFuY2Uubm93KCkpKX0sdCk7eVtlXT17aWQ6bix0aW1lb3V0X21zOnR9O3JldHVybiAwfSxmOmZ1bmN0aW9uIF9jb3B5X3BpeGVsc18xKGUsbil7ZT4+PTI7Y29uc3QgYT10LmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkobikscz1vLnN1YmFycmF5KGUsZStuKTthLnNldChzKX0sZTpmdW5jdGlvbiBfY29weV9waXhlbHNfMyhlLG4sYSxzKXtlPj49MjtuPj49MjthPj49Mjtjb25zdCByPXQuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKnMpLGk9by5zdWJhcnJheShlLGUrcyksbD1vLnN1YmFycmF5KG4sbitzKSxmPW8uc3ViYXJyYXkoYSxhK3MpO2ZvcihsZXQgZT0wO2U8cztlKyspe3JbMyplXT1pW2VdO3JbMyplKzFdPWxbZV07clszKmUrMl09ZltlXX19LGQ6ZnVuY3Rpb24gX2NvcHlfcGl4ZWxzXzQoZSxuLGEscyxyKXtlPj49MjtuPj49MjthPj49MjtzPj49Mjtjb25zdCBpPXQuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KnIpLGw9by5zdWJhcnJheShlLGUrciksZj1vLnN1YmFycmF5KG4sbityKSxjPW8uc3ViYXJyYXkoYSxhK3IpLGg9by5zdWJhcnJheShzLHMrcik7Zm9yKGxldCBlPTA7ZTxyO2UrKyl7aVs0KmVdPWxbZV07aVs0KmUrMV09ZltlXTtpWzQqZSsyXT1jW2VdO2lbNCplKzNdPWhbZV19fSxqOmU9Pnt2YXIgdD1jLmxlbmd0aCxuPTIxNDc0ODM2NDg7aWYoKGU+Pj49MCk+bilyZXR1cm4hMTtmb3IodmFyIGE9MTthPD00O2EqPTIpe3ZhciBzPXQqKDErLjIvYSk7cz1NYXRoLm1pbihzLGUrMTAwNjYzMjk2KTt2YXIgcj1NYXRoLm1pbihuLGFsaWduTWVtb3J5KE1hdGgubWF4KGUscyksNjU1MzYpKTtpZihncm93TWVtb3J5KHIpKXJldHVybiEwfXJldHVybiExfSxvOihlLHQpPT57dmFyIG49MCxhPTA7Zm9yKHZhciBzIG9mIGdldEVudlN0cmluZ3MoKSl7dmFyIHI9dCtuO2ZbZSthPj4yXT1yO24rPXN0cmluZ1RvVVRGOChzLHIsMS8wKSsxO2ErPTR9cmV0dXJuIDB9LHA6KGUsdCk9Pnt2YXIgbj1nZXRFbnZTdHJpbmdzKCk7ZltlPj4yXT1uLmxlbmd0aDt2YXIgYT0wO2Zvcih2YXIgcyBvZiBuKWErPWxlbmd0aEJ5dGVzVVRGOChzKSsxO2ZbdD4+Ml09YTtyZXR1cm4gMH0sbjpmdW5jdGlvbiBfZmRfc2VlayhlLHQsbixhKXt0PShzPXQpPC05MDA3MTk5MjU0NzQwOTkyfHxzPjkwMDcxOTkyNTQ3NDA5OTI/TmFOOk51bWJlcihzKTt2YXIgcztyZXR1cm4gNzB9LGI6KGUsdCxuLGEpPT57Zm9yKHZhciBzPTAscj0wO3I8bjtyKyspe3ZhciBpPWZbdD4+Ml0sbz1mW3QrND4+Ml07dCs9ODtmb3IodmFyIGw9MDtsPG87bCsrKXByaW50Q2hhcihlLGNbaStsXSk7cys9b31mW2E+PjJdPXM7cmV0dXJuIDB9LHE6ZnVuY3Rpb24gX2dyYXlfdG9fcmdiYShlLG4pe2U+Pj0yO2NvbnN0IGE9dC5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqbikscz1vLnN1YmFycmF5KGUsZStuKTtmb3IobGV0IGU9MDtlPG47ZSsrKXthWzQqZV09YVs0KmUrMV09YVs0KmUrMl09c1tlXTthWzQqZSszXT0yNTV9fSxoOmZ1bmN0aW9uIF9ncmF5YV90b19yZ2JhKGUsbixhKXtlPj49MjtuPj49Mjtjb25zdCBzPXQuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KmEpLHI9by5zdWJhcnJheShlLGUrYSksaT1vLnN1YmFycmF5KG4sbithKTtmb3IobGV0IGU9MDtlPGE7ZSsrKXtzWzQqZV09c1s0KmUrMV09c1s0KmUrMl09cltlXTtzWzQqZSszXT1pW2VdfX0sYzpmdW5jdGlvbiBfanNQcmludFdhcm5pbmcoZSl7Y29uc3Qgbj1VVEY4VG9TdHJpbmcoZSk7KHQud2Fybnx8Y29uc29sZS53YXJuKShgT3BlbkpQRUc6ICR7bn1gKX0sazpfcHJvY19leGl0LGc6ZnVuY3Rpb24gX3JnYl90b19yZ2JhKGUsbixhLHMpe2U+Pj0yO24+Pj0yO2E+Pj0yO2NvbnN0IHI9dC5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqcyksaT1vLnN1YmFycmF5KGUsZStzKSxsPW8uc3ViYXJyYXkobixuK3MpLGY9by5zdWJhcnJheShhLGErcyk7Zm9yKGxldCBlPTA7ZTxzO2UrKyl7cls0KmVdPWlbZV07cls0KmUrMV09bFtlXTtyWzQqZSsyXT1mW2VdO3JbNCplKzNdPTI1NX19LGE6ZnVuY3Rpb24gX3N0b3JlRXJyb3JNZXNzYWdlKGUpe2NvbnN0IG49VVRGOFRvU3RyaW5nKGUpO3QuZXJyb3JNZXNzYWdlcz90LmVycm9yTWVzc2FnZXMrPSJcbiIrbjp0LmVycm9yTWVzc2FnZXM9bn19O3g9YXdhaXQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlV2FzbSgpe2Z1bmN0aW9uIHJlY2VpdmVJbnN0YW5jZShlLG4peyFmdW5jdGlvbiBhc3NpZ25XYXNtRXhwb3J0cyhlKXt0Ll9tYWxsb2M9ZS50O3QuX2ZyZWU9ZS51O3QuX2pwMl9kZWNvZGU9ZS52O2Q9ZS53O2c9ZS5yO2UuX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZX0oeD1lLmV4cG9ydHMpO3VwZGF0ZU1lbW9yeVZpZXdzKCk7cmV0dXJuIHh9dmFyIGU9ZnVuY3Rpb24gZ2V0V2FzbUltcG9ydHMoKXtyZXR1cm57YTpDfX0oKTtyZXR1cm4gbmV3IFByb21pc2UoKG4sYSk9Pnt0Lmluc3RhbnRpYXRlV2FzbShlLChlLHQpPT57bihyZWNlaXZlSW5zdGFuY2UoZSkpfSl9KX0oKTshZnVuY3Rpb24gcnVuKCl7IWZ1bmN0aW9uIHByZVJ1bigpe2lmKHQucHJlUnVuKXsiZnVuY3Rpb24iPT10eXBlb2YgdC5wcmVSdW4mJih0LnByZVJ1bj1bdC5wcmVSdW5dKTtmb3IoO3QucHJlUnVuLmxlbmd0aDspYWRkT25QcmVSdW4odC5wcmVSdW4uc2hpZnQoKSl9Y2FsbFJ1bnRpbWVDYWxsYmFja3Modyl9KCk7ZnVuY3Rpb24gZG9SdW4oKXt0LmNhbGxlZFJ1bj0hMDtpZighbSl7IWZ1bmN0aW9uIGluaXRSdW50aW1lKCl7cD0hMDt4LnMoKX0oKTtyPy4odCk7dC5vblJ1bnRpbWVJbml0aWFsaXplZD8uKCk7IWZ1bmN0aW9uIHBvc3RSdW4oKXtpZih0LnBvc3RSdW4peyJmdW5jdGlvbiI9PXR5cGVvZiB0LnBvc3RSdW4mJih0LnBvc3RSdW49W3QucG9zdFJ1bl0pO2Zvcig7dC5wb3N0UnVuLmxlbmd0aDspYWRkT25Qb3N0UnVuKHQucG9zdFJ1bi5zaGlmdCgpKX1jYWxsUnVudGltZUNhbGxiYWNrcyhiKX0oKX19aWYodC5zZXRTdGF0dXMpe3Quc2V0U3RhdHVzKCJSdW5uaW5nLi4uIik7c2V0VGltZW91dCgoKT0+e3NldFRpbWVvdXQoKCk9PnQuc2V0U3RhdHVzKCIiKSwxKTtkb1J1bigpfSwxKX1lbHNlIGRvUnVuKCl9KCk7cmV0dXJuIHA/dDpuZXcgUHJvbWlzZSgoZSx0KT0+e3I9ZTtpPXR9KX07Y2xhc3MgSnB4RXJyb3IgZXh0ZW5kcyBhbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJKcHhFcnJvciIpfX1jbGFzcyBKcHhJbWFnZSBleHRlbmRzIFdhc21JbWFnZXtfZmlsZW5hbWU9Im9wZW5qcGVnLndhc20iO19ub1dhc21GaWxlbmFtZT0ib3BlbmpwZWdfbm93YXNtX2ZhbGxiYWNrLmpzIjtzdGF0aWMgZ2V0IGluc3RhbmNlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpbnN0YW5jZSIsbmV3IEpweEltYWdlKCEwKSl9YXN5bmMgZGVjb2RlKGUse251bUNvbXBvbmVudHM6dD00LGlzSW5kZXhlZENvbG9ybWFwOm49ITEsc21hc2tJbkRhdGE6YT0hMSxyZWR1Y2VQb3dlcjpzPTB9PXt9KXtjb25zdCByPWF3YWl0IHRoaXMuX2dldE1vZHVsZShpYSk7aWYoIXIpdGhyb3cgbmV3IEpweEVycm9yKCJPcGVuSlBFRyBmYWlsZWQgdG8gaW5pdGlhbGl6ZSIpO2xldCBpO3RyeXtjb25zdCBvPWUubGVuZ3RoO2k9ci5fbWFsbG9jKG8pO3Iud3JpdGVBcnJheVRvTWVtb3J5KGUsaSk7aWYoci5fanAyX2RlY29kZShpLG8sdD4wP3Q6MCwhIW4sISFhLHMpKXtjb25zdHtlcnJvck1lc3NhZ2VzOmV9PXI7aWYoZSl7ZGVsZXRlIHIuZXJyb3JNZXNzYWdlczt0aHJvdyBuZXcgSnB4RXJyb3IoZSl9dGhyb3cgbmV3IEpweEVycm9yKCJVbmtub3duIGVycm9yIil9Y29uc3R7aW1hZ2VEYXRhOmx9PXI7ci5pbWFnZURhdGE9bnVsbDtyZXR1cm4gbH1maW5hbGx5e2kmJnIuX2ZyZWUoaSl9fXN0YXRpYyBwYXJzZUltYWdlUHJvcGVydGllcyhlKXtsZXQgdD1lLmdldEJ5dGUoKTtmb3IoO3Q+PTA7KXtjb25zdCBuPXQ7dD1lLmdldEJ5dGUoKTtpZig2NTM2MT09PShuPDw4fHQpKXtlLnNraXAoNCk7Y29uc3QgdD1lLmdldEludDMyKCk+Pj4wLG49ZS5nZXRJbnQzMigpPj4+MCxhPWUuZ2V0SW50MzIoKT4+PjAscz1lLmdldEludDMyKCk+Pj4wO2Uuc2tpcCgxNik7cmV0dXJue3dpZHRoOnQtYSxoZWlnaHQ6bi1zLGJpdHNQZXJDb21wb25lbnQ6OCxjb21wb25lbnRzQ291bnQ6ZS5nZXRVaW50MTYoKX19fXRocm93IG5ldyBKcHhFcnJvcigiTm8gc2l6ZSBtYXJrZXIgZm91bmQgaW4gSlBYIHN0cmVhbSIpfX1jbGFzcyBKcHhTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0KXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10fWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fWdldCBpc0FzeW5jRGVjb2Rlcigpe3JldHVybiEwfWFzeW5jIGRlY29kZUltYWdlKGUsdCxuKXtpZih0aGlzLmVvZilyZXR1cm4gdGhpcy5idWZmZXI7ZXx8PXRoaXMuYnl0ZXM7dGhpcy5idWZmZXI9YXdhaXQgSnB4SW1hZ2UuaW5zdGFuY2UuZGVjb2RlKGUsbik7dGhpcy5idWZmZXJMZW5ndGg9dGhpcy5idWZmZXIubGVuZ3RoO3RoaXMuZW9mPSEwO3JldHVybiB0aGlzLmJ1ZmZlcn1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0uaXNBc3luY31nZXQgaXNJbWFnZVN0cmVhbSgpe3JldHVybiEwfX1jbGFzcyBMWldTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmNhY2hlZERhdGE9MDt0aGlzLmJpdHNDYWNoZWQ9MDtjb25zdCBhPTQwOTYscz17ZWFybHlDaGFuZ2U6bixjb2RlTGVuZ3RoOjksbmV4dENvZGU6MjU4LGRpY3Rpb25hcnlWYWx1ZXM6bmV3IFVpbnQ4QXJyYXkoYSksZGljdGlvbmFyeUxlbmd0aHM6bmV3IFVpbnQxNkFycmF5KGEpLGRpY3Rpb25hcnlQcmV2Q29kZXM6bmV3IFVpbnQxNkFycmF5KGEpLGN1cnJlbnRTZXF1ZW5jZTpuZXcgVWludDhBcnJheShhKSxjdXJyZW50U2VxdWVuY2VMZW5ndGg6MH07Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXtzLmRpY3Rpb25hcnlWYWx1ZXNbZV09ZTtzLmRpY3Rpb25hcnlMZW5ndGhzW2VdPTF9dGhpcy5sendTdGF0ZT1zfXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYml0c0NhY2hlZCxuPXRoaXMuY2FjaGVkRGF0YTtmb3IoO3Q8ZTspe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJuIG51bGx9bj1uPDw4fGU7dCs9OH10aGlzLmJpdHNDYWNoZWQ9dC09ZTt0aGlzLmNhY2hlZERhdGE9bjtyZXR1cm4gbj4+PnQmKDE8PGUpLTF9cmVhZEJsb2NrKCl7bGV0IGUsdCxuLGE9MTAyNDtjb25zdCBzPXRoaXMubHp3U3RhdGU7aWYoIXMpcmV0dXJuO2NvbnN0IHI9cy5lYXJseUNoYW5nZTtsZXQgaT1zLm5leHRDb2RlO2NvbnN0IG89cy5kaWN0aW9uYXJ5VmFsdWVzLGw9cy5kaWN0aW9uYXJ5TGVuZ3RocyxmPXMuZGljdGlvbmFyeVByZXZDb2RlcztsZXQgYz1zLmNvZGVMZW5ndGgsaD1zLnByZXZDb2RlO2NvbnN0IHU9cy5jdXJyZW50U2VxdWVuY2U7bGV0IG09cy5jdXJyZW50U2VxdWVuY2VMZW5ndGgscD0wLGQ9dGhpcy5idWZmZXJMZW5ndGgsZz10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCthKTtmb3IoZT0wO2U8NTEyO2UrKyl7Y29uc3QgZT10aGlzLnJlYWRCaXRzKGMpLHM9bT4wO2lmKGU8MjU2KXt1WzBdPWU7bT0xfWVsc2V7aWYoIShlPj0yNTgpKXtpZigyNTY9PT1lKXtjPTk7aT0yNTg7bT0wO2NvbnRpbnVlfXRoaXMuZW9mPSEwO2RlbGV0ZSB0aGlzLmx6d1N0YXRlO2JyZWFrfWlmKGU8aSl7bT1sW2VdO2Zvcih0PW0tMSxuPWU7dD49MDt0LS0pe3VbdF09b1tuXTtuPWZbbl19fWVsc2UgdVttKytdPXVbMF19aWYocyl7ZltpXT1oO2xbaV09bFtoXSsxO29baV09dVswXTtpKys7Yz1pK3ImaStyLTE/YzowfE1hdGgubWluKE1hdGgubG9nKGkrcikvLjY5MzE0NzE4MDU1OTk0NTMrMSwxMil9aD1lO3ArPW07aWYoYTxwKXtkb3thKz01MTJ9d2hpbGUoYTxwKTtnPXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoK2EpfWZvcih0PTA7dDxtO3QrKylnW2QrK109dVt0XX1zLm5leHRDb2RlPWk7cy5jb2RlTGVuZ3RoPWM7cy5wcmV2Q29kZT1oO3MuY3VycmVudFNlcXVlbmNlTGVuZ3RoPW07dGhpcy5idWZmZXJMZW5ndGg9ZH19Y2xhc3MgUHJlZGljdG9yU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcih0KTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gZTtjb25zdCBhPXRoaXMucHJlZGljdG9yPW4uZ2V0KCJQcmVkaWN0b3IiKXx8MTtpZihhPD0xKXJldHVybiBlO2lmKDIhPT1hJiYoYTwxMHx8YT4xNSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7YX1gKTt0aGlzLnJlYWRCbG9jaz0yPT09YT90aGlzLnJlYWRCbG9ja1RpZmY6dGhpcy5yZWFkQmxvY2tQbmc7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O2NvbnN0IHM9dGhpcy5jb2xvcnM9bi5nZXQoIkNvbG9ycyIpfHwxLHI9dGhpcy5iaXRzPW4uZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iil8fDgsaT10aGlzLmNvbHVtbnM9bi5nZXQoIkNvbHVtbnMiKXx8MTt0aGlzLnBpeEJ5dGVzPXMqcis3Pj4zO3RoaXMucm93Qnl0ZXM9aSpzKnIrNz4+MztyZXR1cm4gdGhpc31yZWFkQmxvY2tUaWZmKCl7Y29uc3QgZT10aGlzLnJvd0J5dGVzLHQ9dGhpcy5idWZmZXJMZW5ndGgsbj10aGlzLmVuc3VyZUJ1ZmZlcih0K2UpLGE9dGhpcy5iaXRzLHM9dGhpcy5jb2xvcnMscj10aGlzLnN0cmVhbS5nZXRCeXRlcyhlKTt0aGlzLmVvZj0hci5sZW5ndGg7aWYodGhpcy5lb2YpcmV0dXJuO2xldCBpLG89MCxsPTAsZj0wLGM9MCxoPXQ7aWYoMT09PWEmJjE9PT1zKWZvcihpPTA7aTxlOysraSl7bGV0IGU9cltpXV5vO2VePWU+PjE7ZV49ZT4+MjtlXj1lPj40O289KDEmZSk8PDc7bltoKytdPWV9ZWxzZSBpZig4PT09YSl7Zm9yKGk9MDtpPHM7KytpKW5baCsrXT1yW2ldO2Zvcig7aTxlOysraSl7bltoXT1uW2gtc10rcltpXTtoKyt9fWVsc2UgaWYoMTY9PT1hKXtjb25zdCB0PTIqcztmb3IoaT0wO2k8dDsrK2kpbltoKytdPXJbaV07Zm9yKDtpPGU7aSs9Mil7Y29uc3QgZT0oKDI1NSZyW2ldKTw8OCkrKDI1NSZyW2krMV0pKygoMjU1Jm5baC10XSk8PDgpKygyNTUmbltoLXQrMV0pO25baCsrXT1lPj44JjI1NTtuW2grK109MjU1JmV9fWVsc2V7Y29uc3QgZT1uZXcgVWludDhBcnJheShzKzEpLGg9KDE8PGEpLTE7bGV0IHU9MCxtPXQ7Y29uc3QgcD10aGlzLmNvbHVtbnM7Zm9yKGk9MDtpPHA7KytpKWZvcihsZXQgdD0wO3Q8czsrK3Qpe2lmKGY8YSl7bz1vPDw4fDI1NSZyW3UrK107Zis9OH1lW3RdPWVbdF0rKG8+PmYtYSkmaDtmLT1hO2w9bDw8YXxlW3RdO2MrPWE7aWYoYz49OCl7blttKytdPWw+PmMtOCYyNTU7Yy09OH19Yz4wJiYoblttKytdPShsPDw4LWMpKyhvJigxPDw4LWMpLTEpKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX1yZWFkQmxvY2tQbmcoKXtjb25zdCBlPXRoaXMucm93Qnl0ZXMsdD10aGlzLnBpeEJ5dGVzLG49dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpLGE9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoZSk7dGhpcy5lb2Y9IWEubGVuZ3RoO2lmKHRoaXMuZW9mKXJldHVybjtjb25zdCBzPXRoaXMuYnVmZmVyTGVuZ3RoLHI9dGhpcy5lbnN1cmVCdWZmZXIocytlKTtsZXQgaT1yLnN1YmFycmF5KHMtZSxzKTswPT09aS5sZW5ndGgmJihpPW5ldyBVaW50OEFycmF5KGUpKTtsZXQgbyxsLGYsYz1zO3N3aXRjaChuKXtjYXNlIDA6Zm9yKG89MDtvPGU7KytvKXJbYysrXT1hW29dO2JyZWFrO2Nhc2UgMTpmb3Iobz0wO288dDsrK28pcltjKytdPWFbb107Zm9yKDtvPGU7KytvKXtyW2NdPXJbYy10XSthW29dJjI1NTtjKyt9YnJlYWs7Y2FzZSAyOmZvcihvPTA7bzxlOysrbylyW2MrK109aVtvXSthW29dJjI1NTticmVhaztjYXNlIDM6Zm9yKG89MDtvPHQ7KytvKXJbYysrXT0oaVtvXT4+MSkrYVtvXTtmb3IoO288ZTsrK28pe3JbY109KGlbb10rcltjLXRdPj4xKSthW29dJjI1NTtjKyt9YnJlYWs7Y2FzZSA0OmZvcihvPTA7bzx0Oysrbyl7bD1pW29dO2Y9YVtvXTtyW2MrK109bCtmfWZvcig7bzxlOysrbyl7bD1pW29dO2NvbnN0IGU9aVtvLXRdLG49cltjLXRdLHM9bitsLWU7bGV0IGg9cy1uO2g8MCYmKGg9LWgpO2xldCB1PXMtbDt1PDAmJih1PS11KTtsZXQgbT1zLWU7bTwwJiYobT0tbSk7Zj1hW29dO3JbYysrXT1oPD11JiZoPD1tP24rZjp1PD1tP2wrZjplK2Z9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuc3VwcG9ydGVkIHByZWRpY3RvcjogJHtufWApfXRoaXMuYnVmZmVyTGVuZ3RoKz1lfX1jbGFzcyBSdW5MZW5ndGhTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0KXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3R9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlcygyKTtpZighZXx8ZS5sZW5ndGg8Mnx8MTI4PT09ZVswXSl7dGhpcy5lb2Y9ITA7cmV0dXJufWxldCB0LG49dGhpcy5idWZmZXJMZW5ndGgsYT1lWzBdO2lmKGE8MTI4KXt0PXRoaXMuZW5zdXJlQnVmZmVyKG4rYSsxKTt0W24rK109ZVsxXTtpZihhPjApe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoYSk7dC5zZXQoZSxuKTtuKz1hfX1lbHNle2E9MjU3LWE7dD10aGlzLmVuc3VyZUJ1ZmZlcihuK2ErMSk7dC5maWxsKGVbMV0sbixuK2EpO24rPWF9dGhpcy5idWZmZXJMZW5ndGg9bn19Y2xhc3MgUGFyc2Vye2NvbnN0cnVjdG9yKHtsZXhlcjplLHhyZWY6dCxhbGxvd1N0cmVhbXM6bj0hMSxyZWNvdmVyeU1vZGU6YT0hMX0pe3RoaXMubGV4ZXI9ZTt0aGlzLnhyZWY9dDt0aGlzLmFsbG93U3RyZWFtcz1uO3RoaXMucmVjb3ZlcnlNb2RlPWE7dGhpcy5pbWFnZUNhY2hlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5faW1hZ2VJZD0wO3RoaXMucmVmaWxsKCl9cmVmaWxsKCl7dGhpcy5idWYxPXRoaXMubGV4ZXIuZ2V0T2JqKCk7dGhpcy5idWYyPXRoaXMubGV4ZXIuZ2V0T2JqKCl9c2hpZnQoKXtpZih0aGlzLmJ1ZjIgaW5zdGFuY2VvZiBDbWQmJiJJRCI9PT10aGlzLmJ1ZjIuY21kKXt0aGlzLmJ1ZjE9dGhpcy5idWYyO3RoaXMuYnVmMj1udWxsfWVsc2V7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9dGhpcy5sZXhlci5nZXRPYmooKX19dHJ5U2hpZnQoKXt0cnl7dGhpcy5zaGlmdCgpO3JldHVybiEwfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3JldHVybiExfX1nZXRPYmooZT1udWxsKXtjb25zdCB0PXRoaXMuYnVmMTt0aGlzLnNoaWZ0KCk7aWYodCBpbnN0YW5jZW9mIENtZClzd2l0Y2godC5jbWQpe2Nhc2UiQkkiOnJldHVybiB0aGlzLm1ha2VJbmxpbmVJbWFnZShlKTtjYXNlIlsiOmNvbnN0IG49W107Zm9yKDshaXNDbWQodGhpcy5idWYxLCJdIikmJnRoaXMuYnVmMSE9PWxuOyluLnB1c2godGhpcy5nZXRPYmooZSkpO2lmKHRoaXMuYnVmMT09PWxuKXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gbjt0aHJvdyBuZXcgUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgYXJyYXkuIil9dGhpcy5zaGlmdCgpO3JldHVybiBuO2Nhc2UiPDwiOmNvbnN0IGE9bmV3IERpY3QodGhpcy54cmVmKTtmb3IoOyFpc0NtZCh0aGlzLmJ1ZjEsIj4+IikmJnRoaXMuYnVmMSE9PWxuOyl7aWYoISh0aGlzLmJ1ZjEgaW5zdGFuY2VvZiBOYW1lKSl7aW5mbygiTWFsZm9ybWVkIGRpY3Rpb25hcnk6IGtleSBtdXN0IGJlIGEgbmFtZSBvYmplY3QiKTt0aGlzLnNoaWZ0KCk7Y29udGludWV9Y29uc3QgdD10aGlzLmJ1ZjEubmFtZTt0aGlzLnNoaWZ0KCk7aWYodGhpcy5idWYxPT09bG4pYnJlYWs7YS5zZXQodCx0aGlzLmdldE9iaihlKSl9aWYodGhpcy5idWYxPT09bG4pe2lmKHRoaXMucmVjb3ZlcnlNb2RlKXJldHVybiBhO3Rocm93IG5ldyBQYXJzZXJFT0ZFeGNlcHRpb24oIkVuZCBvZiBmaWxlIGluc2lkZSBkaWN0aW9uYXJ5LiIpfWlmKGlzQ21kKHRoaXMuYnVmMiwic3RyZWFtIikpcmV0dXJuIHRoaXMuYWxsb3dTdHJlYW1zP3RoaXMubWFrZVN0cmVhbShhLGUpOmE7dGhpcy5zaGlmdCgpO3JldHVybiBhO2RlZmF1bHQ6cmV0dXJuIHR9aWYoTnVtYmVyLmlzSW50ZWdlcih0KSl7aWYoTnVtYmVyLmlzSW50ZWdlcih0aGlzLmJ1ZjEpJiZpc0NtZCh0aGlzLmJ1ZjIsIlIiKSl7Y29uc3QgZT1SZWYuZ2V0KHQsdGhpcy5idWYxKTt0aGlzLnNoaWZ0KCk7dGhpcy5zaGlmdCgpO3JldHVybiBlfXJldHVybiB0fXJldHVybiJzdHJpbmciPT10eXBlb2YgdCYmZT9lLmRlY3J5cHRTdHJpbmcodCk6dH1maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKXtjb25zdHtrbm93bkNvbW1hbmRzOnR9PXRoaXMubGV4ZXIsbj1lLnBvcztsZXQgYSxzLHI9MDtmb3IoOy0xIT09KGE9ZS5nZXRCeXRlKCkpOylpZigwPT09cilyPTY5PT09YT8xOjA7ZWxzZSBpZigxPT09cilyPTczPT09YT8yOjA7ZWxzZSBpZigzMj09PWF8fDEwPT09YXx8MTM9PT1hKXtzPWUucG9zO2NvbnN0IG49ZS5wZWVrQnl0ZXMoMTUpLGk9bi5sZW5ndGg7aWYoMD09PWkpYnJlYWs7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7YT1uW2VdO2lmKCgwIT09YXx8MD09PW5bZSsxXSkmJigxMCE9PWEmJjEzIT09YSYmKGE8MzJ8fGE+MTI3KSkpe3I9MDticmVha319aWYoMiE9PXIpY29udGludWU7aWYoIXQpe3dhcm4oImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kIC0gYGxleGVyLmtub3duQ29tbWFuZHNgIGlzIHVuZGVmaW5lZC4iKTtjb250aW51ZX1jb25zdCBvPW5ldyBMZXhlcihuZXcgU3RyZWFtKGUucGVla0J5dGVzKDc1KSksdCk7by5faGV4U3RyaW5nV2Fybj0oKT0+e307bGV0IGw9MDtmb3IoOzspe2NvbnN0IGU9by5nZXRPYmooKTtpZihlPT09bG4pe3I9MDticmVha31pZihlIGluc3RhbmNlb2YgQ21kKXtjb25zdCBuPXRbZS5jbWRdO2lmKCFuKXtyPTA7YnJlYWt9aWYobi52YXJpYWJsZUFyZ3M/bDw9bi5udW1BcmdzOmw9PT1uLm51bUFyZ3MpYnJlYWs7bD0wO2NvbnRpbnVlfWwrK31pZigyPT09cilicmVha31lbHNlIHI9MDtpZigtMT09PWEpe3dhcm4oImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kOiBSZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSB3aXRob3V0IGZpbmRpbmcgYSB2YWxpZCBFSSBtYXJrZXIiKTtpZihzKXt3YXJuKCcuLi4gdHJ5aW5nIHRvIHJlY292ZXIgYnkgdXNpbmcgdGhlIGxhc3QgIkVJIiBvY2N1cnJlbmNlLicpO2Uuc2tpcCgtKGUucG9zLXMpKX19bGV0IGk9NDtlLnNraXAoLWkpO2E9ZS5wZWVrQnl0ZSgpO2Uuc2tpcChpKTtpc1doaXRlU3BhY2UoYSl8fGktLTtyZXR1cm4gZS5wb3MtaS1ufWZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgbixhLHM9ITE7Zm9yKDstMSE9PShuPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09bil7c3dpdGNoKGUuZ2V0Qnl0ZSgpKXtjYXNlIDA6YnJlYWs7Y2FzZSAyNTU6ZS5za2lwKC0xKTticmVhaztjYXNlIDIxNzpzPSEwO2JyZWFrO2Nhc2UgMTkyOmNhc2UgMTkzOmNhc2UgMTk0OmNhc2UgMTk1OmNhc2UgMTk3OmNhc2UgMTk4OmNhc2UgMTk5OmNhc2UgMjAxOmNhc2UgMjAyOmNhc2UgMjAzOmNhc2UgMjA1OmNhc2UgMjA2OmNhc2UgMjA3OmNhc2UgMTk2OmNhc2UgMjA0OmNhc2UgMjE4OmNhc2UgMjE5OmNhc2UgMjIwOmNhc2UgMjIxOmNhc2UgMjIyOmNhc2UgMjIzOmNhc2UgMjI0OmNhc2UgMjI1OmNhc2UgMjI2OmNhc2UgMjI3OmNhc2UgMjI4OmNhc2UgMjI5OmNhc2UgMjMwOmNhc2UgMjMxOmNhc2UgMjMyOmNhc2UgMjMzOmNhc2UgMjM0OmNhc2UgMjM1OmNhc2UgMjM2OmNhc2UgMjM3OmNhc2UgMjM4OmNhc2UgMjM5OmNhc2UgMjU0OmE9ZS5nZXRVaW50MTYoKTthPjI/ZS5za2lwKGEtMik6ZS5za2lwKC0yKX1pZihzKWJyZWFrfWNvbnN0IHI9ZS5wb3MtdDtpZigtMT09PW4pe3dhcm4oIklubGluZSBEQ1REZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0kgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1yKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gcn1maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBuO2Zvcig7LTEhPT0obj1lLmdldEJ5dGUoKSk7KWlmKDEyNj09PW4pe2NvbnN0IHQ9ZS5wb3M7bj1lLnBlZWtCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2Uobik7KXtlLnNraXAoKTtuPWUucGVla0J5dGUoKX1pZig2Mj09PW4pe2Uuc2tpcCgpO2JyZWFrfWlmKGUucG9zPnQpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7aWYoNjk9PT10WzBdJiY3Mz09PXRbMV0pYnJlYWt9fWNvbnN0IGE9ZS5wb3MtdDtpZigtMT09PW4pe3dhcm4oIklubGluZSBBU0NJSTg1RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtYSk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIGF9ZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IG47Zm9yKDstMSE9PShuPWUuZ2V0Qnl0ZSgpKSYmNjIhPT1uOyk7Y29uc3QgYT1lLnBvcy10O2lmKC0xPT09bil7d2FybigiSW5saW5lIEFTQ0lJSGV4RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtYSk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIGF9aW5saW5lU3RyZWFtU2tpcEVJKGUpe2xldCB0LG49MDtmb3IoOy0xIT09KHQ9ZS5nZXRCeXRlKCkpOylpZigwPT09biluPTY5PT09dD8xOjA7ZWxzZSBpZigxPT09biluPTczPT09dD8yOjA7ZWxzZSBpZigyPT09bilicmVha31tYWtlSW5saW5lSW1hZ2UoZSl7Y29uc3QgdD10aGlzLmxleGVyLG49dC5zdHJlYW0sYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBzO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiSUQiKSYmdGhpcy5idWYxIT09bG47KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRGljdGlvbmFyeSBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7Y29uc3QgdD10aGlzLmJ1ZjEubmFtZTt0aGlzLnNoaWZ0KCk7aWYodGhpcy5idWYxPT09bG4pYnJlYWs7YVt0XT10aGlzLmdldE9iaihlKX0tMSE9PXQuYmVnaW5JbmxpbmVJbWFnZVBvcyYmKHM9bi5wb3MtdC5iZWdpbklubGluZUltYWdlUG9zKTtjb25zdCByPXRoaXMuI1ooYS5GfHxhLkZpbHRlcik7bGV0IGk7aWYociBpbnN0YW5jZW9mIE5hbWUpaT1yLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBlPXRoaXMuI1ooclswXSk7ZSBpbnN0YW5jZW9mIE5hbWUmJihpPWUubmFtZSl9Y29uc3Qgbz1uLnBvcztsZXQgbCxmO3N3aXRjaChpKXtjYXNlIkRDVCI6Y2FzZSJEQ1REZWNvZGUiOmw9dGhpcy5maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKG4pO2JyZWFrO2Nhc2UiQTg1IjpjYXNlIkFTQ0lJODVEZWNvZGUiOmw9dGhpcy5maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChuKTticmVhaztjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6bD10aGlzLmZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChuKTticmVhaztkZWZhdWx0Omw9dGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChuKX1pZihsPDFlMyYmcz4wKXtjb25zdCBlPW4ucG9zO24ucG9zPXQuYmVnaW5JbmxpbmVJbWFnZVBvcztmPWZ1bmN0aW9uIGdldElubGluZUltYWdlQ2FjaGVLZXkoZSl7Y29uc3QgdD1bXSxuPWUubGVuZ3RoO2xldCBhPTA7Zm9yKDthPG4tMTspdC5wdXNoKGVbYSsrXTw8OHxlW2ErK10pO2E8biYmdC5wdXNoKGVbYV0pO3JldHVybiBuKyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsdCl9KG4uZ2V0Qnl0ZXMocytsKSk7bi5wb3M9ZTtjb25zdCBhPXRoaXMuaW1hZ2VDYWNoZVtmXTtpZih2b2lkIDAhPT1hKXt0aGlzLmJ1ZjI9Q21kLmdldCgiRUkiKTt0aGlzLnNoaWZ0KCk7YS5yZXNldCgpO3JldHVybiBhfX1jb25zdCBjPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKGNvbnN0IGUgaW4gYSljLnNldChlLGFbZV0pO2xldCBoPW4ubWFrZVN1YlN0cmVhbShvLGwsYyk7ZSYmIXRoaXMuI2VlKHIpJiYoaD1lLmNyZWF0ZVN0cmVhbShoLGwpKTtoPXRoaXMuZmlsdGVyKGgsYyxsLGUpO2guZGljdD1jO2lmKHZvaWQgMCE9PWYpe2guY2FjaGVLZXk9ImlubGluZV9pbWdfIisgKyt0aGlzLl9pbWFnZUlkO3RoaXMuaW1hZ2VDYWNoZVtmXT1ofXRoaXMuYnVmMj1DbWQuZ2V0KCJFSSIpO3RoaXMuc2hpZnQoKTtyZXR1cm4gaH0jWihlKXtyZXR1cm4gdGhpcy54cmVmP3RoaXMueHJlZi5mZXRjaElmUmVmKGUpOmV9I2VlKGUpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiBpc05hbWUoZSwiQ3J5cHQiKTtmb3IoY29uc3QgdCBvZiBlKWlmKGlzTmFtZSh0aGlzLiNaKHQpLCJDcnlwdCIpKXJldHVybiEwO3JldHVybiExfSN0ZShlKXtjb25zdHtzdHJlYW06dH09dGhpcy5sZXhlcjt0LnBvcz1lO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoWzEwMSwxMTAsMTAwXSksYT1uLmxlbmd0aCxzPVtuZXcgVWludDhBcnJheShbMTE1LDExNiwxMTQsMTAxLDk3LDEwOV0pLG5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDEwMSw5NywxMDldKSxuZXcgVWludDhBcnJheShbMTE1LDExNiwxMTQsMTAxLDk3XSldLHI9OS1hO2Zvcig7dC5wb3M8dC5lbmQ7KXtjb25zdCBpPXQucGVla0J5dGVzKDIwNDgpLG89aS5sZW5ndGgtOTtpZihvPD0wKWJyZWFrO2xldCBsPTA7Zm9yKDtsPG87KXtsZXQgbz0wO2Zvcig7bzxhJiZpW2wrb109PT1uW29dOylvKys7aWYobz49YSl7bGV0IGE9ITE7Zm9yKGNvbnN0IGUgb2Ygcyl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgcz0wO2Zvcig7czx0JiZpW2wrbytzXT09PWVbc107KXMrKztpZihzPj1yKXthPSEwO2JyZWFrfWlmKHM+PXQpe2lmKGlzV2hpdGVTcGFjZShpW2wrbytzXSkpe2luZm8oYEZvdW5kICIke2J5dGVzVG9TdHJpbmcoWy4uLm4sLi4uZV0pfSIgd2hlbiBzZWFyY2hpbmcgZm9yIGVuZHN0cmVhbSBjb21tYW5kLmApO2E9ITB9YnJlYWt9fWlmKGEpe3QucG9zKz1sO3JldHVybiB0LnBvcy1lfX1sKyt9dC5wb3MrPW99cmV0dXJuLTF9bWFrZVN0cmVhbShlLHQpe2NvbnN0IG49dGhpcy5sZXhlcjtsZXQgYT1uLnN0cmVhbTtuLnNraXBUb05leHRMaW5lKCk7Y29uc3Qgcz1hLnBvcy0xO2xldCByPWUuZ2V0KCJMZW5ndGgiKTtpZighTnVtYmVyLmlzSW50ZWdlcihyKSl7aW5mbyhgQmFkIGxlbmd0aCAiJHtyJiZyLnRvU3RyaW5nKCl9IiBpbiBzdHJlYW0uYCk7cj0wfWEucG9zPXMrcjtuLm5leHRDaGFyKCk7aWYodGhpcy50cnlTaGlmdCgpJiZpc0NtZCh0aGlzLmJ1ZjIsImVuZHN0cmVhbSIpKXRoaXMuc2hpZnQoKTtlbHNle3I9dGhpcy4jdGUocyk7aWYocjwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWlzc2luZyBlbmRzdHJlYW0gY29tbWFuZC4iKTtuLm5leHRDaGFyKCk7dGhpcy5zaGlmdCgpO3RoaXMuc2hpZnQoKX10aGlzLnNoaWZ0KCk7YT1hLm1ha2VTdWJTdHJlYW0ocyxyLGUpO2NvbnN0IGk9ZS5nZXQoIkYiLCJGaWx0ZXIiKTt0JiYhdGhpcy4jZWUoaSkmJihhPXQuY3JlYXRlU3RyZWFtKGEscikpO2E9dGhpcy5maWx0ZXIoYSxlLHIsdCk7YS5kaWN0PWU7cmV0dXJuIGF9ZmlsdGVyKGUsdCxuLGE9bnVsbCl7bGV0IHM9dC5nZXQoIkYiLCJGaWx0ZXIiKSxyPXQuZ2V0KCJEUCIsIkRlY29kZVBhcm1zIik7aWYocyBpbnN0YW5jZW9mIE5hbWUpe0FycmF5LmlzQXJyYXkocikmJndhcm4oIi9EZWNvZGVQYXJtcyBzaG91bGQgbm90IGJlIGFuIEFycmF5LCB3aGVuIC9GaWx0ZXIgaXMgYSBOYW1lLiIpO3JldHVybiB0aGlzLm1ha2VGaWx0ZXIoZSxzLm5hbWUsbixyLGEpfWxldCBpPW47aWYoQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgdD1zLG49cjtmb3IobGV0IG89MCxsPXQubGVuZ3RoO288bDsrK28pe3M9dGhpcy4jWih0W29dKTtpZighKHMgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEJhZCBmaWx0ZXIgbmFtZSAiJHtzfSJgKTtyPW51bGw7QXJyYXkuaXNBcnJheShuKSYmbyBpbiBuJiYocj10aGlzLiNaKG5bb10pKTtlPXRoaXMubWFrZUZpbHRlcihlLHMubmFtZSxpLHIsYSk7aT1udWxsfX1yZXR1cm4gZX1tYWtlRmlsdGVyKGUsdCxuLGEscz1udWxsKXtpZigwPT09bil7d2FybihgRW1wdHkgIiR7dH0iIHN0cmVhbS5gKTtyZXR1cm4gbmV3IE51bGxTdHJlYW19dHJ5e3N3aXRjaCh0KXtjYXNlIkZsIjpjYXNlIkZsYXRlRGVjb2RlIjpyZXR1cm4gYT9uZXcgUHJlZGljdG9yU3RyZWFtKG5ldyBGbGF0ZVN0cmVhbShlLG4pLG4sYSk6bmV3IEZsYXRlU3RyZWFtKGUsbik7Y2FzZSJMWlciOmNhc2UiTFpXRGVjb2RlIjpsZXQgdD0xO2lmKGEpe2EuaGFzKCJFYXJseUNoYW5nZSIpJiYodD1hLmdldCgiRWFybHlDaGFuZ2UiKSk7cmV0dXJuIG5ldyBQcmVkaWN0b3JTdHJlYW0obmV3IExaV1N0cmVhbShlLG4sdCksbixhKX1yZXR1cm4gbmV3IExaV1N0cmVhbShlLG4sdCk7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpyZXR1cm4gbmV3IEpwZWdTdHJlYW0oZSxuLGEpO2Nhc2UiSlBYIjpjYXNlIkpQWERlY29kZSI6cmV0dXJuIG5ldyBKcHhTdHJlYW0oZSxuKTtjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpyZXR1cm4gbmV3IEFzY2lpODVTdHJlYW0oZSxuKTtjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6cmV0dXJuIG5ldyBBc2NpaUhleFN0cmVhbShlLG4pO2Nhc2UiQ0NGIjpjYXNlIkNDSVRURmF4RGVjb2RlIjpyZXR1cm4gbmV3IENDSVRURmF4U3RyZWFtKGUsbixhKTtjYXNlIlJMIjpjYXNlIlJ1bkxlbmd0aERlY29kZSI6cmV0dXJuIG5ldyBSdW5MZW5ndGhTdHJlYW0oZSxuKTtjYXNlIkpCSUcyRGVjb2RlIjpyZXR1cm4gbmV3IEpiaWcyU3RyZWFtKGUsbixhKTtjYXNlIkJyb3RsaURlY29kZSI6cmV0dXJuIG5ldyBCcm90bGlTdHJlYW0oZSxuKTtjYXNlIkNyeXB0Ijp7aWYoIXMpe3dhcm4oJ0ZpbHRlciAiQ3J5cHQiIGlzIG1pc3NpbmcgYSBjaXBoZXIgdHJhbnNmb3JtLicpO3JldHVybiBlfWNvbnN0IHQ9YSBpbnN0YW5jZW9mIERpY3Q/YS5nZXQoIk5hbWUiKTpudWxsLHI9dCBpbnN0YW5jZW9mIE5hbWU/dDpOYW1lLmdldCgiSWRlbnRpdHkiKTtyZXR1cm4gcy5jcmVhdGVTdHJlYW0oZSxuLHIpfX13YXJuKGBGaWx0ZXIgIiR7dH0iIGlzIG5vdCBzdXBwb3J0ZWQuYCk7cmV0dXJuIGV9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgSW52YWxpZCBzdHJlYW06ICIke2V9ImApO3JldHVybiBuZXcgTnVsbFN0cmVhbX19fWNvbnN0IG9hPVsxLDAsMCwwLDAsMCwwLDAsMCwxLDEsMCwxLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDIsMCwwLDIsMiwwLDAsMCwwLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXTtmdW5jdGlvbiB0b0hleERpZ2l0KGUpe3JldHVybiBlPj00OCYmZTw9NTc/MTUmZTplPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDI/OSsoMTUmZSk6LTF9Y2xhc3MgTGV4ZXJ7Y29uc3RydWN0b3IoZSx0PW51bGwpe3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpO3RoaXMuc3RyQnVmPVtdO3RoaXMua25vd25Db21tYW5kcz10O3RoaXMuX2hleFN0cmluZ051bVdhcm49MDt0aGlzLmJlZ2luSW5saW5lSW1hZ2VQb3M9LTF9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cGVla0NoYXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0ucGVla0J5dGUoKX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyLHQ9MCxuPTE7aWYoNDU9PT1lKXtuPS0xO2U9dGhpcy5uZXh0Q2hhcigpOzQ1PT09ZSYmKGU9dGhpcy5uZXh0Q2hhcigpKX1lbHNlIDQzPT09ZSYmKGU9dGhpcy5uZXh0Q2hhcigpKTtpZigxMD09PWV8fDEzPT09ZSlkb3tlPXRoaXMubmV4dENoYXIoKX13aGlsZSgxMD09PWV8fDEzPT09ZSk7aWYoNDY9PT1lKXt0PTEwO2U9dGhpcy5uZXh0Q2hhcigpfWlmKGU8NDh8fGU+NTcpe2NvbnN0IHQ9YEludmFsaWQgbnVtYmVyOiAke1N0cmluZy5mcm9tQ2hhckNvZGUoZSl9IChjaGFyQ29kZSAke2V9KWA7aWYoaXNXaGl0ZVNwYWNlKGUpfHw0MD09PWV8fDYwPT09ZXx8LTE9PT1lKXtpbmZvKGBMZXhlci5nZXROdW1iZXIgLSAiJHt0fSIuYCk7cmV0dXJuIDB9dGhyb3cgbmV3IEZvcm1hdEVycm9yKHQpfWxldCBhPWUtNDg7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wOylpZihlPj00OCYmZTw9NTcpezAhPT10JiYodCo9MTApO2E9MTAqYSsoZS00OCl9ZWxzZSBpZig0Nj09PWUpe2lmKDAhPT10KWJyZWFrO3Q9MX1lbHNle2lmKDQ1IT09ZSlicmVhazt3YXJuKCJCYWRseSBmb3JtYXR0ZWQgbnVtYmVyOiBtaW51cyBzaWduIGluIHRoZSBtaWRkbGUiKX0wIT09dCYmKGEvPXQpO3JldHVybiBuKmF9Z2V0U3RyaW5nKCl7bGV0IGU9MSx0PSExO2NvbnN0IG49dGhpcy5zdHJCdWY7bi5sZW5ndGg9MDtsZXQgYT10aGlzLm5leHRDaGFyKCk7Zm9yKDs7KXtsZXQgcz0hMTtzd2l0Y2goMHxhKXtjYXNlLTE6d2FybigiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSA0MDorK2U7bi5wdXNoKCIoIik7YnJlYWs7Y2FzZSA0MTppZigwPT09LS1lKXt0aGlzLm5leHRDaGFyKCk7dD0hMH1lbHNlIG4ucHVzaCgiKSIpO2JyZWFrO2Nhc2UgOTI6YT10aGlzLm5leHRDaGFyKCk7c3dpdGNoKGEpe2Nhc2UtMTp3YXJuKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIik7dD0hMDticmVhaztjYXNlIDExMDpuLnB1c2goIlxuIik7YnJlYWs7Y2FzZSAxMTQ6bi5wdXNoKCJcciIpO2JyZWFrO2Nhc2UgMTE2Om4ucHVzaCgiXHQiKTticmVhaztjYXNlIDk4Om4ucHVzaCgiXGIiKTticmVhaztjYXNlIDEwMjpuLnB1c2goIlxmIik7YnJlYWs7Y2FzZSA5MjpjYXNlIDQwOmNhc2UgNDE6bi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpO2JyZWFrO2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpsZXQgZT0xNSZhO2E9dGhpcy5uZXh0Q2hhcigpO3M9ITA7aWYoYT49NDgmJmE8PTU1KXtlPShlPDwzKSsoMTUmYSk7YT10aGlzLm5leHRDaGFyKCk7aWYoYT49NDgmJmE8PTU1KXtzPSExO2U9KGU8PDMpKygxNSZhKX19bi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2JyZWFrO2Nhc2UgMTM6MTA9PT10aGlzLnBlZWtDaGFyKCkmJnRoaXMubmV4dENoYXIoKTticmVhaztjYXNlIDEwOmJyZWFrO2RlZmF1bHQ6bi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpfWJyZWFrO2RlZmF1bHQ6bi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpfWlmKHQpYnJlYWs7c3x8KGE9dGhpcy5uZXh0Q2hhcigpKX1yZXR1cm4gbi5qb2luKCIiKX1nZXROYW1lKCl7bGV0IGUsdDtjb25zdCBuPXRoaXMuc3RyQnVmO24ubGVuZ3RoPTA7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYhb2FbZV07KWlmKDM1PT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7aWYob2FbZV0pe3dhcm4oIkxleGVyX2dldE5hbWU6IE5VTUJFUiBTSUdOICgjKSBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBoZXhhZGVjaW1hbCBudW1iZXIuIik7bi5wdXNoKCIjIik7YnJlYWt9Y29uc3QgYT10b0hleERpZ2l0KGUpO2lmKC0xIT09YSl7dD1lO2U9dGhpcy5uZXh0Q2hhcigpO2NvbnN0IHM9dG9IZXhEaWdpdChlKTtpZigtMT09PXMpe3dhcm4oYExleGVyX2dldE5hbWU6IElsbGVnYWwgZGlnaXQgKCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pIGluIGhleGFkZWNpbWFsIG51bWJlci5gKTtuLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2lmKG9hW2VdKWJyZWFrO24ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb250aW51ZX1uLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhPDw0fHMpKX1lbHNlIG4ucHVzaCgiIyIsU3RyaW5nLmZyb21DaGFyQ29kZShlKSl9ZWxzZSBuLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7bi5sZW5ndGg+MTI3JiZ3YXJuKGBOYW1lIHRva2VuIGlzIGxvbmdlciB0aGFuIGFsbG93ZWQgYnkgdGhlIHNwZWM6ICR7bi5sZW5ndGh9YCk7cmV0dXJuIE5hbWUuZ2V0KG4uam9pbigiIikpfV9oZXhTdHJpbmdXYXJuKGUpezUhPT10aGlzLl9oZXhTdHJpbmdOdW1XYXJuKys/dGhpcy5faGV4U3RyaW5nTnVtV2Fybj41fHx3YXJuKGBnZXRIZXhTdHJpbmcgLSBpZ25vcmluZyBpbnZhbGlkIGNoYXJhY3RlcjogJHtlfWApOndhcm4oImdldEhleFN0cmluZyAtIGlnbm9yaW5nIGFkZGl0aW9uYWwgaW52YWxpZCBjaGFyYWN0ZXJzLiIpfWdldEhleFN0cmluZygpe2NvbnN0IGU9dGhpcy5zdHJCdWY7ZS5sZW5ndGg9MDtsZXQgdD10aGlzLmN1cnJlbnRDaGFyLG49LTEsYT0tMTt0aGlzLl9oZXhTdHJpbmdOdW1XYXJuPTA7Zm9yKDs7KXtpZih0PDApe3dhcm4oIlVudGVybWluYXRlZCBoZXggc3RyaW5nIik7YnJlYWt9aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7YnJlYWt9aWYoMSE9PW9hW3RdKXthPXRvSGV4RGlnaXQodCk7aWYoLTE9PT1hKXRoaXMuX2hleFN0cmluZ1dhcm4odCk7ZWxzZSBpZigtMT09PW4pbj1hO2Vsc2V7ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobjw8NHxhKSk7bj0tMX10PXRoaXMubmV4dENoYXIoKX1lbHNlIHQ9dGhpcy5uZXh0Q2hhcigpfS0xIT09biYmZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobjw8NCkpO3JldHVybiBlLmpvaW4oIiIpfWdldE9iaigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKHQ8MClyZXR1cm4gbG47aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZigxIT09b2FbdF0pYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gdGhpcy5nZXROdW1iZXIoKTtjYXNlIDQwOnJldHVybiB0aGlzLmdldFN0cmluZygpO2Nhc2UgNDc6cmV0dXJuIHRoaXMuZ2V0TmFtZSgpO2Nhc2UgOTE6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJbIik7Y2FzZSA5Mzp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIl0iKTtjYXNlIDYwOnQ9dGhpcy5uZXh0Q2hhcigpO2lmKDYwPT09dCl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCI8PCIpfXJldHVybiB0aGlzLmdldEhleFN0cmluZygpO2Nhc2UgNjI6dD10aGlzLm5leHRDaGFyKCk7aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIj4+Iil9cmV0dXJuIENtZC5nZXQoIj4iKTtjYXNlIDEyMzp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoInsiKTtjYXNlIDEyNTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIn0iKTtjYXNlIDQxOnRoaXMubmV4dENoYXIoKTt0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYElsbGVnYWwgY2hhcmFjdGVyOiAke3R9YCl9bGV0IG49U3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZih0PDMyfHx0PjEyNyl7Y29uc3QgZT10aGlzLnBlZWtDaGFyKCk7aWYoZT49MzImJmU8PTEyNyl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KG4pfX1jb25zdCBhPXRoaXMua25vd25Db21tYW5kcztsZXQgcz12b2lkIDAhPT1hPy5bbl07Zm9yKDsodD10aGlzLm5leHRDaGFyKCkpPj0wJiYhb2FbdF07KXtjb25zdCBlPW4rU3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZihzJiZ2b2lkIDA9PT1hW2VdKWJyZWFrO2lmKDEyOD09PW4ubGVuZ3RoKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQ29tbWFuZCB0b2tlbiB0b28gbG9uZzogJHtuLmxlbmd0aH1gKTtuPWU7cz12b2lkIDAhPT1hPy5bbl19aWYoInRydWUiPT09bilyZXR1cm4hMDtpZigiZmFsc2UiPT09bilyZXR1cm4hMTtpZigibnVsbCI9PT1uKXJldHVybiBudWxsOyJCSSI9PT1uJiYodGhpcy5iZWdpbklubGluZUltYWdlUG9zPXRoaXMuc3RyZWFtLnBvcyk7cmV0dXJuIENtZC5nZXQobil9c2tpcFRvTmV4dExpbmUoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2Zvcig7ZT49MDspe2lmKDEzPT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7MTA9PT1lJiZ0aGlzLm5leHRDaGFyKCk7YnJlYWt9aWYoMTA9PT1lKXt0aGlzLm5leHRDaGFyKCk7YnJlYWt9ZT10aGlzLm5leHRDaGFyKCl9fX1jbGFzcyBMaW5lYXJpemF0aW9ue3N0YXRpYyBjcmVhdGUoZSl7ZnVuY3Rpb24gZ2V0SW50KGUsdCxuPSExKXtjb25zdCBhPWUuZ2V0KHQpO2lmKE51bWJlci5pc0ludGVnZXIoYSkmJihuP2E+PTA6YT4wKSlyZXR1cm4gYTt0aHJvdyBuZXcgRXJyb3IoYFRoZSAiJHt0fSIgcGFyYW1ldGVyIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1jb25zdCB0PW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihlKSx4cmVmOm51bGx9KSxuPXQuZ2V0T2JqKCksYT10LmdldE9iaigpLHM9dC5nZXRPYmooKSxyPXQuZ2V0T2JqKCk7bGV0IGksbztpZighKE51bWJlci5pc0ludGVnZXIobikmJk51bWJlci5pc0ludGVnZXIoYSkmJmlzQ21kKHMsIm9iaiIpJiZyIGluc3RhbmNlb2YgRGljdCYmIm51bWJlciI9PXR5cGVvZihpPXIuZ2V0KCJMaW5lYXJpemVkIikpJiZpPjApKXJldHVybiBudWxsO2lmKChvPWdldEludChyLCJMIikpIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdUaGUgIkwiIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXMgbm90IGVxdWFsIHRoZSBzdHJlYW0gbGVuZ3RoLicpO3JldHVybntsZW5ndGg6byxoaW50czpmdW5jdGlvbiBnZXRIaW50cyhlKXtjb25zdCB0PWUuZ2V0KCJIIik7bGV0IG47aWYoQXJyYXkuaXNBcnJheSh0KSYmKDI9PT0obj10Lmxlbmd0aCl8fDQ9PT1uKSl7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihuKSYmbj4wKSl0aHJvdyBuZXcgRXJyb3IoYEhpbnQgKCR7ZX0pIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1yZXR1cm4gdH10aHJvdyBuZXcgRXJyb3IoIkhpbnQgYXJyYXkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLiIpfShyKSxvYmplY3ROdW1iZXJGaXJzdDpnZXRJbnQociwiTyIpLGVuZEZpcnN0OmdldEludChyLCJFIiksbnVtUGFnZXM6Z2V0SW50KHIsIk4iKSxtYWluWFJlZkVudHJpZXNPZmZzZXQ6Z2V0SW50KHIsIlQiKSxwYWdlRmlyc3Q6ci5oYXMoIlAiKT9nZXRJbnQociwiUCIsITApOjB9fX1jb25zdCBsYT1bIkFkb2JlLUdCMS1VQ1MyIiwiQWRvYmUtQ05TMS1VQ1MyIiwiQWRvYmUtSmFwYW4xLVVDUzIiLCJBZG9iZS1Lb3JlYTEtVUNTMiIsIjc4LUVVQy1IIiwiNzgtRVVDLVYiLCI3OC1IIiwiNzgtUktTSi1IIiwiNzgtUktTSi1WIiwiNzgtViIsIjc4bXMtUktTSi1IIiwiNzhtcy1SS1NKLVYiLCI4M3B2LVJLU0otSCIsIjkwbXMtUktTSi1IIiwiOTBtcy1SS1NKLVYiLCI5MG1zcC1SS1NKLUgiLCI5MG1zcC1SS1NKLVYiLCI5MHB2LVJLU0otSCIsIjkwcHYtUktTSi1WIiwiQWRkLUgiLCJBZGQtUktTSi1IIiwiQWRkLVJLU0otViIsIkFkZC1WIiwiQWRvYmUtQ05TMS0wIiwiQWRvYmUtQ05TMS0xIiwiQWRvYmUtQ05TMS0yIiwiQWRvYmUtQ05TMS0zIiwiQWRvYmUtQ05TMS00IiwiQWRvYmUtQ05TMS01IiwiQWRvYmUtQ05TMS02IiwiQWRvYmUtR0IxLTAiLCJBZG9iZS1HQjEtMSIsIkFkb2JlLUdCMS0yIiwiQWRvYmUtR0IxLTMiLCJBZG9iZS1HQjEtNCIsIkFkb2JlLUdCMS01IiwiQWRvYmUtSmFwYW4xLTAiLCJBZG9iZS1KYXBhbjEtMSIsIkFkb2JlLUphcGFuMS0yIiwiQWRvYmUtSmFwYW4xLTMiLCJBZG9iZS1KYXBhbjEtNCIsIkFkb2JlLUphcGFuMS01IiwiQWRvYmUtSmFwYW4xLTYiLCJBZG9iZS1Lb3JlYTEtMCIsIkFkb2JlLUtvcmVhMS0xIiwiQWRvYmUtS29yZWExLTIiLCJCNS1IIiwiQjUtViIsIkI1cGMtSCIsIkI1cGMtViIsIkNOUy1FVUMtSCIsIkNOUy1FVUMtViIsIkNOUzEtSCIsIkNOUzEtViIsIkNOUzItSCIsIkNOUzItViIsIkVUSEstQjUtSCIsIkVUSEstQjUtViIsIkVUZW4tQjUtSCIsIkVUZW4tQjUtViIsIkVUZW5tcy1CNS1IIiwiRVRlbm1zLUI1LVYiLCJFVUMtSCIsIkVVQy1WIiwiRXh0LUgiLCJFeHQtUktTSi1IIiwiRXh0LVJLU0otViIsIkV4dC1WIiwiR0ItRVVDLUgiLCJHQi1FVUMtViIsIkdCLUgiLCJHQi1WIiwiR0JLLUVVQy1IIiwiR0JLLUVVQy1WIiwiR0JLMkstSCIsIkdCSzJLLVYiLCJHQktwLUVVQy1IIiwiR0JLcC1FVUMtViIsIkdCVC1FVUMtSCIsIkdCVC1FVUMtViIsIkdCVC1IIiwiR0JULVYiLCJHQlRwYy1FVUMtSCIsIkdCVHBjLUVVQy1WIiwiR0JwYy1FVUMtSCIsIkdCcGMtRVVDLVYiLCJIIiwiSEtkbGEtQjUtSCIsIkhLZGxhLUI1LVYiLCJIS2RsYi1CNS1IIiwiSEtkbGItQjUtViIsIkhLZ2Njcy1CNS1IIiwiSEtnY2NzLUI1LVYiLCJIS20zMTQtQjUtSCIsIkhLbTMxNC1CNS1WIiwiSEttNDcxLUI1LUgiLCJIS200NzEtQjUtViIsIkhLc2NzLUI1LUgiLCJIS3Njcy1CNS1WIiwiSGFua2FrdSIsIkhpcmFnYW5hIiwiS1NDLUVVQy1IIiwiS1NDLUVVQy1WIiwiS1NDLUgiLCJLU0MtSm9oYWItSCIsIktTQy1Kb2hhYi1WIiwiS1NDLVYiLCJLU0Ntcy1VSEMtSCIsIktTQ21zLVVIQy1IVy1IIiwiS1NDbXMtVUhDLUhXLVYiLCJLU0Ntcy1VSEMtViIsIktTQ3BjLUVVQy1IIiwiS1NDcGMtRVVDLVYiLCJLYXRha2FuYSIsIk5XUC1IIiwiTldQLVYiLCJSS1NKLUgiLCJSS1NKLVYiLCJSb21hbiIsIlVuaUNOUy1VQ1MyLUgiLCJVbmlDTlMtVUNTMi1WIiwiVW5pQ05TLVVURjE2LUgiLCJVbmlDTlMtVVRGMTYtViIsIlVuaUNOUy1VVEYzMi1IIiwiVW5pQ05TLVVURjMyLVYiLCJVbmlDTlMtVVRGOC1IIiwiVW5pQ05TLVVURjgtViIsIlVuaUdCLVVDUzItSCIsIlVuaUdCLVVDUzItViIsIlVuaUdCLVVURjE2LUgiLCJVbmlHQi1VVEYxNi1WIiwiVW5pR0ItVVRGMzItSCIsIlVuaUdCLVVURjMyLVYiLCJVbmlHQi1VVEY4LUgiLCJVbmlHQi1VVEY4LVYiLCJVbmlKSVMtVUNTMi1IIiwiVW5pSklTLVVDUzItSFctSCIsIlVuaUpJUy1VQ1MyLUhXLVYiLCJVbmlKSVMtVUNTMi1WIiwiVW5pSklTLVVURjE2LUgiLCJVbmlKSVMtVVRGMTYtViIsIlVuaUpJUy1VVEYzMi1IIiwiVW5pSklTLVVURjMyLVYiLCJVbmlKSVMtVVRGOC1IIiwiVW5pSklTLVVURjgtViIsIlVuaUpJUzIwMDQtVVRGMTYtSCIsIlVuaUpJUzIwMDQtVVRGMTYtViIsIlVuaUpJUzIwMDQtVVRGMzItSCIsIlVuaUpJUzIwMDQtVVRGMzItViIsIlVuaUpJUzIwMDQtVVRGOC1IIiwiVW5pSklTMjAwNC1VVEY4LVYiLCJVbmlKSVNQcm8tVUNTMi1IVy1WIiwiVW5pSklTUHJvLVVDUzItViIsIlVuaUpJU1Byby1VVEY4LVYiLCJVbmlKSVNYMDIxMy1VVEYzMi1IIiwiVW5pSklTWDAyMTMtVVRGMzItViIsIlVuaUpJU1gwMjEzMjAwNC1VVEYzMi1IIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLVYiLCJVbmlLUy1VQ1MyLUgiLCJVbmlLUy1VQ1MyLVYiLCJVbmlLUy1VVEYxNi1IIiwiVW5pS1MtVVRGMTYtViIsIlVuaUtTLVVURjMyLUgiLCJVbmlLUy1VVEYzMi1WIiwiVW5pS1MtVVRGOC1IIiwiVW5pS1MtVVRGOC1WIiwiViIsIldQLVN5bWJvbCJdLGZhPTIqKjI0LTE7Y2xhc3MgQ01hcHtjb25zdHJ1Y3RvcihlPSExKXt0aGlzLmNvZGVzcGFjZVJhbmdlcz1bW10sW10sW10sW11dO3RoaXMubnVtQ29kZXNwYWNlUmFuZ2VzPTA7dGhpcy5fbWFwPVtdO3RoaXMubmFtZT0iIjt0aGlzLnZlcnRpY2FsPSExO3RoaXMudXNlQ01hcD1udWxsO3RoaXMuYnVpbHRJbkNNYXA9ZX1hZGRDb2Rlc3BhY2VSYW5nZShlLHQsbil7dGhpcy5jb2Rlc3BhY2VSYW5nZXNbZS0xXS5wdXNoKHQsbik7dGhpcy5udW1Db2Rlc3BhY2VSYW5nZXMrK31tYXBDaWRSYW5nZShlLHQsbil7aWYodC1lPmZhKXRocm93IG5ldyBFcnJvcigibWFwQ2lkUmFuZ2UgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Zm9yKDtlPD10Oyl0aGlzLl9tYXBbZSsrXT1uKyt9bWFwQmZSYW5nZShlLHQsbil7aWYodC1lPmZhKXRocm93IG5ldyBFcnJvcigibWFwQmZSYW5nZSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtjb25zdCBhPW4ubGVuZ3RoLTE7Zm9yKDtlPD10Oyl7dGhpcy5fbWFwW2UrK109bjtjb25zdCB0PW4uY2hhckNvZGVBdChhKSsxO3Q+MjU1P249bi5zdWJzdHJpbmcoMCxhLTEpK1N0cmluZy5mcm9tQ2hhckNvZGUobi5jaGFyQ29kZUF0KGEtMSkrMSkrIlwwIjpuPW4uc3Vic3RyaW5nKDAsYSkrU3RyaW5nLmZyb21DaGFyQ29kZSh0KX19bWFwQmZSYW5nZVRvQXJyYXkoZSx0LG4pe2lmKHQtZT5mYSl0aHJvdyBuZXcgRXJyb3IoIm1hcEJmUmFuZ2VUb0FycmF5IC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IGE9bi5sZW5ndGg7bGV0IHM9MDtmb3IoO2U8PXQmJnM8YTspe3RoaXMuX21hcFtlXT1uW3MrK107KytlfX1tYXBPbmUoZSx0KXt0aGlzLl9tYXBbZV09dH1sb29rdXAoZSl7cmV0dXJuIHRoaXMuX21hcFtlXX1jb250YWlucyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWZvckVhY2goZSl7Y29uc3QgdD10aGlzLl9tYXAsbj10Lmxlbmd0aDtpZihuPD02NTUzNilmb3IobGV0IGE9MDthPG47YSsrKXZvaWQgMCE9PXRbYV0mJmUoYSx0W2FdKTtlbHNlIGZvcihjb25zdCBuIGluIHQpZShuLHRbbl0pfWNoYXJDb2RlT2YoZSl7Y29uc3QgdD10aGlzLl9tYXA7aWYodC5sZW5ndGg8PTY1NTM2KXJldHVybiB0LmluZGV4T2YoZSk7Zm9yKGNvbnN0IG4gaW4gdClpZih0W25dPT09ZSlyZXR1cm4gMHxuO3JldHVybi0xfWdldE1hcCgpe3JldHVybiB0aGlzLl9tYXB9cmVhZENoYXJDb2RlKGUsdCxuKXtsZXQgYT0wO2NvbnN0IHM9dGhpcy5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCByPTAsaT1zLmxlbmd0aDtyPGk7cisrKXthPShhPDw4fGUuY2hhckNvZGVBdCh0K3IpKT4+PjA7Y29uc3QgaT1zW3JdO2ZvcihsZXQgZT0wLHQ9aS5sZW5ndGg7ZTx0Oyl7Y29uc3QgdD1pW2UrK10scz1pW2UrK107aWYoYT49dCYmYTw9cyl7bi5jaGFyY29kZT1hO24ubGVuZ3RoPXIrMTtyZXR1cm59fX1uLmNoYXJjb2RlPTA7bi5sZW5ndGg9MX1nZXRDaGFyQ29kZUxlbmd0aChlKXtjb25zdCB0PXRoaXMuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgbj0wLGE9dC5sZW5ndGg7bjxhO24rKyl7Y29uc3QgYT10W25dO2ZvcihsZXQgdD0wLHM9YS5sZW5ndGg7dDxzOyl7Y29uc3Qgcz1hW3QrK10scj1hW3QrK107aWYoZT49cyYmZTw9cilyZXR1cm4gbisxfX1yZXR1cm4gMX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX21hcC5sZW5ndGh9Z2V0IGlzSWRlbnRpdHlDTWFwKCl7aWYoIklkZW50aXR5LUgiIT09dGhpcy5uYW1lJiYiSWRlbnRpdHktViIhPT10aGlzLm5hbWUpcmV0dXJuITE7aWYoNjU1MzYhPT10aGlzLl9tYXAubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wO2U8NjU1MzY7ZSsrKWlmKHRoaXMuX21hcFtlXSE9PWUpcmV0dXJuITE7cmV0dXJuITB9fWNsYXNzIElkZW50aXR5Q01hcCBleHRlbmRzIENNYXB7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpO3RoaXMudmVydGljYWw9ZTt0aGlzLmFkZENvZGVzcGFjZVJhbmdlKHQsMCw2NTUzNSl9bWFwQ2lkUmFuZ2UoZSx0LG4pe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQ2lkUmFuZ2UiKX1tYXBCZlJhbmdlKGUsdCxuKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcEJmUmFuZ2UiKX1tYXBCZlJhbmdlVG9BcnJheShlLHQsbil7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBCZlJhbmdlVG9BcnJheSIpfW1hcE9uZShlLHQpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQ2lkT25lIil9bG9va3VwKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNT9lOnZvaWQgMH1jb250YWlucyhlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzV9Zm9yRWFjaChlKXtmb3IobGV0IHQ9MDt0PD02NTUzNTt0KyspZSh0LHQpfWNoYXJDb2RlT2YoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1P2U6LTF9Z2V0TWFwKCl7Y29uc3QgZT1uZXcgQXJyYXkoNjU1MzYpO2ZvcihsZXQgdD0wO3Q8PTY1NTM1O3QrKyllW3RdPXQ7cmV0dXJuIGV9Z2V0IGxlbmd0aCgpe3JldHVybiA2NTUzNn1nZXQgaXNJZGVudGl0eUNNYXAoKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBhY2Nlc3MgLmlzSWRlbnRpdHlDTWFwIil9fWZ1bmN0aW9uIHN0clRvSW50KGUpe2xldCB0PTA7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdD10PDw4fGUuY2hhckNvZGVBdChuKTtyZXR1cm4gdD4+PjB9ZnVuY3Rpb24gZXhwZWN0U3RyaW5nKGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBzdHJpbmcuIil9ZnVuY3Rpb24gZXhwZWN0SW50KGUpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWFsZm9ybWVkIENNYXA6IGV4cGVjdGVkIGludC4iKX1mdW5jdGlvbiBwYXJzZUJmQ2hhcihlLHQpe2Zvcig7Oyl7bGV0IG49dC5nZXRPYmooKTtpZihuPT09bG4pYnJlYWs7aWYoaXNDbWQobiwiZW5kYmZjaGFyIikpcmV0dXJuO2V4cGVjdFN0cmluZyhuKTtjb25zdCBhPXN0clRvSW50KG4pO249dC5nZXRPYmooKTtleHBlY3RTdHJpbmcobik7Y29uc3Qgcz1uO2UubWFwT25lKGEscyl9fWZ1bmN0aW9uIHBhcnNlQmZSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IG49dC5nZXRPYmooKTtpZihuPT09bG4pYnJlYWs7aWYoaXNDbWQobiwiZW5kYmZyYW5nZSIpKXJldHVybjtleHBlY3RTdHJpbmcobik7Y29uc3QgYT1zdHJUb0ludChuKTtuPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKG4pO2NvbnN0IHM9c3RyVG9JbnQobik7bj10LmdldE9iaigpO2lmKE51bWJlci5pc0ludGVnZXIobil8fCJzdHJpbmciPT10eXBlb2Ygbil7Y29uc3QgdD1OdW1iZXIuaXNJbnRlZ2VyKG4pP1N0cmluZy5mcm9tQ2hhckNvZGUobik6bjtlLm1hcEJmUmFuZ2UoYSxzLHQpfWVsc2V7aWYoIWlzQ21kKG4sIlsiKSlicmVhazt7bj10LmdldE9iaigpO2NvbnN0IHI9W107Zm9yKDshaXNDbWQobiwiXSIpJiZuIT09bG47KXtyLnB1c2gobik7bj10LmdldE9iaigpfWUubWFwQmZSYW5nZVRvQXJyYXkoYSxzLHIpfX19dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGJmIHJhbmdlLiIpfWZ1bmN0aW9uIHBhcnNlQ2lkQ2hhcihlLHQpe2Zvcig7Oyl7bGV0IG49dC5nZXRPYmooKTtpZihuPT09bG4pYnJlYWs7aWYoaXNDbWQobiwiZW5kY2lkY2hhciIpKXJldHVybjtleHBlY3RTdHJpbmcobik7Y29uc3QgYT1zdHJUb0ludChuKTtuPXQuZ2V0T2JqKCk7ZXhwZWN0SW50KG4pO2NvbnN0IHM9bjtlLm1hcE9uZShhLHMpfX1mdW5jdGlvbiBwYXJzZUNpZFJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgbj10LmdldE9iaigpO2lmKG49PT1sbilicmVhaztpZihpc0NtZChuLCJlbmRjaWRyYW5nZSIpKXJldHVybjtleHBlY3RTdHJpbmcobik7Y29uc3QgYT1zdHJUb0ludChuKTtuPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKG4pO2NvbnN0IHM9c3RyVG9JbnQobik7bj10LmdldE9iaigpO2V4cGVjdEludChuKTtjb25zdCByPW47ZS5tYXBDaWRSYW5nZShhLHMscil9fWZ1bmN0aW9uIHBhcnNlQ29kZXNwYWNlUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBuPXQuZ2V0T2JqKCk7aWYobj09PWxuKWJyZWFrO2lmKGlzQ21kKG4sImVuZGNvZGVzcGFjZXJhbmdlIikpcmV0dXJuO2lmKCJzdHJpbmciIT10eXBlb2YgbilicmVhaztjb25zdCBhPXN0clRvSW50KG4pO249dC5nZXRPYmooKTtpZigic3RyaW5nIiE9dHlwZW9mIG4pYnJlYWs7Y29uc3Qgcz1zdHJUb0ludChuKTtlLmFkZENvZGVzcGFjZVJhbmdlKG4ubGVuZ3RoLGEscyl9dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGNvZGVzcGFjZSByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZVdNb2RlKGUsdCl7Y29uc3Qgbj10LmdldE9iaigpO051bWJlci5pc0ludGVnZXIobikmJihlLnZlcnRpY2FsPSEhbil9ZnVuY3Rpb24gcGFyc2VDTWFwTmFtZShlLHQpe2NvbnN0IG49dC5nZXRPYmooKTtuIGluc3RhbmNlb2YgTmFtZSYmKGUubmFtZT1uLm5hbWUpfWFzeW5jIGZ1bmN0aW9uIHBhcnNlQ01hcChlLHQsbixhKXtsZXQgcyxyO2U6Zm9yKDs7KXRyeXtjb25zdCBuPXQuZ2V0T2JqKCk7aWYobj09PWxuKWJyZWFrO2lmKG4gaW5zdGFuY2VvZiBOYW1lKXsiV01vZGUiPT09bi5uYW1lP3BhcnNlV01vZGUoZSx0KToiQ01hcE5hbWUiPT09bi5uYW1lJiZwYXJzZUNNYXBOYW1lKGUsdCk7cz1ufWVsc2UgaWYobiBpbnN0YW5jZW9mIENtZClzd2l0Y2gobi5jbWQpe2Nhc2UiZW5kY21hcCI6YnJlYWsgZTtjYXNlInVzZWNtYXAiOnMgaW5zdGFuY2VvZiBOYW1lJiYocj1zLm5hbWUpO2JyZWFrO2Nhc2UiYmVnaW5jb2Rlc3BhY2VyYW5nZSI6cGFyc2VDb2Rlc3BhY2VSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5iZmNoYXIiOnBhcnNlQmZDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmNpZGNoYXIiOnBhcnNlQ2lkQ2hhcihlLHQpO2JyZWFrO2Nhc2UiYmVnaW5iZnJhbmdlIjpwYXJzZUJmUmFuZ2UoZSx0KTticmVhaztjYXNlImJlZ2luY2lkcmFuZ2UiOnBhcnNlQ2lkUmFuZ2UoZSx0KX19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiSW52YWxpZCBjTWFwIGRhdGE6ICIrZSk7Y29udGludWV9IWEmJnImJihhPXIpO3JldHVybiBhP2V4dGVuZENNYXAoZSxuLGEpOmV9YXN5bmMgZnVuY3Rpb24gZXh0ZW5kQ01hcChlLHQsbil7ZS51c2VDTWFwPWF3YWl0IGNyZWF0ZUJ1aWx0SW5DTWFwKG4sdCk7aWYoMD09PWUubnVtQ29kZXNwYWNlUmFuZ2VzKXtjb25zdCB0PWUudXNlQ01hcC5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspZS5jb2Rlc3BhY2VSYW5nZXNbbl09dFtuXS5zbGljZSgpO2UubnVtQ29kZXNwYWNlUmFuZ2VzPWUudXNlQ01hcC5udW1Db2Rlc3BhY2VSYW5nZXN9ZS51c2VDTWFwLmZvckVhY2goZnVuY3Rpb24odCxuKXtlLmNvbnRhaW5zKHQpfHxlLm1hcE9uZSh0LG4pfSk7cmV0dXJuIGV9YXN5bmMgZnVuY3Rpb24gY3JlYXRlQnVpbHRJbkNNYXAoZSx0KXtpZigiSWRlbnRpdHktSCI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCExLDIpO2lmKCJJZGVudGl0eS1WIj09PWUpcmV0dXJuIG5ldyBJZGVudGl0eUNNYXAoITAsMik7aWYoIWxhLmluY2x1ZGVzKGUpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBDTWFwIG5hbWU6ICIrZSk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJCdWlsdC1pbiBDTWFwIHBhcmFtZXRlcnMgYXJlIG5vdCBwcm92aWRlZC4iKTtjb25zdHtjTWFwRGF0YTpuLGlzQ29tcHJlc3NlZDphfT1hd2FpdCB0KGUpLHM9bmV3IENNYXAoITApO2lmKGEpcmV0dXJuKG5ldyBCaW5hcnlDTWFwUmVhZGVyKS5wcm9jZXNzKG4scyxlPT5leHRlbmRDTWFwKHMsdCxlKSk7Y29uc3Qgcj1uZXcgTGV4ZXIobmV3IFN0cmVhbShuKSk7cmV0dXJuIHBhcnNlQ01hcChzLHIsdCxudWxsKX1jbGFzcyBDTWFwRmFjdG9yeXtzdGF0aWMgYXN5bmMgY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dCx1c2VDTWFwOm59KXtpZihlIGluc3RhbmNlb2YgTmFtZSlyZXR1cm4gY3JlYXRlQnVpbHRJbkNNYXAoZS5uYW1lLHQpO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtpZihlLmlzQXN5bmMpe2NvbnN0IHQ9YXdhaXQgZS5hc3luY0dldEJ5dGVzKCk7dCYmKGU9bmV3IFN0cmVhbSh0LDAsdC5sZW5ndGgsZS5kaWN0KSl9Y29uc3QgYT1hd2FpdCBwYXJzZUNNYXAobmV3IENNYXAsbmV3IExleGVyKGUpLHQsbik7cmV0dXJuIGEuaXNJZGVudGl0eUNNYXA/Y3JlYXRlQnVpbHRJbkNNYXAoYS5uYW1lLHQpOmF9dGhyb3cgbmV3IEVycm9yKCJFbmNvZGluZyByZXF1aXJlZC4iKX19Y29uc3QgY2E9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCIiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCIiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCIiLCIiLCIiLCJpc3VwZXJpb3IiLCIiLCIiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCIiLCIiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCIiLCIiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiIiwiRG90YWNjZW50c21hbGwiLCIiLCIiLCJNYWNyb25zbWFsbCIsIiIsIiIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIiIsIiIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXSxoYT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImNlbnRvbGRzdHlsZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCIiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwiIiwicXVlc3Rpb25zbWFsbCIsIiIsIiIsIiIsIiIsIkV0aHNtYWxsIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsIiIsIiIsIiIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuaW5mZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCJhc3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJBYWN1dGVzbWFsbCIsIkFncmF2ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXRpbGRlc21hbGwiLCJBcmluZ3NtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJYWN1dGVzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiTnRpbGRlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT3RpbGRlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiIiwiZWlnaHRzdXBlcmlvciIsImZvdXJpbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiU2Nhcm9uc21hbGwiLCIiLCJjZW50aW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsIiIsIkRpZXJlc2lzc21hbGwiLCIiLCJDYXJvbnNtYWxsIiwib3N1cGVyaW9yIiwiZml2ZWluZmVyaW9yIiwiIiwiY29tbWFpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiWWFjdXRlc21hbGwiLCIiLCJkb2xsYXJpbmZlcmlvciIsIiIsIiIsIlRob3Juc21hbGwiLCIiLCJuaW5laW5mZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJaY2Fyb25zbWFsbCIsIkFFc21hbGwiLCJPc2xhc2hzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25laW5mZXJpb3IiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIk9Fc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCIiLCJZZGllcmVzaXNzbWFsbCIsIiIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb3N1cGVyaW9yIiwiIiwiZXN1cGVyaW9yIiwicnN1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiIiwiaXN1cGVyaW9yIiwic3N1cGVyaW9yIiwiZHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiIiwibHN1cGVyaW9yIiwiT2dvbmVrc21hbGwiLCJCcmV2ZXNtYWxsIiwiTWFjcm9uc21hbGwiLCJic3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJjb21tYXN1cGVyaW9yIiwicGVyaW9kc3VwZXJpb3IiLCJEb3RhY2NlbnRzbWFsbCIsIlJpbmdzbWFsbCIsIiIsIiIsIiIsIiJdLHVhPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJOdGlsZGUiLCJPZGllcmVzaXMiLCJVZGllcmVzaXMiLCJhYWN1dGUiLCJhZ3JhdmUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImF0aWxkZSIsImFyaW5nIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlZ3JhdmUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlhY3V0ZSIsImlncmF2ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwibnRpbGRlIiwib2FjdXRlIiwib2dyYXZlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvdGlsZGUiLCJ1YWN1dGUiLCJ1Z3JhdmUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsImRhZ2dlciIsImRlZ3JlZSIsImNlbnQiLCJzdGVybGluZyIsInNlY3Rpb24iLCJidWxsZXQiLCJwYXJhZ3JhcGgiLCJnZXJtYW5kYmxzIiwicmVnaXN0ZXJlZCIsImNvcHlyaWdodCIsInRyYWRlbWFyayIsImFjdXRlIiwiZGllcmVzaXMiLCJub3RlcXVhbCIsIkFFIiwiT3NsYXNoIiwiaW5maW5pdHkiLCJwbHVzbWludXMiLCJsZXNzZXF1YWwiLCJncmVhdGVyZXF1YWwiLCJ5ZW4iLCJtdSIsInBhcnRpYWxkaWZmIiwic3VtbWF0aW9uIiwicHJvZHVjdCIsInBpIiwiaW50ZWdyYWwiLCJvcmRmZW1pbmluZSIsIm9yZG1hc2N1bGluZSIsIk9tZWdhIiwiYWUiLCJvc2xhc2giLCJxdWVzdGlvbmRvd24iLCJleGNsYW1kb3duIiwibG9naWNhbG5vdCIsInJhZGljYWwiLCJmbG9yaW4iLCJhcHByb3hlcXVhbCIsIkRlbHRhIiwiZ3VpbGxlbW90bGVmdCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIl0sbWE9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsIiIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwiIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwiIiwicXVlc3Rpb25kb3duIiwiIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCIiLCJyaW5nIiwiY2VkaWxsYSIsIiIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiQUUiLCIiLCJvcmRmZW1pbmluZSIsIiIsIiIsIiIsIiIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiIiwiIiwiIiwiIiwiIiwiYWUiLCIiLCIiLCIiLCJkb3RsZXNzaSIsIiIsIiIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIiIsIiIsIiIsIiJdLHBhPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImJ1bGxldCIsIkV1cm8iLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsImZsb3JpbiIsInF1b3RlZGJsYmFzZSIsImVsbGlwc2lzIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwiY2lyY3VtZmxleCIsInBlcnRob3VzYW5kIiwiU2Nhcm9uIiwiZ3VpbHNpbmdsbGVmdCIsIk9FIiwiYnVsbGV0IiwiWmNhcm9uIiwiYnVsbGV0IiwiYnVsbGV0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJidWxsZXQiLCJlbmRhc2giLCJlbWRhc2giLCJ0aWxkZSIsInRyYWRlbWFyayIsInNjYXJvbiIsImd1aWxzaW5nbHJpZ2h0Iiwib2UiLCJidWxsZXQiLCJ6Y2Fyb24iLCJZZGllcmVzaXMiLCJzcGFjZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJjdXJyZW5jeSIsInllbiIsImJyb2tlbmJhciIsInNlY3Rpb24iLCJkaWVyZXNpcyIsImNvcHlyaWdodCIsIm9yZGZlbWluaW5lIiwiZ3VpbGxlbW90bGVmdCIsImxvZ2ljYWxub3QiLCJoeXBoZW4iLCJyZWdpc3RlcmVkIiwibWFjcm9uIiwiZGVncmVlIiwicGx1c21pbnVzIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiYWN1dGUiLCJtdSIsInBhcmFncmFwaCIsInBlcmlvZGNlbnRlcmVkIiwiY2VkaWxsYSIsIm9uZXN1cGVyaW9yIiwib3JkbWFzY3VsaW5lIiwiZ3VpbGxlbW90cmlnaHQiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd24iLCJBZ3JhdmUiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkF0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQUUiLCJDY2VkaWxsYSIsIkVncmF2ZSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiSWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJFdGgiLCJOdGlsZGUiLCJPZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk90aWxkZSIsIk9kaWVyZXNpcyIsIm11bHRpcGx5IiwiT3NsYXNoIiwiVWdyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJZYWN1dGUiLCJUaG9ybiIsImdlcm1hbmRibHMiLCJhZ3JhdmUiLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImF0aWxkZSIsImFkaWVyZXNpcyIsImFyaW5nIiwiYWUiLCJjY2VkaWxsYSIsImVncmF2ZSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJldGgiLCJudGlsZGUiLCJvZ3JhdmUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm90aWxkZSIsIm9kaWVyZXNpcyIsImRpdmlkZSIsIm9zbGFzaCIsInVncmF2ZSIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwieWFjdXRlIiwidGhvcm4iLCJ5ZGllcmVzaXMiXSxkYT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwidW5pdmVyc2FsIiwibnVtYmVyc2lnbiIsImV4aXN0ZW50aWFsIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInN1Y2h0aGF0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrbWF0aCIsInBsdXMiLCJjb21tYSIsIm1pbnVzIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJjb25ncnVlbnQiLCJBbHBoYSIsIkJldGEiLCJDaGkiLCJEZWx0YSIsIkVwc2lsb24iLCJQaGkiLCJHYW1tYSIsIkV0YSIsIklvdGEiLCJ0aGV0YTEiLCJLYXBwYSIsIkxhbWJkYSIsIk11IiwiTnUiLCJPbWljcm9uIiwiUGkiLCJUaGV0YSIsIlJobyIsIlNpZ21hIiwiVGF1IiwiVXBzaWxvbiIsInNpZ21hMSIsIk9tZWdhIiwiWGkiLCJQc2kiLCJaZXRhIiwiYnJhY2tldGxlZnQiLCJ0aGVyZWZvcmUiLCJicmFja2V0cmlnaHQiLCJwZXJwZW5kaWN1bGFyIiwidW5kZXJzY29yZSIsInJhZGljYWxleCIsImFscGhhIiwiYmV0YSIsImNoaSIsImRlbHRhIiwiZXBzaWxvbiIsInBoaSIsImdhbW1hIiwiZXRhIiwiaW90YSIsInBoaTEiLCJrYXBwYSIsImxhbWJkYSIsIm11IiwibnUiLCJvbWljcm9uIiwicGkiLCJ0aGV0YSIsInJobyIsInNpZ21hIiwidGF1IiwidXBzaWxvbiIsIm9tZWdhMSIsIm9tZWdhIiwieGkiLCJwc2kiLCJ6ZXRhIiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsInNpbWlsYXIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJFdXJvIiwiVXBzaWxvbjEiLCJtaW51dGUiLCJsZXNzZXF1YWwiLCJmcmFjdGlvbiIsImluZmluaXR5IiwiZmxvcmluIiwiY2x1YiIsImRpYW1vbmQiLCJoZWFydCIsInNwYWRlIiwiYXJyb3dib3RoIiwiYXJyb3dsZWZ0IiwiYXJyb3d1cCIsImFycm93cmlnaHQiLCJhcnJvd2Rvd24iLCJkZWdyZWUiLCJwbHVzbWludXMiLCJzZWNvbmQiLCJncmVhdGVyZXF1YWwiLCJtdWx0aXBseSIsInByb3BvcnRpb25hbCIsInBhcnRpYWxkaWZmIiwiYnVsbGV0IiwiZGl2aWRlIiwibm90ZXF1YWwiLCJlcXVpdmFsZW5jZSIsImFwcHJveGVxdWFsIiwiZWxsaXBzaXMiLCJhcnJvd3ZlcnRleCIsImFycm93aG9yaXpleCIsImNhcnJpYWdlcmV0dXJuIiwiYWxlcGgiLCJJZnJha3R1ciIsIlJmcmFrdHVyIiwid2VpZXJzdHJhc3MiLCJjaXJjbGVtdWx0aXBseSIsImNpcmNsZXBsdXMiLCJlbXB0eXNldCIsImludGVyc2VjdGlvbiIsInVuaW9uIiwicHJvcGVyc3VwZXJzZXQiLCJyZWZsZXhzdXBlcnNldCIsIm5vdHN1YnNldCIsInByb3BlcnN1YnNldCIsInJlZmxleHN1YnNldCIsImVsZW1lbnQiLCJub3RlbGVtZW50IiwiYW5nbGUiLCJncmFkaWVudCIsInJlZ2lzdGVyc2VyaWYiLCJjb3B5cmlnaHRzZXJpZiIsInRyYWRlbWFya3NlcmlmIiwicHJvZHVjdCIsInJhZGljYWwiLCJkb3RtYXRoIiwibG9naWNhbG5vdCIsImxvZ2ljYWxhbmQiLCJsb2dpY2Fsb3IiLCJhcnJvd2RibGJvdGgiLCJhcnJvd2RibGxlZnQiLCJhcnJvd2RibHVwIiwiYXJyb3dkYmxyaWdodCIsImFycm93ZGJsZG93biIsImxvemVuZ2UiLCJhbmdsZWxlZnQiLCJyZWdpc3RlcnNhbnMiLCJjb3B5cmlnaHRzYW5zIiwidHJhZGVtYXJrc2FucyIsInN1bW1hdGlvbiIsInBhcmVubGVmdHRwIiwicGFyZW5sZWZ0ZXgiLCJwYXJlbmxlZnRidCIsImJyYWNrZXRsZWZ0dHAiLCJicmFja2V0bGVmdGV4IiwiYnJhY2tldGxlZnRidCIsImJyYWNlbGVmdHRwIiwiYnJhY2VsZWZ0bWlkIiwiYnJhY2VsZWZ0YnQiLCJicmFjZWV4IiwiIiwiYW5nbGVyaWdodCIsImludGVncmFsIiwiaW50ZWdyYWx0cCIsImludGVncmFsZXgiLCJpbnRlZ3JhbGJ0IiwicGFyZW5yaWdodHRwIiwicGFyZW5yaWdodGV4IiwicGFyZW5yaWdodGJ0IiwiYnJhY2tldHJpZ2h0dHAiLCJicmFja2V0cmlnaHRleCIsImJyYWNrZXRyaWdodGJ0IiwiYnJhY2VyaWdodHRwIiwiYnJhY2VyaWdodG1pZCIsImJyYWNlcmlnaHRidCIsIiJdLGdhPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJhMSIsImEyIiwiYTIwMiIsImEzIiwiYTQiLCJhNSIsImExMTkiLCJhMTE4IiwiYTExNyIsImExMSIsImExMiIsImExMyIsImExNCIsImExNSIsImExNiIsImExMDUiLCJhMTciLCJhMTgiLCJhMTkiLCJhMjAiLCJhMjEiLCJhMjIiLCJhMjMiLCJhMjQiLCJhMjUiLCJhMjYiLCJhMjciLCJhMjgiLCJhNiIsImE3IiwiYTgiLCJhOSIsImExMCIsImEyOSIsImEzMCIsImEzMSIsImEzMiIsImEzMyIsImEzNCIsImEzNSIsImEzNiIsImEzNyIsImEzOCIsImEzOSIsImE0MCIsImE0MSIsImE0MiIsImE0MyIsImE0NCIsImE0NSIsImE0NiIsImE0NyIsImE0OCIsImE0OSIsImE1MCIsImE1MSIsImE1MiIsImE1MyIsImE1NCIsImE1NSIsImE1NiIsImE1NyIsImE1OCIsImE1OSIsImE2MCIsImE2MSIsImE2MiIsImE2MyIsImE2NCIsImE2NSIsImE2NiIsImE2NyIsImE2OCIsImE2OSIsImE3MCIsImE3MSIsImE3MiIsImE3MyIsImE3NCIsImEyMDMiLCJhNzUiLCJhMjA0IiwiYTc2IiwiYTc3IiwiYTc4IiwiYTc5IiwiYTgxIiwiYTgyIiwiYTgzIiwiYTg0IiwiYTk3IiwiYTk4IiwiYTk5IiwiYTEwMCIsIiIsImE4OSIsImE5MCIsImE5MyIsImE5NCIsImE5MSIsImE5MiIsImEyMDUiLCJhODUiLCJhMjA2IiwiYTg2IiwiYTg3IiwiYTg4IiwiYTk1IiwiYTk2IiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiYTEwMSIsImExMDIiLCJhMTAzIiwiYTEwNCIsImExMDYiLCJhMTA3IiwiYTEwOCIsImExMTIiLCJhMTExIiwiYTExMCIsImExMDkiLCJhMTIwIiwiYTEyMSIsImExMjIiLCJhMTIzIiwiYTEyNCIsImExMjUiLCJhMTI2IiwiYTEyNyIsImExMjgiLCJhMTI5IiwiYTEzMCIsImExMzEiLCJhMTMyIiwiYTEzMyIsImExMzQiLCJhMTM1IiwiYTEzNiIsImExMzciLCJhMTM4IiwiYTEzOSIsImExNDAiLCJhMTQxIiwiYTE0MiIsImExNDMiLCJhMTQ0IiwiYTE0NSIsImExNDYiLCJhMTQ3IiwiYTE0OCIsImExNDkiLCJhMTUwIiwiYTE1MSIsImExNTIiLCJhMTUzIiwiYTE1NCIsImExNTUiLCJhMTU2IiwiYTE1NyIsImExNTgiLCJhMTU5IiwiYTE2MCIsImExNjEiLCJhMTYzIiwiYTE2NCIsImExOTYiLCJhMTY1IiwiYTE5MiIsImExNjYiLCJhMTY3IiwiYTE2OCIsImExNjkiLCJhMTcwIiwiYTE3MSIsImExNzIiLCJhMTczIiwiYTE2MiIsImExNzQiLCJhMTc1IiwiYTE3NiIsImExNzciLCJhMTc4IiwiYTE3OSIsImExOTMiLCJhMTgwIiwiYTE5OSIsImExODEiLCJhMjAwIiwiYTE4MiIsIiIsImEyMDEiLCJhMTgzIiwiYTE4NCIsImExOTciLCJhMTg1IiwiYTE5NCIsImExOTgiLCJhMTg2IiwiYTE5NSIsImExODciLCJhMTg4IiwiYTE4OSIsImExOTAiLCJhMTkxIiwiIl07ZnVuY3Rpb24gZ2V0RW5jb2RpbmcoZSl7c3dpdGNoKGUpe2Nhc2UiV2luQW5zaUVuY29kaW5nIjpyZXR1cm4gcGE7Y2FzZSJTdGFuZGFyZEVuY29kaW5nIjpyZXR1cm4gbWE7Y2FzZSJNYWNSb21hbkVuY29kaW5nIjpyZXR1cm4gdWE7Y2FzZSJTeW1ib2xTZXRFbmNvZGluZyI6cmV0dXJuIGRhO2Nhc2UiWmFwZkRpbmdiYXRzRW5jb2RpbmciOnJldHVybiBnYTtjYXNlIkV4cGVydEVuY29kaW5nIjpyZXR1cm4gY2E7Y2FzZSJNYWNFeHBlcnRFbmNvZGluZyI6cmV0dXJuIGhhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWNvbnN0IGJhPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLkE9NjU7ZS5BRT0xOTg7ZS5BRWFjdXRlPTUwODtlLkFFbWFjcm9uPTQ4MjtlLkFFc21hbGw9NjM0NjI7ZS5BYWN1dGU9MTkzO2UuQWFjdXRlc21hbGw9NjM0NTc7ZS5BYnJldmU9MjU4O2UuQWJyZXZlYWN1dGU9Nzg1NDtlLkFicmV2ZWN5cmlsbGljPTEyMzI7ZS5BYnJldmVkb3RiZWxvdz03ODYyO2UuQWJyZXZlZ3JhdmU9Nzg1NjtlLkFicmV2ZWhvb2thYm92ZT03ODU4O2UuQWJyZXZldGlsZGU9Nzg2MDtlLkFjYXJvbj00NjE7ZS5BY2lyY2xlPTkzOTg7ZS5BY2lyY3VtZmxleD0xOTQ7ZS5BY2lyY3VtZmxleGFjdXRlPTc4NDQ7ZS5BY2lyY3VtZmxleGRvdGJlbG93PTc4NTI7ZS5BY2lyY3VtZmxleGdyYXZlPTc4NDY7ZS5BY2lyY3VtZmxleGhvb2thYm92ZT03ODQ4O2UuQWNpcmN1bWZsZXhzbWFsbD02MzQ1ODtlLkFjaXJjdW1mbGV4dGlsZGU9Nzg1MDtlLkFjdXRlPTYzMTc3O2UuQWN1dGVzbWFsbD02MzQxMjtlLkFjeXJpbGxpYz0xMDQwO2UuQWRibGdyYXZlPTUxMjtlLkFkaWVyZXNpcz0xOTY7ZS5BZGllcmVzaXNjeXJpbGxpYz0xMjM0O2UuQWRpZXJlc2lzbWFjcm9uPTQ3ODtlLkFkaWVyZXNpc3NtYWxsPTYzNDYwO2UuQWRvdGJlbG93PTc4NDA7ZS5BZG90bWFjcm9uPTQ4MDtlLkFncmF2ZT0xOTI7ZS5BZ3JhdmVzbWFsbD02MzQ1NjtlLkFob29rYWJvdmU9Nzg0MjtlLkFpZWN5cmlsbGljPTEyMzY7ZS5BaW52ZXJ0ZWRicmV2ZT01MTQ7ZS5BbHBoYT05MTM7ZS5BbHBoYXRvbm9zPTkwMjtlLkFtYWNyb249MjU2O2UuQW1vbm9zcGFjZT02NTMxMztlLkFvZ29uZWs9MjYwO2UuQXJpbmc9MTk3O2UuQXJpbmdhY3V0ZT01MDY7ZS5BcmluZ2JlbG93PTc2ODA7ZS5BcmluZ3NtYWxsPTYzNDYxO2UuQXNtYWxsPTYzMzI5O2UuQXRpbGRlPTE5NTtlLkF0aWxkZXNtYWxsPTYzNDU5O2UuQXliYXJtZW5pYW49MTMyOTtlLkI9NjY7ZS5CY2lyY2xlPTkzOTk7ZS5CZG90YWNjZW50PTc2ODI7ZS5CZG90YmVsb3c9NzY4NDtlLkJlY3lyaWxsaWM9MTA0MTtlLkJlbmFybWVuaWFuPTEzMzA7ZS5CZXRhPTkxNDtlLkJob29rPTM4NTtlLkJsaW5lYmVsb3c9NzY4NjtlLkJtb25vc3BhY2U9NjUzMTQ7ZS5CcmV2ZXNtYWxsPTYzMjIwO2UuQnNtYWxsPTYzMzMwO2UuQnRvcGJhcj0zODY7ZS5DPTY3O2UuQ2Fhcm1lbmlhbj0xMzQyO2UuQ2FjdXRlPTI2MjtlLkNhcm9uPTYzMTc4O2UuQ2Fyb25zbWFsbD02MzIyMTtlLkNjYXJvbj0yNjg7ZS5DY2VkaWxsYT0xOTk7ZS5DY2VkaWxsYWFjdXRlPTc2ODg7ZS5DY2VkaWxsYXNtYWxsPTYzNDYzO2UuQ2NpcmNsZT05NDAwO2UuQ2NpcmN1bWZsZXg9MjY0O2UuQ2RvdD0yNjY7ZS5DZG90YWNjZW50PTI2NjtlLkNlZGlsbGFzbWFsbD02MzQxNjtlLkNoYWFybWVuaWFuPTEzNTM7ZS5DaGVhYmtoYXNpYW5jeXJpbGxpYz0xMjEyO2UuQ2hlY3lyaWxsaWM9MTA2MztlLkNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljPTEyMTQ7ZS5DaGVkZXNjZW5kZXJjeXJpbGxpYz0xMjA2O2UuQ2hlZGllcmVzaXNjeXJpbGxpYz0xMjY4O2UuQ2hlaGFybWVuaWFuPTEzNDc7ZS5DaGVraGFrYXNzaWFuY3lyaWxsaWM9MTIyNztlLkNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTIwODtlLkNoaT05MzU7ZS5DaG9vaz0zOTE7ZS5DaXJjdW1mbGV4c21hbGw9NjMyMjI7ZS5DbW9ub3NwYWNlPTY1MzE1O2UuQ29hcm1lbmlhbj0xMzYxO2UuQ3NtYWxsPTYzMzMxO2UuRD02ODtlLkRaPTQ5NztlLkRaY2Fyb249NDUyO2UuRGFhcm1lbmlhbj0xMzMyO2UuRGFmcmljYW49MzkzO2UuRGNhcm9uPTI3MDtlLkRjZWRpbGxhPTc2OTY7ZS5EY2lyY2xlPTk0MDE7ZS5EY2lyY3VtZmxleGJlbG93PTc2OTg7ZS5EY3JvYXQ9MjcyO2UuRGRvdGFjY2VudD03NjkwO2UuRGRvdGJlbG93PTc2OTI7ZS5EZWN5cmlsbGljPTEwNDQ7ZS5EZWljb3B0aWM9MTAwNjtlLkRlbHRhPTg3MTA7ZS5EZWx0YWdyZWVrPTkxNjtlLkRob29rPTM5NDtlLkRpZXJlc2lzPTYzMTc5O2UuRGllcmVzaXNBY3V0ZT02MzE4MDtlLkRpZXJlc2lzR3JhdmU9NjMxODE7ZS5EaWVyZXNpc3NtYWxsPTYzNDAwO2UuRGlnYW1tYWdyZWVrPTk4ODtlLkRqZWN5cmlsbGljPTEwMjY7ZS5EbGluZWJlbG93PTc2OTQ7ZS5EbW9ub3NwYWNlPTY1MzE2O2UuRG90YWNjZW50c21hbGw9NjMyMjM7ZS5Ec2xhc2g9MjcyO2UuRHNtYWxsPTYzMzMyO2UuRHRvcGJhcj0zOTU7ZS5Eej00OTg7ZS5EemNhcm9uPTQ1MztlLkR6ZWFia2hhc2lhbmN5cmlsbGljPTEyNDg7ZS5EemVjeXJpbGxpYz0xMDI5O2UuRHpoZWN5cmlsbGljPTEwMzk7ZS5FPTY5O2UuRWFjdXRlPTIwMTtlLkVhY3V0ZXNtYWxsPTYzNDY1O2UuRWJyZXZlPTI3NjtlLkVjYXJvbj0yODI7ZS5FY2VkaWxsYWJyZXZlPTc3MDg7ZS5FY2hhcm1lbmlhbj0xMzMzO2UuRWNpcmNsZT05NDAyO2UuRWNpcmN1bWZsZXg9MjAyO2UuRWNpcmN1bWZsZXhhY3V0ZT03ODcwO2UuRWNpcmN1bWZsZXhiZWxvdz03NzA0O2UuRWNpcmN1bWZsZXhkb3RiZWxvdz03ODc4O2UuRWNpcmN1bWZsZXhncmF2ZT03ODcyO2UuRWNpcmN1bWZsZXhob29rYWJvdmU9Nzg3NDtlLkVjaXJjdW1mbGV4c21hbGw9NjM0NjY7ZS5FY2lyY3VtZmxleHRpbGRlPTc4NzY7ZS5FY3lyaWxsaWM9MTAyODtlLkVkYmxncmF2ZT01MTY7ZS5FZGllcmVzaXM9MjAzO2UuRWRpZXJlc2lzc21hbGw9NjM0Njc7ZS5FZG90PTI3ODtlLkVkb3RhY2NlbnQ9Mjc4O2UuRWRvdGJlbG93PTc4NjQ7ZS5FZmN5cmlsbGljPTEwNjA7ZS5FZ3JhdmU9MjAwO2UuRWdyYXZlc21hbGw9NjM0NjQ7ZS5FaGFybWVuaWFuPTEzMzU7ZS5FaG9va2Fib3ZlPTc4NjY7ZS5FaWdodHJvbWFuPTg1NTE7ZS5FaW52ZXJ0ZWRicmV2ZT01MTg7ZS5FaW90aWZpZWRjeXJpbGxpYz0xMTI0O2UuRWxjeXJpbGxpYz0xMDUxO2UuRWxldmVucm9tYW49ODU1NDtlLkVtYWNyb249Mjc0O2UuRW1hY3JvbmFjdXRlPTc3MDI7ZS5FbWFjcm9uZ3JhdmU9NzcwMDtlLkVtY3lyaWxsaWM9MTA1MjtlLkVtb25vc3BhY2U9NjUzMTc7ZS5FbmN5cmlsbGljPTEwNTM7ZS5FbmRlc2NlbmRlcmN5cmlsbGljPTExODY7ZS5Fbmc9MzMwO2UuRW5naGVjeXJpbGxpYz0xMTg4O2UuRW5ob29rY3lyaWxsaWM9MTIyMztlLkVvZ29uZWs9MjgwO2UuRW9wZW49NDAwO2UuRXBzaWxvbj05MTc7ZS5FcHNpbG9udG9ub3M9OTA0O2UuRXJjeXJpbGxpYz0xMDU2O2UuRXJldmVyc2VkPTM5ODtlLkVyZXZlcnNlZGN5cmlsbGljPTEwNjk7ZS5Fc2N5cmlsbGljPTEwNTc7ZS5Fc2Rlc2NlbmRlcmN5cmlsbGljPTExOTQ7ZS5Fc2g9NDI1O2UuRXNtYWxsPTYzMzMzO2UuRXRhPTkxOTtlLkV0YXJtZW5pYW49MTMzNjtlLkV0YXRvbm9zPTkwNTtlLkV0aD0yMDg7ZS5FdGhzbWFsbD02MzQ3MjtlLkV0aWxkZT03ODY4O2UuRXRpbGRlYmVsb3c9NzcwNjtlLkV1cm89ODM2NDtlLkV6aD00Mzk7ZS5FemhjYXJvbj00OTQ7ZS5FemhyZXZlcnNlZD00NDA7ZS5GPTcwO2UuRmNpcmNsZT05NDAzO2UuRmRvdGFjY2VudD03NzEwO2UuRmVoYXJtZW5pYW49MTM2NjtlLkZlaWNvcHRpYz05OTY7ZS5GaG9vaz00MDE7ZS5GaXRhY3lyaWxsaWM9MTEzODtlLkZpdmVyb21hbj04NTQ4O2UuRm1vbm9zcGFjZT02NTMxODtlLkZvdXJyb21hbj04NTQ3O2UuRnNtYWxsPTYzMzM0O2UuRz03MTtlLkdCc3F1YXJlPTEzMTkxO2UuR2FjdXRlPTUwMDtlLkdhbW1hPTkxNTtlLkdhbW1hYWZyaWNhbj00MDQ7ZS5HYW5naWFjb3B0aWM9MTAwMjtlLkdicmV2ZT0yODY7ZS5HY2Fyb249NDg2O2UuR2NlZGlsbGE9MjkwO2UuR2NpcmNsZT05NDA0O2UuR2NpcmN1bWZsZXg9Mjg0O2UuR2NvbW1hYWNjZW50PTI5MDtlLkdkb3Q9Mjg4O2UuR2RvdGFjY2VudD0yODg7ZS5HZWN5cmlsbGljPTEwNDM7ZS5HaGFkYXJtZW5pYW49MTM0NjtlLkdoZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTcyO2UuR2hlc3Ryb2tlY3lyaWxsaWM9MTE3MDtlLkdoZXVwdHVybmN5cmlsbGljPTExNjg7ZS5HaG9vaz00MDM7ZS5HaW1hcm1lbmlhbj0xMzMxO2UuR2plY3lyaWxsaWM9MTAyNztlLkdtYWNyb249NzcxMjtlLkdtb25vc3BhY2U9NjUzMTk7ZS5HcmF2ZT02MzE4MjtlLkdyYXZlc21hbGw9NjMzMjg7ZS5Hc21hbGw9NjMzMzU7ZS5Hc21hbGxob29rPTY2NztlLkdzdHJva2U9NDg0O2UuSD03MjtlLkgxODUzMz05Njc5O2UuSDE4NTQzPTk2NDI7ZS5IMTg1NTE9OTY0MztlLkgyMjA3Mz05NjMzO2UuSFBzcXVhcmU9MTMyNTk7ZS5IYWFia2hhc2lhbmN5cmlsbGljPTExOTI7ZS5IYWRlc2NlbmRlcmN5cmlsbGljPTEyMDI7ZS5IYXJkc2lnbmN5cmlsbGljPTEwNjY7ZS5IYmFyPTI5NDtlLkhicmV2ZWJlbG93PTc3MjI7ZS5IY2VkaWxsYT03NzIwO2UuSGNpcmNsZT05NDA1O2UuSGNpcmN1bWZsZXg9MjkyO2UuSGRpZXJlc2lzPTc3MTg7ZS5IZG90YWNjZW50PTc3MTQ7ZS5IZG90YmVsb3c9NzcxNjtlLkhtb25vc3BhY2U9NjUzMjA7ZS5Ib2FybWVuaWFuPTEzNDQ7ZS5Ib3JpY29wdGljPTFlMztlLkhzbWFsbD02MzMzNjtlLkh1bmdhcnVtbGF1dD02MzE4MztlLkh1bmdhcnVtbGF1dHNtYWxsPTYzMjI0O2UuSHpzcXVhcmU9MTMyMDA7ZS5JPTczO2UuSUFjeXJpbGxpYz0xMDcxO2UuSUo9MzA2O2UuSVVjeXJpbGxpYz0xMDcwO2UuSWFjdXRlPTIwNTtlLklhY3V0ZXNtYWxsPTYzNDY5O2UuSWJyZXZlPTMwMDtlLkljYXJvbj00NjM7ZS5JY2lyY2xlPTk0MDY7ZS5JY2lyY3VtZmxleD0yMDY7ZS5JY2lyY3VtZmxleHNtYWxsPTYzNDcwO2UuSWN5cmlsbGljPTEwMzA7ZS5JZGJsZ3JhdmU9NTIwO2UuSWRpZXJlc2lzPTIwNztlLklkaWVyZXNpc2FjdXRlPTc3MjY7ZS5JZGllcmVzaXNjeXJpbGxpYz0xMjUyO2UuSWRpZXJlc2lzc21hbGw9NjM0NzE7ZS5JZG90PTMwNDtlLklkb3RhY2NlbnQ9MzA0O2UuSWRvdGJlbG93PTc4ODI7ZS5JZWJyZXZlY3lyaWxsaWM9MTIzODtlLkllY3lyaWxsaWM9MTA0NTtlLklmcmFrdHVyPTg0NjU7ZS5JZ3JhdmU9MjA0O2UuSWdyYXZlc21hbGw9NjM0Njg7ZS5JaG9va2Fib3ZlPTc4ODA7ZS5JaWN5cmlsbGljPTEwNDg7ZS5JaW52ZXJ0ZWRicmV2ZT01MjI7ZS5JaXNob3J0Y3lyaWxsaWM9MTA0OTtlLkltYWNyb249Mjk4O2UuSW1hY3JvbmN5cmlsbGljPTEyNTA7ZS5JbW9ub3NwYWNlPTY1MzIxO2UuSW5pYXJtZW5pYW49MTMzOTtlLklvY3lyaWxsaWM9MTAyNTtlLklvZ29uZWs9MzAyO2UuSW90YT05MjE7ZS5Jb3RhYWZyaWNhbj00MDY7ZS5Jb3RhZGllcmVzaXM9OTM4O2UuSW90YXRvbm9zPTkwNjtlLklzbWFsbD02MzMzNztlLklzdHJva2U9NDA3O2UuSXRpbGRlPTI5NjtlLkl0aWxkZWJlbG93PTc3MjQ7ZS5JemhpdHNhY3lyaWxsaWM9MTE0MDtlLkl6aGl0c2FkYmxncmF2ZWN5cmlsbGljPTExNDI7ZS5KPTc0O2UuSmFhcm1lbmlhbj0xMzQ1O2UuSmNpcmNsZT05NDA3O2UuSmNpcmN1bWZsZXg9MzA4O2UuSmVjeXJpbGxpYz0xMDMyO2UuSmhlaGFybWVuaWFuPTEzNTU7ZS5KbW9ub3NwYWNlPTY1MzIyO2UuSnNtYWxsPTYzMzM4O2UuSz03NTtlLktCc3F1YXJlPTEzMTg5O2UuS0tzcXVhcmU9MTMyNjE7ZS5LYWJhc2hraXJjeXJpbGxpYz0xMTg0O2UuS2FjdXRlPTc3Mjg7ZS5LYWN5cmlsbGljPTEwNTA7ZS5LYWRlc2NlbmRlcmN5cmlsbGljPTExNzg7ZS5LYWhvb2tjeXJpbGxpYz0xMjE5O2UuS2FwcGE9OTIyO2UuS2FzdHJva2VjeXJpbGxpYz0xMTgyO2UuS2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTExODA7ZS5LY2Fyb249NDg4O2UuS2NlZGlsbGE9MzEwO2UuS2NpcmNsZT05NDA4O2UuS2NvbW1hYWNjZW50PTMxMDtlLktkb3RiZWxvdz03NzMwO2UuS2VoYXJtZW5pYW49MTM2NDtlLktlbmFybWVuaWFuPTEzNDM7ZS5LaGFjeXJpbGxpYz0xMDYxO2UuS2hlaWNvcHRpYz05OTg7ZS5LaG9vaz00MDg7ZS5LamVjeXJpbGxpYz0xMDM2O2UuS2xpbmViZWxvdz03NzMyO2UuS21vbm9zcGFjZT02NTMyMztlLktvcHBhY3lyaWxsaWM9MTE1MjtlLktvcHBhZ3JlZWs9OTkwO2UuS3NpY3lyaWxsaWM9MTEzNDtlLktzbWFsbD02MzMzOTtlLkw9NzY7ZS5MSj00NTU7ZS5MTD02MzE2NztlLkxhY3V0ZT0zMTM7ZS5MYW1iZGE9OTIzO2UuTGNhcm9uPTMxNztlLkxjZWRpbGxhPTMxNTtlLkxjaXJjbGU9OTQwOTtlLkxjaXJjdW1mbGV4YmVsb3c9Nzc0MDtlLkxjb21tYWFjY2VudD0zMTU7ZS5MZG90PTMxOTtlLkxkb3RhY2NlbnQ9MzE5O2UuTGRvdGJlbG93PTc3MzQ7ZS5MZG90YmVsb3dtYWNyb249NzczNjtlLkxpd25hcm1lbmlhbj0xMzQwO2UuTGo9NDU2O2UuTGplY3lyaWxsaWM9MTAzMztlLkxsaW5lYmVsb3c9NzczODtlLkxtb25vc3BhY2U9NjUzMjQ7ZS5Mc2xhc2g9MzIxO2UuTHNsYXNoc21hbGw9NjMyMjU7ZS5Mc21hbGw9NjMzNDA7ZS5NPTc3O2UuTUJzcXVhcmU9MTMxOTA7ZS5NYWNyb249NjMxODQ7ZS5NYWNyb25zbWFsbD02MzQwNztlLk1hY3V0ZT03NzQyO2UuTWNpcmNsZT05NDEwO2UuTWRvdGFjY2VudD03NzQ0O2UuTWRvdGJlbG93PTc3NDY7ZS5NZW5hcm1lbmlhbj0xMzQ4O2UuTW1vbm9zcGFjZT02NTMyNTtlLk1zbWFsbD02MzM0MTtlLk10dXJuZWQ9NDEyO2UuTXU9OTI0O2UuTj03ODtlLk5KPTQ1ODtlLk5hY3V0ZT0zMjM7ZS5OY2Fyb249MzI3O2UuTmNlZGlsbGE9MzI1O2UuTmNpcmNsZT05NDExO2UuTmNpcmN1bWZsZXhiZWxvdz03NzU0O2UuTmNvbW1hYWNjZW50PTMyNTtlLk5kb3RhY2NlbnQ9Nzc0ODtlLk5kb3RiZWxvdz03NzUwO2UuTmhvb2tsZWZ0PTQxMztlLk5pbmVyb21hbj04NTUyO2UuTmo9NDU5O2UuTmplY3lyaWxsaWM9MTAzNDtlLk5saW5lYmVsb3c9Nzc1MjtlLk5tb25vc3BhY2U9NjUzMjY7ZS5Ob3dhcm1lbmlhbj0xMzUwO2UuTnNtYWxsPTYzMzQyO2UuTnRpbGRlPTIwOTtlLk50aWxkZXNtYWxsPTYzNDczO2UuTnU9OTI1O2UuTz03OTtlLk9FPTMzODtlLk9Fc21hbGw9NjMyMjY7ZS5PYWN1dGU9MjExO2UuT2FjdXRlc21hbGw9NjM0NzU7ZS5PYmFycmVkY3lyaWxsaWM9MTI1NjtlLk9iYXJyZWRkaWVyZXNpc2N5cmlsbGljPTEyNTg7ZS5PYnJldmU9MzM0O2UuT2Nhcm9uPTQ2NTtlLk9jZW50ZXJlZHRpbGRlPTQxNTtlLk9jaXJjbGU9OTQxMjtlLk9jaXJjdW1mbGV4PTIxMjtlLk9jaXJjdW1mbGV4YWN1dGU9Nzg4ODtlLk9jaXJjdW1mbGV4ZG90YmVsb3c9Nzg5NjtlLk9jaXJjdW1mbGV4Z3JhdmU9Nzg5MDtlLk9jaXJjdW1mbGV4aG9va2Fib3ZlPTc4OTI7ZS5PY2lyY3VtZmxleHNtYWxsPTYzNDc2O2UuT2NpcmN1bWZsZXh0aWxkZT03ODk0O2UuT2N5cmlsbGljPTEwNTQ7ZS5PZGJsYWN1dGU9MzM2O2UuT2RibGdyYXZlPTUyNDtlLk9kaWVyZXNpcz0yMTQ7ZS5PZGllcmVzaXNjeXJpbGxpYz0xMjU0O2UuT2RpZXJlc2lzc21hbGw9NjM0Nzg7ZS5PZG90YmVsb3c9Nzg4NDtlLk9nb25la3NtYWxsPTYzMjI3O2UuT2dyYXZlPTIxMDtlLk9ncmF2ZXNtYWxsPTYzNDc0O2UuT2hhcm1lbmlhbj0xMzY1O2UuT2htPTg0ODY7ZS5PaG9va2Fib3ZlPTc4ODY7ZS5PaG9ybj00MTY7ZS5PaG9ybmFjdXRlPTc4OTg7ZS5PaG9ybmRvdGJlbG93PTc5MDY7ZS5PaG9ybmdyYXZlPTc5MDA7ZS5PaG9ybmhvb2thYm92ZT03OTAyO2UuT2hvcm50aWxkZT03OTA0O2UuT2h1bmdhcnVtbGF1dD0zMzY7ZS5PaT00MTg7ZS5PaW52ZXJ0ZWRicmV2ZT01MjY7ZS5PbWFjcm9uPTMzMjtlLk9tYWNyb25hY3V0ZT03NzYyO2UuT21hY3JvbmdyYXZlPTc3NjA7ZS5PbWVnYT04NDg2O2UuT21lZ2FjeXJpbGxpYz0xMTIwO2UuT21lZ2FncmVlaz05Mzc7ZS5PbWVnYXJvdW5kY3lyaWxsaWM9MTE0NjtlLk9tZWdhdGl0bG9jeXJpbGxpYz0xMTQ4O2UuT21lZ2F0b25vcz05MTE7ZS5PbWljcm9uPTkyNztlLk9taWNyb250b25vcz05MDg7ZS5PbW9ub3NwYWNlPTY1MzI3O2UuT25lcm9tYW49ODU0NDtlLk9vZ29uZWs9NDkwO2UuT29nb25la21hY3Jvbj00OTI7ZS5Pb3Blbj0zOTA7ZS5Pc2xhc2g9MjE2O2UuT3NsYXNoYWN1dGU9NTEwO2UuT3NsYXNoc21hbGw9NjM0ODA7ZS5Pc21hbGw9NjMzNDM7ZS5Pc3Ryb2tlYWN1dGU9NTEwO2UuT3RjeXJpbGxpYz0xMTUwO2UuT3RpbGRlPTIxMztlLk90aWxkZWFjdXRlPTc3NTY7ZS5PdGlsZGVkaWVyZXNpcz03NzU4O2UuT3RpbGRlc21hbGw9NjM0Nzc7ZS5QPTgwO2UuUGFjdXRlPTc3NjQ7ZS5QY2lyY2xlPTk0MTM7ZS5QZG90YWNjZW50PTc3NjY7ZS5QZWN5cmlsbGljPTEwNTU7ZS5QZWhhcm1lbmlhbj0xMzU0O2UuUGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MDtlLlBoaT05MzQ7ZS5QaG9vaz00MjA7ZS5QaT05Mjg7ZS5QaXdyYXJtZW5pYW49MTM2MztlLlBtb25vc3BhY2U9NjUzMjg7ZS5Qc2k9OTM2O2UuUHNpY3lyaWxsaWM9MTEzNjtlLlBzbWFsbD02MzM0NDtlLlE9ODE7ZS5RY2lyY2xlPTk0MTQ7ZS5RbW9ub3NwYWNlPTY1MzI5O2UuUXNtYWxsPTYzMzQ1O2UuUj04MjtlLlJhYXJtZW5pYW49MTM1NjtlLlJhY3V0ZT0zNDA7ZS5SY2Fyb249MzQ0O2UuUmNlZGlsbGE9MzQyO2UuUmNpcmNsZT05NDE1O2UuUmNvbW1hYWNjZW50PTM0MjtlLlJkYmxncmF2ZT01Mjg7ZS5SZG90YWNjZW50PTc3Njg7ZS5SZG90YmVsb3c9Nzc3MDtlLlJkb3RiZWxvd21hY3Jvbj03NzcyO2UuUmVoYXJtZW5pYW49MTM2MDtlLlJmcmFrdHVyPTg0NzY7ZS5SaG89OTI5O2UuUmluZ3NtYWxsPTYzMjI4O2UuUmludmVydGVkYnJldmU9NTMwO2UuUmxpbmViZWxvdz03Nzc0O2UuUm1vbm9zcGFjZT02NTMzMDtlLlJzbWFsbD02MzM0NjtlLlJzbWFsbGludmVydGVkPTY0MTtlLlJzbWFsbGludmVydGVkc3VwZXJpb3I9Njk0O2UuUz04MztlLlNGMDEwMDAwPTk0ODQ7ZS5TRjAyMDAwMD05NDkyO2UuU0YwMzAwMDA9OTQ4ODtlLlNGMDQwMDAwPTk0OTY7ZS5TRjA1MDAwMD05NTMyO2UuU0YwNjAwMDA9OTUxNjtlLlNGMDcwMDAwPTk1MjQ7ZS5TRjA4MDAwMD05NTAwO2UuU0YwOTAwMDA9OTUwODtlLlNGMTAwMDAwPTk0NzI7ZS5TRjExMDAwMD05NDc0O2UuU0YxOTAwMDA9OTU2OTtlLlNGMjAwMDAwPTk1NzA7ZS5TRjIxMDAwMD05NTU4O2UuU0YyMjAwMDA9OTU1NztlLlNGMjMwMDAwPTk1NzE7ZS5TRjI0MDAwMD05NTUzO2UuU0YyNTAwMDA9OTU1OTtlLlNGMjYwMDAwPTk1NjU7ZS5TRjI3MDAwMD05NTY0O2UuU0YyODAwMDA9OTU2MztlLlNGMzYwMDAwPTk1NjY7ZS5TRjM3MDAwMD05NTY3O2UuU0YzODAwMDA9OTU2MjtlLlNGMzkwMDAwPTk1NTY7ZS5TRjQwMDAwMD05NTc3O2UuU0Y0MTAwMDA9OTU3NDtlLlNGNDIwMDAwPTk1Njg7ZS5TRjQzMDAwMD05NTUyO2UuU0Y0NDAwMDA9OTU4MDtlLlNGNDUwMDAwPTk1NzU7ZS5TRjQ2MDAwMD05NTc2O2UuU0Y0NzAwMDA9OTU3MjtlLlNGNDgwMDAwPTk1NzM7ZS5TRjQ5MDAwMD05NTYxO2UuU0Y1MDAwMDA9OTU2MDtlLlNGNTEwMDAwPTk1NTQ7ZS5TRjUyMDAwMD05NTU1O2UuU0Y1MzAwMDA9OTU3OTtlLlNGNTQwMDAwPTk1Nzg7ZS5TYWN1dGU9MzQ2O2UuU2FjdXRlZG90YWNjZW50PTc3ODA7ZS5TYW1waWdyZWVrPTk5MjtlLlNjYXJvbj0zNTI7ZS5TY2Fyb25kb3RhY2NlbnQ9Nzc4MjtlLlNjYXJvbnNtYWxsPTYzMjI5O2UuU2NlZGlsbGE9MzUwO2UuU2Nod2E9Mzk5O2UuU2Nod2FjeXJpbGxpYz0xMjQwO2UuU2Nod2FkaWVyZXNpc2N5cmlsbGljPTEyNDI7ZS5TY2lyY2xlPTk0MTY7ZS5TY2lyY3VtZmxleD0zNDg7ZS5TY29tbWFhY2NlbnQ9NTM2O2UuU2RvdGFjY2VudD03Nzc2O2UuU2RvdGJlbG93PTc3Nzg7ZS5TZG90YmVsb3dkb3RhY2NlbnQ9Nzc4NDtlLlNlaGFybWVuaWFuPTEzNTc7ZS5TZXZlbnJvbWFuPTg1NTA7ZS5TaGFhcm1lbmlhbj0xMzUxO2UuU2hhY3lyaWxsaWM9MTA2NDtlLlNoY2hhY3lyaWxsaWM9MTA2NTtlLlNoZWljb3B0aWM9OTk0O2UuU2hoYWN5cmlsbGljPTEyMTA7ZS5TaGltYWNvcHRpYz0xMDA0O2UuU2lnbWE9OTMxO2UuU2l4cm9tYW49ODU0OTtlLlNtb25vc3BhY2U9NjUzMzE7ZS5Tb2Z0c2lnbmN5cmlsbGljPTEwNjg7ZS5Tc21hbGw9NjMzNDc7ZS5TdGlnbWFncmVlaz05ODY7ZS5UPTg0O2UuVGF1PTkzMjtlLlRiYXI9MzU4O2UuVGNhcm9uPTM1NjtlLlRjZWRpbGxhPTM1NDtlLlRjaXJjbGU9OTQxNztlLlRjaXJjdW1mbGV4YmVsb3c9Nzc5MjtlLlRjb21tYWFjY2VudD0zNTQ7ZS5UZG90YWNjZW50PTc3ODY7ZS5UZG90YmVsb3c9Nzc4ODtlLlRlY3lyaWxsaWM9MTA1ODtlLlRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NjtlLlRlbnJvbWFuPTg1NTM7ZS5UZXRzZWN5cmlsbGljPTEyMDQ7ZS5UaGV0YT05MjA7ZS5UaG9vaz00Mjg7ZS5UaG9ybj0yMjI7ZS5UaG9ybnNtYWxsPTYzNDg2O2UuVGhyZWVyb21hbj04NTQ2O2UuVGlsZGVzbWFsbD02MzIzMDtlLlRpd25hcm1lbmlhbj0xMzU5O2UuVGxpbmViZWxvdz03NzkwO2UuVG1vbm9zcGFjZT02NTMzMjtlLlRvYXJtZW5pYW49MTMzNztlLlRvbmVmaXZlPTQ0NDtlLlRvbmVzaXg9Mzg4O2UuVG9uZXR3bz00MjM7ZS5UcmV0cm9mbGV4aG9vaz00MzA7ZS5Uc2VjeXJpbGxpYz0xMDYyO2UuVHNoZWN5cmlsbGljPTEwMzU7ZS5Uc21hbGw9NjMzNDg7ZS5Ud2VsdmVyb21hbj04NTU1O2UuVHdvcm9tYW49ODU0NTtlLlU9ODU7ZS5VYWN1dGU9MjE4O2UuVWFjdXRlc21hbGw9NjM0ODI7ZS5VYnJldmU9MzY0O2UuVWNhcm9uPTQ2NztlLlVjaXJjbGU9OTQxODtlLlVjaXJjdW1mbGV4PTIxOTtlLlVjaXJjdW1mbGV4YmVsb3c9Nzc5ODtlLlVjaXJjdW1mbGV4c21hbGw9NjM0ODM7ZS5VY3lyaWxsaWM9MTA1OTtlLlVkYmxhY3V0ZT0zNjg7ZS5VZGJsZ3JhdmU9NTMyO2UuVWRpZXJlc2lzPTIyMDtlLlVkaWVyZXNpc2FjdXRlPTQ3MTtlLlVkaWVyZXNpc2JlbG93PTc3OTQ7ZS5VZGllcmVzaXNjYXJvbj00NzM7ZS5VZGllcmVzaXNjeXJpbGxpYz0xMjY0O2UuVWRpZXJlc2lzZ3JhdmU9NDc1O2UuVWRpZXJlc2lzbWFjcm9uPTQ2OTtlLlVkaWVyZXNpc3NtYWxsPTYzNDg0O2UuVWRvdGJlbG93PTc5MDg7ZS5VZ3JhdmU9MjE3O2UuVWdyYXZlc21hbGw9NjM0ODE7ZS5VaG9va2Fib3ZlPTc5MTA7ZS5VaG9ybj00MzE7ZS5VaG9ybmFjdXRlPTc5MTI7ZS5VaG9ybmRvdGJlbG93PTc5MjA7ZS5VaG9ybmdyYXZlPTc5MTQ7ZS5VaG9ybmhvb2thYm92ZT03OTE2O2UuVWhvcm50aWxkZT03OTE4O2UuVWh1bmdhcnVtbGF1dD0zNjg7ZS5VaHVuZ2FydW1sYXV0Y3lyaWxsaWM9MTI2NjtlLlVpbnZlcnRlZGJyZXZlPTUzNDtlLlVrY3lyaWxsaWM9MTE0NDtlLlVtYWNyb249MzYyO2UuVW1hY3JvbmN5cmlsbGljPTEyNjI7ZS5VbWFjcm9uZGllcmVzaXM9NzgwMjtlLlVtb25vc3BhY2U9NjUzMzM7ZS5Vb2dvbmVrPTM3MDtlLlVwc2lsb249OTMzO2UuVXBzaWxvbjE9OTc4O2UuVXBzaWxvbmFjdXRlaG9va3N5bWJvbGdyZWVrPTk3OTtlLlVwc2lsb25hZnJpY2FuPTQzMztlLlVwc2lsb25kaWVyZXNpcz05Mzk7ZS5VcHNpbG9uZGllcmVzaXNob29rc3ltYm9sZ3JlZWs9OTgwO2UuVXBzaWxvbmhvb2tzeW1ib2w9OTc4O2UuVXBzaWxvbnRvbm9zPTkxMDtlLlVyaW5nPTM2NjtlLlVzaG9ydGN5cmlsbGljPTEwMzg7ZS5Vc21hbGw9NjMzNDk7ZS5Vc3RyYWlnaHRjeXJpbGxpYz0xMTk4O2UuVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWM9MTIwMDtlLlV0aWxkZT0zNjA7ZS5VdGlsZGVhY3V0ZT03ODAwO2UuVXRpbGRlYmVsb3c9Nzc5NjtlLlY9ODY7ZS5WY2lyY2xlPTk0MTk7ZS5WZG90YmVsb3c9NzgwNjtlLlZlY3lyaWxsaWM9MTA0MjtlLlZld2FybWVuaWFuPTEzNTg7ZS5WaG9vaz00MzQ7ZS5WbW9ub3NwYWNlPTY1MzM0O2UuVm9hcm1lbmlhbj0xMzUyO2UuVnNtYWxsPTYzMzUwO2UuVnRpbGRlPTc4MDQ7ZS5XPTg3O2UuV2FjdXRlPTc4MTA7ZS5XY2lyY2xlPTk0MjA7ZS5XY2lyY3VtZmxleD0zNzI7ZS5XZGllcmVzaXM9NzgxMjtlLldkb3RhY2NlbnQ9NzgxNDtlLldkb3RiZWxvdz03ODE2O2UuV2dyYXZlPTc4MDg7ZS5XbW9ub3NwYWNlPTY1MzM1O2UuV3NtYWxsPTYzMzUxO2UuWD04ODtlLlhjaXJjbGU9OTQyMTtlLlhkaWVyZXNpcz03ODIwO2UuWGRvdGFjY2VudD03ODE4O2UuWGVoYXJtZW5pYW49MTM0MTtlLlhpPTkyNjtlLlhtb25vc3BhY2U9NjUzMzY7ZS5Yc21hbGw9NjMzNTI7ZS5ZPTg5O2UuWWFjdXRlPTIyMTtlLllhY3V0ZXNtYWxsPTYzNDg1O2UuWWF0Y3lyaWxsaWM9MTEyMjtlLlljaXJjbGU9OTQyMjtlLlljaXJjdW1mbGV4PTM3NDtlLllkaWVyZXNpcz0zNzY7ZS5ZZGllcmVzaXNzbWFsbD02MzQ4NztlLllkb3RhY2NlbnQ9NzgyMjtlLllkb3RiZWxvdz03OTI0O2UuWWVyaWN5cmlsbGljPTEwNjc7ZS5ZZXJ1ZGllcmVzaXNjeXJpbGxpYz0xMjcyO2UuWWdyYXZlPTc5MjI7ZS5ZaG9vaz00MzU7ZS5ZaG9va2Fib3ZlPTc5MjY7ZS5ZaWFybWVuaWFuPTEzNDk7ZS5ZaWN5cmlsbGljPTEwMzE7ZS5ZaXduYXJtZW5pYW49MTM2MjtlLlltb25vc3BhY2U9NjUzMzc7ZS5Zc21hbGw9NjMzNTM7ZS5ZdGlsZGU9NzkyODtlLll1c2JpZ2N5cmlsbGljPTExMzA7ZS5ZdXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzI7ZS5ZdXNsaXR0bGVjeXJpbGxpYz0xMTI2O2UuWXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI4O2UuWj05MDtlLlphYXJtZW5pYW49MTMzNDtlLlphY3V0ZT0zNzc7ZS5aY2Fyb249MzgxO2UuWmNhcm9uc21hbGw9NjMyMzE7ZS5aY2lyY2xlPTk0MjM7ZS5aY2lyY3VtZmxleD03ODI0O2UuWmRvdD0zNzk7ZS5aZG90YWNjZW50PTM3OTtlLlpkb3RiZWxvdz03ODI2O2UuWmVjeXJpbGxpYz0xMDQ3O2UuWmVkZXNjZW5kZXJjeXJpbGxpYz0xMTc2O2UuWmVkaWVyZXNpc2N5cmlsbGljPTEyNDY7ZS5aZXRhPTkxODtlLlpoZWFybWVuaWFuPTEzMzg7ZS5aaGVicmV2ZWN5cmlsbGljPTEyMTc7ZS5aaGVjeXJpbGxpYz0xMDQ2O2UuWmhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NDtlLlpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NDtlLlpsaW5lYmVsb3c9NzgyODtlLlptb25vc3BhY2U9NjUzMzg7ZS5ac21hbGw9NjMzNTQ7ZS5ac3Ryb2tlPTQzNztlLmE9OTc7ZS5hYWJlbmdhbGk9MjQzODtlLmFhY3V0ZT0yMjU7ZS5hYWRldmE9MjMxMDtlLmFhZ3VqYXJhdGk9MjY5NDtlLmFhZ3VybXVraGk9MjU2NjtlLmFhbWF0cmFndXJtdWtoaT0yNjIyO2UuYWFydXNxdWFyZT0xMzA1OTtlLmFhdm93ZWxzaWduYmVuZ2FsaT0yNDk0O2UuYWF2b3dlbHNpZ25kZXZhPTIzNjY7ZS5hYXZvd2Vsc2lnbmd1amFyYXRpPTI3NTA7ZS5hYmJyZXZpYXRpb25tYXJrYXJtZW5pYW49MTM3NTtlLmFiYnJldmlhdGlvbnNpZ25kZXZhPTI0MTY7ZS5hYmVuZ2FsaT0yNDM3O2UuYWJvcG9tb2ZvPTEyNTcwO2UuYWJyZXZlPTI1OTtlLmFicmV2ZWFjdXRlPTc4NTU7ZS5hYnJldmVjeXJpbGxpYz0xMjMzO2UuYWJyZXZlZG90YmVsb3c9Nzg2MztlLmFicmV2ZWdyYXZlPTc4NTc7ZS5hYnJldmVob29rYWJvdmU9Nzg1OTtlLmFicmV2ZXRpbGRlPTc4NjE7ZS5hY2Fyb249NDYyO2UuYWNpcmNsZT05NDI0O2UuYWNpcmN1bWZsZXg9MjI2O2UuYWNpcmN1bWZsZXhhY3V0ZT03ODQ1O2UuYWNpcmN1bWZsZXhkb3RiZWxvdz03ODUzO2UuYWNpcmN1bWZsZXhncmF2ZT03ODQ3O2UuYWNpcmN1bWZsZXhob29rYWJvdmU9Nzg0OTtlLmFjaXJjdW1mbGV4dGlsZGU9Nzg1MTtlLmFjdXRlPTE4MDtlLmFjdXRlYmVsb3djbWI9NzkxO2UuYWN1dGVjbWI9NzY5O2UuYWN1dGVjb21iPTc2OTtlLmFjdXRlZGV2YT0yMzg4O2UuYWN1dGVsb3dtb2Q9NzE5O2UuYWN1dGV0b25lY21iPTgzMztlLmFjeXJpbGxpYz0xMDcyO2UuYWRibGdyYXZlPTUxMztlLmFkZGFrZ3VybXVraGk9MjY3MztlLmFkZXZhPTIzMDk7ZS5hZGllcmVzaXM9MjI4O2UuYWRpZXJlc2lzY3lyaWxsaWM9MTIzNTtlLmFkaWVyZXNpc21hY3Jvbj00Nzk7ZS5hZG90YmVsb3c9Nzg0MTtlLmFkb3RtYWNyb249NDgxO2UuYWU9MjMwO2UuYWVhY3V0ZT01MDk7ZS5hZWtvcmVhbj0xMjYyNDtlLmFlbWFjcm9uPTQ4MztlLmFmaWkwMDIwOD04MjEzO2UuYWZpaTA4OTQxPTgzNTY7ZS5hZmlpMTAwMTc9MTA0MDtlLmFmaWkxMDAxOD0xMDQxO2UuYWZpaTEwMDE5PTEwNDI7ZS5hZmlpMTAwMjA9MTA0MztlLmFmaWkxMDAyMT0xMDQ0O2UuYWZpaTEwMDIyPTEwNDU7ZS5hZmlpMTAwMjM9MTAyNTtlLmFmaWkxMDAyND0xMDQ2O2UuYWZpaTEwMDI1PTEwNDc7ZS5hZmlpMTAwMjY9MTA0ODtlLmFmaWkxMDAyNz0xMDQ5O2UuYWZpaTEwMDI4PTEwNTA7ZS5hZmlpMTAwMjk9MTA1MTtlLmFmaWkxMDAzMD0xMDUyO2UuYWZpaTEwMDMxPTEwNTM7ZS5hZmlpMTAwMzI9MTA1NDtlLmFmaWkxMDAzMz0xMDU1O2UuYWZpaTEwMDM0PTEwNTY7ZS5hZmlpMTAwMzU9MTA1NztlLmFmaWkxMDAzNj0xMDU4O2UuYWZpaTEwMDM3PTEwNTk7ZS5hZmlpMTAwMzg9MTA2MDtlLmFmaWkxMDAzOT0xMDYxO2UuYWZpaTEwMDQwPTEwNjI7ZS5hZmlpMTAwNDE9MTA2MztlLmFmaWkxMDA0Mj0xMDY0O2UuYWZpaTEwMDQzPTEwNjU7ZS5hZmlpMTAwNDQ9MTA2NjtlLmFmaWkxMDA0NT0xMDY3O2UuYWZpaTEwMDQ2PTEwNjg7ZS5hZmlpMTAwNDc9MTA2OTtlLmFmaWkxMDA0OD0xMDcwO2UuYWZpaTEwMDQ5PTEwNzE7ZS5hZmlpMTAwNTA9MTE2ODtlLmFmaWkxMDA1MT0xMDI2O2UuYWZpaTEwMDUyPTEwMjc7ZS5hZmlpMTAwNTM9MTAyODtlLmFmaWkxMDA1ND0xMDI5O2UuYWZpaTEwMDU1PTEwMzA7ZS5hZmlpMTAwNTY9MTAzMTtlLmFmaWkxMDA1Nz0xMDMyO2UuYWZpaTEwMDU4PTEwMzM7ZS5hZmlpMTAwNTk9MTAzNDtlLmFmaWkxMDA2MD0xMDM1O2UuYWZpaTEwMDYxPTEwMzY7ZS5hZmlpMTAwNjI9MTAzODtlLmFmaWkxMDA2Mz02MzE3MjtlLmFmaWkxMDA2ND02MzE3MztlLmFmaWkxMDA2NT0xMDcyO2UuYWZpaTEwMDY2PTEwNzM7ZS5hZmlpMTAwNjc9MTA3NDtlLmFmaWkxMDA2OD0xMDc1O2UuYWZpaTEwMDY5PTEwNzY7ZS5hZmlpMTAwNzA9MTA3NztlLmFmaWkxMDA3MT0xMTA1O2UuYWZpaTEwMDcyPTEwNzg7ZS5hZmlpMTAwNzM9MTA3OTtlLmFmaWkxMDA3ND0xMDgwO2UuYWZpaTEwMDc1PTEwODE7ZS5hZmlpMTAwNzY9MTA4MjtlLmFmaWkxMDA3Nz0xMDgzO2UuYWZpaTEwMDc4PTEwODQ7ZS5hZmlpMTAwNzk9MTA4NTtlLmFmaWkxMDA4MD0xMDg2O2UuYWZpaTEwMDgxPTEwODc7ZS5hZmlpMTAwODI9MTA4ODtlLmFmaWkxMDA4Mz0xMDg5O2UuYWZpaTEwMDg0PTEwOTA7ZS5hZmlpMTAwODU9MTA5MTtlLmFmaWkxMDA4Nj0xMDkyO2UuYWZpaTEwMDg3PTEwOTM7ZS5hZmlpMTAwODg9MTA5NDtlLmFmaWkxMDA4OT0xMDk1O2UuYWZpaTEwMDkwPTEwOTY7ZS5hZmlpMTAwOTE9MTA5NztlLmFmaWkxMDA5Mj0xMDk4O2UuYWZpaTEwMDkzPTEwOTk7ZS5hZmlpMTAwOTQ9MTEwMDtlLmFmaWkxMDA5NT0xMTAxO2UuYWZpaTEwMDk2PTExMDI7ZS5hZmlpMTAwOTc9MTEwMztlLmFmaWkxMDA5OD0xMTY5O2UuYWZpaTEwMDk5PTExMDY7ZS5hZmlpMTAxMDA9MTEwNztlLmFmaWkxMDEwMT0xMTA4O2UuYWZpaTEwMTAyPTExMDk7ZS5hZmlpMTAxMDM9MTExMDtlLmFmaWkxMDEwND0xMTExO2UuYWZpaTEwMTA1PTExMTI7ZS5hZmlpMTAxMDY9MTExMztlLmFmaWkxMDEwNz0xMTE0O2UuYWZpaTEwMTA4PTExMTU7ZS5hZmlpMTAxMDk9MTExNjtlLmFmaWkxMDExMD0xMTE4O2UuYWZpaTEwMTQ1PTEwMzk7ZS5hZmlpMTAxNDY9MTEyMjtlLmFmaWkxMDE0Nz0xMTM4O2UuYWZpaTEwMTQ4PTExNDA7ZS5hZmlpMTAxOTI9NjMxNzQ7ZS5hZmlpMTAxOTM9MTExOTtlLmFmaWkxMDE5ND0xMTIzO2UuYWZpaTEwMTk1PTExMzk7ZS5hZmlpMTAxOTY9MTE0MTtlLmFmaWkxMDgzMT02MzE3NTtlLmFmaWkxMDgzMj02MzE3NjtlLmFmaWkxMDg0Nj0xMjQxO2UuYWZpaTI5OT04MjA2O2UuYWZpaTMwMD04MjA3O2UuYWZpaTMwMT04MjA1O2UuYWZpaTU3MzgxPTE2NDI7ZS5hZmlpNTczODg9MTU0ODtlLmFmaWk1NzM5Mj0xNjMyO2UuYWZpaTU3MzkzPTE2MzM7ZS5hZmlpNTczOTQ9MTYzNDtlLmFmaWk1NzM5NT0xNjM1O2UuYWZpaTU3Mzk2PTE2MzY7ZS5hZmlpNTczOTc9MTYzNztlLmFmaWk1NzM5OD0xNjM4O2UuYWZpaTU3Mzk5PTE2Mzk7ZS5hZmlpNTc0MDA9MTY0MDtlLmFmaWk1NzQwMT0xNjQxO2UuYWZpaTU3NDAzPTE1NjM7ZS5hZmlpNTc0MDc9MTU2NztlLmFmaWk1NzQwOT0xNTY5O2UuYWZpaTU3NDEwPTE1NzA7ZS5hZmlpNTc0MTE9MTU3MTtlLmFmaWk1NzQxMj0xNTcyO2UuYWZpaTU3NDEzPTE1NzM7ZS5hZmlpNTc0MTQ9MTU3NDtlLmFmaWk1NzQxNT0xNTc1O2UuYWZpaTU3NDE2PTE1NzY7ZS5hZmlpNTc0MTc9MTU3NztlLmFmaWk1NzQxOD0xNTc4O2UuYWZpaTU3NDE5PTE1Nzk7ZS5hZmlpNTc0MjA9MTU4MDtlLmFmaWk1NzQyMT0xNTgxO2UuYWZpaTU3NDIyPTE1ODI7ZS5hZmlpNTc0MjM9MTU4MztlLmFmaWk1NzQyND0xNTg0O2UuYWZpaTU3NDI1PTE1ODU7ZS5hZmlpNTc0MjY9MTU4NjtlLmFmaWk1NzQyNz0xNTg3O2UuYWZpaTU3NDI4PTE1ODg7ZS5hZmlpNTc0Mjk9MTU4OTtlLmFmaWk1NzQzMD0xNTkwO2UuYWZpaTU3NDMxPTE1OTE7ZS5hZmlpNTc0MzI9MTU5MjtlLmFmaWk1NzQzMz0xNTkzO2UuYWZpaTU3NDM0PTE1OTQ7ZS5hZmlpNTc0NDA9MTYwMDtlLmFmaWk1NzQ0MT0xNjAxO2UuYWZpaTU3NDQyPTE2MDI7ZS5hZmlpNTc0NDM9MTYwMztlLmFmaWk1NzQ0ND0xNjA0O2UuYWZpaTU3NDQ1PTE2MDU7ZS5hZmlpNTc0NDY9MTYwNjtlLmFmaWk1NzQ0OD0xNjA4O2UuYWZpaTU3NDQ5PTE2MDk7ZS5hZmlpNTc0NTA9MTYxMDtlLmFmaWk1NzQ1MT0xNjExO2UuYWZpaTU3NDUyPTE2MTI7ZS5hZmlpNTc0NTM9MTYxMztlLmFmaWk1NzQ1ND0xNjE0O2UuYWZpaTU3NDU1PTE2MTU7ZS5hZmlpNTc0NTY9MTYxNjtlLmFmaWk1NzQ1Nz0xNjE3O2UuYWZpaTU3NDU4PTE2MTg7ZS5hZmlpNTc0NzA9MTYwNztlLmFmaWk1NzUwNT0xNzAwO2UuYWZpaTU3NTA2PTE2NjI7ZS5hZmlpNTc1MDc9MTY3MDtlLmFmaWk1NzUwOD0xNjg4O2UuYWZpaTU3NTA5PTE3MTE7ZS5hZmlpNTc1MTE9MTY1NztlLmFmaWk1NzUxMj0xNjcyO2UuYWZpaTU3NTEzPTE2ODE7ZS5hZmlpNTc1MTQ9MTcyMjtlLmFmaWk1NzUxOT0xNzQ2O2UuYWZpaTU3NTM0PTE3NDk7ZS5hZmlpNTc2MzY9ODM2MjtlLmFmaWk1NzY0NT0xNDcwO2UuYWZpaTU3NjU4PTE0NzU7ZS5hZmlpNTc2NjQ9MTQ4ODtlLmFmaWk1NzY2NT0xNDg5O2UuYWZpaTU3NjY2PTE0OTA7ZS5hZmlpNTc2Njc9MTQ5MTtlLmFmaWk1NzY2OD0xNDkyO2UuYWZpaTU3NjY5PTE0OTM7ZS5hZmlpNTc2NzA9MTQ5NDtlLmFmaWk1NzY3MT0xNDk1O2UuYWZpaTU3NjcyPTE0OTY7ZS5hZmlpNTc2NzM9MTQ5NztlLmFmaWk1NzY3ND0xNDk4O2UuYWZpaTU3Njc1PTE0OTk7ZS5hZmlpNTc2NzY9MTUwMDtlLmFmaWk1NzY3Nz0xNTAxO2UuYWZpaTU3Njc4PTE1MDI7ZS5hZmlpNTc2Nzk9MTUwMztlLmFmaWk1NzY4MD0xNTA0O2UuYWZpaTU3NjgxPTE1MDU7ZS5hZmlpNTc2ODI9MTUwNjtlLmFmaWk1NzY4Mz0xNTA3O2UuYWZpaTU3Njg0PTE1MDg7ZS5hZmlpNTc2ODU9MTUwOTtlLmFmaWk1NzY4Nj0xNTEwO2UuYWZpaTU3Njg3PTE1MTE7ZS5hZmlpNTc2ODg9MTUxMjtlLmFmaWk1NzY4OT0xNTEzO2UuYWZpaTU3NjkwPTE1MTQ7ZS5hZmlpNTc2OTQ9NjQyOTg7ZS5hZmlpNTc2OTU9NjQyOTk7ZS5hZmlpNTc3MDA9NjQzMzE7ZS5hZmlpNTc3MDU9NjQyODc7ZS5hZmlpNTc3MTY9MTUyMDtlLmFmaWk1NzcxNz0xNTIxO2UuYWZpaTU3NzE4PTE1MjI7ZS5hZmlpNTc3MjM9NjQzMDk7ZS5hZmlpNTc3OTM9MTQ2MDtlLmFmaWk1Nzc5ND0xNDYxO2UuYWZpaTU3Nzk1PTE0NjI7ZS5hZmlpNTc3OTY9MTQ2NztlLmFmaWk1Nzc5Nz0xNDY0O2UuYWZpaTU3Nzk4PTE0NjM7ZS5hZmlpNTc3OTk9MTQ1NjtlLmFmaWk1NzgwMD0xNDU4O2UuYWZpaTU3ODAxPTE0NTc7ZS5hZmlpNTc4MDI9MTQ1OTtlLmFmaWk1NzgwMz0xNDc0O2UuYWZpaTU3ODA0PTE0NzM7ZS5hZmlpNTc4MDY9MTQ2NTtlLmFmaWk1NzgwNz0xNDY4O2UuYWZpaTU3ODM5PTE0Njk7ZS5hZmlpNTc4NDE9MTQ3MTtlLmFmaWk1Nzg0Mj0xNDcyO2UuYWZpaTU3OTI5PTcwMDtlLmFmaWk2MTI0OD04NDUzO2UuYWZpaTYxMjg5PTg0Njc7ZS5hZmlpNjEzNTI9ODQ3MDtlLmFmaWk2MTU3Mz04MjM2O2UuYWZpaTYxNTc0PTgyMzc7ZS5hZmlpNjE1NzU9ODIzODtlLmFmaWk2MTY2ND04MjA0O2UuYWZpaTYzMTY3PTE2NDU7ZS5hZmlpNjQ5Mzc9NzAxO2UuYWdyYXZlPTIyNDtlLmFndWphcmF0aT0yNjkzO2UuYWd1cm11a2hpPTI1NjU7ZS5haGlyYWdhbmE9MTIzNTQ7ZS5haG9va2Fib3ZlPTc4NDM7ZS5haWJlbmdhbGk9MjQ0ODtlLmFpYm9wb21vZm89MTI1NzQ7ZS5haWRldmE9MjMyMDtlLmFpZWN5cmlsbGljPTEyMzc7ZS5haWd1amFyYXRpPTI3MDQ7ZS5haWd1cm11a2hpPTI1NzY7ZS5haW1hdHJhZ3VybXVraGk9MjYzMjtlLmFpbmFyYWJpYz0xNTkzO2UuYWluZmluYWxhcmFiaWM9NjUyMjY7ZS5haW5pbml0aWFsYXJhYmljPTY1MjI3O2UuYWlubWVkaWFsYXJhYmljPTY1MjI4O2UuYWludmVydGVkYnJldmU9NTE1O2UuYWl2b3dlbHNpZ25iZW5nYWxpPTI1MDQ7ZS5haXZvd2Vsc2lnbmRldmE9MjM3NjtlLmFpdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MDtlLmFrYXRha2FuYT0xMjQ1MDtlLmFrYXRha2FuYWhhbGZ3aWR0aD02NTM5MztlLmFrb3JlYW49MTI2MjM7ZS5hbGVmPTE0ODg7ZS5hbGVmYXJhYmljPTE1NzU7ZS5hbGVmZGFnZXNoaGVicmV3PTY0MzA0O2UuYWxlZmZpbmFsYXJhYmljPTY1MTY2O2UuYWxlZmhhbXphYWJvdmVhcmFiaWM9MTU3MTtlLmFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNTY7ZS5hbGVmaGFtemFiZWxvd2FyYWJpYz0xNTczO2UuYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTE2MDtlLmFsZWZoZWJyZXc9MTQ4ODtlLmFsZWZsYW1lZGhlYnJldz02NDMzNTtlLmFsZWZtYWRkYWFib3ZlYXJhYmljPTE1NzA7ZS5hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MTU0O2UuYWxlZm1ha3N1cmFhcmFiaWM9MTYwOTtlLmFsZWZtYWtzdXJhZmluYWxhcmFiaWM9NjUyNjQ7ZS5hbGVmbWFrc3VyYWluaXRpYWxhcmFiaWM9NjUyNjc7ZS5hbGVmbWFrc3VyYW1lZGlhbGFyYWJpYz02NTI2ODtlLmFsZWZwYXRhaGhlYnJldz02NDMwMjtlLmFsZWZxYW1hdHNoZWJyZXc9NjQzMDM7ZS5hbGVwaD04NTAxO2UuYWxsZXF1YWw9ODc4MDtlLmFscGhhPTk0NTtlLmFscGhhdG9ub3M9OTQwO2UuYW1hY3Jvbj0yNTc7ZS5hbW9ub3NwYWNlPTY1MzQ1O2UuYW1wZXJzYW5kPTM4O2UuYW1wZXJzYW5kbW9ub3NwYWNlPTY1Mjg2O2UuYW1wZXJzYW5kc21hbGw9NjMyNzA7ZS5hbXNxdWFyZT0xMzI1MDtlLmFuYm9wb21vZm89MTI1Nzg7ZS5hbmdib3BvbW9mbz0xMjU4MDtlLmFuZ2JyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nYnJhY2tldHJpZ2h0PTEyMjk3O2UuYW5na2hhbmtodXRoYWk9MzY3NDtlLmFuZ2xlPTg3MzY7ZS5hbmdsZWJyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg3O2UuYW5nbGVicmFja2V0cmlnaHQ9MTIyOTc7ZS5hbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg4O2UuYW5nbGVsZWZ0PTkwMDE7ZS5hbmdsZXJpZ2h0PTkwMDI7ZS5hbmdzdHJvbT04NDkxO2UuYW5vdGVsZWlhPTkwMztlLmFudWRhdHRhZGV2YT0yMzg2O2UuYW51c3ZhcmFiZW5nYWxpPTI0MzQ7ZS5hbnVzdmFyYWRldmE9MjMwNjtlLmFudXN2YXJhZ3VqYXJhdGk9MjY5MDtlLmFvZ29uZWs9MjYxO2UuYXBhYXRvc3F1YXJlPTEzMDU2O2UuYXBhcmVuPTkzNzI7ZS5hcG9zdHJvcGhlYXJtZW5pYW49MTM3MDtlLmFwb3N0cm9waGVtb2Q9NzAwO2UuYXBwbGU9NjM3NDM7ZS5hcHByb2FjaGVzPTg3ODQ7ZS5hcHByb3hlcXVhbD04Nzc2O2UuYXBwcm94ZXF1YWxvcmltYWdlPTg3ODY7ZS5hcHByb3hpbWF0ZWx5ZXF1YWw9ODc3MztlLmFyYWVhZWtvcmVhbj0xMjY4NjtlLmFyYWVha29yZWFuPTEyNjg1O2UuYXJjPTg5Nzg7ZS5hcmlnaHRoYWxmcmluZz03ODM0O2UuYXJpbmc9MjI5O2UuYXJpbmdhY3V0ZT01MDc7ZS5hcmluZ2JlbG93PTc2ODE7ZS5hcnJvd2JvdGg9ODU5NjtlLmFycm93ZGFzaGRvd249ODY3NTtlLmFycm93ZGFzaGxlZnQ9ODY3MjtlLmFycm93ZGFzaHJpZ2h0PTg2NzQ7ZS5hcnJvd2Rhc2h1cD04NjczO2UuYXJyb3dkYmxib3RoPTg2NjA7ZS5hcnJvd2RibGRvd249ODY1OTtlLmFycm93ZGJsbGVmdD04NjU2O2UuYXJyb3dkYmxyaWdodD04NjU4O2UuYXJyb3dkYmx1cD04NjU3O2UuYXJyb3dkb3duPTg1OTU7ZS5hcnJvd2Rvd25sZWZ0PTg2MDE7ZS5hcnJvd2Rvd25yaWdodD04NjAwO2UuYXJyb3dkb3dud2hpdGU9ODY4MTtlLmFycm93aGVhZGRvd25tb2Q9NzA5O2UuYXJyb3doZWFkbGVmdG1vZD03MDY7ZS5hcnJvd2hlYWRyaWdodG1vZD03MDc7ZS5hcnJvd2hlYWR1cG1vZD03MDg7ZS5hcnJvd2hvcml6ZXg9NjM3MTk7ZS5hcnJvd2xlZnQ9ODU5MjtlLmFycm93bGVmdGRibD04NjU2O2UuYXJyb3dsZWZ0ZGJsc3Ryb2tlPTg2NTM7ZS5hcnJvd2xlZnRvdmVycmlnaHQ9ODY0NjtlLmFycm93bGVmdHdoaXRlPTg2Nzg7ZS5hcnJvd3JpZ2h0PTg1OTQ7ZS5hcnJvd3JpZ2h0ZGJsc3Ryb2tlPTg2NTU7ZS5hcnJvd3JpZ2h0aGVhdnk9MTAxNDI7ZS5hcnJvd3JpZ2h0b3ZlcmxlZnQ9ODY0NDtlLmFycm93cmlnaHR3aGl0ZT04NjgwO2UuYXJyb3d0YWJsZWZ0PTg2NzY7ZS5hcnJvd3RhYnJpZ2h0PTg2Nzc7ZS5hcnJvd3VwPTg1OTM7ZS5hcnJvd3VwZG49ODU5NztlLmFycm93dXBkbmJzZT04NjE2O2UuYXJyb3d1cGRvd25iYXNlPTg2MTY7ZS5hcnJvd3VwbGVmdD04NTk4O2UuYXJyb3d1cGxlZnRvZmRvd249ODY0NTtlLmFycm93dXByaWdodD04NTk5O2UuYXJyb3d1cHdoaXRlPTg2Nzk7ZS5hcnJvd3ZlcnRleD02MzcxODtlLmFzY2lpY2lyY3VtPTk0O2UuYXNjaWljaXJjdW1tb25vc3BhY2U9NjUzNDI7ZS5hc2NpaXRpbGRlPTEyNjtlLmFzY2lpdGlsZGVtb25vc3BhY2U9NjUzNzQ7ZS5hc2NyaXB0PTU5MztlLmFzY3JpcHR0dXJuZWQ9NTk0O2UuYXNtYWxsaGlyYWdhbmE9MTIzNTM7ZS5hc21hbGxrYXRha2FuYT0xMjQ0OTtlLmFzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzgzO2UuYXN0ZXJpc2s9NDI7ZS5hc3Rlcmlza2FsdG9uZWFyYWJpYz0xNjQ1O2UuYXN0ZXJpc2thcmFiaWM9MTY0NTtlLmFzdGVyaXNrbWF0aD04NzI3O2UuYXN0ZXJpc2ttb25vc3BhY2U9NjUyOTA7ZS5hc3Rlcmlza3NtYWxsPTY1MTIxO2UuYXN0ZXJpc209ODI1ODtlLmFzdXBlcmlvcj02MzIwOTtlLmFzeW1wdG90aWNhbGx5ZXF1YWw9ODc3MTtlLmF0PTY0O2UuYXRpbGRlPTIyNztlLmF0bW9ub3NwYWNlPTY1MzEyO2UuYXRzbWFsbD02NTEzMTtlLmF0dXJuZWQ9NTkyO2UuYXViZW5nYWxpPTI0NTI7ZS5hdWJvcG9tb2ZvPTEyNTc2O2UuYXVkZXZhPTIzMjQ7ZS5hdWd1amFyYXRpPTI3MDg7ZS5hdWd1cm11a2hpPTI1ODA7ZS5hdWxlbmd0aG1hcmtiZW5nYWxpPTI1MTk7ZS5hdW1hdHJhZ3VybXVraGk9MjYzNjtlLmF1dm93ZWxzaWduYmVuZ2FsaT0yNTA4O2UuYXV2b3dlbHNpZ25kZXZhPTIzODA7ZS5hdXZvd2Vsc2lnbmd1amFyYXRpPTI3NjQ7ZS5hdmFncmFoYWRldmE9MjM2NTtlLmF5YmFybWVuaWFuPTEzNzc7ZS5heWluPTE1MDY7ZS5heWluYWx0b25laGVicmV3PTY0Mjg4O2UuYXlpbmhlYnJldz0xNTA2O2UuYj05ODtlLmJhYmVuZ2FsaT0yNDc2O2UuYmFja3NsYXNoPTkyO2UuYmFja3NsYXNobW9ub3NwYWNlPTY1MzQwO2UuYmFkZXZhPTIzNDg7ZS5iYWd1amFyYXRpPTI3MzI7ZS5iYWd1cm11a2hpPTI2MDQ7ZS5iYWhpcmFnYW5hPTEyNDAwO2UuYmFodHRoYWk9MzY0NztlLmJha2F0YWthbmE9MTI0OTY7ZS5iYXI9MTI0O2UuYmFybW9ub3NwYWNlPTY1MzcyO2UuYmJvcG9tb2ZvPTEyNTQ5O2UuYmNpcmNsZT05NDI1O2UuYmRvdGFjY2VudD03NjgzO2UuYmRvdGJlbG93PTc2ODU7ZS5iZWFtZWRzaXh0ZWVudGhub3Rlcz05ODM2O2UuYmVjYXVzZT04NzU3O2UuYmVjeXJpbGxpYz0xMDczO2UuYmVoYXJhYmljPTE1NzY7ZS5iZWhmaW5hbGFyYWJpYz02NTE2ODtlLmJlaGluaXRpYWxhcmFiaWM9NjUxNjk7ZS5iZWhpcmFnYW5hPTEyNDA5O2UuYmVobWVkaWFsYXJhYmljPTY1MTcwO2UuYmVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzE7ZS5iZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjA7ZS5iZWhub29uZmluYWxhcmFiaWM9NjQ2MjE7ZS5iZWthdGFrYW5hPTEyNTA1O2UuYmVuYXJtZW5pYW49MTM3ODtlLmJldD0xNDg5O2UuYmV0YT05NDY7ZS5iZXRhc3ltYm9sZ3JlZWs9OTc2O2UuYmV0ZGFnZXNoPTY0MzA1O2UuYmV0ZGFnZXNoaGVicmV3PTY0MzA1O2UuYmV0aGVicmV3PTE0ODk7ZS5iZXRyYWZlaGVicmV3PTY0MzMyO2UuYmhhYmVuZ2FsaT0yNDc3O2UuYmhhZGV2YT0yMzQ5O2UuYmhhZ3VqYXJhdGk9MjczMztlLmJoYWd1cm11a2hpPTI2MDU7ZS5iaG9vaz01OTU7ZS5iaWhpcmFnYW5hPTEyNDAzO2UuYmlrYXRha2FuYT0xMjQ5OTtlLmJpbGFiaWFsY2xpY2s9NjY0O2UuYmluZGlndXJtdWtoaT0yNTYyO2UuYmlydXNxdWFyZT0xMzEwNTtlLmJsYWNrY2lyY2xlPTk2Nzk7ZS5ibGFja2RpYW1vbmQ9OTY3MDtlLmJsYWNrZG93bnBvaW50aW5ndHJpYW5nbGU9OTY2MDtlLmJsYWNrbGVmdHBvaW50aW5ncG9pbnRlcj05NjY4O2UuYmxhY2tsZWZ0cG9pbnRpbmd0cmlhbmdsZT05NjY0O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnQ9MTIzMDQ7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgzO2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0PTEyMzA1O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODQ7ZS5ibGFja2xvd2VybGVmdHRyaWFuZ2xlPTk2OTk7ZS5ibGFja2xvd2VycmlnaHR0cmlhbmdsZT05Njk4O2UuYmxhY2tyZWN0YW5nbGU9OTY0NDtlLmJsYWNrcmlnaHRwb2ludGluZ3BvaW50ZXI9OTY1ODtlLmJsYWNrcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTQ7ZS5ibGFja3NtYWxsc3F1YXJlPTk2NDI7ZS5ibGFja3NtaWxpbmdmYWNlPTk3ODc7ZS5ibGFja3NxdWFyZT05NjMyO2UuYmxhY2tzdGFyPTk3MzM7ZS5ibGFja3VwcGVybGVmdHRyaWFuZ2xlPTk3MDA7ZS5ibGFja3VwcGVycmlnaHR0cmlhbmdsZT05NzAxO2UuYmxhY2t1cHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjUyO2UuYmxhY2t1cHBvaW50aW5ndHJpYW5nbGU9OTY1MDtlLmJsYW5rPTkyNTE7ZS5ibGluZWJlbG93PTc2ODc7ZS5ibG9jaz05NjA4O2UuYm1vbm9zcGFjZT02NTM0NjtlLmJvYmFpbWFpdGhhaT0zNjEwO2UuYm9oaXJhZ2FuYT0xMjQxMjtlLmJva2F0YWthbmE9MTI1MDg7ZS5icGFyZW49OTM3MztlLmJxc3F1YXJlPTEzMjUxO2UuYnJhY2VleD02MzczMjtlLmJyYWNlbGVmdD0xMjM7ZS5icmFjZWxlZnRidD02MzczMTtlLmJyYWNlbGVmdG1pZD02MzczMDtlLmJyYWNlbGVmdG1vbm9zcGFjZT02NTM3MTtlLmJyYWNlbGVmdHNtYWxsPTY1MTE1O2UuYnJhY2VsZWZ0dHA9NjM3Mjk7ZS5icmFjZWxlZnR2ZXJ0aWNhbD02NTA3OTtlLmJyYWNlcmlnaHQ9MTI1O2UuYnJhY2VyaWdodGJ0PTYzNzQyO2UuYnJhY2VyaWdodG1pZD02Mzc0MTtlLmJyYWNlcmlnaHRtb25vc3BhY2U9NjUzNzM7ZS5icmFjZXJpZ2h0c21hbGw9NjUxMTY7ZS5icmFjZXJpZ2h0dHA9NjM3NDA7ZS5icmFjZXJpZ2h0dmVydGljYWw9NjUwODA7ZS5icmFja2V0bGVmdD05MTtlLmJyYWNrZXRsZWZ0YnQ9NjM3Mjg7ZS5icmFja2V0bGVmdGV4PTYzNzI3O2UuYnJhY2tldGxlZnRtb25vc3BhY2U9NjUzMzk7ZS5icmFja2V0bGVmdHRwPTYzNzI2O2UuYnJhY2tldHJpZ2h0PTkzO2UuYnJhY2tldHJpZ2h0YnQ9NjM3Mzk7ZS5icmFja2V0cmlnaHRleD02MzczODtlLmJyYWNrZXRyaWdodG1vbm9zcGFjZT02NTM0MTtlLmJyYWNrZXRyaWdodHRwPTYzNzM3O2UuYnJldmU9NzI4O2UuYnJldmViZWxvd2NtYj04MTQ7ZS5icmV2ZWNtYj03NzQ7ZS5icmV2ZWludmVydGVkYmVsb3djbWI9ODE1O2UuYnJldmVpbnZlcnRlZGNtYj03ODU7ZS5icmV2ZWludmVydGVkZG91YmxlY21iPTg2NTtlLmJyaWRnZWJlbG93Y21iPTgxMDtlLmJyaWRnZWludmVydGVkYmVsb3djbWI9ODI2O2UuYnJva2VuYmFyPTE2NjtlLmJzdHJva2U9Mzg0O2UuYnN1cGVyaW9yPTYzMjEwO2UuYnRvcGJhcj0zODc7ZS5idWhpcmFnYW5hPTEyNDA2O2UuYnVrYXRha2FuYT0xMjUwMjtlLmJ1bGxldD04MjI2O2UuYnVsbGV0aW52ZXJzZT05Njg4O2UuYnVsbGV0b3BlcmF0b3I9ODcyOTtlLmJ1bGxzZXllPTk2Nzg7ZS5jPTk5O2UuY2Fhcm1lbmlhbj0xMzkwO2UuY2FiZW5nYWxpPTI0NTg7ZS5jYWN1dGU9MjYzO2UuY2FkZXZhPTIzMzA7ZS5jYWd1amFyYXRpPTI3MTQ7ZS5jYWd1cm11a2hpPTI1ODY7ZS5jYWxzcXVhcmU9MTMxOTI7ZS5jYW5kcmFiaW5kdWJlbmdhbGk9MjQzMztlLmNhbmRyYWJpbmR1Y21iPTc4NDtlLmNhbmRyYWJpbmR1ZGV2YT0yMzA1O2UuY2FuZHJhYmluZHVndWphcmF0aT0yNjg5O2UuY2Fwc2xvY2s9ODY4MjtlLmNhcmVvZj04NDUzO2UuY2Fyb249NzExO2UuY2Fyb25iZWxvd2NtYj04MTI7ZS5jYXJvbmNtYj03ODA7ZS5jYXJyaWFnZXJldHVybj04NjI5O2UuY2JvcG9tb2ZvPTEyNTY4O2UuY2Nhcm9uPTI2OTtlLmNjZWRpbGxhPTIzMTtlLmNjZWRpbGxhYWN1dGU9NzY4OTtlLmNjaXJjbGU9OTQyNjtlLmNjaXJjdW1mbGV4PTI2NTtlLmNjdXJsPTU5NztlLmNkb3Q9MjY3O2UuY2RvdGFjY2VudD0yNjc7ZS5jZHNxdWFyZT0xMzI1MztlLmNlZGlsbGE9MTg0O2UuY2VkaWxsYWNtYj04MDc7ZS5jZW50PTE2MjtlLmNlbnRpZ3JhZGU9ODQ1MTtlLmNlbnRpbmZlcmlvcj02MzE5OTtlLmNlbnRtb25vc3BhY2U9NjU1MDQ7ZS5jZW50b2xkc3R5bGU9NjMzOTQ7ZS5jZW50c3VwZXJpb3I9NjMyMDA7ZS5jaGFhcm1lbmlhbj0xNDAxO2UuY2hhYmVuZ2FsaT0yNDU5O2UuY2hhZGV2YT0yMzMxO2UuY2hhZ3VqYXJhdGk9MjcxNTtlLmNoYWd1cm11a2hpPTI1ODc7ZS5jaGJvcG9tb2ZvPTEyNTY0O2UuY2hlYWJraGFzaWFuY3lyaWxsaWM9MTIxMztlLmNoZWNrbWFyaz0xMDAwMztlLmNoZWN5cmlsbGljPTEwOTU7ZS5jaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYz0xMjE1O2UuY2hlZGVzY2VuZGVyY3lyaWxsaWM9MTIwNztlLmNoZWRpZXJlc2lzY3lyaWxsaWM9MTI2OTtlLmNoZWhhcm1lbmlhbj0xMzk1O2UuY2hla2hha2Fzc2lhbmN5cmlsbGljPTEyMjg7ZS5jaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTEyMDk7ZS5jaGk9OTY3O2UuY2hpZXVjaGFjaXJjbGVrb3JlYW49MTI5MTk7ZS5jaGlldWNoYXBhcmVua29yZWFuPTEyODIzO2UuY2hpZXVjaGNpcmNsZWtvcmVhbj0xMjkwNTtlLmNoaWV1Y2hrb3JlYW49MTI2MTg7ZS5jaGlldWNocGFyZW5rb3JlYW49MTI4MDk7ZS5jaG9jaGFuZ3RoYWk9MzU5NDtlLmNob2NoYW50aGFpPTM1OTI7ZS5jaG9jaGluZ3RoYWk9MzU5MztlLmNob2Nob2V0aGFpPTM1OTY7ZS5jaG9vaz0zOTI7ZS5jaWV1Y2FjaXJjbGVrb3JlYW49MTI5MTg7ZS5jaWV1Y2FwYXJlbmtvcmVhbj0xMjgyMjtlLmNpZXVjY2lyY2xla29yZWFuPTEyOTA0O2UuY2lldWNrb3JlYW49MTI2MTY7ZS5jaWV1Y3BhcmVua29yZWFuPTEyODA4O2UuY2lldWN1cGFyZW5rb3JlYW49MTI4Mjg7ZS5jaXJjbGU9OTY3NTtlLmNpcmNsZWNvcHlydD0xNjk7ZS5jaXJjbGVtdWx0aXBseT04ODU1O2UuY2lyY2xlb3Q9ODg1NztlLmNpcmNsZXBsdXM9ODg1MztlLmNpcmNsZXBvc3RhbG1hcms9MTIzNDI7ZS5jaXJjbGV3aXRobGVmdGhhbGZibGFjaz05NjgwO2UuY2lyY2xld2l0aHJpZ2h0aGFsZmJsYWNrPTk2ODE7ZS5jaXJjdW1mbGV4PTcxMDtlLmNpcmN1bWZsZXhiZWxvd2NtYj04MTM7ZS5jaXJjdW1mbGV4Y21iPTc3MDtlLmNsZWFyPTg5OTk7ZS5jbGlja2FsdmVvbGFyPTQ1MDtlLmNsaWNrZGVudGFsPTQ0ODtlLmNsaWNrbGF0ZXJhbD00NDk7ZS5jbGlja3JldHJvZmxleD00NTE7ZS5jbHViPTk4Mjc7ZS5jbHVic3VpdGJsYWNrPTk4Mjc7ZS5jbHVic3VpdHdoaXRlPTk4MzE7ZS5jbWN1YmVkc3F1YXJlPTEzMjIwO2UuY21vbm9zcGFjZT02NTM0NztlLmNtc3F1YXJlZHNxdWFyZT0xMzIxNjtlLmNvYXJtZW5pYW49MTQwOTtlLmNvbG9uPTU4O2UuY29sb25tb25ldGFyeT04MzUzO2UuY29sb25tb25vc3BhY2U9NjUzMDY7ZS5jb2xvbnNpZ249ODM1MztlLmNvbG9uc21hbGw9NjUxMDk7ZS5jb2xvbnRyaWFuZ3VsYXJoYWxmbW9kPTcyMTtlLmNvbG9udHJpYW5ndWxhcm1vZD03MjA7ZS5jb21tYT00NDtlLmNvbW1hYWJvdmVjbWI9Nzg3O2UuY29tbWFhYm92ZXJpZ2h0Y21iPTc4OTtlLmNvbW1hYWNjZW50PTYzMTcxO2UuY29tbWFhcmFiaWM9MTU0ODtlLmNvbW1hYXJtZW5pYW49MTM3MztlLmNvbW1haW5mZXJpb3I9NjMyMDE7ZS5jb21tYW1vbm9zcGFjZT02NTI5MjtlLmNvbW1hcmV2ZXJzZWRhYm92ZWNtYj03ODg7ZS5jb21tYXJldmVyc2VkbW9kPTcwMTtlLmNvbW1hc21hbGw9NjUxMDQ7ZS5jb21tYXN1cGVyaW9yPTYzMjAyO2UuY29tbWF0dXJuZWRhYm92ZWNtYj03ODY7ZS5jb21tYXR1cm5lZG1vZD02OTk7ZS5jb21wYXNzPTk3ODg7ZS5jb25ncnVlbnQ9ODc3MztlLmNvbnRvdXJpbnRlZ3JhbD04NzUwO2UuY29udHJvbD04OTYzO2UuY29udHJvbEFDSz02O2UuY29udHJvbEJFTD03O2UuY29udHJvbEJTPTg7ZS5jb250cm9sQ0FOPTI0O2UuY29udHJvbENSPTEzO2UuY29udHJvbERDMT0xNztlLmNvbnRyb2xEQzI9MTg7ZS5jb250cm9sREMzPTE5O2UuY29udHJvbERDND0yMDtlLmNvbnRyb2xERUw9MTI3O2UuY29udHJvbERMRT0xNjtlLmNvbnRyb2xFTT0yNTtlLmNvbnRyb2xFTlE9NTtlLmNvbnRyb2xFT1Q9NDtlLmNvbnRyb2xFU0M9Mjc7ZS5jb250cm9sRVRCPTIzO2UuY29udHJvbEVUWD0zO2UuY29udHJvbEZGPTEyO2UuY29udHJvbEZTPTI4O2UuY29udHJvbEdTPTI5O2UuY29udHJvbEhUPTk7ZS5jb250cm9sTEY9MTA7ZS5jb250cm9sTkFLPTIxO2UuY29udHJvbE5VTEw9MDtlLmNvbnRyb2xSUz0zMDtlLmNvbnRyb2xTST0xNTtlLmNvbnRyb2xTTz0xNDtlLmNvbnRyb2xTT1Q9MjtlLmNvbnRyb2xTVFg9MTtlLmNvbnRyb2xTVUI9MjY7ZS5jb250cm9sU1lOPTIyO2UuY29udHJvbFVTPTMxO2UuY29udHJvbFZUPTExO2UuY29weXJpZ2h0PTE2OTtlLmNvcHlyaWdodHNhbnM9NjM3MjE7ZS5jb3B5cmlnaHRzZXJpZj02MzE5MztlLmNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAwO2UuY29ybmVyYnJhY2tldGxlZnRoYWxmd2lkdGg9NjUzNzg7ZS5jb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg5O2UuY29ybmVyYnJhY2tldHJpZ2h0PTEyMzAxO2UuY29ybmVyYnJhY2tldHJpZ2h0aGFsZndpZHRoPTY1Mzc5O2UuY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwOTA7ZS5jb3Jwb3JhdGlvbnNxdWFyZT0xMzE4MztlLmNvc3F1YXJlPTEzMjU1O2UuY292ZXJrZ3NxdWFyZT0xMzI1NDtlLmNwYXJlbj05Mzc0O2UuY3J1emVpcm89ODM1NDtlLmNzdHJldGNoZWQ9NjYzO2UuY3VybHlhbmQ9ODkxMTtlLmN1cmx5b3I9ODkxMDtlLmN1cnJlbmN5PTE2NDtlLmN5ckJyZXZlPTYzMTg1O2UuY3lyRmxleD02MzE4NjtlLmN5cmJyZXZlPTYzMTg4O2UuY3lyZmxleD02MzE4OTtlLmQ9MTAwO2UuZGFhcm1lbmlhbj0xMzgwO2UuZGFiZW5nYWxpPTI0NzA7ZS5kYWRhcmFiaWM9MTU5MDtlLmRhZGV2YT0yMzQyO2UuZGFkZmluYWxhcmFiaWM9NjUyMTQ7ZS5kYWRpbml0aWFsYXJhYmljPTY1MjE1O2UuZGFkbWVkaWFsYXJhYmljPTY1MjE2O2UuZGFnZXNoPTE0Njg7ZS5kYWdlc2hoZWJyZXc9MTQ2ODtlLmRhZ2dlcj04MjI0O2UuZGFnZ2VyZGJsPTgyMjU7ZS5kYWd1amFyYXRpPTI3MjY7ZS5kYWd1cm11a2hpPTI1OTg7ZS5kYWhpcmFnYW5hPTEyMzg0O2UuZGFrYXRha2FuYT0xMjQ4MDtlLmRhbGFyYWJpYz0xNTgzO2UuZGFsZXQ9MTQ5MTtlLmRhbGV0ZGFnZXNoPTY0MzA3O2UuZGFsZXRkYWdlc2hoZWJyZXc9NjQzMDc7ZS5kYWxldGhlYnJldz0xNDkxO2UuZGFsZmluYWxhcmFiaWM9NjUxOTQ7ZS5kYW1tYWFyYWJpYz0xNjE1O2UuZGFtbWFsb3dhcmFiaWM9MTYxNTtlLmRhbW1hdGFuYWx0b25lYXJhYmljPTE2MTI7ZS5kYW1tYXRhbmFyYWJpYz0xNjEyO2UuZGFuZGE9MjQwNDtlLmRhcmdhaGVicmV3PTE0NDc7ZS5kYXJnYWxlZnRoZWJyZXc9MTQ0NztlLmRhc2lhcG5ldW1hdGFjeXJpbGxpY2NtYj0xMTU3O2UuZGJsR3JhdmU9NjMxODc7ZS5kYmxhbmdsZWJyYWNrZXRsZWZ0PTEyMjk4O2UuZGJsYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg1O2UuZGJsYW5nbGVicmFja2V0cmlnaHQ9MTIyOTk7ZS5kYmxhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg2O2UuZGJsYXJjaGludmVydGVkYmVsb3djbWI9ODExO2UuZGJsYXJyb3dsZWZ0PTg2NjA7ZS5kYmxhcnJvd3JpZ2h0PTg2NTg7ZS5kYmxkYW5kYT0yNDA1O2UuZGJsZ3JhdmU9NjMxOTA7ZS5kYmxncmF2ZWNtYj03ODM7ZS5kYmxpbnRlZ3JhbD04NzQ4O2UuZGJsbG93bGluZT04MjE1O2UuZGJsbG93bGluZWNtYj04MTk7ZS5kYmxvdmVybGluZWNtYj04MzE7ZS5kYmxwcmltZW1vZD02OTg7ZS5kYmx2ZXJ0aWNhbGJhcj04MjE0O2UuZGJsdmVydGljYWxsaW5lYWJvdmVjbWI9NzgyO2UuZGJvcG9tb2ZvPTEyNTUzO2UuZGJzcXVhcmU9MTMyNTY7ZS5kY2Fyb249MjcxO2UuZGNlZGlsbGE9NzY5NztlLmRjaXJjbGU9OTQyNztlLmRjaXJjdW1mbGV4YmVsb3c9NzY5OTtlLmRjcm9hdD0yNzM7ZS5kZGFiZW5nYWxpPTI0NjU7ZS5kZGFkZXZhPTIzMzc7ZS5kZGFndWphcmF0aT0yNzIxO2UuZGRhZ3VybXVraGk9MjU5MztlLmRkYWxhcmFiaWM9MTY3MjtlLmRkYWxmaW5hbGFyYWJpYz02NDM5MztlLmRkZGhhZGV2YT0yMzk2O2UuZGRoYWJlbmdhbGk9MjQ2NjtlLmRkaGFkZXZhPTIzMzg7ZS5kZGhhZ3VqYXJhdGk9MjcyMjtlLmRkaGFndXJtdWtoaT0yNTk0O2UuZGRvdGFjY2VudD03NjkxO2UuZGRvdGJlbG93PTc2OTM7ZS5kZWNpbWFsc2VwYXJhdG9yYXJhYmljPTE2NDM7ZS5kZWNpbWFsc2VwYXJhdG9ycGVyc2lhbj0xNjQzO2UuZGVjeXJpbGxpYz0xMDc2O2UuZGVncmVlPTE3NjtlLmRlaGloZWJyZXc9MTQ1MztlLmRlaGlyYWdhbmE9MTIzOTE7ZS5kZWljb3B0aWM9MTAwNztlLmRla2F0YWthbmE9MTI0ODc7ZS5kZWxldGVsZWZ0PTkwMDM7ZS5kZWxldGVyaWdodD04OTk4O2UuZGVsdGE9OTQ4O2UuZGVsdGF0dXJuZWQ9Mzk3O2UuZGVub21pbmF0b3JtaW51c29uZW51bWVyYXRvcmJlbmdhbGk9MjU1MjtlLmRlemg9Njc2O2UuZGhhYmVuZ2FsaT0yNDcxO2UuZGhhZGV2YT0yMzQzO2UuZGhhZ3VqYXJhdGk9MjcyNztlLmRoYWd1cm11a2hpPTI1OTk7ZS5kaG9vaz01OTk7ZS5kaWFseXRpa2F0b25vcz05MDE7ZS5kaWFseXRpa2F0b25vc2NtYj04MzY7ZS5kaWFtb25kPTk4MzA7ZS5kaWFtb25kc3VpdHdoaXRlPTk4MjY7ZS5kaWVyZXNpcz0xNjg7ZS5kaWVyZXNpc2FjdXRlPTYzMTkxO2UuZGllcmVzaXNiZWxvd2NtYj04MDQ7ZS5kaWVyZXNpc2NtYj03NzY7ZS5kaWVyZXNpc2dyYXZlPTYzMTkyO2UuZGllcmVzaXN0b25vcz05MDE7ZS5kaWhpcmFnYW5hPTEyMzg2O2UuZGlrYXRha2FuYT0xMjQ4MjtlLmRpdHRvbWFyaz0xMjI5MTtlLmRpdmlkZT0yNDc7ZS5kaXZpZGVzPTg3Mzk7ZS5kaXZpc2lvbnNsYXNoPTg3MjU7ZS5kamVjeXJpbGxpYz0xMTA2O2UuZGtzaGFkZT05NjE5O2UuZGxpbmViZWxvdz03Njk1O2UuZGxzcXVhcmU9MTMyMDc7ZS5kbWFjcm9uPTI3MztlLmRtb25vc3BhY2U9NjUzNDg7ZS5kbmJsb2NrPTk2MDQ7ZS5kb2NoYWRhdGhhaT0zNTk4O2UuZG9kZWt0aGFpPTM2MDQ7ZS5kb2hpcmFnYW5hPTEyMzkzO2UuZG9rYXRha2FuYT0xMjQ4OTtlLmRvbGxhcj0zNjtlLmRvbGxhcmluZmVyaW9yPTYzMjAzO2UuZG9sbGFybW9ub3NwYWNlPTY1Mjg0O2UuZG9sbGFyb2xkc3R5bGU9NjMyNjg7ZS5kb2xsYXJzbWFsbD02NTEyOTtlLmRvbGxhcnN1cGVyaW9yPTYzMjA0O2UuZG9uZz04MzYzO2UuZG9ydXNxdWFyZT0xMzA5NDtlLmRvdGFjY2VudD03Mjk7ZS5kb3RhY2NlbnRjbWI9Nzc1O2UuZG90YmVsb3djbWI9ODAzO2UuZG90YmVsb3djb21iPTgwMztlLmRvdGthdGFrYW5hPTEyNTM5O2UuZG90bGVzc2k9MzA1O2UuZG90bGVzc2o9NjMxNjY7ZS5kb3RsZXNzanN0cm9rZWhvb2s9NjQ0O2UuZG90bWF0aD04OTAxO2UuZG90dGVkY2lyY2xlPTk2NzY7ZS5kb3VibGV5b2RwYXRhaD02NDI4NztlLmRvdWJsZXlvZHBhdGFoaGVicmV3PTY0Mjg3O2UuZG93bnRhY2tiZWxvd2NtYj03OTg7ZS5kb3dudGFja21vZD03MjU7ZS5kcGFyZW49OTM3NTtlLmRzdXBlcmlvcj02MzIxMTtlLmR0YWlsPTU5ODtlLmR0b3BiYXI9Mzk2O2UuZHVoaXJhZ2FuYT0xMjM4OTtlLmR1a2F0YWthbmE9MTI0ODU7ZS5kej00OTk7ZS5kemFsdG9uZT02NzU7ZS5kemNhcm9uPTQ1NDtlLmR6Y3VybD02Nzc7ZS5kemVhYmtoYXNpYW5jeXJpbGxpYz0xMjQ5O2UuZHplY3lyaWxsaWM9MTEwOTtlLmR6aGVjeXJpbGxpYz0xMTE5O2UuZT0xMDE7ZS5lYWN1dGU9MjMzO2UuZWFydGg9OTc5MztlLmViZW5nYWxpPTI0NDc7ZS5lYm9wb21vZm89MTI1NzI7ZS5lYnJldmU9Mjc3O2UuZWNhbmRyYWRldmE9MjMxNztlLmVjYW5kcmFndWphcmF0aT0yNzAxO2UuZWNhbmRyYXZvd2Vsc2lnbmRldmE9MjM3MztlLmVjYW5kcmF2b3dlbHNpZ25ndWphcmF0aT0yNzU3O2UuZWNhcm9uPTI4MztlLmVjZWRpbGxhYnJldmU9NzcwOTtlLmVjaGFybWVuaWFuPTEzODE7ZS5lY2h5aXduYXJtZW5pYW49MTQxNTtlLmVjaXJjbGU9OTQyODtlLmVjaXJjdW1mbGV4PTIzNDtlLmVjaXJjdW1mbGV4YWN1dGU9Nzg3MTtlLmVjaXJjdW1mbGV4YmVsb3c9NzcwNTtlLmVjaXJjdW1mbGV4ZG90YmVsb3c9Nzg3OTtlLmVjaXJjdW1mbGV4Z3JhdmU9Nzg3MztlLmVjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NzU7ZS5lY2lyY3VtZmxleHRpbGRlPTc4Nzc7ZS5lY3lyaWxsaWM9MTEwODtlLmVkYmxncmF2ZT01MTc7ZS5lZGV2YT0yMzE5O2UuZWRpZXJlc2lzPTIzNTtlLmVkb3Q9Mjc5O2UuZWRvdGFjY2VudD0yNzk7ZS5lZG90YmVsb3c9Nzg2NTtlLmVlZ3VybXVraGk9MjU3NTtlLmVlbWF0cmFndXJtdWtoaT0yNjMxO2UuZWZjeXJpbGxpYz0xMDkyO2UuZWdyYXZlPTIzMjtlLmVndWphcmF0aT0yNzAzO2UuZWhhcm1lbmlhbj0xMzgzO2UuZWhib3BvbW9mbz0xMjU3MztlLmVoaXJhZ2FuYT0xMjM2MDtlLmVob29rYWJvdmU9Nzg2NztlLmVpYm9wb21vZm89MTI1NzU7ZS5laWdodD01NjtlLmVpZ2h0YXJhYmljPTE2NDA7ZS5laWdodGJlbmdhbGk9MjU0MjtlLmVpZ2h0Y2lyY2xlPTkzMTk7ZS5laWdodGNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjk7ZS5laWdodGRldmE9MjQxNDtlLmVpZ2h0ZWVuY2lyY2xlPTkzMjk7ZS5laWdodGVlbnBhcmVuPTkzNDk7ZS5laWdodGVlbnBlcmlvZD05MzY5O2UuZWlnaHRndWphcmF0aT0yNzk4O2UuZWlnaHRndXJtdWtoaT0yNjcwO2UuZWlnaHRoYWNrYXJhYmljPTE2NDA7ZS5laWdodGhhbmd6aG91PTEyMzI4O2UuZWlnaHRobm90ZWJlYW1lZD05ODM1O2UuZWlnaHRpZGVvZ3JhcGhpY3BhcmVuPTEyODM5O2UuZWlnaHRpbmZlcmlvcj04MzI4O2UuZWlnaHRtb25vc3BhY2U9NjUzMDQ7ZS5laWdodG9sZHN0eWxlPTYzMjg4O2UuZWlnaHRwYXJlbj05MzM5O2UuZWlnaHRwZXJpb2Q9OTM1OTtlLmVpZ2h0cGVyc2lhbj0xNzg0O2UuZWlnaHRyb21hbj04NTY3O2UuZWlnaHRzdXBlcmlvcj04MzEyO2UuZWlnaHR0aGFpPTM2NzI7ZS5laW52ZXJ0ZWRicmV2ZT01MTk7ZS5laW90aWZpZWRjeXJpbGxpYz0xMTI1O2UuZWthdGFrYW5hPTEyNDU2O2UuZWthdGFrYW5haGFsZndpZHRoPTY1Mzk2O2UuZWtvbmthcmd1cm11a2hpPTI2NzY7ZS5la29yZWFuPTEyNjI4O2UuZWxjeXJpbGxpYz0xMDgzO2UuZWxlbWVudD04NzEyO2UuZWxldmVuY2lyY2xlPTkzMjI7ZS5lbGV2ZW5wYXJlbj05MzQyO2UuZWxldmVucGVyaW9kPTkzNjI7ZS5lbGV2ZW5yb21hbj04NTcwO2UuZWxsaXBzaXM9ODIzMDtlLmVsbGlwc2lzdmVydGljYWw9ODk0MjtlLmVtYWNyb249Mjc1O2UuZW1hY3JvbmFjdXRlPTc3MDM7ZS5lbWFjcm9uZ3JhdmU9NzcwMTtlLmVtY3lyaWxsaWM9MTA4NDtlLmVtZGFzaD04MjEyO2UuZW1kYXNodmVydGljYWw9NjUwNzM7ZS5lbW9ub3NwYWNlPTY1MzQ5O2UuZW1waGFzaXNtYXJrYXJtZW5pYW49MTM3MTtlLmVtcHR5c2V0PTg3MDk7ZS5lbmJvcG9tb2ZvPTEyNTc5O2UuZW5jeXJpbGxpYz0xMDg1O2UuZW5kYXNoPTgyMTE7ZS5lbmRhc2h2ZXJ0aWNhbD02NTA3NDtlLmVuZGVzY2VuZGVyY3lyaWxsaWM9MTE4NztlLmVuZz0zMzE7ZS5lbmdib3BvbW9mbz0xMjU4MTtlLmVuZ2hlY3lyaWxsaWM9MTE4OTtlLmVuaG9va2N5cmlsbGljPTEyMjQ7ZS5lbnNwYWNlPTgxOTQ7ZS5lb2dvbmVrPTI4MTtlLmVva29yZWFuPTEyNjI3O2UuZW9wZW49NjAzO2UuZW9wZW5jbG9zZWQ9NjY2O2UuZW9wZW5yZXZlcnNlZD02MDQ7ZS5lb3BlbnJldmVyc2VkY2xvc2VkPTYwNjtlLmVvcGVucmV2ZXJzZWRob29rPTYwNTtlLmVwYXJlbj05Mzc2O2UuZXBzaWxvbj05NDk7ZS5lcHNpbG9udG9ub3M9OTQxO2UuZXF1YWw9NjE7ZS5lcXVhbG1vbm9zcGFjZT02NTMwOTtlLmVxdWFsc21hbGw9NjUxMjY7ZS5lcXVhbHN1cGVyaW9yPTgzMTY7ZS5lcXVpdmFsZW5jZT04ODAxO2UuZXJib3BvbW9mbz0xMjU4MjtlLmVyY3lyaWxsaWM9MTA4ODtlLmVyZXZlcnNlZD02MDA7ZS5lcmV2ZXJzZWRjeXJpbGxpYz0xMTAxO2UuZXNjeXJpbGxpYz0xMDg5O2UuZXNkZXNjZW5kZXJjeXJpbGxpYz0xMTk1O2UuZXNoPTY0MztlLmVzaGN1cmw9NjQ2O2UuZXNob3J0ZGV2YT0yMzE4O2UuZXNob3J0dm93ZWxzaWduZGV2YT0yMzc0O2UuZXNocmV2ZXJzZWRsb29wPTQyNjtlLmVzaHNxdWF0cmV2ZXJzZWQ9NjQ1O2UuZXNtYWxsaGlyYWdhbmE9MTIzNTk7ZS5lc21hbGxrYXRha2FuYT0xMjQ1NTtlLmVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg2O2UuZXN0aW1hdGVkPTg0OTQ7ZS5lc3VwZXJpb3I9NjMyMTI7ZS5ldGE9OTUxO2UuZXRhcm1lbmlhbj0xMzg0O2UuZXRhdG9ub3M9OTQyO2UuZXRoPTI0MDtlLmV0aWxkZT03ODY5O2UuZXRpbGRlYmVsb3c9NzcwNztlLmV0bmFodGFmb3VraGhlYnJldz0xNDI1O2UuZXRuYWh0YWZvdWtobGVmdGhlYnJldz0xNDI1O2UuZXRuYWh0YWhlYnJldz0xNDI1O2UuZXRuYWh0YWxlZnRoZWJyZXc9MTQyNTtlLmV0dXJuZWQ9NDc3O2UuZXVrb3JlYW49MTI2NDE7ZS5ldXJvPTgzNjQ7ZS5ldm93ZWxzaWduYmVuZ2FsaT0yNTAzO2UuZXZvd2Vsc2lnbmRldmE9MjM3NTtlLmV2b3dlbHNpZ25ndWphcmF0aT0yNzU5O2UuZXhjbGFtPTMzO2UuZXhjbGFtYXJtZW5pYW49MTM3MjtlLmV4Y2xhbWRibD04MjUyO2UuZXhjbGFtZG93bj0xNjE7ZS5leGNsYW1kb3duc21hbGw9NjMzOTM7ZS5leGNsYW1tb25vc3BhY2U9NjUyODE7ZS5leGNsYW1zbWFsbD02MzI2NTtlLmV4aXN0ZW50aWFsPTg3MDc7ZS5lemg9NjU4O2UuZXpoY2Fyb249NDk1O2UuZXpoY3VybD02NTk7ZS5lemhyZXZlcnNlZD00NDE7ZS5lemh0YWlsPTQ0MjtlLmY9MTAyO2UuZmFkZXZhPTIzOTg7ZS5mYWd1cm11a2hpPTI2NTQ7ZS5mYWhyZW5oZWl0PTg0NTc7ZS5mYXRoYWFyYWJpYz0xNjE0O2UuZmF0aGFsb3dhcmFiaWM9MTYxNDtlLmZhdGhhdGFuYXJhYmljPTE2MTE7ZS5mYm9wb21vZm89MTI1NTI7ZS5mY2lyY2xlPTk0Mjk7ZS5mZG90YWNjZW50PTc3MTE7ZS5mZWhhcmFiaWM9MTYwMTtlLmZlaGFybWVuaWFuPTE0MTQ7ZS5mZWhmaW5hbGFyYWJpYz02NTIzNDtlLmZlaGluaXRpYWxhcmFiaWM9NjUyMzU7ZS5mZWhtZWRpYWxhcmFiaWM9NjUyMzY7ZS5mZWljb3B0aWM9OTk3O2UuZmVtYWxlPTk3OTI7ZS5mZj02NDI1NjtlLmZfZj02NDI1NjtlLmZmaT02NDI1OTtlLmZfZl9pPTY0MjU5O2UuZmZsPTY0MjYwO2UuZl9mX2w9NjQyNjA7ZS5maT02NDI1NztlLmZfaT02NDI1NztlLmZpZnRlZW5jaXJjbGU9OTMyNjtlLmZpZnRlZW5wYXJlbj05MzQ2O2UuZmlmdGVlbnBlcmlvZD05MzY2O2UuZmlndXJlZGFzaD04MjEwO2UuZmlsbGVkYm94PTk2MzI7ZS5maWxsZWRyZWN0PTk2NDQ7ZS5maW5hbGthZj0xNDk4O2UuZmluYWxrYWZkYWdlc2g9NjQzMTQ7ZS5maW5hbGthZmRhZ2VzaGhlYnJldz02NDMxNDtlLmZpbmFsa2FmaGVicmV3PTE0OTg7ZS5maW5hbG1lbT0xNTAxO2UuZmluYWxtZW1oZWJyZXc9MTUwMTtlLmZpbmFsbnVuPTE1MDM7ZS5maW5hbG51bmhlYnJldz0xNTAzO2UuZmluYWxwZT0xNTA3O2UuZmluYWxwZWhlYnJldz0xNTA3O2UuZmluYWx0c2FkaT0xNTA5O2UuZmluYWx0c2FkaWhlYnJldz0xNTA5O2UuZmlyc3R0b25lY2hpbmVzZT03MTM7ZS5maXNoZXllPTk2NzM7ZS5maXRhY3lyaWxsaWM9MTEzOTtlLmZpdmU9NTM7ZS5maXZlYXJhYmljPTE2Mzc7ZS5maXZlYmVuZ2FsaT0yNTM5O2UuZml2ZWNpcmNsZT05MzE2O2UuZml2ZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjY7ZS5maXZlZGV2YT0yNDExO2UuZml2ZWVpZ2h0aHM9ODU0MTtlLmZpdmVndWphcmF0aT0yNzk1O2UuZml2ZWd1cm11a2hpPTI2Njc7ZS5maXZlaGFja2FyYWJpYz0xNjM3O2UuZml2ZWhhbmd6aG91PTEyMzI1O2UuZml2ZWlkZW9ncmFwaGljcGFyZW49MTI4MzY7ZS5maXZlaW5mZXJpb3I9ODMyNTtlLmZpdmVtb25vc3BhY2U9NjUzMDE7ZS5maXZlb2xkc3R5bGU9NjMyODU7ZS5maXZlcGFyZW49OTMzNjtlLmZpdmVwZXJpb2Q9OTM1NjtlLmZpdmVwZXJzaWFuPTE3ODE7ZS5maXZlcm9tYW49ODU2NDtlLmZpdmVzdXBlcmlvcj04MzA5O2UuZml2ZXRoYWk9MzY2OTtlLmZsPTY0MjU4O2UuZl9sPTY0MjU4O2UuZmxvcmluPTQwMjtlLmZtb25vc3BhY2U9NjUzNTA7ZS5mbXNxdWFyZT0xMzIwOTtlLmZvZmFudGhhaT0zNjE1O2UuZm9mYXRoYWk9MzYxMztlLmZvbmdtYW50aGFpPTM2NjM7ZS5mb3JhbGw9ODcwNDtlLmZvdXI9NTI7ZS5mb3VyYXJhYmljPTE2MzY7ZS5mb3VyYmVuZ2FsaT0yNTM4O2UuZm91cmNpcmNsZT05MzE1O2UuZm91cmNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjU7ZS5mb3VyZGV2YT0yNDEwO2UuZm91cmd1amFyYXRpPTI3OTQ7ZS5mb3VyZ3VybXVraGk9MjY2NjtlLmZvdXJoYWNrYXJhYmljPTE2MzY7ZS5mb3VyaGFuZ3pob3U9MTIzMjQ7ZS5mb3VyaWRlb2dyYXBoaWNwYXJlbj0xMjgzNTtlLmZvdXJpbmZlcmlvcj04MzI0O2UuZm91cm1vbm9zcGFjZT02NTMwMDtlLmZvdXJudW1lcmF0b3JiZW5nYWxpPTI1NTE7ZS5mb3Vyb2xkc3R5bGU9NjMyODQ7ZS5mb3VycGFyZW49OTMzNTtlLmZvdXJwZXJpb2Q9OTM1NTtlLmZvdXJwZXJzaWFuPTE3ODA7ZS5mb3Vycm9tYW49ODU2MztlLmZvdXJzdXBlcmlvcj04MzA4O2UuZm91cnRlZW5jaXJjbGU9OTMyNTtlLmZvdXJ0ZWVucGFyZW49OTM0NTtlLmZvdXJ0ZWVucGVyaW9kPTkzNjU7ZS5mb3VydGhhaT0zNjY4O2UuZm91cnRodG9uZWNoaW5lc2U9NzE1O2UuZnBhcmVuPTkzNzc7ZS5mcmFjdGlvbj04MjYwO2UuZnJhbmM9ODM1NTtlLmc9MTAzO2UuZ2FiZW5nYWxpPTI0NTU7ZS5nYWN1dGU9NTAxO2UuZ2FkZXZhPTIzMjc7ZS5nYWZhcmFiaWM9MTcxMTtlLmdhZmZpbmFsYXJhYmljPTY0NDAzO2UuZ2FmaW5pdGlhbGFyYWJpYz02NDQwNDtlLmdhZm1lZGlhbGFyYWJpYz02NDQwNTtlLmdhZ3VqYXJhdGk9MjcxMTtlLmdhZ3VybXVraGk9MjU4MztlLmdhaGlyYWdhbmE9MTIzNjQ7ZS5nYWthdGFrYW5hPTEyNDYwO2UuZ2FtbWE9OTQ3O2UuZ2FtbWFsYXRpbnNtYWxsPTYxMTtlLmdhbW1hc3VwZXJpb3I9NzM2O2UuZ2FuZ2lhY29wdGljPTEwMDM7ZS5nYm9wb21vZm89MTI1NTc7ZS5nYnJldmU9Mjg3O2UuZ2Nhcm9uPTQ4NztlLmdjZWRpbGxhPTI5MTtlLmdjaXJjbGU9OTQzMDtlLmdjaXJjdW1mbGV4PTI4NTtlLmdjb21tYWFjY2VudD0yOTE7ZS5nZG90PTI4OTtlLmdkb3RhY2NlbnQ9Mjg5O2UuZ2VjeXJpbGxpYz0xMDc1O2UuZ2VoaXJhZ2FuYT0xMjM3MDtlLmdla2F0YWthbmE9MTI0NjY7ZS5nZW9tZXRyaWNhbGx5ZXF1YWw9ODc4NTtlLmdlcmVzaGFjY2VudGhlYnJldz0xNDM2O2UuZ2VyZXNoaGVicmV3PTE1MjM7ZS5nZXJlc2htdXFkYW1oZWJyZXc9MTQzNztlLmdlcm1hbmRibHM9MjIzO2UuZ2Vyc2hheWltYWNjZW50aGVicmV3PTE0Mzg7ZS5nZXJzaGF5aW1oZWJyZXc9MTUyNDtlLmdldGFtYXJrPTEyMzA3O2UuZ2hhYmVuZ2FsaT0yNDU2O2UuZ2hhZGFybWVuaWFuPTEzOTQ7ZS5naGFkZXZhPTIzMjg7ZS5naGFndWphcmF0aT0yNzEyO2UuZ2hhZ3VybXVraGk9MjU4NDtlLmdoYWluYXJhYmljPTE1OTQ7ZS5naGFpbmZpbmFsYXJhYmljPTY1MjMwO2UuZ2hhaW5pbml0aWFsYXJhYmljPTY1MjMxO2UuZ2hhaW5tZWRpYWxhcmFiaWM9NjUyMzI7ZS5naGVtaWRkbGVob29rY3lyaWxsaWM9MTE3MztlLmdoZXN0cm9rZWN5cmlsbGljPTExNzE7ZS5naGV1cHR1cm5jeXJpbGxpYz0xMTY5O2UuZ2hoYWRldmE9MjM5NDtlLmdoaGFndXJtdWtoaT0yNjUwO2UuZ2hvb2s9NjA4O2UuZ2h6c3F1YXJlPTEzMjAzO2UuZ2loaXJhZ2FuYT0xMjM2NjtlLmdpa2F0YWthbmE9MTI0NjI7ZS5naW1hcm1lbmlhbj0xMzc5O2UuZ2ltZWw9MTQ5MDtlLmdpbWVsZGFnZXNoPTY0MzA2O2UuZ2ltZWxkYWdlc2hoZWJyZXc9NjQzMDY7ZS5naW1lbGhlYnJldz0xNDkwO2UuZ2plY3lyaWxsaWM9MTEwNztlLmdsb3R0YWxpbnZlcnRlZHN0cm9rZT00NDY7ZS5nbG90dGFsc3RvcD02NjA7ZS5nbG90dGFsc3RvcGludmVydGVkPTY2MjtlLmdsb3R0YWxzdG9wbW9kPTcwNDtlLmdsb3R0YWxzdG9wcmV2ZXJzZWQ9NjYxO2UuZ2xvdHRhbHN0b3ByZXZlcnNlZG1vZD03MDU7ZS5nbG90dGFsc3RvcHJldmVyc2Vkc3VwZXJpb3I9NzQwO2UuZ2xvdHRhbHN0b3BzdHJva2U9NjczO2UuZ2xvdHRhbHN0b3BzdHJva2VyZXZlcnNlZD02NzQ7ZS5nbWFjcm9uPTc3MTM7ZS5nbW9ub3NwYWNlPTY1MzUxO2UuZ29oaXJhZ2FuYT0xMjM3MjtlLmdva2F0YWthbmE9MTI0Njg7ZS5ncGFyZW49OTM3ODtlLmdwYXNxdWFyZT0xMzIyODtlLmdyYWRpZW50PTg3MTE7ZS5ncmF2ZT05NjtlLmdyYXZlYmVsb3djbWI9NzkwO2UuZ3JhdmVjbWI9NzY4O2UuZ3JhdmVjb21iPTc2ODtlLmdyYXZlZGV2YT0yMzg3O2UuZ3JhdmVsb3dtb2Q9NzE4O2UuZ3JhdmVtb25vc3BhY2U9NjUzNDQ7ZS5ncmF2ZXRvbmVjbWI9ODMyO2UuZ3JlYXRlcj02MjtlLmdyZWF0ZXJlcXVhbD04ODA1O2UuZ3JlYXRlcmVxdWFsb3JsZXNzPTg5MjM7ZS5ncmVhdGVybW9ub3NwYWNlPTY1MzEwO2UuZ3JlYXRlcm9yZXF1aXZhbGVudD04ODE5O2UuZ3JlYXRlcm9ybGVzcz04ODIzO2UuZ3JlYXRlcm92ZXJlcXVhbD04ODA3O2UuZ3JlYXRlcnNtYWxsPTY1MTI1O2UuZ3NjcmlwdD02MDk7ZS5nc3Ryb2tlPTQ4NTtlLmd1aGlyYWdhbmE9MTIzNjg7ZS5ndWlsbGVtb3RsZWZ0PTE3MTtlLmd1aWxsZW1vdHJpZ2h0PTE4NztlLmd1aWxzaW5nbGxlZnQ9ODI0OTtlLmd1aWxzaW5nbHJpZ2h0PTgyNTA7ZS5ndWthdGFrYW5hPTEyNDY0O2UuZ3VyYW11c3F1YXJlPTEzMDgwO2UuZ3lzcXVhcmU9MTMyNTc7ZS5oPTEwNDtlLmhhYWJraGFzaWFuY3lyaWxsaWM9MTE5MztlLmhhYWx0b25lYXJhYmljPTE3Mjk7ZS5oYWJlbmdhbGk9MjQ4OTtlLmhhZGVzY2VuZGVyY3lyaWxsaWM9MTIwMztlLmhhZGV2YT0yMzYxO2UuaGFndWphcmF0aT0yNzQ1O2UuaGFndXJtdWtoaT0yNjE3O2UuaGFoYXJhYmljPTE1ODE7ZS5oYWhmaW5hbGFyYWJpYz02NTE4NjtlLmhhaGluaXRpYWxhcmFiaWM9NjUxODc7ZS5oYWhpcmFnYW5hPTEyMzk5O2UuaGFobWVkaWFsYXJhYmljPTY1MTg4O2UuaGFpdHVzcXVhcmU9MTMwOTg7ZS5oYWthdGFrYW5hPTEyNDk1O2UuaGFrYXRha2FuYWhhbGZ3aWR0aD02NTQxODtlLmhhbGFudGd1cm11a2hpPTI2Mzc7ZS5oYW16YWFyYWJpYz0xNTY5O2UuaGFtemFsb3dhcmFiaWM9MTU2OTtlLmhhbmd1bGZpbGxlcj0xMjY0NDtlLmhhcmRzaWduY3lyaWxsaWM9MTA5ODtlLmhhcnBvb25sZWZ0YmFyYnVwPTg2MzY7ZS5oYXJwb29ucmlnaHRiYXJidXA9ODY0MDtlLmhhc3F1YXJlPTEzMjU4O2UuaGF0YWZwYXRhaD0xNDU4O2UuaGF0YWZwYXRhaDE2PTE0NTg7ZS5oYXRhZnBhdGFoMjM9MTQ1ODtlLmhhdGFmcGF0YWgyZj0xNDU4O2UuaGF0YWZwYXRhaGhlYnJldz0xNDU4O2UuaGF0YWZwYXRhaG5hcnJvd2hlYnJldz0xNDU4O2UuaGF0YWZwYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ1ODtlLmhhdGFmcGF0YWh3aWRlaGVicmV3PTE0NTg7ZS5oYXRhZnFhbWF0cz0xNDU5O2UuaGF0YWZxYW1hdHMxYj0xNDU5O2UuaGF0YWZxYW1hdHMyOD0xNDU5O2UuaGF0YWZxYW1hdHMzND0xNDU5O2UuaGF0YWZxYW1hdHNoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzbmFycm93aGVicmV3PTE0NTk7ZS5oYXRhZnFhbWF0c3F1YXJ0ZXJoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzd2lkZWhlYnJldz0xNDU5O2UuaGF0YWZzZWdvbD0xNDU3O2UuaGF0YWZzZWdvbDE3PTE0NTc7ZS5oYXRhZnNlZ29sMjQ9MTQ1NztlLmhhdGFmc2Vnb2wzMD0xNDU3O2UuaGF0YWZzZWdvbGhlYnJldz0xNDU3O2UuaGF0YWZzZWdvbG5hcnJvd2hlYnJldz0xNDU3O2UuaGF0YWZzZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ1NztlLmhhdGFmc2Vnb2x3aWRlaGVicmV3PTE0NTc7ZS5oYmFyPTI5NTtlLmhib3BvbW9mbz0xMjU1OTtlLmhicmV2ZWJlbG93PTc3MjM7ZS5oY2VkaWxsYT03NzIxO2UuaGNpcmNsZT05NDMxO2UuaGNpcmN1bWZsZXg9MjkzO2UuaGRpZXJlc2lzPTc3MTk7ZS5oZG90YWNjZW50PTc3MTU7ZS5oZG90YmVsb3c9NzcxNztlLmhlPTE0OTI7ZS5oZWFydD05ODI5O2UuaGVhcnRzdWl0YmxhY2s9OTgyOTtlLmhlYXJ0c3VpdHdoaXRlPTk4MjU7ZS5oZWRhZ2VzaD02NDMwODtlLmhlZGFnZXNoaGVicmV3PTY0MzA4O2UuaGVoYWx0b25lYXJhYmljPTE3Mjk7ZS5oZWhhcmFiaWM9MTYwNztlLmhlaGVicmV3PTE0OTI7ZS5oZWhmaW5hbGFsdG9uZWFyYWJpYz02NDQyMztlLmhlaGZpbmFsYWx0dHdvYXJhYmljPTY1MjU4O2UuaGVoZmluYWxhcmFiaWM9NjUyNTg7ZS5oZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjQ0MjE7ZS5oZWhoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjQ0MjA7ZS5oZWhpbml0aWFsYWx0b25lYXJhYmljPTY0NDI0O2UuaGVoaW5pdGlhbGFyYWJpYz02NTI1OTtlLmhlaGlyYWdhbmE9MTI0MDg7ZS5oZWhtZWRpYWxhbHRvbmVhcmFiaWM9NjQ0MjU7ZS5oZWhtZWRpYWxhcmFiaWM9NjUyNjA7ZS5oZWlzZWllcmFzcXVhcmU9MTMxNzk7ZS5oZWthdGFrYW5hPTEyNTA0O2UuaGVrYXRha2FuYWhhbGZ3aWR0aD02NTQyMTtlLmhla3V0YWFydXNxdWFyZT0xMzExMDtlLmhlbmdob29rPTYxNTtlLmhlcnV0dXNxdWFyZT0xMzExMztlLmhldD0xNDk1O2UuaGV0aGVicmV3PTE0OTU7ZS5oaG9vaz02MTQ7ZS5oaG9va3N1cGVyaW9yPTY4OTtlLmhpZXVoYWNpcmNsZWtvcmVhbj0xMjkyMztlLmhpZXVoYXBhcmVua29yZWFuPTEyODI3O2UuaGlldWhjaXJjbGVrb3JlYW49MTI5MDk7ZS5oaWV1aGtvcmVhbj0xMjYyMjtlLmhpZXVocGFyZW5rb3JlYW49MTI4MTM7ZS5oaWhpcmFnYW5hPTEyNDAyO2UuaGlrYXRha2FuYT0xMjQ5ODtlLmhpa2F0YWthbmFoYWxmd2lkdGg9NjU0MTk7ZS5oaXJpcT0xNDYwO2UuaGlyaXExND0xNDYwO2UuaGlyaXEyMT0xNDYwO2UuaGlyaXEyZD0xNDYwO2UuaGlyaXFoZWJyZXc9MTQ2MDtlLmhpcmlxbmFycm93aGVicmV3PTE0NjA7ZS5oaXJpcXF1YXJ0ZXJoZWJyZXc9MTQ2MDtlLmhpcmlxd2lkZWhlYnJldz0xNDYwO2UuaGxpbmViZWxvdz03ODMwO2UuaG1vbm9zcGFjZT02NTM1MjtlLmhvYXJtZW5pYW49MTM5MjtlLmhvaGlwdGhhaT0zNjI3O2UuaG9oaXJhZ2FuYT0xMjQxMTtlLmhva2F0YWthbmE9MTI1MDc7ZS5ob2thdGFrYW5haGFsZndpZHRoPTY1NDIyO2UuaG9sYW09MTQ2NTtlLmhvbGFtMTk9MTQ2NTtlLmhvbGFtMjY9MTQ2NTtlLmhvbGFtMzI9MTQ2NTtlLmhvbGFtaGVicmV3PTE0NjU7ZS5ob2xhbW5hcnJvd2hlYnJldz0xNDY1O2UuaG9sYW1xdWFydGVyaGVicmV3PTE0NjU7ZS5ob2xhbXdpZGVoZWJyZXc9MTQ2NTtlLmhvbm9raHVrdGhhaT0zNjMwO2UuaG9va2Fib3ZlY29tYj03Nzc7ZS5ob29rY21iPTc3NztlLmhvb2twYWxhdGFsaXplZGJlbG93Y21iPTgwMTtlLmhvb2tyZXRyb2ZsZXhiZWxvd2NtYj04MDI7ZS5ob29uc3F1YXJlPTEzMTIyO2UuaG9yaWNvcHRpYz0xMDAxO2UuaG9yaXpvbnRhbGJhcj04MjEzO2UuaG9ybmNtYj03OTU7ZS5ob3RzcHJpbmdzPTk4MzI7ZS5ob3VzZT04OTYyO2UuaHBhcmVuPTkzNzk7ZS5oc3VwZXJpb3I9Njg4O2UuaHR1cm5lZD02MTM7ZS5odWhpcmFnYW5hPTEyNDA1O2UuaHVpaXRvc3F1YXJlPTEzMTA3O2UuaHVrYXRha2FuYT0xMjUwMTtlLmh1a2F0YWthbmFoYWxmd2lkdGg9NjU0MjA7ZS5odW5nYXJ1bWxhdXQ9NzMzO2UuaHVuZ2FydW1sYXV0Y21iPTc3OTtlLmh2PTQwNTtlLmh5cGhlbj00NTtlLmh5cGhlbmluZmVyaW9yPTYzMjA1O2UuaHlwaGVubW9ub3NwYWNlPTY1MjkzO2UuaHlwaGVuc21hbGw9NjUxMjM7ZS5oeXBoZW5zdXBlcmlvcj02MzIwNjtlLmh5cGhlbnR3bz04MjA4O2UuaT0xMDU7ZS5pYWN1dGU9MjM3O2UuaWFjeXJpbGxpYz0xMTAzO2UuaWJlbmdhbGk9MjQzOTtlLmlib3BvbW9mbz0xMjU4MztlLmlicmV2ZT0zMDE7ZS5pY2Fyb249NDY0O2UuaWNpcmNsZT05NDMyO2UuaWNpcmN1bWZsZXg9MjM4O2UuaWN5cmlsbGljPTExMTA7ZS5pZGJsZ3JhdmU9NTIxO2UuaWRlb2dyYXBoZWFydGhjaXJjbGU9MTI5NDM7ZS5pZGVvZ3JhcGhmaXJlY2lyY2xlPTEyOTM5O2UuaWRlb2dyYXBoaWNhbGxpYW5jZXBhcmVuPTEyODYzO2UuaWRlb2dyYXBoaWNjYWxscGFyZW49MTI4NTg7ZS5pZGVvZ3JhcGhpY2NlbnRyZWNpcmNsZT0xMjk2NTtlLmlkZW9ncmFwaGljY2xvc2U9MTIyOTQ7ZS5pZGVvZ3JhcGhpY2NvbW1hPTEyMjg5O2UuaWRlb2dyYXBoaWNjb21tYWxlZnQ9NjUzODA7ZS5pZGVvZ3JhcGhpY2NvbmdyYXR1bGF0aW9ucGFyZW49MTI4NTU7ZS5pZGVvZ3JhcGhpY2NvcnJlY3RjaXJjbGU9MTI5NjM7ZS5pZGVvZ3JhcGhpY2VhcnRocGFyZW49MTI4NDc7ZS5pZGVvZ3JhcGhpY2VudGVycHJpc2VwYXJlbj0xMjg2MTtlLmlkZW9ncmFwaGljZXhjZWxsZW50Y2lyY2xlPTEyOTU3O2UuaWRlb2dyYXBoaWNmZXN0aXZhbHBhcmVuPTEyODY0O2UuaWRlb2dyYXBoaWNmaW5hbmNpYWxjaXJjbGU9MTI5NTA7ZS5pZGVvZ3JhcGhpY2ZpbmFuY2lhbHBhcmVuPTEyODU0O2UuaWRlb2dyYXBoaWNmaXJlcGFyZW49MTI4NDM7ZS5pZGVvZ3JhcGhpY2hhdmVwYXJlbj0xMjg1MDtlLmlkZW9ncmFwaGljaGlnaGNpcmNsZT0xMjk2NDtlLmlkZW9ncmFwaGljaXRlcmF0aW9ubWFyaz0xMjI5MztlLmlkZW9ncmFwaGljbGFib3JjaXJjbGU9MTI5NTI7ZS5pZGVvZ3JhcGhpY2xhYm9ycGFyZW49MTI4NTY7ZS5pZGVvZ3JhcGhpY2xlZnRjaXJjbGU9MTI5Njc7ZS5pZGVvZ3JhcGhpY2xvd2NpcmNsZT0xMjk2NjtlLmlkZW9ncmFwaGljbWVkaWNpbmVjaXJjbGU9MTI5Njk7ZS5pZGVvZ3JhcGhpY21ldGFscGFyZW49MTI4NDY7ZS5pZGVvZ3JhcGhpY21vb25wYXJlbj0xMjg0MjtlLmlkZW9ncmFwaGljbmFtZXBhcmVuPTEyODUyO2UuaWRlb2dyYXBoaWNwZXJpb2Q9MTIyOTA7ZS5pZGVvZ3JhcGhpY3ByaW50Y2lyY2xlPTEyOTU4O2UuaWRlb2dyYXBoaWNyZWFjaHBhcmVuPTEyODY3O2UuaWRlb2dyYXBoaWNyZXByZXNlbnRwYXJlbj0xMjg1NztlLmlkZW9ncmFwaGljcmVzb3VyY2VwYXJlbj0xMjg2MjtlLmlkZW9ncmFwaGljcmlnaHRjaXJjbGU9MTI5Njg7ZS5pZGVvZ3JhcGhpY3NlY3JldGNpcmNsZT0xMjk1MztlLmlkZW9ncmFwaGljc2VsZnBhcmVuPTEyODY2O2UuaWRlb2dyYXBoaWNzb2NpZXR5cGFyZW49MTI4NTE7ZS5pZGVvZ3JhcGhpY3NwYWNlPTEyMjg4O2UuaWRlb2dyYXBoaWNzcGVjaWFscGFyZW49MTI4NTM7ZS5pZGVvZ3JhcGhpY3N0b2NrcGFyZW49MTI4NDk7ZS5pZGVvZ3JhcGhpY3N0dWR5cGFyZW49MTI4NTk7ZS5pZGVvZ3JhcGhpY3N1bnBhcmVuPTEyODQ4O2UuaWRlb2dyYXBoaWNzdXBlcnZpc2VwYXJlbj0xMjg2MDtlLmlkZW9ncmFwaGljd2F0ZXJwYXJlbj0xMjg0NDtlLmlkZW9ncmFwaGljd29vZHBhcmVuPTEyODQ1O2UuaWRlb2dyYXBoaWN6ZXJvPTEyMjk1O2UuaWRlb2dyYXBobWV0YWxjaXJjbGU9MTI5NDI7ZS5pZGVvZ3JhcGhtb29uY2lyY2xlPTEyOTM4O2UuaWRlb2dyYXBobmFtZWNpcmNsZT0xMjk0ODtlLmlkZW9ncmFwaHN1bmNpcmNsZT0xMjk0NDtlLmlkZW9ncmFwaHdhdGVyY2lyY2xlPTEyOTQwO2UuaWRlb2dyYXBod29vZGNpcmNsZT0xMjk0MTtlLmlkZXZhPTIzMTE7ZS5pZGllcmVzaXM9MjM5O2UuaWRpZXJlc2lzYWN1dGU9NzcyNztlLmlkaWVyZXNpc2N5cmlsbGljPTEyNTM7ZS5pZG90YmVsb3c9Nzg4MztlLmllYnJldmVjeXJpbGxpYz0xMjM5O2UuaWVjeXJpbGxpYz0xMDc3O2UuaWV1bmdhY2lyY2xla29yZWFuPTEyOTE3O2UuaWV1bmdhcGFyZW5rb3JlYW49MTI4MjE7ZS5pZXVuZ2NpcmNsZWtvcmVhbj0xMjkwMztlLmlldW5na29yZWFuPTEyNjE1O2UuaWV1bmdwYXJlbmtvcmVhbj0xMjgwNztlLmlncmF2ZT0yMzY7ZS5pZ3VqYXJhdGk9MjY5NTtlLmlndXJtdWtoaT0yNTY3O2UuaWhpcmFnYW5hPTEyMzU2O2UuaWhvb2thYm92ZT03ODgxO2UuaWliZW5nYWxpPTI0NDA7ZS5paWN5cmlsbGljPTEwODA7ZS5paWRldmE9MjMxMjtlLmlpZ3VqYXJhdGk9MjY5NjtlLmlpZ3VybXVraGk9MjU2ODtlLmlpbWF0cmFndXJtdWtoaT0yNjI0O2UuaWludmVydGVkYnJldmU9NTIzO2UuaWlzaG9ydGN5cmlsbGljPTEwODE7ZS5paXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NjtlLmlpdm93ZWxzaWduZGV2YT0yMzY4O2UuaWl2b3dlbHNpZ25ndWphcmF0aT0yNzUyO2UuaWo9MzA3O2UuaWthdGFrYW5hPTEyNDUyO2UuaWthdGFrYW5haGFsZndpZHRoPTY1Mzk0O2UuaWtvcmVhbj0xMjY0MztlLmlsZGU9NzMyO2UuaWx1eWhlYnJldz0xNDUyO2UuaW1hY3Jvbj0yOTk7ZS5pbWFjcm9uY3lyaWxsaWM9MTI1MTtlLmltYWdlb3JhcHByb3hpbWF0ZWx5ZXF1YWw9ODc4NztlLmltYXRyYWd1cm11a2hpPTI2MjM7ZS5pbW9ub3NwYWNlPTY1MzUzO2UuaW5jcmVtZW50PTg3MTA7ZS5pbmZpbml0eT04NzM0O2UuaW5pYXJtZW5pYW49MTM4NztlLmludGVncmFsPTg3NDc7ZS5pbnRlZ3JhbGJvdHRvbT04OTkzO2UuaW50ZWdyYWxidD04OTkzO2UuaW50ZWdyYWxleD02MzczMztlLmludGVncmFsdG9wPTg5OTI7ZS5pbnRlZ3JhbHRwPTg5OTI7ZS5pbnRlcnNlY3Rpb249ODc0NTtlLmludGlzcXVhcmU9MTMwNjE7ZS5pbnZidWxsZXQ9OTY4ODtlLmludmNpcmNsZT05Njg5O2UuaW52c21pbGVmYWNlPTk3ODc7ZS5pb2N5cmlsbGljPTExMDU7ZS5pb2dvbmVrPTMwMztlLmlvdGE9OTUzO2UuaW90YWRpZXJlc2lzPTk3MDtlLmlvdGFkaWVyZXNpc3Rvbm9zPTkxMjtlLmlvdGFsYXRpbj02MTc7ZS5pb3RhdG9ub3M9OTQzO2UuaXBhcmVuPTkzODA7ZS5pcmlndXJtdWtoaT0yNjc0O2UuaXNtYWxsaGlyYWdhbmE9MTIzNTU7ZS5pc21hbGxrYXRha2FuYT0xMjQ1MTtlLmlzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg0O2UuaXNzaGFyYmVuZ2FsaT0yNTU0O2UuaXN0cm9rZT02MTY7ZS5pc3VwZXJpb3I9NjMyMTM7ZS5pdGVyYXRpb25oaXJhZ2FuYT0xMjQ0NTtlLml0ZXJhdGlvbmthdGFrYW5hPTEyNTQxO2UuaXRpbGRlPTI5NztlLml0aWxkZWJlbG93PTc3MjU7ZS5pdWJvcG9tb2ZvPTEyNTg1O2UuaXVjeXJpbGxpYz0xMTAyO2UuaXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NTtlLml2b3dlbHNpZ25kZXZhPTIzNjc7ZS5pdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MTtlLml6aGl0c2FjeXJpbGxpYz0xMTQxO2UuaXpoaXRzYWRibGdyYXZlY3lyaWxsaWM9MTE0MztlLmo9MTA2O2UuamFhcm1lbmlhbj0xMzkzO2UuamFiZW5nYWxpPTI0NjA7ZS5qYWRldmE9MjMzMjtlLmphZ3VqYXJhdGk9MjcxNjtlLmphZ3VybXVraGk9MjU4ODtlLmpib3BvbW9mbz0xMjU2MDtlLmpjYXJvbj00OTY7ZS5qY2lyY2xlPTk0MzM7ZS5qY2lyY3VtZmxleD0zMDk7ZS5qY3Jvc3NlZHRhaWw9NjY5O2UuamRvdGxlc3NzdHJva2U9NjA3O2UuamVjeXJpbGxpYz0xMTEyO2UuamVlbWFyYWJpYz0xNTgwO2UuamVlbWZpbmFsYXJhYmljPTY1MTgyO2UuamVlbWluaXRpYWxhcmFiaWM9NjUxODM7ZS5qZWVtbWVkaWFsYXJhYmljPTY1MTg0O2UuamVoYXJhYmljPTE2ODg7ZS5qZWhmaW5hbGFyYWJpYz02NDM5NTtlLmpoYWJlbmdhbGk9MjQ2MTtlLmpoYWRldmE9MjMzMztlLmpoYWd1amFyYXRpPTI3MTc7ZS5qaGFndXJtdWtoaT0yNTg5O2UuamhlaGFybWVuaWFuPTE0MDM7ZS5qaXM9MTIyOTI7ZS5qbW9ub3NwYWNlPTY1MzU0O2UuanBhcmVuPTkzODE7ZS5qc3VwZXJpb3I9NjkwO2Uuaz0xMDc7ZS5rYWJhc2hraXJjeXJpbGxpYz0xMTg1O2Uua2FiZW5nYWxpPTI0NTM7ZS5rYWN1dGU9NzcyOTtlLmthY3lyaWxsaWM9MTA4MjtlLmthZGVzY2VuZGVyY3lyaWxsaWM9MTE3OTtlLmthZGV2YT0yMzI1O2Uua2FmPTE0OTk7ZS5rYWZhcmFiaWM9MTYwMztlLmthZmRhZ2VzaD02NDMxNTtlLmthZmRhZ2VzaGhlYnJldz02NDMxNTtlLmthZmZpbmFsYXJhYmljPTY1MjQyO2Uua2FmaGVicmV3PTE0OTk7ZS5rYWZpbml0aWFsYXJhYmljPTY1MjQzO2Uua2FmbWVkaWFsYXJhYmljPTY1MjQ0O2Uua2FmcmFmZWhlYnJldz02NDMzMztlLmthZ3VqYXJhdGk9MjcwOTtlLmthZ3VybXVraGk9MjU4MTtlLmthaGlyYWdhbmE9MTIzNjM7ZS5rYWhvb2tjeXJpbGxpYz0xMjIwO2Uua2FrYXRha2FuYT0xMjQ1OTtlLmtha2F0YWthbmFoYWxmd2lkdGg9NjUzOTg7ZS5rYXBwYT05NTQ7ZS5rYXBwYXN5bWJvbGdyZWVrPTEwMDg7ZS5rYXB5ZW91bm1pZXVta29yZWFuPTEyNjU3O2Uua2FweWVvdW5waGlldXBoa29yZWFuPTEyNjc2O2Uua2FweWVvdW5waWV1cGtvcmVhbj0xMjY2NDtlLmthcHllb3Vuc3NhbmdwaWV1cGtvcmVhbj0xMjY2NTtlLmthcm9yaWlzcXVhcmU9MTMwNjk7ZS5rYXNoaWRhYXV0b2FyYWJpYz0xNjAwO2Uua2FzaGlkYWF1dG9ub3NpZGViZWFyaW5nYXJhYmljPTE2MDA7ZS5rYXNtYWxsa2F0YWthbmE9MTI1MzM7ZS5rYXNxdWFyZT0xMzE4ODtlLmthc3JhYXJhYmljPTE2MTY7ZS5rYXNyYXRhbmFyYWJpYz0xNjEzO2Uua2FzdHJva2VjeXJpbGxpYz0xMTgzO2Uua2F0YWhpcmFwcm9sb25nbWFya2hhbGZ3aWR0aD02NTM5MjtlLmthdmVydGljYWxzdHJva2VjeXJpbGxpYz0xMTgxO2Uua2JvcG9tb2ZvPTEyNTU4O2Uua2NhbHNxdWFyZT0xMzE5MztlLmtjYXJvbj00ODk7ZS5rY2VkaWxsYT0zMTE7ZS5rY2lyY2xlPTk0MzQ7ZS5rY29tbWFhY2NlbnQ9MzExO2Uua2RvdGJlbG93PTc3MzE7ZS5rZWhhcm1lbmlhbj0xNDEyO2Uua2VoaXJhZ2FuYT0xMjM2OTtlLmtla2F0YWthbmE9MTI0NjU7ZS5rZWthdGFrYW5haGFsZndpZHRoPTY1NDAxO2Uua2VuYXJtZW5pYW49MTM5MTtlLmtlc21hbGxrYXRha2FuYT0xMjUzNDtlLmtncmVlbmxhbmRpYz0zMTI7ZS5raGFiZW5nYWxpPTI0NTQ7ZS5raGFjeXJpbGxpYz0xMDkzO2Uua2hhZGV2YT0yMzI2O2Uua2hhZ3VqYXJhdGk9MjcxMDtlLmtoYWd1cm11a2hpPTI1ODI7ZS5raGFoYXJhYmljPTE1ODI7ZS5raGFoZmluYWxhcmFiaWM9NjUxOTA7ZS5raGFoaW5pdGlhbGFyYWJpYz02NTE5MTtlLmtoYWhtZWRpYWxhcmFiaWM9NjUxOTI7ZS5raGVpY29wdGljPTk5OTtlLmtoaGFkZXZhPTIzOTM7ZS5raGhhZ3VybXVraGk9MjY0OTtlLmtoaWV1a2hhY2lyY2xla29yZWFuPTEyOTIwO2Uua2hpZXVraGFwYXJlbmtvcmVhbj0xMjgyNDtlLmtoaWV1a2hjaXJjbGVrb3JlYW49MTI5MDY7ZS5raGlldWtoa29yZWFuPTEyNjE5O2Uua2hpZXVraHBhcmVua29yZWFuPTEyODEwO2Uua2hva2hhaXRoYWk9MzU4NjtlLmtob2tob250aGFpPTM1ODk7ZS5raG9raHVhdHRoYWk9MzU4NztlLmtob2tod2FpdGhhaT0zNTg4O2Uua2hvbXV0dGhhaT0zNjc1O2Uua2hvb2s9NDA5O2Uua2hvcmFraGFuZ3RoYWk9MzU5MDtlLmtoenNxdWFyZT0xMzIwMTtlLmtpaGlyYWdhbmE9MTIzNjU7ZS5raWthdGFrYW5hPTEyNDYxO2Uua2lrYXRha2FuYWhhbGZ3aWR0aD02NTM5OTtlLmtpcm9ndXJhbXVzcXVhcmU9MTMwNzc7ZS5raXJvbWVldG9ydXNxdWFyZT0xMzA3ODtlLmtpcm9zcXVhcmU9MTMwNzY7ZS5raXllb2thY2lyY2xla29yZWFuPTEyOTEwO2Uua2l5ZW9rYXBhcmVua29yZWFuPTEyODE0O2Uua2l5ZW9rY2lyY2xla29yZWFuPTEyODk2O2Uua2l5ZW9ra29yZWFuPTEyNTkzO2Uua2l5ZW9rcGFyZW5rb3JlYW49MTI4MDA7ZS5raXllb2tzaW9za29yZWFuPTEyNTk1O2Uua2plY3lyaWxsaWM9MTExNjtlLmtsaW5lYmVsb3c9NzczMztlLmtsc3F1YXJlPTEzMjA4O2Uua21jdWJlZHNxdWFyZT0xMzIyMjtlLmttb25vc3BhY2U9NjUzNTU7ZS5rbXNxdWFyZWRzcXVhcmU9MTMyMTg7ZS5rb2hpcmFnYW5hPTEyMzcxO2Uua29obXNxdWFyZT0xMzI0ODtlLmtva2FpdGhhaT0zNTg1O2Uua29rYXRha2FuYT0xMjQ2NztlLmtva2F0YWthbmFoYWxmd2lkdGg9NjU0MDI7ZS5rb29wb3NxdWFyZT0xMzA4NjtlLmtvcHBhY3lyaWxsaWM9MTE1MztlLmtvcmVhbnN0YW5kYXJkc3ltYm9sPTEyOTI3O2Uua29yb25pc2NtYj04MzU7ZS5rcGFyZW49OTM4MjtlLmtwYXNxdWFyZT0xMzIyNjtlLmtzaWN5cmlsbGljPTExMzU7ZS5rdHNxdWFyZT0xMzI2MztlLmt0dXJuZWQ9NjcwO2Uua3VoaXJhZ2FuYT0xMjM2NztlLmt1a2F0YWthbmE9MTI0NjM7ZS5rdWthdGFrYW5haGFsZndpZHRoPTY1NDAwO2Uua3ZzcXVhcmU9MTMyNDA7ZS5rd3NxdWFyZT0xMzI0NjtlLmw9MTA4O2UubGFiZW5nYWxpPTI0ODI7ZS5sYWN1dGU9MzE0O2UubGFkZXZhPTIzNTQ7ZS5sYWd1amFyYXRpPTI3Mzg7ZS5sYWd1cm11a2hpPTI2MTA7ZS5sYWtraGFuZ3lhb3RoYWk9MzY1MztlLmxhbWFsZWZmaW5hbGFyYWJpYz02NTI3NjtlLmxhbWFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUyNzI7ZS5sYW1hbGVmaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljPTY1MjcxO2UubGFtYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTI3NDtlLmxhbWFsZWZoYW16YWJlbG93aXNvbGF0ZWRhcmFiaWM9NjUyNzM7ZS5sYW1hbGVmaXNvbGF0ZWRhcmFiaWM9NjUyNzU7ZS5sYW1hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MjcwO2UubGFtYWxlZm1hZGRhYWJvdmVpc29sYXRlZGFyYWJpYz02NTI2OTtlLmxhbWFyYWJpYz0xNjA0O2UubGFtYmRhPTk1NTtlLmxhbWJkYXN0cm9rZT00MTE7ZS5sYW1lZD0xNTAwO2UubGFtZWRkYWdlc2g9NjQzMTY7ZS5sYW1lZGRhZ2VzaGhlYnJldz02NDMxNjtlLmxhbWVkaGVicmV3PTE1MDA7ZS5sYW1maW5hbGFyYWJpYz02NTI0NjtlLmxhbWhhaGluaXRpYWxhcmFiaWM9NjQ3MTQ7ZS5sYW1pbml0aWFsYXJhYmljPTY1MjQ3O2UubGFtamVlbWluaXRpYWxhcmFiaWM9NjQ3MTM7ZS5sYW1raGFoaW5pdGlhbGFyYWJpYz02NDcxNTtlLmxhbWxhbWhlaGlzb2xhdGVkYXJhYmljPTY1MDEwO2UubGFtbWVkaWFsYXJhYmljPTY1MjQ4O2UubGFtbWVlbWhhaGluaXRpYWxhcmFiaWM9NjQ5MDQ7ZS5sYW1tZWVtaW5pdGlhbGFyYWJpYz02NDcxNjtlLmxhcmdlY2lyY2xlPTk3MTE7ZS5sYmFyPTQxMDtlLmxiZWx0PTYyMDtlLmxib3BvbW9mbz0xMjU1NjtlLmxjYXJvbj0zMTg7ZS5sY2VkaWxsYT0zMTY7ZS5sY2lyY2xlPTk0MzU7ZS5sY2lyY3VtZmxleGJlbG93PTc3NDE7ZS5sY29tbWFhY2NlbnQ9MzE2O2UubGRvdD0zMjA7ZS5sZG90YWNjZW50PTMyMDtlLmxkb3RiZWxvdz03NzM1O2UubGRvdGJlbG93bWFjcm9uPTc3Mzc7ZS5sZWZ0YW5nbGVhYm92ZWNtYj03OTQ7ZS5sZWZ0dGFja2JlbG93Y21iPTc5MjtlLmxlc3M9NjA7ZS5sZXNzZXF1YWw9ODgwNDtlLmxlc3NlcXVhbG9yZ3JlYXRlcj04OTIyO2UubGVzc21vbm9zcGFjZT02NTMwODtlLmxlc3NvcmVxdWl2YWxlbnQ9ODgxODtlLmxlc3NvcmdyZWF0ZXI9ODgyMjtlLmxlc3NvdmVyZXF1YWw9ODgwNjtlLmxlc3NzbWFsbD02NTEyNDtlLmxlemg9NjIyO2UubGZibG9jaz05NjEyO2UubGhvb2tyZXRyb2ZsZXg9NjIxO2UubGlyYT04MzU2O2UubGl3bmFybWVuaWFuPTEzODg7ZS5saj00NTc7ZS5samVjeXJpbGxpYz0xMTEzO2UubGw9NjMxNjg7ZS5sbGFkZXZhPTIzNTU7ZS5sbGFndWphcmF0aT0yNzM5O2UubGxpbmViZWxvdz03NzM5O2UubGxsYWRldmE9MjM1NjtlLmxsdm9jYWxpY2JlbmdhbGk9MjUyOTtlLmxsdm9jYWxpY2RldmE9MjQwMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjQwMztlLmxtaWRkbGV0aWxkZT02MTk7ZS5sbW9ub3NwYWNlPTY1MzU2O2UubG1zcXVhcmU9MTMyNjQ7ZS5sb2NodWxhdGhhaT0zNjI4O2UubG9naWNhbGFuZD04NzQzO2UubG9naWNhbG5vdD0xNzI7ZS5sb2dpY2Fsbm90cmV2ZXJzZWQ9ODk3NjtlLmxvZ2ljYWxvcj04NzQ0O2UubG9saW5ndGhhaT0zNjIxO2UubG9uZ3M9MzgzO2UubG93bGluZWNlbnRlcmxpbmU9NjUxMDI7ZS5sb3dsaW5lY21iPTgxODtlLmxvd2xpbmVkYXNoZWQ9NjUxMDE7ZS5sb3plbmdlPTk2NzQ7ZS5scGFyZW49OTM4MztlLmxzbGFzaD0zMjI7ZS5sc3F1YXJlPTg0Njc7ZS5sc3VwZXJpb3I9NjMyMTQ7ZS5sdHNoYWRlPTk2MTc7ZS5sdXRoYWk9MzYyMjtlLmx2b2NhbGljYmVuZ2FsaT0yNDQ0O2UubHZvY2FsaWNkZXZhPTIzMTY7ZS5sdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMDtlLmx2b2NhbGljdm93ZWxzaWduZGV2YT0yNDAyO2UubHhzcXVhcmU9MTMyNjc7ZS5tPTEwOTtlLm1hYmVuZ2FsaT0yNDc4O2UubWFjcm9uPTE3NTtlLm1hY3JvbmJlbG93Y21iPTgxNztlLm1hY3JvbmNtYj03NzI7ZS5tYWNyb25sb3dtb2Q9NzE3O2UubWFjcm9ubW9ub3NwYWNlPTY1NTA3O2UubWFjdXRlPTc3NDM7ZS5tYWRldmE9MjM1MDtlLm1hZ3VqYXJhdGk9MjczNDtlLm1hZ3VybXVraGk9MjYwNjtlLm1haGFwYWtoaGVicmV3PTE0NDQ7ZS5tYWhhcGFraGxlZnRoZWJyZXc9MTQ0NDtlLm1haGlyYWdhbmE9MTI0MTQ7ZS5tYWljaGF0dGF3YWxvd2xlZnR0aGFpPTYzNjM3O2UubWFpY2hhdHRhd2Fsb3dyaWdodHRoYWk9NjM2MzY7ZS5tYWljaGF0dGF3YXRoYWk9MzY1OTtlLm1haWNoYXR0YXdhdXBwZXJsZWZ0dGhhaT02MzYzNTtlLm1haWVrbG93bGVmdHRoYWk9NjM2Mjg7ZS5tYWlla2xvd3JpZ2h0dGhhaT02MzYyNztlLm1haWVrdGhhaT0zNjU2O2UubWFpZWt1cHBlcmxlZnR0aGFpPTYzNjI2O2UubWFpaGFuYWthdGxlZnR0aGFpPTYzNjIwO2UubWFpaGFuYWthdHRoYWk9MzYzMztlLm1haXRhaWtodWxlZnR0aGFpPTYzNjI1O2UubWFpdGFpa2h1dGhhaT0zNjU1O2UubWFpdGhvbG93bGVmdHRoYWk9NjM2MzE7ZS5tYWl0aG9sb3dyaWdodHRoYWk9NjM2MzA7ZS5tYWl0aG90aGFpPTM2NTc7ZS5tYWl0aG91cHBlcmxlZnR0aGFpPTYzNjI5O2UubWFpdHJpbG93bGVmdHRoYWk9NjM2MzQ7ZS5tYWl0cmlsb3dyaWdodHRoYWk9NjM2MzM7ZS5tYWl0cml0aGFpPTM2NTg7ZS5tYWl0cml1cHBlcmxlZnR0aGFpPTYzNjMyO2UubWFpeWFtb2t0aGFpPTM2NTQ7ZS5tYWthdGFrYW5hPTEyNTEwO2UubWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyMztlLm1hbGU9OTc5NDtlLm1hbnN5b25zcXVhcmU9MTMxMjc7ZS5tYXFhZmhlYnJldz0xNDcwO2UubWFycz05Nzk0O2UubWFzb3JhY2lyY2xlaGVicmV3PTE0NTU7ZS5tYXNxdWFyZT0xMzE4NztlLm1ib3BvbW9mbz0xMjU1MTtlLm1ic3F1YXJlPTEzMjY4O2UubWNpcmNsZT05NDM2O2UubWN1YmVkc3F1YXJlPTEzMjIxO2UubWRvdGFjY2VudD03NzQ1O2UubWRvdGJlbG93PTc3NDc7ZS5tZWVtYXJhYmljPTE2MDU7ZS5tZWVtZmluYWxhcmFiaWM9NjUyNTA7ZS5tZWVtaW5pdGlhbGFyYWJpYz02NTI1MTtlLm1lZW1tZWRpYWxhcmFiaWM9NjUyNTI7ZS5tZWVtbWVlbWluaXRpYWxhcmFiaWM9NjQ3MjE7ZS5tZWVtbWVlbWlzb2xhdGVkYXJhYmljPTY0NTg0O2UubWVldG9ydXNxdWFyZT0xMzEzMztlLm1laGlyYWdhbmE9MTI0MTc7ZS5tZWl6aWVyYXNxdWFyZT0xMzE4MjtlLm1la2F0YWthbmE9MTI1MTM7ZS5tZWthdGFrYW5haGFsZndpZHRoPTY1NDI2O2UubWVtPTE1MDI7ZS5tZW1kYWdlc2g9NjQzMTg7ZS5tZW1kYWdlc2hoZWJyZXc9NjQzMTg7ZS5tZW1oZWJyZXc9MTUwMjtlLm1lbmFybWVuaWFuPTEzOTY7ZS5tZXJraGFoZWJyZXc9MTQ0NTtlLm1lcmtoYWtlZnVsYWhlYnJldz0xNDQ2O2UubWVya2hha2VmdWxhbGVmdGhlYnJldz0xNDQ2O2UubWVya2hhbGVmdGhlYnJldz0xNDQ1O2UubWhvb2s9NjI1O2UubWh6c3F1YXJlPTEzMjAyO2UubWlkZGxlZG90a2F0YWthbmFoYWxmd2lkdGg9NjUzODE7ZS5taWRkb3Q9MTgzO2UubWlldW1hY2lyY2xla29yZWFuPTEyOTE0O2UubWlldW1hcGFyZW5rb3JlYW49MTI4MTg7ZS5taWV1bWNpcmNsZWtvcmVhbj0xMjkwMDtlLm1pZXVta29yZWFuPTEyNjA5O2UubWlldW1wYW5zaW9za29yZWFuPTEyNjU2O2UubWlldW1wYXJlbmtvcmVhbj0xMjgwNDtlLm1pZXVtcGlldXBrb3JlYW49MTI2NTQ7ZS5taWV1bXNpb3Nrb3JlYW49MTI2NTU7ZS5taWhpcmFnYW5hPTEyNDE1O2UubWlrYXRha2FuYT0xMjUxMTtlLm1pa2F0YWthbmFoYWxmd2lkdGg9NjU0MjQ7ZS5taW51cz04NzIyO2UubWludXNiZWxvd2NtYj04MDA7ZS5taW51c2NpcmNsZT04ODU0O2UubWludXNtb2Q9NzI3O2UubWludXNwbHVzPTg3MjM7ZS5taW51dGU9ODI0MjtlLm1pcmliYWFydXNxdWFyZT0xMzEzMDtlLm1pcmlzcXVhcmU9MTMxMjk7ZS5tbG9uZ2xlZ3R1cm5lZD02MjQ7ZS5tbHNxdWFyZT0xMzIwNjtlLm1tY3ViZWRzcXVhcmU9MTMyMTk7ZS5tbW9ub3NwYWNlPTY1MzU3O2UubW1zcXVhcmVkc3F1YXJlPTEzMjE1O2UubW9oaXJhZ2FuYT0xMjQxODtlLm1vaG1zcXVhcmU9MTMyNDk7ZS5tb2thdGFrYW5hPTEyNTE0O2UubW9rYXRha2FuYWhhbGZ3aWR0aD02NTQyNztlLm1vbHNxdWFyZT0xMzI3MDtlLm1vbWF0aGFpPTM2MTc7ZS5tb3ZlcnNzcXVhcmU9MTMyMjM7ZS5tb3ZlcnNzcXVhcmVkc3F1YXJlPTEzMjI0O2UubXBhcmVuPTkzODQ7ZS5tcGFzcXVhcmU9MTMyMjc7ZS5tc3NxdWFyZT0xMzIzNTtlLm1zdXBlcmlvcj02MzIxNTtlLm10dXJuZWQ9NjIzO2UubXU9MTgxO2UubXUxPTE4MTtlLm11YXNxdWFyZT0xMzE4NjtlLm11Y2hncmVhdGVyPTg4MTE7ZS5tdWNobGVzcz04ODEwO2UubXVmc3F1YXJlPTEzMTk2O2UubXVncmVlaz05NTY7ZS5tdWdzcXVhcmU9MTMxOTc7ZS5tdWhpcmFnYW5hPTEyNDE2O2UubXVrYXRha2FuYT0xMjUxMjtlLm11a2F0YWthbmFoYWxmd2lkdGg9NjU0MjU7ZS5tdWxzcXVhcmU9MTMyMDU7ZS5tdWx0aXBseT0yMTU7ZS5tdW1zcXVhcmU9MTMyMTE7ZS5tdW5haGhlYnJldz0xNDQzO2UubXVuYWhsZWZ0aGVicmV3PTE0NDM7ZS5tdXNpY2Fsbm90ZT05ODM0O2UubXVzaWNhbG5vdGVkYmw9OTgzNTtlLm11c2ljZmxhdHNpZ249OTgzNztlLm11c2ljc2hhcnBzaWduPTk4Mzk7ZS5tdXNzcXVhcmU9MTMyMzQ7ZS5tdXZzcXVhcmU9MTMyMzg7ZS5tdXdzcXVhcmU9MTMyNDQ7ZS5tdm1lZ2FzcXVhcmU9MTMyNDE7ZS5tdnNxdWFyZT0xMzIzOTtlLm13bWVnYXNxdWFyZT0xMzI0NztlLm13c3F1YXJlPTEzMjQ1O2Uubj0xMTA7ZS5uYWJlbmdhbGk9MjQ3MjtlLm5hYmxhPTg3MTE7ZS5uYWN1dGU9MzI0O2UubmFkZXZhPTIzNDQ7ZS5uYWd1amFyYXRpPTI3Mjg7ZS5uYWd1cm11a2hpPTI2MDA7ZS5uYWhpcmFnYW5hPTEyMzk0O2UubmFrYXRha2FuYT0xMjQ5MDtlLm5ha2F0YWthbmFoYWxmd2lkdGg9NjU0MTM7ZS5uYXBvc3Ryb3BoZT0zMjk7ZS5uYXNxdWFyZT0xMzE4NTtlLm5ib3BvbW9mbz0xMjU1NTtlLm5ic3BhY2U9MTYwO2UubmNhcm9uPTMyODtlLm5jZWRpbGxhPTMyNjtlLm5jaXJjbGU9OTQzNztlLm5jaXJjdW1mbGV4YmVsb3c9Nzc1NTtlLm5jb21tYWFjY2VudD0zMjY7ZS5uZG90YWNjZW50PTc3NDk7ZS5uZG90YmVsb3c9Nzc1MTtlLm5laGlyYWdhbmE9MTIzOTc7ZS5uZWthdGFrYW5hPTEyNDkzO2UubmVrYXRha2FuYWhhbGZ3aWR0aD02NTQxNjtlLm5ld3NoZXFlbHNpZ249ODM2MjtlLm5mc3F1YXJlPTEzMTk1O2UubmdhYmVuZ2FsaT0yNDU3O2UubmdhZGV2YT0yMzI5O2UubmdhZ3VqYXJhdGk9MjcxMztlLm5nYWd1cm11a2hpPTI1ODU7ZS5uZ29uZ3V0aGFpPTM1OTE7ZS5uaGlyYWdhbmE9MTI0MzU7ZS5uaG9va2xlZnQ9NjI2O2Uubmhvb2tyZXRyb2ZsZXg9NjI3O2UubmlldW5hY2lyY2xla29yZWFuPTEyOTExO2UubmlldW5hcGFyZW5rb3JlYW49MTI4MTU7ZS5uaWV1bmNpZXVja29yZWFuPTEyNTk3O2UubmlldW5jaXJjbGVrb3JlYW49MTI4OTc7ZS5uaWV1bmhpZXVoa29yZWFuPTEyNTk4O2UubmlldW5rb3JlYW49MTI1OTY7ZS5uaWV1bnBhbnNpb3Nrb3JlYW49MTI2NDg7ZS5uaWV1bnBhcmVua29yZWFuPTEyODAxO2UubmlldW5zaW9za29yZWFuPTEyNjQ3O2UubmlldW50aWtldXRrb3JlYW49MTI2NDY7ZS5uaWhpcmFnYW5hPTEyMzk1O2UubmlrYXRha2FuYT0xMjQ5MTtlLm5pa2F0YWthbmFoYWxmd2lkdGg9NjU0MTQ7ZS5uaWtoYWhpdGxlZnR0aGFpPTYzNjQxO2UubmlraGFoaXR0aGFpPTM2NjE7ZS5uaW5lPTU3O2UubmluZWFyYWJpYz0xNjQxO2UubmluZWJlbmdhbGk9MjU0MztlLm5pbmVjaXJjbGU9OTMyMDtlLm5pbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTMwO2UubmluZWRldmE9MjQxNTtlLm5pbmVndWphcmF0aT0yNzk5O2UubmluZWd1cm11a2hpPTI2NzE7ZS5uaW5laGFja2FyYWJpYz0xNjQxO2UubmluZWhhbmd6aG91PTEyMzI5O2UubmluZWlkZW9ncmFwaGljcGFyZW49MTI4NDA7ZS5uaW5laW5mZXJpb3I9ODMyOTtlLm5pbmVtb25vc3BhY2U9NjUzMDU7ZS5uaW5lb2xkc3R5bGU9NjMyODk7ZS5uaW5lcGFyZW49OTM0MDtlLm5pbmVwZXJpb2Q9OTM2MDtlLm5pbmVwZXJzaWFuPTE3ODU7ZS5uaW5lcm9tYW49ODU2ODtlLm5pbmVzdXBlcmlvcj04MzEzO2UubmluZXRlZW5jaXJjbGU9OTMzMDtlLm5pbmV0ZWVucGFyZW49OTM1MDtlLm5pbmV0ZWVucGVyaW9kPTkzNzA7ZS5uaW5ldGhhaT0zNjczO2Uubmo9NDYwO2UubmplY3lyaWxsaWM9MTExNDtlLm5rYXRha2FuYT0xMjUzMTtlLm5rYXRha2FuYWhhbGZ3aWR0aD02NTQzNztlLm5sZWdyaWdodGxvbmc9NDE0O2UubmxpbmViZWxvdz03NzUzO2Uubm1vbm9zcGFjZT02NTM1ODtlLm5tc3F1YXJlPTEzMjEwO2Uubm5hYmVuZ2FsaT0yNDY3O2Uubm5hZGV2YT0yMzM5O2Uubm5hZ3VqYXJhdGk9MjcyMztlLm5uYWd1cm11a2hpPTI1OTU7ZS5ubm5hZGV2YT0yMzQ1O2Uubm9oaXJhZ2FuYT0xMjM5ODtlLm5va2F0YWthbmE9MTI0OTQ7ZS5ub2thdGFrYW5haGFsZndpZHRoPTY1NDE3O2Uubm9uYnJlYWtpbmdzcGFjZT0xNjA7ZS5ub25lbnRoYWk9MzYwMztlLm5vbnV0aGFpPTM2MDk7ZS5ub29uYXJhYmljPTE2MDY7ZS5ub29uZmluYWxhcmFiaWM9NjUyNTQ7ZS5ub29uZ2h1bm5hYXJhYmljPTE3MjI7ZS5ub29uZ2h1bm5hZmluYWxhcmFiaWM9NjQ0MTU7ZS5ub29uaW5pdGlhbGFyYWJpYz02NTI1NTtlLm5vb25qZWVtaW5pdGlhbGFyYWJpYz02NDcyMjtlLm5vb25qZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1ODc7ZS5ub29ubWVkaWFsYXJhYmljPTY1MjU2O2Uubm9vbm1lZW1pbml0aWFsYXJhYmljPTY0NzI1O2Uubm9vbm1lZW1pc29sYXRlZGFyYWJpYz02NDU5MDtlLm5vb25ub29uZmluYWxhcmFiaWM9NjQ2NTM7ZS5ub3Rjb250YWlucz04NzE2O2Uubm90ZWxlbWVudD04NzEzO2Uubm90ZWxlbWVudG9mPTg3MTM7ZS5ub3RlcXVhbD04ODAwO2Uubm90Z3JlYXRlcj04ODE1O2Uubm90Z3JlYXRlcm5vcmVxdWFsPTg4MTc7ZS5ub3RncmVhdGVybm9ybGVzcz04ODI1O2Uubm90aWRlbnRpY2FsPTg4MDI7ZS5ub3RsZXNzPTg4MTQ7ZS5ub3RsZXNzbm9yZXF1YWw9ODgxNjtlLm5vdHBhcmFsbGVsPTg3NDI7ZS5ub3RwcmVjZWRlcz04ODMyO2Uubm90c3Vic2V0PTg4MzY7ZS5ub3RzdWNjZWVkcz04ODMzO2Uubm90c3VwZXJzZXQ9ODgzNztlLm5vd2FybWVuaWFuPTEzOTg7ZS5ucGFyZW49OTM4NTtlLm5zc3F1YXJlPTEzMjMzO2UubnN1cGVyaW9yPTgzMTk7ZS5udGlsZGU9MjQxO2UubnU9OTU3O2UubnVoaXJhZ2FuYT0xMjM5NjtlLm51a2F0YWthbmE9MTI0OTI7ZS5udWthdGFrYW5haGFsZndpZHRoPTY1NDE1O2UubnVrdGFiZW5nYWxpPTI0OTI7ZS5udWt0YWRldmE9MjM2NDtlLm51a3RhZ3VqYXJhdGk9Mjc0ODtlLm51a3RhZ3VybXVraGk9MjYyMDtlLm51bWJlcnNpZ249MzU7ZS5udW1iZXJzaWdubW9ub3NwYWNlPTY1MjgzO2UubnVtYmVyc2lnbnNtYWxsPTY1MTE5O2UubnVtZXJhbHNpZ25ncmVlaz04ODQ7ZS5udW1lcmFsc2lnbmxvd2VyZ3JlZWs9ODg1O2UubnVtZXJvPTg0NzA7ZS5udW49MTUwNDtlLm51bmRhZ2VzaD02NDMyMDtlLm51bmRhZ2VzaGhlYnJldz02NDMyMDtlLm51bmhlYnJldz0xNTA0O2UubnZzcXVhcmU9MTMyMzc7ZS5ud3NxdWFyZT0xMzI0MztlLm55YWJlbmdhbGk9MjQ2MjtlLm55YWRldmE9MjMzNDtlLm55YWd1amFyYXRpPTI3MTg7ZS5ueWFndXJtdWtoaT0yNTkwO2Uubz0xMTE7ZS5vYWN1dGU9MjQzO2Uub2FuZ3RoYWk9MzYyOTtlLm9iYXJyZWQ9NjI5O2Uub2JhcnJlZGN5cmlsbGljPTEyNTc7ZS5vYmFycmVkZGllcmVzaXNjeXJpbGxpYz0xMjU5O2Uub2JlbmdhbGk9MjQ1MTtlLm9ib3BvbW9mbz0xMjU3MTtlLm9icmV2ZT0zMzU7ZS5vY2FuZHJhZGV2YT0yMzIxO2Uub2NhbmRyYWd1amFyYXRpPTI3MDU7ZS5vY2FuZHJhdm93ZWxzaWduZGV2YT0yMzc3O2Uub2NhbmRyYXZvd2Vsc2lnbmd1amFyYXRpPTI3NjE7ZS5vY2Fyb249NDY2O2Uub2NpcmNsZT05NDM4O2Uub2NpcmN1bWZsZXg9MjQ0O2Uub2NpcmN1bWZsZXhhY3V0ZT03ODg5O2Uub2NpcmN1bWZsZXhkb3RiZWxvdz03ODk3O2Uub2NpcmN1bWZsZXhncmF2ZT03ODkxO2Uub2NpcmN1bWZsZXhob29rYWJvdmU9Nzg5MztlLm9jaXJjdW1mbGV4dGlsZGU9Nzg5NTtlLm9jeXJpbGxpYz0xMDg2O2Uub2RibGFjdXRlPTMzNztlLm9kYmxncmF2ZT01MjU7ZS5vZGV2YT0yMzIzO2Uub2RpZXJlc2lzPTI0NjtlLm9kaWVyZXNpc2N5cmlsbGljPTEyNTU7ZS5vZG90YmVsb3c9Nzg4NTtlLm9lPTMzOTtlLm9la29yZWFuPTEyNjM0O2Uub2dvbmVrPTczMTtlLm9nb25la2NtYj04MDg7ZS5vZ3JhdmU9MjQyO2Uub2d1amFyYXRpPTI3MDc7ZS5vaGFybWVuaWFuPTE0MTM7ZS5vaGlyYWdhbmE9MTIzNjI7ZS5vaG9va2Fib3ZlPTc4ODc7ZS5vaG9ybj00MTc7ZS5vaG9ybmFjdXRlPTc4OTk7ZS5vaG9ybmRvdGJlbG93PTc5MDc7ZS5vaG9ybmdyYXZlPTc5MDE7ZS5vaG9ybmhvb2thYm92ZT03OTAzO2Uub2hvcm50aWxkZT03OTA1O2Uub2h1bmdhcnVtbGF1dD0zMzc7ZS5vaT00MTk7ZS5vaW52ZXJ0ZWRicmV2ZT01Mjc7ZS5va2F0YWthbmE9MTI0NTg7ZS5va2F0YWthbmFoYWxmd2lkdGg9NjUzOTc7ZS5va29yZWFuPTEyNjMxO2Uub2xlaGVicmV3PTE0NTE7ZS5vbWFjcm9uPTMzMztlLm9tYWNyb25hY3V0ZT03NzYzO2Uub21hY3JvbmdyYXZlPTc3NjE7ZS5vbWRldmE9MjM4NDtlLm9tZWdhPTk2OTtlLm9tZWdhMT05ODI7ZS5vbWVnYWN5cmlsbGljPTExMjE7ZS5vbWVnYWxhdGluY2xvc2VkPTYzMTtlLm9tZWdhcm91bmRjeXJpbGxpYz0xMTQ3O2Uub21lZ2F0aXRsb2N5cmlsbGljPTExNDk7ZS5vbWVnYXRvbm9zPTk3NDtlLm9tZ3VqYXJhdGk9Mjc2ODtlLm9taWNyb249OTU5O2Uub21pY3JvbnRvbm9zPTk3MjtlLm9tb25vc3BhY2U9NjUzNTk7ZS5vbmU9NDk7ZS5vbmVhcmFiaWM9MTYzMztlLm9uZWJlbmdhbGk9MjUzNTtlLm9uZWNpcmNsZT05MzEyO2Uub25lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMjtlLm9uZWRldmE9MjQwNztlLm9uZWRvdGVubGVhZGVyPTgyMjg7ZS5vbmVlaWdodGg9ODUzOTtlLm9uZWZpdHRlZD02MzE5NjtlLm9uZWd1amFyYXRpPTI3OTE7ZS5vbmVndXJtdWtoaT0yNjYzO2Uub25laGFja2FyYWJpYz0xNjMzO2Uub25laGFsZj0xODk7ZS5vbmVoYW5nemhvdT0xMjMyMTtlLm9uZWlkZW9ncmFwaGljcGFyZW49MTI4MzI7ZS5vbmVpbmZlcmlvcj04MzIxO2Uub25lbW9ub3NwYWNlPTY1Mjk3O2Uub25lbnVtZXJhdG9yYmVuZ2FsaT0yNTQ4O2Uub25lb2xkc3R5bGU9NjMyODE7ZS5vbmVwYXJlbj05MzMyO2Uub25lcGVyaW9kPTkzNTI7ZS5vbmVwZXJzaWFuPTE3Nzc7ZS5vbmVxdWFydGVyPTE4ODtlLm9uZXJvbWFuPTg1NjA7ZS5vbmVzdXBlcmlvcj0xODU7ZS5vbmV0aGFpPTM2NjU7ZS5vbmV0aGlyZD04NTMxO2Uub29nb25laz00OTE7ZS5vb2dvbmVrbWFjcm9uPTQ5MztlLm9vZ3VybXVraGk9MjU3OTtlLm9vbWF0cmFndXJtdWtoaT0yNjM1O2Uub29wZW49NTk2O2Uub3BhcmVuPTkzODY7ZS5vcGVuYnVsbGV0PTk3MDI7ZS5vcHRpb249ODk5NztlLm9yZGZlbWluaW5lPTE3MDtlLm9yZG1hc2N1bGluZT0xODY7ZS5vcnRob2dvbmFsPTg3MzU7ZS5vc2hvcnRkZXZhPTIzMjI7ZS5vc2hvcnR2b3dlbHNpZ25kZXZhPTIzNzg7ZS5vc2xhc2g9MjQ4O2Uub3NsYXNoYWN1dGU9NTExO2Uub3NtYWxsaGlyYWdhbmE9MTIzNjE7ZS5vc21hbGxrYXRha2FuYT0xMjQ1NztlLm9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg3O2Uub3N0cm9rZWFjdXRlPTUxMTtlLm9zdXBlcmlvcj02MzIxNjtlLm90Y3lyaWxsaWM9MTE1MTtlLm90aWxkZT0yNDU7ZS5vdGlsZGVhY3V0ZT03NzU3O2Uub3RpbGRlZGllcmVzaXM9Nzc1OTtlLm91Ym9wb21vZm89MTI1Nzc7ZS5vdmVybGluZT04MjU0O2Uub3ZlcmxpbmVjZW50ZXJsaW5lPTY1MDk4O2Uub3ZlcmxpbmVjbWI9NzczO2Uub3ZlcmxpbmVkYXNoZWQ9NjUwOTc7ZS5vdmVybGluZWRibHdhdnk9NjUxMDA7ZS5vdmVybGluZXdhdnk9NjUwOTk7ZS5vdmVyc2NvcmU9MTc1O2Uub3Zvd2Vsc2lnbmJlbmdhbGk9MjUwNztlLm92b3dlbHNpZ25kZXZhPTIzNzk7ZS5vdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MztlLnA9MTEyO2UucGFhbXBzc3F1YXJlPTEzMTg0O2UucGFhc2VudG9zcXVhcmU9MTMwOTk7ZS5wYWJlbmdhbGk9MjQ3NDtlLnBhY3V0ZT03NzY1O2UucGFkZXZhPTIzNDY7ZS5wYWdlZG93bj04NjcxO2UucGFnZXVwPTg2NzA7ZS5wYWd1amFyYXRpPTI3MzA7ZS5wYWd1cm11a2hpPTI2MDI7ZS5wYWhpcmFnYW5hPTEyNDAxO2UucGFpeWFubm9pdGhhaT0zNjMxO2UucGFrYXRha2FuYT0xMjQ5NztlLnBhbGF0YWxpemF0aW9uY3lyaWxsaWNjbWI9MTE1NjtlLnBhbG9jaGthY3lyaWxsaWM9MTIxNjtlLnBhbnNpb3Nrb3JlYW49MTI2NzE7ZS5wYXJhZ3JhcGg9MTgyO2UucGFyYWxsZWw9ODc0MTtlLnBhcmVubGVmdD00MDtlLnBhcmVubGVmdGFsdG9uZWFyYWJpYz02NDgzMDtlLnBhcmVubGVmdGJ0PTYzNzI1O2UucGFyZW5sZWZ0ZXg9NjM3MjQ7ZS5wYXJlbmxlZnRpbmZlcmlvcj04MzMzO2UucGFyZW5sZWZ0bW9ub3NwYWNlPTY1Mjg4O2UucGFyZW5sZWZ0c21hbGw9NjUxMTM7ZS5wYXJlbmxlZnRzdXBlcmlvcj04MzE3O2UucGFyZW5sZWZ0dHA9NjM3MjM7ZS5wYXJlbmxlZnR2ZXJ0aWNhbD02NTA3NztlLnBhcmVucmlnaHQ9NDE7ZS5wYXJlbnJpZ2h0YWx0b25lYXJhYmljPTY0ODMxO2UucGFyZW5yaWdodGJ0PTYzNzM2O2UucGFyZW5yaWdodGV4PTYzNzM1O2UucGFyZW5yaWdodGluZmVyaW9yPTgzMzQ7ZS5wYXJlbnJpZ2h0bW9ub3NwYWNlPTY1Mjg5O2UucGFyZW5yaWdodHNtYWxsPTY1MTE0O2UucGFyZW5yaWdodHN1cGVyaW9yPTgzMTg7ZS5wYXJlbnJpZ2h0dHA9NjM3MzQ7ZS5wYXJlbnJpZ2h0dmVydGljYWw9NjUwNzg7ZS5wYXJ0aWFsZGlmZj04NzA2O2UucGFzZXFoZWJyZXc9MTQ3MjtlLnBhc2h0YWhlYnJldz0xNDMzO2UucGFzcXVhcmU9MTMyMjU7ZS5wYXRhaD0xNDYzO2UucGF0YWgxMT0xNDYzO2UucGF0YWgxZD0xNDYzO2UucGF0YWgyYT0xNDYzO2UucGF0YWhoZWJyZXc9MTQ2MztlLnBhdGFobmFycm93aGVicmV3PTE0NjM7ZS5wYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ2MztlLnBhdGFod2lkZWhlYnJldz0xNDYzO2UucGF6ZXJoZWJyZXc9MTQ0MTtlLnBib3BvbW9mbz0xMjU1MDtlLnBjaXJjbGU9OTQzOTtlLnBkb3RhY2NlbnQ9Nzc2NztlLnBlPTE1MDg7ZS5wZWN5cmlsbGljPTEwODc7ZS5wZWRhZ2VzaD02NDMyNDtlLnBlZGFnZXNoaGVicmV3PTY0MzI0O2UucGVlemlzcXVhcmU9MTMxMTU7ZS5wZWZpbmFsZGFnZXNoaGVicmV3PTY0MzIzO2UucGVoYXJhYmljPTE2NjI7ZS5wZWhhcm1lbmlhbj0xNDAyO2UucGVoZWJyZXc9MTUwODtlLnBlaGZpbmFsYXJhYmljPTY0MzQzO2UucGVoaW5pdGlhbGFyYWJpYz02NDM0NDtlLnBlaGlyYWdhbmE9MTI0MTA7ZS5wZWhtZWRpYWxhcmFiaWM9NjQzNDU7ZS5wZWthdGFrYW5hPTEyNTA2O2UucGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MTtlLnBlcmFmZWhlYnJldz02NDMzNDtlLnBlcmNlbnQ9Mzc7ZS5wZXJjZW50YXJhYmljPTE2NDI7ZS5wZXJjZW50bW9ub3NwYWNlPTY1Mjg1O2UucGVyY2VudHNtYWxsPTY1MTMwO2UucGVyaW9kPTQ2O2UucGVyaW9kYXJtZW5pYW49MTQxNztlLnBlcmlvZGNlbnRlcmVkPTE4MztlLnBlcmlvZGhhbGZ3aWR0aD02NTM3NztlLnBlcmlvZGluZmVyaW9yPTYzMjA3O2UucGVyaW9kbW9ub3NwYWNlPTY1Mjk0O2UucGVyaW9kc21hbGw9NjUxMDY7ZS5wZXJpb2RzdXBlcmlvcj02MzIwODtlLnBlcmlzcG9tZW5pZ3JlZWtjbWI9ODM0O2UucGVycGVuZGljdWxhcj04ODY5O2UucGVydGhvdXNhbmQ9ODI0MDtlLnBlc2V0YT04MzU5O2UucGZzcXVhcmU9MTMxOTQ7ZS5waGFiZW5nYWxpPTI0NzU7ZS5waGFkZXZhPTIzNDc7ZS5waGFndWphcmF0aT0yNzMxO2UucGhhZ3VybXVraGk9MjYwMztlLnBoaT05NjY7ZS5waGkxPTk4MTtlLnBoaWV1cGhhY2lyY2xla29yZWFuPTEyOTIyO2UucGhpZXVwaGFwYXJlbmtvcmVhbj0xMjgyNjtlLnBoaWV1cGhjaXJjbGVrb3JlYW49MTI5MDg7ZS5waGlldXBoa29yZWFuPTEyNjIxO2UucGhpZXVwaHBhcmVua29yZWFuPTEyODEyO2UucGhpbGF0aW49NjMyO2UucGhpbnRodXRoYWk9MzY0MjtlLnBoaXN5bWJvbGdyZWVrPTk4MTtlLnBob29rPTQyMTtlLnBob3BoYW50aGFpPTM2MTQ7ZS5waG9waHVuZ3RoYWk9MzYxMjtlLnBob3NhbXBoYW90aGFpPTM2MTY7ZS5waT05NjA7ZS5waWV1cGFjaXJjbGVrb3JlYW49MTI5MTU7ZS5waWV1cGFwYXJlbmtvcmVhbj0xMjgxOTtlLnBpZXVwY2lldWNrb3JlYW49MTI2NjI7ZS5waWV1cGNpcmNsZWtvcmVhbj0xMjkwMTtlLnBpZXVwa2l5ZW9ra29yZWFuPTEyNjU4O2UucGlldXBrb3JlYW49MTI2MTA7ZS5waWV1cHBhcmVua29yZWFuPTEyODA1O2UucGlldXBzaW9za2l5ZW9ra29yZWFuPTEyNjYwO2UucGlldXBzaW9za29yZWFuPTEyNjEyO2UucGlldXBzaW9zdGlrZXV0a29yZWFuPTEyNjYxO2UucGlldXB0aGlldXRoa29yZWFuPTEyNjYzO2UucGlldXB0aWtldXRrb3JlYW49MTI2NTk7ZS5waWhpcmFnYW5hPTEyNDA0O2UucGlrYXRha2FuYT0xMjUwMDtlLnBpc3ltYm9sZ3JlZWs9OTgyO2UucGl3cmFybWVuaWFuPTE0MTE7ZS5wbGFuY2tvdmVyMnBpPTg0NjM7ZS5wbGFuY2tvdmVyMnBpMT04NDYzO2UucGx1cz00MztlLnBsdXNiZWxvd2NtYj03OTk7ZS5wbHVzY2lyY2xlPTg4NTM7ZS5wbHVzbWludXM9MTc3O2UucGx1c21vZD03MjY7ZS5wbHVzbW9ub3NwYWNlPTY1MjkxO2UucGx1c3NtYWxsPTY1MTIyO2UucGx1c3N1cGVyaW9yPTgzMTQ7ZS5wbW9ub3NwYWNlPTY1MzYwO2UucG1zcXVhcmU9MTMyNzI7ZS5wb2hpcmFnYW5hPTEyNDEzO2UucG9pbnRpbmdpbmRleGRvd253aGl0ZT05NzU5O2UucG9pbnRpbmdpbmRleGxlZnR3aGl0ZT05NzU2O2UucG9pbnRpbmdpbmRleHJpZ2h0d2hpdGU9OTc1ODtlLnBvaW50aW5naW5kZXh1cHdoaXRlPTk3NTc7ZS5wb2thdGFrYW5hPTEyNTA5O2UucG9wbGF0aGFpPTM2MTE7ZS5wb3N0YWxtYXJrPTEyMzA2O2UucG9zdGFsbWFya2ZhY2U9MTIzMjA7ZS5wcGFyZW49OTM4NztlLnByZWNlZGVzPTg4MjY7ZS5wcmVzY3JpcHRpb249ODQ3ODtlLnByaW1lbW9kPTY5NztlLnByaW1lcmV2ZXJzZWQ9ODI0NTtlLnByb2R1Y3Q9ODcxOTtlLnByb2plY3RpdmU9ODk2NTtlLnByb2xvbmdlZGthbmE9MTI1NDA7ZS5wcm9wZWxsb3I9ODk4NDtlLnByb3BlcnN1YnNldD04ODM0O2UucHJvcGVyc3VwZXJzZXQ9ODgzNTtlLnByb3BvcnRpb249ODc1OTtlLnByb3BvcnRpb25hbD04NzMzO2UucHNpPTk2ODtlLnBzaWN5cmlsbGljPTExMzc7ZS5wc2lsaXBuZXVtYXRhY3lyaWxsaWNjbWI9MTE1ODtlLnBzc3F1YXJlPTEzMjMyO2UucHVoaXJhZ2FuYT0xMjQwNztlLnB1a2F0YWthbmE9MTI1MDM7ZS5wdnNxdWFyZT0xMzIzNjtlLnB3c3F1YXJlPTEzMjQyO2UucT0xMTM7ZS5xYWRldmE9MjM5MjtlLnFhZG1haGVicmV3PTE0NDg7ZS5xYWZhcmFiaWM9MTYwMjtlLnFhZmZpbmFsYXJhYmljPTY1MjM4O2UucWFmaW5pdGlhbGFyYWJpYz02NTIzOTtlLnFhZm1lZGlhbGFyYWJpYz02NTI0MDtlLnFhbWF0cz0xNDY0O2UucWFtYXRzMTA9MTQ2NDtlLnFhbWF0czFhPTE0NjQ7ZS5xYW1hdHMxYz0xNDY0O2UucWFtYXRzMjc9MTQ2NDtlLnFhbWF0czI5PTE0NjQ7ZS5xYW1hdHMzMz0xNDY0O2UucWFtYXRzZGU9MTQ2NDtlLnFhbWF0c2hlYnJldz0xNDY0O2UucWFtYXRzbmFycm93aGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5uYXJyb3doZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFucXVhcnRlcmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW53aWRlaGVicmV3PTE0NjQ7ZS5xYW1hdHNxdWFydGVyaGVicmV3PTE0NjQ7ZS5xYW1hdHN3aWRlaGVicmV3PTE0NjQ7ZS5xYXJuZXlwYXJhaGVicmV3PTE0Mzk7ZS5xYm9wb21vZm89MTI1NjE7ZS5xY2lyY2xlPTk0NDA7ZS5xaG9vaz02NzI7ZS5xbW9ub3NwYWNlPTY1MzYxO2UucW9mPTE1MTE7ZS5xb2ZkYWdlc2g9NjQzMjc7ZS5xb2ZkYWdlc2hoZWJyZXc9NjQzMjc7ZS5xb2ZoZWJyZXc9MTUxMTtlLnFwYXJlbj05Mzg4O2UucXVhcnRlcm5vdGU9OTgzMztlLnF1YnV0cz0xNDY3O2UucXVidXRzMTg9MTQ2NztlLnF1YnV0czI1PTE0Njc7ZS5xdWJ1dHMzMT0xNDY3O2UucXVidXRzaGVicmV3PTE0Njc7ZS5xdWJ1dHNuYXJyb3doZWJyZXc9MTQ2NztlLnF1YnV0c3F1YXJ0ZXJoZWJyZXc9MTQ2NztlLnF1YnV0c3dpZGVoZWJyZXc9MTQ2NztlLnF1ZXN0aW9uPTYzO2UucXVlc3Rpb25hcmFiaWM9MTU2NztlLnF1ZXN0aW9uYXJtZW5pYW49MTM3NDtlLnF1ZXN0aW9uZG93bj0xOTE7ZS5xdWVzdGlvbmRvd25zbWFsbD02MzQyMztlLnF1ZXN0aW9uZ3JlZWs9ODk0O2UucXVlc3Rpb25tb25vc3BhY2U9NjUzMTE7ZS5xdWVzdGlvbnNtYWxsPTYzMjk1O2UucXVvdGVkYmw9MzQ7ZS5xdW90ZWRibGJhc2U9ODIyMjtlLnF1b3RlZGJsbGVmdD04MjIwO2UucXVvdGVkYmxtb25vc3BhY2U9NjUyODI7ZS5xdW90ZWRibHByaW1lPTEyMzE4O2UucXVvdGVkYmxwcmltZXJldmVyc2VkPTEyMzE3O2UucXVvdGVkYmxyaWdodD04MjIxO2UucXVvdGVsZWZ0PTgyMTY7ZS5xdW90ZWxlZnRyZXZlcnNlZD04MjE5O2UucXVvdGVyZXZlcnNlZD04MjE5O2UucXVvdGVyaWdodD04MjE3O2UucXVvdGVyaWdodG49MzI5O2UucXVvdGVzaW5nbGJhc2U9ODIxODtlLnF1b3Rlc2luZ2xlPTM5O2UucXVvdGVzaW5nbGVtb25vc3BhY2U9NjUyODc7ZS5yPTExNDtlLnJhYXJtZW5pYW49MTQwNDtlLnJhYmVuZ2FsaT0yNDgwO2UucmFjdXRlPTM0MTtlLnJhZGV2YT0yMzUyO2UucmFkaWNhbD04NzMwO2UucmFkaWNhbGV4PTYzNzE3O2UucmFkb3ZlcnNzcXVhcmU9MTMyMzA7ZS5yYWRvdmVyc3NxdWFyZWRzcXVhcmU9MTMyMzE7ZS5yYWRzcXVhcmU9MTMyMjk7ZS5yYWZlPTE0NzE7ZS5yYWZlaGVicmV3PTE0NzE7ZS5yYWd1amFyYXRpPTI3MzY7ZS5yYWd1cm11a2hpPTI2MDg7ZS5yYWhpcmFnYW5hPTEyNDI1O2UucmFrYXRha2FuYT0xMjUyMTtlLnJha2F0YWthbmFoYWxmd2lkdGg9NjU0MzE7ZS5yYWxvd2VyZGlhZ29uYWxiZW5nYWxpPTI1NDU7ZS5yYW1pZGRsZWRpYWdvbmFsYmVuZ2FsaT0yNTQ0O2UucmFtc2hvcm49NjEyO2UucmF0aW89ODc1ODtlLnJib3BvbW9mbz0xMjU2NjtlLnJjYXJvbj0zNDU7ZS5yY2VkaWxsYT0zNDM7ZS5yY2lyY2xlPTk0NDE7ZS5yY29tbWFhY2NlbnQ9MzQzO2UucmRibGdyYXZlPTUyOTtlLnJkb3RhY2NlbnQ9Nzc2OTtlLnJkb3RiZWxvdz03NzcxO2UucmRvdGJlbG93bWFjcm9uPTc3NzM7ZS5yZWZlcmVuY2VtYXJrPTgyNTE7ZS5yZWZsZXhzdWJzZXQ9ODgzODtlLnJlZmxleHN1cGVyc2V0PTg4Mzk7ZS5yZWdpc3RlcmVkPTE3NDtlLnJlZ2lzdGVyc2Fucz02MzcyMDtlLnJlZ2lzdGVyc2VyaWY9NjMxOTQ7ZS5yZWhhcmFiaWM9MTU4NTtlLnJlaGFybWVuaWFuPTE0MDg7ZS5yZWhmaW5hbGFyYWJpYz02NTE5ODtlLnJlaGlyYWdhbmE9MTI0Mjg7ZS5yZWthdGFrYW5hPTEyNTI0O2UucmVrYXRha2FuYWhhbGZ3aWR0aD02NTQzNDtlLnJlc2g9MTUxMjtlLnJlc2hkYWdlc2hoZWJyZXc9NjQzMjg7ZS5yZXNoaGVicmV3PTE1MTI7ZS5yZXZlcnNlZHRpbGRlPTg3NjU7ZS5yZXZpYWhlYnJldz0xNDMxO2UucmV2aWFtdWdyYXNoaGVicmV3PTE0MzE7ZS5yZXZsb2dpY2Fsbm90PTg5NzY7ZS5yZmlzaGhvb2s9NjM4O2UucmZpc2hob29rcmV2ZXJzZWQ9NjM5O2UucmhhYmVuZ2FsaT0yNTI1O2UucmhhZGV2YT0yMzk3O2UucmhvPTk2MTtlLnJob29rPTYzNztlLnJob29rdHVybmVkPTYzNTtlLnJob29rdHVybmVkc3VwZXJpb3I9NjkzO2Uucmhvc3ltYm9sZ3JlZWs9MTAwOTtlLnJob3RpY2hvb2ttb2Q9NzM0O2UucmlldWxhY2lyY2xla29yZWFuPTEyOTEzO2UucmlldWxhcGFyZW5rb3JlYW49MTI4MTc7ZS5yaWV1bGNpcmNsZWtvcmVhbj0xMjg5OTtlLnJpZXVsaGlldWhrb3JlYW49MTI2MDg7ZS5yaWV1bGtpeWVva2tvcmVhbj0xMjYwMjtlLnJpZXVsa2l5ZW9rc2lvc2tvcmVhbj0xMjY0OTtlLnJpZXVsa29yZWFuPTEyNjAxO2UucmlldWxtaWV1bWtvcmVhbj0xMjYwMztlLnJpZXVscGFuc2lvc2tvcmVhbj0xMjY1MjtlLnJpZXVscGFyZW5rb3JlYW49MTI4MDM7ZS5yaWV1bHBoaWV1cGhrb3JlYW49MTI2MDc7ZS5yaWV1bHBpZXVwa29yZWFuPTEyNjA0O2UucmlldWxwaWV1cHNpb3Nrb3JlYW49MTI2NTE7ZS5yaWV1bHNpb3Nrb3JlYW49MTI2MDU7ZS5yaWV1bHRoaWV1dGhrb3JlYW49MTI2MDY7ZS5yaWV1bHRpa2V1dGtvcmVhbj0xMjY1MDtlLnJpZXVseWVvcmluaGlldWhrb3JlYW49MTI2NTM7ZS5yaWdodGFuZ2xlPTg3MzU7ZS5yaWdodHRhY2tiZWxvd2NtYj03OTM7ZS5yaWdodHRyaWFuZ2xlPTg4OTU7ZS5yaWhpcmFnYW5hPTEyNDI2O2UucmlrYXRha2FuYT0xMjUyMjtlLnJpa2F0YWthbmFoYWxmd2lkdGg9NjU0MzI7ZS5yaW5nPTczMDtlLnJpbmdiZWxvd2NtYj04MDU7ZS5yaW5nY21iPTc3ODtlLnJpbmdoYWxmbGVmdD03MDM7ZS5yaW5naGFsZmxlZnRhcm1lbmlhbj0xMzY5O2UucmluZ2hhbGZsZWZ0YmVsb3djbWI9Nzk2O2UucmluZ2hhbGZsZWZ0Y2VudGVyZWQ9NzIzO2UucmluZ2hhbGZyaWdodD03MDI7ZS5yaW5naGFsZnJpZ2h0YmVsb3djbWI9ODI1O2UucmluZ2hhbGZyaWdodGNlbnRlcmVkPTcyMjtlLnJpbnZlcnRlZGJyZXZlPTUzMTtlLnJpdHRvcnVzcXVhcmU9MTMxMzc7ZS5ybGluZWJlbG93PTc3NzU7ZS5ybG9uZ2xlZz02MzY7ZS5ybG9uZ2xlZ3R1cm5lZD02MzQ7ZS5ybW9ub3NwYWNlPTY1MzYyO2Uucm9oaXJhZ2FuYT0xMjQyOTtlLnJva2F0YWthbmE9MTI1MjU7ZS5yb2thdGFrYW5haGFsZndpZHRoPTY1NDM1O2Uucm9ydWF0aGFpPTM2MTk7ZS5ycGFyZW49OTM4OTtlLnJyYWJlbmdhbGk9MjUyNDtlLnJyYWRldmE9MjM1MztlLnJyYWd1cm11a2hpPTI2NTI7ZS5ycmVoYXJhYmljPTE2ODE7ZS5ycmVoZmluYWxhcmFiaWM9NjQzOTc7ZS5ycnZvY2FsaWNiZW5nYWxpPTI1Mjg7ZS5ycnZvY2FsaWNkZXZhPTI0MDA7ZS5ycnZvY2FsaWNndWphcmF0aT0yNzg0O2UucnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTAwO2UucnJ2b2NhbGljdm93ZWxzaWduZGV2YT0yMzcyO2UucnJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NjtlLnJzdXBlcmlvcj02MzIxNztlLnJ0YmxvY2s9OTYxNjtlLnJ0dXJuZWQ9NjMzO2UucnR1cm5lZHN1cGVyaW9yPTY5MjtlLnJ1aGlyYWdhbmE9MTI0Mjc7ZS5ydWthdGFrYW5hPTEyNTIzO2UucnVrYXRha2FuYWhhbGZ3aWR0aD02NTQzMztlLnJ1cGVlbWFya2JlbmdhbGk9MjU0NjtlLnJ1cGVlc2lnbmJlbmdhbGk9MjU0NztlLnJ1cGlhaD02MzE5NztlLnJ1dGhhaT0zNjIwO2UucnZvY2FsaWNiZW5nYWxpPTI0NDM7ZS5ydm9jYWxpY2RldmE9MjMxNTtlLnJ2b2NhbGljZ3VqYXJhdGk9MjY5OTtlLnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNDk5O2UucnZvY2FsaWN2b3dlbHNpZ25kZXZhPTIzNzE7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmd1amFyYXRpPTI3NTU7ZS5zPTExNTtlLnNhYmVuZ2FsaT0yNDg4O2Uuc2FjdXRlPTM0NztlLnNhY3V0ZWRvdGFjY2VudD03NzgxO2Uuc2FkYXJhYmljPTE1ODk7ZS5zYWRldmE9MjM2MDtlLnNhZGZpbmFsYXJhYmljPTY1MjEwO2Uuc2FkaW5pdGlhbGFyYWJpYz02NTIxMTtlLnNhZG1lZGlhbGFyYWJpYz02NTIxMjtlLnNhZ3VqYXJhdGk9Mjc0NDtlLnNhZ3VybXVraGk9MjYxNjtlLnNhaGlyYWdhbmE9MTIzNzM7ZS5zYWthdGFrYW5hPTEyNDY5O2Uuc2FrYXRha2FuYWhhbGZ3aWR0aD02NTQwMztlLnNhbGxhbGxhaG91YWxheWhld2FzYWxsYW1hcmFiaWM9NjUwMTg7ZS5zYW1la2g9MTUwNTtlLnNhbWVraGRhZ2VzaD02NDMyMTtlLnNhbWVraGRhZ2VzaGhlYnJldz02NDMyMTtlLnNhbWVraGhlYnJldz0xNTA1O2Uuc2FyYWFhdGhhaT0zNjM0O2Uuc2FyYWFldGhhaT0zNjQ5O2Uuc2FyYWFpbWFpbWFsYWl0aGFpPTM2NTI7ZS5zYXJhYWltYWltdWFudGhhaT0zNjUxO2Uuc2FyYWFtdGhhaT0zNjM1O2Uuc2FyYWF0aGFpPTM2MzI7ZS5zYXJhZXRoYWk9MzY0ODtlLnNhcmFpaWxlZnR0aGFpPTYzNjIyO2Uuc2FyYWlpdGhhaT0zNjM3O2Uuc2FyYWlsZWZ0dGhhaT02MzYyMTtlLnNhcmFpdGhhaT0zNjM2O2Uuc2FyYW90aGFpPTM2NTA7ZS5zYXJhdWVlbGVmdHRoYWk9NjM2MjQ7ZS5zYXJhdWVldGhhaT0zNjM5O2Uuc2FyYXVlbGVmdHRoYWk9NjM2MjM7ZS5zYXJhdWV0aGFpPTM2Mzg7ZS5zYXJhdXRoYWk9MzY0MDtlLnNhcmF1dXRoYWk9MzY0MTtlLnNib3BvbW9mbz0xMjU2OTtlLnNjYXJvbj0zNTM7ZS5zY2Fyb25kb3RhY2NlbnQ9Nzc4MztlLnNjZWRpbGxhPTM1MTtlLnNjaHdhPTYwMTtlLnNjaHdhY3lyaWxsaWM9MTI0MTtlLnNjaHdhZGllcmVzaXNjeXJpbGxpYz0xMjQzO2Uuc2Nod2Fob29rPTYwMjtlLnNjaXJjbGU9OTQ0MjtlLnNjaXJjdW1mbGV4PTM0OTtlLnNjb21tYWFjY2VudD01Mzc7ZS5zZG90YWNjZW50PTc3Nzc7ZS5zZG90YmVsb3c9Nzc3OTtlLnNkb3RiZWxvd2RvdGFjY2VudD03Nzg1O2Uuc2VhZ3VsbGJlbG93Y21iPTgyODtlLnNlY29uZD04MjQzO2Uuc2Vjb25kdG9uZWNoaW5lc2U9NzE0O2Uuc2VjdGlvbj0xNjc7ZS5zZWVuYXJhYmljPTE1ODc7ZS5zZWVuZmluYWxhcmFiaWM9NjUyMDI7ZS5zZWVuaW5pdGlhbGFyYWJpYz02NTIwMztlLnNlZW5tZWRpYWxhcmFiaWM9NjUyMDQ7ZS5zZWdvbD0xNDYyO2Uuc2Vnb2wxMz0xNDYyO2Uuc2Vnb2wxZj0xNDYyO2Uuc2Vnb2wyYz0xNDYyO2Uuc2Vnb2xoZWJyZXc9MTQ2MjtlLnNlZ29sbmFycm93aGVicmV3PTE0NjI7ZS5zZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ2MjtlLnNlZ29sdGFoZWJyZXc9MTQyNjtlLnNlZ29sd2lkZWhlYnJldz0xNDYyO2Uuc2VoYXJtZW5pYW49MTQwNTtlLnNlaGlyYWdhbmE9MTIzNzk7ZS5zZWthdGFrYW5hPTEyNDc1O2Uuc2VrYXRha2FuYWhhbGZ3aWR0aD02NTQwNjtlLnNlbWljb2xvbj01OTtlLnNlbWljb2xvbmFyYWJpYz0xNTYzO2Uuc2VtaWNvbG9ubW9ub3NwYWNlPTY1MzA3O2Uuc2VtaWNvbG9uc21hbGw9NjUxMDg7ZS5zZW1pdm9pY2VkbWFya2thbmE9MTI0NDQ7ZS5zZW1pdm9pY2VkbWFya2thbmFoYWxmd2lkdGg9NjU0Mzk7ZS5zZW50aXNxdWFyZT0xMzA5MDtlLnNlbnRvc3F1YXJlPTEzMDkxO2Uuc2V2ZW49NTU7ZS5zZXZlbmFyYWJpYz0xNjM5O2Uuc2V2ZW5iZW5nYWxpPTI1NDE7ZS5zZXZlbmNpcmNsZT05MzE4O2Uuc2V2ZW5jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI4O2Uuc2V2ZW5kZXZhPTI0MTM7ZS5zZXZlbmVpZ2h0aHM9ODU0MjtlLnNldmVuZ3VqYXJhdGk9Mjc5NztlLnNldmVuZ3VybXVraGk9MjY2OTtlLnNldmVuaGFja2FyYWJpYz0xNjM5O2Uuc2V2ZW5oYW5nemhvdT0xMjMyNztlLnNldmVuaWRlb2dyYXBoaWNwYXJlbj0xMjgzODtlLnNldmVuaW5mZXJpb3I9ODMyNztlLnNldmVubW9ub3NwYWNlPTY1MzAzO2Uuc2V2ZW5vbGRzdHlsZT02MzI4NztlLnNldmVucGFyZW49OTMzODtlLnNldmVucGVyaW9kPTkzNTg7ZS5zZXZlbnBlcnNpYW49MTc4MztlLnNldmVucm9tYW49ODU2NjtlLnNldmVuc3VwZXJpb3I9ODMxMTtlLnNldmVudGVlbmNpcmNsZT05MzI4O2Uuc2V2ZW50ZWVucGFyZW49OTM0ODtlLnNldmVudGVlbnBlcmlvZD05MzY4O2Uuc2V2ZW50aGFpPTM2NzE7ZS5zZnRoeXBoZW49MTczO2Uuc2hhYXJtZW5pYW49MTM5OTtlLnNoYWJlbmdhbGk9MjQ4NjtlLnNoYWN5cmlsbGljPTEwOTY7ZS5zaGFkZGFhcmFiaWM9MTYxNztlLnNoYWRkYWRhbW1hYXJhYmljPTY0NjA5O2Uuc2hhZGRhZGFtbWF0YW5hcmFiaWM9NjQ2MDY7ZS5zaGFkZGFmYXRoYWFyYWJpYz02NDYwODtlLnNoYWRkYWthc3JhYXJhYmljPTY0NjEwO2Uuc2hhZGRha2FzcmF0YW5hcmFiaWM9NjQ2MDc7ZS5zaGFkZT05NjE4O2Uuc2hhZGVkYXJrPTk2MTk7ZS5zaGFkZWxpZ2h0PTk2MTc7ZS5zaGFkZW1lZGl1bT05NjE4O2Uuc2hhZGV2YT0yMzU4O2Uuc2hhZ3VqYXJhdGk9Mjc0MjtlLnNoYWd1cm11a2hpPTI2MTQ7ZS5zaGFsc2hlbGV0aGVicmV3PTE0Mjc7ZS5zaGJvcG9tb2ZvPTEyNTY1O2Uuc2hjaGFjeXJpbGxpYz0xMDk3O2Uuc2hlZW5hcmFiaWM9MTU4ODtlLnNoZWVuZmluYWxhcmFiaWM9NjUyMDY7ZS5zaGVlbmluaXRpYWxhcmFiaWM9NjUyMDc7ZS5zaGVlbm1lZGlhbGFyYWJpYz02NTIwODtlLnNoZWljb3B0aWM9OTk1O2Uuc2hlcWVsPTgzNjI7ZS5zaGVxZWxoZWJyZXc9ODM2MjtlLnNoZXZhPTE0NTY7ZS5zaGV2YTExNT0xNDU2O2Uuc2hldmExNT0xNDU2O2Uuc2hldmEyMj0xNDU2O2Uuc2hldmEyZT0xNDU2O2Uuc2hldmFoZWJyZXc9MTQ1NjtlLnNoZXZhbmFycm93aGVicmV3PTE0NTY7ZS5zaGV2YXF1YXJ0ZXJoZWJyZXc9MTQ1NjtlLnNoZXZhd2lkZWhlYnJldz0xNDU2O2Uuc2hoYWN5cmlsbGljPTEyMTE7ZS5zaGltYWNvcHRpYz0xMDA1O2Uuc2hpbj0xNTEzO2Uuc2hpbmRhZ2VzaD02NDMyOTtlLnNoaW5kYWdlc2hoZWJyZXc9NjQzMjk7ZS5zaGluZGFnZXNoc2hpbmRvdD02NDMwMDtlLnNoaW5kYWdlc2hzaGluZG90aGVicmV3PTY0MzAwO2Uuc2hpbmRhZ2VzaHNpbmRvdD02NDMwMTtlLnNoaW5kYWdlc2hzaW5kb3RoZWJyZXc9NjQzMDE7ZS5zaGluZG90aGVicmV3PTE0NzM7ZS5zaGluaGVicmV3PTE1MTM7ZS5zaGluc2hpbmRvdD02NDI5ODtlLnNoaW5zaGluZG90aGVicmV3PTY0Mjk4O2Uuc2hpbnNpbmRvdD02NDI5OTtlLnNoaW5zaW5kb3RoZWJyZXc9NjQyOTk7ZS5zaG9vaz02NDI7ZS5zaWdtYT05NjM7ZS5zaWdtYTE9OTYyO2Uuc2lnbWFmaW5hbD05NjI7ZS5zaWdtYWx1bmF0ZXN5bWJvbGdyZWVrPTEwMTA7ZS5zaWhpcmFnYW5hPTEyMzc1O2Uuc2lrYXRha2FuYT0xMjQ3MTtlLnNpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDQ7ZS5zaWx1cWhlYnJldz0xNDY5O2Uuc2lsdXFsZWZ0aGVicmV3PTE0Njk7ZS5zaW1pbGFyPTg3NjQ7ZS5zaW5kb3RoZWJyZXc9MTQ3NDtlLnNpb3NhY2lyY2xla29yZWFuPTEyOTE2O2Uuc2lvc2FwYXJlbmtvcmVhbj0xMjgyMDtlLnNpb3NjaWV1Y2tvcmVhbj0xMjY3MDtlLnNpb3NjaXJjbGVrb3JlYW49MTI5MDI7ZS5zaW9za2l5ZW9ra29yZWFuPTEyNjY2O2Uuc2lvc2tvcmVhbj0xMjYxMztlLnNpb3NuaWV1bmtvcmVhbj0xMjY2NztlLnNpb3NwYXJlbmtvcmVhbj0xMjgwNjtlLnNpb3NwaWV1cGtvcmVhbj0xMjY2OTtlLnNpb3N0aWtldXRrb3JlYW49MTI2Njg7ZS5zaXg9NTQ7ZS5zaXhhcmFiaWM9MTYzODtlLnNpeGJlbmdhbGk9MjU0MDtlLnNpeGNpcmNsZT05MzE3O2Uuc2l4Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNztlLnNpeGRldmE9MjQxMjtlLnNpeGd1amFyYXRpPTI3OTY7ZS5zaXhndXJtdWtoaT0yNjY4O2Uuc2l4aGFja2FyYWJpYz0xNjM4O2Uuc2l4aGFuZ3pob3U9MTIzMjY7ZS5zaXhpZGVvZ3JhcGhpY3BhcmVuPTEyODM3O2Uuc2l4aW5mZXJpb3I9ODMyNjtlLnNpeG1vbm9zcGFjZT02NTMwMjtlLnNpeG9sZHN0eWxlPTYzMjg2O2Uuc2l4cGFyZW49OTMzNztlLnNpeHBlcmlvZD05MzU3O2Uuc2l4cGVyc2lhbj0xNzgyO2Uuc2l4cm9tYW49ODU2NTtlLnNpeHN1cGVyaW9yPTgzMTA7ZS5zaXh0ZWVuY2lyY2xlPTkzMjc7ZS5zaXh0ZWVuY3VycmVuY3lkZW5vbWluYXRvcmJlbmdhbGk9MjU1MztlLnNpeHRlZW5wYXJlbj05MzQ3O2Uuc2l4dGVlbnBlcmlvZD05MzY3O2Uuc2l4dGhhaT0zNjcwO2Uuc2xhc2g9NDc7ZS5zbGFzaG1vbm9zcGFjZT02NTI5NTtlLnNsb25nPTM4MztlLnNsb25nZG90YWNjZW50PTc4MzU7ZS5zbWlsZWZhY2U9OTc4NjtlLnNtb25vc3BhY2U9NjUzNjM7ZS5zb2ZwYXN1cWhlYnJldz0xNDc1O2Uuc29mdGh5cGhlbj0xNzM7ZS5zb2Z0c2lnbmN5cmlsbGljPTExMDA7ZS5zb2hpcmFnYW5hPTEyMzgxO2Uuc29rYXRha2FuYT0xMjQ3NztlLnNva2F0YWthbmFoYWxmd2lkdGg9NjU0MDc7ZS5zb2xpZHVzbG9uZ292ZXJsYXljbWI9ODI0O2Uuc29saWR1c3Nob3J0b3ZlcmxheWNtYj04MjM7ZS5zb3J1c2l0aGFpPTM2MjU7ZS5zb3NhbGF0aGFpPTM2MjQ7ZS5zb3NvdGhhaT0zNTk1O2Uuc29zdWF0aGFpPTM2MjY7ZS5zcGFjZT0zMjtlLnNwYWNlaGFja2FyYWJpYz0zMjtlLnNwYWRlPTk4MjQ7ZS5zcGFkZXN1aXRibGFjaz05ODI0O2Uuc3BhZGVzdWl0d2hpdGU9OTgyODtlLnNwYXJlbj05MzkwO2Uuc3F1YXJlYmVsb3djbWI9ODI3O2Uuc3F1YXJlY2M9MTMyNTI7ZS5zcXVhcmVjbT0xMzIxMztlLnNxdWFyZWRpYWdvbmFsY3Jvc3NoYXRjaGZpbGw9OTY0MTtlLnNxdWFyZWhvcml6b250YWxmaWxsPTk2MzY7ZS5zcXVhcmVrZz0xMzE5OTtlLnNxdWFyZWttPTEzMjE0O2Uuc3F1YXJla21jYXBpdGFsPTEzMjYyO2Uuc3F1YXJlbG49MTMyNjU7ZS5zcXVhcmVsb2c9MTMyNjY7ZS5zcXVhcmVtZz0xMzE5ODtlLnNxdWFyZW1pbD0xMzI2OTtlLnNxdWFyZW1tPTEzMjEyO2Uuc3F1YXJlbXNxdWFyZWQ9MTMyMTc7ZS5zcXVhcmVvcnRob2dvbmFsY3Jvc3NoYXRjaGZpbGw9OTYzODtlLnNxdWFyZXVwcGVybGVmdHRvbG93ZXJyaWdodGZpbGw9OTYzOTtlLnNxdWFyZXVwcGVycmlnaHR0b2xvd2VybGVmdGZpbGw9OTY0MDtlLnNxdWFyZXZlcnRpY2FsZmlsbD05NjM3O2Uuc3F1YXJld2hpdGV3aXRoc21hbGxibGFjaz05NjM1O2Uuc3JzcXVhcmU9MTMyNzU7ZS5zc2FiZW5nYWxpPTI0ODc7ZS5zc2FkZXZhPTIzNTk7ZS5zc2FndWphcmF0aT0yNzQzO2Uuc3NhbmdjaWV1Y2tvcmVhbj0xMjYxNztlLnNzYW5naGlldWhrb3JlYW49MTI2Nzc7ZS5zc2FuZ2lldW5na29yZWFuPTEyNjcyO2Uuc3NhbmdraXllb2trb3JlYW49MTI1OTQ7ZS5zc2FuZ25pZXVua29yZWFuPTEyNjQ1O2Uuc3NhbmdwaWV1cGtvcmVhbj0xMjYxMTtlLnNzYW5nc2lvc2tvcmVhbj0xMjYxNDtlLnNzYW5ndGlrZXV0a29yZWFuPTEyNjAwO2Uuc3N1cGVyaW9yPTYzMjE4O2Uuc3Rlcmxpbmc9MTYzO2Uuc3Rlcmxpbmdtb25vc3BhY2U9NjU1MDU7ZS5zdHJva2Vsb25nb3ZlcmxheWNtYj04MjI7ZS5zdHJva2VzaG9ydG92ZXJsYXljbWI9ODIxO2Uuc3Vic2V0PTg4MzQ7ZS5zdWJzZXRub3RlcXVhbD04ODQyO2Uuc3Vic2V0b3JlcXVhbD04ODM4O2Uuc3VjY2VlZHM9ODgyNztlLnN1Y2h0aGF0PTg3MTU7ZS5zdWhpcmFnYW5hPTEyMzc3O2Uuc3VrYXRha2FuYT0xMjQ3MztlLnN1a2F0YWthbmFoYWxmd2lkdGg9NjU0MDU7ZS5zdWt1bmFyYWJpYz0xNjE4O2Uuc3VtbWF0aW9uPTg3MjE7ZS5zdW49OTc4ODtlLnN1cGVyc2V0PTg4MzU7ZS5zdXBlcnNldG5vdGVxdWFsPTg4NDM7ZS5zdXBlcnNldG9yZXF1YWw9ODgzOTtlLnN2c3F1YXJlPTEzMjc2O2Uuc3lvdXdhZXJhc3F1YXJlPTEzMTgwO2UudD0xMTY7ZS50YWJlbmdhbGk9MjQ2ODtlLnRhY2tkb3duPTg4Njg7ZS50YWNrbGVmdD04ODY3O2UudGFkZXZhPTIzNDA7ZS50YWd1amFyYXRpPTI3MjQ7ZS50YWd1cm11a2hpPTI1OTY7ZS50YWhhcmFiaWM9MTU5MTtlLnRhaGZpbmFsYXJhYmljPTY1MjE4O2UudGFoaW5pdGlhbGFyYWJpYz02NTIxOTtlLnRhaGlyYWdhbmE9MTIzODM7ZS50YWhtZWRpYWxhcmFiaWM9NjUyMjA7ZS50YWlzeW91ZXJhc3F1YXJlPTEzMTgxO2UudGFrYXRha2FuYT0xMjQ3OTtlLnRha2F0YWthbmFoYWxmd2lkdGg9NjU0MDg7ZS50YXR3ZWVsYXJhYmljPTE2MDA7ZS50YXU9OTY0O2UudGF2PTE1MTQ7ZS50YXZkYWdlcz02NDMzMDtlLnRhdmRhZ2VzaD02NDMzMDtlLnRhdmRhZ2VzaGhlYnJldz02NDMzMDtlLnRhdmhlYnJldz0xNTE0O2UudGJhcj0zNTk7ZS50Ym9wb21vZm89MTI1NTQ7ZS50Y2Fyb249MzU3O2UudGNjdXJsPTY4MDtlLnRjZWRpbGxhPTM1NTtlLnRjaGVoYXJhYmljPTE2NzA7ZS50Y2hlaGZpbmFsYXJhYmljPTY0Mzc5O2UudGNoZWhpbml0aWFsYXJhYmljPTY0MzgwO2UudGNoZWhtZWRpYWxhcmFiaWM9NjQzODE7ZS50Y2lyY2xlPTk0NDM7ZS50Y2lyY3VtZmxleGJlbG93PTc3OTM7ZS50Y29tbWFhY2NlbnQ9MzU1O2UudGRpZXJlc2lzPTc4MzE7ZS50ZG90YWNjZW50PTc3ODc7ZS50ZG90YmVsb3c9Nzc4OTtlLnRlY3lyaWxsaWM9MTA5MDtlLnRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NztlLnRlaGFyYWJpYz0xNTc4O2UudGVoZmluYWxhcmFiaWM9NjUxNzQ7ZS50ZWhoYWhpbml0aWFsYXJhYmljPTY0Njc0O2UudGVoaGFoaXNvbGF0ZWRhcmFiaWM9NjQ1MjQ7ZS50ZWhpbml0aWFsYXJhYmljPTY1MTc1O2UudGVoaXJhZ2FuYT0xMjM5MDtlLnRlaGplZW1pbml0aWFsYXJhYmljPTY0NjczO2UudGVoamVlbWlzb2xhdGVkYXJhYmljPTY0NTIzO2UudGVobWFyYnV0YWFyYWJpYz0xNTc3O2UudGVobWFyYnV0YWZpbmFsYXJhYmljPTY1MTcyO2UudGVobWVkaWFsYXJhYmljPTY1MTc2O2UudGVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzY7ZS50ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjY7ZS50ZWhub29uZmluYWxhcmFiaWM9NjQ2Mjc7ZS50ZWthdGFrYW5hPTEyNDg2O2UudGVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMTtlLnRlbGVwaG9uZT04NDgxO2UudGVsZXBob25lYmxhY2s9OTc0MjtlLnRlbGlzaGFnZWRvbGFoZWJyZXc9MTQ0MDtlLnRlbGlzaGFxZXRhbmFoZWJyZXc9MTQ0OTtlLnRlbmNpcmNsZT05MzIxO2UudGVuaWRlb2dyYXBoaWNwYXJlbj0xMjg0MTtlLnRlbnBhcmVuPTkzNDE7ZS50ZW5wZXJpb2Q9OTM2MTtlLnRlbnJvbWFuPTg1Njk7ZS50ZXNoPTY3OTtlLnRldD0xNDk2O2UudGV0ZGFnZXNoPTY0MzEyO2UudGV0ZGFnZXNoaGVicmV3PTY0MzEyO2UudGV0aGVicmV3PTE0OTY7ZS50ZXRzZWN5cmlsbGljPTEyMDU7ZS50ZXZpcmhlYnJldz0xNDM1O2UudGV2aXJsZWZ0aGVicmV3PTE0MzU7ZS50aGFiZW5nYWxpPTI0Njk7ZS50aGFkZXZhPTIzNDE7ZS50aGFndWphcmF0aT0yNzI1O2UudGhhZ3VybXVraGk9MjU5NztlLnRoYWxhcmFiaWM9MTU4NDtlLnRoYWxmaW5hbGFyYWJpYz02NTE5NjtlLnRoYW50aGFraGF0bG93bGVmdHRoYWk9NjM2NDA7ZS50aGFudGhha2hhdGxvd3JpZ2h0dGhhaT02MzYzOTtlLnRoYW50aGFraGF0dGhhaT0zNjYwO2UudGhhbnRoYWtoYXR1cHBlcmxlZnR0aGFpPTYzNjM4O2UudGhlaGFyYWJpYz0xNTc5O2UudGhlaGZpbmFsYXJhYmljPTY1MTc4O2UudGhlaGluaXRpYWxhcmFiaWM9NjUxNzk7ZS50aGVobWVkaWFsYXJhYmljPTY1MTgwO2UudGhlcmVleGlzdHM9ODcwNztlLnRoZXJlZm9yZT04NzU2O2UudGhldGE9OTUyO2UudGhldGExPTk3NztlLnRoZXRhc3ltYm9sZ3JlZWs9OTc3O2UudGhpZXV0aGFjaXJjbGVrb3JlYW49MTI5MjE7ZS50aGlldXRoYXBhcmVua29yZWFuPTEyODI1O2UudGhpZXV0aGNpcmNsZWtvcmVhbj0xMjkwNztlLnRoaWV1dGhrb3JlYW49MTI2MjA7ZS50aGlldXRocGFyZW5rb3JlYW49MTI4MTE7ZS50aGlydGVlbmNpcmNsZT05MzI0O2UudGhpcnRlZW5wYXJlbj05MzQ0O2UudGhpcnRlZW5wZXJpb2Q9OTM2NDtlLnRob25hbmdtb250aG90aGFpPTM2MDE7ZS50aG9vaz00Mjk7ZS50aG9waHV0aGFvdGhhaT0zNjAyO2UudGhvcm49MjU0O2UudGhvdGhhaGFudGhhaT0zNjA3O2UudGhvdGhhbnRoYWk9MzYwMDtlLnRob3Rob25ndGhhaT0zNjA4O2UudGhvdGh1bmd0aGFpPTM2MDY7ZS50aG91c2FuZGN5cmlsbGljPTExNTQ7ZS50aG91c2FuZHNzZXBhcmF0b3JhcmFiaWM9MTY0NDtlLnRob3VzYW5kc3NlcGFyYXRvcnBlcnNpYW49MTY0NDtlLnRocmVlPTUxO2UudGhyZWVhcmFiaWM9MTYzNTtlLnRocmVlYmVuZ2FsaT0yNTM3O2UudGhyZWVjaXJjbGU9OTMxNDtlLnRocmVlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNDtlLnRocmVlZGV2YT0yNDA5O2UudGhyZWVlaWdodGhzPTg1NDA7ZS50aHJlZWd1amFyYXRpPTI3OTM7ZS50aHJlZWd1cm11a2hpPTI2NjU7ZS50aHJlZWhhY2thcmFiaWM9MTYzNTtlLnRocmVlaGFuZ3pob3U9MTIzMjM7ZS50aHJlZWlkZW9ncmFwaGljcGFyZW49MTI4MzQ7ZS50aHJlZWluZmVyaW9yPTgzMjM7ZS50aHJlZW1vbm9zcGFjZT02NTI5OTtlLnRocmVlbnVtZXJhdG9yYmVuZ2FsaT0yNTUwO2UudGhyZWVvbGRzdHlsZT02MzI4MztlLnRocmVlcGFyZW49OTMzNDtlLnRocmVlcGVyaW9kPTkzNTQ7ZS50aHJlZXBlcnNpYW49MTc3OTtlLnRocmVlcXVhcnRlcnM9MTkwO2UudGhyZWVxdWFydGVyc2VtZGFzaD02MzE5ODtlLnRocmVlcm9tYW49ODU2MjtlLnRocmVlc3VwZXJpb3I9MTc5O2UudGhyZWV0aGFpPTM2Njc7ZS50aHpzcXVhcmU9MTMyMDQ7ZS50aWhpcmFnYW5hPTEyMzg1O2UudGlrYXRha2FuYT0xMjQ4MTtlLnRpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDk7ZS50aWtldXRhY2lyY2xla29yZWFuPTEyOTEyO2UudGlrZXV0YXBhcmVua29yZWFuPTEyODE2O2UudGlrZXV0Y2lyY2xla29yZWFuPTEyODk4O2UudGlrZXV0a29yZWFuPTEyNTk5O2UudGlrZXV0cGFyZW5rb3JlYW49MTI4MDI7ZS50aWxkZT03MzI7ZS50aWxkZWJlbG93Y21iPTgxNjtlLnRpbGRlY21iPTc3MTtlLnRpbGRlY29tYj03NzE7ZS50aWxkZWRvdWJsZWNtYj04NjQ7ZS50aWxkZW9wZXJhdG9yPTg3NjQ7ZS50aWxkZW92ZXJsYXljbWI9ODIwO2UudGlsZGV2ZXJ0aWNhbGNtYj04MzA7ZS50aW1lc2NpcmNsZT04ODU1O2UudGlwZWhhaGVicmV3PTE0MzA7ZS50aXBlaGFsZWZ0aGVicmV3PTE0MzA7ZS50aXBwaWd1cm11a2hpPTI2NzI7ZS50aXRsb2N5cmlsbGljY21iPTExNTU7ZS50aXduYXJtZW5pYW49MTQwNztlLnRsaW5lYmVsb3c9Nzc5MTtlLnRtb25vc3BhY2U9NjUzNjQ7ZS50b2FybWVuaWFuPTEzODU7ZS50b2hpcmFnYW5hPTEyMzkyO2UudG9rYXRha2FuYT0xMjQ4ODtlLnRva2F0YWthbmFoYWxmd2lkdGg9NjU0MTI7ZS50b25lYmFyZXh0cmFoaWdobW9kPTc0MTtlLnRvbmViYXJleHRyYWxvd21vZD03NDU7ZS50b25lYmFyaGlnaG1vZD03NDI7ZS50b25lYmFybG93bW9kPTc0NDtlLnRvbmViYXJtaWRtb2Q9NzQzO2UudG9uZWZpdmU9NDQ1O2UudG9uZXNpeD0zODk7ZS50b25ldHdvPTQyNDtlLnRvbm9zPTkwMDtlLnRvbnNxdWFyZT0xMzA5NTtlLnRvcGF0YWt0aGFpPTM1OTk7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMDg7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnRzbWFsbD02NTExNztlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgxO2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodD0xMjMwOTtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHRzbWFsbD02NTExODtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4MjtlLnRvdGFvdGhhaT0zNjA1O2UudHBhbGF0YWxob29rPTQyNztlLnRwYXJlbj05MzkxO2UudHJhZGVtYXJrPTg0ODI7ZS50cmFkZW1hcmtzYW5zPTYzNzIyO2UudHJhZGVtYXJrc2VyaWY9NjMxOTU7ZS50cmV0cm9mbGV4aG9vaz02NDg7ZS50cmlhZ2RuPTk2NjA7ZS50cmlhZ2xmPTk2Njg7ZS50cmlhZ3J0PTk2NTg7ZS50cmlhZ3VwPTk2NTA7ZS50cz02Nzg7ZS50c2FkaT0xNTEwO2UudHNhZGlkYWdlc2g9NjQzMjY7ZS50c2FkaWRhZ2VzaGhlYnJldz02NDMyNjtlLnRzYWRpaGVicmV3PTE1MTA7ZS50c2VjeXJpbGxpYz0xMDk0O2UudHNlcmU9MTQ2MTtlLnRzZXJlMTI9MTQ2MTtlLnRzZXJlMWU9MTQ2MTtlLnRzZXJlMmI9MTQ2MTtlLnRzZXJlaGVicmV3PTE0NjE7ZS50c2VyZW5hcnJvd2hlYnJldz0xNDYxO2UudHNlcmVxdWFydGVyaGVicmV3PTE0NjE7ZS50c2VyZXdpZGVoZWJyZXc9MTQ2MTtlLnRzaGVjeXJpbGxpYz0xMTE1O2UudHN1cGVyaW9yPTYzMjE5O2UudHRhYmVuZ2FsaT0yNDYzO2UudHRhZGV2YT0yMzM1O2UudHRhZ3VqYXJhdGk9MjcxOTtlLnR0YWd1cm11a2hpPTI1OTE7ZS50dGVoYXJhYmljPTE2NTc7ZS50dGVoZmluYWxhcmFiaWM9NjQzNTk7ZS50dGVoaW5pdGlhbGFyYWJpYz02NDM2MDtlLnR0ZWhtZWRpYWxhcmFiaWM9NjQzNjE7ZS50dGhhYmVuZ2FsaT0yNDY0O2UudHRoYWRldmE9MjMzNjtlLnR0aGFndWphcmF0aT0yNzIwO2UudHRoYWd1cm11a2hpPTI1OTI7ZS50dHVybmVkPTY0NztlLnR1aGlyYWdhbmE9MTIzODg7ZS50dWthdGFrYW5hPTEyNDg0O2UudHVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMDtlLnR1c21hbGxoaXJhZ2FuYT0xMjM4NztlLnR1c21hbGxrYXRha2FuYT0xMjQ4MztlLnR1c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM5MTtlLnR3ZWx2ZWNpcmNsZT05MzIzO2UudHdlbHZlcGFyZW49OTM0MztlLnR3ZWx2ZXBlcmlvZD05MzYzO2UudHdlbHZlcm9tYW49ODU3MTtlLnR3ZW50eWNpcmNsZT05MzMxO2UudHdlbnR5aGFuZ3pob3U9MjEzMTY7ZS50d2VudHlwYXJlbj05MzUxO2UudHdlbnR5cGVyaW9kPTkzNzE7ZS50d289NTA7ZS50d29hcmFiaWM9MTYzNDtlLnR3b2JlbmdhbGk9MjUzNjtlLnR3b2NpcmNsZT05MzEzO2UudHdvY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMztlLnR3b2RldmE9MjQwODtlLnR3b2RvdGVubGVhZGVyPTgyMjk7ZS50d29kb3RsZWFkZXI9ODIyOTtlLnR3b2RvdGxlYWRlcnZlcnRpY2FsPTY1MDcyO2UudHdvZ3VqYXJhdGk9Mjc5MjtlLnR3b2d1cm11a2hpPTI2NjQ7ZS50d29oYWNrYXJhYmljPTE2MzQ7ZS50d29oYW5nemhvdT0xMjMyMjtlLnR3b2lkZW9ncmFwaGljcGFyZW49MTI4MzM7ZS50d29pbmZlcmlvcj04MzIyO2UudHdvbW9ub3NwYWNlPTY1Mjk4O2UudHdvbnVtZXJhdG9yYmVuZ2FsaT0yNTQ5O2UudHdvb2xkc3R5bGU9NjMyODI7ZS50d29wYXJlbj05MzMzO2UudHdvcGVyaW9kPTkzNTM7ZS50d29wZXJzaWFuPTE3Nzg7ZS50d29yb21hbj04NTYxO2UudHdvc3Ryb2tlPTQ0MztlLnR3b3N1cGVyaW9yPTE3ODtlLnR3b3RoYWk9MzY2NjtlLnR3b3RoaXJkcz04NTMyO2UudT0xMTc7ZS51YWN1dGU9MjUwO2UudWJhcj02NDk7ZS51YmVuZ2FsaT0yNDQxO2UudWJvcG9tb2ZvPTEyNTg0O2UudWJyZXZlPTM2NTtlLnVjYXJvbj00Njg7ZS51Y2lyY2xlPTk0NDQ7ZS51Y2lyY3VtZmxleD0yNTE7ZS51Y2lyY3VtZmxleGJlbG93PTc3OTk7ZS51Y3lyaWxsaWM9MTA5MTtlLnVkYXR0YWRldmE9MjM4NTtlLnVkYmxhY3V0ZT0zNjk7ZS51ZGJsZ3JhdmU9NTMzO2UudWRldmE9MjMxMztlLnVkaWVyZXNpcz0yNTI7ZS51ZGllcmVzaXNhY3V0ZT00NzI7ZS51ZGllcmVzaXNiZWxvdz03Nzk1O2UudWRpZXJlc2lzY2Fyb249NDc0O2UudWRpZXJlc2lzY3lyaWxsaWM9MTI2NTtlLnVkaWVyZXNpc2dyYXZlPTQ3NjtlLnVkaWVyZXNpc21hY3Jvbj00NzA7ZS51ZG90YmVsb3c9NzkwOTtlLnVncmF2ZT0yNDk7ZS51Z3VqYXJhdGk9MjY5NztlLnVndXJtdWtoaT0yNTY5O2UudWhpcmFnYW5hPTEyMzU4O2UudWhvb2thYm92ZT03OTExO2UudWhvcm49NDMyO2UudWhvcm5hY3V0ZT03OTEzO2UudWhvcm5kb3RiZWxvdz03OTIxO2UudWhvcm5ncmF2ZT03OTE1O2UudWhvcm5ob29rYWJvdmU9NzkxNztlLnVob3JudGlsZGU9NzkxOTtlLnVodW5nYXJ1bWxhdXQ9MzY5O2UudWh1bmdhcnVtbGF1dGN5cmlsbGljPTEyNjc7ZS51aW52ZXJ0ZWRicmV2ZT01MzU7ZS51a2F0YWthbmE9MTI0NTQ7ZS51a2F0YWthbmFoYWxmd2lkdGg9NjUzOTU7ZS51a2N5cmlsbGljPTExNDU7ZS51a29yZWFuPTEyNjM2O2UudW1hY3Jvbj0zNjM7ZS51bWFjcm9uY3lyaWxsaWM9MTI2MztlLnVtYWNyb25kaWVyZXNpcz03ODAzO2UudW1hdHJhZ3VybXVraGk9MjYyNTtlLnVtb25vc3BhY2U9NjUzNjU7ZS51bmRlcnNjb3JlPTk1O2UudW5kZXJzY29yZWRibD04MjE1O2UudW5kZXJzY29yZW1vbm9zcGFjZT02NTM0MztlLnVuZGVyc2NvcmV2ZXJ0aWNhbD02NTA3NTtlLnVuZGVyc2NvcmV3YXZ5PTY1MTAzO2UudW5pb249ODc0NjtlLnVuaXZlcnNhbD04NzA0O2UudW9nb25laz0zNzE7ZS51cGFyZW49OTM5MjtlLnVwYmxvY2s9OTYwMDtlLnVwcGVyZG90aGVicmV3PTE0NzY7ZS51cHNpbG9uPTk2NTtlLnVwc2lsb25kaWVyZXNpcz05NzE7ZS51cHNpbG9uZGllcmVzaXN0b25vcz05NDQ7ZS51cHNpbG9ubGF0aW49NjUwO2UudXBzaWxvbnRvbm9zPTk3MztlLnVwdGFja2JlbG93Y21iPTc5NztlLnVwdGFja21vZD03MjQ7ZS51cmFndXJtdWtoaT0yNjc1O2UudXJpbmc9MzY3O2UudXNob3J0Y3lyaWxsaWM9MTExODtlLnVzbWFsbGhpcmFnYW5hPTEyMzU3O2UudXNtYWxsa2F0YWthbmE9MTI0NTM7ZS51c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NTtlLnVzdHJhaWdodGN5cmlsbGljPTExOTk7ZS51c3RyYWlnaHRzdHJva2VjeXJpbGxpYz0xMjAxO2UudXRpbGRlPTM2MTtlLnV0aWxkZWFjdXRlPTc4MDE7ZS51dGlsZGViZWxvdz03Nzk3O2UudXViZW5nYWxpPTI0NDI7ZS51dWRldmE9MjMxNDtlLnV1Z3VqYXJhdGk9MjY5ODtlLnV1Z3VybXVraGk9MjU3MDtlLnV1bWF0cmFndXJtdWtoaT0yNjI2O2UudXV2b3dlbHNpZ25iZW5nYWxpPTI0OTg7ZS51dXZvd2Vsc2lnbmRldmE9MjM3MDtlLnV1dm93ZWxzaWduZ3VqYXJhdGk9Mjc1NDtlLnV2b3dlbHNpZ25iZW5nYWxpPTI0OTc7ZS51dm93ZWxzaWduZGV2YT0yMzY5O2UudXZvd2Vsc2lnbmd1amFyYXRpPTI3NTM7ZS52PTExODtlLnZhZGV2YT0yMzU3O2UudmFndWphcmF0aT0yNzQxO2UudmFndXJtdWtoaT0yNjEzO2UudmFrYXRha2FuYT0xMjUzNTtlLnZhdj0xNDkzO2UudmF2ZGFnZXNoPTY0MzA5O2UudmF2ZGFnZXNoNjU9NjQzMDk7ZS52YXZkYWdlc2hoZWJyZXc9NjQzMDk7ZS52YXZoZWJyZXc9MTQ5MztlLnZhdmhvbGFtPTY0MzMxO2UudmF2aG9sYW1oZWJyZXc9NjQzMzE7ZS52YXZ2YXZoZWJyZXc9MTUyMDtlLnZhdnlvZGhlYnJldz0xNTIxO2UudmNpcmNsZT05NDQ1O2UudmRvdGJlbG93PTc4MDc7ZS52ZWN5cmlsbGljPTEwNzQ7ZS52ZWhhcmFiaWM9MTcwMDtlLnZlaGZpbmFsYXJhYmljPTY0MzYzO2UudmVoaW5pdGlhbGFyYWJpYz02NDM2NDtlLnZlaG1lZGlhbGFyYWJpYz02NDM2NTtlLnZla2F0YWthbmE9MTI1Mzc7ZS52ZW51cz05NzkyO2UudmVydGljYWxiYXI9MTI0O2UudmVydGljYWxsaW5lYWJvdmVjbWI9NzgxO2UudmVydGljYWxsaW5lYmVsb3djbWI9ODA5O2UudmVydGljYWxsaW5lbG93bW9kPTcxNjtlLnZlcnRpY2FsbGluZW1vZD03MTI7ZS52ZXdhcm1lbmlhbj0xNDA2O2Uudmhvb2s9NjUxO2UudmlrYXRha2FuYT0xMjUzNjtlLnZpcmFtYWJlbmdhbGk9MjUwOTtlLnZpcmFtYWRldmE9MjM4MTtlLnZpcmFtYWd1amFyYXRpPTI3NjU7ZS52aXNhcmdhYmVuZ2FsaT0yNDM1O2UudmlzYXJnYWRldmE9MjMwNztlLnZpc2FyZ2FndWphcmF0aT0yNjkxO2Uudm1vbm9zcGFjZT02NTM2NjtlLnZvYXJtZW5pYW49MTQwMDtlLnZvaWNlZGl0ZXJhdGlvbmhpcmFnYW5hPTEyNDQ2O2Uudm9pY2VkaXRlcmF0aW9ua2F0YWthbmE9MTI1NDI7ZS52b2ljZWRtYXJra2FuYT0xMjQ0MztlLnZvaWNlZG1hcmtrYW5haGFsZndpZHRoPTY1NDM4O2Uudm9rYXRha2FuYT0xMjUzODtlLnZwYXJlbj05MzkzO2UudnRpbGRlPTc4MDU7ZS52dHVybmVkPTY1MjtlLnZ1aGlyYWdhbmE9MTI0MzY7ZS52dWthdGFrYW5hPTEyNTMyO2Uudz0xMTk7ZS53YWN1dGU9NzgxMTtlLndhZWtvcmVhbj0xMjYzMztlLndhaGlyYWdhbmE9MTI0MzE7ZS53YWthdGFrYW5hPTEyNTI3O2Uud2FrYXRha2FuYWhhbGZ3aWR0aD02NTQzNjtlLndha29yZWFuPTEyNjMyO2Uud2FzbWFsbGhpcmFnYW5hPTEyNDMwO2Uud2FzbWFsbGthdGFrYW5hPTEyNTI2O2Uud2F0dG9zcXVhcmU9MTMxNDM7ZS53YXZlZGFzaD0xMjMxNjtlLndhdnl1bmRlcnNjb3JldmVydGljYWw9NjUwNzY7ZS53YXdhcmFiaWM9MTYwODtlLndhd2ZpbmFsYXJhYmljPTY1MjYyO2Uud2F3aGFtemFhYm92ZWFyYWJpYz0xNTcyO2Uud2F3aGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MTU4O2Uud2JzcXVhcmU9MTMyNzc7ZS53Y2lyY2xlPTk0NDY7ZS53Y2lyY3VtZmxleD0zNzM7ZS53ZGllcmVzaXM9NzgxMztlLndkb3RhY2NlbnQ9NzgxNTtlLndkb3RiZWxvdz03ODE3O2Uud2VoaXJhZ2FuYT0xMjQzMztlLndlaWVyc3RyYXNzPTg0NzI7ZS53ZWthdGFrYW5hPTEyNTI5O2Uud2Vrb3JlYW49MTI2Mzg7ZS53ZW9rb3JlYW49MTI2Mzc7ZS53Z3JhdmU9NzgwOTtlLndoaXRlYnVsbGV0PTk3MDI7ZS53aGl0ZWNpcmNsZT05Njc1O2Uud2hpdGVjaXJjbGVpbnZlcnNlPTk2ODk7ZS53aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAyO2Uud2hpdGVjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDkxO2Uud2hpdGVjb3JuZXJicmFja2V0cmlnaHQ9MTIzMDM7ZS53aGl0ZWNvcm5lcmJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDkyO2Uud2hpdGVkaWFtb25kPTk2NzE7ZS53aGl0ZWRpYW1vbmRjb250YWluaW5nYmxhY2tzbWFsbGRpYW1vbmQ9OTY3MjtlLndoaXRlZG93bnBvaW50aW5nc21hbGx0cmlhbmdsZT05NjYzO2Uud2hpdGVkb3ducG9pbnRpbmd0cmlhbmdsZT05NjYxO2Uud2hpdGVsZWZ0cG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2Njc7ZS53aGl0ZWxlZnRwb2ludGluZ3RyaWFuZ2xlPTk2NjU7ZS53aGl0ZWxlbnRpY3VsYXJicmFja2V0bGVmdD0xMjMxMDtlLndoaXRlbGVudGljdWxhcmJyYWNrZXRyaWdodD0xMjMxMTtlLndoaXRlcmlnaHRwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1NztlLndoaXRlcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTU7ZS53aGl0ZXNtYWxsc3F1YXJlPTk2NDM7ZS53aGl0ZXNtaWxpbmdmYWNlPTk3ODY7ZS53aGl0ZXNxdWFyZT05NjMzO2Uud2hpdGVzdGFyPTk3MzQ7ZS53aGl0ZXRlbGVwaG9uZT05NzQzO2Uud2hpdGV0b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMTI7ZS53aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHQ9MTIzMTM7ZS53aGl0ZXVwcG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTM7ZS53aGl0ZXVwcG9pbnRpbmd0cmlhbmdsZT05NjUxO2Uud2loaXJhZ2FuYT0xMjQzMjtlLndpa2F0YWthbmE9MTI1Mjg7ZS53aWtvcmVhbj0xMjYzOTtlLndtb25vc3BhY2U9NjUzNjc7ZS53b2hpcmFnYW5hPTEyNDM0O2Uud29rYXRha2FuYT0xMjUzMDtlLndva2F0YWthbmFoYWxmd2lkdGg9NjUzODI7ZS53b249ODM2MTtlLndvbm1vbm9zcGFjZT02NTUxMDtlLndvd2FlbnRoYWk9MzYyMztlLndwYXJlbj05Mzk0O2Uud3Jpbmc9NzgzMjtlLndzdXBlcmlvcj02OTU7ZS53dHVybmVkPTY1MztlLnd5bm49NDQ3O2UueD0xMjA7ZS54YWJvdmVjbWI9ODI5O2UueGJvcG9tb2ZvPTEyNTYyO2UueGNpcmNsZT05NDQ3O2UueGRpZXJlc2lzPTc4MjE7ZS54ZG90YWNjZW50PTc4MTk7ZS54ZWhhcm1lbmlhbj0xMzg5O2UueGk9OTU4O2UueG1vbm9zcGFjZT02NTM2ODtlLnhwYXJlbj05Mzk1O2UueHN1cGVyaW9yPTczOTtlLnk9MTIxO2UueWFhZG9zcXVhcmU9MTMxMzQ7ZS55YWJlbmdhbGk9MjQ3OTtlLnlhY3V0ZT0yNTM7ZS55YWRldmE9MjM1MTtlLnlhZWtvcmVhbj0xMjYyNjtlLnlhZ3VqYXJhdGk9MjczNTtlLnlhZ3VybXVraGk9MjYwNztlLnlhaGlyYWdhbmE9MTI0MjA7ZS55YWthdGFrYW5hPTEyNTE2O2UueWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyODtlLnlha29yZWFuPTEyNjI1O2UueWFtYWtrYW50aGFpPTM2NjI7ZS55YXNtYWxsaGlyYWdhbmE9MTI0MTk7ZS55YXNtYWxsa2F0YWthbmE9MTI1MTU7ZS55YXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODg7ZS55YXRjeXJpbGxpYz0xMTIzO2UueWNpcmNsZT05NDQ4O2UueWNpcmN1bWZsZXg9Mzc1O2UueWRpZXJlc2lzPTI1NTtlLnlkb3RhY2NlbnQ9NzgyMztlLnlkb3RiZWxvdz03OTI1O2UueWVoYXJhYmljPTE2MTA7ZS55ZWhiYXJyZWVhcmFiaWM9MTc0NjtlLnllaGJhcnJlZWZpbmFsYXJhYmljPTY0NDMxO2UueWVoZmluYWxhcmFiaWM9NjUyNjY7ZS55ZWhoYW16YWFib3ZlYXJhYmljPTE1NzQ7ZS55ZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNjI7ZS55ZWhoYW16YWFib3ZlaW5pdGlhbGFyYWJpYz02NTE2MztlLnllaGhhbXphYWJvdmVtZWRpYWxhcmFiaWM9NjUxNjQ7ZS55ZWhpbml0aWFsYXJhYmljPTY1MjY3O2UueWVobWVkaWFsYXJhYmljPTY1MjY4O2UueWVobWVlbWluaXRpYWxhcmFiaWM9NjQ3MzM7ZS55ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ2MDA7ZS55ZWhub29uZmluYWxhcmFiaWM9NjQ2NjA7ZS55ZWh0aHJlZWRvdHNiZWxvd2FyYWJpYz0xNzQ1O2UueWVrb3JlYW49MTI2MzA7ZS55ZW49MTY1O2UueWVubW9ub3NwYWNlPTY1NTA5O2UueWVva29yZWFuPTEyNjI5O2UueWVvcmluaGlldWhrb3JlYW49MTI2Nzg7ZS55ZXJhaGJlbnlvbW9oZWJyZXc9MTQ1MDtlLnllcmFoYmVueW9tb2xlZnRoZWJyZXc9MTQ1MDtlLnllcmljeXJpbGxpYz0xMDk5O2UueWVydWRpZXJlc2lzY3lyaWxsaWM9MTI3MztlLnllc2lldW5na29yZWFuPTEyNjczO2UueWVzaWV1bmdwYW5zaW9za29yZWFuPTEyNjc1O2UueWVzaWV1bmdzaW9za29yZWFuPTEyNjc0O2UueWV0aXZoZWJyZXc9MTQzNDtlLnlncmF2ZT03OTIzO2UueWhvb2s9NDM2O2UueWhvb2thYm92ZT03OTI3O2UueWlhcm1lbmlhbj0xMzk3O2UueWljeXJpbGxpYz0xMTExO2UueWlrb3JlYW49MTI2NDI7ZS55aW55YW5nPTk3NzU7ZS55aXduYXJtZW5pYW49MTQxMDtlLnltb25vc3BhY2U9NjUzNjk7ZS55b2Q9MTQ5NztlLnlvZGRhZ2VzaD02NDMxMztlLnlvZGRhZ2VzaGhlYnJldz02NDMxMztlLnlvZGhlYnJldz0xNDk3O2UueW9keW9kaGVicmV3PTE1MjI7ZS55b2R5b2RwYXRhaGhlYnJldz02NDI4NztlLnlvaGlyYWdhbmE9MTI0MjQ7ZS55b2lrb3JlYW49MTI2ODE7ZS55b2thdGFrYW5hPTEyNTIwO2UueW9rYXRha2FuYWhhbGZ3aWR0aD02NTQzMDtlLnlva29yZWFuPTEyNjM1O2UueW9zbWFsbGhpcmFnYW5hPTEyNDIzO2UueW9zbWFsbGthdGFrYW5hPTEyNTE5O2UueW9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzkwO2UueW90Z3JlZWs9MTAxMTtlLnlveWFla29yZWFuPTEyNjgwO2UueW95YWtvcmVhbj0xMjY3OTtlLnlveWFrdGhhaT0zNjE4O2UueW95aW5ndGhhaT0zNTk3O2UueXBhcmVuPTkzOTY7ZS55cG9nZWdyYW1tZW5pPTg5MDtlLnlwb2dlZ3JhbW1lbmlncmVla2NtYj04Mzc7ZS55cj00MjI7ZS55cmluZz03ODMzO2UueXN1cGVyaW9yPTY5NjtlLnl0aWxkZT03OTI5O2UueXR1cm5lZD02NTQ7ZS55dWhpcmFnYW5hPTEyNDIyO2UueXVpa29yZWFuPTEyNjg0O2UueXVrYXRha2FuYT0xMjUxODtlLnl1a2F0YWthbmFoYWxmd2lkdGg9NjU0Mjk7ZS55dWtvcmVhbj0xMjY0MDtlLnl1c2JpZ2N5cmlsbGljPTExMzE7ZS55dXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzM7ZS55dXNsaXR0bGVjeXJpbGxpYz0xMTI3O2UueXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI5O2UueXVzbWFsbGhpcmFnYW5hPTEyNDIxO2UueXVzbWFsbGthdGFrYW5hPTEyNTE3O2UueXVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg5O2UueXV5ZWtvcmVhbj0xMjY4MztlLnl1eWVva29yZWFuPTEyNjgyO2UueXlhYmVuZ2FsaT0yNTI3O2UueXlhZGV2YT0yMzk5O2Uuej0xMjI7ZS56YWFybWVuaWFuPTEzODI7ZS56YWN1dGU9Mzc4O2UuemFkZXZhPTIzOTU7ZS56YWd1cm11a2hpPTI2NTE7ZS56YWhhcmFiaWM9MTU5MjtlLnphaGZpbmFsYXJhYmljPTY1MjIyO2UuemFoaW5pdGlhbGFyYWJpYz02NTIyMztlLnphaGlyYWdhbmE9MTIzNzQ7ZS56YWhtZWRpYWxhcmFiaWM9NjUyMjQ7ZS56YWluYXJhYmljPTE1ODY7ZS56YWluZmluYWxhcmFiaWM9NjUyMDA7ZS56YWthdGFrYW5hPTEyNDcwO2UuemFxZWZnYWRvbGhlYnJldz0xNDI5O2UuemFxZWZxYXRhbmhlYnJldz0xNDI4O2UuemFycWFoZWJyZXc9MTQzMjtlLnpheWluPTE0OTQ7ZS56YXlpbmRhZ2VzaD02NDMxMDtlLnpheWluZGFnZXNoaGVicmV3PTY0MzEwO2UuemF5aW5oZWJyZXc9MTQ5NDtlLnpib3BvbW9mbz0xMjU2NztlLnpjYXJvbj0zODI7ZS56Y2lyY2xlPTk0NDk7ZS56Y2lyY3VtZmxleD03ODI1O2UuemN1cmw9NjU3O2UuemRvdD0zODA7ZS56ZG90YWNjZW50PTM4MDtlLnpkb3RiZWxvdz03ODI3O2UuemVjeXJpbGxpYz0xMDc5O2UuemVkZXNjZW5kZXJjeXJpbGxpYz0xMTc3O2UuemVkaWVyZXNpc2N5cmlsbGljPTEyNDc7ZS56ZWhpcmFnYW5hPTEyMzgwO2UuemVrYXRha2FuYT0xMjQ3NjtlLnplcm89NDg7ZS56ZXJvYXJhYmljPTE2MzI7ZS56ZXJvYmVuZ2FsaT0yNTM0O2UuemVyb2RldmE9MjQwNjtlLnplcm9ndWphcmF0aT0yNzkwO2UuemVyb2d1cm11a2hpPTI2NjI7ZS56ZXJvaGFja2FyYWJpYz0xNjMyO2UuemVyb2luZmVyaW9yPTgzMjA7ZS56ZXJvbW9ub3NwYWNlPTY1Mjk2O2UuemVyb29sZHN0eWxlPTYzMjgwO2UuemVyb3BlcnNpYW49MTc3NjtlLnplcm9zdXBlcmlvcj04MzA0O2UuemVyb3RoYWk9MzY2NDtlLnplcm93aWR0aGpvaW5lcj02NTI3OTtlLnplcm93aWR0aG5vbmpvaW5lcj04MjA0O2UuemVyb3dpZHRoc3BhY2U9ODIwMztlLnpldGE9OTUwO2Uuemhib3BvbW9mbz0xMjU2MztlLnpoZWFybWVuaWFuPTEzODY7ZS56aGVicmV2ZWN5cmlsbGljPTEyMTg7ZS56aGVjeXJpbGxpYz0xMDc4O2UuemhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NTtlLnpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NTtlLnppaGlyYWdhbmE9MTIzNzY7ZS56aWthdGFrYW5hPTEyNDcyO2Uuemlub3JoZWJyZXc9MTQ1NDtlLnpsaW5lYmVsb3c9NzgyOTtlLnptb25vc3BhY2U9NjUzNzA7ZS56b2hpcmFnYW5hPTEyMzgyO2Uuem9rYXRha2FuYT0xMjQ3ODtlLnpwYXJlbj05Mzk3O2UuenJldHJvZmxleGhvb2s9NjU2O2UuenN0cm9rZT00Mzg7ZS56dWhpcmFnYW5hPTEyMzc4O2UuenVrYXRha2FuYT0xMjQ3NDtlWyIubm90ZGVmIl09MDtlLmFuZ2JyYWNrZXRsZWZ0YmlnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZz05MDAxO2UuYW5nYnJhY2tldGxlZnRiaWdnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZ2c9OTAwMTtlLmFuZ2JyYWNrZXRyaWdodEJpZz05MDAyO2UuYW5nYnJhY2tldHJpZ2h0YmlnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRCaWdnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRiaWdnPTkwMDI7ZS5hcnJvd2hvb2tsZWZ0PTg2MTg7ZS5hcnJvd2hvb2tyaWdodD04NjE3O2UuYXJyb3dsZWZ0dG9waGFsZj04NjM2O2UuYXJyb3dsZWZ0Ym90aGFsZj04NjM3O2UuYXJyb3dub3J0aGVhc3Q9ODU5OTtlLmFycm93bm9ydGh3ZXN0PTg1OTg7ZS5hcnJvd3JpZ2h0dG9waGFsZj04NjQwO2UuYXJyb3dyaWdodGJvdGhhbGY9ODY0MTtlLmFycm93c291dGhlYXN0PTg2MDA7ZS5hcnJvd3NvdXRod2VzdD04NjAxO2UuYmFja3NsYXNoYmlnPTg3MjY7ZS5iYWNrc2xhc2hCaWc9ODcyNjtlLmJhY2tzbGFzaEJpZ2c9ODcyNjtlLmJhY2tzbGFzaGJpZ2c9ODcyNjtlLmJhcmRibD04MjE0O2UuYnJhY2VodGlwZG93bmxlZnQ9NjUwNzk7ZS5icmFjZWh0aXBkb3ducmlnaHQ9NjUwNzk7ZS5icmFjZWh0aXB1cGxlZnQ9NjUwODA7ZS5icmFjZWh0aXB1cHJpZ2h0PTY1MDgwO2UuYnJhY2VsZWZ0QmlnPTEyMztlLmJyYWNlbGVmdGJpZz0xMjM7ZS5icmFjZWxlZnRiaWdnPTEyMztlLmJyYWNlbGVmdEJpZ2c9MTIzO2UuYnJhY2VyaWdodEJpZz0xMjU7ZS5icmFjZXJpZ2h0YmlnPTEyNTtlLmJyYWNlcmlnaHRiaWdnPTEyNTtlLmJyYWNlcmlnaHRCaWdnPTEyNTtlLmJyYWNrZXRsZWZ0YmlnPTkxO2UuYnJhY2tldGxlZnRCaWc9OTE7ZS5icmFja2V0bGVmdGJpZ2c9OTE7ZS5icmFja2V0bGVmdEJpZ2c9OTE7ZS5icmFja2V0cmlnaHRCaWc9OTM7ZS5icmFja2V0cmlnaHRiaWc9OTM7ZS5icmFja2V0cmlnaHRiaWdnPTkzO2UuYnJhY2tldHJpZ2h0QmlnZz05MztlLmNlaWxpbmdsZWZ0YmlnPTg5Njg7ZS5jZWlsaW5nbGVmdEJpZz04OTY4O2UuY2VpbGluZ2xlZnRCaWdnPTg5Njg7ZS5jZWlsaW5nbGVmdGJpZ2c9ODk2ODtlLmNlaWxpbmdyaWdodGJpZz04OTY5O2UuY2VpbGluZ3JpZ2h0QmlnPTg5Njk7ZS5jZWlsaW5ncmlnaHRiaWdnPTg5Njk7ZS5jZWlsaW5ncmlnaHRCaWdnPTg5Njk7ZS5jaXJjbGVkb3RkaXNwbGF5PTg4NTc7ZS5jaXJjbGVkb3R0ZXh0PTg4NTc7ZS5jaXJjbGVtdWx0aXBseWRpc3BsYXk9ODg1NTtlLmNpcmNsZW11bHRpcGx5dGV4dD04ODU1O2UuY2lyY2xlcGx1c2Rpc3BsYXk9ODg1MztlLmNpcmNsZXBsdXN0ZXh0PTg4NTM7ZS5jb250aW50ZWdyYWxkaXNwbGF5PTg3NTA7ZS5jb250aW50ZWdyYWx0ZXh0PTg3NTA7ZS5jb3Byb2R1Y3RkaXNwbGF5PTg3MjA7ZS5jb3Byb2R1Y3R0ZXh0PTg3MjA7ZS5mbG9vcmxlZnRCaWc9ODk3MDtlLmZsb29ybGVmdGJpZz04OTcwO2UuZmxvb3JsZWZ0YmlnZz04OTcwO2UuZmxvb3JsZWZ0QmlnZz04OTcwO2UuZmxvb3JyaWdodGJpZz04OTcxO2UuZmxvb3JyaWdodEJpZz04OTcxO2UuZmxvb3JyaWdodEJpZ2c9ODk3MTtlLmZsb29ycmlnaHRiaWdnPTg5NzE7ZS5oYXR3aWRlPTc3MDtlLmhhdHdpZGVyPTc3MDtlLmhhdHdpZGVzdD03NzA7ZS5pbnRlcmNhbD03NDg4O2UuaW50ZWdyYWxkaXNwbGF5PTg3NDc7ZS5pbnRlZ3JhbHRleHQ9ODc0NztlLmludGVyc2VjdGlvbmRpc3BsYXk9ODg5ODtlLmludGVyc2VjdGlvbnRleHQ9ODg5ODtlLmxvZ2ljYWxhbmRkaXNwbGF5PTg3NDM7ZS5sb2dpY2FsYW5kdGV4dD04NzQzO2UubG9naWNhbG9yZGlzcGxheT04NzQ0O2UubG9naWNhbG9ydGV4dD04NzQ0O2UucGFyZW5sZWZ0QmlnPTQwO2UucGFyZW5sZWZ0YmlnPTQwO2UucGFyZW5sZWZ0QmlnZz00MDtlLnBhcmVubGVmdGJpZ2c9NDA7ZS5wYXJlbnJpZ2h0QmlnPTQxO2UucGFyZW5yaWdodGJpZz00MTtlLnBhcmVucmlnaHRCaWdnPTQxO2UucGFyZW5yaWdodGJpZ2c9NDE7ZS5wcmltZT04MjQyO2UucHJvZHVjdGRpc3BsYXk9ODcxOTtlLnByb2R1Y3R0ZXh0PTg3MTk7ZS5yYWRpY2FsYmlnPTg3MzA7ZS5yYWRpY2FsQmlnPTg3MzA7ZS5yYWRpY2FsQmlnZz04NzMwO2UucmFkaWNhbGJpZ2c9ODczMDtlLnJhZGljYWxidD04NzMwO2UucmFkaWNhbHRwPTg3MzA7ZS5yYWRpY2FsdmVydGV4PTg3MzA7ZS5zbGFzaGJpZz00NztlLnNsYXNoQmlnPTQ3O2Uuc2xhc2hCaWdnPTQ3O2Uuc2xhc2hiaWdnPTQ3O2Uuc3VtbWF0aW9uZGlzcGxheT04NzIxO2Uuc3VtbWF0aW9udGV4dD04NzIxO2UudGlsZGV3aWRlPTczMjtlLnRpbGRld2lkZXI9NzMyO2UudGlsZGV3aWRlc3Q9NzMyO2UudW5pb25kaXNwbGF5PTg4OTk7ZS51bmlvbm11bHRpZGlzcGxheT04ODQ2O2UudW5pb25tdWx0aXRleHQ9ODg0NjtlLnVuaW9uc3FkaXNwbGF5PTg4NTI7ZS51bmlvbnNxdGV4dD04ODUyO2UudW5pb250ZXh0PTg4OTk7ZS52ZXh0ZW5kZG91YmxlPTg3NDE7ZS52ZXh0ZW5kc2luZ2xlPTg3Mzl9KSx3YT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0zMjtlLmExPTk5ODU7ZS5hMj05OTg2O2UuYTIwMj05OTg3O2UuYTM9OTk4ODtlLmE0PTk3NDI7ZS5hNT05OTkwO2UuYTExOT05OTkxO2UuYTExOD05OTkyO2UuYTExNz05OTkzO2UuYTExPTk3NTU7ZS5hMTI9OTc1ODtlLmExMz05OTk2O2UuYTE0PTk5OTc7ZS5hMTU9OTk5ODtlLmExNj05OTk5O2UuYTEwNT0xZTQ7ZS5hMTc9MTAwMDE7ZS5hMTg9MTAwMDI7ZS5hMTk9MTAwMDM7ZS5hMjA9MTAwMDQ7ZS5hMjE9MTAwMDU7ZS5hMjI9MTAwMDY7ZS5hMjM9MTAwMDc7ZS5hMjQ9MTAwMDg7ZS5hMjU9MTAwMDk7ZS5hMjY9MTAwMTA7ZS5hMjc9MTAwMTE7ZS5hMjg9MTAwMTI7ZS5hNj0xMDAxMztlLmE3PTEwMDE0O2UuYTg9MTAwMTU7ZS5hOT0xMDAxNjtlLmExMD0xMDAxNztlLmEyOT0xMDAxODtlLmEzMD0xMDAxOTtlLmEzMT0xMDAyMDtlLmEzMj0xMDAyMTtlLmEzMz0xMDAyMjtlLmEzND0xMDAyMztlLmEzNT05NzMzO2UuYTM2PTEwMDI1O2UuYTM3PTEwMDI2O2UuYTM4PTEwMDI3O2UuYTM5PTEwMDI4O2UuYTQwPTEwMDI5O2UuYTQxPTEwMDMwO2UuYTQyPTEwMDMxO2UuYTQzPTEwMDMyO2UuYTQ0PTEwMDMzO2UuYTQ1PTEwMDM0O2UuYTQ2PTEwMDM1O2UuYTQ3PTEwMDM2O2UuYTQ4PTEwMDM3O2UuYTQ5PTEwMDM4O2UuYTUwPTEwMDM5O2UuYTUxPTEwMDQwO2UuYTUyPTEwMDQxO2UuYTUzPTEwMDQyO2UuYTU0PTEwMDQzO2UuYTU1PTEwMDQ0O2UuYTU2PTEwMDQ1O2UuYTU3PTEwMDQ2O2UuYTU4PTEwMDQ3O2UuYTU5PTEwMDQ4O2UuYTYwPTEwMDQ5O2UuYTYxPTEwMDUwO2UuYTYyPTEwMDUxO2UuYTYzPTEwMDUyO2UuYTY0PTEwMDUzO2UuYTY1PTEwMDU0O2UuYTY2PTEwMDU1O2UuYTY3PTEwMDU2O2UuYTY4PTEwMDU3O2UuYTY5PTEwMDU4O2UuYTcwPTEwMDU5O2UuYTcxPTk2Nzk7ZS5hNzI9MTAwNjE7ZS5hNzM9OTYzMjtlLmE3ND0xMDA2MztlLmEyMDM9MTAwNjQ7ZS5hNzU9MTAwNjU7ZS5hMjA0PTEwMDY2O2UuYTc2PTk2NTA7ZS5hNzc9OTY2MDtlLmE3OD05NjcwO2UuYTc5PTEwMDcwO2UuYTgxPTk2ODc7ZS5hODI9MTAwNzI7ZS5hODM9MTAwNzM7ZS5hODQ9MTAwNzQ7ZS5hOTc9MTAwNzU7ZS5hOTg9MTAwNzY7ZS5hOTk9MTAwNzc7ZS5hMTAwPTEwMDc4O2UuYTEwMT0xMDA4MTtlLmExMDI9MTAwODI7ZS5hMTAzPTEwMDgzO2UuYTEwND0xMDA4NDtlLmExMDY9MTAwODU7ZS5hMTA3PTEwMDg2O2UuYTEwOD0xMDA4NztlLmExMTI9OTgyNztlLmExMTE9OTgzMDtlLmExMTA9OTgyOTtlLmExMDk9OTgyNDtlLmExMjA9OTMxMjtlLmExMjE9OTMxMztlLmExMjI9OTMxNDtlLmExMjM9OTMxNTtlLmExMjQ9OTMxNjtlLmExMjU9OTMxNztlLmExMjY9OTMxODtlLmExMjc9OTMxOTtlLmExMjg9OTMyMDtlLmExMjk9OTMyMTtlLmExMzA9MTAxMDI7ZS5hMTMxPTEwMTAzO2UuYTEzMj0xMDEwNDtlLmExMzM9MTAxMDU7ZS5hMTM0PTEwMTA2O2UuYTEzNT0xMDEwNztlLmExMzY9MTAxMDg7ZS5hMTM3PTEwMTA5O2UuYTEzOD0xMDExMDtlLmExMzk9MTAxMTE7ZS5hMTQwPTEwMTEyO2UuYTE0MT0xMDExMztlLmExNDI9MTAxMTQ7ZS5hMTQzPTEwMTE1O2UuYTE0ND0xMDExNjtlLmExNDU9MTAxMTc7ZS5hMTQ2PTEwMTE4O2UuYTE0Nz0xMDExOTtlLmExNDg9MTAxMjA7ZS5hMTQ5PTEwMTIxO2UuYTE1MD0xMDEyMjtlLmExNTE9MTAxMjM7ZS5hMTUyPTEwMTI0O2UuYTE1Mz0xMDEyNTtlLmExNTQ9MTAxMjY7ZS5hMTU1PTEwMTI3O2UuYTE1Nj0xMDEyODtlLmExNTc9MTAxMjk7ZS5hMTU4PTEwMTMwO2UuYTE1OT0xMDEzMTtlLmExNjA9MTAxMzI7ZS5hMTYxPTg1OTQ7ZS5hMTYzPTg1OTY7ZS5hMTY0PTg1OTc7ZS5hMTk2PTEwMTM2O2UuYTE2NT0xMDEzNztlLmExOTI9MTAxMzg7ZS5hMTY2PTEwMTM5O2UuYTE2Nz0xMDE0MDtlLmExNjg9MTAxNDE7ZS5hMTY5PTEwMTQyO2UuYTE3MD0xMDE0MztlLmExNzE9MTAxNDQ7ZS5hMTcyPTEwMTQ1O2UuYTE3Mz0xMDE0NjtlLmExNjI9MTAxNDc7ZS5hMTc0PTEwMTQ4O2UuYTE3NT0xMDE0OTtlLmExNzY9MTAxNTA7ZS5hMTc3PTEwMTUxO2UuYTE3OD0xMDE1MjtlLmExNzk9MTAxNTM7ZS5hMTkzPTEwMTU0O2UuYTE4MD0xMDE1NTtlLmExOTk9MTAxNTY7ZS5hMTgxPTEwMTU3O2UuYTIwMD0xMDE1ODtlLmExODI9MTAxNTk7ZS5hMjAxPTEwMTYxO2UuYTE4Mz0xMDE2MjtlLmExODQ9MTAxNjM7ZS5hMTk3PTEwMTY0O2UuYTE4NT0xMDE2NTtlLmExOTQ9MTAxNjY7ZS5hMTk4PTEwMTY3O2UuYTE4Nj0xMDE2ODtlLmExOTU9MTAxNjk7ZS5hMTg3PTEwMTcwO2UuYTE4OD0xMDE3MTtlLmExODk9MTAxNzI7ZS5hMTkwPTEwMTczO2UuYTE5MT0xMDE3NDtlLmE4OT0xMDA4ODtlLmE5MD0xMDA4OTtlLmE5Mz0xMDA5MDtlLmE5ND0xMDA5MTtlLmE5MT0xMDA5MjtlLmE5Mj0xMDA5MztlLmEyMDU9MTAwOTQ7ZS5hODU9MTAwOTU7ZS5hMjA2PTEwMDk2O2UuYTg2PTEwMDk3O2UuYTg3PTEwMDk4O2UuYTg4PTEwMDk5O2UuYTk1PTEwMTAwO2UuYTk2PTEwMTAxO2VbIi5ub3RkZWYiXT0wfSksamE9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbNjM3MjFdPTE2OTtlWzYzMTkzXT0xNjk7ZVs2MzcyMF09MTc0O2VbNjMxOTRdPTE3NDtlWzYzNzIyXT04NDgyO2VbNjMxOTVdPTg0ODI7ZVs2MzcyOV09OTEyNztlWzYzNzMwXT05MTI4O2VbNjM3MzFdPTkxMjk7ZVs2Mzc0MF09OTEzMTtlWzYzNzQxXT05MTMyO2VbNjM3NDJdPTkxMzM7ZVs2MzcyNl09OTEyMTtlWzYzNzI3XT05MTIyO2VbNjM3MjhdPTkxMjM7ZVs2MzczN109OTEyNDtlWzYzNzM4XT05MTI1O2VbNjM3MzldPTkxMjY7ZVs2MzcyM109OTExNTtlWzYzNzI0XT05MTE2O2VbNjM3MjVdPTkxMTc7ZVs2MzczNF09OTExODtlWzYzNzM1XT05MTE5O2VbNjM3MzZdPTkxMjB9KTtmdW5jdGlvbiBnZXRVbmljb2RlRm9yR2x5cGgoZSx0KXtsZXQgbj10W2VdO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG47aWYoIWUpcmV0dXJuLTE7aWYoInUiPT09ZVswXSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYTtpZig3PT09dCYmIm4iPT09ZVsxXSYmImkiPT09ZVsyXSlhPWUuc3Vic3RyaW5nKDMpO2Vsc2V7aWYoISh0Pj01JiZ0PD03KSlyZXR1cm4tMTthPWUuc3Vic3RyaW5nKDEpfWlmKGE9PT1hLnRvVXBwZXJDYXNlKCkpe249cGFyc2VJbnQoYSwxNik7aWYobj49MClyZXR1cm4gbn19cmV0dXJuLTF9Y29uc3Qga2E9W1swLDEyN10sWzEyOCwyNTVdLFsyNTYsMzgzXSxbMzg0LDU5MV0sWzU5Miw2ODcsNzQyNCw3NTUxLDc1NTIsNzYxNV0sWzY4OCw3NjcsNDI3NTIsNDI3ODNdLFs3NjgsODc5LDc2MTYsNzY3OV0sWzg4MCwxMDIzXSxbMTEzOTIsMTE1MTldLFsxMDI0LDEyNzksMTI4MCwxMzI3LDExNzQ0LDExNzc1LDQyNTYwLDQyNjU1XSxbMTMyOCwxNDIzXSxbMTQyNCwxNTM1XSxbNDIyNDAsNDI1NTldLFsxNTM2LDE3OTEsMTg3MiwxOTE5XSxbMTk4NCwyMDQ3XSxbMjMwNCwyNDMxXSxbMjQzMiwyNTU5XSxbMjU2MCwyNjg3XSxbMjY4OCwyODE1XSxbMjgxNiwyOTQzXSxbMjk0NCwzMDcxXSxbMzA3MiwzMTk5XSxbMzIwMCwzMzI3XSxbMzMyOCwzNDU1XSxbMzU4NCwzNzExXSxbMzcxMiwzODM5XSxbNDI1Niw0MzUxLDExNTIwLDExNTY3XSxbNjkxMiw3MDM5XSxbNDM1Miw0NjA3XSxbNzY4MCw3OTM1LDExMzYwLDExMzkxLDQyNzg0LDQzMDA3XSxbNzkzNiw4MTkxXSxbODE5Miw4MzAzLDExNzc2LDExOTAzXSxbODMwNCw4MzUxXSxbODM1Miw4Mzk5XSxbODQwMCw4NDQ3XSxbODQ0OCw4NTI3XSxbODUyOCw4NTkxXSxbODU5Miw4NzAzLDEwMjI0LDEwMjM5LDEwNDk2LDEwNjIzLDExMDA4LDExMjYzXSxbODcwNCw4OTU5LDEwNzUyLDExMDA3LDEwMTc2LDEwMjIzLDEwNjI0LDEwNzUxXSxbODk2MCw5MjE1XSxbOTIxNiw5Mjc5XSxbOTI4MCw5MzExXSxbOTMxMiw5NDcxXSxbOTQ3Miw5NTk5XSxbOTYwMCw5NjMxXSxbOTYzMiw5NzI3XSxbOTcyOCw5OTgzXSxbOTk4NCwxMDE3NV0sWzEyMjg4LDEyMzUxXSxbMTIzNTIsMTI0NDddLFsxMjQ0OCwxMjU0MywxMjc4NCwxMjc5OV0sWzEyNTQ0LDEyNTkxLDEyNzA0LDEyNzM1XSxbMTI1OTIsMTI2ODddLFs0MzA3Miw0MzEzNV0sWzEyODAwLDEzMDU1XSxbMTMwNTYsMTMzMTFdLFs0NDAzMiw1NTIxNV0sWzU1Mjk2LDU3MzQzXSxbNjc4NDAsNjc4NzFdLFsxOTk2OCw0MDk1OSwxMTkwNCwxMjAzMSwxMjAzMiwxMjI1NSwxMjI3MiwxMjI4NywxMzMxMiwxOTkwMywxMzEwNzIsMTczNzkxLDEyNjg4LDEyNzAzXSxbNTczNDQsNjM3NDNdLFsxMjczNiwxMjc4Myw2Mzc0NCw2NDI1NSwxOTQ1NjAsMTk1MTAzXSxbNjQyNTYsNjQzMzVdLFs2NDMzNiw2NTAyM10sWzY1MDU2LDY1MDcxXSxbNjUwNDAsNjUwNTVdLFs2NTEwNCw2NTEzNV0sWzY1MTM2LDY1Mjc5XSxbNjUyODAsNjU1MTldLFs2NTUyMCw2NTUzNV0sWzM4NDAsNDA5NV0sWzE3OTIsMTg3MV0sWzE5MjAsMTk4M10sWzM0NTYsMzU4M10sWzQwOTYsNDI1NV0sWzQ2MDgsNDk5MSw0OTkyLDUwMjMsMTE2NDgsMTE3NDNdLFs1MDI0LDUxMTldLFs1MTIwLDU3NTldLFs1NzYwLDU3OTFdLFs1NzkyLDU4ODddLFs2MDE2LDYxNDNdLFs2MTQ0LDYzMTldLFsxMDI0MCwxMDQ5NV0sWzQwOTYwLDQyMTI3XSxbNTg4OCw1OTE5LDU5MjAsNTk1MSw1OTUyLDU5ODMsNTk4NCw2MDE1XSxbNjYzMDQsNjYzNTFdLFs2NjM1Miw2NjM4M10sWzY2NTYwLDY2NjM5XSxbMTE4Nzg0LDExOTAzOSwxMTkwNDAsMTE5Mjk1LDExOTI5NiwxMTkzNzVdLFsxMTk4MDgsMTIwODMxXSxbMTA0NDQ4MCwxMDQ4NTczXSxbNjUwMjQsNjUwMzksOTE3NzYwLDkxNzk5OV0sWzkxNzUwNCw5MTc2MzFdLFs2NDAwLDY0NzldLFs2NDgwLDY1MjddLFs2NTI4LDY2MjNdLFs2NjU2LDY2ODddLFsxMTI2NCwxMTM1OV0sWzExNTY4LDExNjQ3XSxbMTk5MDQsMTk5NjddLFs0MzAwOCw0MzA1NV0sWzY1NTM2LDY1NjYzLDY1NjY0LDY1NzkxLDY1NzkyLDY1ODU1XSxbNjU4NTYsNjU5MzVdLFs2NjQzMiw2NjQ2M10sWzY2NDY0LDY2NTI3XSxbNjY2NDAsNjY2ODddLFs2NjY4OCw2NjczNV0sWzY3NTg0LDY3NjQ3XSxbNjgwOTYsNjgxOTFdLFsxMTk1NTIsMTE5NjQ3XSxbNzM3MjgsNzQ3NTEsNzQ3NTIsNzQ4NzldLFsxMTk2NDgsMTE5Njc5XSxbNzA0MCw3MTAzXSxbNzE2OCw3MjQ3XSxbNzI0OCw3Mjk1XSxbNDMxMzYsNDMyMzFdLFs0MzI2NCw0MzMxMV0sWzQzMzEyLDQzMzU5XSxbNDM1MjAsNDM2MTVdLFs2NTkzNiw2NTk5OV0sWzY2ZTMsNjYwNDddLFs2NjIwOCw2NjI3MSw2NjE3Niw2NjIwNyw2Nzg3Miw2NzkwM10sWzEyNzAyNCwxMjcxMzUsMTI2OTc2LDEyNzAyM11dO2Z1bmN0aW9uIGdldFVuaWNvZGVSYW5nZUZvcihlLHQ9LTEpe2lmKC0xIT09dCl7Y29uc3Qgbj1rYVt0XTtmb3IobGV0IGE9MCxzPW4ubGVuZ3RoO2E8czthKz0yKWlmKGU+PW5bYV0mJmU8PW5bYSsxXSlyZXR1cm4gdH1mb3IobGV0IHQ9MCxuPWthLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWthW3RdO2ZvcihsZXQgYT0wLHM9bi5sZW5ndGg7YTxzO2ErPTIpaWYoZT49blthXSYmZTw9blthKzFdKXJldHVybiB0fXJldHVybi0xfWNvbnN0IHlhPS9eKFxzKXwoXHB7TW59KXwoXHB7Q2Z9KSQvdSxxYT1uZXcgTWFwO2NvbnN0IHZhPTEsU2E9MixBYT00LHhhPTMyLENhPVsiLm5vdGRlZiIsIi5udWxsIiwibm9ubWFya2luZ3JldHVybiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJBZGllcmVzaXMiLCJBcmluZyIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiTnRpbGRlIiwiT2RpZXJlc2lzIiwiVWRpZXJlc2lzIiwiYWFjdXRlIiwiYWdyYXZlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhdGlsZGUiLCJhcmluZyIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWdyYXZlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpYWN1dGUiLCJpZ3JhdmUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsIm50aWxkZSIsIm9hY3V0ZSIsIm9ncmF2ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib3RpbGRlIiwidWFjdXRlIiwidWdyYXZlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJkYWdnZXIiLCJkZWdyZWUiLCJjZW50Iiwic3RlcmxpbmciLCJzZWN0aW9uIiwiYnVsbGV0IiwicGFyYWdyYXBoIiwiZ2VybWFuZGJscyIsInJlZ2lzdGVyZWQiLCJjb3B5cmlnaHQiLCJ0cmFkZW1hcmsiLCJhY3V0ZSIsImRpZXJlc2lzIiwibm90ZXF1YWwiLCJBRSIsIk9zbGFzaCIsImluZmluaXR5IiwicGx1c21pbnVzIiwibGVzc2VxdWFsIiwiZ3JlYXRlcmVxdWFsIiwieWVuIiwibXUiLCJwYXJ0aWFsZGlmZiIsInN1bW1hdGlvbiIsInByb2R1Y3QiLCJwaSIsImludGVncmFsIiwib3JkZmVtaW5pbmUiLCJvcmRtYXNjdWxpbmUiLCJPbWVnYSIsImFlIiwib3NsYXNoIiwicXVlc3Rpb25kb3duIiwiZXhjbGFtZG93biIsImxvZ2ljYWxub3QiLCJyYWRpY2FsIiwiZmxvcmluIiwiYXBwcm94ZXF1YWwiLCJEZWx0YSIsImd1aWxsZW1vdGxlZnQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwibm9uYnJlYWtpbmdzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiTHNsYXNoIiwibHNsYXNoIiwiU2Nhcm9uIiwic2Nhcm9uIiwiWmNhcm9uIiwiemNhcm9uIiwiYnJva2VuYmFyIiwiRXRoIiwiZXRoIiwiWWFjdXRlIiwieWFjdXRlIiwiVGhvcm4iLCJ0aG9ybiIsIm1pbnVzIiwibXVsdGlwbHkiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsIm9uZWhhbGYiLCJvbmVxdWFydGVyIiwidGhyZWVxdWFydGVycyIsImZyYW5jIiwiR2JyZXZlIiwiZ2JyZXZlIiwiSWRvdGFjY2VudCIsIlNjZWRpbGxhIiwic2NlZGlsbGEiLCJDYWN1dGUiLCJjYWN1dGUiLCJDY2Fyb24iLCJjY2Fyb24iLCJkY3JvYXQiXTtmdW5jdGlvbiByZWNvdmVyR2x5cGhOYW1lKGUsdCl7aWYodm9pZCAwIT09dFtlXSlyZXR1cm4gZTtjb25zdCBuPWdldFVuaWNvZGVGb3JHbHlwaChlLHQpO2lmKC0xIT09bilmb3IoY29uc3QgZSBpbiB0KWlmKHRbZV09PT1uKXJldHVybiBlO2luZm8oIlVuYWJsZSB0byByZWNvdmVyIGEgc3RhbmRhcmQgZ2x5cGggbmFtZSBmb3I6ICIrZSk7cmV0dXJuIGV9ZnVuY3Rpb24gdHlwZTFGb250R2x5cGhNYXBwaW5nKGUsdCxuKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHMscixpO2NvbnN0IG89ISEoZS5mbGFncyZBYSk7aWYoZS5pc0ludGVybmFsRm9udCl7aT10O2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspe3M9bi5pbmRleE9mKGlbcl0pO2Fbcl09cz49MD9zOjB9fWVsc2UgaWYoZS5iYXNlRW5jb2RpbmdOYW1lKXtpPWdldEVuY29kaW5nKGUuYmFzZUVuY29kaW5nTmFtZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyl7cz1uLmluZGV4T2YoaVtyXSk7YVtyXT1zPj0wP3M6MH19ZWxzZSBpZihvKWZvcihyIGluIHQpYVtyXT10W3JdO2Vsc2V7aT1tYTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKXtzPW4uaW5kZXhPZihpW3JdKTthW3JdPXM+PTA/czowfX1jb25zdCBsPWUuZGlmZmVyZW5jZXM7bGV0IGY7aWYobClmb3IociBpbiBsKXtjb25zdCBlPWxbcl07cz1uLmluZGV4T2YoZSk7aWYoLTE9PT1zKXtmPz89YmEoKTtjb25zdCB0PXJlY292ZXJHbHlwaE5hbWUoZSxmKTt0IT09ZSYmKHM9bi5pbmRleE9mKHQpKX1hW3JdPXM+PTA/czowfXJldHVybiBhfWZ1bmN0aW9uIG5vcm1hbGl6ZUZvbnROYW1lKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpLnJlcGxhY2VBbGwoL1xzL2csIiIpfWNvbnN0IElhPWdldExvb2t1cFRhYmxlRmFjdG9yeShlPT57ZVs4MjExXT02NTA3NDtlWzgyMTJdPTY1MDczO2VbODIyOV09NjUwNzI7ZVs4MjMwXT02NTA0OTtlWzEyMjg5XT02NTA0MTtlWzEyMjkwXT02NTA0MjtlWzEyMjk2XT02NTA4NztlWzEyMjk3XT02NTA4ODtlWzEyMjk4XT02NTA4NTtlWzEyMjk5XT02NTA4NjtlWzEyMzAwXT02NTA4OTtlWzEyMzAxXT02NTA5MDtlWzEyMzAyXT02NTA5MTtlWzEyMzAzXT02NTA5MjtlWzEyMzA0XT02NTA4MztlWzEyMzA1XT02NTA4NDtlWzEyMzA4XT02NTA4MTtlWzEyMzA5XT02NTA4MjtlWzEyMzEwXT02NTA0NztlWzEyMzExXT02NTA0ODtlWzY1MTAzXT02NTA3NjtlWzY1MjgxXT02NTA0NTtlWzY1Mjg4XT02NTA3NztlWzY1Mjg5XT02NTA3ODtlWzY1MjkyXT02NTA0MDtlWzY1MzA2XT02NTA0MztlWzY1MzA3XT02NTA0NDtlWzY1MzExXT02NTA0NjtlWzY1MzM5XT02NTA5NTtlWzY1MzQxXT02NTA5NjtlWzY1MzQzXT02NTA3NTtlWzY1MzcxXT02NTA3OTtlWzY1MzczXT02NTA4MH0pO2NvbnN0IEZhPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIl0sVGE9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIkRvdGFjY2VudHNtYWxsIiwiTWFjcm9uc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIl0sUmE9WyIubm90ZGVmIiwic3BhY2UiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiaHlwaGVuc3VwZXJpb3IiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiY2VudG9sZHN0eWxlIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIl07Y2xhc3MgRGF0YUJ1aWxkZXJ7I25lOyNhZT0xMDI0OyNzZT0hMTsjcmU9MDsjaWU7Y29uc3RydWN0b3Ioe2V4YWN0TGVuZ3RoOmU9MCxtaW5MZW5ndGg6dD0wfSl7dGhpcy4jc2U9ISFlO3RoaXMuI29lKGV8fHQpfSNvZShlKXtpZih0aGlzLiNzZSl0aGlzLiNhZT1lO2Vsc2UgZm9yKDt0aGlzLiNhZTxlOyl0aGlzLiNhZSo9Mjtjb25zdCB0PW5ldyBVaW50OEFycmF5KHRoaXMuI2FlKTt0aGlzLiNuZSYmdC5zZXQodGhpcy4jbmUsMCk7dGhpcy4jbmU9dDt0aGlzLiNpZT1uZXcgRGF0YVZpZXcodC5idWZmZXIpfWdldCBkYXRhKCl7cmV0dXJuIHRoaXMuI25lLnN1YmFycmF5KDAsdGhpcy4jcmUpfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy4jcmV9c2tpcChlKXt0aGlzLiNyZSs9ZX1zZXRBcnJheShlKXtjb25zdCB0PXRoaXMuI3JlK2UubGVuZ3RoOyF0aGlzLiNzZSYmdD50aGlzLiNhZSYmdGhpcy4jb2UodCk7dGhpcy4jbmUuc2V0KGUsdGhpcy4jcmUpO3RoaXMuI3JlPXR9c2V0SW50MTYoZSl7Y29uc3QgdD10aGlzLiNyZSsyOyF0aGlzLiNzZSYmdD50aGlzLiNhZSYmdGhpcy4jb2UodCk7dGhpcy4jaWUuc2V0SW50MTYodGhpcy4jcmUsZSk7dGhpcy4jcmU9dH1zZXRTYWZlSW50MTYoZSl7Y29uc3QgdD10aGlzLiNyZSsyOyF0aGlzLiNzZSYmdD50aGlzLiNhZSYmdGhpcy4jb2UodCk7dGhpcy4jaWUuc2V0SW50MTYodGhpcy4jcmUsTWF0aENsYW1wKGUsLTMyNzY4LDMyNzY3KSk7dGhpcy4jcmU9dH1zZXRJbnQzMihlKXtjb25zdCB0PXRoaXMuI3JlKzQ7IXRoaXMuI3NlJiZ0PnRoaXMuI2FlJiZ0aGlzLiNvZSh0KTt0aGlzLiNpZS5zZXRJbnQzMih0aGlzLiNyZSxlKTt0aGlzLiNyZT10fX1mdW5jdGlvbiBsb29rc0xpa2VVbnNpZ25lZDE2Qml0TmVnYXRpdmUoZSl7cmV0dXJuIGU+MzI3NjcmJmU8PTY1NTM1fWZ1bmN0aW9uIHJlY292ZXJTaWduZWQxNkJpdEJCb3goZSx0PSExKXtyZXR1cm4gVXRpbC5ub3JtYWxpemVSZWN0KGUubWFwKChlLG4pPT4oIXR8fG48MikmJmxvb2tzTGlrZVVuc2lnbmVkMTZCaXROZWdhdGl2ZShlKT9lLTY1NTM2OmUpKX1jb25zdCBPYT1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwicXVlc3Rpb25kb3duIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiQUUiLCJvcmRmZW1pbmluZSIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiYWUiLCJkb3RsZXNzaSIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIm9uZXN1cGVyaW9yIiwibG9naWNhbG5vdCIsIm11IiwidHJhZGVtYXJrIiwiRXRoIiwib25laGFsZiIsInBsdXNtaW51cyIsIlRob3JuIiwib25lcXVhcnRlciIsImRpdmlkZSIsImJyb2tlbmJhciIsImRlZ3JlZSIsInRob3JuIiwidGhyZWVxdWFydGVycyIsInR3b3N1cGVyaW9yIiwicmVnaXN0ZXJlZCIsIm1pbnVzIiwiZXRoIiwibXVsdGlwbHkiLCJ0aHJlZXN1cGVyaW9yIiwiY29weXJpZ2h0IiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBZGllcmVzaXMiLCJBZ3JhdmUiLCJBcmluZyIsIkF0aWxkZSIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk50aWxkZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT2RpZXJlc2lzIiwiT2dyYXZlIiwiT3RpbGRlIiwiU2Nhcm9uIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJVZ3JhdmUiLCJZYWN1dGUiLCJZZGllcmVzaXMiLCJaY2Fyb24iLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImFncmF2ZSIsImFyaW5nIiwiYXRpbGRlIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImVncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiaWdyYXZlIiwibnRpbGRlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvZ3JhdmUiLCJvdGlsZGUiLCJzY2Fyb24iLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInVncmF2ZSIsInlhY3V0ZSIsInlkaWVyZXNpcyIsInpjYXJvbiIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCJEb3RhY2NlbnRzbWFsbCIsIk1hY3JvbnNtYWxsIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCJ6ZXJvc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiLCIwMDEuMDAwIiwiMDAxLjAwMSIsIjAwMS4wMDIiLCIwMDEuMDAzIiwiQmxhY2siLCJCb2xkIiwiQm9vayIsIkxpZ2h0IiwiTWVkaXVtIiwiUmVndWxhciIsIlJvbWFuIiwiU2VtaWJvbGQiXSxIYT0zOTEsQmE9LjAzOTYyNSxEYT1bbnVsbCx7aWQ6ImhzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LG51bGwse2lkOiJ2c3RlbSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6InZtb3ZldG8iLG1pbjoxLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoicmxpbmV0byIsbWluOjIscmVzZXRTdGFjazohMH0se2lkOiJobGluZXRvIixtaW46MSxyZXNldFN0YWNrOiEwfSx7aWQ6InZsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoicnJjdXJ2ZXRvIixtaW46NixyZXNldFN0YWNrOiEwfSxudWxsLHtpZDoiY2FsbHN1YnIiLG1pbjoxfSx7aWQ6InJldHVybiIsbWluOjB9LG51bGwsbnVsbCx7aWQ6ImVuZGNoYXIiLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LG51bGwsbnVsbCxudWxsLHtpZDoiaHN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6ImhpbnRtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6ImNudHJtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJtb3ZldG8iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoiaG1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJ2c3RlbWhtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoicmN1cnZlbGluZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJybGluZWN1cnZlIixtaW46OCxyZXNldFN0YWNrOiEwfSx7aWQ6InZ2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJoaGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsZ3N1YnIiLG1pbjoxfSx7aWQ6InZoY3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJodmN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9XSxNYT1bbnVsbCxudWxsLG51bGwse2lkOiJhbmQiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LHtpZDoib3IiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LHtpZDoibm90IixtaW46MSxzdGFja0RlbHRhOjB9LG51bGwsbnVsbCxudWxsLHtpZDoiYWJzIixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiYWRkIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdK2VbdC0xXX19LHtpZDoic3ViIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdLWVbdC0xXX19LHtpZDoiZGl2IixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdL2VbdC0xXX19LG51bGwse2lkOiJuZWciLG1pbjoxLHN0YWNrRGVsdGE6MCxzdGFja0ZuKGUsdCl7ZVt0LTFdPS1lW3QtMV19fSx7aWQ6ImVxIixtaW46MixzdGFja0RlbHRhOi0xfSxudWxsLG51bGwse2lkOiJkcm9wIixtaW46MSxzdGFja0RlbHRhOi0xfSxudWxsLHtpZDoicHV0IixtaW46MixzdGFja0RlbHRhOi0yfSx7aWQ6ImdldCIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImlmZWxzZSIsbWluOjQsc3RhY2tEZWx0YTotM30se2lkOiJyYW5kb20iLG1pbjowLHN0YWNrRGVsdGE6MX0se2lkOiJtdWwiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0qZVt0LTFdfX0sbnVsbCx7aWQ6InNxcnQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJkdXAiLG1pbjoxLHN0YWNrRGVsdGE6MX0se2lkOiJleGNoIixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoiaW5kZXgiLG1pbjoyLHN0YWNrRGVsdGE6MH0se2lkOiJyb2xsIixtaW46MyxzdGFja0RlbHRhOi0yfSxudWxsLG51bGwsbnVsbCx7aWQ6ImhmbGV4IixtaW46NyxyZXNldFN0YWNrOiEwfSx7aWQ6ImZsZXgiLG1pbjoxMyxyZXNldFN0YWNrOiEwfSx7aWQ6ImhmbGV4MSIsbWluOjkscmVzZXRTdGFjazohMH0se2lkOiJmbGV4MSIsbWluOjExLHJlc2V0U3RhY2s6ITB9XTtjbGFzcyBDRkZQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuYnl0ZXM9ZS5nZXRCeXRlcygpO3RoaXMucHJvcGVydGllcz10O3RoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIW59cGFyc2UoKXtjb25zdCBlPXRoaXMucHJvcGVydGllcyx0PW5ldyBDRkYodGhpcy5ieXRlcy5sZW5ndGgpO3RoaXMuY2ZmPXQ7Y29uc3Qgbj10aGlzLnBhcnNlSGVhZGVyKCksYT10aGlzLnBhcnNlSW5kZXgobi5lbmRQb3MpLHM9dGhpcy5wYXJzZUluZGV4KGEuZW5kUG9zKSxyPXRoaXMucGFyc2VJbmRleChzLmVuZFBvcyksaT10aGlzLnBhcnNlSW5kZXgoci5lbmRQb3MpLG89dGhpcy5wYXJzZURpY3Qocy5vYmouZ2V0KDApKSxsPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LG8sdC5zdHJpbmdzKTt0LmhlYWRlcj1uLm9iajt0Lm5hbWVzPXRoaXMucGFyc2VOYW1lSW5kZXgoYS5vYmopO3Quc3RyaW5ncz10aGlzLnBhcnNlU3RyaW5nSW5kZXgoci5vYmopO3QudG9wRGljdD1sO3QuZ2xvYmFsU3VickluZGV4PWkub2JqO3RoaXMucGFyc2VQcml2YXRlRGljdCh0LnRvcERpY3QpO3QuaXNDSURGb250PWwuaGFzTmFtZSgiUk9TIik7Y29uc3QgZj1sLmdldEJ5TmFtZSgiQ2hhclN0cmluZ3MiKSxjPXRoaXMucGFyc2VJbmRleChmKS5vYmo7dC5jaGFyU3RyaW5nQ291bnQ9Yy5jb3VudDtjb25zdCBoPWwuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7aCYmKGUuZm9udE1hdHJpeD1oKTtsZXQgdT1sLmdldEJ5TmFtZSgiRm9udEJCb3giKTtjb25zdCBtPWUuYmJveD8uc29tZShlPT4wIT09ZSk/cmVjb3ZlclNpZ25lZDE2Qml0QkJveChlLmJib3gpOm51bGwscD11Py5zbGljZSgwLDIpLnNvbWUobG9va3NMaWtlVW5zaWduZWQxNkJpdE5lZ2F0aXZlKSxkPXU/LnNvbWUobG9va3NMaWtlVW5zaWduZWQxNkJpdE5lZ2F0aXZlKTtpZih1Py5ldmVyeShlPT4wPT09ZSkmJm0pe3U9bTtsLnNldEJ5TmFtZSgiRm9udEJCb3giLHUpfWVsc2UgaWYoZCl7Y29uc3QgdD1yZWNvdmVyU2lnbmVkMTZCaXRCQm94KHUpLG49bSYmZS5iYm94LnNvbWUoZT0+ZTwwKSYmIWUuYmJveC5zb21lKGxvb2tzTGlrZVVuc2lnbmVkMTZCaXROZWdhdGl2ZSkmJmlzQXJyYXlFcXVhbCh0LG0pO2lmKG58fHApe3U9bj90OnJlY292ZXJTaWduZWQxNkJpdEJCb3godSwhMCk7bC5zZXRCeU5hbWUoIkZvbnRCQm94Iix1KX19aWYodT8uc29tZShlPT4wIT09ZSkpe2UuYXNjZW50PU1hdGgubWF4KHVbM10sdVsxXSk7ZS5kZXNjZW50PU1hdGgubWluKHVbMV0sdVszXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9bGV0IGcsYjtpZih0LmlzQ0lERm9udCl7Y29uc3QgZT10aGlzLnBhcnNlSW5kZXgobC5nZXRCeU5hbWUoIkZEQXJyYXkiKSkub2JqO2ZvcihsZXQgbj0wLGE9ZS5jb3VudDtuPGE7KytuKXtjb25zdCBhPWUuZ2V0KG4pLHM9dGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3QsdGhpcy5wYXJzZURpY3QoYSksdC5zdHJpbmdzKTt0aGlzLnBhcnNlUHJpdmF0ZURpY3Qocyk7dC5mZEFycmF5LnB1c2gocyl9Yj1udWxsO2c9dGhpcy5wYXJzZUNoYXJzZXRzKGwuZ2V0QnlOYW1lKCJjaGFyc2V0IiksYy5jb3VudCx0LnN0cmluZ3MsITApO3QuZmRTZWxlY3Q9dGhpcy5wYXJzZUZEU2VsZWN0KGwuZ2V0QnlOYW1lKCJGRFNlbGVjdCIpLGMuY291bnQpfWVsc2V7Zz10aGlzLnBhcnNlQ2hhcnNldHMobC5nZXRCeU5hbWUoImNoYXJzZXQiKSxjLmNvdW50LHQuc3RyaW5ncywhMSk7Yj10aGlzLnBhcnNlRW5jb2RpbmcobC5nZXRCeU5hbWUoIkVuY29kaW5nIiksZSx0LnN0cmluZ3MsZy5jaGFyc2V0KX10LmNoYXJzZXQ9Zzt0LmVuY29kaW5nPWI7Y29uc3Qgdz10aGlzLnBhcnNlQ2hhclN0cmluZ3Moe2NoYXJTdHJpbmdzOmMsbG9jYWxTdWJySW5kZXg6bC5wcml2YXRlRGljdC5zdWJyc0luZGV4LGdsb2JhbFN1YnJJbmRleDppLm9iaixmZFNlbGVjdDp0LmZkU2VsZWN0LGZkQXJyYXk6dC5mZEFycmF5LHByaXZhdGVEaWN0OmwucHJpdmF0ZURpY3R9KTt0LmNoYXJTdHJpbmdzPXcuY2hhclN0cmluZ3M7dC5zZWFjcz13LnNlYWNzO3Qud2lkdGhzPXcud2lkdGhzO3JldHVybiB0fXBhcnNlSGVhZGVyKCl7bGV0IGU9dGhpcy5ieXRlcztjb25zdCB0PWUubGVuZ3RoO2xldCBuPTA7Zm9yKDtuPHQmJjEhPT1lW25dOykrK247aWYobj49dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgQ0ZGIGhlYWRlciIpO2lmKDAhPT1uKXtpbmZvKCJjZmYgZGF0YSBpcyBzaGlmdGVkIik7ZT1lLnN1YmFycmF5KG4pO3RoaXMuYnl0ZXM9ZX1jb25zdCBhPWVbMF0scz1lWzFdLHI9ZVsyXSxpPWVbM107cmV0dXJue29iajpuZXcgQ0ZGSGVhZGVyKGEscyxyLGkpLGVuZFBvczpyfX1wYXJzZURpY3QoZSl7Y29uc3QgdD1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZXNMZW5ndGgpO2xldCBuPTA7ZnVuY3Rpb24gcGFyc2VPcGVyYW5kKCl7bGV0IGE9ZVtuKytdO2lmKDMwPT09YSlyZXR1cm4gZnVuY3Rpb24gcGFyc2VGbG9hdE9wZXJhbmQoKXtsZXQgdD0iIjtjb25zdCBhPTE1LHM9WyIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiLiIsIkUiLCJFLSIsbnVsbCwiLSJdLHI9ZS5sZW5ndGg7Zm9yKDtuPHI7KXtjb25zdCByPWVbbisrXSxpPXI+PjQsbz0xNSZyO2lmKGk9PT1hKWJyZWFrO3QrPXNbaV07aWYobz09PWEpYnJlYWs7dCs9c1tvXX1yZXR1cm4gcGFyc2VGbG9hdCh0KX0oKTtpZigyOD09PWEpe2E9dC5nZXRJbnQxNihuKTtuKz0yO3JldHVybiBhfWlmKDI5PT09YSl7YT10LmdldEludDMyKG4pO24rPTQ7cmV0dXJuIGF9aWYoYT49MzImJmE8PTI0NilyZXR1cm4gYS0xMzk7aWYoYT49MjQ3JiZhPD0yNTApcmV0dXJuIDI1NiooYS0yNDcpK2VbbisrXSsxMDg7aWYoYT49MjUxJiZhPD0yNTQpcmV0dXJuLTI1NiooYS0yNTEpLWVbbisrXS0xMDg7d2FybihgQ0ZGUGFyc2VyLnBhcnNlRGljdDogIiR7YX0iIGlzIGEgcmVzZXJ2ZWQgY29tbWFuZC5gKTtyZXR1cm4gTmFOfWxldCBhPVtdO2NvbnN0IHM9W107bj0wO2NvbnN0IHI9ZS5sZW5ndGg7Zm9yKDtuPHI7KXtsZXQgdD1lW25dO2lmKHQ8PTIxKXsxMj09PXQmJih0PXQ8PDh8ZVsrK25dKTtzLnB1c2goW3QsYV0pO2E9W107KytufWVsc2UgYS5wdXNoKHBhcnNlT3BlcmFuZCgpKX1yZXR1cm4gc31wYXJzZUluZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4LG49dGhpcy5ieXRlcyxhPW5bZSsrXTw8OHxuW2UrK10scz1bXTtsZXQgcixpLG89ZTtpZigwIT09YSl7Y29uc3QgdD1uW2UrK10sbD1lKyhhKzEpKnQtMTtmb3Iocj0wLGk9YSsxO3I8aTsrK3Ipe2xldCBhPTA7Zm9yKGxldCBzPTA7czx0Oysrcyl7YTw8PTg7YSs9bltlKytdfXMucHVzaChsK2EpfW89c1thXX1mb3Iocj0wLGk9cy5sZW5ndGgtMTtyPGk7KytyKXtjb25zdCBlPXNbcl0sYT1zW3IrMV07dC5hZGQobi5zdWJhcnJheShlLGEpKX1yZXR1cm57b2JqOnQsZW5kUG9zOm99fXBhcnNlTmFtZUluZGV4KGUpe2NvbnN0IHQ9W107Zm9yKGxldCBuPTAsYT1lLmNvdW50O248YTsrK24pe2NvbnN0IGE9ZS5nZXQobik7dC5wdXNoKGJ5dGVzVG9TdHJpbmcoYSkpfXJldHVybiB0fXBhcnNlU3RyaW5nSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGU3RyaW5ncztmb3IobGV0IG49MCxhPWUuY291bnQ7bjxhOysrbil7Y29uc3QgYT1lLmdldChuKTt0LmFkZChieXRlc1RvU3RyaW5nKGEpKX1yZXR1cm4gdH1jcmVhdGVEaWN0KGUsdCxuKXtjb25zdCBhPW5ldyBlKG4pO2Zvcihjb25zdFtlLG5db2YgdClhLnNldEJ5S2V5KGUsbik7cmV0dXJuIGF9cGFyc2VDaGFyU3RyaW5nKGUsdCxuLGEpe2lmKCF0fHxlLmNhbGxEZXB0aD4xMClyZXR1cm4hMTtjb25zdCBzPW5ldyBEYXRhVmlldyh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5ieXRlc0xlbmd0aCk7bGV0IHI9ZS5zdGFja1NpemU7Y29uc3QgaT1lLnN0YWNrO2xldCBvPXQubGVuZ3RoO2ZvcihsZXQgbD0wO2w8bzspe2NvbnN0IGY9dFtsKytdO2xldCBjPW51bGw7aWYoMTI9PT1mKXtjb25zdCBlPXRbbCsrXTtpZigwPT09ZSl7dFtsLTJdPTEzOTt0W2wtMV09MjI7cj0wfWVsc2UgYz1NYVtlXX1lbHNlIGlmKDI4PT09Zil7aVtyXT1zLmdldEludDE2KGwpO2wrPTI7cisrfWVsc2UgaWYoMTQ9PT1mKXtpZihyPj00KXtyLT00O2lmKHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCl7ZS5zZWFjPWkuc2xpY2UocixyKzQpO3JldHVybiExfX1jPURhW2ZdfWVsc2UgaWYoZj49MzImJmY8PTI0Nil7aVtyXT1mLTEzOTtyKyt9ZWxzZSBpZihmPj0yNDcmJmY8PTI1NCl7aVtyXT1mPDI1MT8oZi0yNDc8PDgpK3RbbF0rMTA4Oi0oZi0yNTE8PDgpLXRbbF0tMTA4O2wrKztyKyt9ZWxzZSBpZigyNTU9PT1mKXtpW3JdPXMuZ2V0SW50MzIobCkvNjU1MzY7bCs9NDtyKyt9ZWxzZSBpZigxOT09PWZ8fDIwPT09Zil7ZS5oaW50cys9cj4+MTtpZigwPT09ZS5oaW50cyl7dC5jb3B5V2l0aGluKGwtMSxsLC0xKTtsLT0xO28tPTE7Y29udGludWV9bCs9ZS5oaW50cys3Pj4zO3IlPTI7Yz1EYVtmXX1lbHNle2lmKDEwPT09Znx8Mjk9PT1mKXtjb25zdCB0PTEwPT09Zj9uOmE7aWYoIXQpe2M9RGFbZl07d2FybigiTWlzc2luZyBzdWJyc0luZGV4IGZvciAiK2MuaWQpO3JldHVybiExfWxldCBzPTMyNzY4O3QuY291bnQ8MTI0MD9zPTEwNzp0LmNvdW50PDMzOTAwJiYocz0xMTMxKTtjb25zdCBvPWlbLS1yXStzO2lmKG88MHx8bz49dC5jb3VudHx8aXNOYU4obykpe2M9RGFbZl07d2FybigiT3V0IG9mIGJvdW5kcyBzdWJySW5kZXggZm9yICIrYy5pZCk7cmV0dXJuITF9ZS5zdGFja1NpemU9cjtlLmNhbGxEZXB0aCsrO2lmKCF0aGlzLnBhcnNlQ2hhclN0cmluZyhlLHQuZ2V0KG8pLG4sYSkpcmV0dXJuITE7ZS5jYWxsRGVwdGgtLTtyPWUuc3RhY2tTaXplO2NvbnRpbnVlfWlmKDExPT09Zil7ZS5zdGFja1NpemU9cjtyZXR1cm4hMH1pZigwPT09ZiYmbD09PXQubGVuZ3RoKXt0W2wtMV09MTQ7Yz1EYVsxNF19ZWxzZXtpZig5PT09Zil7dC5jb3B5V2l0aGluKGwtMSxsLC0xKTtsLT0xO28tPTE7Y29udGludWV9Yz1EYVtmXX19aWYoYyl7aWYoYy5zdGVtKXtlLmhpbnRzKz1yPj4xO2lmKDM9PT1mfHwyMz09PWYpZS5oYXNWU3RlbXM9ITA7ZWxzZSBpZihlLmhhc1ZTdGVtcyYmKDE9PT1mfHwxOD09PWYpKXt3YXJuKCJDRkYgc3RlbSBoaW50cyBhcmUgaW4gd3Jvbmcgb3JkZXIiKTt0W2wtMV09MT09PWY/MzoyM319aWYocjxjLm1pbil7d2FybigiTm90IGVub3VnaCBwYXJhbWV0ZXJzIGZvciAiK2MuaWQrIjsgYWN0dWFsOiAiK3IrIiwgZXhwZWN0ZWQ6ICIrYy5taW4pO2lmKDA9PT1yKXt0W2wtMV09MTQ7cmV0dXJuITB9cmV0dXJuITF9aWYoZS5maXJzdFN0YWNrQ2xlYXJpbmcmJmMuc3RhY2tDbGVhcmluZyl7ZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITE7ci09Yy5taW47cj49MiYmYy5zdGVtP3IlPTI6cj4xJiZ3YXJuKCJGb3VuZCB0b28gbWFueSBwYXJhbWV0ZXJzIGZvciBzdGFjay1jbGVhcmluZyBjb21tYW5kIik7cj4wJiYoZS53aWR0aD1pW3ItMV0pfWlmKCJzdGFja0RlbHRhImluIGMpeyJzdGFja0ZuImluIGMmJmMuc3RhY2tGbihpLHIpO3IrPWMuc3RhY2tEZWx0YX1lbHNlKGMuc3RhY2tDbGVhcmluZ3x8Yy5yZXNldFN0YWNrKSYmKHI9MCl9fW88dC5sZW5ndGgmJnQuZmlsbCgxNCxvKTtlLnN0YWNrU2l6ZT1yO3JldHVybiEwfXBhcnNlQ2hhclN0cmluZ3Moe2NoYXJTdHJpbmdzOmUsbG9jYWxTdWJySW5kZXg6dCxnbG9iYWxTdWJySW5kZXg6bixmZFNlbGVjdDphLGZkQXJyYXk6cyxwcml2YXRlRGljdDpyfSl7Y29uc3QgaT1bXSxvPVtdLGw9ZS5jb3VudDtmb3IobGV0IGY9MDtmPGw7ZisrKXtjb25zdCBsPWUuZ2V0KGYpLGM9e2NhbGxEZXB0aDowLHN0YWNrU2l6ZTowLHN0YWNrOltdLGhpbnRzOjAsZmlyc3RTdGFja0NsZWFyaW5nOiEwLHNlYWM6bnVsbCx3aWR0aDpudWxsLGhhc1ZTdGVtczohMX07bGV0IGg9ITAsdT1udWxsLG09cjtpZihhJiZzLmxlbmd0aCl7Y29uc3QgZT1hLmdldEZESW5kZXgoZik7aWYoLTE9PT1lKXt3YXJuKCJHbHlwaCBpbmRleCBpcyBub3QgaW4gZmQgc2VsZWN0LiIpO2g9ITF9aWYoZT49cy5sZW5ndGgpe3dhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpO2g9ITF9aWYoaCl7bT1zW2VdLnByaXZhdGVEaWN0O3U9bS5zdWJyc0luZGV4fX1lbHNlIHQmJih1PXQpO2gmJj10aGlzLnBhcnNlQ2hhclN0cmluZyhjLGwsdSxuKTtpZihudWxsIT09Yy53aWR0aCl7Y29uc3QgZT1tLmdldEJ5TmFtZSgibm9taW5hbFdpZHRoWCIpO29bZl09ZStjLndpZHRofWVsc2V7Y29uc3QgZT1tLmdldEJ5TmFtZSgiZGVmYXVsdFdpZHRoWCIpO29bZl09ZX1udWxsIT09Yy5zZWFjJiYoaVtmXT1jLnNlYWMpO2h8fGUuc2V0KGYsbmV3IFVpbnQ4QXJyYXkoWzE0XSkpfXJldHVybntjaGFyU3RyaW5nczplLHNlYWNzOmksd2lkdGhzOm99fWVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSl7Y29uc3QgdD10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsW10sZS5zdHJpbmdzKTtlLnNldEJ5S2V5KDE4LFswLDBdKTtlLnByaXZhdGVEaWN0PXR9cGFyc2VQcml2YXRlRGljdChlKXtpZighZS5oYXNOYW1lKCJQcml2YXRlIikpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgdD1lLmdldEJ5TmFtZSgiUHJpdmF0ZSIpO2lmKCFBcnJheS5pc0FycmF5KHQpfHwyIT09dC5sZW5ndGgpe2UucmVtb3ZlQnlOYW1lKCJQcml2YXRlIik7cmV0dXJufWNvbnN0IG49dFswXSxhPXRbMV07aWYoMD09PW58fGE+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWlmKGErbj50aGlzLmJ5dGVzLmxlbmd0aCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkNGRiBQcml2YXRlIERJQ1QgZXh0ZW5kcyBwYXN0IGVuZCBvZiBmb250Iik7Y29uc3Qgcz1hK24scj10aGlzLmJ5dGVzLnN1YmFycmF5KGEscyksaT10aGlzLnBhcnNlRGljdChyKSxvPXRoaXMuY3JlYXRlRGljdChDRkZQcml2YXRlRGljdCxpLGUuc3RyaW5ncyk7ZS5wcml2YXRlRGljdD1vO2NvbnN0IGw9by5nZXRCeU5hbWUoIkJsdWVTY2FsZSIpLGY9by5nZXRCeU5hbWUoIkJsdWVTaGlmdCIpLGM9by5nZXRCeU5hbWUoIkJsdWVGdXp6IiksaD1vLmdldEJ5TmFtZSgiRXhwYW5zaW9uRmFjdG9yIik7aWYoMD09PWwmJjA9PT1mJiYwPT09YyYmMD09PWgpe28uc2V0QnlOYW1lKCJCbHVlU2NhbGUiLEJhKTtvLnNldEJ5TmFtZSgiQmx1ZVNoaWZ0Iiw3KTtvLnNldEJ5TmFtZSgiQmx1ZUZ1enoiLDEpfTA9PT1oJiZvLnNldEJ5TmFtZSgiRXhwYW5zaW9uRmFjdG9yIiwuMDYpO2lmKGw+MCl7bGV0IGU9MDtmb3IoY29uc3QgdCBvZltvLmdldEJ5TmFtZSgiQmx1ZVZhbHVlcyIpLG8uZ2V0QnlOYW1lKCJPdGhlckJsdWVzIildKWlmKHQpZm9yKGxldCBuPTE7bjx0Lmxlbmd0aDtuKz0yKXRbbl0+ZSYmKGU9dFtuXSk7aWYoZT4wKXtjb25zdCB0PTFlNSxuPS41L2UsYT1NYXRoQ2xhbXAobCxuPD1CYT9NYXRoLmNlaWwobip0KS90Oi0xLzAsTWF0aC5mbG9vcih0L2UpL3QpO2EhPT1sJiZvLnNldEJ5TmFtZSgiQmx1ZVNjYWxlIixhKX19aWYoIW8uZ2V0QnlOYW1lKCJTdWJycyIpKXJldHVybjtjb25zdCB1PW8uZ2V0QnlOYW1lKCJTdWJycyIpLG09YSt1O2lmKDA9PT11fHxtPj10aGlzLmJ5dGVzLmxlbmd0aCl7dGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO3JldHVybn1jb25zdCBwPXRoaXMucGFyc2VJbmRleChtKTtvLnN1YnJzSW5kZXg9cC5vYmp9cGFyc2VDaGFyc2V0cyhlLHQsbixhKXtpZigwPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsRWEuSVNPX0FET0JFLEZhKTtpZigxPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsRWEuRVhQRVJULFRhKTtpZigyPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsRWEuRVhQRVJUX1NVQlNFVCxSYSk7Y29uc3R7Ynl0ZXM6c309dGhpcyxyPXNbZSsrXSxpPVthPzA6Ii5ub3RkZWYiXTtsZXQgbyxsLGY7dC09MTtzd2l0Y2gocil7Y2FzZSAwOmZvcihmPTA7Zjx0O2YrKyl7bz1zW2UrK108PDh8c1tlKytdO2kucHVzaChhP286bi5nZXQobykpfWJyZWFrO2Nhc2UgMTpmb3IoO2kubGVuZ3RoPD10Oyl7bz1zW2UrK108PDh8c1tlKytdO2w9c1tlKytdO2ZvcihmPTA7Zjw9bDtmKyspaS5wdXNoKGE/bysrOm4uZ2V0KG8rKykpfWJyZWFrO2Nhc2UgMjpmb3IoO2kubGVuZ3RoPD10Oyl7bz1zW2UrK108PDh8c1tlKytdO2w9c1tlKytdPDw4fHNbZSsrXTtmb3IoZj0wO2Y8PWw7ZisrKWkucHVzaChhP28rKzpuLmdldChvKyspKX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBjaGFyc2V0IGZvcm1hdCIpfXJldHVybiBuZXcgQ0ZGQ2hhcnNldCghMSxyLGkpfXBhcnNlRW5jb2RpbmcoZSx0LG4sYSl7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpLHI9dGhpcy5ieXRlcztsZXQgaSxvLGwsZj0hMSxjPW51bGw7aWYoMD09PWV8fDE9PT1lKXtmPSEwO2k9ZTtjb25zdCB0PWU/Y2E6bWE7Zm9yKG89MCxsPWEubGVuZ3RoO288bDtvKyspe2NvbnN0IGU9dC5pbmRleE9mKGFbb10pOy0xIT09ZSYmKHNbZV09byl9fWVsc2V7Y29uc3QgdD1lO2k9cltlKytdO3N3aXRjaCgxMjcmaSl7Y2FzZSAwOmNvbnN0IHQ9cltlKytdO2ZvcihvPTE7bzw9dDtvKyspc1tyW2UrK11dPW87YnJlYWs7Y2FzZSAxOmNvbnN0IG49cltlKytdO2xldCBhPTE7Zm9yKG89MDtvPG47bysrKXtjb25zdCB0PXJbZSsrXSxuPXJbZSsrXTtmb3IobGV0IGU9dDtlPD10K247ZSsrKXNbZV09YSsrfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIGVuY29kaW5nIGZvcm1hdDogJHtpfSBpbiBDRkZgKX1jb25zdCBsPWU7aWYoMTI4Jmkpe3JbdF0mPTEyNzshZnVuY3Rpb24gcmVhZFN1cHBsZW1lbnQoKXtjb25zdCB0PXJbZSsrXTtmb3Iobz0wO288dDtvKyspe2NvbnN0IHQ9cltlKytdLGk9KHJbZSsrXTw8OCkrKDI1NSZyW2UrK10pO3NbdF09YS5pbmRleE9mKG4uZ2V0KGkpKX19KCl9Yz1yLnN1YmFycmF5KHQsbCl9aSY9MTI3O3JldHVybiBuZXcgQ0ZGRW5jb2RpbmcoZixpLHMsYyl9cGFyc2VGRFNlbGVjdChlLHQpe2NvbnN0IG49dGhpcy5ieXRlcyxhPW5bZSsrXSxzPVtdO2xldCByO3N3aXRjaChhKXtjYXNlIDA6Zm9yKHI9MDtyPHQ7KytyKXtjb25zdCB0PW5bZSsrXTtzLnB1c2godCl9YnJlYWs7Y2FzZSAzOmNvbnN0IGk9bltlKytdPDw4fG5bZSsrXTtmb3Iocj0wO3I8aTsrK3Ipe2xldCB0PW5bZSsrXTw8OHxuW2UrK107aWYoMD09PXImJjAhPT10KXt3YXJuKCJwYXJzZUZEU2VsZWN0OiBUaGUgZmlyc3QgcmFuZ2UgbXVzdCBoYXZlIGEgZmlyc3QgR0lEIG9mIDAgLS0gdHJ5aW5nIHRvIHJlY292ZXIuIik7dD0wfWNvbnN0IGE9bltlKytdLGk9bltlXTw8OHxuW2UrMV07Zm9yKGxldCBlPXQ7ZTxpOysrZSlzLnB1c2goYSl9ZSs9MjticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgcGFyc2VGRFNlbGVjdDogVW5rbm93biBmb3JtYXQgIiR7YX0iLmApfWlmKHMubGVuZ3RoIT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInBhcnNlRkRTZWxlY3Q6IEludmFsaWQgZm9udCBkYXRhLiIpO3JldHVybiBuZXcgQ0ZGRkRTZWxlY3QoYSxzKX19Y2xhc3MgQ0ZGe2hlYWRlcj1udWxsO25hbWVzPVtdO3RvcERpY3Q9bnVsbDtzdHJpbmdzPW5ldyBDRkZTdHJpbmdzO2dsb2JhbFN1YnJJbmRleD1udWxsO2VuY29kaW5nPW51bGw7Y2hhcnNldD1udWxsO2NoYXJTdHJpbmdzPW51bGw7ZmRBcnJheT1bXTtmZFNlbGVjdD1udWxsO2lzQ0lERm9udD0hMTtjaGFyU3RyaW5nQ291bnQ9MDtjb25zdHJ1Y3RvcihlPTApe3RoaXMucmF3RmlsZUxlbmd0aD1lfWR1cGxpY2F0ZUZpcnN0R2x5cGgoKXtpZih0aGlzLmNoYXJTdHJpbmdzLmNvdW50Pj02NTUzNSl7d2FybigiTm90IGVub3VnaCBzcGFjZSBpbiBjaGFyc3RyaW5ncyB0byBkdXBsaWNhdGUgZmlyc3QgZ2x5cGguIik7cmV0dXJufWNvbnN0IGU9dGhpcy5jaGFyU3RyaW5ncy5nZXQoMCk7dGhpcy5jaGFyU3RyaW5ncy5hZGQoZSk7dGhpcy5pc0NJREZvbnQmJnRoaXMuZmRTZWxlY3QuZmRTZWxlY3QucHVzaCh0aGlzLmZkU2VsZWN0LmZkU2VsZWN0WzBdKX1oYXNHbHlwaElkKGUpe2lmKGU8MHx8ZT49dGhpcy5jaGFyU3RyaW5ncy5jb3VudClyZXR1cm4hMTtyZXR1cm4gdGhpcy5jaGFyU3RyaW5ncy5nZXQoZSkubGVuZ3RoPjB9fWNsYXNzIENGRkhlYWRlcntjb25zdHJ1Y3RvcihlLHQsbixhKXt0aGlzLm1ham9yPWU7dGhpcy5taW5vcj10O3RoaXMuaGRyU2l6ZT1uO3RoaXMub2ZmU2l6ZT1hfX1jbGFzcyBDRkZTdHJpbmdze3N0cmluZ3M9W107Z2V0KGUpe3JldHVybiBlPj0wJiZlPD0zOTA/T2FbZV06ZS1IYTw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS1IYV06T2FbMF19Z2V0U0lEKGUpe2xldCB0PU9hLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0O3Q9dGhpcy5zdHJpbmdzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT10P3QrSGE6LTF9YWRkKGUpe3RoaXMuc3RyaW5ncy5wdXNoKGUpfWdldCBjb3VudCgpe3JldHVybiB0aGlzLnN0cmluZ3MubGVuZ3RofX1jbGFzcyBDRkZJbmRleHtvYmplY3RzPVtdO2xlbmd0aD0wO2FkZChlKXt0aGlzLmxlbmd0aCs9ZS5sZW5ndGg7dGhpcy5vYmplY3RzLnB1c2goZSl9c2V0KGUsdCl7dGhpcy5sZW5ndGgrPXQubGVuZ3RoLXRoaXMub2JqZWN0c1tlXS5sZW5ndGg7dGhpcy5vYmplY3RzW2VdPXR9Z2V0KGUpe3JldHVybiB0aGlzLm9iamVjdHNbZV19Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMub2JqZWN0cy5sZW5ndGh9fWNsYXNzIENGRkRpY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmtleVRvTmFtZU1hcD1lLmtleVRvTmFtZU1hcDt0aGlzLm5hbWVUb0tleU1hcD1lLm5hbWVUb0tleU1hcDt0aGlzLmRlZmF1bHRzPWUuZGVmYXVsdHM7dGhpcy50eXBlcz1lLnR5cGVzO3RoaXMub3Bjb2Rlcz1lLm9wY29kZXM7dGhpcy5vcmRlcj1lLm9yZGVyO3RoaXMuc3RyaW5ncz10O3RoaXMudmFsdWVzPU9iamVjdC5jcmVhdGUobnVsbCl9c2V0QnlLZXkoZSx0KXtpZighKGUgaW4gdGhpcy5rZXlUb05hbWVNYXApKXJldHVybiExO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4hMDtmb3IoY29uc3QgbiBvZiB0KWlmKGlzTmFOKG4pKXt3YXJuKGBJbnZhbGlkIENGRkRpY3QgdmFsdWU6ICIke3R9IiBmb3Iga2V5ICIke2V9Ii5gKTtyZXR1cm4hMH1jb25zdCBuPXRoaXMudHlwZXNbZV07Im51bSIhPT1uJiYic2lkIiE9PW4mJiJvZmZzZXQiIT09bnx8KHQ9dFswXSk7dGhpcy52YWx1ZXNbZV09dDtyZXR1cm4hMH1zZXRCeU5hbWUoZSx0KXtpZighKGUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIiR7ZX0iYCk7dGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dPXR9aGFzTmFtZShlKXtyZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbZV1pbiB0aGlzLnZhbHVlc31nZXRCeU5hbWUoZSl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZGljdGlvbmFyeSBuYW1lICR7ZX0iYCk7Y29uc3QgdD10aGlzLm5hbWVUb0tleU1hcFtlXTtyZXR1cm4gdCBpbiB0aGlzLnZhbHVlcz90aGlzLnZhbHVlc1t0XTp0aGlzLmRlZmF1bHRzW3RdfXJlbW92ZUJ5TmFtZShlKXtkZWxldGUgdGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dfXN0YXRpYyBjcmVhdGVUYWJsZXMoZSl7Y29uc3QgdD17a2V5VG9OYW1lTWFwOnt9LG5hbWVUb0tleU1hcDp7fSxkZWZhdWx0czp7fSx0eXBlczp7fSxvcGNvZGVzOnt9LG9yZGVyOltdfTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPUFycmF5LmlzQXJyYXkoblswXSk/KG5bMF1bMF08PDgpK25bMF1bMV06blswXTt0LmtleVRvTmFtZU1hcFtlXT1uWzFdO3QubmFtZVRvS2V5TWFwW25bMV1dPWU7dC50eXBlc1tlXT1uWzJdO3QuZGVmYXVsdHNbZV09blszXTt0Lm9wY29kZXNbZV09QXJyYXkuaXNBcnJheShuWzBdKT9uWzBdOltuWzBdXTt0Lm9yZGVyLnB1c2goZSl9cmV0dXJuIHR9fWNvbnN0IE5hPVtbWzEyLDMwXSwiUk9TIixbInNpZCIsInNpZCIsIm51bSJdLG51bGxdLFtbMTIsMjBdLCJTeW50aGV0aWNCYXNlIiwibnVtIixudWxsXSxbMCwidmVyc2lvbiIsInNpZCIsbnVsbF0sWzEsIk5vdGljZSIsInNpZCIsbnVsbF0sW1sxMiwwXSwiQ29weXJpZ2h0Iiwic2lkIixudWxsXSxbMiwiRnVsbE5hbWUiLCJzaWQiLG51bGxdLFszLCJGYW1pbHlOYW1lIiwic2lkIixudWxsXSxbNCwiV2VpZ2h0Iiwic2lkIixudWxsXSxbWzEyLDFdLCJpc0ZpeGVkUGl0Y2giLCJudW0iLDBdLFtbMTIsMl0sIkl0YWxpY0FuZ2xlIiwibnVtIiwwXSxbWzEyLDNdLCJVbmRlcmxpbmVQb3NpdGlvbiIsIm51bSIsLTEwMF0sW1sxMiw0XSwiVW5kZXJsaW5lVGhpY2tuZXNzIiwibnVtIiw1MF0sW1sxMiw1XSwiUGFpbnRUeXBlIiwibnVtIiwwXSxbWzEyLDZdLCJDaGFyc3RyaW5nVHlwZSIsIm51bSIsMl0sW1sxMiw3XSwiRm9udE1hdHJpeCIsWyJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iXSxbLjAwMSwwLDAsLjAwMSwwLDBdXSxbMTMsIlVuaXF1ZUlEIiwibnVtIixudWxsXSxbNSwiRm9udEJCb3giLFsibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWzAsMCwwLDBdXSxbWzEyLDhdLCJTdHJva2VXaWR0aCIsIm51bSIsMF0sWzE0LCJYVUlEIiwiYXJyYXkiLG51bGxdLFsxNSwiY2hhcnNldCIsIm9mZnNldCIsMF0sWzE2LCJFbmNvZGluZyIsIm9mZnNldCIsMF0sWzE3LCJDaGFyU3RyaW5ncyIsIm9mZnNldCIsMF0sWzE4LCJQcml2YXRlIixbIm9mZnNldCIsIm9mZnNldCJdLG51bGxdLFtbMTIsMjFdLCJQb3N0U2NyaXB0Iiwic2lkIixudWxsXSxbWzEyLDIyXSwiQmFzZUZvbnROYW1lIiwic2lkIixudWxsXSxbWzEyLDIzXSwiQmFzZUZvbnRCbGVuZCIsImRlbHRhIixudWxsXSxbWzEyLDMxXSwiQ0lERm9udFZlcnNpb24iLCJudW0iLDBdLFtbMTIsMzJdLCJDSURGb250UmV2aXNpb24iLCJudW0iLDBdLFtbMTIsMzNdLCJDSURGb250VHlwZSIsIm51bSIsMF0sW1sxMiwzNF0sIkNJRENvdW50IiwibnVtIiw4NzIwXSxbWzEyLDM1XSwiVUlEQmFzZSIsIm51bSIsbnVsbF0sW1sxMiwzN10sIkZEU2VsZWN0Iiwib2Zmc2V0IixudWxsXSxbWzEyLDM2XSwiRkRBcnJheSIsIm9mZnNldCIsbnVsbF0sW1sxMiwzOF0sIkZvbnROYW1lIiwic2lkIixudWxsXV07Y2xhc3MgQ0ZGVG9wRGljdCBleHRlbmRzIENGRkRpY3R7c3RhdGljIGdldCB0YWJsZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoTmEpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZUb3BEaWN0LnRhYmxlcyxlKTt0aGlzLnByaXZhdGVEaWN0PW51bGx9fWNvbnN0IFBhPVtbNiwiQmx1ZVZhbHVlcyIsImRlbHRhIixudWxsXSxbNywiT3RoZXJCbHVlcyIsImRlbHRhIixudWxsXSxbOCwiRmFtaWx5Qmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzksIkZhbWlseU90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sW1sxMiw5XSwiQmx1ZVNjYWxlIiwibnVtIixCYV0sW1sxMiwxMF0sIkJsdWVTaGlmdCIsIm51bSIsN10sW1sxMiwxMV0sIkJsdWVGdXp6IiwibnVtIiwxXSxbMTAsIlN0ZEhXIiwibnVtIixudWxsXSxbMTEsIlN0ZFZXIiwibnVtIixudWxsXSxbWzEyLDEyXSwiU3RlbVNuYXBIIiwiZGVsdGEiLG51bGxdLFtbMTIsMTNdLCJTdGVtU25hcFYiLCJkZWx0YSIsbnVsbF0sW1sxMiwxNF0sIkZvcmNlQm9sZCIsIm51bSIsMF0sW1sxMiwxN10sIkxhbmd1YWdlR3JvdXAiLCJudW0iLDBdLFtbMTIsMThdLCJFeHBhbnNpb25GYWN0b3IiLCJudW0iLC4wNl0sW1sxMiwxOV0sImluaXRpYWxSYW5kb21TZWVkIiwibnVtIiwwXSxbMjAsImRlZmF1bHRXaWR0aFgiLCJudW0iLDBdLFsyMSwibm9taW5hbFdpZHRoWCIsIm51bSIsMF0sWzE5LCJTdWJycyIsIm9mZnNldCIsbnVsbF1dO2NsYXNzIENGRlByaXZhdGVEaWN0IGV4dGVuZHMgQ0ZGRGljdHtzdGF0aWMgZ2V0IHRhYmxlcygpe3JldHVybiBzaGFkb3codGhpcywidGFibGVzIix0aGlzLmNyZWF0ZVRhYmxlcyhQYSkpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKENGRlByaXZhdGVEaWN0LnRhYmxlcyxlKTt0aGlzLnN1YnJzSW5kZXg9bnVsbH19Y29uc3QgRWE9e0lTT19BRE9CRTowLEVYUEVSVDoxLEVYUEVSVF9TVUJTRVQ6Mn07Y2xhc3MgQ0ZGQ2hhcnNldHtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmNoYXJzZXQ9bn19Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LG4sYSl7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPW47dGhpcy5yYXc9YX19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fWNsYXNzIENGRk9mZnNldFRyYWNrZXJ7b2Zmc2V0cz1PYmplY3QuY3JlYXRlKG51bGwpO2lzVHJhY2tpbmcoZSl7cmV0dXJuIGUgaW4gdGhpcy5vZmZzZXRzfXRyYWNrKGUsdCl7aWYoZSBpbiB0aGlzLm9mZnNldHMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBBbHJlYWR5IHRyYWNraW5nIGxvY2F0aW9uIG9mICR7ZX1gKTt0aGlzLm9mZnNldHNbZV09dH1vZmZzZXQoZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5vZmZzZXRzKXRoaXMub2Zmc2V0c1t0XSs9ZX1zZXRFbnRyeUxvY2F0aW9uKGUsdCxuKXtpZighKGUgaW4gdGhpcy5vZmZzZXRzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYE5vdCB0cmFja2luZyBsb2NhdGlvbiBvZiAke2V9YCk7Y29uc3QgYT1uLmRhdGEscz10aGlzLm9mZnNldHNbZV07Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47KytlKXtjb25zdCBuPTUqZStzLHI9bisxLGk9bisyLG89biszLGw9bis0O2lmKDI5IT09YVtuXXx8MCE9PWFbcl18fDAhPT1hW2ldfHwwIT09YVtvXXx8MCE9PWFbbF0pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ3cml0aW5nIHRvIGFuIG9mZnNldCB0aGF0IGlzIG5vdCBlbXB0eSIpO2NvbnN0IGY9dFtlXTthW25dPTI5O2Fbcl09Zj4+MjQmMjU1O2FbaV09Zj4+MTYmMjU1O2Fbb109Zj4+OCYyNTU7YVtsXT0yNTUmZn19fWNsYXNzIENGRkNvbXBpbGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuY2ZmPWV9Y29tcGlsZSgpe2NvbnN0IGU9dGhpcy5jZmYsdD1uZXcgRGF0YUJ1aWxkZXIoe21pbkxlbmd0aDplLnJhd0ZpbGVMZW5ndGh9KSxuPXRoaXMuY29tcGlsZUhlYWRlcihlLmhlYWRlcik7dC5zZXRBcnJheShuKTtjb25zdCBhPXRoaXMuY29tcGlsZU5hbWVJbmRleChlLm5hbWVzKTt0LnNldEFycmF5KGEpO2lmKGUuaXNDSURGb250JiZlLnRvcERpY3QuaGFzTmFtZSgiRm9udE1hdHJpeCIpKXtjb25zdCB0PWUudG9wRGljdC5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKTtlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJGb250TWF0cml4Iik7Zm9yKGNvbnN0IG4gb2YgZS5mZEFycmF5KXtsZXQgZT10LnNsaWNlKDApO24uaGFzTmFtZSgiRm9udE1hdHJpeCIpJiYoZT1VdGlsLnRyYW5zZm9ybShlLG4uZ2V0QnlOYW1lKCJGb250TWF0cml4IikpKTtuLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsZSl9fWNvbnN0IHM9ZS50b3BEaWN0LmdldEJ5TmFtZSgiWFVJRCIpO3M/Lmxlbmd0aD4xNiYmZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiWFVJRCIpO2UudG9wRGljdC5zZXRCeU5hbWUoImNoYXJzZXQiLDApO2xldCByPXRoaXMuY29tcGlsZVRvcERpY3RzKFtlLnRvcERpY3RdLHQubGVuZ3RoLGUuaXNDSURGb250KTt0LnNldEFycmF5KHIub3V0cHV0KTtjb25zdCBpPXIudHJhY2tlcnNbMF0sbz10aGlzLmNvbXBpbGVTdHJpbmdJbmRleChlLnN0cmluZ3Muc3RyaW5ncyk7dC5zZXRBcnJheShvKTtjb25zdCBsPXRoaXMuY29tcGlsZUluZGV4KGUuZ2xvYmFsU3VickluZGV4KTt0LnNldEFycmF5KGwpO2lmKGUuZW5jb2RpbmcmJmUudG9wRGljdC5oYXNOYW1lKCJFbmNvZGluZyIpKWlmKGUuZW5jb2RpbmcucHJlZGVmaW5lZClpLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbZS5lbmNvZGluZy5mb3JtYXRdLHQpO2Vsc2V7Y29uc3Qgbj10aGlzLmNvbXBpbGVFbmNvZGluZyhlLmVuY29kaW5nKTtpLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbdC5sZW5ndGhdLHQpO3Quc2V0QXJyYXkobil9Y29uc3QgZj10aGlzLmNvbXBpbGVDaGFyc2V0KGUuY2hhcnNldCxlLmNoYXJTdHJpbmdzLmNvdW50LGUuc3RyaW5ncyxlLmlzQ0lERm9udCk7aS5zZXRFbnRyeUxvY2F0aW9uKCJjaGFyc2V0IixbdC5sZW5ndGhdLHQpO3Quc2V0QXJyYXkoZik7Y29uc3QgYz10aGlzLmNvbXBpbGVDaGFyU3RyaW5ncyhlLmNoYXJTdHJpbmdzKTtpLnNldEVudHJ5TG9jYXRpb24oIkNoYXJTdHJpbmdzIixbdC5sZW5ndGhdLHQpO3Quc2V0QXJyYXkoYyk7aWYoZS5pc0NJREZvbnQpe2kuc2V0RW50cnlMb2NhdGlvbigiRkRTZWxlY3QiLFt0Lmxlbmd0aF0sdCk7Y29uc3Qgbj10aGlzLmNvbXBpbGVGRFNlbGVjdChlLmZkU2VsZWN0KTt0LnNldEFycmF5KG4pO3I9dGhpcy5jb21waWxlVG9wRGljdHMoZS5mZEFycmF5LHQubGVuZ3RoLCEwKTtpLnNldEVudHJ5TG9jYXRpb24oIkZEQXJyYXkiLFt0Lmxlbmd0aF0sdCk7dC5zZXRBcnJheShyLm91dHB1dCk7Y29uc3QgYT1yLnRyYWNrZXJzO3RoaXMuY29tcGlsZVByaXZhdGVEaWN0cyhlLmZkQXJyYXksYSx0KX10aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoW2UudG9wRGljdF0sW2ldLHQpO3Quc2V0QXJyYXkoWzBdKTtyZXR1cm4gdC5kYXRhfWVuY29kZU51bWJlcihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKT90aGlzLmVuY29kZUludGVnZXIoZSk6dGhpcy5lbmNvZGVGbG9hdChlKX1zdGF0aWMgZ2V0IEVuY29kZUZsb2F0UmVnRXhwKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJFbmNvZGVGbG9hdFJlZ0V4cCIsL1wuKFxkKj8pKD86OXs1LDIwfXwwezUsMjB9KVxkezAsMn0oPzplKC4rKXwkKS8pfWVuY29kZUZsb2F0KGUpe2xldCB0PWUudG9TdHJpbmcoKTtjb25zdCBuPUNGRkNvbXBpbGVyLkVuY29kZUZsb2F0UmVnRXhwLmV4ZWModCk7aWYobil7Y29uc3QgYT1wYXJzZUZsb2F0KCIxZSIrKChuWzJdPytuWzJdOjApK25bMV0ubGVuZ3RoKSk7dD0oTWF0aC5yb3VuZChlKmEpL2EpLnRvU3RyaW5nKCl9bGV0IGEscyxyPSIiO2ZvcihhPTAscz10Lmxlbmd0aDthPHM7KythKXtjb25zdCBlPXRbYV07cis9ImUiPT09ZT8iLSI9PT10WysrYV0/ImMiOiJiIjoiLiI9PT1lPyJhIjoiLSI9PT1lPyJlIjplfXIrPTEmci5sZW5ndGg/ImYiOiJmZiI7Y29uc3QgaT1bMzBdO2ZvcihhPTAscz1yLmxlbmd0aDthPHM7YSs9MilpLnB1c2gocGFyc2VJbnQoci5zdWJzdHJpbmcoYSxhKzIpLDE2KSk7cmV0dXJuIGl9ZW5jb2RlSW50ZWdlcihlKXtsZXQgdDt0PWU+PS0xMDcmJmU8PTEwNz9bZSsxMzldOmU+PTEwOCYmZTw9MTEzMT9bMjQ3KygoZS09MTA4KT4+OCksMjU1JmVdOmU+PS0xMTMxJiZlPD0tMTA4P1syNTErKChlPS1lLTEwOCk+PjgpLDI1NSZlXTplPj0tMzI3NjgmJmU8PTMyNzY3P1syOCxlPj44JjI1NSwyNTUmZV06WzI5LGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdO3JldHVybiB0fWNvbXBpbGVIZWFkZXIoZSl7cmV0dXJuW2UubWFqb3IsZS5taW5vciw0LGUub2ZmU2l6ZV19Y29tcGlsZU5hbWVJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPU1hdGgubWluKG4ubGVuZ3RoLDEyNyk7bGV0IGE9bmV3IEFycmF5KGUpO2ZvcihsZXQgdD0wO3Q8ZTt0Kyspe2xldCBlPW5bdF07KGU8IiEifHxlPiJ+Inx8IlsiPT09ZXx8Il0iPT09ZXx8IigiPT09ZXx8IikiPT09ZXx8InsiPT09ZXx8In0iPT09ZXx8IjwiPT09ZXx8Ij4iPT09ZXx8Ii8iPT09ZXx8IiUiPT09ZSkmJihlPSJfIik7YVt0XT1lfWE9YS5qb2luKCIiKTsiIj09PWEmJihhPSJCYWRfRm9udF9OYW1lIik7dC5hZGQoc3RyaW5nVG9CeXRlcyhhKSl9cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVUb3BEaWN0cyhlLHQsbil7Y29uc3QgYT1bXTtsZXQgcz1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IHIgb2YgZSl7aWYobil7ci5yZW1vdmVCeU5hbWUoIkNJREZvbnRWZXJzaW9uIik7ci5yZW1vdmVCeU5hbWUoIkNJREZvbnRSZXZpc2lvbiIpO3IucmVtb3ZlQnlOYW1lKCJDSURGb250VHlwZSIpO3IucmVtb3ZlQnlOYW1lKCJDSURDb3VudCIpO3IucmVtb3ZlQnlOYW1lKCJVSURCYXNlIil9Y29uc3QgZT1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixpPXRoaXMuY29tcGlsZURpY3QocixlKTthLnB1c2goZSk7cy5hZGQoaSk7ZS5vZmZzZXQodCl9cz10aGlzLmNvbXBpbGVJbmRleChzLGEpO3JldHVybnt0cmFja2VyczphLG91dHB1dDpzfX1jb21waWxlUHJpdmF0ZURpY3RzKGUsdCxuKXtmb3IobGV0IGE9MCxzPWUubGVuZ3RoO2E8czsrK2Epe2NvbnN0IHM9ZVthXSxyPXMucHJpdmF0ZURpY3Q7aWYoIXJ8fCFzLmhhc05hbWUoIlByaXZhdGUiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZXJlIG11c3QgYmUgYSBwcml2YXRlIGRpY3Rpb25hcnkuIik7Y29uc3QgaT1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixvPXRoaXMuY29tcGlsZURpY3QocixpKTtsZXQgbD1uLmxlbmd0aDtpLm9mZnNldChsKTtvLmxlbmd0aHx8KGw9MCk7dFthXS5zZXRFbnRyeUxvY2F0aW9uKCJQcml2YXRlIixbby5sZW5ndGgsbF0sbik7bi5zZXRBcnJheShvKTtpZihyLnN1YnJzSW5kZXgmJnIuaGFzTmFtZSgiU3VicnMiKSl7Y29uc3QgZT10aGlzLmNvbXBpbGVJbmRleChyLnN1YnJzSW5kZXgpO2kuc2V0RW50cnlMb2NhdGlvbigiU3VicnMiLFtvLmxlbmd0aF0sbik7bi5zZXRBcnJheShlKX19fWNvbXBpbGVEaWN0KGUsdCl7Y29uc3Qgbj1bXTtmb3IoY29uc3QgYSBvZiBlLm9yZGVyKXtpZighKGEgaW4gZS52YWx1ZXMpKWNvbnRpbnVlO2xldCBzPWUudmFsdWVzW2FdLHI9ZS50eXBlc1thXTtBcnJheS5pc0FycmF5KHIpfHwocj1bcl0pO0FycmF5LmlzQXJyYXkocyl8fChzPVtzXSk7aWYoMCE9PXMubGVuZ3RoKXtmb3IobGV0IGk9MCxvPXIubGVuZ3RoO2k8bzsrK2kpe2NvbnN0IG89cltpXSxsPXNbaV07c3dpdGNoKG8pe2Nhc2UibnVtIjpjYXNlInNpZCI6bi5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGwpKTticmVhaztjYXNlIm9mZnNldCI6Y29uc3Qgcj1lLmtleVRvTmFtZU1hcFthXTt0LmlzVHJhY2tpbmcocil8fHQudHJhY2socixuLmxlbmd0aCk7bi5wdXNoKDI5LDAsMCwwLDApO2JyZWFrO2Nhc2UiYXJyYXkiOmNhc2UiZGVsdGEiOm4ucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihsKSk7Zm9yKGxldCBlPTEsdD1zLmxlbmd0aDtlPHQ7KytlKW4ucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihzW2VdKSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gZGF0YSB0eXBlIG9mICR7b31gKX19bi5wdXNoKC4uLmUub3Bjb2Rlc1thXSl9fXJldHVybiBufWNvbXBpbGVTdHJpbmdJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgbiBvZiBlKXQuYWRkKHN0cmluZ1RvQnl0ZXMobikpO3JldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlQ2hhclN0cmluZ3MoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGxldCBuPTA7bjxlLmNvdW50O24rKyl7Y29uc3QgYT1lLmdldChuKTswIT09YS5sZW5ndGg/dC5hZGQoYSk6dC5hZGQobmV3IFVpbnQ4QXJyYXkoWzEzOSwxNF0pKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJzZXQoZSx0LG4sYSl7bGV0IHM7Y29uc3Qgcj10LTE7aWYoYSl7Y29uc3QgZT1yLTE7cz1uZXcgVWludDhBcnJheShbMiwwLDEsZT4+OCYyNTUsMjU1JmVdKX1lbHNle3M9bmV3IFVpbnQ4QXJyYXkoMSsyKnIpO2xldCB0PTA7Y29uc3QgYT1lLmNoYXJzZXQubGVuZ3RoO2xldCBpPSExO2ZvcihsZXQgcj0xO3I8cy5sZW5ndGg7cis9Mil7bGV0IG89MDtpZih0PGEpe2NvbnN0IGE9ZS5jaGFyc2V0W3QrK107bz1uLmdldFNJRChhKTtpZigtMT09PW8pe289MDtpZighaSl7aT0hMDt3YXJuKGBDb3VsZG4ndCBmaW5kICR7YX0gaW4gQ0ZGIHN0cmluZ3NgKX19fXNbcl09bz4+OCYyNTU7c1tyKzFdPTI1NSZvfX1yZXR1cm4gc31jb21waWxlRW5jb2RpbmcoZSl7cmV0dXJuIGUucmF3fWNvbXBpbGVGRFNlbGVjdChlKXtjb25zdCB0PWUuZm9ybWF0O2xldCBuLGE7c3dpdGNoKHQpe2Nhc2UgMDpuPW5ldyBVaW50OEFycmF5KDErZS5mZFNlbGVjdC5sZW5ndGgpO25bMF09dDtuLnNldChlLmZkU2VsZWN0LDEpO2JyZWFrO2Nhc2UgMzpjb25zdCBzPTA7bGV0IHI9ZS5mZFNlbGVjdFswXTtjb25zdCBpPVt0LDAsMCxzPj44JjI1NSwyNTUmcyxyXTtmb3IoYT0xO2E8ZS5mZFNlbGVjdC5sZW5ndGg7YSsrKXtjb25zdCB0PWUuZmRTZWxlY3RbYV07aWYodCE9PXIpe2kucHVzaChhPj44JjI1NSwyNTUmYSx0KTtyPXR9fWNvbnN0IG89KGkubGVuZ3RoLTMpLzM7aVsxXT1vPj44JjI1NTtpWzJdPTI1NSZvO2kucHVzaChhPj44JjI1NSwyNTUmYSk7bj1uZXcgVWludDhBcnJheShpKX1yZXR1cm4gbn1jb21waWxlSW5kZXgoZSx0PVtdKXtjb25zdCBuPWUub2JqZWN0cyxhPW4ubGVuZ3RoO2lmKDA9PT1hKXJldHVybiBuZXcgVWludDhBcnJheSgyKTtsZXQgcyxyLGk9MTtmb3Iocz0wO3M8YTsrK3MpaSs9bltzXS5sZW5ndGg7cj1pPDI1Nj8xOmk8NjU1MzY/MjppPDE2Nzc3MjE2PzM6NDtjb25zdCBvPW5ldyBVaW50OEFycmF5KDIrciooYSsxKStpKTtsZXQgbD0wO29bbCsrXT1hPj44JjI1NTtvW2wrK109MjU1JmE7b1tsKytdPXI7bGV0IGY9MTtmb3Iocz0wO3M8YSsxO3MrKyl7aWYoMT09PXIpb1tsKytdPTI1NSZmO2Vsc2UgaWYoMj09PXIpe29bbCsrXT1mPj44JjI1NTtvW2wrK109MjU1JmZ9ZWxzZSBpZigzPT09cil7b1tsKytdPWY+PjE2JjI1NTtvW2wrK109Zj4+OCYyNTU7b1tsKytdPTI1NSZmfWVsc2V7b1tsKytdPWY+Pj4yNCYyNTU7b1tsKytdPWY+PjE2JjI1NTtvW2wrK109Zj4+OCYyNTU7b1tsKytdPTI1NSZmfW5bc10mJihmKz1uW3NdLmxlbmd0aCl9Zm9yKHM9MDtzPGE7cysrKXt0W3NdPy5vZmZzZXQobCk7by5zZXQobltzXSxsKTtsKz1uW3NdLmxlbmd0aH1yZXR1cm4gb319Y29uc3QgX2E9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbIlRpbWVzLVJvbWFuIl09IlRpbWVzLVJvbWFuIjtlLkhlbHZldGljYT0iSGVsdmV0aWNhIjtlLkNvdXJpZXI9IkNvdXJpZXIiO2UuU3ltYm9sPSJTeW1ib2wiO2VbIlRpbWVzLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNvdXJpZXItQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2UuWmFwZkRpbmdiYXRzPSJaYXBmRGluZ2JhdHMiO2VbIlRpbWVzLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2VbIkhlbHZldGljYS1PYmxpcXVlIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iQ291cmllci1PYmxpcXVlIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZS5BcmlhbE5hcnJvdz0iSGVsdmV0aWNhIjtlWyJBcmlhbE5hcnJvdy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxOYXJyb3ctSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsQmxhY2s9IkhlbHZldGljYSI7ZVsiQXJpYWxCbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbEJsYWNrLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2siXT0iSGVsdmV0aWNhIjtlWyJBcmlhbC1CbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1CbGFjay1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxNVD0iSGVsdmV0aWNhIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1Cb2xkTVQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUl0YWxpY01UIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1JdGFsaWNNVC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3PSJDb3VyaWVyIjtlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIjtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkhlbHZldGljYUxUU3RkLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIjtlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCI7ZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSksemE9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2UuQ291cmllcj0iRm94aXRGaXhlZC5wZmIiO2VbIkNvdXJpZXItQm9sZCJdPSJGb3hpdEZpeGVkQm9sZC5wZmIiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iRm94aXRGaXhlZEJvbGRJdGFsaWMucGZiIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iRm94aXRGaXhlZEl0YWxpYy5wZmIiO2UuSGVsdmV0aWNhPSJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iTGliZXJhdGlvblNhbnMtSXRhbGljLnR0ZiI7ZVsiVGltZXMtUm9tYW4iXT0iRm94aXRTZXJpZi5wZmIiO2VbIlRpbWVzLUJvbGQiXT0iRm94aXRTZXJpZkJvbGQucGZiIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IkZveGl0U2VyaWZCb2xkSXRhbGljLnBmYiI7ZVsiVGltZXMtSXRhbGljIl09IkZveGl0U2VyaWZJdGFsaWMucGZiIjtlLlN5bWJvbD0iRm94aXRTeW1ib2wucGZiIjtlLlphcGZEaW5nYmF0cz0iRm94aXREaW5nYmF0cy5wZmIiO2VbIkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiXT0iTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUl0YWxpYyJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIn0pLExhPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLkNhbGlicmk9IkhlbHZldGljYSI7ZVsiQ2FsaWJyaS1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDYWxpYnJpLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDYWxpYnJpLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5DZW50dXJ5R290aGljPSJIZWx2ZXRpY2EiO2VbIkNlbnR1cnlHb3RoaWMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ2VudHVyeUdvdGhpYy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ2VudHVyeUdvdGhpYy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQ29taWNTYW5zTVM9IkNvbWljIFNhbnMgTVMiO2VbIkNvbWljU2Fuc01TLUJvbGQiXT0iQ29taWMgU2FucyBNUy1Cb2xkIjtlWyJDb21pY1NhbnNNUy1Cb2xkSXRhbGljIl09IkNvbWljIFNhbnMgTVMtQm9sZEl0YWxpYyI7ZVsiQ29taWNTYW5zTVMtSXRhbGljIl09IkNvbWljIFNhbnMgTVMtSXRhbGljIjtlLkdpbGxTYW5zTVQ9IkhlbHZldGljYSI7ZVsiR2lsbFNhbnNNVC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJHaWxsU2Fuc01ULUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJHaWxsU2Fuc01ULUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5JbXBhY3Q9IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkl0Y1N5bWJvbC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiSXRjU3ltYm9sLUJvb2siXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtQm9va0l0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiSXRjU3ltYm9sLU1lZGl1bSJdPSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1NZWRpdW1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuTHVjaWRhQ29uc29sZT0iQ291cmllciI7ZVsiTHVjaWRhQ29uc29sZS1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZVsiTHVjaWRhQ29uc29sZS1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkx1Y2lkYUNvbnNvbGUtSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZVsiTHVjaWRhU2Fucy1EZW1pIl09IkhlbHZldGljYS1Cb2xkIjtlWyJNUy1Hb3RoaWMiXT0iTVMgR290aGljIjtlWyJNUy1Hb3RoaWMtQm9sZCJdPSJNUyBHb3RoaWMtQm9sZCI7ZVsiTVMtR290aGljLUJvbGRJdGFsaWMiXT0iTVMgR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLUdvdGhpYy1JdGFsaWMiXT0iTVMgR290aGljLUl0YWxpYyI7ZVsiTVMtTWluY2hvIl09Ik1TIE1pbmNobyI7ZVsiTVMtTWluY2hvLUJvbGQiXT0iTVMgTWluY2hvLUJvbGQiO2VbIk1TLU1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIE1pbmNoby1Cb2xkSXRhbGljIjtlWyJNUy1NaW5jaG8tSXRhbGljIl09Ik1TIE1pbmNoby1JdGFsaWMiO2VbIk1TLVBHb3RoaWMiXT0iTVMgUEdvdGhpYyI7ZVsiTVMtUEdvdGhpYy1Cb2xkIl09Ik1TIFBHb3RoaWMtQm9sZCI7ZVsiTVMtUEdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIFBHb3RoaWMtQm9sZEl0YWxpYyI7ZVsiTVMtUEdvdGhpYy1JdGFsaWMiXT0iTVMgUEdvdGhpYy1JdGFsaWMiO2VbIk1TLVBNaW5jaG8iXT0iTVMgUE1pbmNobyI7ZVsiTVMtUE1pbmNoby1Cb2xkIl09Ik1TIFBNaW5jaG8tQm9sZCI7ZVsiTVMtUE1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIFBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtUE1pbmNoby1JdGFsaWMiXT0iTVMgUE1pbmNoby1JdGFsaWMiO2UuTnVwdGlhbFNjcmlwdD0iVGltZXMtSXRhbGljIjtlLlNlZ29lVUlTeW1ib2w9IkhlbHZldGljYSI7ZS5UcmVidWNoZXRNUz0iSGVsdmV0aWNhIjtlWyJUcmVidWNoZXRNUy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJUcmVidWNoZXRNUy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiVHJlYnVjaGV0TVMtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIn0pLFVhPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlWyJBZG9iZSBKZW5zb24iXT0hMDtlWyJBZG9iZSBUZXh0Il09ITA7ZS5BbGJlcnR1cz0hMDtlLkFsZHVzPSEwO2UuQWxleGFuZHJpYT0hMDtlLkFsZ2VyaWFuPSEwO2VbIkFtZXJpY2FuIFR5cGV3cml0ZXIiXT0hMDtlLkFudGlxdWE9ITA7ZS5BcGV4PSEwO2UuQXJubz0hMDtlLkFzdGVyPSEwO2UuQXVyb3JhPSEwO2UuQmFza2VydmlsbGU9ITA7ZS5CZWxsPSEwO2UuQmVtYm89ITA7ZVsiQmVtYm8gU2Nob29sYm9vayJdPSEwO2UuQmVuZ3VpYXQ9ITA7ZVsiQmVya2VsZXkgT2xkIFN0eWxlIl09ITA7ZVsiQmVybmhhcmQgTW9kZXJuIl09ITA7ZVsiQmVydGhvbGQgQ2l0eSJdPSEwO2UuQm9kb25pPSEwO2VbIkJhdWVyIEJvZG9uaSJdPSEwO2VbIkJvb2sgQW50aXF1YSJdPSEwO2UuQm9va21hbj0hMDtlWyJCb3JkZWF1eCBSb21hbiJdPSEwO2VbIkNhbGlmb3JuaWFuIEZCIl09ITA7ZS5DYWxpc3RvPSEwO2UuQ2FsdmVydD0hMDtlLkNhcGl0YWxzPSEwO2UuQ2FtYnJpYT0hMDtlLkNhcnRpZXI9ITA7ZS5DYXNsb249ITA7ZS5DYXR1bGw9ITA7ZS5DZW50YXVyPSEwO2VbIkNlbnR1cnkgT2xkIFN0eWxlIl09ITA7ZVsiQ2VudHVyeSBTY2hvb2xib29rIl09ITA7ZS5DaGFwYXJyYWw9ITA7ZVsiQ2hhcmlzIFNJTCJdPSEwO2UuQ2hlbHRlbmhhbT0hMDtlWyJDaG9sbGEgU2xhYiJdPSEwO2UuQ2xhcmVuZG9uPSEwO2UuQ2xlYXJmYWNlPSEwO2UuQ29jaGluPSEwO2UuQ29sb25uYT0hMDtlWyJDb21wdXRlciBNb2Rlcm4iXT0hMDtlWyJDb25jcmV0ZSBSb21hbiJdPSEwO2UuQ29uc3RhbnRpYT0hMDtlWyJDb29wZXIgQmxhY2siXT0hMDtlLkNvcm9uYT0hMDtlLkVjb3R5cGU9ITA7ZS5FZ3lwdGllbm5lPSEwO2UuRWxlcGhhbnQ9ITA7ZS5FeGNlbHNpb3I9ITA7ZS5GYWlyZmllbGQ9ITA7ZVsiRkYgU2NhbGEiXT0hMDtlLkZvbGthcmQ9ITA7ZS5Gb290bGlnaHQ9ITA7ZS5GcmVlU2VyaWY9ITA7ZVsiRnJpeiBRdWFkcmF0YSJdPSEwO2UuR2FyYW1vbmQ9ITA7ZS5HZW50aXVtPSEwO2UuR2VvcmdpYT0hMDtlLkdsb3VjZXN0ZXI9ITA7ZVsiR291ZHkgT2xkIFN0eWxlIl09ITA7ZVsiR291ZHkgU2Nob29sYm9vayJdPSEwO2VbIkdvdWR5IFBybyBGb250Il09ITA7ZS5HcmFuam9uPSEwO2VbIkd1YXJkaWFuIEVneXB0aWFuIl09ITA7ZS5IZWF0aGVyPSEwO2UuSGVyY3VsZXM9ITA7ZVsiSGlnaCBUb3dlciBUZXh0Il09ITA7ZS5IaXJvc2hpZ2U9ITA7ZVsiSG9lZmxlciBUZXh0Il09ITA7ZVsiSHVtYW5hIFNlcmlmIl09ITA7ZS5JbXByaW50PSEwO2VbIklvbmljIE5vLiA1Il09ITA7ZS5KYW5zb249ITA7ZS5Kb2FubmE9ITA7ZS5Lb3Jpbm5hPSEwO2UuTGV4aWNvbj0hMDtlLkxpYmVyYXRpb25TZXJpZj0hMDtlWyJMaWJlcmF0aW9uIFNlcmlmIl09ITA7ZVsiTGludXggTGliZXJ0aW5lIl09ITA7ZS5MaXRlcmF0dXJuYXlhPSEwO2UuTHVjaWRhPSEwO2VbIkx1Y2lkYSBCcmlnaHQiXT0hMDtlLk1lbGlvcj0hMDtlLk1lbXBoaXM9ITA7ZS5NaWxsZXI9ITA7ZS5NaW5pb249ITA7ZS5Nb2Rlcm49ITA7ZVsiTW9uYSBMaXNhIl09ITA7ZVsiTXJzIEVhdmVzIl09ITA7ZVsiTVMgU2VyaWYiXT0hMDtlWyJNdXNlbyBTbGFiIl09ITA7ZVsiTmV3IFlvcmsiXT0hMDtlWyJOaW1idXMgUm9tYW4iXT0hMDtlWyJOUFMgUmF3bGluc29uIFJvYWR3YXkiXT0hMDtlLk51cHRpYWxTY3JpcHQ9ITA7ZS5QYWxhdGlubz0hMDtlLlBlcnBldHVhPSEwO2UuUGxhbnRpbj0hMDtlWyJQbGFudGluIFNjaG9vbGJvb2siXT0hMDtlLlBsYXliaWxsPSEwO2VbIlBvb3IgUmljaGFyZCJdPSEwO2VbIlJhd2xpbnNvbiBSb2Fkd2F5Il09ITA7ZS5SZW5hdWx0PSEwO2UuUmVxdWllbT0hMDtlLlJvY2t3ZWxsPSEwO2UuUm9tYW49ITA7ZVsiUm90aXMgU2VyaWYiXT0hMDtlLlNhYm9uPSEwO2UuU2NhbGE9ITA7ZS5TZWFndWxsPSEwO2UuU2lzdGluYT0hMDtlLlNvdXZlbmlyPSEwO2UuU1RJWD0hMDtlWyJTdG9uZSBJbmZvcm1hbCJdPSEwO2VbIlN0b25lIFNlcmlmIl09ITA7ZS5TeWxmYWVuPSEwO2UuVGltZXM9ITA7ZS5UcmFqYW49ITA7ZVsiVHJpbml0w6kiXT0hMDtlWyJUcnVtcCBNZWRpYWV2YWwiXT0hMDtlLlV0b3BpYT0hMDtlWyJWYWxlIFR5cGUiXT0hMDtlWyJCaXRzdHJlYW0gVmVyYSJdPSEwO2VbIlZlcmEgU2VyaWYiXT0hMDtlLlZlcnNhaWxsZXM9ITA7ZS5XYW50ZWQ9ITA7ZS5XZWlzcz0hMDtlWyJXaWRlIExhdGluIl09ITA7ZS5XaW5kc29yPSEwO2UuWElUUz0hMH0pLFdhPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLkRpbmdiYXRzPSEwO2UuU3ltYm9sPSEwO2UuWmFwZkRpbmdiYXRzPSEwO2UuV2luZ2RpbmdzPSEwO2VbIldpbmdkaW5ncy1Cb2xkIl09ITA7ZVsiV2luZ2RpbmdzLVJlZ3VsYXIiXT0hMH0pLFhhPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlWzJdPTEwO2VbM109MzI7ZVs0XT0zMztlWzVdPTM0O2VbNl09MzU7ZVs3XT0zNjtlWzhdPTM3O2VbOV09Mzg7ZVsxMF09Mzk7ZVsxMV09NDA7ZVsxMl09NDE7ZVsxM109NDI7ZVsxNF09NDM7ZVsxNV09NDQ7ZVsxNl09NDU7ZVsxN109NDY7ZVsxOF09NDc7ZVsxOV09NDg7ZVsyMF09NDk7ZVsyMV09NTA7ZVsyMl09NTE7ZVsyM109NTI7ZVsyNF09NTM7ZVsyNV09NTQ7ZVsyNl09NTU7ZVsyN109NTY7ZVsyOF09NTc7ZVsyOV09NTg7ZVszMF09ODk0O2VbMzFdPTYwO2VbMzJdPTYxO2VbMzNdPTYyO2VbMzRdPTYzO2VbMzVdPTY0O2VbMzZdPTY1O2VbMzddPTY2O2VbMzhdPTY3O2VbMzldPTY4O2VbNDBdPTY5O2VbNDFdPTcwO2VbNDJdPTcxO2VbNDNdPTcyO2VbNDRdPTczO2VbNDVdPTc0O2VbNDZdPTc1O2VbNDddPTc2O2VbNDhdPTc3O2VbNDldPTc4O2VbNTBdPTc5O2VbNTFdPTgwO2VbNTJdPTgxO2VbNTNdPTgyO2VbNTRdPTgzO2VbNTVdPTg0O2VbNTZdPTg1O2VbNTddPTg2O2VbNThdPTg3O2VbNTldPTg4O2VbNjBdPTg5O2VbNjFdPTkwO2VbNjJdPTkxO2VbNjNdPTkyO2VbNjRdPTkzO2VbNjVdPTk0O2VbNjZdPTk1O2VbNjddPTk2O2VbNjhdPTk3O2VbNjldPTk4O2VbNzBdPTk5O2VbNzFdPTEwMDtlWzcyXT0xMDE7ZVs3M109MTAyO2VbNzRdPTEwMztlWzc1XT0xMDQ7ZVs3Nl09MTA1O2VbNzddPTEwNjtlWzc4XT0xMDc7ZVs3OV09MTA4O2VbODBdPTEwOTtlWzgxXT0xMTA7ZVs4Ml09MTExO2VbODNdPTExMjtlWzg0XT0xMTM7ZVs4NV09MTE0O2VbODZdPTExNTtlWzg3XT0xMTY7ZVs4OF09MTE3O2VbODldPTExODtlWzkwXT0xMTk7ZVs5MV09MTIwO2VbOTJdPTEyMTtlWzkzXT0xMjI7ZVs5NF09MTIzO2VbOTVdPTEyNDtlWzk2XT0xMjU7ZVs5N109MTI2O2VbOThdPTE5NjtlWzk5XT0xOTc7ZVsxMDBdPTE5OTtlWzEwMV09MjAxO2VbMTAyXT0yMDk7ZVsxMDNdPTIxNDtlWzEwNF09MjIwO2VbMTA1XT0yMjU7ZVsxMDZdPTIyNDtlWzEwN109MjI2O2VbMTA4XT0yMjg7ZVsxMDldPTIyNztlWzExMF09MjI5O2VbMTExXT0yMzE7ZVsxMTJdPTIzMztlWzExM109MjMyO2VbMTE0XT0yMzQ7ZVsxMTVdPTIzNTtlWzExNl09MjM3O2VbMTE3XT0yMzY7ZVsxMThdPTIzODtlWzExOV09MjM5O2VbMTIwXT0yNDE7ZVsxMjFdPTI0MztlWzEyMl09MjQyO2VbMTIzXT0yNDQ7ZVsxMjRdPTI0NjtlWzEyNV09MjQ1O2VbMTI2XT0yNTA7ZVsxMjddPTI0OTtlWzEyOF09MjUxO2VbMTI5XT0yNTI7ZVsxMzBdPTgyMjQ7ZVsxMzFdPTE3NjtlWzEzMl09MTYyO2VbMTMzXT0xNjM7ZVsxMzRdPTE2NztlWzEzNV09ODIyNjtlWzEzNl09MTgyO2VbMTM3XT0yMjM7ZVsxMzhdPTE3NDtlWzEzOV09MTY5O2VbMTQwXT04NDgyO2VbMTQxXT0xODA7ZVsxNDJdPTE2ODtlWzE0M109ODgwMDtlWzE0NF09MTk4O2VbMTQ1XT0yMTY7ZVsxNDZdPTg3MzQ7ZVsxNDddPTE3NztlWzE0OF09ODgwNDtlWzE0OV09ODgwNTtlWzE1MF09MTY1O2VbMTUxXT0xODE7ZVsxNTJdPTg3MDY7ZVsxNTNdPTg3MjE7ZVsxNTRdPTg3MTk7ZVsxNTZdPTg3NDc7ZVsxNTddPTE3MDtlWzE1OF09MTg2O2VbMTU5XT04NDg2O2VbMTYwXT0yMzA7ZVsxNjFdPTI0ODtlWzE2Ml09MTkxO2VbMTYzXT0xNjE7ZVsxNjRdPTE3MjtlWzE2NV09ODczMDtlWzE2Nl09NDAyO2VbMTY3XT04Nzc2O2VbMTY4XT04NzEwO2VbMTY5XT0xNzE7ZVsxNzBdPTE4NztlWzE3MV09ODIzMDtlWzE3OV09ODIyMDtlWzE4MF09ODIyMTtlWzE4MV09ODIxNjtlWzE4Ml09ODIxNztlWzIwMF09MTkzO2VbMjAzXT0yMDU7ZVsyMDddPTIxMTtlWzIxMF09MjE4O2VbMjIzXT03MTE7ZVsyMjRdPTMyMTtlWzIyNV09MzIyO2VbMjI2XT0zNTI7ZVsyMjddPTM1MztlWzIyOF09MzgxO2VbMjI5XT0zODI7ZVsyMzNdPTIyMTtlWzIzNF09MjUzO2VbMjUyXT0yNjM7ZVsyNTNdPTI2ODtlWzI1NF09MjY5O2VbMjU4XT0yNTg7ZVsyNjBdPTI2MDtlWzI2MV09MjYxO2VbMjY1XT0yODA7ZVsyNjZdPTI4MTtlWzI2N109MjgyO2VbMjY4XT0yODM7ZVsyNjldPTMxMztlWzI3NV09MzIzO2VbMjc2XT0zMjQ7ZVsyNzhdPTMyODtlWzI4M109MzQ0O2VbMjg0XT0zNDU7ZVsyODVdPTM0NjtlWzI4Nl09MzQ3O2VbMjkyXT0zNjc7ZVsyOTVdPTM3NztlWzI5Nl09Mzc4O2VbMjk4XT0zODA7ZVszMDVdPTk2MztlWzMwNl09OTY0O2VbMzA3XT05NjY7ZVszMDhdPTgyMTU7ZVszMDldPTgyNTI7ZVszMTBdPTgzMTk7ZVszMTFdPTgzNTk7ZVszMTJdPTg1OTI7ZVszMTNdPTg1OTM7ZVszMzddPTk1NTI7ZVs0OTNdPTEwMzk7ZVs0OTRdPTEwNDA7ZVs1NzBdPTEwNDA7ZVs1NzFdPTEwNDE7ZVs1NzJdPTEwNDI7ZVs1NzNdPTEwNDM7ZVs1NzRdPTEwNDQ7ZVs1NzVdPTEwNDU7ZVs1NzZdPTEwNDY7ZVs1NzddPTEwNDc7ZVs1NzhdPTEwNDg7ZVs1NzldPTEwNDk7ZVs1ODBdPTEwNTA7ZVs1ODFdPTEwNTE7ZVs1ODJdPTEwNTI7ZVs1ODNdPTEwNTM7ZVs1ODRdPTEwNTQ7ZVs1ODVdPTEwNTU7ZVs1ODZdPTEwNTY7ZVs1ODddPTEwNTc7ZVs1ODhdPTEwNTg7ZVs1ODldPTEwNTk7ZVs1OTBdPTEwNjA7ZVs1OTFdPTEwNjE7ZVs1OTJdPTEwNjI7ZVs1OTNdPTEwNjM7ZVs1OTRdPTEwNjQ7ZVs1OTVdPTEwNjU7ZVs1OTZdPTEwNjY7ZVs1OTddPTEwNjc7ZVs1OThdPTEwNjg7ZVs1OTldPTEwNjk7ZVs2MDBdPTEwNzA7ZVs2MDFdPTEwNzE7ZVs2MDJdPTEwNzI7ZVs2MDNdPTEwNzM7ZVs2MDRdPTEwNzQ7ZVs2MDVdPTEwNzU7ZVs2MDZdPTEwNzY7ZVs2MDddPTEwNzc7ZVs2MDhdPTEwNzg7ZVs2MDldPTEwNzk7ZVs2MTBdPTEwODA7ZVs2MTFdPTEwODE7ZVs2MTJdPTEwODI7ZVs2MTNdPTEwODM7ZVs2MTRdPTEwODQ7ZVs2MTVdPTEwODU7ZVs2MTZdPTEwODY7ZVs2MTddPTEwODc7ZVs2MThdPTEwODg7ZVs2MTldPTEwODk7ZVs2MjBdPTEwOTA7ZVs2MjFdPTEwOTE7ZVs2MjJdPTEwOTI7ZVs2MjNdPTEwOTM7ZVs2MjRdPTEwOTQ7ZVs2MjVdPTEwOTU7ZVs2MjZdPTEwOTY7ZVs2MjddPTEwOTc7ZVs2MjhdPTEwOTg7ZVs2MjldPTEwOTk7ZVs2MzBdPTExMDA7ZVs2MzFdPTExMDE7ZVs2MzJdPTExMDI7ZVs2MzNdPTExMDM7ZVs2NzJdPTE0ODg7ZVs2NzNdPTE0ODk7ZVs2NzRdPTE0OTA7ZVs2NzVdPTE0OTE7ZVs2NzZdPTE0OTI7ZVs2NzddPTE0OTM7ZVs2NzhdPTE0OTQ7ZVs2NzldPTE0OTU7ZVs2ODBdPTE0OTY7ZVs2ODFdPTE0OTc7ZVs2ODJdPTE0OTg7ZVs2ODNdPTE0OTk7ZVs2ODRdPTE1MDA7ZVs2ODVdPTE1MDE7ZVs2ODZdPTE1MDI7ZVs2ODddPTE1MDM7ZVs2ODhdPTE1MDQ7ZVs2ODldPTE1MDU7ZVs2OTBdPTE1MDY7ZVs2OTFdPTE1MDc7ZVs2OTJdPTE1MDg7ZVs2OTNdPTE1MDk7ZVs2OTRdPTE1MTA7ZVs2OTVdPTE1MTE7ZVs2OTZdPTE1MTI7ZVs2OTddPTE1MTM7ZVs2OThdPTE1MTQ7ZVs3MDVdPTE1MjQ7ZVs3MDZdPTgzNjI7ZVs3MTBdPTY0Mjg4O2VbNzExXT02NDI5ODtlWzc1OV09MTYxNztlWzc2MV09MTc3NjtlWzc2M109MTc3ODtlWzc3NV09MTY1MjtlWzc3N109MTc2NDtlWzc3OF09MTc4MDtlWzc3OV09MTc4MTtlWzc4MF09MTc4MjtlWzc4Ml09NzcxO2VbNzgzXT02NDcyNjtlWzc4Nl09ODM2MztlWzc4OF09ODUzMjtlWzc5MF09NzY4O2VbNzkxXT03Njk7ZVs3OTJdPTc2ODtlWzc5NV09ODAzO2VbNzk3XT02NDMzNjtlWzc5OF09NjQzMzc7ZVs3OTldPTY0MzQyO2VbODAwXT02NDM0MztlWzgwMV09NjQzNDQ7ZVs4MDJdPTY0MzQ1O2VbODAzXT02NDM2MjtlWzgwNF09NjQzNjM7ZVs4MDVdPTY0MzY0O2VbMjQyNF09NzgyMTtlWzI0MjVdPTc4MjI7ZVsyNDI2XT03ODIzO2VbMjQyN109NzgyNDtlWzI0MjhdPTc4MjU7ZVsyNDI5XT03ODI2O2VbMjQzMF09NzgyNztlWzI0MzNdPTc2ODI7ZVsyNjc4XT04MDQ1O2VbMjY3OV09ODA0NjtlWzI4MzBdPTE1NTI7ZVsyODM4XT02ODY7ZVsyODQwXT03NTE7ZVsyODQyXT03NTM7ZVsyODQzXT03NTQ7ZVsyODQ0XT03NTU7ZVsyODQ2XT03NTc7ZVsyODU2XT03Njc7ZVsyODU3XT04NDg7ZVsyODU4XT04NDk7ZVsyODYyXT04NTM7ZVsyODYzXT04NTQ7ZVsyODY0XT04NTU7ZVsyODY1XT04NjE7ZVsyODY2XT04NjI7ZVsyOTA2XT03NDYwO2VbMjkwOF09NzQ2MjtlWzI5MDldPTc0NjM7ZVsyOTEwXT03NDY0O2VbMjkxMl09NzQ2NjtlWzI5MTNdPTc0Njc7ZVsyOTE0XT03NDY4O2VbMjkxNl09NzQ3MDtlWzI5MTddPTc0NzE7ZVsyOTE4XT03NDcyO2VbMjkyMF09NzQ3NDtlWzI5MjFdPTc0NzU7ZVsyOTIyXT03NDc2O2VbMjkyNF09NzQ3ODtlWzI5MjVdPTc0Nzk7ZVsyOTI2XT03NDgwO2VbMjkyOF09NzQ4MjtlWzI5MjldPTc0ODM7ZVsyOTMwXT03NDg0O2VbMjkzMl09NzQ4NjtlWzI5MzNdPTc0ODc7ZVsyOTM0XT03NDg4O2VbMjkzNl09NzQ5MDtlWzI5MzddPTc0OTE7ZVsyOTM4XT03NDkyO2VbMjk0MF09NzQ5NDtlWzI5NDFdPTc0OTU7ZVsyOTQyXT03NDk2O2VbMjk0NF09NzQ5ODtlWzI5NDZdPTc1MDA7ZVsyOTQ4XT03NTAyO2VbMjk1MF09NzUwNDtlWzI5NTFdPTc1MDU7ZVsyOTUyXT03NTA2O2VbMjk1NF09NzUwODtlWzI5NTVdPTc1MDk7ZVsyOTU2XT03NTEwO2VbMjk1OF09NzUxMjtlWzI5NTldPTc1MTM7ZVsyOTYwXT03NTE0O2VbMjk2Ml09NzUxNjtlWzI5NjNdPTc1MTc7ZVsyOTY0XT03NTE4O2VbMjk2Nl09NzUyMDtlWzI5NjddPTc1MjE7ZVsyOTY4XT03NTIyO2VbMjk3MF09NzUyNDtlWzI5NzFdPTc1MjU7ZVsyOTcyXT03NTI2O2VbMjk3NF09NzUyODtlWzI5NzVdPTc1Mjk7ZVsyOTc2XT03NTMwO2VbMjk3OF09MTUzNztlWzI5NzldPTE1Mzg7ZVsyOTgwXT0xNTM5O2VbMjk4Ml09MTU0OTtlWzI5ODNdPTE1NTE7ZVsyOTg0XT0xNTUyO2VbMjk4Nl09MTU1NDtlWzI5ODddPTE1NTU7ZVsyOTg4XT0xNTU2O2VbMjk5MF09MTYyMztlWzI5OTFdPTE2MjQ7ZVsyOTk1XT0xNzc1O2VbMjk5OV09MTc5MTtlWzMwMDJdPTY0MjkwO2VbMzAwM109NjQyOTE7ZVszMDA0XT02NDI5MjtlWzMwMDZdPTY0Mjk0O2VbMzAwN109NjQyOTU7ZVszMDA4XT02NDI5NjtlWzMwMTFdPTE5MDA7ZVszMDE0XT04MjIzO2VbMzAxNV09ODI0NDtlWzMwMTddPTc1MzI7ZVszMDE4XT03NTMzO2VbMzAxOV09NzUzNDtlWzMwNzVdPTc1OTA7ZVszMDc2XT03NTkxO2VbMzA3OV09NzU5NDtlWzMwODBdPTc1OTU7ZVszMDgzXT03NTk4O2VbMzA4NF09NzU5OTtlWzMwODddPTc2MDI7ZVszMDg4XT03NjAzO2VbMzA5MV09NzYwNjtlWzMwOTJdPTc2MDc7ZVszMDk1XT03NjEwO2VbMzA5Nl09NzYxMTtlWzMwOTldPTc2MTQ7ZVszMTAwXT03NjE1O2VbMzEwM109NzYxODtlWzMxMDRdPTc2MTk7ZVszMTA3XT04MzM3O2VbMzEwOF09ODMzODtlWzMxMTZdPTE4ODQ7ZVszMTE5XT0xODg1O2VbMzEyMF09MTg4NTtlWzMxMjNdPTE4ODY7ZVszMTI0XT0xODg2O2VbMzEyN109MTg4NztlWzMxMjhdPTE4ODc7ZVszMTMxXT0xODg4O2VbMzEzMl09MTg4ODtlWzMxMzVdPTE4ODk7ZVszMTM2XT0xODg5O2VbMzEzOV09MTg5MDtlWzMxNDBdPTE4OTA7ZVszMTQzXT0xODkxO2VbMzE0NF09MTg5MTtlWzMxNDddPTE4OTI7ZVszMTQ4XT0xODkyO2VbMzE1M109NTgwO2VbMzE1NF09NTgxO2VbMzE1N109NTg0O2VbMzE1OF09NTg1O2VbMzE2MV09NTg4O2VbMzE2Ml09NTg5O2VbMzE2NV09ODkxO2VbMzE2Nl09ODkyO2VbMzE2OV09MTI3NDtlWzMxNzBdPTEyNzU7ZVszMTczXT0xMjc4O2VbMzE3NF09MTI3OTtlWzMxODFdPTc2MjI7ZVszMTgyXT03NjIzO2VbMzI4Ml09MTE3OTk7ZVszMzE2XT01Nzg7ZVszMzc5XT00Mjc4NTtlWzMzOTNdPTExNTk7ZVszNDE2XT04Mzc3fSksS2E9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbMjI3XT0zMjI7ZVsyNjRdPTI2MTtlWzI5MV09MzQ2fSksR2E9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbMV09MzI7ZVs0XT02NTtlWzVdPTE5MjtlWzZdPTE5MztlWzldPTE5NjtlWzE3XT02NjtlWzE4XT02NztlWzIxXT0yNjg7ZVsyNF09Njg7ZVsyOF09Njk7ZVsyOV09MjAwO2VbMzBdPTIwMTtlWzMyXT0yODI7ZVszOF09NzA7ZVszOV09NzE7ZVs0NF09NzI7ZVs0N109NzM7ZVs0OF09MjA0O2VbNDldPTIwNTtlWzU4XT03NDtlWzYwXT03NTtlWzYyXT03NjtlWzY4XT03NztlWzY5XT03ODtlWzc1XT03OTtlWzc2XT0yMTA7ZVs4MF09MjE0O2VbODddPTgwO2VbODldPTgxO2VbOTBdPTgyO2VbOTJdPTM0NDtlWzk0XT04MztlWzk3XT0zNTI7ZVsxMDBdPTg0O2VbMTA0XT04NTtlWzEwOV09MjIwO2VbMTE1XT04NjtlWzExNl09ODc7ZVsxMjFdPTg4O2VbMTIyXT04OTtlWzEyNF09MjIxO2VbMTI3XT05MDtlWzEyOV09MzgxO2VbMjU4XT05NztlWzI1OV09MjI0O2VbMjYwXT0yMjU7ZVsyNjNdPTIyODtlWzI2OF09MjYxO2VbMjcxXT05ODtlWzI3Ml09OTk7ZVsyNzNdPTI2MztlWzI3NV09MjY5O2VbMjgyXT0xMDA7ZVsyODZdPTEwMTtlWzI4N109MjMyO2VbMjg4XT0yMzM7ZVsyOTBdPTI4MztlWzI5NV09MjgxO2VbMjk2XT0xMDI7ZVszMzZdPTEwMztlWzM0Nl09MTA0O2VbMzQ5XT0xMDU7ZVszNTBdPTIzNjtlWzM1MV09MjM3O2VbMzYxXT0xMDY7ZVszNjRdPTEwNztlWzM2N109MTA4O2VbMzcxXT0zMjI7ZVszNzNdPTEwOTtlWzM3NF09MTEwO2VbMzgxXT0xMTE7ZVszODJdPTI0MjtlWzM4M109MjQzO2VbMzg2XT0yNDY7ZVszOTNdPTExMjtlWzM5NV09MTEzO2VbMzk2XT0xMTQ7ZVszOThdPTM0NTtlWzQwMF09MTE1O2VbNDAxXT0zNDc7ZVs0MDNdPTM1MztlWzQxMF09MTE2O2VbNDM3XT0xMTc7ZVs0NDJdPTI1MjtlWzQ0OF09MTE4O2VbNDQ5XT0xMTk7ZVs0NTRdPTEyMDtlWzQ1NV09MTIxO2VbNDU3XT0yNTM7ZVs0NjBdPTEyMjtlWzQ2Ml09MzgyO2VbNDYzXT0zODA7ZVs4NTNdPTQ0O2VbODU1XT01ODtlWzg1Nl09NDY7ZVs4NzZdPTQ3O2VbODc4XT00NTtlWzg4Ml09NDU7ZVs4OTRdPTQwO2VbODk1XT00MTtlWzg5Nl09OTE7ZVs4OTddPTkzO2VbOTIzXT02NDtlWzk0MF09MTYzO2VbMTAwNF09NDg7ZVsxMDA1XT00OTtlWzEwMDZdPTUwO2VbMTAwN109NTE7ZVsxMDA4XT01MjtlWzEwMDldPTUzO2VbMTAxMF09NTQ7ZVsxMDExXT01NTtlWzEwMTJdPTU2O2VbMTAxM109NTc7ZVsxMDgxXT0zNztlWzEwODVdPTQzO2VbMTA4Nl09NDV9KTtmdW5jdGlvbiBnZXRTdGFuZGFyZEZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuIF9hKClbdF19ZnVuY3Rpb24gaXNLbm93bkZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuISEoX2EoKVt0XXx8TGEoKVt0XXx8VWEoKVt0XXx8V2EoKVt0XSl9Y29uc3QgVmE9MjU2LCRhPTEwO2NsYXNzIEdseWZUYWJsZXtjb25zdHJ1Y3Rvcih7Z2x5ZlRhYmxlOmUsaXNHbHlwaExvY2F0aW9uc0xvbmc6dCxsb2NhVGFibGU6bixudW1HbHlwaHM6YX0pe3RoaXMuZ2x5cGhzPVtdO2NvbnN0IHM9bmV3IERhdGFWaWV3KG4uYnVmZmVyLG4uYnl0ZU9mZnNldCxuLmJ5dGVMZW5ndGgpLHI9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLGk9dD80OjI7bGV0IG89dD9zLmdldFVpbnQzMigwKToyKnMuZ2V0VWludDE2KDApLGw9MDtmb3IobGV0IGU9MDtlPGE7ZSsrKXtsKz1pO2NvbnN0IGU9dD9zLmdldFVpbnQzMihsKToyKnMuZ2V0VWludDE2KGwpO2lmKGU9PT1vKXt0aGlzLmdseXBocy5wdXNoKG5ldyBHbHlwaCh7fSkpO2NvbnRpbnVlfWNvbnN0IG49R2x5cGgucGFyc2UobyxyKTt0aGlzLmdseXBocy5wdXNoKG4pO289ZX19Z2V0U2l6ZSgpe3JldHVybiBNYXRoLnN1bVByZWNpc2UodGhpcy5nbHlwaHMubWFwKGU9PmUuZ2V0U2l6ZSgpKzMmLTQpKX13cml0ZSgpe2NvbnN0IGU9dGhpcy5nZXRTaXplKCksdD1uZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKGUpKSxuPWU+MTMxMDcwLGE9bj80OjIscz1uZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKCh0aGlzLmdseXBocy5sZW5ndGgrMSkqYSkpO24/cy5zZXRVaW50MzIoMCwwKTpzLnNldFVpbnQxNigwLDApO2xldCByPTAsaT0wO2Zvcihjb25zdCBlIG9mIHRoaXMuZ2x5cGhzKXtyKz1lLndyaXRlKHIsdCk7cj1yKzMmLTQ7aSs9YTtuP3Muc2V0VWludDMyKGkscik6cy5zZXRVaW50MTYoaSxyPj4xKX1yZXR1cm57aXNMb2NhdGlvbkxvbmc6bixsb2NhOm5ldyBVaW50OEFycmF5KHMuYnVmZmVyKSxnbHlmOm5ldyBVaW50OEFycmF5KHQuYnVmZmVyKX19c2NhbGUoZSl7Zm9yKGxldCB0PTAsbj10aGlzLmdseXBocy5sZW5ndGg7dDxuO3QrKyl0aGlzLmdseXBoc1t0XS5zY2FsZShlW3RdKX19Y2xhc3MgR2x5cGh7Y29uc3RydWN0b3Ioe2hlYWRlcjplPW51bGwsc2ltcGxlOnQ9bnVsbCxjb21wb3NpdGVzOm49bnVsbH0pe3RoaXMuaGVhZGVyPWU7dGhpcy5zaW1wbGU9dDt0aGlzLmNvbXBvc2l0ZXM9bn1zdGF0aWMgcGFyc2UoZSx0KXtjb25zdFtuLGFdPUdseXBoSGVhZGVyLnBhcnNlKGUsdCk7ZSs9bjtpZihhLm51bWJlck9mQ29udG91cnM8MCl7Y29uc3Qgbj1bXTtmb3IoOzspe2NvbnN0W2Esc109Q29tcG9zaXRlR2x5cGgucGFyc2UoZSx0KTtlKz1hO24ucHVzaChzKTtpZighKDMyJnMuZmxhZ3MpKWJyZWFrfXJldHVybiBuZXcgR2x5cGgoe2hlYWRlcjphLGNvbXBvc2l0ZXM6bn0pfWNvbnN0IHM9U2ltcGxlR2x5cGgucGFyc2UoZSx0LGEubnVtYmVyT2ZDb250b3Vycyk7cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOmEsc2ltcGxlOnN9KX1nZXRTaXplKCl7aWYoIXRoaXMuaGVhZGVyKXJldHVybiAwO2NvbnN0IGU9dGhpcy5zaW1wbGU/dGhpcy5zaW1wbGUuZ2V0U2l6ZSgpOk1hdGguc3VtUHJlY2lzZSh0aGlzLmNvbXBvc2l0ZXMubWFwKGU9PmUuZ2V0U2l6ZSgpKSk7cmV0dXJuIHRoaXMuaGVhZGVyLmdldFNpemUoKStlfXdyaXRlKGUsdCl7aWYoIXRoaXMuaGVhZGVyKXJldHVybiAwO2NvbnN0IG49ZTtlKz10aGlzLmhlYWRlci53cml0ZShlLHQpO2lmKHRoaXMuc2ltcGxlKWUrPXRoaXMuc2ltcGxlLndyaXRlKGUsdCk7ZWxzZSBmb3IoY29uc3QgbiBvZiB0aGlzLmNvbXBvc2l0ZXMpZSs9bi53cml0ZShlLHQpO3JldHVybiBlLW59c2NhbGUoZSl7aWYoIXRoaXMuaGVhZGVyKXJldHVybjtjb25zdCB0PSh0aGlzLmhlYWRlci54TWluK3RoaXMuaGVhZGVyLnhNYXgpLzI7dGhpcy5oZWFkZXIuc2NhbGUodCxlKTtpZih0aGlzLnNpbXBsZSl0aGlzLnNpbXBsZS5zY2FsZSh0LGUpO2Vsc2UgZm9yKGNvbnN0IG4gb2YgdGhpcy5jb21wb3NpdGVzKW4uc2NhbGUodCxlKX19Y2xhc3MgR2x5cGhIZWFkZXJ7Y29uc3RydWN0b3Ioe251bWJlck9mQ29udG91cnM6ZSx4TWluOnQseU1pbjpuLHhNYXg6YSx5TWF4OnN9KXt0aGlzLm51bWJlck9mQ29udG91cnM9ZTt0aGlzLnhNaW49dDt0aGlzLnlNaW49bjt0aGlzLnhNYXg9YTt0aGlzLnlNYXg9c31zdGF0aWMgcGFyc2UoZSx0KXtyZXR1cm5bJGEsbmV3IEdseXBoSGVhZGVyKHtudW1iZXJPZkNvbnRvdXJzOnQuZ2V0SW50MTYoZSkseE1pbjp0LmdldEludDE2KGUrMikseU1pbjp0LmdldEludDE2KGUrNCkseE1heDp0LmdldEludDE2KGUrNikseU1heDp0LmdldEludDE2KGUrOCl9KV19Z2V0U2l6ZSgpe3JldHVybiAkYX13cml0ZShlLHQpe3Quc2V0SW50MTYoZSx0aGlzLm51bWJlck9mQ29udG91cnMpO3Quc2V0SW50MTYoZSsyLHRoaXMueE1pbik7dC5zZXRJbnQxNihlKzQsdGhpcy55TWluKTt0LnNldEludDE2KGUrNix0aGlzLnhNYXgpO3Quc2V0SW50MTYoZSs4LHRoaXMueU1heCk7cmV0dXJuICRhfXNjYWxlKGUsdCl7dGhpcy54TWluPU1hdGgucm91bmQoZSsodGhpcy54TWluLWUpKnQpO3RoaXMueE1heD1NYXRoLnJvdW5kKGUrKHRoaXMueE1heC1lKSp0KX19Y2xhc3MgQ29udG91cntjb25zdHJ1Y3Rvcih7ZmxhZ3M6ZSx4Q29vcmRpbmF0ZXM6dCx5Q29vcmRpbmF0ZXM6bn0pe3RoaXMueENvb3JkaW5hdGVzPXQ7dGhpcy55Q29vcmRpbmF0ZXM9bjt0aGlzLmZsYWdzPWV9fWNsYXNzIFNpbXBsZUdseXBoe2NvbnN0cnVjdG9yKHtjb250b3VyczplLGluc3RydWN0aW9uczp0fSl7dGhpcy5jb250b3Vycz1lO3RoaXMuaW5zdHJ1Y3Rpb25zPXR9c3RhdGljIHBhcnNlKGUsdCxuKXtjb25zdCBhPVtdO2ZvcihsZXQgcz0wO3M8bjtzKyspe2NvbnN0IG49dC5nZXRVaW50MTYoZSk7ZSs9MjthLnB1c2gobil9Y29uc3Qgcz1hW24tMV0rMSxyPXQuZ2V0VWludDE2KGUpO2UrPTI7Y29uc3QgaT1uZXcgVWludDhBcnJheSh0KS5zbGljZShlLGUrcik7ZSs9cjtjb25zdCBvPVtdO2ZvcihsZXQgbj0wO248cztlKyssbisrKXtsZXQgYT10LmdldFVpbnQ4KGUpO28ucHVzaChhKTtpZig4JmEpe2NvbnN0IHM9dC5nZXRVaW50OCgrK2UpO2FePTg7Zm9yKGxldCBlPTA7ZTxzO2UrKylvLnB1c2goYSk7bis9c319Y29uc3QgbD1bXTtsZXQgZj1bXSxjPVtdLGg9W107Y29uc3QgdT1bXTtsZXQgbT0wLHA9MDtmb3IobGV0IG49MDtuPHM7bisrKXtjb25zdCBzPW9bbl07aWYoMiZzKXtjb25zdCBuPXQuZ2V0VWludDgoZSsrKTtwKz0xNiZzP246LW47Zi5wdXNoKHApfWVsc2UgaWYoMTYmcylmLnB1c2gocCk7ZWxzZXtwKz10LmdldEludDE2KGUpO2UrPTI7Zi5wdXNoKHApfWlmKGFbbV09PT1uKXttKys7bC5wdXNoKGYpO2Y9W119fXA9MDttPTA7Zm9yKGxldCBuPTA7bjxzO24rKyl7Y29uc3Qgcz1vW25dO2lmKDQmcyl7Y29uc3Qgbj10LmdldFVpbnQ4KGUrKyk7cCs9MzImcz9uOi1uO2MucHVzaChwKX1lbHNlIGlmKDMyJnMpYy5wdXNoKHApO2Vsc2V7cCs9dC5nZXRJbnQxNihlKTtlKz0yO2MucHVzaChwKX1oLnB1c2goMSZzfDY0JnMpO2lmKGFbbV09PT1uKXtmPWxbbV07bSsrO3UucHVzaChuZXcgQ29udG91cih7ZmxhZ3M6aCx4Q29vcmRpbmF0ZXM6Zix5Q29vcmRpbmF0ZXM6Y30pKTtjPVtdO2g9W119fXJldHVybiBuZXcgU2ltcGxlR2x5cGgoe2NvbnRvdXJzOnUsaW5zdHJ1Y3Rpb25zOml9KX1nZXRTaXplKCl7bGV0IGU9Mip0aGlzLmNvbnRvdXJzLmxlbmd0aCsyK3RoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCx0PTAsbj0wO2Zvcihjb25zdCBhIG9mIHRoaXMuY29udG91cnMpe2UrPWEuZmxhZ3MubGVuZ3RoO2ZvcihsZXQgcz0wLHI9YS54Q29vcmRpbmF0ZXMubGVuZ3RoO3M8cjtzKyspe2NvbnN0IHI9YS54Q29vcmRpbmF0ZXNbc10saT1hLnlDb29yZGluYXRlc1tzXTtsZXQgbz1NYXRoLmFicyhyLXQpO28+MjU1P2UrPTI6bz4wJiYoZSs9MSk7dD1yO289TWF0aC5hYnMoaS1uKTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO249aX19cmV0dXJuIGV9d3JpdGUoZSx0KXtjb25zdCBuPWUsYT1bXSxzPVtdLHI9W107bGV0IGk9MCxvPTA7Zm9yKGNvbnN0IG4gb2YgdGhpcy5jb250b3Vycyl7Zm9yKGxldCBlPTAsdD1uLnhDb29yZGluYXRlcy5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9bi5mbGFnc1tlXTtjb25zdCBsPW4ueENvb3JkaW5hdGVzW2VdO2xldCBmPWwtaTtpZigwPT09Zil7dHw9MTY7YS5wdXNoKDApfWVsc2V7Y29uc3QgZT1NYXRoLmFicyhmKTtpZihlPD0yNTUpe3R8PWY+PTA/MTg6MjthLnB1c2goZSl9ZWxzZSBhLnB1c2goZil9aT1sO2NvbnN0IGM9bi55Q29vcmRpbmF0ZXNbZV07Zj1jLW87aWYoMD09PWYpe3R8PTMyO3MucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMoZik7aWYoZTw9MjU1KXt0fD1mPj0wPzM2OjQ7cy5wdXNoKGUpfWVsc2Ugcy5wdXNoKGYpfW89YztyLnB1c2godCl9dC5zZXRVaW50MTYoZSxhLmxlbmd0aC0xKTtlKz0yfXQuc2V0VWludDE2KGUsdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKTtlKz0yO2lmKHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCl7bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsMCx0LmJ1ZmZlci5ieXRlTGVuZ3RoKS5zZXQodGhpcy5pbnN0cnVjdGlvbnMsZSk7ZSs9dGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RofWZvcihjb25zdCBuIG9mIHIpdC5zZXRVaW50OChlKyssbik7Zm9yKGxldCBuPTAscz1hLmxlbmd0aDtuPHM7bisrKXtjb25zdCBzPWFbbl0saT1yW25dO2lmKDImaSl0LnNldFVpbnQ4KGUrKyxzKTtlbHNlIGlmKCEoMTYmaSkpe3Quc2V0SW50MTYoZSxzKTtlKz0yfX1mb3IobGV0IG49MCxhPXMubGVuZ3RoO248YTtuKyspe2NvbnN0IGE9c1tuXSxpPXJbbl07aWYoNCZpKXQuc2V0VWludDgoZSsrLGEpO2Vsc2UgaWYoISgzMiZpKSl7dC5zZXRJbnQxNihlLGEpO2UrPTJ9fXJldHVybiBlLW59c2NhbGUoZSx0KXtmb3IoY29uc3QgbiBvZiB0aGlzLmNvbnRvdXJzKWlmKDAhPT1uLnhDb29yZGluYXRlcy5sZW5ndGgpZm9yKGxldCBhPTAscz1uLnhDb29yZGluYXRlcy5sZW5ndGg7YTxzO2ErKyluLnhDb29yZGluYXRlc1thXT1NYXRoLnJvdW5kKGUrKG4ueENvb3JkaW5hdGVzW2FdLWUpKnQpfX1jbGFzcyBDb21wb3NpdGVHbHlwaHtjb25zdHJ1Y3Rvcih7ZmxhZ3M6ZSxnbHlwaEluZGV4OnQsYXJndW1lbnQxOm4sYXJndW1lbnQyOmEsdHJhbnNmOnMsaW5zdHJ1Y3Rpb25zOnJ9KXt0aGlzLmZsYWdzPWU7dGhpcy5nbHlwaEluZGV4PXQ7dGhpcy5hcmd1bWVudDE9bjt0aGlzLmFyZ3VtZW50Mj1hO3RoaXMudHJhbnNmPXM7dGhpcy5pbnN0cnVjdGlvbnM9cn1zdGF0aWMgcGFyc2UoZSx0KXtjb25zdCBuPWUsYT1bXTtsZXQgcz10LmdldFVpbnQxNihlKTtjb25zdCByPXQuZ2V0VWludDE2KGUrMik7ZSs9NDtsZXQgaSxvO2lmKDEmcyl7aWYoMiZzKXtpPXQuZ2V0SW50MTYoZSk7bz10LmdldEludDE2KGUrMil9ZWxzZXtpPXQuZ2V0VWludDE2KGUpO289dC5nZXRVaW50MTYoZSsyKX1lKz00O3NePTF9ZWxzZXtpZigyJnMpe2k9dC5nZXRJbnQ4KGUpO289dC5nZXRJbnQ4KGUrMSl9ZWxzZXtpPXQuZ2V0VWludDgoZSk7bz10LmdldFVpbnQ4KGUrMSl9ZSs9Mn1pZig4JnMpe2EucHVzaCh0LmdldFVpbnQxNihlKSk7ZSs9Mn1lbHNlIGlmKDY0JnMpe2EucHVzaCh0LmdldFVpbnQxNihlKSx0LmdldFVpbnQxNihlKzIpKTtlKz00fWVsc2UgaWYoMTI4JnMpe2EucHVzaCh0LmdldFVpbnQxNihlKSx0LmdldFVpbnQxNihlKzIpLHQuZ2V0VWludDE2KGUrNCksdC5nZXRVaW50MTYoZSs2KSk7ZSs9OH1sZXQgbD1udWxsO2lmKHMmVmEpe2NvbnN0IG49dC5nZXRVaW50MTYoZSk7ZSs9MjtsPW5ldyBVaW50OEFycmF5KHQpLnNsaWNlKGUsZStuKTtlKz1ufXJldHVybltlLW4sbmV3IENvbXBvc2l0ZUdseXBoKHtmbGFnczpzLGdseXBoSW5kZXg6cixhcmd1bWVudDE6aSxhcmd1bWVudDI6byx0cmFuc2Y6YSxpbnN0cnVjdGlvbnM6bH0pXX1nZXRTaXplKCl7bGV0IGU9NCsyKnRoaXMudHJhbnNmLmxlbmd0aDt0aGlzLmZsYWdzJlZhJiYoZSs9Mit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KGUrPTIpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KGUrPTIpO3JldHVybiBlfXdyaXRlKGUsdCl7Y29uc3Qgbj1lOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fCh0aGlzLmZsYWdzfD0xKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fCh0aGlzLmZsYWdzfD0xKTt0LnNldFVpbnQxNihlLHRoaXMuZmxhZ3MpO3Quc2V0VWludDE2KGUrMix0aGlzLmdseXBoSW5kZXgpO2UrPTQ7aWYoMSZ0aGlzLmZsYWdzKXtpZigyJnRoaXMuZmxhZ3Mpe3Quc2V0SW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRJbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWVsc2V7dC5zZXRVaW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lKz00fWVsc2V7dC5zZXRVaW50OChlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQ4KGUrMSx0aGlzLmFyZ3VtZW50Mik7ZSs9Mn1pZih0aGlzLmZsYWdzJlZhKXt0LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH19cmV0dXJuIGUtbn1zY2FsZShlLHQpe319Y2xhc3MgVG9Vbmljb2RlTWFwe2NvbnN0cnVjdG9yKGU9W10pe3RoaXMuX21hcD1lfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbWFwLmxlbmd0aH1mb3JFYWNoKGUpe2Zvcihjb25zdCB0IGluIHRoaXMuX21hcCllKHQsdGhpcy5fbWFwW3RdLmNvZGVQb2ludEF0KDApKX1oYXMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcFtlXX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBuIGluIHQpaWYodFtuXT09PWUpcmV0dXJuIDB8bjtyZXR1cm4tMX1hbWVuZChlKXtmb3IoY29uc3QgdCBpbiBlKXRoaXMuX21hcFt0XT1lW3RdfX1jbGFzcyBJZGVudGl0eVRvVW5pY29kZU1hcHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZmlyc3RDaGFyPWU7dGhpcy5sYXN0Q2hhcj10fWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5sYXN0Q2hhcisxLXRoaXMuZmlyc3RDaGFyfWZvckVhY2goZSl7Zm9yKGxldCB0PXRoaXMuZmlyc3RDaGFyLG49dGhpcy5sYXN0Q2hhcjt0PD1uO3QrKyllKHQsdCl9aGFzKGUpe3JldHVybiB0aGlzLmZpcnN0Q2hhcjw9ZSYmZTw9dGhpcy5sYXN0Q2hhcn1nZXQoZSl7aWYodGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXIpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZSl9Y2hhckNvZGVPZihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49dGhpcy5maXJzdENoYXImJmU8PXRoaXMubGFzdENoYXI/ZTotMX1hbWVuZChlKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGFtZW5kKCkiKX19Y2xhc3MgQ0ZGRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucHJvcGVydGllcz10O2NvbnN0IG49bmV3IENGRlBhcnNlcihlLHQsITApO3RoaXMuY2ZmPW4ucGFyc2UoKTt0aGlzLmNmZi5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgYT1uZXcgQ0ZGQ29tcGlsZXIodGhpcy5jZmYpO3RoaXMuc2VhY3M9dGhpcy5jZmYuc2VhY3M7dHJ5e3RoaXMuZGF0YT1hLmNvbXBpbGUoKX1jYXRjaChuKXt3YXJuKGBGYWlsZWQgdG8gY29tcGlsZSBmb250ICIke3QubG9hZGVkTmFtZX0iOiAiJHtufSIuYCk7ZS5yZXNldCgpO3RoaXMuZGF0YT1lLmdldEJ5dGVzKCl9dGhpcy5fY3JlYXRlQnVpbHRJbkVuY29kaW5nKCl9Z2V0IG51bUdseXBocygpe3JldHVybiB0aGlzLmNmZi5jaGFyU3RyaW5ncy5jb3VudH1nZXRDaGFyc2V0KCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJzZXQuY2hhcnNldH1nZXRHbHlwaE1hcHBpbmcoKXtjb25zdCBlPXRoaXMuY2ZmLHQ9dGhpcy5wcm9wZXJ0aWVzLHtjaWRUb0dpZE1hcDpuLGNNYXA6YX09dCxzPWUuY2hhcnNldC5jaGFyc2V0O2xldCByLGk7aWYodC5jb21wb3NpdGUpe2xldCB0LG87aWYobj8ubGVuZ3RoPjApe3Q9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IGU9MCxhPW4ubGVuZ3RoO2U8YTtlKyspe2NvbnN0IGE9bltlXTt2b2lkIDAhPT1hJiYodFthXT1lKX19cj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUuaXNDSURGb250KWZvcihpPTA7aTxzLmxlbmd0aDtpKyspe2NvbnN0IGU9c1tpXTtvPWEuY2hhckNvZGVPZihlKTt2b2lkIDAhPT10Py5bb10mJihvPXRbb10pO3Jbb109aX1lbHNlIGZvcihpPTA7aTxlLmNoYXJTdHJpbmdzLmNvdW50O2krKyl7bz1hLmNoYXJDb2RlT2YoaSk7cltvXT1pfXJldHVybiByfWxldCBvPWUuZW5jb2Rpbmc/ZS5lbmNvZGluZy5lbmNvZGluZzpudWxsO3QuaXNJbnRlcm5hbEZvbnQmJihvPXQuZGVmYXVsdEVuY29kaW5nKTtyPXR5cGUxRm9udEdseXBoTWFwcGluZyh0LG8scyk7cmV0dXJuIHJ9aGFzR2x5cGhJZChlKXtyZXR1cm4gdGhpcy5jZmYuaGFzR2x5cGhJZChlKX1fY3JlYXRlQnVpbHRJbkVuY29kaW5nKCl7Y29uc3R7Y2hhcnNldDplLGVuY29kaW5nOnR9PXRoaXMuY2ZmO2lmKCFlfHwhdClyZXR1cm47Y29uc3Qgbj1lLmNoYXJzZXQsYT10LmVuY29kaW5nLHM9W107Zm9yKGNvbnN0IGUgaW4gYSl7Y29uc3QgdD1hW2VdO2lmKHQ+PTApe2NvbnN0IGE9blt0XTthJiYoc1tlXT1hKX19cy5sZW5ndGg+MCYmKHRoaXMucHJvcGVydGllcy5idWlsdEluRW5jb2Rpbmc9cyl9fWNsYXNzIENTU19GT05UX0lORk97c3RhdGljIHN0cmluZ3M9WyJmb250RmFtaWx5IiwiZm9udFdlaWdodCIsIml0YWxpY0FuZ2xlIl19Y2xhc3MgU1lTVEVNX0ZPTlRfSU5GT3tzdGF0aWMgc3RyaW5ncz1bImNzcyIsImxvYWRlZE5hbWUiLCJiYXNlRm9udE5hbWUiLCJzcmMiXX1jbGFzcyBGT05UX0lORk97c3RhdGljIGJvb2xzPVsiYmxhY2siLCJib2xkIiwiZGlzYWJsZUZvbnRGYWNlIiwiZm9udEV4dHJhUHJvcGVydGllcyIsImlzSW52YWxpZFBERmpzRm9udCIsImlzVHlwZTNGb250IiwiaXRhbGljIiwibWlzc2luZ0ZpbGUiLCJyZW1lYXN1cmUiLCJ2ZXJ0aWNhbCJdO3N0YXRpYyBudW1iZXJzPVsiYXNjZW50IiwiZGVmYXVsdFdpZHRoIiwiZGVzY2VudCJdO3N0YXRpYyBzdHJpbmdzPVsiZmFsbGJhY2tOYW1lIiwibG9hZGVkTmFtZSIsIm1pbWV0eXBlIiwibmFtZSJdO3N0YXRpYyBPRkZTRVRfTlVNQkVSUz1NYXRoLmNlaWwoMip0aGlzLmJvb2xzLmxlbmd0aC84KTtzdGF0aWMgT0ZGU0VUX0JCT1g9dGhpcy5PRkZTRVRfTlVNQkVSUys4KnRoaXMubnVtYmVycy5sZW5ndGg7c3RhdGljIE9GRlNFVF9GT05UX01BVFJJWD10aGlzLk9GRlNFVF9CQk9YKzErODtzdGF0aWMgT0ZGU0VUX0RFRkFVTFRfVk1FVFJJQ1M9dGhpcy5PRkZTRVRfRk9OVF9NQVRSSVgrMSs0ODtzdGF0aWMgT0ZGU0VUX1NUUklOR1M9dGhpcy5PRkZTRVRfREVGQVVMVF9WTUVUUklDUysxKzZ9Y2xhc3MgUEFUVEVSTl9JTkZPe3N0YXRpYyBLSU5EPTA7c3RhdGljIEhBU19CQk9YPTE7c3RhdGljIEhBU19CQUNLR1JPVU5EPTI7c3RhdGljIFNIQURJTkdfVFlQRT0zO3N0YXRpYyBOX0NPT1JEPTQ7c3RhdGljIE5fQ09MT1I9ODtzdGF0aWMgTl9TVE9QPTEyO3N0YXRpYyBOX0ZJR1VSRVM9MTZ9ZnVuY3Rpb24gY29tcGlsZUZvbnRJbmZvKGUpe2NvbnN0IHQ9ZS5zeXN0ZW1Gb250SW5mbz9mdW5jdGlvbiBjb21waWxlU3lzdGVtRm9udEluZm8oZSl7Y29uc3QgdD1uZXcgVGV4dEVuY29kZXIsbj17fTtsZXQgYT0wO2Zvcihjb25zdCBzIG9mIFNZU1RFTV9GT05UX0lORk8uc3RyaW5ncyl7Y29uc3Qgcj10LmVuY29kZShlW3NdKTtuW3NdPXI7YSs9NCtyLmxlbmd0aH1hKz00O2xldCBzLHIsaT0xK2E7aWYoZS5zdHlsZSl7cz10LmVuY29kZShlLnN0eWxlLnN0eWxlKTtyPXQuZW5jb2RlKGUuc3R5bGUud2VpZ2h0KTtpKz00K3MubGVuZ3RoKzQrci5sZW5ndGh9Y29uc3Qgbz1uZXcgQXJyYXlCdWZmZXIoaSksbD1uZXcgVWludDhBcnJheShvKSxmPW5ldyBEYXRhVmlldyhvKTtsZXQgYz0wO2Yuc2V0VWludDgoYysrLGUuZ3Vlc3NGYWxsYmFjaz8xOjApO2Yuc2V0VWludDMyKGMsMCk7Yys9NDthPTA7Zm9yKGNvbnN0IGUgb2YgU1lTVEVNX0ZPTlRfSU5GTy5zdHJpbmdzKXtjb25zdCB0PW5bZV0scz10Lmxlbmd0aDthKz00K3M7Zi5zZXRVaW50MzIoYyxzKTtsLnNldCh0LGMrNCk7Yys9NCtzfWYuc2V0VWludDMyKGMtYS00LGEpO2lmKGUuc3R5bGUpe2Yuc2V0VWludDMyKGMscy5sZW5ndGgpO2wuc2V0KHMsYys0KTtjKz00K3MubGVuZ3RoO2Yuc2V0VWludDMyKGMsci5sZW5ndGgpO2wuc2V0KHIsYys0KTtjKz00K3IubGVuZ3RofWFzc2VydChjPD1vLmJ5dGVMZW5ndGgsImNvbXBpbGVTeXN0ZW1Gb250SW5mbzogQnVmZmVyIG92ZXJmbG93Iik7cmV0dXJuIG8udHJhbnNmZXJUb0ZpeGVkTGVuZ3RoKGMpfShlLnN5c3RlbUZvbnRJbmZvKTpudWxsLG49ZS5jc3NGb250SW5mbz9mdW5jdGlvbiBjb21waWxlQ3NzRm9udEluZm8oZSl7Y29uc3QgdD1uZXcgVGV4dEVuY29kZXIsbj17fTtsZXQgYT0wO2Zvcihjb25zdCBzIG9mIENTU19GT05UX0lORk8uc3RyaW5ncyl7Y29uc3Qgcj10LmVuY29kZShlW3NdKTtuW3NdPXI7YSs9NCtyLmxlbmd0aH1jb25zdCBzPW5ldyBBcnJheUJ1ZmZlcihhKSxyPW5ldyBVaW50OEFycmF5KHMpLGk9bmV3IERhdGFWaWV3KHMpO2xldCBvPTA7Zm9yKGNvbnN0IGUgb2YgQ1NTX0ZPTlRfSU5GTy5zdHJpbmdzKXtjb25zdCB0PW5bZV0sYT10Lmxlbmd0aDtpLnNldFVpbnQzMihvLGEpO3Iuc2V0KHQsbys0KTtvKz00K2F9YXNzZXJ0KG89PT1zLmJ5dGVMZW5ndGgsImNvbXBpbGVDc3NGb250SW5mbzogQnVmZmVyIG92ZXJmbG93Iik7cmV0dXJuIHN9KGUuY3NzRm9udEluZm8pOm51bGwsYT1uZXcgVGV4dEVuY29kZXIscz17fTtsZXQgcj0wO2Zvcihjb25zdCB0IG9mIEZPTlRfSU5GTy5zdHJpbmdzKXtzW3RdPWEuZW5jb2RlKGVbdF0pO3IrPTQrc1t0XS5sZW5ndGh9Y29uc3QgaT1GT05UX0lORk8uT0ZGU0VUX1NUUklOR1MrNCtyKzQrKHQ/LmJ5dGVMZW5ndGg/PzApKzQrKG4/LmJ5dGVMZW5ndGg/PzApKzQrKGUuZGF0YT8ubGVuZ3RoPz8wKSxvPW5ldyBBcnJheUJ1ZmZlcihpKSxsPW5ldyBVaW50OEFycmF5KG8pLGY9bmV3IERhdGFWaWV3KG8pO2xldCBjPTA7Y29uc3QgaD1GT05UX0lORk8uYm9vbHMubGVuZ3RoO2xldCB1PTAsbT0wO2ZvcihsZXQgdD0wO3Q8aDt0Kyspe2NvbnN0IG49ZVtGT05UX0lORk8uYm9vbHNbdF1dO3V8PSh2b2lkIDA9PT1uPzA6bj8yOjEpPDxtO20rPTI7aWYoOD09PW18fHQ9PT1oLTEpe2Yuc2V0VWludDgoYysrLHUpO3U9MDttPTB9fWFzc2VydChjPT09Rk9OVF9JTkZPLk9GRlNFVF9OVU1CRVJTLCJjb21waWxlRm9udEluZm86IEJvb2xlYW4gcHJvcGVydGllcyBvZmZzZXQgbWlzbWF0Y2giKTtmb3IoY29uc3QgdCBvZiBGT05UX0lORk8ubnVtYmVycyl7Zi5zZXRGbG9hdDY0KGMsZVt0XSk7Yys9OH1hc3NlcnQoYz09PUZPTlRfSU5GTy5PRkZTRVRfQkJPWCwiY29tcGlsZUZvbnRJbmZvOiBOdW1iZXIgcHJvcGVydGllcyBvZmZzZXQgbWlzbWF0Y2giKTtpZihlLmJib3gpe2Yuc2V0VWludDgoYysrLDQpO2Zvcihjb25zdCB0IG9mIGUuYmJveCl7Zi5zZXRJbnQxNihjLHQsITApO2MrPTJ9fWVsc2V7Zi5zZXRVaW50OChjKyssMCk7Yys9OH1hc3NlcnQoYz09PUZPTlRfSU5GTy5PRkZTRVRfRk9OVF9NQVRSSVgsImNvbXBpbGVGb250SW5mbzogQkJveCBwcm9wZXJ0aWVzIG9mZnNldCBtaXNtYXRjaCIpO2lmKGUuZm9udE1hdHJpeCl7Zi5zZXRVaW50OChjKyssNik7Zm9yKGNvbnN0IHQgb2YgZS5mb250TWF0cml4KXtmLnNldEZsb2F0NjQoYyx0LCEwKTtjKz04fX1lbHNle2Yuc2V0VWludDgoYysrLDApO2MrPTQ4fWFzc2VydChjPT09Rk9OVF9JTkZPLk9GRlNFVF9ERUZBVUxUX1ZNRVRSSUNTLCJjb21waWxlRm9udEluZm86IEZvbnRNYXRyaXggcHJvcGVydGllcyBvZmZzZXQgbWlzbWF0Y2giKTtpZihlLmRlZmF1bHRWTWV0cmljcyl7Zi5zZXRVaW50OChjKyssMyk7Zm9yKGNvbnN0IHQgb2YgZS5kZWZhdWx0Vk1ldHJpY3Mpe2Yuc2V0SW50MTYoYyx0LCEwKTtjKz0yfX1lbHNle2Yuc2V0VWludDgoYysrLDApO2MrPTZ9YXNzZXJ0KGM9PT1GT05UX0lORk8uT0ZGU0VUX1NUUklOR1MsImNvbXBpbGVGb250SW5mbzogRGVmYXVsdFZNZXRyaWNzIHByb3BlcnRpZXMgb2Zmc2V0IG1pc21hdGNoIik7Zi5zZXRVaW50MzIoRk9OVF9JTkZPLk9GRlNFVF9TVFJJTkdTLDApO2MrPTQ7Zm9yKGNvbnN0IGUgb2YgRk9OVF9JTkZPLnN0cmluZ3Mpe2NvbnN0IHQ9c1tlXSxuPXQubGVuZ3RoO2Yuc2V0VWludDMyKGMsbik7bC5zZXQodCxjKzQpO2MrPTQrbn1mLnNldFVpbnQzMihGT05UX0lORk8uT0ZGU0VUX1NUUklOR1MsYy1GT05UX0lORk8uT0ZGU0VUX1NUUklOR1MtNCk7aWYodCl7Y29uc3QgZT10LmJ5dGVMZW5ndGg7Zi5zZXRVaW50MzIoYyxlKTthc3NlcnQoYys0K2U8PW8uYnl0ZUxlbmd0aCwiY29tcGlsZUZvbnRJbmZvOiBCdWZmZXIgb3ZlcmZsb3cgYXQgc3lzdGVtRm9udEluZm8iKTtsLnNldChuZXcgVWludDhBcnJheSh0KSxjKzQpO2MrPTQrZX1lbHNle2Yuc2V0VWludDMyKGMsMCk7Yys9NH1pZihuKXtjb25zdCBlPW4uYnl0ZUxlbmd0aDtmLnNldFVpbnQzMihjLGUpO2Fzc2VydChjKzQrZTw9by5ieXRlTGVuZ3RoLCJjb21waWxlRm9udEluZm86IEJ1ZmZlciBvdmVyZmxvdyBhdCBjc3NGb250SW5mbyIpO2wuc2V0KG5ldyBVaW50OEFycmF5KG4pLGMrNCk7Yys9NCtlfWVsc2V7Zi5zZXRVaW50MzIoYywwKTtjKz00fWlmKHZvaWQgMD09PWUuZGF0YSl7Zi5zZXRVaW50MzIoYywwKTtjKz00fWVsc2V7Zi5zZXRVaW50MzIoYyxlLmRhdGEubGVuZ3RoKTtsLnNldChlLmRhdGEsYys0KTtjKz00K2UuZGF0YS5sZW5ndGh9YXNzZXJ0KGM8PW8uYnl0ZUxlbmd0aCwiY29tcGlsZUZvbnRJbmZvOiBCdWZmZXIgb3ZlcmZsb3ciKTtyZXR1cm4gby50cmFuc2ZlclRvRml4ZWRMZW5ndGgoYyl9ZnVuY3Rpb24gZ2V0RmxvYXQyMTQoZSx0KXtyZXR1cm4gZS5nZXRJbnQxNih0KS8xNjM4NH1mdW5jdGlvbiBnZXRTdWJyb3V0aW5lQmlhcyhlKXtjb25zdCB0PWUubGVuZ3RoO3JldHVybiB0Pj0zMzkwMD8zMjc2ODp0PDEyNDA/MTA3OjExMzF9ZnVuY3Rpb24gcGFyc2VDbWFwKGUsdCxuKXtjb25zdCBhPW5ldyBEYXRhVmlldyhlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKSxzPTE9PT1hLmdldFVpbnQxNih0KzIpP2EuZ2V0VWludDMyKHQrOCk6YS5nZXRVaW50MzIodCsxNikscj1hLmdldFVpbnQxNih0K3MpO2xldCBpLG8sbDtpZig0PT09cil7Y29uc3QgZT1hLmdldFVpbnQxNih0K3MrNik+PjE7bz10K3MrMTQ7aT1bXTtmb3IobD0wO2w8ZTtsKyssbys9MilpW2xdPXtlbmQ6YS5nZXRVaW50MTYobyl9O28rPTI7Zm9yKGw9MDtsPGU7bCsrLG8rPTIpaVtsXS5zdGFydD1hLmdldFVpbnQxNihvKTtmb3IobD0wO2w8ZTtsKyssbys9MilpW2xdLmlkRGVsdGE9YS5nZXRVaW50MTYobyk7Zm9yKGw9MDtsPGU7bCsrLG8rPTIpe2xldCBlPWEuZ2V0VWludDE2KG8pO2lmKDAhPT1lKXtpW2xdLmlkcz1bXTtmb3IobGV0IHQ9MCxuPWlbbF0uZW5kLWlbbF0uc3RhcnQrMTt0PG47dCsrKXtpW2xdLmlkc1t0XT1hLmdldFVpbnQxNihvK2UpO2UrPTJ9fX1yZXR1cm4gaX1pZigxMj09PXIpe2NvbnN0IGU9YS5nZXRVaW50MzIodCtzKzEyKTtvPXQrcysxNjtpPVtdO2ZvcihsPTA7bDxlO2wrKyl7dD1hLmdldFVpbnQzMihvKTtpLnB1c2goe3N0YXJ0OnQsZW5kOmEuZ2V0VWludDMyKG8rNCksaWREZWx0YTphLmdldFVpbnQzMihvKzgpLXR9KTtvKz0xMn1yZXR1cm4gaX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHVuc3VwcG9ydGVkIGNtYXA6ICR7cn1gKX1mdW5jdGlvbiBwYXJzZUNmZihlLHQsbixhKXtjb25zdCBzPW5ldyBDRkZQYXJzZXIobmV3IFN0cmVhbShlLHQsbi10KSx7fSxhKS5wYXJzZSgpO3JldHVybntnbHlwaHM6cy5jaGFyU3RyaW5ncy5vYmplY3RzLHN1YnJzOnMudG9wRGljdC5wcml2YXRlRGljdD8uc3VicnNJbmRleD8ub2JqZWN0cyxnc3VicnM6cy5nbG9iYWxTdWJySW5kZXg/Lm9iamVjdHMsaXNDRkZDSURGb250OnMuaXNDSURGb250LGZkU2VsZWN0OnMuZmRTZWxlY3QsZmRBcnJheTpzLmZkQXJyYXl9fWZ1bmN0aW9uIGxvb2t1cENtYXAoZSx0KXtjb25zdCBuPXQuY29kZVBvaW50QXQoMCk7bGV0IGE9MCxzPTAscj1lLmxlbmd0aC0xO2Zvcig7czxyOyl7Y29uc3QgdD1zK3IrMT4+MTtuPGVbdF0uc3RhcnQ/cj10LTE6cz10fWVbc10uc3RhcnQ8PW4mJm48PWVbc10uZW5kJiYoYT1lW3NdLmlkRGVsdGErKGVbc10uaWRzP2Vbc10uaWRzW24tZVtzXS5zdGFydF06bikmNjU1MzUpO3JldHVybntjaGFyQ29kZTpuLGdseXBoSWQ6YX19ZnVuY3Rpb24gY29tcGlsZUdseWYoZSx0LG4sYT1uZXcgU2V0KXtpZighZT8ubGVuZ3RoKXJldHVybjtpZihhLmhhcyhlKSl7d2FybigiY29tcGlsZUdseWY6IHNraXBwaW5nIHJlY3Vyc2l2ZSBjb21wb3NpdGUgZ2x5cGggcmVmZXJlbmNlLiIpO3JldHVybn1hLmFkZChlKTtmdW5jdGlvbiBtb3ZlVG8oZSxuKXtsJiZ0LmFkZChZdCxsKTtsPVtlLG5dO3QuYWRkKCR0LFtlLG5dKX1mdW5jdGlvbiBsaW5lVG8oZSxuKXt0LmFkZChZdCxbZSxuXSl9ZnVuY3Rpb24gcXVhZHJhdGljQ3VydmVUbyhlLG4sYSxzKXt0LmFkZChRdCxbZSxuLGEsc10pfWNvbnN0IHM9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpO2xldCByPTA7Y29uc3QgaT1zLmdldEludDE2KHIpO2xldCBvLGw9bnVsbCxmPTAsYz0wO3IrPTEwO2lmKGk8MClkb3tvPXMuZ2V0VWludDE2KHIpO2NvbnN0IGk9cy5nZXRVaW50MTYocisyKTtyKz00O2xldCBsLGg7aWYoMSZvKXtpZigyJm8pe2w9cy5nZXRJbnQxNihyKTtoPXMuZ2V0SW50MTYocisyKX1lbHNle2w9cy5nZXRVaW50MTYocik7aD1zLmdldFVpbnQxNihyKzIpfXIrPTR9ZWxzZSBpZigyJm8pe2w9cy5nZXRJbnQ4KHIrKyk7aD1zLmdldEludDgocisrKX1lbHNle2w9ZVtyKytdO2g9ZVtyKytdfWlmKDImbyl7Zj1sO2M9aH1lbHNle2Y9MDtjPTB9bGV0IHU9MSxtPTEscD0wLGQ9MDtpZig4Jm8pe3U9bT1nZXRGbG9hdDIxNChzLHIpO3IrPTJ9ZWxzZSBpZig2NCZvKXt1PWdldEZsb2F0MjE0KHMscik7bT1nZXRGbG9hdDIxNChzLHIrMik7cis9NH1lbHNlIGlmKDEyOCZvKXt1PWdldEZsb2F0MjE0KHMscik7cD1nZXRGbG9hdDIxNChzLHIrMik7ZD1nZXRGbG9hdDIxNChzLHIrNCk7bT1nZXRGbG9hdDIxNChzLHIrNik7cis9OH1jb25zdCBnPW4uZ2x5cGhzW2ldO2lmKGcpe3Quc2F2ZSgpO3QudHJhbnNmb3JtKFt1LHAsZCxtLGYsY10pO2NvbXBpbGVHbHlmKGcsdCxuLGEpO3QucmVzdG9yZSgpfX13aGlsZSgzMiZvKTtlbHNle2NvbnN0IHQ9W107bGV0IG4sYTtmb3Iobj0wO248aTtuKyspe3QucHVzaChzLmdldFVpbnQxNihyKSk7cis9Mn1yKz0yK3MuZ2V0VWludDE2KHIpO2NvbnN0IGw9dC5hdCgtMSkrMSxoPVtdO2Zvcig7aC5sZW5ndGg8bDspe289ZVtyKytdO2xldCB0PTE7OCZvJiYodCs9ZVtyKytdKTtmb3IoO3QtLSA+MDspaC5wdXNoKHtmbGFnczpvfSl9Zm9yKG49MDtuPGw7bisrKXtzd2l0Y2goMTgmaFtuXS5mbGFncyl7Y2FzZSAwOmYrPXMuZ2V0SW50MTYocik7cis9MjticmVhaztjYXNlIDI6Zi09ZVtyKytdO2JyZWFrO2Nhc2UgMTg6Zis9ZVtyKytdfWhbbl0ueD1mfWZvcihuPTA7bjxsO24rKyl7c3dpdGNoKDM2Jmhbbl0uZmxhZ3Mpe2Nhc2UgMDpjKz1zLmdldEludDE2KHIpO3IrPTI7YnJlYWs7Y2FzZSA0OmMtPWVbcisrXTticmVhaztjYXNlIDM2OmMrPWVbcisrXX1oW25dLnk9Y31sZXQgdT0wO2ZvcihyPTA7cjxpO3IrKyl7Y29uc3QgZT10W3JdLHM9aC5zbGljZSh1LGUrMSk7aWYoMSZzWzBdLmZsYWdzKXMucHVzaChzWzBdKTtlbHNlIGlmKDEmcy5hdCgtMSkuZmxhZ3Mpcy51bnNoaWZ0KHMuYXQoLTEpKTtlbHNle2NvbnN0IGU9e2ZsYWdzOjEseDooc1swXS54K3MuYXQoLTEpLngpLzIseTooc1swXS55K3MuYXQoLTEpLnkpLzJ9O3MudW5zaGlmdChlKTtzLnB1c2goZSl9bW92ZVRvKHNbMF0ueCxzWzBdLnkpO2ZvcihuPTEsYT1zLmxlbmd0aDtuPGE7bisrKWlmKDEmc1tuXS5mbGFncylsaW5lVG8oc1tuXS54LHNbbl0ueSk7ZWxzZSBpZigxJnNbbisxXS5mbGFncyl7cXVhZHJhdGljQ3VydmVUbyhzW25dLngsc1tuXS55LHNbbisxXS54LHNbbisxXS55KTtuKyt9ZWxzZSBxdWFkcmF0aWNDdXJ2ZVRvKHNbbl0ueCxzW25dLnksKHNbbl0ueCtzW24rMV0ueCkvMiwoc1tuXS55K3NbbisxXS55KS8yKTt1PWUrMX19YS5kZWxldGUoZSl9ZnVuY3Rpb24gY29tcGlsZUNoYXJTdHJpbmcoZSx0LG4sYSl7ZnVuY3Rpb24gbW92ZVRvKGUsbil7bCYmdC5hZGQoWXQsbCk7bD1bZSxuXTt0LmFkZCgkdCxbZSxuXSl9ZnVuY3Rpb24gbGluZVRvKGUsbil7dC5hZGQoWXQsW2Usbl0pfWZ1bmN0aW9uIGJlemllckN1cnZlVG8oZSxuLGEscyxyLGkpe3QuYWRkKEp0LFtlLG4sYSxzLHIsaV0pfWNvbnN0IHM9W107bGV0IHI9MCxpPTAsbz0wLGw9bnVsbDshZnVuY3Rpb24gcGFyc2UoZSl7Y29uc3QgbD1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCk7bGV0IGY9MDtmb3IoO2Y8ZS5sZW5ndGg7KXtsZXQgYyxoLHUsbSxwLGQsZyxiLHcsaj0hMSxrPWVbZisrXTtzd2l0Y2goayl7Y2FzZSAxOmNhc2UgMzpjYXNlIDE4OmNhc2UgMjM6bys9cy5sZW5ndGg+PjE7aj0hMDticmVhaztjYXNlIDQ6aSs9cy5wb3AoKTttb3ZlVG8ocixpKTtqPSEwO2JyZWFrO2Nhc2UgNTpmb3IoO3MubGVuZ3RoPjA7KXtyKz1zLnNoaWZ0KCk7aSs9cy5zaGlmdCgpO2xpbmVUbyhyLGkpfWJyZWFrO2Nhc2UgNjpmb3IoO3MubGVuZ3RoPjA7KXtyKz1zLnNoaWZ0KCk7bGluZVRvKHIsaSk7aWYoMD09PXMubGVuZ3RoKWJyZWFrO2krPXMuc2hpZnQoKTtsaW5lVG8ocixpKX1icmVhaztjYXNlIDc6Zm9yKDtzLmxlbmd0aD4wOyl7aSs9cy5zaGlmdCgpO2xpbmVUbyhyLGkpO2lmKDA9PT1zLmxlbmd0aClicmVhaztyKz1zLnNoaWZ0KCk7bGluZVRvKHIsaSl9YnJlYWs7Y2FzZSA4OmZvcig7cy5sZW5ndGg+MDspe2M9citzLnNoaWZ0KCk7dT1pK3Muc2hpZnQoKTtoPWMrcy5zaGlmdCgpO209dStzLnNoaWZ0KCk7cj1oK3Muc2hpZnQoKTtpPW0rcy5zaGlmdCgpO2JlemllckN1cnZlVG8oYyx1LGgsbSxyLGkpfWJyZWFrO2Nhc2UgMTA6Yj1zLnBvcCgpO3c9bnVsbDtpZihuLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT1uLmZkU2VsZWN0LmdldEZESW5kZXgoYSk7aWYoZT49MCYmZTxuLmZkQXJyYXkubGVuZ3RoKXtjb25zdCB0PW4uZmRBcnJheVtlXTtsZXQgYTt0LnByaXZhdGVEaWN0Py5zdWJyc0luZGV4JiYoYT10LnByaXZhdGVEaWN0LnN1YnJzSW5kZXgub2JqZWN0cyk7aWYoYSl7Yis9Z2V0U3Vicm91dGluZUJpYXMoYSk7dz1hW2JdfX1lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWVsc2Ugdz1uLnN1YnJzW2Irbi5zdWJyc0JpYXNdO3cmJnBhcnNlKHcpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6az1lW2YrK107c3dpdGNoKGspe2Nhc2UgMzQ6Yz1yK3Muc2hpZnQoKTtoPWMrcy5zaGlmdCgpO3A9aStzLnNoaWZ0KCk7cj1oK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsaSxoLHAscixwKTtjPXIrcy5zaGlmdCgpO2g9YytzLnNoaWZ0KCk7cj1oK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMscCxoLGkscixpKTticmVhaztjYXNlIDM1OmM9citzLnNoaWZ0KCk7dT1pK3Muc2hpZnQoKTtoPWMrcy5zaGlmdCgpO209dStzLnNoaWZ0KCk7cj1oK3Muc2hpZnQoKTtpPW0rcy5zaGlmdCgpO2JlemllckN1cnZlVG8oYyx1LGgsbSxyLGkpO2M9citzLnNoaWZ0KCk7dT1pK3Muc2hpZnQoKTtoPWMrcy5zaGlmdCgpO209dStzLnNoaWZ0KCk7cj1oK3Muc2hpZnQoKTtpPW0rcy5zaGlmdCgpO2JlemllckN1cnZlVG8oYyx1LGgsbSxyLGkpO3MucG9wKCk7YnJlYWs7Y2FzZSAzNjpjPXIrcy5zaGlmdCgpO3A9aStzLnNoaWZ0KCk7aD1jK3Muc2hpZnQoKTtkPXArcy5zaGlmdCgpO3I9aCtzLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLHAsaCxkLHIsZCk7Yz1yK3Muc2hpZnQoKTtoPWMrcy5zaGlmdCgpO2c9ZCtzLnNoaWZ0KCk7cj1oK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsZCxoLGcscixpKTticmVhaztjYXNlIDM3OmNvbnN0IGU9cix0PWk7Yz1yK3Muc2hpZnQoKTt1PWkrcy5zaGlmdCgpO2g9YytzLnNoaWZ0KCk7bT11K3Muc2hpZnQoKTtyPWgrcy5zaGlmdCgpO2k9bStzLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLHUsaCxtLHIsaSk7Yz1yK3Muc2hpZnQoKTt1PWkrcy5zaGlmdCgpO2g9YytzLnNoaWZ0KCk7bT11K3Muc2hpZnQoKTtyPWg7aT1tO01hdGguYWJzKHItZSk+TWF0aC5hYnMoaS10KT9yKz1zLnNoaWZ0KCk6aSs9cy5zaGlmdCgpO2JlemllckN1cnZlVG8oYyx1LGgsbSxyLGkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bmtub3duIG9wZXJhdG9yOiAxMiAke2t9YCl9YnJlYWs7Y2FzZSAxNDppZihzLmxlbmd0aD49NCl7Y29uc3QgZT1zLnBvcCgpLGE9cy5wb3AoKTtpPXMucG9wKCk7cj1zLnBvcCgpO3Quc2F2ZSgpO3QudHJhbnNsYXRlKHIsaSk7bGV0IG89bG9va3VwQ21hcChuLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShuLmdseXBoTmFtZU1hcFttYVtlXV0pKTtjb21waWxlQ2hhclN0cmluZyhuLmdseXBoc1tvLmdseXBoSWRdLHQsbixvLmdseXBoSWQpO3QucmVzdG9yZSgpO289bG9va3VwQ21hcChuLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShuLmdseXBoTmFtZU1hcFttYVthXV0pKTtjb21waWxlQ2hhclN0cmluZyhuLmdseXBoc1tvLmdseXBoSWRdLHQsbixvLmdseXBoSWQpfXJldHVybjtjYXNlIDE5OmNhc2UgMjA6bys9cy5sZW5ndGg+PjE7Zis9bys3Pj4zO2o9ITA7YnJlYWs7Y2FzZSAyMTppKz1zLnBvcCgpO3IrPXMucG9wKCk7bW92ZVRvKHIsaSk7aj0hMDticmVhaztjYXNlIDIyOnIrPXMucG9wKCk7bW92ZVRvKHIsaSk7aj0hMDticmVhaztjYXNlIDI0OmZvcig7cy5sZW5ndGg+Mjspe2M9citzLnNoaWZ0KCk7dT1pK3Muc2hpZnQoKTtoPWMrcy5zaGlmdCgpO209dStzLnNoaWZ0KCk7cj1oK3Muc2hpZnQoKTtpPW0rcy5zaGlmdCgpO2JlemllckN1cnZlVG8oYyx1LGgsbSxyLGkpfXIrPXMuc2hpZnQoKTtpKz1zLnNoaWZ0KCk7bGluZVRvKHIsaSk7YnJlYWs7Y2FzZSAyNTpmb3IoO3MubGVuZ3RoPjY7KXtyKz1zLnNoaWZ0KCk7aSs9cy5zaGlmdCgpO2xpbmVUbyhyLGkpfWM9citzLnNoaWZ0KCk7dT1pK3Muc2hpZnQoKTtoPWMrcy5zaGlmdCgpO209dStzLnNoaWZ0KCk7cj1oK3Muc2hpZnQoKTtpPW0rcy5zaGlmdCgpO2JlemllckN1cnZlVG8oYyx1LGgsbSxyLGkpO2JyZWFrO2Nhc2UgMjY6cy5sZW5ndGglMiYmKHIrPXMuc2hpZnQoKSk7Zm9yKDtzLmxlbmd0aD4wOyl7Yz1yO3U9aStzLnNoaWZ0KCk7aD1jK3Muc2hpZnQoKTttPXUrcy5zaGlmdCgpO3I9aDtpPW0rcy5zaGlmdCgpO2JlemllckN1cnZlVG8oYyx1LGgsbSxyLGkpfWJyZWFrO2Nhc2UgMjc6cy5sZW5ndGglMiYmKGkrPXMuc2hpZnQoKSk7Zm9yKDtzLmxlbmd0aD4wOyl7Yz1yK3Muc2hpZnQoKTt1PWk7aD1jK3Muc2hpZnQoKTttPXUrcy5zaGlmdCgpO3I9aCtzLnNoaWZ0KCk7aT1tO2JlemllckN1cnZlVG8oYyx1LGgsbSxyLGkpfWJyZWFrO2Nhc2UgMjg6cy5wdXNoKGwuZ2V0SW50MTYoZikpO2YrPTI7YnJlYWs7Y2FzZSAyOTpiPXMucG9wKCkrbi5nc3VicnNCaWFzO3c9bi5nc3VicnNbYl07dyYmcGFyc2Uodyk7YnJlYWs7Y2FzZSAzMDpmb3IoO3MubGVuZ3RoPjA7KXtjPXI7dT1pK3Muc2hpZnQoKTtoPWMrcy5zaGlmdCgpO209dStzLnNoaWZ0KCk7cj1oK3Muc2hpZnQoKTtpPW0rKDE9PT1zLmxlbmd0aD9zLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhjLHUsaCxtLHIsaSk7aWYoMD09PXMubGVuZ3RoKWJyZWFrO2M9citzLnNoaWZ0KCk7dT1pO2g9YytzLnNoaWZ0KCk7bT11K3Muc2hpZnQoKTtpPW0rcy5zaGlmdCgpO3I9aCsoMT09PXMubGVuZ3RoP3Muc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsdSxoLG0scixpKX1icmVhaztjYXNlIDMxOmZvcig7cy5sZW5ndGg+MDspe2M9citzLnNoaWZ0KCk7dT1pO2g9YytzLnNoaWZ0KCk7bT11K3Muc2hpZnQoKTtpPW0rcy5zaGlmdCgpO3I9aCsoMT09PXMubGVuZ3RoP3Muc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsdSxoLG0scixpKTtpZigwPT09cy5sZW5ndGgpYnJlYWs7Yz1yO3U9aStzLnNoaWZ0KCk7aD1jK3Muc2hpZnQoKTttPXUrcy5zaGlmdCgpO3I9aCtzLnNoaWZ0KCk7aT1tKygxPT09cy5sZW5ndGg/cy5zaGlmdCgpOjApO2JlemllckN1cnZlVG8oYyx1LGgsbSxyLGkpfWJyZWFrO2RlZmF1bHQ6aWYoazwzMil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6ICR7a31gKTtpZihrPDI0NylzLnB1c2goay0xMzkpO2Vsc2UgaWYoazwyNTEpcy5wdXNoKDI1Niooay0yNDcpK2VbZisrXSsxMDgpO2Vsc2UgaWYoazwyNTUpcy5wdXNoKDI1NiotKGstMjUxKS1lW2YrK10tMTA4KTtlbHNle3MucHVzaChsLmdldEludDMyKGYpLzY1NTM2KTtmKz00fX1qJiYocy5sZW5ndGg9MCl9fShlKX1jbGFzcyBDb21tYW5kc3tjbWRzPVtdO3RyYW5zZm9ybVN0YWNrPVtdO2N1cnJlbnRUcmFuc2Zvcm09WzEsMCwwLDEsMCwwXTthZGQoZSx0KXtpZih0KXtjb25zdHtjdXJyZW50VHJhbnNmb3JtOm59PXRoaXM7Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSs9MilVdGlsLmFwcGx5VHJhbnNmb3JtKHQsbixlKTt0aGlzLmNtZHMucHVzaChlLC4uLnQpfWVsc2UgdGhpcy5jbWRzLnB1c2goZSl9dHJhbnNmb3JtKGUpe3RoaXMuY3VycmVudFRyYW5zZm9ybT1VdGlsLnRyYW5zZm9ybSh0aGlzLmN1cnJlbnRUcmFuc2Zvcm0sZSl9dHJhbnNsYXRlKGUsdCl7dGhpcy50cmFuc2Zvcm0oWzEsMCwwLDEsZSx0XSl9c2F2ZSgpe3RoaXMudHJhbnNmb3JtU3RhY2sucHVzaCh0aGlzLmN1cnJlbnRUcmFuc2Zvcm0uc2xpY2UoKSl9cmVzdG9yZSgpe3RoaXMuY3VycmVudFRyYW5zZm9ybT10aGlzLnRyYW5zZm9ybVN0YWNrLnBvcCgpfHxbMSwwLDAsMSwwLDBdfWdldFBhdGgoKXtyZXR1cm4gRmVhdHVyZVRlc3QuaXNGbG9hdDE2QXJyYXlTdXBwb3J0ZWQ/bmV3IEZsb2F0MTZBcnJheSh0aGlzLmNtZHMpOm5ldyBGbG9hdDMyQXJyYXkodGhpcy5jbWRzKX19Y2xhc3MgQ29tcGlsZWRGb250eyNsZT1uZXcgU2V0OyNmZT1uZXcgTWFwO2NvbnN0cnVjdG9yKGUpe3RoaXMuZm9udE1hdHJpeD1lfXN0YXRpYyBnZXQgTk9PUCgpe3JldHVybiBzaGFkb3codGhpcywiTk9PUCIsRmVhdHVyZVRlc3QuaXNGbG9hdDE2QXJyYXlTdXBwb3J0ZWQ/bmV3IEZsb2F0MTZBcnJheSgwKTpuZXcgRmxvYXQzMkFycmF5KDApKX1nZXRQYXRoKGUpe2NvbnN0e2NoYXJDb2RlOnQsZ2x5cGhJZDpufT1sb29rdXBDbWFwKHRoaXMuY21hcCxlKTtpZih0aGlzLiNmZS5oYXMobikmJnRoaXMuI2xlLmhhcyh0KSlyZXR1cm4gbnVsbDtjb25zdCBhPXRoaXMuI2ZlLmdldE9ySW5zZXJ0Q29tcHV0ZWQobiwoKT0+e3RyeXtyZXR1cm4gdGhpcy5jb21waWxlR2x5cGgodGhpcy5nbHlwaHNbbl0sbil9Y2F0Y2goZSl7cmV0dXJuIGV9fSk7dGhpcy4jbGUuYWRkKHQpO2lmKGEgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBhO3JldHVybiBmdW5jdGlvbiBjb21waWxlRm9udFBhdGhJbmZvKGUpe3JldHVybiBlLnNsaWNlKCkuYnVmZmVyfShhKX1jb21waWxlR2x5cGgoZSx0KXtpZighZT8ubGVuZ3RofHwxND09PWVbMF0pcmV0dXJuIENvbXBpbGVkRm9udC5OT09QO2xldCBuPXRoaXMuZm9udE1hdHJpeDtpZih0aGlzLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT10aGlzLmZkU2VsZWN0LmdldEZESW5kZXgodCk7aWYoZT49MCYmZTx0aGlzLmZkQXJyYXkubGVuZ3RoKXtuPXRoaXMuZmRBcnJheVtlXS5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKXx8YX1lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWFzc2VydChpc051bWJlckFycmF5KG4sNiksIkV4cGVjdGVkIGEgdmFsaWQgZm9udE1hdHJpeC4iKTtjb25zdCBzPW5ldyBDb21tYW5kcztzLnRyYW5zZm9ybShuLnNsaWNlKCkpO3RoaXMuY29tcGlsZUdseXBoSW1wbChlLHMsdCk7cy5hZGQoWnQpO3JldHVybiBzLmdldFBhdGgoKX1jb21waWxlR2x5cGhJbXBsKCl7dW5yZWFjaGFibGUoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfX1jbGFzcyBUcnVlVHlwZUNvbXBpbGVkIGV4dGVuZHMgQ29tcGlsZWRGb250e2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcihufHxbNDg4ZS02LDAsMCw0ODhlLTYsMCwwXSk7dGhpcy5nbHlwaHM9ZTt0aGlzLmNtYXA9dH1jb21waWxlR2x5cGhJbXBsKGUsdCl7Y29tcGlsZUdseWYoZSx0LHRoaXMpfX1jbGFzcyBUeXBlMkNvbXBpbGVkIGV4dGVuZHMgQ29tcGlsZWRGb250e2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcihufHxbLjAwMSwwLDAsLjAwMSwwLDBdKTt0aGlzLmdseXBocz1lLmdseXBoczt0aGlzLmdzdWJycz1lLmdzdWJyc3x8W107dGhpcy5zdWJycz1lLnN1YnJzfHxbXTt0aGlzLmNtYXA9dDt0aGlzLmdseXBoTmFtZU1hcD1iYSgpO3RoaXMuZ3N1YnJzQmlhcz1nZXRTdWJyb3V0aW5lQmlhcyh0aGlzLmdzdWJycyk7dGhpcy5zdWJyc0JpYXM9Z2V0U3Vicm91dGluZUJpYXModGhpcy5zdWJycyk7dGhpcy5pc0NGRkNJREZvbnQ9ZS5pc0NGRkNJREZvbnQ7dGhpcy5mZFNlbGVjdD1lLmZkU2VsZWN0O3RoaXMuZmRBcnJheT1lLmZkQXJyYXl9Y29tcGlsZUdseXBoSW1wbChlLHQsbil7Y29tcGlsZUNoYXJTdHJpbmcoZSx0LHRoaXMsbil9fWNsYXNzIEZvbnRSZW5kZXJlckZhY3Rvcnl7c3RhdGljIGNyZWF0ZShlLHQpe2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoZS5kYXRhKSxhPW5ldyBEYXRhVmlldyhuLmJ1ZmZlcik7bGV0IHMscixpLG8sbCxmO2NvbnN0IGM9YS5nZXRVaW50MTYoNCk7Zm9yKGxldCBlPTAsaD0xMjtlPGM7ZSsrLGgrPTE2KXtjb25zdCBlPWJ5dGVzVG9TdHJpbmcobi5zdWJhcnJheShoLGgrNCkpLGM9YS5nZXRVaW50MzIoaCs4KSx1PWEuZ2V0VWludDMyKGgrMTIpO3N3aXRjaChlKXtjYXNlImNtYXAiOnM9cGFyc2VDbWFwKG4sYyk7YnJlYWs7Y2FzZSJnbHlmIjpyPW4uc3ViYXJyYXkoYyxjK3UpO2JyZWFrO2Nhc2UibG9jYSI6aT1uLnN1YmFycmF5KGMsYyt1KTticmVhaztjYXNlImhlYWQiOmY9YS5nZXRVaW50MTYoYysxOCk7bD1hLmdldFVpbnQxNihjKzUwKTticmVhaztjYXNlIkNGRiAiOm89cGFyc2VDZmYobixjLGMrdSx0KX19aWYocil7Y29uc3QgdD1mP1sxL2YsMCwwLDEvZiwwLDBdOmUuZm9udE1hdHJpeDtyZXR1cm4gbmV3IFRydWVUeXBlQ29tcGlsZWQoZnVuY3Rpb24gcGFyc2VHbHlmVGFibGUoZSx0LG4pe2NvbnN0IGE9bmV3IERhdGFWaWV3KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpO2xldCBzLHI7aWYobil7cz00O3I9KGUsdCk9PmUuZ2V0VWludDMyKHQpfWVsc2V7cz0yO3I9KGUsdCk9PjIqZS5nZXRVaW50MTYodCl9Y29uc3QgaT1bXTtsZXQgbz1yKGEsMCk7Zm9yKGxldCBuPXM7bjx0Lmxlbmd0aDtuKz1zKXtjb25zdCB0PXIoYSxuKTtpLnB1c2goZS5zdWJhcnJheShvLHQpKTtvPXR9cmV0dXJuIGl9KHIsaSxsKSxzLHQpfXJldHVybiBuZXcgVHlwZTJDb21waWxlZChvLHMsZS5mb250TWF0cml4KX19Y29uc3QgWWE9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2UuQ291cmllcj02MDA7ZVsiQ291cmllci1Cb2xkIl09NjAwO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT02MDA7ZVsiQ291cmllci1PYmxpcXVlIl09NjAwO2UuSGVsdmV0aWNhPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0yNzg7ZS5xdW90ZWRibD0zNTU7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD02Njc7ZS5xdW90ZXJpZ2h0PTIyMjtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NTU2O2UuYXQ9MTAxNTtlLkE9NjY3O2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTAwO2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0yNzg7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTI3ODtlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTIyMjtlLmE9NTU2O2UuYj01NTY7ZS5jPTUwMDtlLmQ9NTU2O2UuZT01NTY7ZS5mPTI3ODtlLmc9NTU2O2UuaD01NTY7ZS5pPTIyMjtlLmo9MjIyO2Uuaz01MDA7ZS5sPTIyMjtlLm09ODMzO2Uubj01NTY7ZS5vPTU1NjtlLnA9NTU2O2UucT01NTY7ZS5yPTMzMztlLnM9NTAwO2UudD0yNzg7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej01MDA7ZS5icmFjZWxlZnQ9MzM0O2UuYmFyPTI2MDtlLmJyYWNlcmlnaHQ9MzM0O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTE5MTtlLnF1b3RlZGJsbGVmdD0zMzM7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTUzNztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yMjI7ZS5xdW90ZWRibGJhc2U9MzMzO2UucXVvdGVkYmxyaWdodD0zMzM7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9MjIyO2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9NTAwO2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTAwO2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yMjI7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTAwO2Uuc2NlZGlsbGE9NTAwO2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT01MDA7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NjQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01MDA7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjYwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTU1NjtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9MjIyO2UudGNhcm9uPTMxNztlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yMjI7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTU1NjtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTUwMDtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTU1NjtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTI5OTtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTU1NjtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTU1NjtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT01NTY7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTU1NjtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTU2O2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz01NTY7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTU1NjtlLmV0aD01NTY7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KTtlWyJIZWx2ZXRpY2EtQm9sZCJdPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00NzQ7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD03MjI7ZS5xdW90ZXJpZ2h0PTI3ODtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NjExO2UuYXQ9OTc1O2UuQT03MjI7ZS5CPTcyMjtlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01NTY7ZS5LPTcyMjtlLkw9NjExO2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTg0O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9Mjc4O2UuYT01NTY7ZS5iPTYxMTtlLmM9NTU2O2UuZD02MTE7ZS5lPTU1NjtlLmY9MzMzO2UuZz02MTE7ZS5oPTYxMTtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTU1NjtlLmw9Mjc4O2UubT04ODk7ZS5uPTYxMTtlLm89NjExO2UucD02MTE7ZS5xPTYxMTtlLnI9Mzg5O2Uucz01NTY7ZS50PTMzMztlLnU9NjExO2Uudj01NTY7ZS53PTc3ODtlLng9NTU2O2UueT01NTY7ZS56PTUwMDtlLmJyYWNlbGVmdD0zODk7ZS5iYXI9MjgwO2UuYnJhY2VyaWdodD0zODk7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MjM4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT02MTE7ZS5mbD02MTE7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTU2O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTI3ODtlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTYxMTtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTU1NjtlLnNjb21tYWFjY2VudD01NTY7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz02MTE7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01NTY7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01NTY7ZS5zY2VkaWxsYT01NTY7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTYxMTtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NzIyO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTU1NjtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj03NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTYxMTtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTYxMTtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTU2O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTU1NjtlLm5hY3V0ZT02MTE7ZS51bWFjcm9uPTYxMTtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yODA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NjExO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249Mzg5O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NjExO2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTU2O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj02MTE7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NjExO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NjExO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NjExO2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249NDAwO2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NjExO2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NjExO2UubnRpbGRlPTYxMTtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTYxMTtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NjExO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT02MTE7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT02MTE7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NjExO2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTYxMTtlLnVkaWVyZXNpcz02MTE7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NjExO2UuZXRoPTYxMTtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NjExO2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00NzQ7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD03MjI7ZS5xdW90ZXJpZ2h0PTI3ODtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NjExO2UuYXQ9OTc1O2UuQT03MjI7ZS5CPTcyMjtlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01NTY7ZS5LPTcyMjtlLkw9NjExO2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTg0O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9Mjc4O2UuYT01NTY7ZS5iPTYxMTtlLmM9NTU2O2UuZD02MTE7ZS5lPTU1NjtlLmY9MzMzO2UuZz02MTE7ZS5oPTYxMTtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTU1NjtlLmw9Mjc4O2UubT04ODk7ZS5uPTYxMTtlLm89NjExO2UucD02MTE7ZS5xPTYxMTtlLnI9Mzg5O2Uucz01NTY7ZS50PTMzMztlLnU9NjExO2Uudj01NTY7ZS53PTc3ODtlLng9NTU2O2UueT01NTY7ZS56PTUwMDtlLmJyYWNlbGVmdD0zODk7ZS5iYXI9MjgwO2UuYnJhY2VyaWdodD0zODk7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MjM4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT02MTE7ZS5mbD02MTE7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTU2O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTI3ODtlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTYxMTtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTU1NjtlLnNjb21tYWFjY2VudD01NTY7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz02MTE7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01NTY7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01NTY7ZS5zY2VkaWxsYT01NTY7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTYxMTtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NzIyO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTU1NjtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj03NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTYxMTtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTYxMTtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTU2O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTU1NjtlLm5hY3V0ZT02MTE7ZS51bWFjcm9uPTYxMTtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yODA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NjExO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249Mzg5O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NjExO2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTU2O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj02MTE7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NjExO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NjExO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NjExO2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249NDAwO2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NjExO2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NjExO2UubnRpbGRlPTYxMTtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTYxMTtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NjExO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT02MTE7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT02MTE7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NjExO2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTYxMTtlLnVkaWVyZXNpcz02MTE7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NjExO2UuZXRoPTYxMTtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NjExO2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pO2VbIkhlbHZldGljYS1PYmxpcXVlIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTI3ODtlLnF1b3RlZGJsPTM1NTtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTY2NztlLnF1b3RlcmlnaHQ9MjIyO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj01NTY7ZS5hdD0xMDE1O2UuQT02Njc7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01MDA7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTI3ODtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mjc4O2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9MjIyO2UuYT01NTY7ZS5iPTU1NjtlLmM9NTAwO2UuZD01NTY7ZS5lPTU1NjtlLmY9Mjc4O2UuZz01NTY7ZS5oPTU1NjtlLmk9MjIyO2Uuaj0yMjI7ZS5rPTUwMDtlLmw9MjIyO2UubT04MzM7ZS5uPTU1NjtlLm89NTU2O2UucD01NTY7ZS5xPTU1NjtlLnI9MzMzO2Uucz01MDA7ZS50PTI3ODtlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTUwMDtlLmJyYWNlbGVmdD0zMzQ7ZS5iYXI9MjYwO2UuYnJhY2VyaWdodD0zMzQ7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MTkxO2UucXVvdGVkYmxsZWZ0PTMzMztlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTM3O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTIyMjtlLnF1b3RlZGJsYmFzZT0zMzM7ZS5xdW90ZWRibHJpZ2h0PTMzMztlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yMjI7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD01MDA7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01MDA7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTIyMjtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01MDA7ZS5zY2VkaWxsYT01MDA7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NjY3O2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTUwMDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj02NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTUwMDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yNjA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTMzMztlLm9tYWNyb249NTU2O2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yMjI7ZS50Y2Fyb249MzE3O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTIyMjtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTU2O2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTAwO2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTU2O2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249Mjk5O2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NTU2O2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTU2O2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTU1NjtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTU2O2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01NTY7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTU1NjtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTU2O2UuZXRoPTU1NjtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pO2UuU3ltYm9sPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS51bml2ZXJzYWw9NzEzO2UubnVtYmVyc2lnbj01MDA7ZS5leGlzdGVudGlhbD01NDk7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5zdWNodGhhdD00Mzk7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlza21hdGg9NTAwO2UucGx1cz01NDk7ZS5jb21tYT0yNTA7ZS5taW51cz01NDk7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01NDk7ZS5lcXVhbD01NDk7ZS5ncmVhdGVyPTU0OTtlLnF1ZXN0aW9uPTQ0NDtlLmNvbmdydWVudD01NDk7ZS5BbHBoYT03MjI7ZS5CZXRhPTY2NztlLkNoaT03MjI7ZS5EZWx0YT02MTI7ZS5FcHNpbG9uPTYxMTtlLlBoaT03NjM7ZS5HYW1tYT02MDM7ZS5FdGE9NzIyO2UuSW90YT0zMzM7ZS50aGV0YTE9NjMxO2UuS2FwcGE9NzIyO2UuTGFtYmRhPTY4NjtlLk11PTg4OTtlLk51PTcyMjtlLk9taWNyb249NzIyO2UuUGk9NzY4O2UuVGhldGE9NzQxO2UuUmhvPTU1NjtlLlNpZ21hPTU5MjtlLlRhdT02MTE7ZS5VcHNpbG9uPTY5MDtlLnNpZ21hMT00Mzk7ZS5PbWVnYT03Njg7ZS5YaT02NDU7ZS5Qc2k9Nzk1O2UuWmV0YT02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS50aGVyZWZvcmU9ODYzO2UuYnJhY2tldHJpZ2h0PTMzMztlLnBlcnBlbmRpY3VsYXI9NjU4O2UudW5kZXJzY29yZT01MDA7ZS5yYWRpY2FsZXg9NTAwO2UuYWxwaGE9NjMxO2UuYmV0YT01NDk7ZS5jaGk9NTQ5O2UuZGVsdGE9NDk0O2UuZXBzaWxvbj00Mzk7ZS5waGk9NTIxO2UuZ2FtbWE9NDExO2UuZXRhPTYwMztlLmlvdGE9MzI5O2UucGhpMT02MDM7ZS5rYXBwYT01NDk7ZS5sYW1iZGE9NTQ5O2UubXU9NTc2O2UubnU9NTIxO2Uub21pY3Jvbj01NDk7ZS5waT01NDk7ZS50aGV0YT01MjE7ZS5yaG89NTQ5O2Uuc2lnbWE9NjAzO2UudGF1PTQzOTtlLnVwc2lsb249NTc2O2Uub21lZ2ExPTcxMztlLm9tZWdhPTY4NjtlLnhpPTQ5MztlLnBzaT02ODY7ZS56ZXRhPTQ5NDtlLmJyYWNlbGVmdD00ODA7ZS5iYXI9MjAwO2UuYnJhY2VyaWdodD00ODA7ZS5zaW1pbGFyPTU0OTtlLkV1cm89NzUwO2UuVXBzaWxvbjE9NjIwO2UubWludXRlPTI0NztlLmxlc3NlcXVhbD01NDk7ZS5mcmFjdGlvbj0xNjc7ZS5pbmZpbml0eT03MTM7ZS5mbG9yaW49NTAwO2UuY2x1Yj03NTM7ZS5kaWFtb25kPTc1MztlLmhlYXJ0PTc1MztlLnNwYWRlPTc1MztlLmFycm93Ym90aD0xMDQyO2UuYXJyb3dsZWZ0PTk4NztlLmFycm93dXA9NjAzO2UuYXJyb3dyaWdodD05ODc7ZS5hcnJvd2Rvd249NjAzO2UuZGVncmVlPTQwMDtlLnBsdXNtaW51cz01NDk7ZS5zZWNvbmQ9NDExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLm11bHRpcGx5PTU0OTtlLnByb3BvcnRpb25hbD03MTM7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS5idWxsZXQ9NDYwO2UuZGl2aWRlPTU0OTtlLm5vdGVxdWFsPTU0OTtlLmVxdWl2YWxlbmNlPTU0OTtlLmFwcHJveGVxdWFsPTU0OTtlLmVsbGlwc2lzPTFlMztlLmFycm93dmVydGV4PTYwMztlLmFycm93aG9yaXpleD0xZTM7ZS5jYXJyaWFnZXJldHVybj02NTg7ZS5hbGVwaD04MjM7ZS5JZnJha3R1cj02ODY7ZS5SZnJha3R1cj03OTU7ZS53ZWllcnN0cmFzcz05ODc7ZS5jaXJjbGVtdWx0aXBseT03Njg7ZS5jaXJjbGVwbHVzPTc2ODtlLmVtcHR5c2V0PTgyMztlLmludGVyc2VjdGlvbj03Njg7ZS51bmlvbj03Njg7ZS5wcm9wZXJzdXBlcnNldD03MTM7ZS5yZWZsZXhzdXBlcnNldD03MTM7ZS5ub3RzdWJzZXQ9NzEzO2UucHJvcGVyc3Vic2V0PTcxMztlLnJlZmxleHN1YnNldD03MTM7ZS5lbGVtZW50PTcxMztlLm5vdGVsZW1lbnQ9NzEzO2UuYW5nbGU9NzY4O2UuZ3JhZGllbnQ9NzEzO2UucmVnaXN0ZXJzZXJpZj03OTA7ZS5jb3B5cmlnaHRzZXJpZj03OTA7ZS50cmFkZW1hcmtzZXJpZj04OTA7ZS5wcm9kdWN0PTgyMztlLnJhZGljYWw9NTQ5O2UuZG90bWF0aD0yNTA7ZS5sb2dpY2Fsbm90PTcxMztlLmxvZ2ljYWxhbmQ9NjAzO2UubG9naWNhbG9yPTYwMztlLmFycm93ZGJsYm90aD0xMDQyO2UuYXJyb3dkYmxsZWZ0PTk4NztlLmFycm93ZGJsdXA9NjAzO2UuYXJyb3dkYmxyaWdodD05ODc7ZS5hcnJvd2RibGRvd249NjAzO2UubG96ZW5nZT00OTQ7ZS5hbmdsZWxlZnQ9MzI5O2UucmVnaXN0ZXJzYW5zPTc5MDtlLmNvcHlyaWdodHNhbnM9NzkwO2UudHJhZGVtYXJrc2Fucz03ODY7ZS5zdW1tYXRpb249NzEzO2UucGFyZW5sZWZ0dHA9Mzg0O2UucGFyZW5sZWZ0ZXg9Mzg0O2UucGFyZW5sZWZ0YnQ9Mzg0O2UuYnJhY2tldGxlZnR0cD0zODQ7ZS5icmFja2V0bGVmdGV4PTM4NDtlLmJyYWNrZXRsZWZ0YnQ9Mzg0O2UuYnJhY2VsZWZ0dHA9NDk0O2UuYnJhY2VsZWZ0bWlkPTQ5NDtlLmJyYWNlbGVmdGJ0PTQ5NDtlLmJyYWNlZXg9NDk0O2UuYW5nbGVyaWdodD0zMjk7ZS5pbnRlZ3JhbD0yNzQ7ZS5pbnRlZ3JhbHRwPTY4NjtlLmludGVncmFsZXg9Njg2O2UuaW50ZWdyYWxidD02ODY7ZS5wYXJlbnJpZ2h0dHA9Mzg0O2UucGFyZW5yaWdodGV4PTM4NDtlLnBhcmVucmlnaHRidD0zODQ7ZS5icmFja2V0cmlnaHR0cD0zODQ7ZS5icmFja2V0cmlnaHRleD0zODQ7ZS5icmFja2V0cmlnaHRidD0zODQ7ZS5icmFjZXJpZ2h0dHA9NDk0O2UuYnJhY2VyaWdodG1pZD00OTQ7ZS5icmFjZXJpZ2h0YnQ9NDk0O2UuYXBwbGU9NzkwfSk7ZVsiVGltZXMtUm9tYW4iXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDA4O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU2NDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01NjQ7ZS5lcXVhbD01NjQ7ZS5ncmVhdGVyPTU2NDtlLnF1ZXN0aW9uPTQ0NDtlLmF0PTkyMTtlLkE9NzIyO2UuQj02Njc7ZS5DPTY2NztlLkQ9NzIyO2UuRT02MTE7ZS5GPTU1NjtlLkc9NzIyO2UuSD03MjI7ZS5JPTMzMztlLko9Mzg5O2UuSz03MjI7ZS5MPTYxMTtlLk09ODg5O2UuTj03MjI7ZS5PPTcyMjtlLlA9NTU2O2UuUT03MjI7ZS5SPTY2NztlLlM9NTU2O2UuVD02MTE7ZS5VPTcyMjtlLlY9NzIyO2UuVz05NDQ7ZS5YPTcyMjtlLlk9NzIyO2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NDQ0O2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01MDA7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01MDA7ZS5sPTI3ODtlLm09Nzc4O2Uubj01MDA7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTMzMztlLnM9Mzg5O2UudD0yNzg7ZS51PTUwMDtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej00NDQ7ZS5icmFjZWxlZnQ9NDgwO2UuYmFyPTIwMDtlLmJyYWNlcmlnaHQ9NDgwO2UuYXNjaWl0aWxkZT01NDE7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTE4MDtlLnF1b3RlZGJsbGVmdD00NDQ7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTQ1MztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NDQ0O2UucXVvdGVkYmxyaWdodD00NDQ7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NDQ0O2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT04ODk7ZS5vcmRmZW1pbmluZT0yNzY7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTcyMjtlLk9FPTg4OTtlLm9yZG1hc2N1bGluZT0zMTA7ZS5hZT02Njc7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTMzMztlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NDQ0O2UudWh1bmdhcnVtbGF1dD01MDA7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTcyMjtlLmRpdmlkZT01NjQ7ZS5ZYWN1dGU9NzIyO2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTQ0NDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NDQ0O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTAwO2UuRWRpZXJlc2lzPTYxMTtlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzYwO2UuRW1hY3Jvbj02MTE7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NDQ0O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NDQ0O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NDQ0O2UuRWRvdGFjY2VudD02MTE7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTY2NztlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01MDA7ZS5hY2lyY3VtZmxleD00NDQ7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTU1NjtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTY2NztlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NTg4O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01MDA7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU2NDtlLnVhY3V0ZT01MDA7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02MTE7ZS5hZGllcmVzaXM9NDQ0O2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTAwO2UudW1hY3Jvbj01MDA7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTMzMztlLnBsdXNtaW51cz01NjQ7ZS5icm9rZW5iYXI9MjAwO2UucmVnaXN0ZXJlZD03NjA7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zMzM7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTYxMTtlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTMyNjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9NDQ0O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NDQ0O2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTUwMDtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjExO2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM0NDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTk4MDtlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTMzMztlLkltYWNyb249MzMzO2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01MDA7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02MTE7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTAwO2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTY2NztlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD00NDQ7ZS5FY2Fyb249NjExO2UuSW9nb25laz0zMzM7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTY0O2UuSWNpcmN1bWZsZXg9MzMzO2UubmNhcm9uPTUwMDtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU2NDtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTAwO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249NDQ0O2UubmNvbW1hYWNjZW50PTUwMDtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KTtlWyJUaW1lcy1Cb2xkIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTU1NTtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9MWUzO2UuYW1wZXJzYW5kPTgzMztlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NzA7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTcwO2UuZXF1YWw9NTcwO2UuZ3JlYXRlcj01NzA7ZS5xdWVzdGlvbj01MDA7ZS5hdD05MzA7ZS5BPTcyMjtlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9Nzc4O2UuST0zODk7ZS5KPTUwMDtlLks9Nzc4O2UuTD02Njc7ZS5NPTk0NDtlLk49NzIyO2UuTz03Nzg7ZS5QPTYxMTtlLlE9Nzc4O2UuUj03MjI7ZS5TPTU1NjtlLlQ9NjY3O2UuVT03MjI7ZS5WPTcyMjtlLlc9MWUzO2UuWD03MjI7ZS5ZPTcyMjtlLlo9NjY3O2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODE7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTU2O2UuYz00NDQ7ZS5kPTU1NjtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTU2O2UuaT0yNzg7ZS5qPTMzMztlLms9NTU2O2UubD0yNzg7ZS5tPTgzMztlLm49NTU2O2Uubz01MDA7ZS5wPTU1NjtlLnE9NTU2O2Uucj00NDQ7ZS5zPTM4OTtlLnQ9MzMzO2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NDQ0O2UuYnJhY2VsZWZ0PTM5NDtlLmJhcj0yMjA7ZS5icmFjZXJpZ2h0PTM5NDtlLmFzY2lpdGlsZGU9NTIwO2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yNzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01NDA7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzAwO2UuTHNsYXNoPTY2NztlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzMwO2UuYWU9NzIyO2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTU1NjtlLklkaWVyZXNpcz0zODk7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz03MjI7ZS5kaXZpZGU9NTcwO2UuWWFjdXRlPTcyMjtlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc0NztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD02Njc7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249NDQ0O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02Njc7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTY3MjtlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01NzA7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTY2NztlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zODk7ZS5wbHVzbWludXM9NTcwO2UuYnJva2VuYmFyPTIyMDtlLnJlZ2lzdGVyZWQ9NzQ3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mzg5O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9NDQ0O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjY3O2UuWmNhcm9uPTY2NztlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj00MTY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTQ0NDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zOTQ7ZS5LY29tbWFhY2NlbnQ9Nzc4O2UuTGFjdXRlPTY2NztlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zODk7ZS5JbWFjcm9uPTM4OTtlLkxjYXJvbj02Njc7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD00NDQ7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjY3O2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NDQ0O2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mzg5O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU3MDtlLkljaXJjdW1mbGV4PTM4OTtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01NzA7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTQ0NDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSk7ZVsiVGltZXMtQm9sZEl0YWxpYyJdPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zODk7ZS5xdW90ZWRibD01NTU7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTcwO2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU3MDtlLmVxdWFsPTU3MDtlLmdyZWF0ZXI9NTcwO2UucXVlc3Rpb249NTAwO2UuYXQ9ODMyO2UuQT02Njc7ZS5CPTY2NztlLkM9NjY3O2UuRD03MjI7ZS5FPTY2NztlLkY9NjY3O2UuRz03MjI7ZS5IPTc3ODtlLkk9Mzg5O2UuSj01MDA7ZS5LPTY2NztlLkw9NjExO2UuTT04ODk7ZS5OPTcyMjtlLk89NzIyO2UuUD02MTE7ZS5RPTcyMjtlLlI9NjY3O2UuUz01NTY7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTg4OTtlLlg9NjY3O2UuWT02MTE7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTcwO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTU1NjtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTUwMDtlLmw9Mjc4O2UubT03Nzg7ZS5uPTU1NjtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9Mzg5O2Uucz0zODk7ZS50PTI3ODtlLnU9NTU2O2Uudj00NDQ7ZS53PTY2NztlLng9NTAwO2UueT00NDQ7ZS56PTM4OTtlLmJyYWNlbGVmdD0zNDg7ZS5iYXI9MjIwO2UuYnJhY2VyaWdodD0zNDg7ZS5hc2NpaXRpbGRlPTU3MDtlLmV4Y2xhbWRvd249Mzg5O2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9Mjc4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTAwO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTk0NDtlLm9yZGZlbWluaW5lPTI2NjtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9NzIyO2UuT0U9OTQ0O2Uub3JkbWFzY3VsaW5lPTMwMDtlLmFlPTcyMjtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9Mzg5O2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NjExO2UuZGl2aWRlPTU3MDtlLllhY3V0ZT02MTE7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTQ0NDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NDc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTY2NztlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NjY3O2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NjY3O2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjExO2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjY3O2UuU2FjdXRlPTU1NjtlLmRjYXJvbj02MDg7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTcwO2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NDQ0O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mzg5O2UucGx1c21pbnVzPTU3MDtlLmJyb2tlbmJhcj0yMjA7ZS5yZWdpc3RlcmVkPTc0NztlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTM4OTtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzY2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT0zODk7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTc2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249MzgyO2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9Mzg5O2UuSW1hY3Jvbj0zODk7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjY3O2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTM4OTtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTM4OTtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz02MDY7ZS5JY2lyY3VtZmxleD0zODk7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NjA2O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj0zODk7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pO2VbIlRpbWVzLUl0YWxpYyJdPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00MjA7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9Njc1O2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTY3NTtlLmVxdWFsPTY3NTtlLmdyZWF0ZXI9Njc1O2UucXVlc3Rpb249NTAwO2UuYXQ9OTIwO2UuQT02MTE7ZS5CPTYxMTtlLkM9NjY3O2UuRD03MjI7ZS5FPTYxMTtlLkY9NjExO2UuRz03MjI7ZS5IPTcyMjtlLkk9MzMzO2UuSj00NDQ7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTY2NztlLk89NzIyO2UuUD02MTE7ZS5RPTcyMjtlLlI9NjExO2UuUz01MDA7ZS5UPTU1NjtlLlU9NzIyO2UuVj02MTE7ZS5XPTgzMztlLlg9NjExO2UuWT01NTY7ZS5aPTU1NjtlLmJyYWNrZXRsZWZ0PTM4OTtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mzg5O2UuYXNjaWljaXJjdW09NDIyO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9Mjc4O2UuZz01MDA7ZS5oPTUwMDtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTQ0NDtlLmw9Mjc4O2UubT03MjI7ZS5uPTUwMDtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9Mzg5O2Uucz0zODk7ZS50PTI3ODtlLnU9NTAwO2Uudj00NDQ7ZS53PTY2NztlLng9NDQ0O2UueT00NDQ7ZS56PTM4OTtlLmJyYWNlbGVmdD00MDA7ZS5iYXI9Mjc1O2UuYnJhY2VyaWdodD00MDA7ZS5hc2NpaXRpbGRlPTU0MTtlLmV4Y2xhbWRvd249Mzg5O2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9MjE0O2UucXVvdGVkYmxsZWZ0PTU1NjtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTIzO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01NTY7ZS5xdW90ZWRibHJpZ2h0PTU1NjtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTg4OTtlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTg4OTtlLkFFPTg4OTtlLm9yZGZlbWluaW5lPTI3NjtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9NzIyO2UuT0U9OTQ0O2Uub3JkbWFzY3VsaW5lPTMxMDtlLmFlPTY2NztlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NjY3O2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9MzMzO2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTUwMDtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NTU2O2UuZGl2aWRlPTY3NTtlLllhY3V0ZT01NTY7ZS5BY2lyY3VtZmxleD02MTE7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTQ0NDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01MDA7ZS5FZGllcmVzaXM9NjExO2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NjA7ZS5FbWFjcm9uPTYxMTtlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NjY3O2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NTU2O2UuQ2FjdXRlPTY2NztlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTYxMTtlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NjExO2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTUwMDtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NjExO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NTU2O2UuVGhvcm49NjExO2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjExO2UuU2FjdXRlPTUwMDtlLmRjYXJvbj01NDQ7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTUwMDtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT02MTE7ZS5BYnJldmU9NjExO2UubXVsdGlwbHk9Njc1O2UudWFjdXRlPTUwMDtlLlRjYXJvbj01NTY7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NDQ0O2UuTmFjdXRlPTY2NztlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTYxMTtlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01MDA7ZS51bWFjcm9uPTUwMDtlLk5jYXJvbj02Njc7ZS5JYWN1dGU9MzMzO2UucGx1c21pbnVzPTY3NTtlLmJyb2tlbmJhcj0yNzU7ZS5yZWdpc3RlcmVkPTc2MDtlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTMzMztlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjExO2UucmFjdXRlPTM4OTtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTU1NjtlLlpjYXJvbj01NTY7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzAwO2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02MTE7ZS5BZGllcmVzaXM9NjExO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT0zODk7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTAwO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02MTE7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01MDA7ZS5sY2Fyb249MzAwO2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9OTgwO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9MzMzO2UuSW1hY3Jvbj0zMzM7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTUwMDtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTYxMTtlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTUwMDtlLlNjb21tYWFjY2VudD01MDA7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01MDA7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTY2NztlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjExO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02MTE7ZS5Bb2dvbmVrPTYxMTtlLkFyaW5nPTYxMTtlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTM4OTtlLkVjYXJvbj02MTE7ZS5Jb2dvbmVrPTMzMztlLmtjb21tYWFjY2VudD00NDQ7ZS5taW51cz02NzU7ZS5JY2lyY3VtZmxleD0zMzM7ZS5uY2Fyb249NTAwO2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9Njc1O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01MDA7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj0zODk7ZS5uY29tbWFhY2NlbnQ9NTAwO2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pO2UuWmFwZkRpbmdiYXRzPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmExPTk3NDtlLmEyPTk2MTtlLmEyMDI9OTc0O2UuYTM9OTgwO2UuYTQ9NzE5O2UuYTU9Nzg5O2UuYTExOT03OTA7ZS5hMTE4PTc5MTtlLmExMTc9NjkwO2UuYTExPTk2MDtlLmExMj05Mzk7ZS5hMTM9NTQ5O2UuYTE0PTg1NTtlLmExNT05MTE7ZS5hMTY9OTMzO2UuYTEwNT05MTE7ZS5hMTc9OTQ1O2UuYTE4PTk3NDtlLmExOT03NTU7ZS5hMjA9ODQ2O2UuYTIxPTc2MjtlLmEyMj03NjE7ZS5hMjM9NTcxO2UuYTI0PTY3NztlLmEyNT03NjM7ZS5hMjY9NzYwO2UuYTI3PTc1OTtlLmEyOD03NTQ7ZS5hNj00OTQ7ZS5hNz01NTI7ZS5hOD01Mzc7ZS5hOT01Nzc7ZS5hMTA9NjkyO2UuYTI5PTc4NjtlLmEzMD03ODg7ZS5hMzE9Nzg4O2UuYTMyPTc5MDtlLmEzMz03OTM7ZS5hMzQ9Nzk0O2UuYTM1PTgxNjtlLmEzNj04MjM7ZS5hMzc9Nzg5O2UuYTM4PTg0MTtlLmEzOT04MjM7ZS5hNDA9ODMzO2UuYTQxPTgxNjtlLmE0Mj04MzE7ZS5hNDM9OTIzO2UuYTQ0PTc0NDtlLmE0NT03MjM7ZS5hNDY9NzQ5O2UuYTQ3PTc5MDtlLmE0OD03OTI7ZS5hNDk9Njk1O2UuYTUwPTc3NjtlLmE1MT03Njg7ZS5hNTI9NzkyO2UuYTUzPTc1OTtlLmE1ND03MDc7ZS5hNTU9NzA4O2UuYTU2PTY4MjtlLmE1Nz03MDE7ZS5hNTg9ODI2O2UuYTU5PTgxNTtlLmE2MD03ODk7ZS5hNjE9Nzg5O2UuYTYyPTcwNztlLmE2Mz02ODc7ZS5hNjQ9Njk2O2UuYTY1PTY4OTtlLmE2Nj03ODY7ZS5hNjc9Nzg3O2UuYTY4PTcxMztlLmE2OT03OTE7ZS5hNzA9Nzg1O2UuYTcxPTc5MTtlLmE3Mj04NzM7ZS5hNzM9NzYxO2UuYTc0PTc2MjtlLmEyMDM9NzYyO2UuYTc1PTc1OTtlLmEyMDQ9NzU5O2UuYTc2PTg5MjtlLmE3Nz04OTI7ZS5hNzg9Nzg4O2UuYTc5PTc4NDtlLmE4MT00Mzg7ZS5hODI9MTM4O2UuYTgzPTI3NztlLmE4ND00MTU7ZS5hOTc9MzkyO2UuYTk4PTM5MjtlLmE5OT02Njg7ZS5hMTAwPTY2ODtlLmE4OT0zOTA7ZS5hOTA9MzkwO2UuYTkzPTMxNztlLmE5ND0zMTc7ZS5hOTE9Mjc2O2UuYTkyPTI3NjtlLmEyMDU9NTA5O2UuYTg1PTUwOTtlLmEyMDY9NDEwO2UuYTg2PTQxMDtlLmE4Nz0yMzQ7ZS5hODg9MjM0O2UuYTk1PTMzNDtlLmE5Nj0zMzQ7ZS5hMTAxPTczMjtlLmExMDI9NTQ0O2UuYTEwMz01NDQ7ZS5hMTA0PTkxMDtlLmExMDY9NjY3O2UuYTEwNz03NjA7ZS5hMTA4PTc2MDtlLmExMTI9Nzc2O2UuYTExMT01OTU7ZS5hMTEwPTY5NDtlLmExMDk9NjI2O2UuYTEyMD03ODg7ZS5hMTIxPTc4ODtlLmExMjI9Nzg4O2UuYTEyMz03ODg7ZS5hMTI0PTc4ODtlLmExMjU9Nzg4O2UuYTEyNj03ODg7ZS5hMTI3PTc4ODtlLmExMjg9Nzg4O2UuYTEyOT03ODg7ZS5hMTMwPTc4ODtlLmExMzE9Nzg4O2UuYTEzMj03ODg7ZS5hMTMzPTc4ODtlLmExMzQ9Nzg4O2UuYTEzNT03ODg7ZS5hMTM2PTc4ODtlLmExMzc9Nzg4O2UuYTEzOD03ODg7ZS5hMTM5PTc4ODtlLmExNDA9Nzg4O2UuYTE0MT03ODg7ZS5hMTQyPTc4ODtlLmExNDM9Nzg4O2UuYTE0ND03ODg7ZS5hMTQ1PTc4ODtlLmExNDY9Nzg4O2UuYTE0Nz03ODg7ZS5hMTQ4PTc4ODtlLmExNDk9Nzg4O2UuYTE1MD03ODg7ZS5hMTUxPTc4ODtlLmExNTI9Nzg4O2UuYTE1Mz03ODg7ZS5hMTU0PTc4ODtlLmExNTU9Nzg4O2UuYTE1Nj03ODg7ZS5hMTU3PTc4ODtlLmExNTg9Nzg4O2UuYTE1OT03ODg7ZS5hMTYwPTg5NDtlLmExNjE9ODM4O2UuYTE2Mz0xMDE2O2UuYTE2ND00NTg7ZS5hMTk2PTc0ODtlLmExNjU9OTI0O2UuYTE5Mj03NDg7ZS5hMTY2PTkxODtlLmExNjc9OTI3O2UuYTE2OD05Mjg7ZS5hMTY5PTkyODtlLmExNzA9ODM0O2UuYTE3MT04NzM7ZS5hMTcyPTgyODtlLmExNzM9OTI0O2UuYTE2Mj05MjQ7ZS5hMTc0PTkxNztlLmExNzU9OTMwO2UuYTE3Nj05MzE7ZS5hMTc3PTQ2MztlLmExNzg9ODgzO2UuYTE3OT04MzY7ZS5hMTkzPTgzNjtlLmExODA9ODY3O2UuYTE5OT04Njc7ZS5hMTgxPTY5NjtlLmEyMDA9Njk2O2UuYTE4Mj04NzQ7ZS5hMjAxPTg3NDtlLmExODM9NzYwO2UuYTE4ND05NDY7ZS5hMTk3PTc3MTtlLmExODU9ODY1O2UuYTE5ND03NzE7ZS5hMTk4PTg4ODtlLmExODY9OTY3O2UuYTE5NT04ODg7ZS5hMTg3PTgzMTtlLmExODg9ODczO2UuYTE4OT05Mjc7ZS5hMTkwPTk3MDtlLmExOTE9OTE4fSl9KSxKYT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6LTQyNn07ZVsiQ291cmllci1Cb2xkIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0Mzl9O2VbIkNvdXJpZXItT2JsaXF1ZSJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDI2fTtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9O2UuSGVsdmV0aWNhPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTIzfTtlWyJIZWx2ZXRpY2EtQm9sZCJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfTtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTIzfTtlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUzMn07ZVsiVGltZXMtUm9tYW4iXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY2Mix4SGVpZ2h0OjQ1MH07ZVsiVGltZXMtQm9sZCJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6Njc2LHhIZWlnaHQ6NDYxfTtlWyJUaW1lcy1JdGFsaWMiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY1Myx4SGVpZ2h0OjQ0MX07ZVsiVGltZXMtQm9sZEl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjY5LHhIZWlnaHQ6NDYyfTtlLlN5bWJvbD17YXNjZW50Ok1hdGguTmFOLGRlc2NlbnQ6TWF0aC5OYU4sY2FwSGVpZ2h0Ok1hdGguTmFOLHhIZWlnaHQ6TWF0aC5OYU59O2UuWmFwZkRpbmdiYXRzPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn19KTtjbGFzcyBPcGVuVHlwZUZpbGVCdWlsZGVyeyNjZT1uZXcgTWFwO2NvbnN0cnVjdG9yKGUpe3RoaXMuc2ZudD1lfXN0YXRpYyBnZXRTZWFyY2hQYXJhbXMoZSx0KXtsZXQgbj0xLGE9MDtmb3IoOyhuXmUpPm47KXtuPDw9MTthKyt9Y29uc3Qgcz1uKnQ7cmV0dXJue3JhbmdlOnMsZW50cnk6YSxyYW5nZVNoaWZ0OnQqZS1zfX10b0FycmF5KCl7bGV0IGU9dGhpcy5zZm50O2NvbnN0IHQ9dGhpcy4jY2Usbj1bLi4udC5rZXlzKCldLnNvcnQoKSxhPW4ubGVuZ3RoO2xldCBzPTEyKzE2KmE7Y29uc3Qgcj1bc107Zm9yKGxldCBlPTA7ZTxhO2UrKyl7cys9KHQuZ2V0KG5bZV0pLmxlbmd0aCszJi00KT4+PjA7ci5wdXNoKHMpfWNvbnN0IGk9bmV3IFVpbnQ4QXJyYXkocyksbz1uZXcgRGF0YVZpZXcoaS5idWZmZXIpO2ZvcihsZXQgZT0wO2U8YTtlKyspe2NvbnN0IGE9dC5nZXQobltlXSk7aS5zZXQoYSxyW2VdKX0idHJ1ZSI9PT1lJiYoZT0iXDABXDBcMCIpO2kuc2V0KHN0cmluZ1RvQnl0ZXMoZSksMCk7by5zZXRJbnQxNig0LGEpO2NvbnN0IGw9T3BlblR5cGVGaWxlQnVpbGRlci5nZXRTZWFyY2hQYXJhbXMoYSwxNik7by5zZXRJbnQxNig2LGwucmFuZ2UpO28uc2V0SW50MTYoOCxsLmVudHJ5KTtvLnNldEludDE2KDEwLGwucmFuZ2VTaGlmdCk7cz0xMjtmb3IobGV0IGU9MDtlPGE7ZSsrKXtjb25zdCBhPW5bZV07aS5zZXQoc3RyaW5nVG9CeXRlcyhhKSxzKTtsZXQgbD0wO2ZvcihsZXQgdD1yW2VdLG49cltlKzFdO3Q8bjt0Kz00KXtsPWwrby5nZXRVaW50MzIodCk+Pj4wfW8uc2V0SW50MzIocys0LGwpO28uc2V0SW50MzIocys4LHJbZV0pO28uc2V0SW50MzIocysxMix0LmdldChhKS5sZW5ndGgpO3MrPTE2fXRoaXMuI2NlLmNsZWFyKCk7cmV0dXJuIGl9YWRkVGFibGUoZSx0KXtpZih0aGlzLiNjZS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKGBUYWJsZSAke2V9IGFscmVhZHkgZXhpc3RzYCk7dGhpcy4jY2Uuc2V0KGUsdCl9fWNvbnN0IFFhPVs0XSxaYT1bNV0sZXM9WzZdLHRzPVs3XSxucz1bOF0sYXM9WzEyLDM1XSxzcz1bMTRdLHJzPVsyMV0saXM9WzIyXSxvcz1bMzBdLGxzPVszMV07Y2xhc3MgVHlwZTFDaGFyU3RyaW5ne3dpZHRoPTA7bHNiPTA7ZmxleGluZz0hMTtvdXRwdXQ9W107c3RhY2s9W107Y29udmVydChlLHQsbil7Y29uc3QgYT1lLmxlbmd0aDtsZXQgcyxyLGksbz0hMTtmb3IobGV0IGw9MDtsPGE7bCsrKXtsZXQgYT1lW2xdO2lmKGE8MzIpezEyPT09YSYmKGE9KGE8PDgpK2VbKytsXSk7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDM6Y2FzZSA5OmNhc2UgMzA3MjpjYXNlIDMwNzM6Y2FzZSAzMDc0OmNhc2UgMzEwNTp0aGlzLnN0YWNrPVtdO2JyZWFrO2Nhc2UgNDppZih0aGlzLmZsZXhpbmcpe2lmKHRoaXMuc3RhY2subGVuZ3RoPDEpe289ITA7YnJlYWt9Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaCgwLGUpO2JyZWFrfW89dGhpcy5leGVjdXRlQ29tbWFuZCgxLFFhKTticmVhaztjYXNlIDU6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsWmEpO2JyZWFrO2Nhc2UgNjpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSxlcyk7YnJlYWs7Y2FzZSA3Om89dGhpcy5leGVjdXRlQ29tbWFuZCgxLHRzKTticmVhaztjYXNlIDg6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDYsbnMpO2JyZWFrO2Nhc2UgMTA6aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7bz0hMDticmVha31pPXRoaXMuc3RhY2sucG9wKCk7aWYoIXRbaV0pe289ITA7YnJlYWt9bz10aGlzLmNvbnZlcnQodFtpXSx0LG4pO2JyZWFrO2Nhc2UgMTE6cmV0dXJuIG87Y2FzZSAxMzppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtvPSEwO2JyZWFrfXM9dGhpcy5zdGFjay5wb3AoKTtyPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9cjt0aGlzLndpZHRoPXM7dGhpcy5zdGFjay5wdXNoKHMscik7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsaXMpO2JyZWFrO2Nhc2UgMTQ6dGhpcy5vdXRwdXQucHVzaChzc1swXSk7YnJlYWs7Y2FzZSAyMTppZih0aGlzLmZsZXhpbmcpYnJlYWs7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIscnMpO2JyZWFrO2Nhc2UgMjI6aWYodGhpcy5mbGV4aW5nKXt0aGlzLnN0YWNrLnB1c2goMCk7YnJlYWt9bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsaXMpO2JyZWFrO2Nhc2UgMzA6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsb3MpO2JyZWFrO2Nhc2UgMzE6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsbHMpO2JyZWFrO2Nhc2UgMzA3ODppZihuKXtjb25zdCBlPXRoaXMuc3RhY2suYXQoLTUpO3RoaXMuc2VhYz10aGlzLnN0YWNrLnNwbGljZSgtNCw0KTt0aGlzLnNlYWNbMF0rPXRoaXMubHNiLWU7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDAsc3MpfWVsc2Ugbz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsc3MpO2JyZWFrO2Nhc2UgMzA3OTppZih0aGlzLnN0YWNrLmxlbmd0aDw0KXtvPSEwO2JyZWFrfXRoaXMuc3RhY2sucG9wKCk7cz10aGlzLnN0YWNrLnBvcCgpO2NvbnN0IGU9dGhpcy5zdGFjay5wb3AoKTtyPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9cjt0aGlzLndpZHRoPXM7dGhpcy5zdGFjay5wdXNoKHMscixlKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMyxycyk7YnJlYWs7Y2FzZSAzMDg0OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe289ITA7YnJlYWt9Y29uc3QgbD10aGlzLnN0YWNrLnBvcCgpLGY9dGhpcy5zdGFjay5wb3AoKTt0aGlzLnN0YWNrLnB1c2goZi9sKTticmVhaztjYXNlIDMwODg6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7bz0hMDticmVha31pPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgYz10aGlzLnN0YWNrLnBvcCgpO2lmKDA9PT1pJiYzPT09Yyl7Y29uc3QgZT10aGlzLnN0YWNrLnNwbGljZSgtMTcsMTcpO3RoaXMuc3RhY2sucHVzaChlWzJdK2VbMF0sZVszXStlWzFdLGVbNF0sZVs1XSxlWzZdLGVbN10sZVs4XSxlWzldLGVbMTBdLGVbMTFdLGVbMTJdLGVbMTNdLGVbMTRdKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMTMsYXMsITApO3RoaXMuZmxleGluZz0hMTt0aGlzLnN0YWNrLnB1c2goZVsxNV0sZVsxNl0pfWVsc2UgMT09PWkmJjA9PT1jJiYodGhpcy5mbGV4aW5nPSEwKTticmVhaztjYXNlIDMwODk6YnJlYWs7ZGVmYXVsdDp3YXJuKCdVbmtub3duIHR5cGUgMSBjaGFyc3RyaW5nIGNvbW1hbmQgb2YgIicrYSsnIicpfWlmKG8pYnJlYWt9ZWxzZXthPD0yNDY/YS09MTM5OmE9YTw9MjUwPzI1NiooYS0yNDcpK2VbKytsXSsxMDg6YTw9MjU0Py0yNTYqKGEtMjUxKS1lWysrbF0tMTA4OigyNTUmZVsrK2xdKTw8MjR8KDI1NSZlWysrbF0pPDwxNnwoMjU1JmVbKytsXSk8PDh8MjU1JmVbKytsXTt0aGlzLnN0YWNrLnB1c2goYSl9fXJldHVybiBvfWV4ZWN1dGVDb21tYW5kKGUsdCxuKXtjb25zdCBhPXRoaXMuc3RhY2subGVuZ3RoO2lmKGU+YSlyZXR1cm4hMDtjb25zdCBzPWEtZTtmb3IobGV0IGU9cztlPGE7ZSsrKXtsZXQgdD10aGlzLnN0YWNrW2VdO2lmKE51bWJlci5pc0ludGVnZXIodCkpdGhpcy5vdXRwdXQucHVzaCgyOCx0Pj44JjI1NSwyNTUmdCk7ZWxzZXt0PTY1NTM2KnR8MDt0aGlzLm91dHB1dC5wdXNoKDI1NSx0Pj4yNCYyNTUsdD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0KX19dGhpcy5vdXRwdXQucHVzaCguLi50KTtuP3RoaXMuc3RhY2suc3BsaWNlKHMsZSk6dGhpcy5zdGFjay5sZW5ndGg9MDtyZXR1cm4hMX19ZnVuY3Rpb24gaXNIZXhEaWdpdChlKXtyZXR1cm4gZT49NDgmJmU8PTU3fHxlPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDJ9ZnVuY3Rpb24gZGVjcnlwdChlLHQsbil7aWYobj49ZS5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2xldCBhLHMscj0wfHQ7Zm9yKGE9MDthPG47YSsrKXI9NTI4NDUqKGVbYV0rcikrMjI3MTkmNjU1MzU7Y29uc3QgaT1lLmxlbmd0aC1uLG89bmV3IFVpbnQ4QXJyYXkoaSk7Zm9yKGE9bixzPTA7czxpO2ErKyxzKyspe2NvbnN0IHQ9ZVthXTtvW3NdPXRecj4+ODtyPTUyODQ1Kih0K3IpKzIyNzE5JjY1NTM1fXJldHVybiBvfWZ1bmN0aW9uIGlzU3BlY2lhbChlKXtyZXR1cm4gNDc9PT1lfHw5MT09PWV8fDkzPT09ZXx8MTIzPT09ZXx8MTI1PT09ZXx8NDA9PT1lfHw0MT09PWV9Y2xhc3MgVHlwZTFQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LG4pe2lmKHQpe2NvbnN0IHQ9ZS5nZXRCeXRlcygpLG49ISgoaXNIZXhEaWdpdCh0WzBdKXx8aXNXaGl0ZVNwYWNlKHRbMF0pKSYmaXNIZXhEaWdpdCh0WzFdKSYmaXNIZXhEaWdpdCh0WzJdKSYmaXNIZXhEaWdpdCh0WzNdKSYmaXNIZXhEaWdpdCh0WzRdKSYmaXNIZXhEaWdpdCh0WzVdKSYmaXNIZXhEaWdpdCh0WzZdKSYmaXNIZXhEaWdpdCh0WzddKSk7ZT1uZXcgU3RyZWFtKG4/ZGVjcnlwdCh0LDU1NjY1LDQpOmZ1bmN0aW9uIGRlY3J5cHRBc2NpaShlLHQsbil7bGV0IGE9MHx0O2NvbnN0IHM9ZS5sZW5ndGgscj1uZXcgVWludDhBcnJheShzPj4+MSk7bGV0IGksbztmb3IoaT0wLG89MDtpPHM7aSsrKXtjb25zdCB0PWVbaV07aWYoIWlzSGV4RGlnaXQodCkpY29udGludWU7aSsrO2xldCBuO2Zvcig7aTxzJiYhaXNIZXhEaWdpdChuPWVbaV0pOylpKys7aWYoaTxzKXtjb25zdCBlPXBhcnNlSW50KFN0cmluZy5mcm9tQ2hhckNvZGUodCxuKSwxNik7cltvKytdPWVeYT4+ODthPTUyODQ1KihlK2EpKzIyNzE5JjY1NTM1fX1yZXR1cm4gci5zbGljZShuLG8pfSh0LDU1NjY1LDQpKX10aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFuO3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpfXJlYWROdW1iZXJBcnJheSgpe3RoaXMuZ2V0VG9rZW4oKTtjb25zdCBlPVtdO2Zvcig7Oyl7Y29uc3QgdD10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXR8fCJdIj09PXR8fCJ9Ij09PXQpYnJlYWs7ZS5wdXNoKHBhcnNlRmxvYXQodHx8MCkpfXJldHVybiBlfXJlYWROdW1iZXIoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gcGFyc2VGbG9hdChlfHwwKX1yZWFkSW50KCl7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7cmV0dXJuIDB8cGFyc2VJbnQoZXx8MCwxMCl9cmVhZEJvb2xlYW4oKXtyZXR1cm4idHJ1ZSI9PT10aGlzLmdldFRva2VuKCk/MTowfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfXByZXZDaGFyKCl7dGhpcy5zdHJlYW0uc2tpcCgtMik7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYoLTE9PT10KXJldHVybiBudWxsO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoIWlzV2hpdGVTcGFjZSh0KSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1pZihpc1NwZWNpYWwodCkpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0KX1sZXQgbj0iIjtkb3tuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO3Q9dGhpcy5uZXh0Q2hhcigpfXdoaWxlKHQ+PTAmJiFpc1doaXRlU3BhY2UodCkmJiFpc1NwZWNpYWwodCkpO3JldHVybiBufXJlYWRDaGFyU3RyaW5ncyhlLHQpe3JldHVybi0xPT09dD9lOmRlY3J5cHQoZSw0MzMwLHQpfWV4dHJhY3RGb250UHJvZ3JhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtLG49W10sYT1bXSxzPW5ldyBNYXAoW1sibGVuSVYiLDRdXSkscj17c3VicnM6W10sY2hhcnN0cmluZ3M6W10scHJvcGVydGllczp7cHJpdmF0ZURhdGE6c319O2xldCBpLG8sbCxmPSExLGM9ITE7Zm9yKDtudWxsIT09KGk9dGhpcy5nZXRUb2tlbigpKTspaWYoIi8iPT09aSl7aT10aGlzLmdldFRva2VuKCk7c3dpdGNoKGkpe2Nhc2UiQ2hhclN0cmluZ3MiOmlmKGMpYnJlYWs7Yz0hMDt0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7Zm9yKDs7KXtpPXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09aXx8ImVuZCI9PT1pKWJyZWFrO2lmKCIvIiE9PWkpY29udGludWU7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7bD1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtjb25zdCBuPXRoaXMucmVhZENoYXJTdHJpbmdzKGwscy5nZXQoImxlbklWIikpO3RoaXMubmV4dENoYXIoKTtpPXRoaXMuZ2V0VG9rZW4oKTsibm9hY2Nlc3MiPT09aT90aGlzLmdldFRva2VuKCk6Ii8iPT09aSYmdGhpcy5wcmV2Q2hhcigpO2EucHVzaCh7Z2x5cGg6ZSxlbmNvZGVkOm59KX1icmVhaztjYXNlIlN1YnJzIjppZihmKWJyZWFrO2Y9ITA7dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2Zvcig7ImR1cCI9PT10aGlzLmdldFRva2VuKCk7KXtjb25zdCBlPXRoaXMucmVhZEludCgpO289dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2w9bz4wP3QuZ2V0Qnl0ZXMobyk6bmV3IFVpbnQ4QXJyYXkoMCk7Y29uc3QgYT10aGlzLnJlYWRDaGFyU3RyaW5ncyhsLHMuZ2V0KCJsZW5JViIpKTt0aGlzLm5leHRDaGFyKCk7aT10aGlzLmdldFRva2VuKCk7Im5vYWNjZXNzIj09PWkmJnRoaXMuZ2V0VG9rZW4oKTtuW2VdPWF9YnJlYWs7Y2FzZSJCbHVlVmFsdWVzIjpjYXNlIk90aGVyQmx1ZXMiOmNhc2UiRmFtaWx5Qmx1ZXMiOmNhc2UiRmFtaWx5T3RoZXJCbHVlcyI6dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTswO2JyZWFrO2Nhc2UiU3RlbVNuYXBIIjpjYXNlIlN0ZW1TbmFwViI6cy5zZXQoaSx0aGlzLnJlYWROdW1iZXJBcnJheSgpKTticmVhaztjYXNlIlN0ZEhXIjpjYXNlIlN0ZFZXIjpzLnNldChpLHRoaXMucmVhZE51bWJlckFycmF5KClbMF0pO2JyZWFrO2Nhc2UiQmx1ZVNoaWZ0IjpjYXNlImxlbklWIjpjYXNlIkJsdWVGdXp6IjpjYXNlIkJsdWVTY2FsZSI6Y2FzZSJMYW5ndWFnZUdyb3VwIjpzLnNldChpLHRoaXMucmVhZE51bWJlcigpKTticmVhaztjYXNlIkV4cGFuc2lvbkZhY3RvciI6cy5zZXQoaSx0aGlzLnJlYWROdW1iZXIoKXx8LjA2KTticmVhaztjYXNlIkZvcmNlQm9sZCI6cy5zZXQoaSx0aGlzLnJlYWRCb29sZWFuKCkpfX1mb3IoY29uc3R7ZW5jb2RlZDp0LGdseXBoOnN9b2YgYSl7Y29uc3QgYT1uZXcgVHlwZTFDaGFyU3RyaW5nLGk9e2dseXBoTmFtZTpzLGNoYXJzdHJpbmc6YS5jb252ZXJ0KHQsbix0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpP1sxNF06YS5vdXRwdXQsd2lkdGg6YS53aWR0aCxsc2I6YS5sc2Isc2VhYzphLnNlYWN9OyIubm90ZGVmIj09PXM/ci5jaGFyc3RyaW5ncy51bnNoaWZ0KGkpOnIuY2hhcnN0cmluZ3MucHVzaChpKTtpZihlLmJ1aWx0SW5FbmNvZGluZyl7Y29uc3QgdD1lLmJ1aWx0SW5FbmNvZGluZy5pbmRleE9mKHMpO3Q+LTEmJnZvaWQgMD09PWUud2lkdGhzW3RdJiZ0Pj1lLmZpcnN0Q2hhciYmdDw9ZS5sYXN0Q2hhciYmKGUud2lkdGhzW3RdPWEud2lkdGgpfX1yZXR1cm4gcn1leHRyYWN0Q2lkS2V5ZWRGb250UHJvZ3JhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtLG49bmV3IE1hcChbWyJsZW5JViIsNF1dKSxhPXtzdWJyczpbXSxjaGFyc3RyaW5nczpbXSxwcm9wZXJ0aWVzOntwcml2YXRlRGF0YTpufX07bGV0IHM9MCxyPS0xLGk9MSxvPTAsbD0tMSxmPTAsYz0wLGg9MCx1PSExLG09ITE7Y29uc3QgcD1bXTtmdW5jdGlvbiByZW1lbWJlclRva2VuKGUpe3AucHVzaChlKTtwLmxlbmd0aD40JiZwLnNoaWZ0KCl9bGV0IGQ7Zm9yKDtudWxsIT09KGQ9dGhpcy5nZXRUb2tlbigpKTspe2lmKCJTdGFydERhdGEiPT09ZCl7Y29uc3QgZT1wLmF0KC0zKSx0PXAuYXQoLTEpO2lmKCIoIiE9PXAuYXQoLTQpfHwiKSIhPT1wLmF0KC0yKXx8IkJpbmFyeSIhPT1lJiYiSGV4IiE9PWV8fCEvXlxkKyQvLnRlc3QodCkpcmV0dXJuIG51bGw7aD1wYXJzZUludCh0LDEwKTtpZihoPD0wKXJldHVybiBudWxsO3U9IkhleCI9PT1lO209ITA7YnJlYWt9cmVtZW1iZXJUb2tlbihkKTtpZigiLyI9PT1kKXtkPXRoaXMuZ2V0VG9rZW4oKTtyZW1lbWJlclRva2VuKGQpO3N3aXRjaChkKXtjYXNlIkZvbnRNYXRyaXgiOmUuZm9udE1hdHJpeD10aGlzLnJlYWROdW1iZXJBcnJheSgpO2JyZWFrO2Nhc2UiRm9udEJCb3giOmNvbnN0IHQ9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmFzY2VudD1NYXRoLm1heCh0WzNdLHRbMV0pO2UuZGVzY2VudD1NYXRoLm1pbih0WzFdLHRbM10pO2UuYXNjZW50U2NhbGVkPSEwO2JyZWFrO2Nhc2UiQ0lEQ291bnQiOnM9dGhpcy5yZWFkSW50KCk7YnJlYWs7Y2FzZSJDSURNYXBPZmZzZXQiOnI9dGhpcy5yZWFkSW50KCk7YnJlYWs7Y2FzZSJGREJ5dGVzIjppPXRoaXMucmVhZEludCgpO2JyZWFrO2Nhc2UiR0RCeXRlcyI6bz10aGlzLnJlYWRJbnQoKTticmVhaztjYXNlIlN1YnJNYXBPZmZzZXQiOmw9dGhpcy5yZWFkSW50KCk7YnJlYWs7Y2FzZSJTREJ5dGVzIjpmPXRoaXMucmVhZEludCgpO2JyZWFrO2Nhc2UiU3VickNvdW50IjpjPXRoaXMucmVhZEludCgpO2JyZWFrO2Nhc2UiQmx1ZVZhbHVlcyI6Y2FzZSJPdGhlckJsdWVzIjpjYXNlIkZhbWlseUJsdWVzIjpjYXNlIkZhbWlseU90aGVyQmx1ZXMiOnRoaXMucmVhZE51bWJlckFycmF5KCk7YnJlYWs7Y2FzZSJTdGVtU25hcEgiOmNhc2UiU3RlbVNuYXBWIjpuLnNldChkLHRoaXMucmVhZE51bWJlckFycmF5KCkpO2JyZWFrO2Nhc2UiU3RkSFciOmNhc2UiU3RkVlciOm4uc2V0KGQsdGhpcy5yZWFkTnVtYmVyQXJyYXkoKVswXSk7YnJlYWs7Y2FzZSJCbHVlU2hpZnQiOmNhc2UibGVuSVYiOmNhc2UiQmx1ZUZ1enoiOmNhc2UiQmx1ZVNjYWxlIjpjYXNlIkxhbmd1YWdlR3JvdXAiOm4uc2V0KGQsdGhpcy5yZWFkTnVtYmVyKCkpO2JyZWFrO2Nhc2UiRXhwYW5zaW9uRmFjdG9yIjpuLnNldChkLHRoaXMucmVhZE51bWJlcigpfHwuMDYpO2JyZWFrO2Nhc2UiRm9yY2VCb2xkIjpuLnNldChkLHRoaXMucmVhZEJvb2xlYW4oKSl9fX1pZighbXx8czw9MHx8cjwwfHxpPDB8fGk+NHx8bzwxfHxvPjQpcmV0dXJuIG51bGw7Y29uc3QgZz10LmVuZC10LnBvcztpZihoPmcpaWYodSl7aWYoaD4yKmcpcmV0dXJuIG51bGx9ZWxzZSBoPWc7bGV0IGI9dC5nZXRCeXRlcyh1P3ZvaWQgMDpoKTtpZih1KXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGgpO2xldCB0PS0xLG49MDtmb3IobGV0IGE9MCxzPWIubGVuZ3RoO2E8cyYmbjxoO2ErKyl7Y29uc3Qgcz1iW2FdO2lmKGlzSGV4RGlnaXQocykpaWYodDwwKXQ9cztlbHNle2VbbisrXT1wYXJzZUludChTdHJpbmcuZnJvbUNoYXJDb2RlKHQscyksMTYpO3Q9LTF9fWlmKG4hPT1oKXJldHVybiBudWxsO2I9ZX1jb25zdCB3PW4uZ2V0KCJsZW5JViIpLGo9aStvLGs9W107ZnVuY3Rpb24gcmVhZFVpbnQoZSx0KXtsZXQgbj0wO2ZvcihsZXQgYT0wO2E8dDthKyspbj1uPDw4fGJbZSthXTtyZXR1cm4gbj4+PjB9aWYocisocysxKSpqPmIubGVuZ3RofHxjPjAmJihsPDB8fGY8MXx8Zj40fHxsKyhjKzEpKmY+Yi5sZW5ndGgpKXJldHVybiBudWxsO2lmKGk+MClmb3IobGV0IGU9MDtlPHM7ZSsrKWlmKDAhPT1yZWFkVWludChyK2UqaixpKSlyZXR1cm4gbnVsbDtpZihjPjApe2NvbnN0IGU9bmV3IEFycmF5KGMrMSk7Zm9yKGxldCB0PTA7dDw9Yzt0KyspZVt0XT1yZWFkVWludChsK3QqZixmKTtmb3IobGV0IHQ9MDt0PGM7dCsrKXtjb25zdCBuPWVbdF0sYT1lW3QrMV07YT5iLmxlbmd0aHx8YTxuP2tbdF09bmV3IFVpbnQ4QXJyYXkoMCk6a1t0XT10aGlzLnJlYWRDaGFyU3RyaW5ncyhiLnN1YmFycmF5KG4sYSksdyl9fWNvbnN0IHk9W107bGV0IHE9cmVhZFVpbnQocitpLG8pO2ZvcihsZXQgZT0wO2U8cztlKyspe2NvbnN0IHQ9cmVhZFVpbnQocisoZSsxKSpqK2ksbyksbj0wPT09ZT8iLm5vdGRlZiI6YGNpZCR7ZX1gO2lmKHQ+cSYmdDw9Yi5sZW5ndGgpe2NvbnN0IGU9dGhpcy5yZWFkQ2hhclN0cmluZ3MoYi5zdWJhcnJheShxLHQpLHcpLGE9bmV3IFR5cGUxQ2hhclN0cmluZyxzPWEuY29udmVydChlLGssdGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkKTt5LnB1c2goe2dseXBoTmFtZTpuLGNoYXJzdHJpbmc6cz9bMTRdOmEub3V0cHV0LHdpZHRoOmEud2lkdGgsbHNiOmEubHNiLHNlYWM6YS5zZWFjfSl9ZWxzZXtjb25zdCBlPXlbMF07eS5wdXNoKHtnbHlwaE5hbWU6bixjaGFyc3RyaW5nOmU/LmNoYXJzdHJpbmcuc2xpY2UoKXx8WzEzOSwxNF0sd2lkdGg6ZT8ud2lkdGh8fDAsbHNiOmU/LmxzYnx8MH0pfXE9dH1hLnN1YnJzPWs7YS5jaGFyc3RyaW5ncz15O3JldHVybiBhfWV4dHJhY3RGb250SGVhZGVyKGUpe2xldCB0O2Zvcig7bnVsbCE9PSh0PXRoaXMuZ2V0VG9rZW4oKSk7KWlmKCIvIj09PXQpe3Q9dGhpcy5nZXRUb2tlbigpO3N3aXRjaCh0KXtjYXNlIkZvbnRNYXRyaXgiOmNvbnN0IG49dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmZvbnRNYXRyaXg9bjticmVhaztjYXNlIkVuY29kaW5nIjpjb25zdCBhPXRoaXMuZ2V0VG9rZW4oKTtsZXQgcztpZigvXlxkKyQvLnRlc3QoYSkpe3M9W107Y29uc3QgZT0wfHBhcnNlSW50KGEsMTApO3RoaXMuZ2V0VG9rZW4oKTtmb3IobGV0IG49MDtuPGU7bisrKXt0PXRoaXMuZ2V0VG9rZW4oKTtmb3IoOyJkdXAiIT09dCYmImRlZiIhPT10Oyl7dD10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXQpcmV0dXJufWlmKCJkZWYiPT09dClicmVhaztjb25zdCBlPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtjb25zdCBuPXRoaXMuZ2V0VG9rZW4oKTtzW2VdPW47dGhpcy5nZXRUb2tlbigpfX1lbHNlIHM9Z2V0RW5jb2RpbmcoYSk7ZS5idWlsdEluRW5jb2Rpbmc9czticmVhaztjYXNlIkZvbnRCQm94Ijpjb25zdCByPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5hc2NlbnQ9TWF0aC5tYXgoclszXSxyWzFdKTtlLmRlc2NlbnQ9TWF0aC5taW4oclsxXSxyWzNdKTtlLmFzY2VudFNjYWxlZD0hMH19fX1mdW5jdGlvbiBmaW5kQmxvY2soZSx0LG4pe2NvbnN0IGE9ZS5sZW5ndGgscz10Lmxlbmd0aCxyPWEtcztsZXQgaT1uLG89ITE7Zm9yKDtpPHI7KXtsZXQgbj0wO2Zvcig7bjxzJiZlW2krbl09PT10W25dOyluKys7aWYobj49cyl7aSs9bjtmb3IoO2k8YSYmaXNXaGl0ZVNwYWNlKGVbaV0pOylpKys7bz0hMDticmVha31pKyt9cmV0dXJue2ZvdW5kOm8sbGVuZ3RoOml9fWNsYXNzIFR5cGUxRm9udHsjaGU7Y29uc3RydWN0b3IoZSx0LG4pe2xldCBhO24uY29tcG9zaXRlJiZmdW5jdGlvbiBpc0NpZEtleWVkVHlwZTFGaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMjA0OCk7aWYodC5sZW5ndGg8Mnx8MzchPT10WzBdfHwzMyE9PXRbMV0pcmV0dXJuITE7Y29uc3Qgbj1ieXRlc1RvU3RyaW5nKHQpO3JldHVybiBuLmluY2x1ZGVzKCJSZXNvdXJjZS1DSURGb250Iil8fC9cL0NJREZvbnRUeXBlXHMrMFxiLy50ZXN0KG4pfSh0KSYmKGE9dGhpcy4jdWUodCxuKSk7YXx8PXRoaXMuI21lKHQsbik7Zm9yKGNvbnN0IGUgaW4gYS5wcm9wZXJ0aWVzKW5bZV09YS5wcm9wZXJ0aWVzW2VdO2NvbnN0IHM9YS5jaGFyc3RyaW5ncyxyPXRoaXMuZ2V0VHlwZTJDaGFyc3RyaW5ncyhzKSxpPXRoaXMuZ2V0VHlwZTJTdWJycyhhLnN1YnJzKTt0aGlzLmNoYXJzdHJpbmdzPXM7dGhpcy5kYXRhPXRoaXMud3JhcChlLHIsdGhpcy5jaGFyc3RyaW5ncyxpLG4pO3RoaXMuc2VhY3M9dGhpcy5nZXRTZWFjcyhhLmNoYXJzdHJpbmdzKX0jbWUoZSx0KXtsZXQgbj10Lmxlbmd0aDEsYT10Lmxlbmd0aDIscz1lLnBlZWtCeXRlcyg2KTtjb25zdCByPTEyOD09PXNbMF0mJjE9PT1zWzFdO2lmKHIpe2Uuc2tpcCg2KTtuPXNbNV08PDI0fHNbNF08PDE2fHNbM108PDh8c1syXX1jb25zdCBpPWZ1bmN0aW9uIGdldEhlYWRlckJsb2NrKGUsdCl7Y29uc3Qgbj1bMTAxLDEwMSwxMjAsMTAxLDk5XSxhPWUucG9zO2xldCBzLHIsaSxvO3RyeXtzPWUuZ2V0Qnl0ZXModCk7cj1zLmxlbmd0aH1jYXRjaHt9aWYocj09PXQpe2k9ZmluZEJsb2NrKHMsbix0LTIqbi5sZW5ndGgpO2lmKGkuZm91bmQmJmkubGVuZ3RoPT09dClyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0ocyksbGVuZ3RoOnR9fXdhcm4oJ0ludmFsaWQgIkxlbmd0aDEiIHByb3BlcnR5IGluIFR5cGUxIGZvbnQgLS0gdHJ5aW5nIHRvIHJlY292ZXIuJyk7ZS5wb3M9YTtmb3IoOzspe2k9ZmluZEJsb2NrKGUucGVla0J5dGVzKDIwNDgpLG4sMCk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO2UucG9zKz1pLmxlbmd0aDtpZihpLmZvdW5kKXtvPWUucG9zLWE7YnJlYWt9fWUucG9zPWE7aWYobylyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oZS5nZXRCeXRlcyhvKSksbGVuZ3RoOm99O3dhcm4oJ1VuYWJsZSB0byByZWNvdmVyICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHVzaW5nIGFzIGlzLicpO3JldHVybntzdHJlYW06bmV3IFN0cmVhbShlLmdldEJ5dGVzKHQpKSxsZW5ndGg6dH19KGUsbik7bmV3IFR5cGUxUGFyc2VyKGkuc3RyZWFtLCExLCEwKS5leHRyYWN0Rm9udEhlYWRlcih0KTtpZihyKXtzPWUuZ2V0Qnl0ZXMoNik7YT1zWzVdPDwyNHxzWzRdPDwxNnxzWzNdPDw4fHNbMl19Y29uc3Qgbz1mdW5jdGlvbiBnZXRFZXhlY0Jsb2NrKGUsdCl7Y29uc3Qgbj1lLmdldEJ5dGVzKCk7aWYoMD09PW4ubGVuZ3RoKXRocm93IG5ldyBGb3JtYXRFcnJvcigiZ2V0RWV4ZWNCbG9jayAtIG5vIGZvbnQgcHJvZ3JhbSBmb3VuZC4iKTtyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0obiksbGVuZ3RoOm4ubGVuZ3RofX0oZSksbD1uZXcgVHlwZTFQYXJzZXIoby5zdHJlYW0sITAsITApLmV4dHJhY3RGb250UHJvZ3JhbSh0KTt0aGlzLiNoZT1pLmxlbmd0aCtvLmxlbmd0aDtyZXR1cm4gbH0jdWUoZSx0KXtjb25zdCBuPWUucG9zLGE9ZS5lbmQtbixzPW5ldyBUeXBlMVBhcnNlcihlLCExLCEwKS5leHRyYWN0Q2lkS2V5ZWRGb250UHJvZ3JhbSh0KTtpZighcyl7ZS5wb3M9bjt3YXJuKCJUeXBlMUZvbnQ6IHVuYWJsZSB0byBwYXJzZSBDSUQta2V5ZWQgVHlwZSAxIGZvbnQuIik7cmV0dXJuIG51bGx9dGhpcy4jaGU9YTtyZXR1cm4gc31nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3MubGVuZ3RoKzF9Z2V0Q2hhcnNldCgpe2NvbnN0IGU9WyIubm90ZGVmIl07Zm9yKGNvbnN0e2dseXBoTmFtZTp0fW9mIHRoaXMuY2hhcnN0cmluZ3MpZS5wdXNoKHQpO3JldHVybiBlfWdldEdseXBoTWFwcGluZyhlKXtjb25zdCB0PXRoaXMuY2hhcnN0cmluZ3M7aWYoZS5jb21wb3NpdGUpe2NvbnN0IG49T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IGE9MCxzPXQubGVuZ3RoO2E8czthKyspe25bZS5jTWFwLmNoYXJDb2RlT2YoYSldPWErMX1yZXR1cm4gbn1jb25zdCBuPVsiLm5vdGRlZiJdO2xldCBhLHM7Zm9yKHM9MDtzPHQubGVuZ3RoO3MrKyluLnB1c2godFtzXS5nbHlwaE5hbWUpO2NvbnN0IHI9ZS5idWlsdEluRW5jb2Rpbmc7aWYocil7YT1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHIpe3M9bi5pbmRleE9mKHJbZV0pO3M+PTAmJihhW2VdPXMpfX1yZXR1cm4gdHlwZTFGb250R2x5cGhNYXBwaW5nKGUsYSxuKX1oYXNHbHlwaElkKGUpe2lmKGU8MHx8ZT49dGhpcy5udW1HbHlwaHMpcmV0dXJuITE7aWYoMD09PWUpcmV0dXJuITA7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3NbZS0xXS5jaGFyc3RyaW5nLmxlbmd0aD4wfWdldFNlYWNzKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBuPTAsYT1lLmxlbmd0aDtuPGE7bisrKXtjb25zdCBhPWVbbl07YS5zZWFjJiYodFtuKzFdPWEuc2VhYyl9cmV0dXJuIHR9Z2V0VHlwZTJDaGFyc3RyaW5ncyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGUpdC5wdXNoKG4uY2hhcnN0cmluZyk7cmV0dXJuIHR9Z2V0VHlwZTJTdWJycyhlKXtsZXQgdD0wO2NvbnN0IG49ZS5sZW5ndGg7dD1uPDExMzM/MTA3Om48MzM3Njk/MTEzMTozMjc2ODtjb25zdCBhPVtdO2xldCBzO2ZvcihzPTA7czx0O3MrKylhLnB1c2goWzExXSk7Zm9yKHM9MDtzPG47cysrKWEucHVzaChlW3NdKTtyZXR1cm4gYX13cmFwKGUsdCxuLGEscyl7Y29uc3Qgcj1uZXcgQ0ZGKHRoaXMuI2hlKTtyLmhlYWRlcj1uZXcgQ0ZGSGVhZGVyKDEsMCw0LDQpO3IubmFtZXM9W2VdO2NvbnN0IGk9bmV3IENGRlRvcERpY3Q7aS5zZXRCeU5hbWUoInZlcnNpb24iLDM5MSk7aS5zZXRCeU5hbWUoIk5vdGljZSIsMzkyKTtpLnNldEJ5TmFtZSgiRnVsbE5hbWUiLDM5Myk7aS5zZXRCeU5hbWUoIkZhbWlseU5hbWUiLDM5NCk7aS5zZXRCeU5hbWUoIldlaWdodCIsMzk1KTtpLnNldEJ5TmFtZSgiRW5jb2RpbmciLG51bGwpO2kuc2V0QnlOYW1lKCJGb250TWF0cml4IixzLmZvbnRNYXRyaXgpO2kuc2V0QnlOYW1lKCJGb250QkJveCIscy5iYm94KTtpLnNldEJ5TmFtZSgiY2hhcnNldCIsbnVsbCk7aS5zZXRCeU5hbWUoIkNoYXJTdHJpbmdzIixudWxsKTtpLnNldEJ5TmFtZSgiUHJpdmF0ZSIsbnVsbCk7ci50b3BEaWN0PWk7Y29uc3Qgbz1uZXcgQ0ZGU3RyaW5ncztvLmFkZCgiVmVyc2lvbiAwLjExIik7by5hZGQoIlNlZSBvcmlnaW5hbCBub3RpY2UiKTtvLmFkZChlKTtvLmFkZChlKTtvLmFkZCgiTWVkaXVtIik7ci5zdHJpbmdzPW87ci5nbG9iYWxTdWJySW5kZXg9bmV3IENGRkluZGV4O2NvbnN0IGw9dC5sZW5ndGgsZj1bIi5ub3RkZWYiXTtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdHtnbHlwaE5hbWU6dH09bltlXTstMT09PU9hLmluZGV4T2YodCkmJm8uYWRkKHQpO2YucHVzaCh0KX1yLmNoYXJzZXQ9bmV3IENGRkNoYXJzZXQoITEsMCxmKTtjb25zdCBjPW5ldyBDRkZJbmRleDtjLmFkZChbMTM5LDE0XSk7Zm9yKGxldCBlPTA7ZTxsO2UrKyljLmFkZCh0W2VdKTtyLmNoYXJTdHJpbmdzPWM7Y29uc3QgaD1uZXcgQ0ZGUHJpdmF0ZURpY3Q7aC5zZXRCeU5hbWUoIlN1YnJzIixudWxsKTtjb25zdCB1PVsiQmx1ZVZhbHVlcyIsIk90aGVyQmx1ZXMiLCJGYW1pbHlCbHVlcyIsIkZhbWlseU90aGVyQmx1ZXMiLCJTdGVtU25hcEgiLCJTdGVtU25hcFYiLCJCbHVlU2hpZnQiLCJCbHVlRnV6eiIsIkJsdWVTY2FsZSIsIkxhbmd1YWdlR3JvdXAiLCJFeHBhbnNpb25GYWN0b3IiLCJGb3JjZUJvbGQiLCJTdGRIVyIsIlN0ZFZXIl07Zm9yKGNvbnN0IGUgb2YgdSl7aWYoIXMucHJpdmF0ZURhdGEuaGFzKGUpKWNvbnRpbnVlO2NvbnN0IHQ9cy5wcml2YXRlRGF0YS5nZXQoZSk7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IobGV0IGU9dC5sZW5ndGgtMTtlPjA7ZS0tKXRbZV0tPXRbZS0xXTtoLnNldEJ5TmFtZShlLHQpfXIudG9wRGljdC5wcml2YXRlRGljdD1oO2NvbnN0IG09bmV3IENGRkluZGV4O2Zvcihjb25zdCBlIG9mIGEpbS5hZGQoZSk7aC5zdWJyc0luZGV4PW07cmV0dXJuIG5ldyBDRkZDb21waWxlcihyKS5jb21waWxlKCl9fWNvbnN0IGZzPVtbNTczNDQsNjM3NDNdLFsxMDQ4NTc2LDExMTQxMDldXSxjcz0xZTMsaHM9WyJhc2NlbnQiLCJiYm94IiwiYmxhY2siLCJib2xkIiwiY3NzRm9udEluZm8iLCJkYXRhIiwiZGVmYXVsdFZNZXRyaWNzIiwiZGVmYXVsdFdpZHRoIiwiZGVzY2VudCIsImRpc2FibGVGb250RmFjZSIsImZhbGxiYWNrTmFtZSIsImZvbnRFeHRyYVByb3BlcnRpZXMiLCJmb250TWF0cml4IiwiaXNJbnZhbGlkUERGanNGb250IiwiaXNUeXBlM0ZvbnQiLCJpdGFsaWMiLCJsb2FkZWROYW1lIiwibWltZXR5cGUiLCJtaXNzaW5nRmlsZSIsIm5hbWUiLCJyZW1lYXN1cmUiLCJzeXN0ZW1Gb250SW5mbyIsInZlcnRpY2FsIl0sdXM9WyJjTWFwIiwiY29tcG9zaXRlIiwiZGVmYXVsdEVuY29kaW5nIiwiZGlmZmVyZW5jZXMiLCJpc01vbm9zcGFjZSIsImlzU2VyaWZGb250IiwiaXNTeW1ib2xpY0ZvbnQiLCJzZWFjTWFwIiwic3VidHlwZSIsInRvRm9udENoYXIiLCJ0b1VuaWNvZGUiLCJ0eXBlIiwidm1ldHJpY3MiLCJ3aWR0aHMiXTtmdW5jdGlvbiBhZGp1c3RXaWR0aHMoZSl7aWYoIWUuZm9udE1hdHJpeClyZXR1cm47aWYoZS5mb250TWF0cml4WzBdPT09YVswXSlyZXR1cm47Y29uc3QgdD0uMDAxL2UuZm9udE1hdHJpeFswXSxuPWUud2lkdGhzO2Zvcihjb25zdCBlIGluIG4pbltlXSo9dDtlLmRlZmF1bHRXaWR0aCo9dH1mdW5jdGlvbiBhbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpe2lmKCFlLmZhbGxiYWNrVG9Vbmljb2RlKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwKXJldHVybjtjb25zdCB0PVtdO2Zvcihjb25zdCBuIGluIGUuZmFsbGJhY2tUb1VuaWNvZGUpZS50b1VuaWNvZGUuaGFzKG4pfHwodFtuXT1lLmZhbGxiYWNrVG9Vbmljb2RlW25dKTt0Lmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZCh0KX1jbGFzcyBmb250c19HbHlwaHtjb25zdHJ1Y3RvcihlLHQsbixhLHMscixpLG8sbCl7dGhpcy5vcmlnaW5hbENoYXJDb2RlPWU7dGhpcy5mb250Q2hhcj10O3RoaXMudW5pY29kZT1uO3RoaXMuYWNjZW50PWE7dGhpcy53aWR0aD1zO3RoaXMudm1ldHJpYz1yO3RoaXMub3BlcmF0b3JMaXN0SWQ9aTt0aGlzLmlzU3BhY2U9bzt0aGlzLmlzSW5Gb250PWx9Z2V0IGNhdGVnb3J5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYXRlZ29yeSIsZnVuY3Rpb24gZ2V0Q2hhclVuaWNvZGVDYXRlZ29yeShlKXtjb25zdCB0PXFhLmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0IG49ZS5tYXRjaCh5YSksYT17aXNXaGl0ZXNwYWNlOiEhbj8uWzFdLGlzWmVyb1dpZHRoRGlhY3JpdGljOiEhbj8uWzJdLGlzSW52aXNpYmxlRm9ybWF0TWFyazohIW4/LlszXX07cWEuc2V0KGUsYSk7cmV0dXJuIGF9KHRoaXMudW5pY29kZSksITApfX1mdW5jdGlvbiBpbnQxNihlLHQpe3JldHVybihlPDw4KSt0fWZ1bmN0aW9uIHdyaXRlU2lnbmVkSW50MTYoZSx0LG4pe2VbdCsxXT1uO2VbdF09bj4+Pjh9ZnVuY3Rpb24gc2lnbmVkSW50MTYoZSx0KXtjb25zdCBuPShlPDw4KSt0O3JldHVybiAzMjc2OCZuP24tNjU1MzY6bn1mdW5jdGlvbiB3cml0ZVVpbnQzMihlLHQsbil7ZVt0KzNdPTI1NSZuO2VbdCsyXT1uPj4+ODtlW3QrMV09bj4+PjE2O2VbdF09bj4+PjI0fWZ1bmN0aW9uIGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZShlKXtyZXR1cm4idHRjZiI9PT1ieXRlc1RvU3RyaW5nKGUucGVla0J5dGVzKDQpKX1mdW5jdGlvbiBnZXRGb250RmlsZVR5cGUoZSx7dHlwZTp0LHN1YnR5cGU6bixjb21wb3NpdGU6YX0pe2xldCBzLHI7aWYoZnVuY3Rpb24gaXNUcnVlVHlwZUZpbGUoZSl7Y29uc3QgdD1ieXRlc1RvU3RyaW5nKGUucGVla0J5dGVzKDQpKTtyZXR1cm4iXDABXDBcMCI9PT10fHwidHJ1ZSI9PT10fShlKXx8aXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKGUpKXM9YT8iQ0lERm9udFR5cGUyIjoiVHJ1ZVR5cGUiO2Vsc2UgaWYoZnVuY3Rpb24gaXNPcGVuVHlwZUZpbGUoZSl7cmV0dXJuIk9UVE8iPT09Ynl0ZXNUb1N0cmluZyhlLnBlZWtCeXRlcyg0KSl9KGUpKXM9YT8iQ0lERm9udFR5cGUyIjoiT3BlblR5cGUiO2Vsc2UgaWYoZnVuY3Rpb24gaXNUeXBlMUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcygyKTtyZXR1cm4gMzc9PT10WzBdJiYzMz09PXRbMV18fDEyOD09PXRbMF0mJjE9PT10WzFdfShlKSlzPWE/IkNJREZvbnRUeXBlMCI6Ik1NVHlwZTEiPT09dD8iTU1UeXBlMSI6IlR5cGUxIjtlbHNlIGlmKGZ1bmN0aW9uIGlzQ0ZGRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiB0WzBdPj0xJiZ0WzNdPj0xJiZ0WzNdPD00fShlKSlpZihhKXtzPSJDSURGb250VHlwZTAiO3I9IkNJREZvbnRUeXBlMEMifWVsc2V7cz0iTU1UeXBlMSI9PT10PyJNTVR5cGUxIjoiVHlwZTEiO3I9IlR5cGUxQyJ9ZWxzZXt3YXJuKCJnZXRGb250RmlsZVR5cGU6IFVuYWJsZSB0byBkZXRlY3QgY29ycmVjdCBmb250IGZpbGUgVHlwZS9TdWJ0eXBlLiIpO3M9dDtyPW59cmV0dXJuW3Mscl19ZnVuY3Rpb24gYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChlLHQpe2Zvcihjb25zdCBuIGluIHQpZVsrbl09dFtuXX1mdW5jdGlvbiBidWlsZFRvRm9udENoYXIoZSx0LG4pe2NvbnN0IGE9W107bGV0IHM7Zm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXtzPWdldFVuaWNvZGVGb3JHbHlwaChlW25dLHQpOy0xIT09cyYmKGFbbl09cyl9Zm9yKGNvbnN0IGUgaW4gbil7cz1nZXRVbmljb2RlRm9yR2x5cGgobltlXSx0KTstMSE9PXMmJihhWytlXT1zKX1yZXR1cm4gYX1mdW5jdGlvbiBpc01hY05hbWVSZWNvcmQoZSl7cmV0dXJuIDE9PT1lLnBsYXRmb3JtJiYwPT09ZS5lbmNvZGluZyYmMD09PWUubGFuZ3VhZ2V9ZnVuY3Rpb24gaXNXaW5OYW1lUmVjb3JkKGUpe3JldHVybiAzPT09ZS5wbGF0Zm9ybSYmMT09PWUuZW5jb2RpbmcmJjEwMzM9PT1lLmxhbmd1YWdlfWZ1bmN0aW9uIGNvbnZlcnRDaWRTdHJpbmcoZSx0LG49ITEpe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAxOnJldHVybiB0LmNoYXJDb2RlQXQoMCk7Y2FzZSAyOnJldHVybiB0LmNoYXJDb2RlQXQoMCk8PDh8dC5jaGFyQ29kZUF0KDEpfWNvbnN0IGE9YFVuc3VwcG9ydGVkIENJRCBzdHJpbmcgKGNoYXJDb2RlICR7ZX0pOiAiJHt0fSIuYDtpZihuKXRocm93IG5ldyBGb3JtYXRFcnJvcihhKTt3YXJuKGEpO3JldHVybiB0fWZ1bmN0aW9uIGFkanVzdE1hcHBpbmcoZSx0LG4sYSl7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpLHI9bmV3IE1hcCxpPVtdLG89bmV3IFNldDtsZXQgbD0wO2xldCBmPWZzW2xdWzBdLGM9ZnNbbF1bMV07Y29uc3QgaXNJblByaXZhdGVBcmVhPWU9PmZzWzBdWzBdPD1lJiZlPD1mc1swXVsxXXx8ZnNbMV1bMF08PWUmJmU8PWZzWzFdWzFdO2xldCBoPW51bGw7Zm9yKGNvbnN0IHUgaW4gZSl7bGV0IG09ZVt1XTtpZighdChtKSljb250aW51ZTtpZihmPmMpe2wrKztpZihsPj1mcy5sZW5ndGgpe3dhcm4oIlJhbiBvdXQgb2Ygc3BhY2UgaW4gZm9udCBwcml2YXRlIHVzZSBhcmVhLiIpO2JyZWFrfWY9ZnNbbF1bMF07Yz1mc1tsXVsxXX1jb25zdCBwPWYrKzswPT09bSYmKG09bik7bGV0IGQ9YS5nZXQodSk7aWYoInN0cmluZyI9PXR5cGVvZiBkKWlmKDE9PT1kLmxlbmd0aClkPWQuY29kZVBvaW50QXQoMCk7ZWxzZXtpZighaCl7aD1uZXcgTWFwO2ZvcihsZXQgZT02NDI1NjtlPD02NDMzNTtlKyspe2NvbnN0IHQ9U3RyaW5nLmZyb21DaGFyQ29kZShlKS5ub3JtYWxpemUoIk5GS0QiKTt0Lmxlbmd0aD4xJiZoLnNldCh0LGUpfX1kPWguZ2V0KGQpfHxkLmNvZGVQb2ludEF0KDApfWlmKGQmJiFpc0luUHJpdmF0ZUFyZWEoZCkmJiFvLmhhcyhtKSl7ci5zZXQoZCxtKTtvLmFkZChtKX1zW3BdPW07aVt1XT1wfXJldHVybnt0b0ZvbnRDaGFyOmksY2hhckNvZGVUb0dseXBoSWQ6cyx0b1VuaWNvZGVFeHRyYU1hcDpyLG5leHRBdmFpbGFibGVGb250Q2hhckNvZGU6Zn19ZnVuY3Rpb24gY3JlYXRlQ21hcFRhYmxlKGUsdCxuKXtjb25zdCBhPWZ1bmN0aW9uIGdldFJhbmdlcyhlLHQsbil7Y29uc3QgYT1bXTtmb3IoY29uc3QgdCBpbiBlKWVbdF0+PW58fGEucHVzaCh7Zm9udENoYXJDb2RlOjB8dCxnbHlwaElkOmVbdF19KTtpZih0KWZvcihjb25zdFtlLHNdb2YgdClzPj1ufHxhLnB1c2goe2ZvbnRDaGFyQ29kZTplLGdseXBoSWQ6c30pOzA9PT1hLmxlbmd0aCYmYS5wdXNoKHtmb250Q2hhckNvZGU6MCxnbHlwaElkOjB9KTthLnNvcnQoKGUsdCk9PmUuZm9udENoYXJDb2RlLXQuZm9udENoYXJDb2RlKTtjb25zdCBzPVtdLHI9YS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxyOyl7Y29uc3QgdD1hW2VdLmZvbnRDaGFyQ29kZSxuPVthW2VdLmdseXBoSWRdOysrZTtsZXQgaT10O2Zvcig7ZTxyJiZpKzE9PT1hW2VdLmZvbnRDaGFyQ29kZTspe24ucHVzaChhW2VdLmdseXBoSWQpOysraTsrK2U7aWYoNjU1MzU9PT1pKWJyZWFrfXMucHVzaChbdCxpLG5dKX1yZXR1cm4gc30oZSx0LG4pLHM9YS5hdCgtMSlbMV0+NjU1MzU7bGV0IHIsaSxvLGw7Zm9yKHI9YS5sZW5ndGgtMTtyPj0wJiYhKGFbcl1bMF08PTY1NTM1KTstLXIpO2NvbnN0IGY9cisxO2Fbcl1bMF08NjU1MzUmJjY1NTM1PT09YVtyXVsxXSYmKGFbcl1bMV09NjU1MzQpO2NvbnN0IGM9YVtyXVsxXTw2NTUzNT8xOjAsaD1mK2MsdT1PcGVuVHlwZUZpbGVCdWlsZGVyLmdldFNlYXJjaFBhcmFtcyhoLDIpLG09MipmKzIqYyxwPW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6bX0pLGQ9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDptfSksZz1uZXcgRGF0YUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOm19KSxiPW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6bX0pLHc9bmV3IERhdGFCdWlsZGVyKHt9KTtsZXQgaj0wLGs9ITE7Zm9yKHI9MCxpPWY7cjxpO3IrKyl7Y29uc3RbZSx0LG5dPWFbcl07cC5zZXRJbnQxNihlKTtkLnNldEludDE2KHQpO2xldCBzPSEwO2ZvcihvPTEsbD1uLmxlbmd0aDtvPGw7KytvKWlmKG5bb10hPT1uW28tMV0rMSl7cz0hMTticmVha31pZihzKXtjb25zdCB0PW5bMF07Zy5zZXRJbnQxNih0LWUmNjU1MzUpO2Iuc2tpcCgyKX1lbHNle2NvbnN0IGE9MiooaC1yKSsyKmo7ais9dC1lKzE7Zy5za2lwKDIpO2lmKGE+NjU1MzUpe2s9ITA7Yi5za2lwKDIpfWVsc2UgYi5zZXRJbnQxNihhKTtmb3Iobz0wLGw9bi5sZW5ndGg7bzxsOysrbyl3LnNldEludDE2KG5bb10pfX1pZihjPjApe2Quc2V0QXJyYXkoWzI1NSwyNTVdKTtwLnNldEFycmF5KFsyNTUsMjU1XSk7Zy5zZXRBcnJheShbMCwxXSk7Yi5za2lwKDIpfWNvbnN0IHk9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDoxMitwLmxlbmd0aCtkLmxlbmd0aCtnLmxlbmd0aCtiLmxlbmd0aCt3Lmxlbmd0aH0pO3kuc2tpcCgyKTt5LnNldEludDE2KDIqaCk7eS5zZXRJbnQxNih1LnJhbmdlKTt5LnNldEludDE2KHUuZW50cnkpO3kuc2V0SW50MTYodS5yYW5nZVNoaWZ0KTt5LnNldEFycmF5KGQuZGF0YSk7eS5za2lwKDIpO3kuc2V0QXJyYXkocC5kYXRhKTt5LnNldEFycmF5KGcuZGF0YSk7eS5zZXRBcnJheShiLmRhdGEpO3kuc2V0QXJyYXkody5kYXRhKTtjb25zdCBxPSFrJiZ5Lmxlbmd0aCs0PD02NTUzNSx2PXN8fCFxLFM9KHE/MTowKSsodj8xOjApO2xldCB4PW51bGwsQz1udWxsO2lmKHYpe3g9bmV3IERhdGFCdWlsZGVyKHt9KTtmb3IoY29uc3QgZSBvZiBhKXtsZXQgdD1lWzBdO2NvbnN0IG49ZVsyXTtsZXQgYT1uWzBdO2ZvcihvPTEsbD1uLmxlbmd0aDtvPGw7KytvKWlmKG5bb10hPT1uW28tMV0rMSl7Y29uc3Qgcz1lWzBdK28tMTt4LnNldEludDMyKHQpO3guc2V0SW50MzIocyk7eC5zZXRJbnQzMihhKTt0PXMrMTthPW5bb119eC5zZXRJbnQzMih0KTt4LnNldEludDMyKGVbMV0pO3guc2V0SW50MzIoYSl9Qz1uZXcgRGF0YUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOjE2fSk7Qy5zZXRBcnJheShbMCwxMl0pO0Muc2tpcCgyKTtDLnNldEludDMyKHgubGVuZ3RoKzE2KTtDLnNraXAoNCk7Qy5zZXRJbnQzMih4Lmxlbmd0aC8xMil9Y29uc3QgRj00KzgqUyxUPXE/NCt5Lmxlbmd0aDowLFI9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDpGfSk7Ui5za2lwKDIpO1Iuc2V0SW50MTYoUyk7bGV0IE89RjtpZihxKXtSLnNldEFycmF5KFswLDNdKTtSLnNldEFycmF5KFswLDFdKTtSLnNldEludDMyKE8pO08rPVR9aWYodil7Ui5zZXRBcnJheShbMCwzXSk7Ui5zZXRBcnJheShbMCwxMF0pO1Iuc2V0SW50MzIoTyl9Y29uc3QgSD1uZXcgRGF0YUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOlIubGVuZ3RoK1QrKEM/Lmxlbmd0aD8/MCkrKHg/Lmxlbmd0aD8/MCl9KTtILnNldEFycmF5KFIuZGF0YSk7aWYocSl7SC5zZXRBcnJheShbMCw0XSk7SC5zZXRJbnQxNih5Lmxlbmd0aCs0KTtILnNldEFycmF5KHkuZGF0YSl9aWYodil7SC5zZXRBcnJheShDLmRhdGEpO0guc2V0QXJyYXkoeC5kYXRhKX1yZXR1cm4gSC5kYXRhfWZ1bmN0aW9uIGNyZWF0ZU9TMlRhYmxlKGUsdCxuKXtufHw9e3VuaXRzUGVyRW06MCx5TWF4OjAseU1pbjowLGFzY2VudDowLGRlc2NlbnQ6MH07bGV0IGE9MCxzPTAscj0wLGk9MCxvPW51bGwsbD0wLGY9LTE7aWYodCl7Zm9yKGxldCBlIGluIHQpe2V8PTA7KG8+ZXx8IW8pJiYobz1lKTtsPGUmJihsPWUpO2Y9Z2V0VW5pY29kZVJhbmdlRm9yKGUsZik7aWYoZjwzMilhfD0xPDxmO2Vsc2UgaWYoZjw2NClzfD0xPDxmLTMyO2Vsc2UgaWYoZjw5NilyfD0xPDxmLTY0O2Vsc2V7aWYoIShmPDEyMykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmljb2RlIHJhbmdlcyBCaXRzID4gMTIzIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNhZ2UiKTtpfD0xPDxmLTk2fX1sPjY1NTM1JiYobD02NTUzNSl9ZWxzZXtvPTA7bD0yNTV9Y29uc3QgYz1lLmJib3h8fFswLDAsMCwwXSxoPW4udW5pdHNQZXJFbXx8KGUuZm9udE1hdHJpeD8xL01hdGgubWF4KC4uLmUuZm9udE1hdHJpeC5zbGljZSgwLDQpLm1hcChNYXRoLmFicykpOjFlMyksdT1lLmFzY2VudFNjYWxlZD8xOmgvY3MsbT1uLmFzY2VudHx8TWF0aC5yb3VuZCh1KihlLmFzY2VudHx8Y1szXSkpO2xldCBwPW4uZGVzY2VudHx8TWF0aC5yb3VuZCh1KihlLmRlc2NlbnR8fGNbMV0pKTtwPjAmJmUuZGVzY2VudD4wJiZjWzFdPDAmJihwPS1wKTtjb25zdCBkPW4ueU1heHx8bSxnPS1uLnlNaW58fC1wLGI9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDo5Nn0pO2Iuc2V0QXJyYXkoWzAsM10pO2Iuc2V0QXJyYXkoWzIsMzZdKTtiLnNldEFycmF5KFsxLDI0NF0pO2Iuc2V0QXJyYXkoWzAsNV0pO2Iuc2tpcCgyKTtiLnNldEFycmF5KFsyLDEzOF0pO2Iuc2V0QXJyYXkoWzIsMTg3XSk7Yi5za2lwKDIpO2Iuc2V0QXJyYXkoWzAsMTQwXSk7Yi5zZXRBcnJheShbMiwxMzhdKTtiLnNldEFycmF5KFsyLDE4N10pO2Iuc2tpcCgyKTtiLnNldEFycmF5KFsxLDIyM10pO2Iuc2V0QXJyYXkoWzAsNDldKTtiLnNldEFycmF5KFsxLDJdKTtiLnNraXAoMik7Yi5zZXRBcnJheShbMCwwLDYsZS5maXhlZFBpdGNoPzk6MCwwLDAsMCwwLDAsMF0pO2Iuc2V0SW50MzIoYSk7Yi5zZXRJbnQzMihzKTtiLnNldEludDMyKHIpO2Iuc2V0SW50MzIoaSk7Yi5zZXRBcnJheShbNDIsNTAsNDksNDJdKTtiLnNldEludDE2KGUuaXRhbGljQW5nbGU/MTowKTtiLnNldEludDE2KG98fGUuZmlyc3RDaGFyKTtiLnNldEludDE2KGx8fGUubGFzdENoYXIpO2Iuc2V0SW50MTYobSk7Yi5zZXRJbnQxNihwKTtiLnNldEFycmF5KFswLDEwMF0pO2Iuc2V0SW50MTYoZCk7Yi5zZXRJbnQxNihnKTtiLnNraXAoOCk7Yi5zZXRJbnQxNihlLnhIZWlnaHQpO2Iuc2V0SW50MTYoZS5jYXBIZWlnaHQpO2Iuc2tpcCgyKTtiLnNldEludDE2KG98fGUuZmlyc3RDaGFyKTtiLnNldEFycmF5KFswLDNdKTtyZXR1cm4gYi5kYXRhfWZ1bmN0aW9uIGNyZWF0ZVBvc3RUYWJsZShlKXtjb25zdCB0PW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6MzJ9KTt0LnNldEFycmF5KFswLDMsMCwwXSk7dC5zZXRJbnQzMihNYXRoLmZsb29yKDY1NTM2KmUuaXRhbGljQW5nbGUpKTt0LnNraXAoNCk7dC5zZXRJbnQzMihlLmZpeGVkUGl0Y2g/MTowKTt0LnNraXAoMTYpO3JldHVybiB0LmRhdGF9ZnVuY3Rpb24gY3JlYXRlUG9zdHNjcmlwdE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvW15ceDIxLVx4N0VdfFtbXF0oKXt9PD4vJV0vZywiIikuc2xpY2UoMCw2Myl9ZnVuY3Rpb24gY3JlYXRlTmFtZVRhYmxlKGUsdCl7dHx8PVtbXSxbXV07Y29uc3Qgbj1bdFswXVswXXx8Ik9yaWdpbmFsIGxpY2VuY2UiLHRbMF1bMV18fGUsdFswXVsyXXx8IlVua25vd24iLHRbMF1bM118fCJ1bmlxdWVJRCIsdFswXVs0XXx8ZSx0WzBdWzVdfHwiVmVyc2lvbiAwLjExIix0WzBdWzZdfHxjcmVhdGVQb3N0c2NyaXB0TmFtZShlKSx0WzBdWzddfHwiVW5rbm93biIsdFswXVs4XXx8IlVua25vd24iLHRbMF1bOV18fCJVbmtub3duIl0sYT1uLm1hcChlPT5zdHJpbmdUb0J5dGVzKGUpKSxzPW5ldyBBcnJheShuLmxlbmd0aCk7bGV0IHIsaSxvLGwsZjtmb3Iocj0wLGk9bi5sZW5ndGg7cjxpO3IrKyl7Zj10WzFdW3JdfHxuW3JdO2NvbnN0IGU9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDoyKmYubGVuZ3RofSk7Zm9yKG89MCxsPWYubGVuZ3RoO288bDtvKyspZS5zZXRJbnQxNihmLmNoYXJDb2RlQXQobykpO3Nbcl09ZS5kYXRhfWNvbnN0IGM9W2Esc10saD1bWzAsMV0sWzAsM11dLHU9W1swLDBdLFswLDFdXSxtPVtbMCwwXSxbNCw5XV0scD1bXTtsZXQgZD0wO2ZvcihyPTAsaT1oLmxlbmd0aDtyPGk7cisrKXtjb25zdCBlPWNbcl07Zm9yKG89MCxsPWUubGVuZ3RoO288bDtvKyspe2Y9ZVtvXTtjb25zdCB0PW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6NitoW3JdLmxlbmd0aCt1W3JdLmxlbmd0aCttW3JdLmxlbmd0aH0pO3Quc2V0QXJyYXkoaFtyXSk7dC5zZXRBcnJheSh1W3JdKTt0LnNldEFycmF5KG1bcl0pO3Quc2V0SW50MTYobyk7dC5zZXRJbnQxNihmLmxlbmd0aCk7dC5zZXRJbnQxNihkKTtwLnB1c2godC5kYXRhKTtkKz1mLmxlbmd0aH19Y29uc3QgZz1hLmxlbmd0aCpoLmxlbmd0aCxiPW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6NitNYXRoLnN1bVByZWNpc2UocC5tYXAoZT0+ZS5sZW5ndGgpKStNYXRoLnN1bVByZWNpc2UoYS5tYXAoZT0+ZS5sZW5ndGgpKStNYXRoLnN1bVByZWNpc2Uocy5tYXAoZT0+ZS5sZW5ndGgpKX0pO2Iuc2tpcCgyKTtiLnNldEludDE2KGcpO2Iuc2V0SW50MTYoMTIqZys2KTtmb3IoY29uc3QgZSBvZiBwKWIuc2V0QXJyYXkoZSk7Zm9yKGNvbnN0IGUgb2YgYSliLnNldEFycmF5KGUpO2Zvcihjb25zdCBlIG9mIHMpYi5zZXRBcnJheShlKTtyZXR1cm4gYi5kYXRhfWNsYXNzIEZvbnR7I3BlPW5ldyBNYXA7I2RlPW5ldyBNYXA7Y2hhclByb2NPcGVyYXRvckxpc3Q7Y29uc3RydWN0b3IoZSx0LG4sYSl7dGhpcy5uYW1lPWU7dGhpcy5wc05hbWU9bnVsbDt0aGlzLm1pbWV0eXBlPW51bGw7dGhpcy5kaXNhYmxlRm9udEZhY2U9YS5kaXNhYmxlRm9udEZhY2U7dGhpcy5mb250RXh0cmFQcm9wZXJ0aWVzPWEuZm9udEV4dHJhUHJvcGVydGllczt0aGlzLmxvYWRlZE5hbWU9bi5sb2FkZWROYW1lO3RoaXMuaXNUeXBlM0ZvbnQ9bi5pc1R5cGUzRm9udDt0aGlzLm1pc3NpbmdGaWxlPSExO3RoaXMuY3NzRm9udEluZm89bi5jc3NGb250SW5mbztsZXQgcz0hIShuLmZsYWdzJlNhKTtpZighcyYmIW4uaXNTaW11bGF0ZWRGbGFncyl7Y29uc3QgdD1fYSgpLG49TGEoKSxhPVVhKCk7Zm9yKGNvbnN0IHIgb2YgZS5zcGxpdCgiKyIpKXtsZXQgZT1ub3JtYWxpemVGb250TmFtZShyKTtlPXRbZV18fG5bZV18fGU7ZT1lLnNwbGl0KCItIiwxKVswXTtpZihhW2VdKXtzPSEwO2JyZWFrfX19dGhpcy5pc1NlcmlmRm9udD1zO3RoaXMuaXNTeW1ib2xpY0ZvbnQ9ISEobi5mbGFncyZBYSk7dGhpcy5pc01vbm9zcGFjZT0hIShuLmZsYWdzJnZhKTtsZXR7dHlwZTpyLHN1YnR5cGU6aX09bjt0aGlzLnR5cGU9cjt0aGlzLnN1YnR5cGU9aTt0aGlzLnN5c3RlbUZvbnRJbmZvPW4uc3lzdGVtRm9udEluZm87Y29uc3Qgbz1lLm1hdGNoKC9eSW52YWxpZFBERmpzRm9udF8oLiopX1xkKyQvKTt0aGlzLmlzSW52YWxpZFBERmpzRm9udD0hIW87dGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ/dGhpcy5mYWxsYmFja05hbWU9b1sxXTp0aGlzLmlzTW9ub3NwYWNlP3RoaXMuZmFsbGJhY2tOYW1lPSJtb25vc3BhY2UiOnRoaXMuaXNTZXJpZkZvbnQ/dGhpcy5mYWxsYmFja05hbWU9InNlcmlmIjp0aGlzLmZhbGxiYWNrTmFtZT0ic2Fucy1zZXJpZiI7aWYodGhpcy5zeXN0ZW1Gb250SW5mbz8uZ3Vlc3NGYWxsYmFjayl7dGhpcy5zeXN0ZW1Gb250SW5mby5ndWVzc0ZhbGxiYWNrPSExO3RoaXMuc3lzdGVtRm9udEluZm8uY3NzKz1gLCR7dGhpcy5mYWxsYmFja05hbWV9YH10aGlzLmRpZmZlcmVuY2VzPW4uZGlmZmVyZW5jZXM7dGhpcy53aWR0aHM9bi53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9bi5kZWZhdWx0V2lkdGg7dGhpcy5jb21wb3NpdGU9bi5jb21wb3NpdGU7dGhpcy5jTWFwPW4uY01hcDt0aGlzLmNhcEhlaWdodD1uLmNhcEhlaWdodC9jczt0aGlzLmFzY2VudD1uLmFzY2VudC9jczt0aGlzLmRlc2NlbnQ9bi5kZXNjZW50L2NzO3RoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQ7dGhpcy5mb250TWF0cml4PW4uZm9udE1hdHJpeDt0aGlzLmJib3g9bi5iYm94O3RoaXMuZGVmYXVsdEVuY29kaW5nPW4uZGVmYXVsdEVuY29kaW5nO3RoaXMudG9Vbmljb2RlPW4udG9Vbmljb2RlO3RoaXMudG9Gb250Q2hhcj1bXTtpZigiVHlwZTMiPT09bi50eXBlKXtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy50b0ZvbnRDaGFyW2VdPXRoaXMuZGlmZmVyZW5jZXNbZV18fG4uZGVmYXVsdEVuY29kaW5nW2VdO3JldHVybn10aGlzLmNpZEVuY29kaW5nPW4uY2lkRW5jb2Rpbmd8fCIiO3RoaXMudmVydGljYWw9ISFuLnZlcnRpY2FsO2lmKHRoaXMudmVydGljYWwpe3RoaXMudm1ldHJpY3M9bi52bWV0cmljczt0aGlzLmRlZmF1bHRWTWV0cmljcz1uLmRlZmF1bHRWTWV0cmljc31pZighdHx8dC5pc0VtcHR5KXt0JiZ3YXJuKCdGb250IGZpbGUgaXMgZW1wdHkgaW4gIicrZSsnIiAoJyt0aGlzLmxvYWRlZE5hbWUrIikiKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KG4pO3JldHVybn1bcixpXT1nZXRGb250RmlsZVR5cGUodCxuKTtyPT09dGhpcy50eXBlJiZpPT09dGhpcy5zdWJ0eXBlfHxpbmZvKGBJbmNvbnNpc3RlbnQgZm9udCBmaWxlIFR5cGUvU3ViVHlwZSwgZXhwZWN0ZWQ6ICR7dGhpcy50eXBlfS8ke3RoaXMuc3VidHlwZX0gYnV0IGZvdW5kOiAke3J9LyR7aX0uYCk7bGV0IGw7dHJ5e3N3aXRjaChyKXtjYXNlIk1NVHlwZTEiOmluZm8oIk1NVHlwZTEgZm9udCAoIitlKyIpLCBmYWxsaW5nIGJhY2sgdG8gVHlwZTEuIik7Y2FzZSJUeXBlMSI6Y2FzZSJDSURGb250VHlwZTAiOnRoaXMubWltZXR5cGU9ImZvbnQvb3BlbnR5cGUiO2NvbnN0IGE9IlR5cGUxQyI9PT1pfHwiQ0lERm9udFR5cGUwQyI9PT1pP25ldyBDRkZGb250KHQsbik6bmV3IFR5cGUxRm9udChlLHQsbik7YWRqdXN0V2lkdGhzKG4pO2w9dGhpcy5jb252ZXJ0KGUsYSxuKTticmVhaztjYXNlIk9wZW5UeXBlIjpjYXNlIlRydWVUeXBlIjpjYXNlIkNJREZvbnRUeXBlMiI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7bD10aGlzLmNoZWNrQW5kUmVwYWlyKGUsdCxuKTthZGp1c3RXaWR0aHMobik7dGhpcy5pc09wZW5UeXBlJiYocj0iT3BlblR5cGUiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgRm9udCAke3J9IGlzIG5vdCBzdXBwb3J0ZWRgKX19Y2F0Y2goZSl7d2FybihlKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KG4pO3JldHVybn1hbWVuZEZhbGxiYWNrVG9Vbmljb2RlKG4pO3RoaXMuZGF0YT1sO3RoaXMudHlwZT1yO3RoaXMuc3VidHlwZT1pO3RoaXMuZm9udE1hdHJpeD1uLmZvbnRNYXRyaXg7dGhpcy53aWR0aHM9bi53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9bi5kZWZhdWx0V2lkdGg7dGhpcy50b1VuaWNvZGU9bi50b1VuaWNvZGU7dGhpcy5zZWFjTWFwPW4uc2VhY01hcH1nZXQgcmVuZGVyZXIoKXtyZXR1cm4gc2hhZG93KHRoaXMsInJlbmRlcmVyIixGb250UmVuZGVyZXJGYWN0b3J5LmNyZWF0ZSh0aGlzLCEwKSl9I2dlKGUpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPXRoaXNbbl07dm9pZCAwIT09ZSYmKHRbbl09ZSl9cmV0dXJuIHR9ZXhwb3J0RGF0YSgpe3JldHVybntidWZmZXI6Y29tcGlsZUZvbnRJbmZvKHRoaXMuI2dlKGhzKSksY2hhclByb2NPcGVyYXRvckxpc3Q6dGhpcy5jaGFyUHJvY09wZXJhdG9yTGlzdCxleHRyYTp0aGlzLmZvbnRFeHRyYVByb3BlcnRpZXM/dGhpcy4jZ2UodXMpOnZvaWQgMH19ZmFsbGJhY2tUb1N5c3RlbUZvbnQoZSl7dGhpcy5taXNzaW5nRmlsZT0hMDtjb25zdHtuYW1lOnQsdHlwZTpufT10aGlzO2xldCBhPW5vcm1hbGl6ZUZvbnROYW1lKHQpO2NvbnN0IHM9X2EoKSxyPUxhKCksaT0hIXNbYV0sbz0hKCFyW2FdfHwhc1tyW2FdXSk7YT1zW2FdfHxyW2FdfHxhO2NvbnN0IGw9SmEoKVthXTtpZihsKXtpc05hTih0aGlzLmFzY2VudCkmJih0aGlzLmFzY2VudD1sLmFzY2VudC9jcyk7aXNOYU4odGhpcy5kZXNjZW50KSYmKHRoaXMuZGVzY2VudD1sLmRlc2NlbnQvY3MpO2lzTmFOKHRoaXMuY2FwSGVpZ2h0KSYmKHRoaXMuY2FwSGVpZ2h0PWwuY2FwSGVpZ2h0L2NzKX10aGlzLmJvbGQ9L2JvbGQvaS50ZXN0KGEpO3RoaXMuaXRhbGljPS9vYmxpcXVlfGl0YWxpYy9pLnRlc3QoYSk7dGhpcy5ibGFjaz0vQmxhY2svLnRlc3QodCk7Y29uc3QgZj0vTmFycm93Ly50ZXN0KHQpO3RoaXMucmVtZWFzdXJlPSghaXx8ZikmJk9iamVjdC5rZXlzKHRoaXMud2lkdGhzKS5sZW5ndGg+MDtpZigoaXx8bykmJiJDSURGb250VHlwZTIiPT09biYmdGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKSl7Y29uc3Qgbj1lLmNpZFRvR2lkTWFwLGE9W107YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChhLFhhKCkpOy9BcmlhbC0/QmxhY2svaS50ZXN0KHQpP2FwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoYSxLYSgpKTovQ2FsaWJyaS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoYSxHYSgpKTtpZihuKXtmb3IoY29uc3QgZSBpbiBhKXtjb25zdCB0PWFbZV07dm9pZCAwIT09blt0XSYmKGFbK2VdPW5bdF0pfW4ubGVuZ3RoIT09dGhpcy50b1VuaWNvZGUubGVuZ3RoJiZlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgcz1hW2VdO3ZvaWQgMD09PW5bc10mJihhWytlXT10KX0pfXRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goZnVuY3Rpb24oZSx0KXthWytlXT10fSk7dGhpcy50b0ZvbnRDaGFyPWE7dGhpcy50b1VuaWNvZGU9bmV3IFRvVW5pY29kZU1hcChhKX1lbHNlIGlmKC9TeW1ib2wvaS50ZXN0KGEpKXRoaXMudG9Gb250Q2hhcj1idWlsZFRvRm9udENoYXIoZGEsYmEoKSx0aGlzLmRpZmZlcmVuY2VzKTtlbHNlIGlmKC9EaW5nYmF0cy9pLnRlc3QoYSkpdGhpcy50b0ZvbnRDaGFyPWJ1aWxkVG9Gb250Q2hhcihnYSx3YSgpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYoaXx8byl7Y29uc3QgZT1idWlsZFRvRm9udENoYXIodGhpcy5kZWZhdWx0RW5jb2RpbmcsYmEoKSx0aGlzLmRpZmZlcmVuY2VzKTsiQ0lERm9udFR5cGUyIiE9PW58fHRoaXMuY2lkRW5jb2Rpbmcuc3RhcnRzV2l0aCgiSWRlbnRpdHktIil8fHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goZnVuY3Rpb24odCxuKXtlWyt0XT1ufSk7dGhpcy50b0ZvbnRDaGFyPWV9ZWxzZXtjb25zdCBlPWJhKCksbj1bXTt0aGlzLnRvVW5pY29kZS5mb3JFYWNoKCh0LGEpPT57aWYoIXRoaXMuY29tcG9zaXRlKXtjb25zdCBuPWdldFVuaWNvZGVGb3JHbHlwaCh0aGlzLmRpZmZlcmVuY2VzW3RdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1t0XSxlKTstMSE9PW4mJihhPW4pfW5bK3RdPWF9KTt0aGlzLmNvbXBvc2l0ZSYmdGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcCYmL1RhaG9tYXxWZXJkYW5hL2kudGVzdCh0KSYmYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChuLFhhKCkpO3RoaXMudG9Gb250Q2hhcj1ufWFtZW5kRmFsbGJhY2tUb1VuaWNvZGUoZSk7dGhpcy5sb2FkZWROYW1lPWEuc3BsaXQoIi0iLDEpWzBdfWNoZWNrQW5kUmVwYWlyKGUsdCxuKXtjb25zdCBhPVsiT1MvMiIsImNtYXAiLCJoZWFkIiwiaGhlYSIsImhtdHgiLCJtYXhwIiwibmFtZSIsInBvc3QiLCJsb2NhIiwiZ2x5ZiIsImZwZ20iLCJwcmVwIiwiY3Z0ICIsIkNGRiAiXTtmdW5jdGlvbiByZWFkVGFibGVzKGUsdCl7Y29uc3Qgbj1PYmplY3QuY3JlYXRlKG51bGwpO25bIk9TLzIiXT1udWxsO24uY21hcD1udWxsO24uaGVhZD1udWxsO24uaGhlYT1udWxsO24uaG10eD1udWxsO24ubWF4cD1udWxsO24ubmFtZT1udWxsO24ucG9zdD1udWxsO2ZvcihsZXQgcz0wO3M8dDtzKyspe2NvbnN0IHQ9cmVhZFRhYmxlRW50cnkoZSk7YS5pbmNsdWRlcyh0LnRhZykmJigwIT09dC5sZW5ndGgmJihuW3QudGFnXT10KSl9cmV0dXJuIG59ZnVuY3Rpb24gcmVhZFRhYmxlRW50cnkoZSl7Y29uc3QgdD1lLmdldFN0cmluZyg0KSxuPWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLHM9ZS5nZXRJbnQzMigpPj4+MCxyPWUucG9zO2UucG9zPWUuc3RhcnR8fDA7ZS5za2lwKGEpO2NvbnN0IGk9ZS5nZXRCeXRlcyhzKTtlLnBvcz1yO2lmKCJoZWFkIj09PXQpe2lbOF09aVs5XT1pWzEwXT1pWzExXT0wO2lbMTddfD0zMn1yZXR1cm57dGFnOnQsY2hlY2tzdW06bixsZW5ndGg6cyxvZmZzZXQ6YSxkYXRhOmksdmlldzoiQ0ZGICI9PT10P251bGw6bmV3IERhdGFWaWV3KGkuYnVmZmVyLGkuYnl0ZU9mZnNldCxpLmJ5dGVMZW5ndGgpfX1mdW5jdGlvbiByZWFkT3BlblR5cGVIZWFkZXIoZSl7cmV0dXJue3ZlcnNpb246ZS5nZXRTdHJpbmcoNCksbnVtVGFibGVzOmUuZ2V0VWludDE2KCksc2VhcmNoUmFuZ2U6ZS5nZXRVaW50MTYoKSxlbnRyeVNlbGVjdG9yOmUuZ2V0VWludDE2KCkscmFuZ2VTaGlmdDplLmdldFVpbnQxNigpfX1mdW5jdGlvbiBzYW5pdGl6ZUdseXBoKGUsdCxuLGEscyxyKXtjb25zdCBpPXtsZW5ndGg6MCxzaXplT2ZJbnN0cnVjdGlvbnM6MH07aWYodDwwfHx0Pj1lLmxlbmd0aHx8bj5lLmxlbmd0aHx8bi10PD0xMilyZXR1cm4gaTtjb25zdCBvPWUuc3ViYXJyYXkodCxuKSxsPXNpZ25lZEludDE2KG9bMl0sb1szXSksZj1zaWduZWRJbnQxNihvWzRdLG9bNV0pLGM9c2lnbmVkSW50MTYob1s2XSxvWzddKSxoPXNpZ25lZEludDE2KG9bOF0sb1s5XSk7aWYobD5jKXt3cml0ZVNpZ25lZEludDE2KG8sMixjKTt3cml0ZVNpZ25lZEludDE2KG8sNixsKX1pZihmPmgpe3dyaXRlU2lnbmVkSW50MTYobyw0LGgpO3dyaXRlU2lnbmVkSW50MTYobyw4LGYpfWNvbnN0IHU9c2lnbmVkSW50MTYob1swXSxvWzFdKTtpZih1PDApe2lmKHU8LTEpcmV0dXJuIGk7YS5zZXQobyxzKTtpLmxlbmd0aD1vLmxlbmd0aDtyZXR1cm4gaX1sZXQgbSxwPTEwLGQ9MDtmb3IobT0wO208dTttKyspe2Q9KG9bcF08PDh8b1twKzFdKSsxO3ArPTJ9Y29uc3QgZz1wLGI9b1twXTw8OHxvW3ArMV07aS5zaXplT2ZJbnN0cnVjdGlvbnM9YjtwKz0yK2I7Y29uc3Qgdz1wO2xldCBqPTA7Zm9yKG09MDttPGQ7bSsrKXtjb25zdCBlPW9bcCsrXTsxOTImZSYmKG9bcC0xXT02MyZlKTtsZXQgdD0yOzImZT90PTE6MTYmZSYmKHQ9MCk7bGV0IG49Mjs0JmU/bj0xOjMyJmUmJihuPTApO2NvbnN0IGE9dCtuO2orPWE7aWYoOCZlKXtjb25zdCBlPW9bcCsrXTswPT09ZSYmKG9bcC0xXV49OCk7bSs9ZTtqKz1lKmF9fWlmKDA9PT1qKXJldHVybiBpO2xldCBrPXArajtpZihrPm8ubGVuZ3RoKXJldHVybiBpO2lmKCFyJiZiPjApe2Euc2V0KG8uc3ViYXJyYXkoMCxnKSxzKTthLnNldChbMCwwXSxzK2cpO2Euc2V0KG8uc3ViYXJyYXkodyxrKSxzK2crMik7ay09YjtvLmxlbmd0aC1rPjMmJihrPWsrMyYtNCk7aS5sZW5ndGg9aztyZXR1cm4gaX1pZihvLmxlbmd0aC1rPjMpe2s9ayszJi00O2Euc2V0KG8uc3ViYXJyYXkoMCxrKSxzKTtpLmxlbmd0aD1rO3JldHVybiBpfWEuc2V0KG8scyk7aS5sZW5ndGg9by5sZW5ndGg7cmV0dXJuIGl9ZnVuY3Rpb24gcmVhZE5hbWVUYWJsZShlKXtjb25zdCBuPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1uO2NvbnN0IGE9W1tdLFtdXSxzPVtdLHI9ZS5sZW5ndGgsaT1uK3I7aWYoMCE9PXQuZ2V0VWludDE2KCl8fHI8NilyZXR1cm5bYSxzXTtjb25zdCBvPXQuZ2V0VWludDE2KCksbD10LmdldFVpbnQxNigpO2xldCBmLGM7Zm9yKGY9MDtmPG8mJnQucG9zKzEyPD1pO2YrKyl7Y29uc3QgZT17cGxhdGZvcm06dC5nZXRVaW50MTYoKSxlbmNvZGluZzp0LmdldFVpbnQxNigpLGxhbmd1YWdlOnQuZ2V0VWludDE2KCksbmFtZTp0LmdldFVpbnQxNigpLGxlbmd0aDp0LmdldFVpbnQxNigpLG9mZnNldDp0LmdldFVpbnQxNigpfTsoaXNNYWNOYW1lUmVjb3JkKGUpfHxpc1dpbk5hbWVSZWNvcmQoZSkpJiZzLnB1c2goZSl9Zm9yKGY9MCxjPXMubGVuZ3RoO2Y8YztmKyspe2NvbnN0IGU9c1tmXTtpZihlLmxlbmd0aDw9MCljb250aW51ZTtjb25zdCByPW4rbCtlLm9mZnNldDtpZihyK2UubGVuZ3RoPmkpY29udGludWU7dC5wb3M9cjtjb25zdCBvPWUubmFtZTtpZihlLmVuY29kaW5nKXtsZXQgbj0iIjtmb3IobGV0IGE9MCxzPWUubGVuZ3RoO2E8czthKz0yKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUodC5nZXRVaW50MTYoKSk7YVsxXVtvXT1ufWVsc2UgYVswXVtvXT10LmdldFN0cmluZyhlLmxlbmd0aCl9cmV0dXJuW2Esc119Y29uc3Qgcz1bMCwwLDAsMCwwLDAsMCwwLC0yLC0yLC0yLC0yLDAsMCwtMiwtNSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwtMSwtMSwxLC0xLC05OTksMCwxLDAsLTEsLTIsMCwtMSwtMiwtMSwtMSwwLC0xLC0xLDAsMCwtOTk5LC05OTksLTEsLTEsLTEsLTEsLTIsLTk5OSwtMiwtMiwtOTk5LDAsLTIsLTIsMCwwLC0yLDAsLTIsMCwwLDAsLTIsLTEsLTEsMSwxLDAsMCwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwwLC05OTksLTEsLTEsLTEsLTEsLTEsLTEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsLTIsLTk5OSwtOTk5LC05OTksLTk5OSwtOTk5LC0xLC0xLC0yLC0yLDAsMCwwLDAsLTEsLTEsLTk5OSwtMiwtMiwwLDAsLTEsLTIsLTIsMCwwLDAsLTEsLTEsLTEsLTJdO2Z1bmN0aW9uIHNhbml0aXplVFRQcm9ncmFtKGUsdCl7bGV0IG4sYSxyLGksbyxsPWUuZGF0YSxmPTAsYz0wLGg9MDtjb25zdCB1PVtdLG09W10scD1bXTtsZXQgZD10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucyxnPSExLGI9MCx3PTA7Zm9yKGxldCBlPWwubGVuZ3RoO2Y8ZTspe2NvbnN0IGU9bFtmKytdO2lmKDY0PT09ZSl7YT1sW2YrK107aWYoZ3x8dylmKz1hO2Vsc2UgZm9yKG49MDtuPGE7bisrKXUucHVzaChsW2YrK10pfWVsc2UgaWYoNjU9PT1lKXthPWxbZisrXTtpZihnfHx3KWYrPTIqYTtlbHNlIGZvcihuPTA7bjxhO24rKyl7cj1sW2YrK107dS5wdXNoKHNpZ25lZEludDE2KHIsbFtmKytdKSl9fWVsc2UgaWYoMTc2PT0oMjQ4JmUpKXthPWUtMTc2KzE7aWYoZ3x8dylmKz1hO2Vsc2UgZm9yKG49MDtuPGE7bisrKXUucHVzaChsW2YrK10pfWVsc2UgaWYoMTg0PT0oMjQ4JmUpKXthPWUtMTg0KzE7aWYoZ3x8dylmKz0yKmE7ZWxzZSBmb3Iobj0wO248YTtuKyspe3I9bFtmKytdO3UucHVzaChzaWduZWRJbnQxNihyLGxbZisrXSkpfX1lbHNlIGlmKDQzIT09ZXx8ZClpZig0NCE9PWV8fGQpe2lmKDQ1PT09ZSlpZihnKXtnPSExO2M9Zn1lbHNle289bS5wb3AoKTtpZighbyl7d2FybigiVFQ6IEVOREYgYmFkIHN0YWNrIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1pPXAucG9wKCk7bD1vLmRhdGE7Zj1vLmk7dC5mdW5jdGlvbnNTdGFja0RlbHRhc1tpXT11Lmxlbmd0aC1vLnN0YWNrVG9wfWVsc2UgaWYoMTM3PT09ZSl7aWYoZ3x8dyl7d2FybigiVFQ6IG5lc3RlZCBJREVGcyBub3QgYWxsb3dlZCIpO2Q9ITB9Zz0hMDtoPWZ9ZWxzZSBpZig4OD09PWUpKytiO2Vsc2UgaWYoMjc9PT1lKXc9YjtlbHNlIGlmKDg5PT09ZSl7dz09PWImJih3PTApOy0tYn1lbHNlIGlmKDI4PT09ZSYmIWcmJiF3KXtjb25zdCBlPXUuYXQoLTEpO2U+MCYmKGYrPWUtMSl9fWVsc2V7aWYoZ3x8dyl7d2FybigiVFQ6IG5lc3RlZCBGREVGcyBub3QgYWxsb3dlZCIpO2Q9ITB9Zz0hMDtoPWY7aT11LnBvcCgpO3QuZnVuY3Rpb25zRGVmaW5lZFtpXT17ZGF0YTpsLGk6Zn19ZWxzZSBpZighZyYmIXcpe2k9dS5hdCgtMSk7aWYoaXNOYU4oaSkpaW5mbygiVFQ6IENBTEwgZW1wdHkgc3RhY2sgKG9yIGludmFsaWQgZW50cnkpLiIpO2Vsc2V7dC5mdW5jdGlvbnNVc2VkW2ldPSEwO2lmKGkgaW4gdC5mdW5jdGlvbnNTdGFja0RlbHRhcyl7Y29uc3QgZT11Lmxlbmd0aCt0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW2ldO2lmKGU8MCl7d2FybigiVFQ6IENBTEwgaW52YWxpZCBmdW5jdGlvbnMgc3RhY2sgZGVsdGEuIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn11Lmxlbmd0aD1lfWVsc2UgaWYoaSBpbiB0LmZ1bmN0aW9uc0RlZmluZWQmJiFwLmluY2x1ZGVzKGkpKXttLnB1c2goe2RhdGE6bCxpOmYsc3RhY2tUb3A6dS5sZW5ndGgtMX0pO3AucHVzaChpKTtvPXQuZnVuY3Rpb25zRGVmaW5lZFtpXTtpZighbyl7d2FybigiVFQ6IENBTEwgbm9uLWV4aXN0ZW50IGZ1bmN0aW9uIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1sPW8uZGF0YTtmPW8uaX19fWlmKCFnJiYhdyl7bGV0IHQ9MDtlPD0xNDI/dD1zW2VdOmU+PTE5MiYmZTw9MjIzP3Q9LTE6ZT49MjI0JiYodD0tMik7aWYoZT49MTEzJiZlPD0xMTcpe2E9dS5wb3AoKTtpc05hTihhKXx8KHQ9MiotYSl9Zm9yKDt0PDAmJnUubGVuZ3RoPjA7KXt1LnBvcCgpO3QrK31mb3IoO3Q+MDspe3UucHVzaChOYU4pO3QtLX19fXQudG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zPWQ7Y29uc3Qgaj1bbF07Zj5sLmxlbmd0aCYmai5wdXNoKG5ldyBVaW50OEFycmF5KGYtbC5sZW5ndGgpKTtpZihoPmMpe3dhcm4oIlRUOiBjb21wbGVtZW50aW5nIGEgbWlzc2luZyBmdW5jdGlvbiB0YWlsIik7ai5wdXNoKG5ldyBVaW50OEFycmF5KFszNCw0NV0pKX0hZnVuY3Rpb24gZm9sZFRUVGFibGUoZSx0KXtpZih0Lmxlbmd0aD4xKXtsZXQgbixhLHM9MDtmb3Iobj0wLGE9dC5sZW5ndGg7bjxhO24rKylzKz10W25dLmxlbmd0aDtzPXMrMyYtNDtjb25zdCByPW5ldyBVaW50OEFycmF5KHMpO2xldCBpPTA7Zm9yKG49MCxhPXQubGVuZ3RoO248YTtuKyspe3Iuc2V0KHRbbl0saSk7aSs9dFtuXS5sZW5ndGh9ZS5kYXRhPXI7ZS5sZW5ndGg9c319KGUsail9bGV0IHIsaTtpZihpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUodD1uZXcgU3RyZWFtKG5ldyBVaW50OEFycmF5KHQuZ2V0Qnl0ZXMoKSkpKSl7Y29uc3QgZT1mdW5jdGlvbiByZWFkVHJ1ZVR5cGVDb2xsZWN0aW9uRGF0YShlLHQpe2NvbnN0e251bUZvbnRzOm4sb2Zmc2V0VGFibGU6YX09ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkhlYWRlcihlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpO2Fzc2VydCgidHRjZiI9PT10LCJNdXN0IGJlIGEgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250LiIpO2NvbnN0IG49ZS5nZXRVaW50MTYoKSxhPWUuZ2V0VWludDE2KCkscz1lLmdldEludDMyKCk+Pj4wLHI9W107Zm9yKGxldCB0PTA7dDxzO3QrKylyLnB1c2goZS5nZXRJbnQzMigpPj4+MCk7Y29uc3QgaT17dHRjVGFnOnQsbWFqb3JWZXJzaW9uOm4sbWlub3JWZXJzaW9uOmEsbnVtRm9udHM6cyxvZmZzZXRUYWJsZTpyfTtzd2l0Y2gobil7Y2FzZSAxOnJldHVybiBpO2Nhc2UgMjppLmRzaWdUYWc9ZS5nZXRJbnQzMigpPj4+MDtpLmRzaWdMZW5ndGg9ZS5nZXRJbnQzMigpPj4+MDtpLmRzaWdPZmZzZXQ9ZS5nZXRJbnQzMigpPj4+MDtyZXR1cm4gaX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBtYWpvclZlcnNpb246ICR7bn0uYCl9KGUpLHM9dC5zcGxpdCgiKyIpO2xldCByO2ZvcihsZXQgaT0wO2k8bjtpKyspe2UucG9zPShlLnN0YXJ0fHwwKSthW2ldO2NvbnN0IG49cmVhZE9wZW5UeXBlSGVhZGVyKGUpLG89cmVhZFRhYmxlcyhlLG4ubnVtVGFibGVzKTtpZighby5uYW1lKXRocm93IG5ldyBGb3JtYXRFcnJvcignVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250IG11c3QgY29udGFpbiBhICJuYW1lIiB0YWJsZS4nKTtjb25zdFtsXT1yZWFkTmFtZVRhYmxlKG8ubmFtZSk7Zm9yKGNvbnN0IGUgb2YgbClmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPWE/LnJlcGxhY2VBbGwoL1xzL2csIiIpO2lmKGUpe2lmKGU9PT10KXJldHVybntoZWFkZXI6bix0YWJsZXM6b307aWYoIShzLmxlbmd0aDwyKSlmb3IoY29uc3QgdCBvZiBzKWU9PT10JiYocj17bmFtZTp0LGhlYWRlcjpuLHRhYmxlczpvfSl9fX1pZihyKXt3YXJuKGBUcnVlVHlwZSBDb2xsZWN0aW9uIGRvZXMgbm90IGNvbnRhaW4gIiR7dH0iIGZvbnQsIGZhbGxpbmcgYmFjayB0byAiJHtyLm5hbWV9IiBmb250IGluc3RlYWQuYCk7cmV0dXJue2hlYWRlcjpyLmhlYWRlcix0YWJsZXM6ci50YWJsZXN9fXRocm93IG5ldyBGb3JtYXRFcnJvcihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LmApfSh0LHRoaXMubmFtZSk7cj1lLmhlYWRlcjtpPWUudGFibGVzfWVsc2V7cj1yZWFkT3BlblR5cGVIZWFkZXIodCk7aT1yZWFkVGFibGVzKHQsci5udW1UYWJsZXMpfWNvbnN0IG89IWlbIkNGRiAiXTtsZXQgbCxmPW51bGw7aWYobyl7aWYoIWkubG9jYSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJsb2NhIiB0YWJsZSBpcyBub3QgZm91bmQnKTtpZighaS5nbHlmKXt3YXJuKCdSZXF1aXJlZCAiZ2x5ZiIgdGFibGUgaXMgbm90IGZvdW5kIC0tIHRyeWluZyB0byByZWNvdmVyLicpO2kuZ2x5Zj17dGFnOiJnbHlmIixkYXRhOm5ldyBVaW50OEFycmF5KDApfX10aGlzLmlzT3BlblR5cGU9ITF9ZWxzZXt0cnl7Zj1uZXcgQ0ZGUGFyc2VyKG5ldyBTdHJlYW0oaVsiQ0ZGICJdLmRhdGEpLG4sITApLnBhcnNlKCl9Y2F0Y2h7d2FybigiRmFpbGVkIHRvIHBhcnNlIGZvbnQgIituLmxvYWRlZE5hbWUpfWlmKCJPVFRPIj09PXIudmVyc2lvbiYmKCFuLmNvbXBvc2l0ZXx8IkZvbnRGaWxlMyI9PT1uLmZvbnRGaWxlTiYmZj8uaXNDSURGb250KXx8IWkuaGVhZHx8IWkuaGhlYXx8IWkubWF4cHx8IWkucG9zdClyZXR1cm4gdGhpcy5jb252ZXJ0KGUsbmV3IENGRkZvbnQobmV3IFN0cmVhbShpWyJDRkYgIl0uZGF0YSksbiksbik7ZGVsZXRlIGkuZ2x5ZjtkZWxldGUgaS5sb2NhO2RlbGV0ZSBpLmZwZ207ZGVsZXRlIGkucHJlcDtkZWxldGUgaVsiY3Z0ICJdO3RoaXMuaXNPcGVuVHlwZT0hMH1pZighaS5tYXhwKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgIm1heHAiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2lmKGYpdHJ5e2YuZHVwbGljYXRlRmlyc3RHbHlwaCgpO2lbIkNGRiAiXS5kYXRhPW5ldyBDRkZDb21waWxlcihmKS5jb21waWxlKCk7bD1mLmNoYXJTdHJpbmdDb3VudH1jYXRjaHt3YXJuKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrbi5sb2FkZWROYW1lKX10LnBvcz0odC5zdGFydHx8MCkraS5tYXhwLm9mZnNldDtsZXQgYz10LmdldEludDMyKCk7Y29uc3QgaD1sPz90LmdldFVpbnQxNigpO2lmKDIwNDgwPT09YyYmNiE9PWkubWF4cC5sZW5ndGgpe2kubWF4cC5kYXRhPWkubWF4cC5kYXRhLnN1YmFycmF5KDAsNik7aS5tYXhwLmxlbmd0aD02fWlmKDY1NTM2IT09YyYmMjA0ODAhPT1jKXtpZig2PT09aS5tYXhwLmxlbmd0aCljPTIwNDgwO2Vsc2V7aWYoIShpLm1heHAubGVuZ3RoPj0zMikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCcibWF4cCIgdGFibGUgaGFzIGEgd3JvbmcgdmVyc2lvbiBudW1iZXInKTtjPTY1NTM2fXdyaXRlVWludDMyKGkubWF4cC5kYXRhLDAsYyl9bGV0IHU9aW50MTYoaS5oZWFkLmRhdGFbNTBdLGkuaGVhZC5kYXRhWzUxXSk7aWYoaS5sb2NhKXtjb25zdCBlPXU/NCooaCsxKToyKihoKzEpO2lmKGkubG9jYS5sZW5ndGghPT1lKXt3YXJuKCJJbmNvcnJlY3QgJ2xvY2EnIHRhYmxlIGxlbmd0aCAtLSBhdHRlbXB0aW5nIHRvIGZpeCBpdC4iKTtjb25zdCBuPU9iamVjdC52YWx1ZXMoaSkuZmlsdGVyKEJvb2xlYW4pLnNvcnQoKGUsdCk9PmUub2Zmc2V0LXQub2Zmc2V0KSxhPW4uaW5kZXhPZihpLmxvY2EpLHM9blthKzFdfHxudWxsO2lmKHMmJmkubG9jYS5vZmZzZXQrZTxzLm9mZnNldCl7Y29uc3Qgbj10LnBvczt0LnBvcz10LnN0YXJ0fHwwO3Quc2tpcChpLmxvY2Eub2Zmc2V0KTtpLmxvY2EuZGF0YT10LmdldEJ5dGVzKGUpO2kubG9jYS5sZW5ndGg9ZTt0LnBvcz1ufX19aWYobi5zY2FsZUZhY3RvcnM/Lmxlbmd0aD09PWgmJm8pe2NvbnN0e3NjYWxlRmFjdG9yczplfT1uLHQ9bmV3IEdseWZUYWJsZSh7Z2x5ZlRhYmxlOmkuZ2x5Zi5kYXRhLGlzR2x5cGhMb2NhdGlvbnNMb25nOnUsbG9jYVRhYmxlOmkubG9jYS5kYXRhLG51bUdseXBoczpofSk7dC5zY2FsZShlKTtjb25zdHtnbHlmOmEsbG9jYTpzLGlzTG9jYXRpb25Mb25nOnJ9PXQud3JpdGUoKTtpLmdseWYuZGF0YT1hO2kubG9jYS5kYXRhPXM7aWYociE9PSEhdSl7aS5oZWFkLmRhdGFbNTBdPTA7dT1pLmhlYWQuZGF0YVs1MV09cj8xOjB9Y29uc3Qgbz1pLmhtdHguZGF0YTtmb3IobGV0IHQ9MDt0PGg7dCsrKXtjb25zdCBuPTQqdCxhPU1hdGgucm91bmQoZVt0XSppbnQxNihvW25dLG9bbisxXSkpO29bbl09YT4+OCYyNTU7b1tuKzFdPTI1NSZhO3dyaXRlU2lnbmVkSW50MTYobyxuKzIsTWF0aC5yb3VuZChlW3RdKnNpZ25lZEludDE2KG9bbisyXSxvW24rM10pKSl9fWxldCBtPWgrMSxwPSEwO2lmKG0+NjU1MzUpe3A9ITE7bT1oO3dhcm4oIk5vdCBlbm91Z2ggc3BhY2UgaW4gZ2x5ZnMgdG8gZHVwbGljYXRlIGZpcnN0IGdseXBoLiIpfWxldCBkPTAsZz0wO2lmKGM+PTY1NTM2JiZpLm1heHAubGVuZ3RoPj0zMil7dC5wb3MrPTg7aWYodC5nZXRVaW50MTYoKT4yKXtpLm1heHAuZGF0YVsxNF09MDtpLm1heHAuZGF0YVsxNV09Mn10LnBvcys9NDtkPXQuZ2V0VWludDE2KCk7dC5wb3MrPTQ7Zz10LmdldFVpbnQxNigpfWVsc2UgaWYobyYmMjA0ODA9PT1jKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KDMyKTt3cml0ZVVpbnQzMihlLDAsNjU1MzYpO2VbNF09aD4+OCYyNTU7ZVs1XT0yNTUmaDtlLmZpbGwoMjU1LDYsMTQpO2VbMTVdPTI7ZVsyOF09MjU1O2VbMjldPTI1NTtlWzMxXT0xNjtpLm1heHAuZGF0YT1lO2kubWF4cC5sZW5ndGg9MzI7Yz02NTUzNn1pLm1heHAuZGF0YVs0XT1tPj44O2kubWF4cC5kYXRhWzVdPTI1NSZtO2NvbnN0IGI9ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW1zKGUsdCxuLGEpe2NvbnN0IHM9e2Z1bmN0aW9uc0RlZmluZWQ6W10sZnVuY3Rpb25zVXNlZDpbXSxmdW5jdGlvbnNTdGFja0RlbHRhczpbXSx0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM6ITEsaGludHNWYWxpZDohMH07ZSYmc2FuaXRpemVUVFByb2dyYW0oZSxzKTt0JiZzYW5pdGl6ZVRUUHJvZ3JhbSh0LHMpO2UmJmZ1bmN0aW9uIGNoZWNrSW52YWxpZEZ1bmN0aW9ucyhlLHQpe2lmKCFlLnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucylpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpe3dhcm4oIlRUOiBtb3JlIGZ1bmN0aW9ucyBkZWZpbmVkIHRoYW4gZXhwZWN0ZWQiKTtlLmhpbnRzVmFsaWQ9ITF9ZWxzZSBmb3IobGV0IG49MCxhPWUuZnVuY3Rpb25zVXNlZC5sZW5ndGg7bjxhO24rKyl7aWYobj50KXt3YXJuKCJUVDogaW52YWxpZCBmdW5jdGlvbiBpZDogIituKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufWlmKGUuZnVuY3Rpb25zVXNlZFtuXSYmIWUuZnVuY3Rpb25zRGVmaW5lZFtuXSl7d2FybigiVFQ6IHVuZGVmaW5lZCBmdW5jdGlvbjogIituKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufX19KHMsYSk7aWYobiYmMSZuLmxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShuLmxlbmd0aCsxKTtlLnNldChuLmRhdGEpO24uZGF0YT1lfXJldHVybiBzLmhpbnRzVmFsaWR9KGkuZnBnbSxpLnByZXAsaVsiY3Z0ICJdLGQpO2lmKCFiKXtkZWxldGUgaS5mcGdtO2RlbGV0ZSBpLnByZXA7ZGVsZXRlIGlbImN2dCAiXX0hZnVuY3Rpb24gc2FuaXRpemVNZXRyaWNzKGUsdCxuLGEscyxyKXtpZighdCl7biYmKG4uZGF0YT1udWxsKTtyZXR1cm59ZS5wb3M9KGUuc3RhcnR8fDApK3Qub2Zmc2V0O2UucG9zKz00O2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2NvbnN0IGk9ZS5nZXRVaW50MTYoKTtlLnBvcys9ODtlLnBvcys9MjtsZXQgbz1lLmdldFVpbnQxNigpO2lmKDAhPT1pKXtpZighKDImaW50MTYoYS5kYXRhWzQ0XSxhLmRhdGFbNDVdKSkpe3QuZGF0YVsyMl09MDt0LmRhdGFbMjNdPTB9fWlmKG8+cyl7aW5mbyhgVGhlIG51bU9mTWV0cmljcyAoJHtvfSkgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bUdseXBocyAoJHtzfSkuYCk7bz1zO3QuZGF0YVszNF09KDY1MjgwJm8pPj44O3QuZGF0YVszNV09MjU1Jm99Y29uc3QgbD1zLW8tKG4ubGVuZ3RoLTQqbz4+MSk7aWYobD4wKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4ubGVuZ3RoKzIqbCk7ZS5zZXQobi5kYXRhKTtpZihyKXtlW24ubGVuZ3RoXT1uLmRhdGFbMl07ZVtuLmxlbmd0aCsxXT1uLmRhdGFbM119bi5kYXRhPWV9fSh0LGkuaGhlYSxpLmhtdHgsaS5oZWFkLG0scCk7aWYoIWkuaGVhZCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJoZWFkIiB0YWJsZSBpcyBub3QgZm91bmQnKTshZnVuY3Rpb24gc2FuaXRpemVIZWFkKGUsdCxuKXtjb25zdHtkYXRhOmEsdmlldzpzfT1lLHI9cy5nZXRJbnQzMigwKTtpZihyPj4xNiE9MSl7aW5mbygiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCB2ZXJzaW9uIGluIGhlYWQgdGFibGU6ICIrcik7cy5zZXRJbnQzMigwLDY1NTM2KX1jb25zdCBpPXNpZ25lZEludDE2KGFbNTBdLGFbNTFdKTtpZihpPDB8fGk+MSl7aW5mbygiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCBpbmRleFRvTG9jRm9ybWF0IGluIGhlYWQgdGFibGU6ICIraSk7Y29uc3QgZT10KzE7aWYobj09PWU8PDEpe2FbNTBdPTA7YVs1MV09MH1lbHNle2lmKG4hPT1lPDwyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQ291bGQgbm90IGZpeCBpbmRleFRvTG9jRm9ybWF0OiAiK2kpO2FbNTBdPTA7YVs1MV09MX19fShpLmhlYWQsaCxvP2kubG9jYS5sZW5ndGg6MCk7bGV0IHc9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihvKXtjb25zdCBlPWZ1bmN0aW9uIHNhbml0aXplR2x5cGhMb2NhdGlvbnMoZSx0LG4sYSxzLHIsaSl7bGV0IG8sbCxmO2lmKGEpe289NDtsPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlTG9uZyhlLHQpe3JldHVybiBlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM119O2Y9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGVMb25nKGUsdCxuKXtlW3RdPW4+Pj4yNCYyNTU7ZVt0KzFdPW4+PjE2JjI1NTtlW3QrMl09bj4+OCYyNTU7ZVt0KzNdPTI1NSZufX1lbHNle289MjtsPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlKGUsdCl7cmV0dXJuIGVbdF08PDl8ZVt0KzFdPDwxfTtmPWZ1bmN0aW9uIGZvbnRJdGVtRW5jb2RlKGUsdCxuKXtlW3RdPW4+PjkmMjU1O2VbdCsxXT1uPj4xJjI1NX19Y29uc3QgYz1yP24rMTpuLGg9byooMStjKSx1PW5ldyBVaW50OEFycmF5KGgpO3Uuc2V0KGUuZGF0YS5zdWJhcnJheSgwLGgpKTtlLmRhdGE9dTtjb25zdCBtPXQuZGF0YSxwPW0ubGVuZ3RoLGQ9bmV3IFVpbnQ4QXJyYXkocCk7bGV0IGcsYjtjb25zdCB3PVtdO2ZvcihnPTAsYj0wO2c8bisxO2crKyxiKz1vKXtsZXQgZT1sKHUsYik7ZT5wJiYoZT1wKTt3LnB1c2goe2luZGV4Omcsb2Zmc2V0OmUsZW5kT2Zmc2V0OjB9KX13LnNvcnQoKGUsdCk9PmUub2Zmc2V0LXQub2Zmc2V0KTtmb3IoZz0wO2c8bjtnKyspd1tnXS5lbmRPZmZzZXQ9d1tnKzFdLm9mZnNldDt3LnNvcnQoKGUsdCk9PmUuaW5kZXgtdC5pbmRleCk7Zm9yKGc9MDtnPG47ZysrKXtjb25zdHtvZmZzZXQ6ZSxlbmRPZmZzZXQ6dH09d1tnXTtpZigwIT09ZXx8MCE9PXQpYnJlYWs7Y29uc3Qgbj13W2crMV0ub2Zmc2V0O2lmKDAhPT1uKXt3W2ddLmVuZE9mZnNldD1uO2JyZWFrfX1jb25zdCBqPXcuYXQoLTIpOzAhPT1qLm9mZnNldCYmMD09PWouZW5kT2Zmc2V0JiYoai5lbmRPZmZzZXQ9cCk7Y29uc3Qgaz1mdW5jdGlvbiBwcnVuZUNvbXBvc2l0ZUdseXBoQ3ljbGVzKGUsdCxuKXtjb25zdCBhPW5ldyBEYXRhVmlldyhlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKSxzPW5ldyBBcnJheShuKTtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCBuPXRbZV0ub2Zmc2V0LHI9TWF0aC5taW4odFtlXS5lbmRPZmZzZXQsYS5ieXRlTGVuZ3RoKTtpZihyLW48PSRhfHxhLmdldEludDE2KG4pPj0wKWNvbnRpbnVlO2NvbnN0IGk9W107bGV0IG89biskYTtmb3IoO28rNDw9cjspe2NvbnN0IGU9YS5nZXRVaW50MTYobyksdD1hLmdldFVpbnQxNihvKzIpO2xldCBuPTQrKDEmZT80OjIpOzgmZT9uKz0yOjY0JmU/bis9NDoxMjgmZSYmKG4rPTgpO2kucHVzaCh7Z2lkOnQsb2Zmc2V0Om8sc2l6ZTpuLGZsYWdzOmV9KTtvKz1uO2lmKCEoMzImZSkpYnJlYWt9aS5sZW5ndGgmJihzW2VdPWkpfWNvbnN0IHI9bmV3IFVpbnQ4QXJyYXkobiksaT1uZXcgTWFwO2ZvcihsZXQgZT0wO2U8bjtlKyspe2lmKDAhPT1yW2VdfHwhc1tlXSljb250aW51ZTtjb25zdCB0PVt7bm9kZTplLGlkeDowfV07cltlXT0xO2Zvcig7dC5sZW5ndGg+MDspe2NvbnN0IGU9dC5hdCgtMSksYT1zW2Uubm9kZV07aWYoIWF8fGUuaWR4Pj1hLmxlbmd0aCl7cltlLm5vZGVdPTI7dC5wb3AoKTtjb250aW51ZX1jb25zdCBvPWUuaWR4KyssbD1hW29dLmdpZDtpZighKGw+PW58fDI9PT1yW2xdKSlpZigwIT09cltsXSlpLmdldE9ySW5zZXJ0Q29tcHV0ZWQoZS5ub2RlLG1ha2VTZXQpLmFkZChvKTtlbHNle3JbbF09MTt0LnB1c2goe25vZGU6bCxpZHg6MH0pfX19Y29uc3Qgbz1uZXcgU2V0O2Zvcihjb25zdFtuLHJdb2YgaSl7Y29uc3QgaT1zW25dLGw9W107Zm9yKGxldCBlPTA7ZTxpLmxlbmd0aDtlKyspci5oYXMoZSl8fGwucHVzaChpW2VdKTtpZigwPT09bC5sZW5ndGgpe28uYWRkKG4pO2NvbnRpbnVlfWNvbnN0IGY9dFtuXS5vZmZzZXQsYz1NYXRoLm1pbih0W25dLmVuZE9mZnNldCxhLmJ5dGVMZW5ndGgpO2xldCBoPWYrJGE7Zm9yKGxldCB0PTA7dDxsLmxlbmd0aDt0Kyspe2NvbnN0IG49bFt0XSxzPXQ9PT1sLmxlbmd0aC0xO2xldCByPS0yNTcmbi5mbGFncztyPXM/LTMzJnI6MzJ8cjtoIT09bi5vZmZzZXQmJmUuY29weVdpdGhpbihoLG4ub2Zmc2V0LG4ub2Zmc2V0K24uc2l6ZSk7YS5zZXRVaW50MTYoaCxyKTtoKz1uLnNpemV9aDxjJiZlLmZpbGwoMCxoLGMpfXJldHVybiBvfShtLHcsbikseT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBxPTA7Zih1LDAscSk7Zm9yKGc9MCxiPW87ZzxuO2crKyxiKz1vKXtjb25zdCBlPWsuaGFzKGcpP3tsZW5ndGg6MCxzaXplT2ZJbnN0cnVjdGlvbnM6MH06c2FuaXRpemVHbHlwaChtLHdbZ10ub2Zmc2V0LHdbZ10uZW5kT2Zmc2V0LGQscSxzKSx0PWUubGVuZ3RoOzA9PT10JiYoeVtnXT0hMCk7ZS5zaXplT2ZJbnN0cnVjdGlvbnM+aSYmKGk9ZS5zaXplT2ZJbnN0cnVjdGlvbnMpO3ErPXQ7Zih1LGIscSl9aWYoMD09PXEpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoWzAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OSwwXSk7Zm9yKGc9MCxiPW87ZzxjO2crKyxiKz1vKWYodSxiLGUubGVuZ3RoKTt0LmRhdGE9ZX1lbHNlIGlmKHIpe2NvbnN0IG49bCh1LG8pO2lmKGQubGVuZ3RoPm4rcSl0LmRhdGE9ZC5zdWJhcnJheSgwLG4rcSk7ZWxzZXt0LmRhdGE9bmV3IFVpbnQ4QXJyYXkobitxKTt0LmRhdGEuc2V0KGQuc3ViYXJyYXkoMCxxKSl9dC5kYXRhLnNldChkLnN1YmFycmF5KDAsbikscSk7ZihlLmRhdGEsdS5sZW5ndGgtbyxxK24pfWVsc2UgdC5kYXRhPWQuc3ViYXJyYXkoMCxxKTtyZXR1cm57bWlzc2luZ0dseXBoczp5LG1heFNpemVPZkluc3RydWN0aW9uczppfX0oaS5sb2NhLGkuZ2x5ZixoLHUsYixwLGcpO3c9ZS5taXNzaW5nR2x5cGhzO2lmKGM+PTY1NTM2JiZpLm1heHAubGVuZ3RoPj0zMil7aS5tYXhwLmRhdGFbMjZdPWUubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zPj44O2kubWF4cC5kYXRhWzI3XT0yNTUmZS5tYXhTaXplT2ZJbnN0cnVjdGlvbnN9fWlmKCFpLmhoZWEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCdSZXF1aXJlZCAiaGhlYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoMD09PWkuaGhlYS5kYXRhWzEwXSYmMD09PWkuaGhlYS5kYXRhWzExXSl7aS5oaGVhLmRhdGFbMTBdPTI1NTtpLmhoZWEuZGF0YVsxMV09MjU1fWNvbnN0IGo9e3VuaXRzUGVyRW06aW50MTYoaS5oZWFkLmRhdGFbMThdLGkuaGVhZC5kYXRhWzE5XSkseU1heDpzaWduZWRJbnQxNihpLmhlYWQuZGF0YVs0Ml0saS5oZWFkLmRhdGFbNDNdKSx5TWluOnNpZ25lZEludDE2KGkuaGVhZC5kYXRhWzM4XSxpLmhlYWQuZGF0YVszOV0pLGFzY2VudDpzaWduZWRJbnQxNihpLmhoZWEuZGF0YVs0XSxpLmhoZWEuZGF0YVs1XSksZGVzY2VudDpzaWduZWRJbnQxNihpLmhoZWEuZGF0YVs2XSxpLmhoZWEuZGF0YVs3XSksbGluZUdhcDpzaWduZWRJbnQxNihpLmhoZWEuZGF0YVs4XSxpLmhoZWEuZGF0YVs5XSl9O3RoaXMuYXNjZW50PWouYXNjZW50L2oudW5pdHNQZXJFbTt0aGlzLmRlc2NlbnQ9ai5kZXNjZW50L2oudW5pdHNQZXJFbTt0aGlzLmxpbmVHYXA9ai5saW5lR2FwL2oudW5pdHNQZXJFbTtpZih0aGlzLmNzc0ZvbnRJbmZvPy5saW5lSGVpZ2h0KXt0aGlzLmxpbmVIZWlnaHQ9dGhpcy5jc3NGb250SW5mby5tZXRyaWNzLmxpbmVIZWlnaHQ7dGhpcy5saW5lR2FwPXRoaXMuY3NzRm9udEluZm8ubWV0cmljcy5saW5lR2FwfWVsc2UgdGhpcy5saW5lSGVpZ2h0PXRoaXMuYXNjZW50LXRoaXMuZGVzY2VudCt0aGlzLmxpbmVHYXA7aS5wb3N0JiZmdW5jdGlvbiByZWFkUG9zdFNjcmlwdFRhYmxlKGUsbixhKXtjb25zdCBzPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1zO2NvbnN0IHI9cytlLmxlbmd0aCxpPXQuZ2V0SW50MzIoKTt0LnNraXAoMjgpO2xldCBvLGwsZj0hMDtzd2l0Y2goaSl7Y2FzZSA2NTUzNjpvPUNhO2JyZWFrO2Nhc2UgMTMxMDcyOmNvbnN0IGU9dC5nZXRVaW50MTYoKTtpZihlIT09YSl7Zj0hMTticmVha31jb25zdCBzPVtdO2ZvcihsPTA7bDxlOysrbCl7Y29uc3QgZT10LmdldFVpbnQxNigpO2lmKGU+PTMyNzY4KXtmPSExO2JyZWFrfXMucHVzaChlKX1pZighZilicmVhaztjb25zdCBjPVtdO2Zvcig7dC5wb3M8cjspe2NvbnN0IGU9dC5nZXRCeXRlKCksbj10LmdldFN0cmluZyhlKTtjLnB1c2gobil9bz1bXTtmb3IobD0wO2w8ZTsrK2wpe2NvbnN0IGU9c1tsXTtlPDI1OD9vLnB1c2goQ2FbZV0pOm8ucHVzaChjW2UtMjU4XSl9YnJlYWs7Y2FzZSAxOTY2MDg6YnJlYWs7ZGVmYXVsdDp3YXJuKCJVbmtub3duL3Vuc3VwcG9ydGVkIHBvc3QgdGFibGUgdmVyc2lvbiAiK2kpO2Y9ITE7bi5kZWZhdWx0RW5jb2RpbmcmJihvPW4uZGVmYXVsdEVuY29kaW5nKX1uLmdseXBoTmFtZXM9bztyZXR1cm4gZn0oaS5wb3N0LG4saCk7aS5wb3N0PXt0YWc6InBvc3QiLGRhdGE6Y3JlYXRlUG9zdFRhYmxlKG4pfTtjb25zdCBrPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gaGFzR2x5cGgoZSl7cmV0dXJuIXdbZV19aWYobi5jb21wb3NpdGUpe2NvbnN0IGU9bi5jaWRUb0dpZE1hcHx8W10sdD0wPT09ZS5sZW5ndGg7bi5jTWFwLmZvckVhY2goZnVuY3Rpb24obixhKXsic3RyaW5nIj09dHlwZW9mIGEmJihhPWNvbnZlcnRDaWRTdHJpbmcobixhLCEwKSk7aWYoYT42NTUzNSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1heCBzaXplIG9mIENJRCBpcyA2NSw1MzUiKTtsZXQgcz0tMTt0P3M9YTp2b2lkIDAhPT1lW2FdJiYocz1lW2FdKTtzPj0wJiZzPGgmJmhhc0dseXBoKHMpJiYoa1tuXT1zKX0pfWVsc2V7Y29uc3QgZT1mdW5jdGlvbiByZWFkQ21hcFRhYmxlKGUsdCxuLGEpe2lmKCFlKXt3YXJuKCJObyBjbWFwIHRhYmxlIGF2YWlsYWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19bGV0IHMscj0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9cjt0LnNraXAoMik7Y29uc3QgaT10LmdldFVpbnQxNigpO2xldCBvLGw9ITE7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7Y29uc3Qgcz10LmdldFVpbnQxNigpLHI9dC5nZXRVaW50MTYoKSxmPXQuZ2V0SW50MzIoKT4+PjA7bGV0IGM9ITE7aWYobz8ucGxhdGZvcm1JZCE9PXN8fG8/LmVuY29kaW5nSWQhPT1yKXtpZigwIT09c3x8MCE9PXImJjEhPT1yJiYzIT09cilpZigxPT09cyYmMD09PXIpYz0hMDtlbHNlIGlmKDMhPT1zfHwxIT09cnx8IWEmJm8pe2lmKG4mJjM9PT1zJiYwPT09cil7Yz0hMDtsZXQgbj0hMDtpZihlPGktMSl7Y29uc3QgZT10LnBlZWtCeXRlcygyKTtpbnQxNihlWzBdLGVbMV0pPHMmJihuPSExKX1uJiYobD0hMCl9fWVsc2V7Yz0hMDtufHwobD0hMCl9ZWxzZSBjPSEwO2MmJihvPXtwbGF0Zm9ybUlkOnMsZW5jb2RpbmdJZDpyLG9mZnNldDpmfSk7aWYobClicmVha319byYmKHQucG9zPXIrby5vZmZzZXQpO2lmKCFvfHwtMT09PXQucGVla0J5dGUoKSl7d2FybigiQ291bGQgbm90IGZpbmQgYSBwcmVmZXJyZWQgY21hcCB0YWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19Y29uc3QgZj10LmdldFVpbnQxNigpO2xldCBjPSExO2NvbnN0IGg9W107bGV0IHUsbTtpZigwPT09Zil7dC5za2lwKDQpO2Zvcih1PTA7dTwyNTY7dSsrKXtjb25zdCBlPXQuZ2V0Qnl0ZSgpO2UmJmgucHVzaCh7Y2hhckNvZGU6dSxnbHlwaElkOmV9KX1jPSEwfWVsc2UgaWYoMj09PWYpe3Quc2tpcCg0KTtjb25zdCBlPVtdO2xldCBuPTA7Zm9yKGxldCBhPTA7YTwyNTY7YSsrKXtjb25zdCBhPXQuZ2V0VWludDE2KCk+PjM7ZS5wdXNoKGEpO249TWF0aC5tYXgoYSxuKX1jb25zdCBhPVtdO2ZvcihsZXQgZT0wO2U8PW47ZSsrKWEucHVzaCh7Zmlyc3RDb2RlOnQuZ2V0VWludDE2KCksZW50cnlDb3VudDp0LmdldFVpbnQxNigpLGlkRGVsdGE6c2lnbmVkSW50MTYodC5nZXRCeXRlKCksdC5nZXRCeXRlKCkpLGlkUmFuZ2VQb3M6dC5wb3MrdC5nZXRVaW50MTYoKX0pO2ZvcihsZXQgbj0wO248MjU2O24rKylpZigwPT09ZVtuXSl7dC5wb3M9YVswXS5pZFJhbmdlUG9zKzIqbjttPXQuZ2V0VWludDE2KCk7aC5wdXNoKHtjaGFyQ29kZTpuLGdseXBoSWQ6bX0pfWVsc2V7Y29uc3Qgcz1hW2Vbbl1dO2Zvcih1PTA7dTxzLmVudHJ5Q291bnQ7dSsrKXtjb25zdCBlPShuPDw4KSt1K3MuZmlyc3RDb2RlO3QucG9zPXMuaWRSYW5nZVBvcysyKnU7bT10LmdldFVpbnQxNigpOzAhPT1tJiYobT0obStzLmlkRGVsdGEpJTY1NTM2KTtoLnB1c2goe2NoYXJDb2RlOmUsZ2x5cGhJZDptfSl9fX1lbHNlIGlmKDQ9PT1mKXt0LnNraXAoNCk7Y29uc3QgZT10LmdldFVpbnQxNigpPj4xO3Quc2tpcCg2KTtjb25zdCBuPVtdO2xldCBhO2ZvcihhPTA7YTxlO2ErKyluLnB1c2goe2VuZDp0LmdldFVpbnQxNigpfSk7dC5za2lwKDIpO2ZvcihhPTA7YTxlO2ErKyluW2FdLnN0YXJ0PXQuZ2V0VWludDE2KCk7Zm9yKGE9MDthPGU7YSsrKW5bYV0uZGVsdGE9dC5nZXRVaW50MTYoKTtsZXQgaSxvPTA7Zm9yKGE9MDthPGU7YSsrKXtzPW5bYV07Y29uc3Qgcj10LmdldFVpbnQxNigpO2lmKHIpe2k9KHI+PjEpLShlLWEpO3Mub2Zmc2V0SW5kZXg9aTtvPU1hdGgubWF4KG8saStzLmVuZC1zLnN0YXJ0KzEpfWVsc2Ugcy5vZmZzZXRJbmRleD0tMX1jb25zdCBsPVtdO2Zvcih1PTA7dTxvO3UrKylsLnB1c2godC5nZXRVaW50MTYoKSk7Zm9yKGE9MDthPGU7YSsrKXtzPW5bYV07cj1zLnN0YXJ0O2NvbnN0IGU9cy5lbmQsdD1zLmRlbHRhO2k9cy5vZmZzZXRJbmRleDtmb3IodT1yO3U8PWU7dSsrKWlmKDY1NTM1IT09dSl7bT1pPDA/dTpsW2krdS1yXTttPW0rdCY2NTUzNTtoLnB1c2goe2NoYXJDb2RlOnUsZ2x5cGhJZDptfSl9fX1lbHNlIGlmKDY9PT1mKXt0LnNraXAoNCk7Y29uc3QgZT10LmdldFVpbnQxNigpLG49dC5nZXRVaW50MTYoKTtmb3IodT0wO3U8bjt1Kyspe209dC5nZXRVaW50MTYoKTtjb25zdCBuPWUrdTtoLnB1c2goe2NoYXJDb2RlOm4sZ2x5cGhJZDptfSl9fWVsc2V7aWYoMTIhPT1mKXt3YXJuKCJjbWFwIHRhYmxlIGhhcyB1bnN1cHBvcnRlZCBmb3JtYXQ6ICIrZik7cmV0dXJue3BsYXRmb3JtSWQ6LTEsZW5jb2RpbmdJZDotMSxtYXBwaW5nczpbXSxoYXNTaG9ydENtYXA6ITF9fXt0LnNraXAoMTApO2NvbnN0IGU9dC5nZXRJbnQzMigpPj4+MDtmb3IodT0wO3U8ZTt1Kyspe2NvbnN0IGU9dC5nZXRJbnQzMigpPj4+MCxuPXQuZ2V0SW50MzIoKT4+PjA7bGV0IGE9dC5nZXRJbnQzMigpPj4+MDtmb3IobGV0IHQ9ZTt0PD1uO3QrKyloLnB1c2goe2NoYXJDb2RlOnQsZ2x5cGhJZDphKyt9KX19fWNvbnN0IHA9W10sZD1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIGgpe2NvbnN0e2NoYXJDb2RlOnR9PWU7aWYoIWQuaGFzKHQpKXtkLmFkZCh0KTtwLnB1c2goZSl9fXJldHVybntwbGF0Zm9ybUlkOm8ucGxhdGZvcm1JZCxlbmNvZGluZ0lkOm8uZW5jb2RpbmdJZCxtYXBwaW5nczpwLnNvcnQoKGUsdCk9PmUuY2hhckNvZGUtdC5jaGFyQ29kZSksaGFzU2hvcnRDbWFwOmN9fShpLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LG4uaGFzRW5jb2RpbmcpLGE9ZS5wbGF0Zm9ybUlkLHM9ZS5lbmNvZGluZ0lkLHI9ZS5tYXBwaW5ncztsZXQgbz1bXSxsPSExOyFuLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1uLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09bi5iYXNlRW5jb2RpbmdOYW1lfHwobz1nZXRFbmNvZGluZyhuLmJhc2VFbmNvZGluZ05hbWUpKTtpZihuLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1hJiYxPT09c3x8MT09PWEmJjA9PT1zKSl7Y29uc3QgZT1iYSgpO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl7bGV0IGk7aT12b2lkIDAhPT10aGlzLmRpZmZlcmVuY2VzW3RdP3RoaXMuZGlmZmVyZW5jZXNbdF06by5sZW5ndGgmJiIiIT09b1t0XT9vW3RdOm1hW3RdO2lmKCFpKWNvbnRpbnVlO2NvbnN0IGw9cmVjb3ZlckdseXBoTmFtZShpLGUpO2xldCBmOzM9PT1hJiYxPT09cz9mPWVbbF06MT09PWEmJjA9PT1zJiYoZj11YS5pbmRleE9mKGwpKTtpZih2b2lkIDA9PT1mKXtpZighbi5nbHlwaE5hbWVzJiZuLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiYhKHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoZj1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1mKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIHIpaWYoZS5jaGFyQ29kZT09PWYpe2tbdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09YSl7Zm9yKGNvbnN0IGUgb2YgcilrW2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtsPSEwfWVsc2UgaWYoMz09PWEmJjA9PT1zKWZvcihjb25zdCBlIG9mIHIpe2xldCB0PWUuY2hhckNvZGU7dD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KTtrW3RdPWUuZ2x5cGhJZH1lbHNlIGZvcihjb25zdCBlIG9mIHIpa1tlLmNoYXJDb2RlXT1lLmdseXBoSWQ7aWYobi5nbHlwaE5hbWVzJiYoby5sZW5ndGh8fHRoaXMuZGlmZmVyZW5jZXMubGVuZ3RoKSlmb3IobGV0IGU9MDtlPDI1NjsrK2Upe2lmKCFsJiZ2b2lkIDAhPT1rW2VdKWNvbnRpbnVlO2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8b1tlXTtpZighdCljb250aW51ZTtjb25zdCBhPW4uZ2x5cGhOYW1lcy5pbmRleE9mKHQpO2E+MCYmaGFzR2x5cGgoYSkmJihrW2VdPWEpfSFuLmlzSW50ZXJuYWxGb250JiZ2b2lkIDA9PT1rWzBdJiZoYXNHbHlwaCgwKSYmKGtbMF09MCl9MD09PWsubGVuZ3RoJiYoa1swXT0wKTtjb25zdCB5PXA/bS0xOjA7aWYoIW4uY3NzRm9udEluZm8pe2NvbnN0IGU9YWRqdXN0TWFwcGluZyhrLGhhc0dseXBoLHksdGhpcy50b1VuaWNvZGUpO3RoaXMudG9Gb250Q2hhcj1lLnRvRm9udENoYXI7aS5jbWFwPXt0YWc6ImNtYXAiLGRhdGE6Y3JlYXRlQ21hcFRhYmxlKGUuY2hhckNvZGVUb0dseXBoSWQsZS50b1VuaWNvZGVFeHRyYU1hcCxtKX07aVsiT1MvMiJdJiZmdW5jdGlvbiB2YWxpZGF0ZU9TMlRhYmxlKGUsdCl7dC5wb3M9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O2NvbnN0IG49dC5nZXRVaW50MTYoKSxhPVs3OCw4Niw5Niw5Niw5NiwxMDBdW25dO2lmKHZvaWQgMD09PWF8fGUubGVuZ3RoPGEpcmV0dXJuITE7dC5za2lwKDYwKTtjb25zdCBzPXQuZ2V0VWludDE2KCk7aWYobjw0JiY3NjgmcylyZXR1cm4hMTtpZih0LmdldFVpbnQxNigpPnQuZ2V0VWludDE2KCkpcmV0dXJuITE7dC5za2lwKDYpO2lmKDA9PT10LmdldFVpbnQxNigpKXJldHVybiExO2UuZGF0YVs4XT1lLmRhdGFbOV09MDtyZXR1cm4hMH0oaVsiT1MvMiJdLHQpfHwoaVsiT1MvMiJdPXt0YWc6Ik9TLzIiLGRhdGE6Y3JlYXRlT1MyVGFibGUobixlLmNoYXJDb2RlVG9HbHlwaElkLGopfSl9aWYoaS5uYW1lKXtjb25zdFt0LGFdPXJlYWROYW1lVGFibGUoaS5uYW1lKTtpLm5hbWUuZGF0YT1jcmVhdGVOYW1lVGFibGUoZSx0KTt0aGlzLnBzTmFtZT10WzBdWzZdfHxudWxsO24uY29tcG9zaXRlfHxmdW5jdGlvbiBhZGp1c3RUcnVlVHlwZVRvVW5pY29kZShlLHQsbil7aWYoZS5pc0ludGVybmFsRm9udClyZXR1cm47aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcClyZXR1cm47aWYoZS5oYXNFbmNvZGluZylyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47aWYoIXQpcmV0dXJuO2lmKDA9PT1uLmxlbmd0aClyZXR1cm47aWYoZS5kZWZhdWx0RW5jb2Rpbmc9PT1wYSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgbilpZighaXNXaW5OYW1lUmVjb3JkKGUpKXJldHVybjtjb25zdCBhPXBhLHM9W10scj1iYSgpO2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTtpZigiIj09PXQpY29udGludWU7Y29uc3Qgbj1yW3RdO3ZvaWQgMCE9PW4mJihzW2VdPVN0cmluZy5mcm9tQ2hhckNvZGUobikpfXMubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHMpfShuLHRoaXMuaXNTeW1ib2xpY0ZvbnQsYSl9ZWxzZSBpLm5hbWU9e3RhZzoibmFtZSIsZGF0YTpjcmVhdGVOYW1lVGFibGUodGhpcy5uYW1lKX07Y29uc3QgcT1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcihyLnZlcnNpb24pO2Zvcihjb25zdCBlIGluIGkpcS5hZGRUYWJsZShlLGlbZV0uZGF0YSk7cmV0dXJuIHEudG9BcnJheSgpfWNvbnZlcnQoZSx0LG4pe24uZml4ZWRQaXRjaD0hMTtuLmJ1aWx0SW5FbmNvZGluZyYmZnVuY3Rpb24gYWRqdXN0VHlwZTFUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IG49W10sYT1iYSgpO2Zvcihjb25zdCBzIGluIHQpe2lmKGUuaGFzRW5jb2RpbmcmJihlLmJhc2VFbmNvZGluZ05hbWV8fHZvaWQgMCE9PWUuZGlmZmVyZW5jZXNbc10pKWNvbnRpbnVlO2NvbnN0IHI9Z2V0VW5pY29kZUZvckdseXBoKHRbc10sYSk7LTEhPT1yJiYobltzXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHIpKX1uLmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZChuKX0obixuLmJ1aWx0SW5FbmNvZGluZyk7Y29uc3Qgcz10IGluc3RhbmNlb2YgQ0ZGRm9udD90Lm51bUdseXBocy0xOjEscj10LmdldEdseXBoTWFwcGluZyhuKTtsZXQgaT1udWxsLG89cixsPW51bGw7aWYoIW4uY3NzRm9udEluZm8pe2k9YWRqdXN0TWFwcGluZyhyLHQuaGFzR2x5cGhJZC5iaW5kKHQpLHMsdGhpcy50b1VuaWNvZGUpO3RoaXMudG9Gb250Q2hhcj1pLnRvRm9udENoYXI7bz1pLmNoYXJDb2RlVG9HbHlwaElkO2w9aS50b1VuaWNvZGVFeHRyYU1hcH1jb25zdCBmPXQubnVtR2x5cGhzO2Z1bmN0aW9uIGdldENoYXJDb2RlcyhlLHQpe2xldCBuPW51bGw7Zm9yKGNvbnN0IGEgaW4gZSl0PT09ZVthXSYmKG58fD1bXSkucHVzaCgwfGEpO3JldHVybiBufWZ1bmN0aW9uIGNyZWF0ZUNoYXJDb2RlKGUsdCl7Zm9yKGNvbnN0IG4gaW4gZSlpZih0PT09ZVtuXSlyZXR1cm4gMHxuO2kuY2hhckNvZGVUb0dseXBoSWRbaS5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlXT10O3JldHVybiBpLm5leHRBdmFpbGFibGVGb250Q2hhckNvZGUrK31jb25zdCBjPXQuc2VhY3M7aWYoaSYmYz8ubGVuZ3RoKXtjb25zdCBlPW4uZm9udE1hdHJpeHx8YSxzPXQuZ2V0Q2hhcnNldCgpLG89T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQgaW4gYyl7dHw9MDtjb25zdCBuPWNbdF0sYT1tYVtuWzJdXSxsPW1hW25bM11dLGY9cy5pbmRleE9mKGEpLGg9cy5pbmRleE9mKGwpO2lmKGY8MHx8aDwwKWNvbnRpbnVlO2NvbnN0IHU9e3g6blswXSplWzBdK25bMV0qZVsyXStlWzRdLHk6blswXSplWzFdK25bMV0qZVszXStlWzVdfSxtPWdldENoYXJDb2RlcyhyLHQpO2lmKG0pZm9yKGNvbnN0IGUgb2YgbSl7Y29uc3QgdD1pLmNoYXJDb2RlVG9HbHlwaElkLG49Y3JlYXRlQ2hhckNvZGUodCxmKSxhPWNyZWF0ZUNoYXJDb2RlKHQsaCk7b1tlXT17YmFzZUZvbnRDaGFyQ29kZTpuLGFjY2VudEZvbnRDaGFyQ29kZTphLGFjY2VudE9mZnNldDp1fX19bi5zZWFjTWFwPW99Y29uc3QgaD1uLmZvbnRNYXRyaXg/MS9NYXRoLm1heCguLi5uLmZvbnRNYXRyaXguc2xpY2UoMCw0KS5tYXAoTWF0aC5hYnMpKToxZTMsdT1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcigiT1RUTyIpO3UuYWRkVGFibGUoIkNGRiAiLHQuZGF0YSk7dS5hZGRUYWJsZSgiT1MvMiIsY3JlYXRlT1MyVGFibGUobixvKSk7dS5hZGRUYWJsZSgiY21hcCIsY3JlYXRlQ21hcFRhYmxlKG8sbCxmKSk7dS5hZGRUYWJsZSgiaGVhZCIsZnVuY3Rpb24gZm9udFRhYmxlSGVhZCgpe2NvbnN0IGU9WzAsMCwwLDAsMTU4LDExLDEyNiwzOV0sdD1uZXcgRGF0YUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOjU0fSk7dC5zZXRBcnJheShbMCwxLDAsMF0pO3Quc2V0QXJyYXkoWzAsMCwxNiwwXSk7dC5za2lwKDQpO3Quc2V0QXJyYXkoWzk1LDE1LDYwLDI0NV0pO3Quc2tpcCgyKTt0LnNldFNhZmVJbnQxNihoKTt0LnNldEFycmF5KGUpO3Quc2V0QXJyYXkoZSk7dC5za2lwKDIpO3Quc2V0U2FmZUludDE2KG4uZGVzY2VudCk7dC5zZXRBcnJheShbMTUsMjU1XSk7dC5zZXRTYWZlSW50MTYobi5hc2NlbnQpO3Quc2V0SW50MTYobi5pdGFsaWNBbmdsZT8yOjApO3Quc2V0QXJyYXkoWzAsMTddKTt0LnNraXAoNik7cmV0dXJuIHQuZGF0YX0oKSk7dS5hZGRUYWJsZSgiaGhlYSIsZnVuY3Rpb24gZm9udFRhYmxlSGhlYSgpe2NvbnN0IGU9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDozNn0pO2Uuc2V0QXJyYXkoWzAsMSwwLDBdKTtlLnNldFNhZmVJbnQxNihuLmFzY2VudCk7ZS5zZXRTYWZlSW50MTYobi5kZXNjZW50KTtlLnNraXAoMik7ZS5zZXRBcnJheShbMjU1LDI1NV0pO2Uuc2tpcCg2KTtlLnNldFNhZmVJbnQxNihuLmNhcEhlaWdodCk7ZS5zZXRTYWZlSW50MTYoTWF0aC50YW4obi5pdGFsaWNBbmdsZSkqbi54SGVpZ2h0KTtlLnNraXAoMTIpO2Uuc2V0SW50MTYoZik7cmV0dXJuIGUuZGF0YX0oKSk7dS5hZGRUYWJsZSgiaG10eCIsZnVuY3Rpb24gZm9udFRhYmxlSG10eCgpe2NvbnN0IGU9dC5jaGFyc3RyaW5ncyxuPXQuY2ZmPy53aWR0aHM/P251bGwsYT1uZXcgRGF0YUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOjQqZn0pO2Euc2tpcCg0KTtmb3IobGV0IHQ9MSxzPWY7dDxzO3QrKyl7bGV0IHM9MDtlP3M9ZVt0LTFdLndpZHRofHwwOm4mJihzPU1hdGguY2VpbChuW3RdfHwwKSk7YS5zZXRJbnQxNihzKTthLnNraXAoMil9cmV0dXJuIGEuZGF0YX0oKSk7dS5hZGRUYWJsZSgibWF4cCIsZnVuY3Rpb24gZm9udFRhYmxlTWF4cCgpe2NvbnN0IGU9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDo2fSk7ZS5zZXRBcnJheShbMCwwLDgwLDBdKTtlLnNldEludDE2KGYpO3JldHVybiBlLmRhdGF9KCkpO3UuYWRkVGFibGUoIm5hbWUiLGNyZWF0ZU5hbWVUYWJsZShlKSk7dS5hZGRUYWJsZSgicG9zdCIsY3JlYXRlUG9zdFRhYmxlKG4pKTtyZXR1cm4gdS50b0FycmF5KCl9Z2V0IF9zcGFjZVdpZHRoKCl7Y29uc3QgZT1bInNwYWNlIiwibWludXMiLCJvbmUiLCJpIiwiSSJdO2xldCB0O2Zvcihjb25zdCBuIG9mIGUpe2lmKG4gaW4gdGhpcy53aWR0aHMpe3Q9dGhpcy53aWR0aHNbbl07YnJlYWt9Y29uc3QgZT1iYSgpW25dO2xldCBhPTA7aWYodGhpcy5jb21wb3NpdGUmJnRoaXMuY01hcC5jb250YWlucyhlKSl7YT10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgYSYmKGE9Y29udmVydENpZFN0cmluZyhlLGEpKX0hYSYmdGhpcy50b1VuaWNvZGUmJihhPXRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoZSkpO2E8PTAmJihhPWUpO3Q9dGhpcy53aWR0aHNbYV07aWYodClicmVha31yZXR1cm4gc2hhZG93KHRoaXMsIl9zcGFjZVdpZHRoIix0fHx0aGlzLmRlZmF1bHRXaWR0aCl9X2NoYXJUb0dseXBoKGUsdD0hMSl7bGV0IG4sYSxzLHI9dGhpcy4jZGUuZ2V0KGUpO2lmKHI/LmlzU3BhY2U9PT10KXJldHVybiByO2xldCBpPWU7aWYodGhpcy5jTWFwPy5jb250YWlucyhlKSl7aT10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgaSYmKGk9Y29udmVydENpZFN0cmluZyhlLGkpKX1hPXRoaXMud2lkdGhzW2ldOyJudW1iZXIiIT10eXBlb2YgYSYmKGE9dGhpcy5kZWZhdWx0V2lkdGgpO2NvbnN0IG89dGhpcy52bWV0cmljcz8uW2ldfHx0aGlzLmRlZmF1bHRWTWV0cmljcztsZXQgbD10aGlzLnRvVW5pY29kZS5nZXQoZSl8fGU7Im51bWJlciI9PXR5cGVvZiBsJiYobD1TdHJpbmcuZnJvbUNoYXJDb2RlKGwpKTtsZXQgZj12b2lkIDAhPT10aGlzLnRvRm9udENoYXJbZV07bj10aGlzLnRvRm9udENoYXJbZV18fGU7aWYodGhpcy5taXNzaW5nRmlsZSl7Y29uc3QgdD10aGlzLmRpZmZlcmVuY2VzW2VdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1tlXTtpZigoIi5ub3RkZWYiPT09dHx8IiI9PT10KSYmIlR5cGUxIj09PXRoaXMudHlwZSl7bj0zMjtpZigiIj09PXQpe2F8fD10aGlzLl9zcGFjZVdpZHRoO2w9U3RyaW5nLmZyb21DaGFyQ29kZShuKX19bj1mdW5jdGlvbiBtYXBTcGVjaWFsVW5pY29kZVZhbHVlcyhlKXtyZXR1cm4gZT49NjU1MjAmJmU8PTY1NTM1PzA6ZT49NjI5NzYmJmU8PTYzNzQzP2phKClbZV18fGU6MTczPT09ZT80NTplfShuKX10aGlzLmlzVHlwZTNGb250JiYocz1uKTtsZXQgYz1udWxsO2lmKHRoaXMuc2VhY01hcD8uW2VdKXtmPSEwO2NvbnN0IHQ9dGhpcy5zZWFjTWFwW2VdO249dC5iYXNlRm9udENoYXJDb2RlO2M9e2ZvbnRDaGFyOlN0cmluZy5mcm9tQ29kZVBvaW50KHQuYWNjZW50Rm9udENoYXJDb2RlKSxvZmZzZXQ6dC5hY2NlbnRPZmZzZXR9fWxldCBoPSIiOyJudW1iZXIiPT10eXBlb2YgbiYmKG48PTExMTQxMTE/aD1TdHJpbmcuZnJvbUNvZGVQb2ludChuKTp3YXJuKGBjaGFyVG9HbHlwaCAtIGludmFsaWQgZm9udENoYXJDb2RlOiAke259YCkpO2lmKHRoaXMubWlzc2luZ0ZpbGUmJnRoaXMudmVydGljYWwmJjE9PT1oLmxlbmd0aCl7Y29uc3QgZT1JYSgpW2guY2hhckNvZGVBdCgwKV07ZSYmKGg9bD1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpKX1yPW5ldyBmb250c19HbHlwaChlLGgsbCxjLGEsbyxzLHQsZik7dGhpcy4jZGUuc2V0KGUscik7cmV0dXJuIHJ9Y2hhcnNUb0dseXBocyhlKXtsZXQgdD10aGlzLiNwZS5nZXQoZSk7aWYodClyZXR1cm4gdDt0PVtdO2lmKHRoaXMuY01hcCl7Y29uc3Qgbj1PYmplY3QuY3JlYXRlKG51bGwpLGE9ZS5sZW5ndGg7bGV0IHM9MDtmb3IoO3M8YTspe3RoaXMuY01hcC5yZWFkQ2hhckNvZGUoZSxzLG4pO2NvbnN0e2NoYXJjb2RlOmEsbGVuZ3RoOnJ9PW47cys9cjtjb25zdCBpPXRoaXMuX2NoYXJUb0dseXBoKGEsMT09PXImJjMyPT09ZS5jaGFyQ29kZUF0KHMtMSkpO3QucHVzaChpKX19ZWxzZSBmb3IobGV0IG49MCxhPWUubGVuZ3RoO248YTsrK24pe2NvbnN0IGE9ZS5jaGFyQ29kZUF0KG4pLHM9dGhpcy5fY2hhclRvR2x5cGgoYSwzMj09PWEpO3QucHVzaChzKX10aGlzLiNwZS5zZXQoZSx0KTtyZXR1cm4gdH1nZXRDaGFyUG9zaXRpb25zKGUpe2NvbnN0IHQ9W107aWYodGhpcy5jTWFwKXtjb25zdCBuPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGE9MDtmb3IoO2E8ZS5sZW5ndGg7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUsYSxuKTtjb25zdCBzPW4ubGVuZ3RoO3QucHVzaChbYSxhK3NdKTthKz1zfX1lbHNlIGZvcihsZXQgbj0wLGE9ZS5sZW5ndGg7bjxhOysrbil0LnB1c2goW24sbisxXSk7cmV0dXJuIHR9Z2V0IGdseXBoQ2FjaGVWYWx1ZXMoKXtyZXR1cm4gdGhpcy4jZGUudmFsdWVzKCl9ZW5jb2RlU3RyaW5nKGUpe2NvbnN0IHQ9W10sbj1bXSxoYXNDdXJyZW50QnVmRXJyb3JzPSgpPT50Lmxlbmd0aCUyPT0xLGE9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcD9lPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKGUpOmU9PnRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoU3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpO2ZvcihsZXQgcz0wLHI9ZS5sZW5ndGg7czxyO3MrKyl7Y29uc3Qgcj1lLmNvZGVQb2ludEF0KHMpO3I+NjU1MzUmJnMrKztpZih0aGlzLnRvVW5pY29kZSl7Y29uc3QgZT1hKHIpO2lmKC0xIT09ZSl7aWYoaGFzQ3VycmVudEJ1ZkVycm9ycygpKXt0LnB1c2gobi5qb2luKCIiKSk7bi5sZW5ndGg9MH1mb3IobGV0IHQ9KHRoaXMuY01hcD90aGlzLmNNYXAuZ2V0Q2hhckNvZGVMZW5ndGgoZSk6MSktMTt0Pj0wO3QtLSluLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlPj44KnQmMjU1KSk7Y29udGludWV9fWlmKCFoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChuLmpvaW4oIiIpKTtuLmxlbmd0aD0wfW4ucHVzaChTdHJpbmcuZnJvbUNvZGVQb2ludChyKSl9dC5wdXNoKG4uam9pbigiIikpO3JldHVybiB0fX1jbGFzcyBFcnJvckZvbnR7Y29uc3RydWN0b3IoZSl7dGhpcy5lcnJvcj1lO3RoaXMubG9hZGVkTmFtZT0iZ19mb250X2Vycm9yIjt0aGlzLm1pc3NpbmdGaWxlPSEwfWNoYXJzVG9HbHlwaHMoKXtyZXR1cm5bXX1lbmNvZGVTdHJpbmcoZSl7cmV0dXJuW2VdfWV4cG9ydERhdGEoKXtyZXR1cm57ZXJyb3I6dGhpcy5lcnJvcn19fWNvbnN0IG1zPVsxLjM4NzcsMSwxLDEsLjk3ODAxLC45MjQ4MiwuODk1NTIsLjkxMTMzLC44MTk4OCwuOTc1NjYsLjk4MTUyLC45MzU0OCwuOTM1NDgsMS4yNzk4LC44NTI4NCwuOTI3OTQsMSwuOTYxMzQsMS41NDY1NywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjgyODQ1LC44Mjg0NSwuODUyODQsLjg1Mjg0LC44NTI4NCwuNzU4NTksLjkyMTM4LC44MzkwOCwuNzc2MiwuNzMyOTMsLjg3Mjg5LC43MzEzMywuNzUxNCwuODE5MjEsLjg3MzU2LC45NTk1OCwuNTk1MjYsLjc1NzI3LC42OTIyNSwxLjA0OTI0LC45MTIxLC44Njk0MywuNzk3OTUsLjg4MTk4LC43Nzk1OCwuNzA4NjQsLjgxMDU1LC45MDM5OSwuODg2NTMsLjk2MDE3LC44MjU3NywuNzc4OTIsLjc4MjU3LC45NzUwNywxLjU0NjU3LC45NzUwNywuODUyODQsLjg5NTUyLC45MDE3NiwuODg3NjIsLjg3ODUsLjc1MjQxLC44Nzg1LC45MDUxOCwuOTUwMTUsLjc3NjE4LC44Nzg1LC44ODQwMSwuOTE5MTYsLjg2MzA0LC44ODQwMSwuOTE0ODgsLjg3ODUsLjg4MDEsLjg3ODUsLjg3ODUsLjkxMzQzLC43MTczLDEuMDQxMDYsLjg3ODUsLjg1MDc1LC45NTc5NCwuODI2MTYsLjg1MTYyLC43OTQ5MiwuODgzMzEsMS42OTgwOCwuODgzMzEsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS43ODAxLC44OTU1MiwxLjI0NDg3LDEuMTMyNTQsMS4xMjQwMSwuOTY4MzksLjg1Mjg0LC42ODc4NywuNzA2NDUsLjg1NTkyLC45MDc0NywxLjAxNDY2LDEuMDA4OCwuOTAzMjMsMSwxLjA3NDYzLDEsLjkxMDU2LC43NTgwNiwxLjE5MTE4LC45NjgzOSwuNzg4NjQsLjgyODQ1LC44NDEzMywuNzU4NTksLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjc3NTM5LC43MzI5MywuNzMxMzMsLjczMTMzLC43MzEzMywuNzMxMzMsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjk1OTU4LC44ODUwNiwuOTEyMSwuODY5NDMsLjg2OTQzLC44Njk0MywuODY5NDMsLjg2OTQzLC44NTI4NCwuODc1MDgsLjkwMzk5LC45MDM5OSwuOTAzOTksLjkwMzk5LC43Nzg5MiwuNzk3OTUsLjkwODA3LC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44NzE1LC43NTI0MSwuOTA1MTgsLjkwNTE4LC45MDUxOCwuOTA1MTgsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg4NDAxLC44Nzg1LC44Nzg1LC44ODAxLC44ODAxLC44ODAxLC44ODAxLC44ODAxLC45MDc0NywuODkwNDksLjg3ODUsLjg3ODUsLjg3ODUsLjg3ODUsLjg1MTYyLC44Nzg1LC44NTE2MiwuODM5MDgsLjg4NzYyLC44MzkwOCwuODg3NjIsLjgzOTA4LC44ODc2MiwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC44NzI4OSwuODMwMTYsLjg4NTA2LC45MzEyNSwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjgxOTIxLC43NzYxOCwuODE5MjEsLjc3NjE4LC44MTkyMSwuNzc2MTgsMSwxLC44NzM1NiwuODc4NSwuOTEwNzUsLjg5NjA4LC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuNzYyMjksLjkwMTY3LC41OTUyNiwuOTE5MTYsMSwxLC44NjMwNCwuNjkyMjUsLjg4NDAxLDEsMSwuNzA0MjQsLjc5NDY4LC45MTkyNiwuODgxNzUsLjcwODIzLC45NDkwMywuOTEyMSwuODc4NSwxLDEsLjkxMjEsLjg3ODUsLjg3ODAyLC44ODY1NiwuODc4NSwuODY5NDMsLjg4MDEsLjg2OTQzLC44ODAxLC44Njk0MywuODgwMSwuODc0MDIsLjg5MjkxLC43Nzk1OCwuOTEzNDMsMSwxLC43Nzk1OCwuOTEzNDMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLDEsMSwuODEwNTUsLjc1ODQxLC44MTA1NSwxLjA2NDUyLC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45NjAxNywuOTU3OTQsLjc3ODkyLC44NTE2MiwuNzc4OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjkyOTcsLjU2ODkyLC44MzkwOCwuODg3NjIsLjc3NTM5LC44NzE1LC44NzUwOCwuODkwNDksMSwxLC44MTA1NSwxLjA0MTA2LDEuMjA1MjgsMS4yMDUyOCwxLDEuMTU1NDMsLjcwNjc0LC45ODM4NywuOTQ3MjEsMS4zMzQzMSwxLjQ1ODk0LC45NTE2MSwxLjA2MzAzLC44MzkwOCwuODAzNTIsLjU3MTg0LC42OTY1LC41NjI4OSwuODIwMDEsLjU2MDI5LC44MTIzNSwxLjAyOTg4LC44MzkwOCwuNzc2MiwuNjgxNTYsLjgwMzY3LC43MzEzMywuNzgyNTcsLjg3MzU2LC44Njk0MywuOTU5NTgsLjc1NzI3LC44OTAxOSwxLjA0OTI0LC45MTIxLC43NjQ4LC44Njk0MywuODczNTYsLjc5Nzk1LC43ODI3NSwuODEwNTUsLjc3ODkyLC45NzYyLC44MjU3NywuOTk4MTksLjg0ODk2LC45NTk1OCwuNzc4OTIsLjk2MTA4LDEuMDE0MDcsLjg5MDQ5LDEuMDI5ODgsLjk0MjExLC45NjEwOCwuODkzNiwuODQwMjEsLjg3ODQyLC45NjM5OSwuNzkxMDksLjg5MDQ5LDEuMDA4MTMsMS4wMjk4OCwuODYwNzcsLjg3NDQ1LC45MjA5OSwuODQ3MjMsLjg2NTEzLC44ODAxLC43NTYzOCwuODU3MTQsLjc4MjE2LC43OTU4NiwuODc5NjUsLjk0MjExLC45Nzc0NywuNzgyODcsLjk3OTI2LC44NDk3MSwxLjAyOTg4LC45NDIxMSwuODgwMSwuOTQyMTEsLjg0OTcxLC43MzEzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTAyNjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNTE4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDU0OCwxLDEsMSwxLDEsMSwuOTYwMTcsLjk1Nzk0LC45NjAxNywuOTU3OTQsLjk2MDE3LC45NTc5NCwuNzc4OTIsLjg1MTYyLDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMzYzLC45Mjc5NCwuOTI3OTQsLjkyNzk0LC45Mjc5NCwuODcwMTIsLjg3MDEyLC44NzAxMiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjcxMTQzLDEuMDYxNTIsMSwxLDEuMDMzNzIsMS4wMzM3MiwuOTcxNzEsMS40OTU2LDIuMjgwNywuOTM4MzUsLjgzNDA2LC45MTEzMywuODQxMDcsLjkxMTMzLDEsMSwxLC43MjAyMSwxLDEuMjMxMDgsLjgzNDg5LC44ODUyNSwuODg1MjUsLjgxNDk5LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMzEwMDYsMS41MzcxMSwuOTQ0MzQsMS4wODY5NiwxLC45NTAxOCwuNzcxOTIsLjg1Mjg0LC45MDc0NywxLjE3NTM0LC42OTgyNSwuOTcxNiwxLjM3MDc3LC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wODAwNCwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDcyNywuOTA3MjcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHBzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxkcz1bMS4zODc3LDEsMSwxLC45NzgwMSwuOTI0ODIsLjg5NTUyLC45MTEzMywuODE5ODgsLjk3NTY2LC45ODE1MiwuOTM1NDgsLjkzNTQ4LDEuMjc5OCwuODUyODQsLjkyNzk0LDEsLjk2MTM0LDEuNTYyMzksLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC44Mjg0NSwuODI4NDUsLjg1Mjg0LC44NTI4NCwuODUyODQsLjc1ODU5LC45MjEzOCwuODM5MDgsLjc3NjIsLjcxODA1LC44NzI4OSwuNzMxMzMsLjc1MTQsLjgxOTIxLC44NzM1NiwuOTU5NTgsLjU5NTI2LC43NTcyNywuNjkyMjUsMS4wNDkyNCwuOTA4NzIsLjg1OTM4LC43OTc5NSwuODcwNjgsLjc3OTU4LC42OTc2NiwuODEwNTUsLjkwMzk5LC44ODY1MywuOTYwNjgsLjgyNTc3LC43Nzg5MiwuNzgyNTcsLjk3NTA3LDEuNTI5LC45NzUwNywuODUyODQsLjg5NTUyLC45MDE3NiwuOTQ5MDgsLjg2NDExLC43NDAxMiwuODY0MTEsLjg4MzIzLC45NTAxNSwuODY0MTEsLjg2MzMxLC44ODQwMSwuOTE5MTYsLjg2MzA0LC44ODQwMSwuOTAzOSwuODYzMzEsLjg2MzMxLC44NjQxMSwuODY0MTEsLjkwNDY0LC43MDg1MiwxLjA0MTA2LC44NjMzMSwuODQzNzIsLjk1Nzk0LC44MjYxNiwuODQ1NDgsLjc5NDkyLC44ODMzMSwxLjY5ODA4LC44ODMzMSwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjc4MDEsLjg5NTUyLDEuMjQ0ODcsMS4xMzI1NCwxLjE5MTI5LC45NjgzOSwuODUyODQsLjY4Nzg3LC43MDY0NSwuODU1OTIsLjkwNzQ3LDEuMDE0NjYsMS4wMDg4LC45MDMyMywxLDEuMDc0NjMsMSwuOTEwNTYsLjc1ODA2LDEuMTkxMTgsLjk2ODM5LC43ODg2NCwuODI4NDUsLjg0MTMzLC43NTg1OSwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuNzc1MzksLjcxODA1LC43MzEzMywuNzMxMzMsLjczMTMzLC43MzEzMywuOTU5NTgsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjg4NTA2LC45MDg3MiwuODU5MzgsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTI4NCwuODcwNjgsLjkwMzk5LC45MDM5OSwuOTAzOTksLjkwMzk5LC43Nzg5MiwuNzk3OTUsLjkwODA3LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC44NTg4NywuNzQwMTIsLjg4MzIzLC44ODMyMywuODgzMjMsLjg4MzIzLC44ODQwMSwuODg0MDEsLjg4NDAxLC44ODQwMSwuODc4NSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuOTA3NDcsLjg5MDQ5LC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODQ1NDgsLjg2NDExLC44NDU0OCwuODM5MDgsLjk0OTA4LC44MzkwOCwuOTQ5MDgsLjgzOTA4LC45NDkwOCwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC44NzI4OSwuNzk1MzgsLjg4NTA2LC45MjcyNiwuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjgxOTIxLC44NjQxMSwuODE5MjEsLjg2NDExLC44MTkyMSwuODY0MTEsMSwxLC44NzM1NiwuODYzMzEsLjkxMDc1LC44Nzc3LC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuNzY0NjcsLjkwMTY3LC41OTUyNiwuOTE5MTYsMSwxLC44NjMwNCwuNjkyMjUsLjg4NDAxLDEsMSwuNzA0MjQsLjc3MzEyLC45MTkyNiwuODgxNzUsLjcwODIzLC45NDkwMywuOTA4NzIsLjg2MzMxLDEsMSwuOTA4NzIsLjg2MzMxLC44NjkwNiwuODgxMTYsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg1OTM4LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NzQwMiwuODY1NDksLjc3OTU4LC45MDQ2NCwxLDEsLjc3OTU4LC45MDQ2NCwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLDEsMSwuODEwNTUsLjc1ODQxLC44MTA1NSwxLjA2NDUyLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45NjA2OCwuOTU3OTQsLjc3ODkyLC44NDU0OCwuNzc4OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjkyOTcsLjU2ODkyLC44MzkwOCwuOTQ5MDgsLjc3NTM5LC44NTg4NywuODcwNjgsLjg5MDQ5LDEsMSwuODEwNTUsMS4wNDEwNiwxLjIwNTI4LDEuMjA1MjgsMSwxLjE1NTQzLC43MDA4OCwuOTgzODcsLjk0NzIxLDEuMzM0MzEsMS40NTg5NCwuOTUxNjEsMS40ODM4NywuODM5MDgsLjgwMzUyLC41NzExOCwuNjk2NSwuNTYzNDcsLjc5MTc5LC41NTg1MywuODAzNDYsMS4wMjk4OCwuODM5MDgsLjc3NjIsLjY3MTc0LC44NjAzNiwuNzMxMzMsLjc4MjU3LC44NzM1NiwuODY0NDEsLjk1OTU4LC43NTcyNywuODkwMTksMS4wNDkyNCwuOTA4NzIsLjc0ODg5LC44NTkzOCwuODc4OTEsLjc5Nzk1LC43OTU3LC44MTA1NSwuNzc4OTIsLjk3NDQ3LC44MjU3NywuOTc0NjYsLjg3MTc5LC45NTk1OCwuNzc4OTIsLjk0MjUyLC45NTYxMiwuODc1MywxLjAyOTg4LC45MjczMywuOTQyNTIsLjg3NDExLC44NDAyMSwuODcyOCwuOTU2MTIsLjc0MDgxLC44NzUzLDEuMDIxODksMS4wMjk4OCwuODQ4MTQsLjg3NDQ1LC45MTgyMiwuODQ3MjMsLjg1NjY4LC44NjMzMSwuODEzNDQsLjg3NTgxLC43NjQyMiwuODIwNDYsLjk2MDU3LC45MjczMywuOTkzNzUsLjc4MDIyLC45NTQ1MiwuODYwMTUsMS4wMjk4OCwuOTI3MzMsLjg2MzMxLC45MjczMywuODYwMTUsLjczMTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDYzMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODgzMjMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg1MTc0LDEsMSwxLDEsMSwxLC45NjA2OCwuOTU3OTQsLjk2MDY4LC45NTc5NCwuOTYwNjgsLjk1Nzk0LC43Nzg5MiwuODQ1NDgsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAzNjMsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjg5ODA3LC44NzAxMiwuODcwMTIsLjg3MDEyLC44OTU1MiwuODk1NTIsMS40MjI1OSwuNzEwOTQsMS4wNjE1MiwxLDEsMS4wMzM3MiwxLjAzMzcyLC45NzE3MSwxLjQ5NTYsMi4yODA3LC45Mjk3MiwuODM0MDYsLjkxMTMzLC44MzMyNiwuOTExMzMsMSwxLDEsLjcyMDIxLDEsMS4yMzEwOCwuODM0ODksLjg4NTI1LC44ODUyNSwuODE0OTksLjkwNjE2LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4zMTA3LDEuNTM3MTEsLjk0NDM0LDEuMDg2OTYsMSwuOTUwMTgsLjc3MTkyLC44NTI4NCwuOTA3NDcsMS4xNzUzNCwuNjk4MjUsLjk3MTYsMS4zNzA3NywuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDgwMDQsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA3MjcsLjkwNzI3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxncz17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sYnM9WzEuMzg3NywxLDEsMSwxLjE3MjIzLDEuMTI5MywuODk1NTIsLjkxMTMzLC44MDM5NSwxLjAyMjY5LDEuMTU2MDEsLjkxMDU2LC45MTA1NiwxLjI3OTgsLjg1Mjg0LC44OTgwNywxLC45MDg2MSwxLjM5NTQzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTYzMDksLjk2MzA5LC44NTI4NCwuODUyODQsLjg1Mjg0LC44MzMxOSwuODgwNzEsLjg2NzUsLjgxNTUyLC43MjM0NiwuODUxOTMsLjczMjA2LC43NTIyLC44MTEwNSwuODYyNzUsLjkwNjg1LC42Mzc3LC43Nzg5MiwuNzU1OTMsMS4wMjYzOCwuODkyNDksLjg0MTE4LC43NzQ1MiwuODUzNzQsLjc1MTg2LC42Nzc4OSwuNzk3NzYsLjg4ODQ0LC44NTA2NiwuOTQzMDksLjc3ODE4LC43MzA2LC43NjY1OSwxLjEwMzY5LDEuMzgzMTMsMS4xMDM2OSwxLjA2MTM5LC44OTU1MiwuODczOSwuOTI0NSwuOTI0NSwuODMyMDMsLjkyNDUsLjg1ODY1LDEuMDk4NDIsLjkyNDUsLjkyNDUsMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NDk1OSwuOTI0NSwuOTIyNzQsLjkyNDUsLjkyNDUsMS4wMjkzMywuNzc4MzIsMS4yMDU2MiwuOTI0NSwuODkxNiwuOTg5ODYsLjg2NjIxLC44OTQ1MywuNzkwMDQsLjk0MTUyLDEuNzcyNTYsLjk0MTUyLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuOTE3MjksLjg5NTUyLDEuMTc4ODksMS4xMzI1NCwxLjE2MzU5LC45MjA5OCwuODUyODQsLjY4Nzg3LC43MTM1MywuODQ3MzcsLjkwNzQ3LDEuMDA4OCwxLjAwNDQsLjg3NjgzLDEsMS4wOTA5MSwxLC45MjIyOSwuNzM5LDEuMTU2NDIsLjkyMDk4LC43NjI4OCwuODA1MDQsLjgwOTcyLC43NTg1OSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuNzYzMTgsLjcyMzQ2LC43MzIwNiwuNzMyMDYsLjczMjA2LC43MzIwNiwuOTA2ODUsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjg2NDc3LC44OTI0OSwuODQxMTgsLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NTI4NCwuODQ1NTcsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjg4ODQ0LC43MzA2LC43NzQ1MiwuODYzMzEsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjg0ODQzLC44MzIwMywuODU4NjUsLjg1ODY1LC44NTg2NSwuODU4NjUsLjgyNjAxLC44MjYwMSwuODI2MDEsLjgyNjAxLC45NDQ2OSwuOTI0NSwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MDc0NywuODY2NTEsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjg5NDUzLC45MjQ1LC44OTQ1MywuODY3NSwuOTI0NSwuODY3NSwuOTI0NSwuODY3NSwuOTI0NSwuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC44NTE5MywuODg3NSwuODY0NzcsLjk5MDM0LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuODExMDUsLjkyNDUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwxLDEsLjg2Mjc1LC45MjQ1LC45MDg3MiwuOTM1OTEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc4OTYsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTM3NSwuOTgxNTYsLjkzNDA3LC43NzI2MSwxLjExNDI5LC44OTI0OSwuOTI0NSwxLDEsLjg5MjQ5LC45MjQ1LC45MjUzNCwuODY2OTgsLjkyNDUsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NDExOCwuOTIyNzQsLjg2NjcsLjg2MjkxLC43NTE4NiwxLjAyOTMzLDEsMSwuNzUxODYsMS4wMjkzMywuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLDEsMSwuNzk3NzYsLjk3NjU1LC43OTc3NiwxLjIzMDIzLC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC45NDMwOSwuOTg5ODYsLjczMDYsLjg5NDUzLC43MzA2LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LDEuMDkyMzEsLjU0ODczLC44Njc1LC45MjQ1LC43NjMxOCwuODQ4NDMsLjg0NTU3LC44NjY1MSwxLDEsLjc5Nzc2LDEuMjA1NjIsMS4xODYyMiwxLjE4NjIyLDEsMS4xNDM3LC42NzAwOSwuOTYzMzQsLjkzNjk1LDEuMzUxOTEsMS40MDkwOSwuOTUxNjEsMS40ODM4NywuODY3NSwuOTA4NjEsLjYxOTIsLjczNjMsLjY0ODI0LC44MjQxMSwuNTYzMjEsLjg1Njk2LDEuMjM1MTYsLjg2NzUsLjgxNTUyLC43Mjg2LC44NDEzNCwuNzMyMDYsLjc2NjU5LC44NjI3NSwuODQzNjksLjkwNjg1LC43Nzg5MiwuODU4NzEsMS4wMjYzOCwuODkyNDksLjc1ODI4LC44NDExOCwuODU5ODQsLjc3NDUyLC43NjQ2NiwuNzk3NzYsLjczMDYsLjkwNzgyLC43NzgxOCwuOTAzLC44NzI5MSwuOTA2ODUsLjczMDYsLjk5MDU4LDEuMDM2NjcsLjk0NjM1LDEuMjM1MTYsLjk4NDksLjk5MDU4LC45MjM5MywuODkxNiwuOTQyLDEuMDM2NjcsLjc1MDI2LC45NDYzNSwxLjAyOTcsMS4yMzUxNiwuOTA5MTgsLjk0MDQ4LC45ODIxNywuODk3NDYsLjg0MTUzLC45MjI3NCwuODI1MDcsLjg4ODMyLC44NDQzOCwuODgxNzgsMS4wMzUyNSwuOTg0OSwxLjAwMjI1LC43ODA4NiwuOTcyNDgsLjg5NDA0LDEuMjM1MTYsLjk4NDksLjkyMjc0LC45ODQ5LC44OTQwNCwuNzMyMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NjkzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTg2NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA5MzMsMSwxLDEsMSwxLDEsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC45NDMwOSwuOTg5ODYsLjczMDYsLjg5NDUzLDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMTg2LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4yNTY2LDEuMjU2NiwxLjI1NjYsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC42ODk5NCwxLjAzODA5LDEsMSwxLjAxNzYsMS4wMTc2LDEuMTE1MjMsMS40OTU2LDIuMDE0NjIsLjk3ODU4LC44MjYxNiwuOTExMzMsLjgzNDM3LC45MTEzMywxLDEsMSwuNzA1MDgsMSwxLjIzMTA4LC43OTgwMSwuODQ0MjYsLjg0NDI2LC43NzQsLjkwNTcyLDEuODEwNTUsLjkwNzQ5LDEuODEwNTUsMS4yODgwOSwxLjU1NDY5LC45NDQzNCwxLjA3ODA2LDEsLjk3MDk0LC43NTg5LC44NTI4NCwuOTA3NDcsMS4xOTY1OCwuNjk4MjUsLjk3NjIyLDEuMzM1MTIsLjkwNzQ3LC45MDc0NywuODUyODQsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjAzMzYsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1ODU5LDEuMDU4NTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHdzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxqcz1bMS4zODc3LDEsMSwxLDEuMTcyMjMsMS4xMjkzLC44OTU1MiwuOTExMzMsLjgwMzk1LDEuMDIyNjksMS4xNTYwMSwuOTEwNTYsLjkxMDU2LDEuMjc5OCwuODUyODQsLjg5ODA3LDEsLjkwODYxLDEuMzkwMTYsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45NjMwOSwuOTYzMDksLjg1Mjg0LC44NTI4NCwuODUyODQsLjgzMzE5LC44ODA3MSwuODY3NSwuODE1NTIsLjczODM0LC44NTE5MywuNzMyMDYsLjc1MjIsLjgxMTA1LC44NjI3NSwuOTA2ODUsLjYzNzcsLjc3ODkyLC43NTU5MywxLjAyNjM4LC44OTM4NSwuODUxMjIsLjc3NDUyLC44NjUwMywuNzUxODYsLjY4ODg3LC43OTc3NiwuODg4NDQsLjg1MDY2LC45NDI1OCwuNzc4MTgsLjczMDYsLjc2NjU5LDEuMTAzNjksMS4zOTAxNiwxLjEwMzY5LDEuMDYxMzksLjg5NTUyLC44NzM5LC44NjEyOCwuOTQ0NjksLjg0NTcsLjk0NDY5LC44OTQ2NCwxLjA5ODQyLC44NDYzNiwuOTQ0NjksMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NTg5NywuOTQ0NjksLjk0ODIsLjk0NDY5LC45NDQ2OSwxLjA0NjkyLC43ODIyMywxLjIwNTYyLC45NDQ2OSwuOTAzMzIsLjk4OTg2LC44NjYyMSwuOTA1MjcsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4wODcwNywuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MzgzNCwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkzODUsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUyODQsLjg1MzExLC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjkzLC44NDU3LC44OTQ2NCwuODk0NjQsLjg5NDY0LC44OTQ2NCwuODI2MDEsLjgyNjAxLC44MjYwMSwuODI2MDEsLjk0NDY5LC45NDQ2OSwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTA3NDcsLjg2NjUxLC45NDQ2OSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTA1MjcsLjk0NDY5LC45MDUyNywuODY3NSwuODYxMjgsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjg1MTkzLC45MjQ1NCwuODY0NzcsLjk5MjEsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwuODExMDUsLjg0NjM2LDEsMSwuODYyNzUsLjk0NDY5LC45MDg3MiwuOTU3ODYsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc3NDEsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTA0NTIsLjk4MTU2LDEuMTE4NDIsLjc3MjYxLDEuMTE0MjksLjg5Mzg1LC45NDQ2OSwxLDEsLjg5Mzg1LC45NDQ2OSwuOTU4NzcsLjg2OTAxLC45NDQ2OSwuODUxMjIsLjk0ODIsLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODY2NywuOTAwMTYsLjc1MTg2LDEuMDQ2OTIsMSwxLC43NTE4NiwxLjA0NjkyLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsMSwxLC43OTc3NiwuOTIxODgsLjc5Nzc2LDEuMjMwMjMsLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsLjczMDYsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsMS4wOTIzMSwuNTQ4NzMsLjg2NzUsLjg2MTI4LC43NjMxOCwuODY5MywuODUzMTEsLjg2NjUxLDEsMSwuNzk3NzYsMS4yMDU2MiwxLjE4NjIyLDEuMTg2MjIsMSwxLjE0MzcsLjY3NzQyLC45NjMzNCwuOTM2OTUsMS4zNTE5MSwxLjQwOTA5LC45NTE2MSwxLjQ4Mzg3LC44NjY4NiwuOTA4NjEsLjYyMjY3LC43NDM1OSwuNjU2NDksLjg1NDk4LC41Njk2MywuODgyNTQsMS4yMzUxNiwuODY3NSwuODE1NTIsLjc1NDQzLC44NDUwMywuNzMyMDYsLjc2NjU5LC44NjI3NSwuODUxMjIsLjkwNjg1LC43Nzg5MiwuODU3NDYsMS4wMjYzOCwuODkzODUsLjc1NjU3LC44NTEyMiwuODYyNzUsLjc3NDUyLC43NDE3MSwuNzk3NzYsLjczMDYsLjk1MTY1LC43NzgxOCwuODk3NzIsLjg4ODMxLC45MDY4NSwuNzMwNiwuOTgxNDIsMS4wMjE5MSwuOTY1NzYsMS4yMzUxNiwuOTkwMTgsLjk4MTQyLC45MjM2LC44OTI1OCwuOTQwMzUsMS4wMjE5MSwuNzg4NDgsLjk2NTc2LC45NTYxLDEuMjM1MTYsLjkwOTE4LC45MjU3OCwuOTU0MjQsLjg5NzQ2LC44Mzk2OSwuOTQ4MiwuODAxMTMsLjg5NDQyLC44NTIwOCwuODYxNTUsLjk4MDIyLC45OTAxOCwxLjAwNDUyLC44MTIwOSwuOTkyNDcsLjg5MTgxLDEuMjM1MTYsLjk5MDE4LC45NDgyLC45OTAxOCwuODkxODEsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODg0NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk0NjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NzY2LDEsMSwxLDEsMSwxLC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuOTQyNTgsLjk4OTg2LC43MzA2LC45MDUyNywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjkwNDMsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45OTMzMSwuODI2MTYsLjkxMTMzLC44NDI4NiwuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEuMDcxODUsLjk5NDEzLC45NjMzNCwxLjA4MDY1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sa3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LHlzPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMzM3NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNDIsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAzODI4LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsMS4wMDA2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTkzLC45OTk4LDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMSwxLjAwMDE2LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LDEuMDAwMjYsLjgxMjEsMS4wMDAyNiwuOTk5OTgsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDA2LC45OTk3MywuOTk5NzcsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAzNCwuOTk5NzcsMSwuOTk5OTcsMS4wMDAyNiwxLjAwMDc4LDEuMDAwMzYsLjk5OTczLDEuMDAwMTMsMS4wMDA2LC45OTk3NywuOTk5NzcsLjk5OTg4LC44NTE0OCwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LC45OTk3NywxLjAwMDAxLC45OTk5OSwuOTk5NzcsMS4wMDA2OSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLC45OTk4NCwxLjAwMDI2LDEuMDAwMDEsMS4wMDAyNCwxLjAwMDAxLC45OTk5LDEsMS4wMDA2LDEuMDAwMDEsMS4wMDA0MSwuOTk5NjIsMS4wMDAyNiwxLjAwMDYsLjk5OTk1LDEuMDAwNDEsLjk5OTQyLC45OTk3MywuOTk5MjcsMS4wMDA4MiwuOTk5MDIsMS4wMDAyNiwxLjAwMDg3LDEuMDAwNiwxLjAwMDY5LC45OTk3MywuOTk4NjcsLjk5OTczLC45OTkzLDEuMDAwMjYsMS4wMDA0OSwxLjAwMDU2LDEsLjk5OTg4LC45OTkzNSwuOTk5OTUsLjk5OTU0LDEuMDAwNTUsLjk5OTQ1LDEuMDAwMzIsMS4wMDA2LC45OTk5NSwxLjAwMDI2LC45OTk5NSwxLjAwMDMyLDEuMDAwMDEsMS4wMDAwOCwuOTk5NzEsMS4wMDAxOSwuOTk5NCwxLjAwMDAxLDEuMDAwNiwxLjAwMDQ0LC45OTk3MywxLjAwMDIzLDEuMDAwNDcsMSwuOTk5NDIsLjk5NTYxLC45OTk4OSwxLjAwMDM1LC45OTk3NywxLjAwMDM1LC45OTk3NywxLjAwMDE5LC45OTk0NCwxLjAwMDAxLDEuMDAwMjEsLjk5OTI2LDEuMDAwMzUsMS4wMDAzNSwuOTk5NDIsMS4wMDA0OCwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAzNSwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk4OSwxLjAwMDU3LDEuMDAwMDEsLjk5OTM2LDEuMDAwNTIsMS4wMDAxMiwuOTk5OTYsMS4wMDA0MywxLDEuMDAwMzUsLjk5OTQsLjk5OTc2LDEuMDAwMzUsLjk5OTczLDEuMDAwNTIsMS4wMDA0MSwxLjAwMTE5LDEuMDAwMzcsLjk5OTczLDEuMDAwMDIsLjk5OTg2LDEuMDAwNDEsMS4wMDA0MSwuOTk5MDIsLjk5OTYsMS4wMDAzNCwuOTk5OTksMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwuOTk5NzMsMS4wMDA1MiwuOTk5NzMsMSwuOTk5NzMsMS4wMDA0MSwxLjAwMDc1LC45OTk0LDEuMDAwMywuOTk5OTksMSwxLjAwMDQxLC45OTk1NSwxLC45OTkxNSwuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDExOSwuOTk5NTUsLjk5OTczLDEuMDAwNiwuOTk5MTEsMS4wMDA2LDEuMDAwMjYsLjk5OTcyLDEuMDAwMjYsLjk5OTAyLDEuMDAwNDEsLjk5OTczLC45OTk5OSwxLDEsMS4wMDAzOCwxLjAwMDUsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMSwxLC45OTk3MywxLDEsLjk5OTU1LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLDEsMSwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDEwNiwuOTk5OTksLjk5OTk4LC45OTk5OCwuOTk5OTksLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwxLjAwMDQ3LDEuMDAwMjMsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMSwxLDEsMSwxLDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0scXM9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LHZzPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMDQ0LC45OTk3NywxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTcxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMTAxMSwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LDEuMDAwNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5MywuOTk5OCwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEsMS4wMDAxNiwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwxLjAwMDI2LC44MTIxLDEuMDAwMjYsLjk5OTk4LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwNiwuOTk5NzMsLjk5OTc3LC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzcsMSwxLDEuMDAwMjYsLjk5OTY5LC45OTk3MiwuOTk5ODEsLjk5OTgsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwuOTExNTUsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwuOTk5NzcsMS4wMDAwMSwuOTk5OTksLjk5OTc3LC45OTk2NiwxLjAwMDIyLDEuMDAwMzIsMS4wMDAwMSwuOTk5NDQsMS4wMDAyNiwxLjAwMDAxLC45OTk2OCwxLjAwMDAxLDEuMDAwNDcsMSwxLjAwMDYsMS4wMDAwMSwuOTk5ODEsMS4wMDEwMSwxLjAwMDI2LDEuMDAwNiwuOTk5NDgsLjk5OTgxLDEuMDAwNjQsLjk5OTczLC45OTk0MiwxLjAwMTAxLDEuMDAwNjEsMS4wMDAyNiwxLjAwMDY5LDEuMDAwNiwxLjAwMDE0LC45OTk3MywxLjAxMzIyLC45OTk3MywxLjAwMDY1LDEuMDAwMjYsMS4wMDAxMiwuOTk5MjMsMSwxLjAwMDY0LDEuMDAwNzYsLjk5OTQ4LDEuMDAwNTUsMS4wMDA2MywxLjAwMDA3LC45OTk0MywxLjAwMDYsLjk5OTQ4LDEuMDAwMjYsLjk5OTQ4LC45OTk0MywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyOSwxLjAwMDM4LDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzgsMS4wMDAwMSwxLjAwMDU3LC45OTk4OSwuOTk5NjcsLjk5OTY0LC45OTk2NywuOTk5NzcsLjk5OTk5LC45OTk3NywxLjAwMDM4LC45OTk3NywxLjAwMDAxLC45OTk3MywxLjAwMDY2LC45OTk2NywuOTk5NjcsMS4wMDA0MSwuOTk5OTgsLjk5OTk5LC45OTk3NywxLjAwMDIyLC45OTk2NywxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk2NCwxLjAwMDMxLDEuMDAwMDEsLjk5OTk5LC45OTk5OSwxLDEuMDAwMjMsMSwxLC45OTk5OSwxLjAwMDM1LDEuMDAwMDEsLjk5OTk5LC45OTk3MywuOTk5NzcsLjk5OTk5LDEuMDAwNTgsLjk5OTczLC45OTk3MywuOTk5NTUsLjk5OTUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk5OTg5LDEuMDAwMzQsLjk5OTk5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MywuNDU5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMDEsLjk5OTk5LC45OTk4MiwuOTk5OTQsLjk5OTk2LDEsMS4wMDA0MiwxLjAwMDQ0LDEuMDAwMjksMS4wMDAyMywuOTk5NzMsLjk5OTczLDEuMDAwMjYsLjk5OTQ5LDEuMDAwMDIsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAzMiwuOTg2ODUsLjk5OTczLDEuMDAwMjYsMSwxLC45OTk2NiwxLjAwMDQ0LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMSwxLDEsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAxMDYsLjk5OTk5LC45OTk5OCwuOTk5OTgsLjk5OTk5LC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzEsLjk5OTc4LDEsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA5OCwxLDEsMSwxLjAwMDQ5LDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sU3M9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfSxBcz1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDI4OCwuOTk5NzcsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTI0LDEuMDAwNiwxLjAwMDYsLjk5OTQ2LDEuMDAwMzQsMSwuOTk5MjQsMS4wMDAwMSwxLDEsLjk5OTczLC45OTkyNCwuOTk5NzMsLjk5OTI0LC45OTk3MywxLjA2MzExLC45OTk3MywxLjAwMDI0LC45OTk3MywuOTk5MjQsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA0MSwuOTk5OCwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMSwxLjAwMDE2LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LC44OTU0NywxLjAwMDI2LDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwuOTk5MjQsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLjAwMDAxLDEsMS4wMDA1NCwuOTk5NzcsMS4wMDA4NCwxLjAwMDA3LC45OTk3MywxLjAwMDEzLC45OTkyNCwxLjAwMDAxLDEuMDAwMDEsLjk5OTQ1LC45MTIyMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LDEuMDAwMDEsMS4wMDAwMSwuOTk5OTksLjk5OTc3LC45OTkzMywxLjAwMDIyLDEuMDAwNTQsMS4wMDAwMSwxLjAwMDY1LDEuMDAwMjYsMS4wMDAwMSwxLjAwMDEsMS4wMDAwMSwxLjAwMDUyLDEsMS4wMDA2LDEuMDAwMDEsLjk5OTQ1LC45OTg5NywuOTk5NjgsLjk5OTI0LDEuMDAwMzYsLjk5OTQ1LC45OTk0OSwxLDEuMDAwNiwuOTk4OTcsLjk5OTE4LC45OTk2OCwuOTk5MTEsLjk5OTI0LDEsLjk5OTYyLDEuMDE0ODcsMSwxLjAwMDUsLjk5OTczLDEuMDAwMTIsMS4wMDA0MywxLC45OTk5NSwuOTk5OTQsMS4wMDAzNiwuOTk5NDcsMS4wMDAxOSwxLjAwMDYzLDEuMDAwMjUsLjk5OTI0LDEuMDAwMzYsLjk5OTczLDEuMDAwMzYsMS4wMDAyNSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNywxLjAwMDEsMS4wMDA2OCwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMSwxLjAwMDA4LC45OTk1NywuOTk5NzIsLjk5OTQsLjk5OTU0LC45OTk3NSwxLjAwMDUxLDEuMDAwMDEsMS4wMDAxOSwxLjAwMDAxLDEuMDAwMSwuOTk5ODYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMzgsLjk5OTU0LC45OTk1NCwuOTk5NCwxLjAwMDY2LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTc1LDEuMDAwMSwxLjAwMDAxLC45OTk5MywuOTk5NSwuOTk5NTUsMS4wMDAxNiwuOTk5NzgsLjk5OTc0LDEuMDAwMTksMS4wMDAyMiwuOTk5NTUsMS4wMDA1MywuOTk5NzMsMS4wMDA4OSwxLjAwMDA1LC45OTk2NywxLjAwMDQ4LC45OTk3MywxLjAwMDAyLDEuMDAwMzQsLjk5OTczLC45OTk3MywuOTk5NjQsMS4wMDAwNiwxLjAwMDY2LC45OTk0NywuOTk5NzMsLjk4ODk0LC45OTk3MywxLC40NDg5OCwxLC45OTk0NiwxLDEuMDAwMzksMS4wMDA4MiwuOTk5OTEsLjk5OTkxLC45OTk4NSwxLjAwMDIyLDEuMDAwMjMsMS4wMDA2MSwxLjAwMDA2LC45OTk2NiwuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDE5LDEuMDAwOCwxLC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk4MywxLjAwMDQ0LC45OTk3MywuOTk5NjQsLjk4MzMyLDEsLjk5OTczLDEsMSwuOTk5NjIsLjk5ODk1LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLDEuMDA0MjMsLjk5OTI1LC45OTk5OSwxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDQ5LDEsMS4wMDI0NSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDMxLC45OTk5OSwxLjAwMDAzLC45OTk5OSwuOTk5OTksMS40MTE0NCwxLjYsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQwNTc5LDEuNDA1NzksMS4zNjYyNSwuOTk5OTksMSwuOTk4NjEsLjk5ODYxLDEsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTUzMTcsLjk5OTk5LC45OTk5OSwuOTk5OTksLjk5OTk5LDEuNDA0ODMsMSwuOTk5NzcsMS4wMDA1NCwxLDEsLjk5OTUzLC45OTk2MiwxLjAwMDQyLC45OTk1LDEsMSwxLDEsMSwxLDEsMSwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx4cz17bGluZUhlaWdodDoxLjM1LGxpbmVHYXA6LjJ9LENzPVsuNzYxMTYsMSwxLDEuMDAwNiwxLjAwMDYsMS4wMDAwNiwuOTk5NzMsLjk5OTczLC45OTk4MiwxLjAwMDAxLDEuMDAwNDMsLjk5OTk4LC45OTk5OCwuOTk5NTksMS4wMDAwMywxLjAwMDYsLjk5OTk4LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLDEuMDAwMDMsMS4wMDAwMywxLjAwMDAzLC45OTk3MywuOTk5ODcsMS4wMDAwMSwxLjAwMDAxLC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwxLDEuMDAwMDEsLjk5OTczLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDAxLDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAwMSwxLjAwMDE2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk0OSwuOTk5NzMsLjk5OTk4LC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTkyNCwuOTk5MjQsMSwuOTk5MjQsLjk5OTk5LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDYsLjk5OTczLDEsLjk5OTc3LDEsMSwxLDEuMDAwMDUsMS4wMDA5LDEuMDAwMDUsMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwOSwuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTgsMS4wMDA2LC45OTk5OCwxLC45OTkzNiwuOTk5NzMsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDAzLDEuMDAwMjIsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk4MiwxLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDY0MDksMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsMSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMS4wNDU5NiwuOTk5NzcsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTI0LDEuMDAwNiwxLjAwMDYsMS4wMDAxOSwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wMjU3MiwuOTk5NzMsMS4wMDAwNSwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk5OSwuOTk5OCwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMSwxLjAwMDE2LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LC44NDUzMywxLjAwMDI2LDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwuOTk5MjQsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5MjgsMSwuOTk5NzcsMS4wMDAxMywxLjAwMDU1LC45OTk0NywuOTk5NDUsLjk5OTQxLC45OTkyNCwxLjAwMDAxLDEuMDAwMDEsMS4wMDA0LC45MTYyMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LDEuMDAwMDEsMS4wMDAwNSwuOTk5OTksLjk5OTc3LDEuMDAwMTUsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwuOTk5NDYsMSwxLjAwMDYsMS4wMDAwMSwuOTk5NzgsMS4wMDA0NSwuOTk5NzMsLjk5OTI0LDEuMDAwMjMsLjk5OTc4LC45OTk2NiwxLDEuMDAwNjUsMS4wMDA0NSwxLjAwMDE5LC45OTk3MywuOTk5NzMsLjk5OTI0LDEsMSwuOTY0OTksMSwxLjAwMDU1LC45OTk3MywxLjAwMDA4LDEuMDAwMjcsMSwuOTk5NywuOTk5OTUsMS4wMDAyMywuOTk5MzMsMS4wMDAxOSwxLjAwMDE1LDEuMDAwMzEsLjk5OTI0LDEuMDAwMjMsLjk5OTczLDEuMDAwMjMsMS4wMDAzMSwxLjAwMDAxLC45OTkyOCwxLjAwMDI5LDEuMDAwOTIsMS4wMDAzNSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMSwuOTk5ODgsLjk5OTc1LDEsMS4wMDA4MiwuOTk1NjEsLjk5OTYsMS4wMDAzNSwxLjAwMDAxLC45OTk2MiwxLjAwMDAxLDEuMDAwOTIsLjk5OTY0LDEuMDAwMDEsLjk5OTYzLC45OTk5OSwxLjAwMDM1LDEuMDAwMzUsMS4wMDA4MiwuOTk5NjIsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMzUsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NiwuOTk5NjcsMS4wMDAwMSwxLjAwMDM0LDEuMDAwNzQsMS4wMDA1NCwxLjAwMDUzLDEuMDAwNjMsLjk5OTcxLC45OTk2MiwxLjAwMDM1LC45OTk3NSwuOTk5NzcsLjk5OTczLDEuMDAwNDMsLjk5OTUzLDEuMDAwNywuOTk5MTUsLjk5OTczLDEuMDAwMDgsLjk5ODkyLDEuMDAwNzMsMS4wMDA3MywxLjAwMTE0LC45OTkxNSwxLjAwMDczLC45OTk1NSwuOTk5NzMsMS4wMDA5MiwuOTk5NzMsMSwuOTk5OTgsMSwxLjAwMDMsMSwxLjAwMDQzLDEuMDAwMDEsLjk5OTY5LDEuMDAwMywxLDEuMDAwMzUsMS4wMDAwMSwuOTk5NSwxLDEuMDAwOTIsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3LC45OTk1LDEsLjk5OTI0LDEuMDAwNiwuOTk5MjQsLjk5OTcyLDEuMDAwNjIsLjk5OTczLDEuMDAxMTQsMS4wMDA3MywxLC45OTk1NSwxLDEsMS4wMDA0NywuOTk5NjgsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAyNjcsLjk5OTk5LC45OTk5OCwuOTk5OTgsMSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMS4wMDAyMywuOTk5NzMsLjk5OTcxLC45OTkyNSwxLjAwMDIzLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEsMSwxLDEsMSwxLDEsLjk2MzI5LDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsLjgyNTQsMS4wMDAxNSwxLDEuMDAwMzUsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLElzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxGcz1bMzY1LDAsMzMzLDI3OCwzMzMsNDc0LDU1Niw1NTYsODg5LDcyMiwyMzgsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMzMzLDMzMyw1ODQsNTg0LDU4NCw2MTEsOTc1LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDU1Niw3MjIsNjExLDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMzMzLDI3OCwzMzMsNTg0LDU1NiwzMzMsNTU2LDYxMSw1NTYsNjExLDU1NiwzMzMsNjExLDYxMSwyNzgsMjc4LDU1NiwyNzgsODg5LDYxMSw2MTEsNjExLDYxMSwzODksNTU2LDMzMyw2MTEsNTU2LDc3OCw1NTYsNTU2LDUwMCwzODksMjgwLDM4OSw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyODAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1NTYsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNzIyLDcyMiw3MjIsNzIyLDcyMiw3MjIsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDU0OSw2MTEsNjExLDYxMSw2MTEsNjExLDU1Niw2MTEsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDcxOSw3MjIsNjExLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDcyMiw2MTEsNzIyLDYxMSwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsNzg1LDU1Niw1NTYsMjc4LDcyMiw1NTYsNTU2LDYxMSwyNzgsNjExLDI3OCw2MTEsMzg1LDYxMSw0NzksNjExLDI3OCw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MDgsNzIzLDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSwxZTMsOTQ0LDcyMiwzODksNzIyLDM4OSw3MjIsMzg5LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjExLDMzMyw2MTEsNDc5LDYxMSwzMzMsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsOTQ0LDc3OCw2NjcsNTU2LDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyNzgsNTU2LDcyMiw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1NTYsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNDY1LDcyMiwzMzMsODUzLDkwNiw0NzQsODI1LDkyNyw4MzgsMjc4LDcyMiw3MjIsNjAxLDcxOSw2NjcsNjExLDcyMiw3NzgsMjc4LDcyMiw2NjcsODMzLDcyMiw2NDQsNzc4LDcyMiw2NjcsNjAwLDYxMSw2NjcsODIxLDY2Nyw4MDksODAyLDI3OCw2NjcsNjE1LDQ1MSw2MTEsMjc4LDU4Miw2MTUsNjEwLDU1Niw2MDYsNDc1LDQ2MCw2MTEsNTQxLDI3OCw1NTgsNTU2LDYxMiw1NTYsNDQ1LDYxMSw3NjYsNjE5LDUyMCw2ODQsNDQ2LDU4Miw3MTUsNTc2LDc1Myw4NDUsMjc4LDU4Miw2MTEsNTgyLDg0NSw2NjcsNjY5LDg4NSw1NjcsNzExLDY2NywyNzgsMjc2LDU1NiwxMDk0LDEwNjIsODc1LDYxMCw3MjIsNjIyLDcxOSw3MjIsNzE5LDcyMiw1NjcsNzEyLDY2Nyw5MDQsNjI2LDcxOSw3MTksNjEwLDcwMiw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjIyLDg1NCw2NjcsNzMwLDcwMywxMDA1LDEwMTksODcwLDk3OSw3MTksNzExLDEwMzEsNzE5LDU1Niw2MTgsNjE1LDQxNyw2MzUsNTU2LDcwOSw0OTcsNjE1LDYxNSw1MDAsNjM1LDc0MCw2MDQsNjExLDYwNCw2MTEsNTU2LDQ5MCw1NTYsODc1LDU1Niw2MTUsNTgxLDgzMyw4NDQsNzI5LDg1NCw2MTUsNTUyLDg1NCw1ODMsNTU2LDU1Niw2MTEsNDE3LDU1Miw1NTYsMjc4LDI4MSwyNzgsOTY5LDkwNiw2MTEsNTAwLDYxNSw1NTYsNjA0LDc3OCw2MTEsNDg3LDQ0Nyw5NDQsNzc4LDk0NCw3NzgsOTQ0LDc3OCw2NjcsNTU2LDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDI3OCwyNzgsMjc4LDI3OCw1MDAsNTAwLDUwMCw1NTYsNTU2LDM1MCwxZTMsMWUzLDI0MCw0NzksMzMzLDMzMyw2MDQsMzMzLDE2NywzOTYsNTU2LDU1NiwxMDk0LDU1Niw4ODUsNDg5LDExMTUsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcyMiwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw2MTEsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzXSxUcz1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sUnM9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3NDAsNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4Miw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM5Niw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw3MjIsMzMzLDg1NCw5MDYsNDczLDg0NCw5MzAsODQ3LDI3OCw3MjIsNzIyLDYxMCw2NzEsNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjU3LDc3OCw3MTgsNjY3LDU5MCw2MTEsNjY3LDgyMiw2NjcsODI5LDc4MSwyNzgsNjY3LDYyMCw0NzksNjExLDI3OCw1OTEsNjIwLDYyMSw1NTYsNjEwLDQ3OSw0OTIsNjExLDU1OCwyNzgsNTY2LDU1Niw2MDMsNTU2LDQ1MCw2MTEsNzEyLDYwNSw1MzIsNjY0LDQwOSw1OTEsNzA0LDU3OCw3NzMsODM0LDI3OCw1OTEsNjExLDU5MSw4MzQsNjY3LDY2Nyw4ODYsNjE0LDcxOSw2NjcsMjc4LDI3OCw1NTYsMTA5NCwxMDQyLDg1NCw2MjIsNzE5LDY3Nyw3MTksNzIyLDcwOCw3MjIsNjE0LDcyMiw2NjcsOTI3LDY0Myw3MTksNzE5LDYxNSw2ODcsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDY3Nyw3ODEsNjY3LDcyOSw3MDgsOTc5LDk4OSw4NTQsMWUzLDcwOCw3MTksMTA0Miw3MjksNTU2LDYxOSw2MDQsNTM0LDYxOCw1NTYsNzM2LDUxMCw2MTEsNjExLDUwNyw2MjIsNzQwLDYwNCw2MTEsNjExLDYxMSw1NTYsODg5LDU1Niw4ODUsNTU2LDY0Niw1ODMsODg5LDkzNSw3MDcsODU0LDU5NCw1NTIsODY1LDU4OSw1NTYsNTU2LDYxMSw0NjksNTYzLDU1NiwyNzgsMjc4LDI3OCw5NjksOTA2LDYxMSw1MDcsNjE5LDU1Niw2MTEsNzc4LDYxMSw1NzUsNDY3LDk0NCw3NzgsOTQ0LDc3OCw5NDQsNzc4LDY2Nyw1NTYsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjc4LDI3OCwyNzgsMjc4LDUwMCw1MDAsNTAwLDU1Niw1NTYsMzUwLDFlMywxZTMsMjQwLDQ3OSwzMzMsMzMzLDYwNCwzMzMsMTY3LDM5Niw1NTYsNTU2LDExMDQsNTU2LDg4NSw1MTYsMTE0NiwxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsOTk5LDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzIyLDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDYxMSw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzNdLE9zPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxIcz1bMzY1LDAsMzMzLDI3OCwyNzgsMzU1LDU1Niw1NTYsODg5LDY2NywxOTEsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCw1ODQsNTg0LDU4NCw1NTYsMTAxNSw2NjcsNjY3LDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1MDAsNjY3LDU1Niw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDI3OCwyNzgsMjc4LDQ2OSw1NTYsMzMzLDU1Niw1NTYsNTAwLDU1Niw1NTYsMjc4LDU1Niw1NTYsMjIyLDIyMiw1MDAsMjIyLDgzMyw1NTYsNTU2LDU1Niw1NTYsMzMzLDUwMCwyNzgsNTU2LDUwMCw3MjIsNTAwLDUwMCw1MDAsMzM0LDI2MCwzMzQsNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjYwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTM3LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDY2Nyw2NjcsNjY3LDY2Nyw2NjcsNjY3LDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDUwMCw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NDksNjExLDU1Niw1NTYsNTU2LDU1Niw1MDAsNTU2LDUwMCw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw2MjUsNzIyLDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3MjIsNTU2LDcyMiw1NTYsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDIyMiwyNzgsMjc4LDczMyw0NDQsNTAwLDIyMiw2NjcsNTAwLDUwMCw1NTYsMjIyLDU1NiwyMjIsNTU2LDI4MSw1NTYsNDAwLDU1NiwyMjIsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNjE1LDcyMyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsMWUzLDk0NCw3MjIsMzMzLDcyMiwzMzMsNzIyLDMzMyw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDYxMSwyNzgsNjExLDM1NCw2MTEsMjc4LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDk0NCw3MjIsNjY3LDUwMCw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjIyLDU1Niw2NjcsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTAwLDYxMSwyNzgsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw2NjcsMjc4LDc4OSw4NDYsMzg5LDc5NCw4NjUsNzc1LDIyMiw2NjcsNjY3LDU3MCw2NzEsNjY3LDYxMSw3MjIsNzc4LDI3OCw2NjcsNjY3LDgzMyw3MjIsNjQ4LDc3OCw3MjUsNjY3LDYwMCw2MTEsNjY3LDgzNyw2NjcsODMxLDc2MSwyNzgsNjY3LDU3MCw0MzksNTU1LDIyMiw1NTAsNTcwLDU3MSw1MDAsNTU2LDQzOSw0NjMsNTU1LDU0MiwyMjIsNTAwLDQ5Miw1NDgsNTAwLDQ0Nyw1NTYsNjcwLDU3Myw0ODYsNjAzLDM3NCw1NTAsNjUyLDU0Niw3MjgsNzc5LDIyMiw1NTAsNTU2LDU1MCw3NzksNjY3LDY2Nyw4NDMsNTQ0LDcwOCw2NjcsMjc4LDI3OCw1MDAsMTA2Niw5ODIsODQ0LDU4OSw3MTUsNjM5LDcyNCw2NjcsNjUxLDY2Nyw1NDQsNzA0LDY2Nyw5MTcsNjE0LDcxNSw3MTUsNTg5LDY4Niw4MzMsNzIyLDc3OCw3MjUsNjY3LDcyMiw2MTEsNjM5LDc5NSw2NjcsNzI3LDY3Myw5MjAsOTIzLDgwNSw4ODYsNjUxLDY5NCwxMDIyLDY4Miw1NTYsNTYyLDUyMiw0OTMsNTUzLDU1Niw2ODgsNDY1LDU1Niw1NTYsNDcyLDU2NCw2ODYsNTUwLDU1Niw1NTYsNTU2LDUwMCw4MzMsNTAwLDgzNSw1MDAsNTcyLDUxOCw4MzAsODUxLDYyMSw3MzYsNTI2LDQ5Miw3NTIsNTM0LDU1Niw1NTYsNTU2LDM3OCw0OTYsNTAwLDIyMiwyMjIsMjIyLDkxMCw4MjgsNTU2LDQ3Miw1NjUsNTAwLDU1Niw3NzgsNTU2LDQ5MiwzMzksOTQ0LDcyMiw5NDQsNzIyLDk0NCw3MjIsNjY3LDUwMCwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyMjIsMjIyLDIyMiwyMjIsMzMzLDMzMywzMzMsNTU2LDU1NiwzNTAsMWUzLDFlMywxODgsMzU0LDMzMywzMzMsNTAwLDMzMywxNjcsMzY1LDU1Niw1NTYsMTA5NCw1NTYsODg1LDMyMywxMDgzLDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDk5OCw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MTksMjc0LDU0OSw1NDksNTg0LDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNTAwLDUwMCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMjk0LDI5NCwzMjQsMzI0LDMxNiwzMjgsMzk4LDI4NV0sQnM9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLERzPVszNjUsMCwzMzMsMjc4LDI3OCwzNTUsNTU2LDU1Niw4ODksNjY3LDE5MSwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDU4NCw1ODQsNTg0LDU1NiwxMDE1LDY2Nyw2NjcsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDUwMCw2NjcsNTU2LDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMjc4LDI3OCwyNzgsNDY5LDU1NiwzMzMsNTU2LDU1Niw1MDAsNTU2LDU1NiwyNzgsNTU2LDU1NiwyMjIsMjIyLDUwMCwyMjIsODMzLDU1Niw1NTYsNTU2LDU1NiwzMzMsNTAwLDI3OCw1NTYsNTAwLDcyMiw1MDAsNTAwLDUwMCwzMzQsMjYwLDMzNCw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyNjAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1MzcsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNjY3LDY2Nyw2NjcsNjY3LDY2Nyw2NjcsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTAwLDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU0OSw2MTEsNTU2LDU1Niw1NTYsNTU2LDUwMCw1NTYsNTAwLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDYxNSw3MjIsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDcyMiw1NTYsNzIyLDU1NiwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjIyLDI3OCwyNzgsNzM1LDQ0NCw1MDAsMjIyLDY2Nyw1MDAsNTAwLDU1NiwyMjIsNTU2LDIyMiw1NTYsMjkyLDU1NiwzMzQsNTU2LDIyMiw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw2MDQsNzIzLDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1NiwxZTMsOTQ0LDcyMiwzMzMsNzIyLDMzMyw3MjIsMzMzLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjExLDI3OCw2MTEsMzc1LDYxMSwyNzgsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsOTQ0LDcyMiw2NjcsNTAwLDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyMjIsNTU2LDY2Nyw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1MDAsNjExLDI3OCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDY2NywyNzgsNzg0LDgzOCwzODQsNzc0LDg1NSw3NTIsMjIyLDY2Nyw2NjcsNTUxLDY2OCw2NjcsNjExLDcyMiw3NzgsMjc4LDY2Nyw2NjgsODMzLDcyMiw2NTAsNzc4LDcyMiw2NjcsNjE4LDYxMSw2NjcsNzk4LDY2Nyw4MzUsNzQ4LDI3OCw2NjcsNTc4LDQ0Niw1NTYsMjIyLDU0Nyw1NzgsNTc1LDUwMCw1NTcsNDQ2LDQ0MSw1NTYsNTU2LDIyMiw1MDAsNTAwLDU3Niw1MDAsNDQ4LDU1Niw2OTAsNTY5LDQ4Miw2MTcsMzk1LDU0Nyw2NDgsNTI1LDcxMyw3ODEsMjIyLDU0Nyw1NTYsNTQ3LDc4MSw2NjcsNjY3LDg2NSw1NDIsNzE5LDY2NywyNzgsMjc4LDUwMCwxMDU3LDEwMTAsODU0LDU4Myw3MjIsNjM1LDcxOSw2NjcsNjU2LDY2Nyw1NDIsNjc3LDY2Nyw5MjMsNjA0LDcxOSw3MTksNTgzLDY1Niw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjM1LDc2MCw2NjcsNzQwLDY2Nyw5MTcsOTM4LDc5Miw4ODUsNjU2LDcxOSwxMDEwLDcyMiw1NTYsNTczLDUzMSwzNjUsNTgzLDU1Niw2NjksNDU4LDU1OSw1NTksNDM4LDU4Myw2ODgsNTUyLDU1Niw1NDIsNTU2LDUwMCw0NTgsNTAwLDgyMyw1MDAsNTczLDUyMSw4MDIsODIzLDYyNSw3MTksNTIxLDUxMCw3NTAsNTQyLDU1Niw1NTYsNTU2LDM2NSw1MTAsNTAwLDIyMiwyNzgsMjIyLDkwNiw4MTIsNTU2LDQzOCw1NTksNTAwLDU1Miw3NzgsNTU2LDQ4OSw0MTEsOTQ0LDcyMiw5NDQsNzIyLDk0NCw3MjIsNjY3LDUwMCwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyMjIsMjIyLDIyMiwyMjIsMzMzLDMzMywzMzMsNTU2LDU1NiwzNTAsMWUzLDFlMywxODgsMzU0LDMzMywzMzMsNTAwLDMzMywxNjcsMzY1LDU1Niw1NTYsMTA5NCw1NTYsODg1LDMyMywxMDczLDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MTksMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNTAwLDUwMCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMjk0LDI5NCwzMjQsMzI0LDMxNiwzMjgsMzk4LDI4NV0sTXM9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLE5zPVsxLjM2ODk4LDEsMSwuNzI3MDYsLjgwNDc5LC44MzczNCwuOTg4OTQsLjk5NzkzLC45ODk3LC45Mzg4NCwuODYyMDksLjk0MjkyLC45NDI5MiwxLjE2NjYxLDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xOTEzNywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzI4NTEsLjc4OTY2LC45MDgzOCwuODM2MzcsLjgyMzkxLC45NjM3NiwuODAwNjEsLjg2Mjc1LC44NzY4LC45NTQwNywxLjAyNTgsLjczOTAxLC44NTAyMiwuODM2NTUsMS4wMTU2LC45NTU0NiwuOTIxNzksLjg3MTA3LC45MjE3OSwuODIxMTQsLjgwOTYsLjg5NzEzLC45NDQzOCwuOTUzNTMsLjk0MDgzLC45MTkwNSwuOTA0MDYsLjk0NDYsLjk0MjkyLDEuMTg3NzcsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLC45MDA4OCwuOTQ5MzgsLjk3ODk4LC44MTA5MywuOTc1NzEsLjk0OTM4LDEuMDI0LC45NTc3LC45NTkzMywuOTg2MjEsMS4wNDc0LC45NzQ1NSwuOTg5ODEsLjk2NzIsLjk1OTMzLC45NDQ2LC45Nzg5OCwuOTc0MDcsLjk3NjQ2LC43ODAzNiwxLjEwMjA4LC45NTQ0MiwuOTUyOTgsLjk3NTc5LC45MzMyLC45NDAzOSwuOTM4LC44MDY4NywxLjAxMTQ5LC44MDY4NywxLjAyMDU4LC44MDQ3OSwuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsMS4wMTE0OSwxLjAwODcyLC45MDA4OCwuOTE4ODIsMS4wMjEzLC44MzYxLDEuMDIwNTgsLjYyMjk1LC41NDMyNCwuODkwMjIsMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk3NDU1LC45MzU4MiwuOTAwODgsMSwxLjA1Njg2LC44MzYxLC45OTY0MiwuOTk2NDIsLjk5NjQyLC43Mjg1MSwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuODY4LC44MjM5MSwuODAwNjEsLjgwMDYxLC44MDA2MSwuODAwNjEsMS4wMjU4LDEuMDI1OCwxLjAyNTgsMS4wMjU4LC45NzQ4NCwuOTU1NDYsLjkyMTc5LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwxLjAyMDU4LC45MjE3OSwuOTQ0MzgsLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjkwNDA2LC44Njk1OCwuOTgyMjUsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjkwMzEsLjgxMDkzLC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjkzOTY5LC45NTkzMywuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwxLjA4NTk1LC45NDQ2LC45NTQ0MiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTQwMzksLjk3ODk4LC45NDAzOSwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjkwODM4LC45NDkzOCwuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC45NjM3NiwuODQzMTMsLjk3NDg0LC45NzU3MSwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsMSwxLC45NTQwNywuOTU5MzMsLjk3MDY5LC45NTkzMywxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsLjg4NywxLjAxNTkxLC43MzkwMSwxLjA0NzQsMSwxLC45NzQ1NSwuODM2NTUsLjk4OTgxLDEsMSwuODM2NTUsLjczOTc3LC44MzY1NSwuNzM5MDMsLjg0NjM4LDEuMDMzLC45NTU0NiwuOTU5MzMsMSwxLC45NTU0NiwuOTU5MzMsLjgyNzEsLjk1NDE3LC45NTkzMywuOTIxNzksLjk0NDYsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTM2LC45MTk2NCwuODIxMTQsLjk3NjQ2LDEsMSwuODIxMTQsLjk3NjQ2LC44MDk2LC43ODAzNiwuODA5NiwuNzgwMzYsMSwxLC44MDk2LC43ODAzNiwxLDEsLjg5NzEzLC43NzQ1MiwuODk3MTMsMS4xMDIwOCwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjkwNDA2LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwuOTQ0NiwuOTM4LDEsLjk5NzkzLC45MDgzOCwuOTQ5MzgsLjg2OCwuOTAzMSwuOTIxNzksLjk0NDYsMSwxLC44OTcxMywxLjEwMjA4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDk4OSwuOTM1OCwuOTE5NDUsLjgzMTgxLC43NTI2MSwuODc5OTIsLjgyOTc2LC45NjAzNCwuODM2ODksLjk3MjY4LDEuMDA3OCwuOTA4MzgsLjgzNjM3LC44MDE5LC45MDE1NywuODAwNjEsLjk0NDYsLjk1NDA3LC45MjQzNiwxLjAyNTgsLjg1MDIyLC45NzE1MywxLjAxNTYsLjk1NTQ2LC44OTE5MiwuOTIxNzksLjkyMzYxLC44NzEwNywuOTYzMTgsLjg5NzEzLC45MzcwNCwuOTU2MzgsLjkxOTA1LC45MTcwOSwuOTI3OTYsMS4wMjU4LC45MzcwNCwuOTQ4MzYsMS4wMzczLC45NTkzMywxLjAwNzgsLjk1ODcxLC45NDgzNiwuOTYxNzQsLjkyNjAxLC45NDk4LC45ODYwNywuOTU3NzYsLjk1OTMzLDEuMDU0NTMsMS4wMDc4LC45ODI3NSwuOTMxNCwuOTU2MTcsLjkxNzAxLDEuMDU5OTMsLjk0NDYsLjc4MzY3LC45NTUzLDEsLjg2ODMyLDEuMDEyOCwuOTU4NzEsLjk5Mzk0LC44NzU0OCwuOTYzNjEsLjg2Nzc0LDEuMDA3OCwuOTU4NzEsLjk0NDYsLjk1ODcxLC44Njc3NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjk2Njk0LDEsLjg5OTAzLDEsMSwxLC45MzU4MiwuOTM1ODIsLjkzNTgyLDEsLjkwOCwuOTA4LC45MTgsLjk0MjE5LC45NDIxOSwuOTY1NDQsMSwxLjI4NSwxLDEsLjgxMDc5LC44MTA3OSwxLDEsLjc0ODU0LDEsMSwxLDEsLjk5NzkzLDEsMSwxLC42NSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTcxNzMsMSwuODA1MzUsLjc2MTY5LDEuMDIwNTgsMS4wNzMyLDEuMDU0ODYsMSwxLDEuMzA2OTIsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNjE2MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxFcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sX3M9WzEuMzY4OTgsMSwxLC42NjIyNywuODA3NzksLjgxNjI1LC45NzI3NiwuOTcyNzYsLjk3NzMzLC45MjIyMiwuODMyNjYsLjk0MjkyLC45NDI5MiwxLjE2MTQ4LDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xNzMzNywuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzE1NDEsLjc2ODEzLC44NTU3NiwuODA1OTEsLjgwNzI5LC45NDI5OSwuNzc1MTIsLjgzNjU1LC44NjUyMywuOTIyMjIsLjk4NjIxLC43MTc0MywuODE2OTgsLjc5NzI2LC45ODU1OCwuOTIyMjIsLjkwNjM3LC44MzgwOSwuOTA2MzcsLjgwNzI5LC43NjQ2MywuODYyNzUsLjkwNjk5LC45MTYwNSwuOTE1NCwuODUzMDgsLjg1NDU4LC45MDUzMSwuOTQyOTIsMS4yMTI5NiwuOTQyOTIsMS4wMjA1OCwuODk5MDMsMS4xODYxNiwuOTk2MTMsLjkxNjc3LC43ODIxNiwuOTE2NzcsLjkwMDgzLC45ODc5NiwuOTEzNSwuOTIxNjgsLjk1MzgxLC45ODk4MSwuOTUyOTgsLjk1MzgxLC45MzQ1OSwuOTIxNjgsLjkxNTEzLC45MjAwNCwuOTE2NzcsLjk1MDc3LC43NDgsMS4wNDUwMiwuOTE2NzcsLjkyMDYxLC45NDIzNiwuODk1NDQsLjg5MzY0LC45LC44MDY4NywuODU3OCwuODA2ODcsMS4wMjA1OCwuODA3NzksLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC44NTc4LC45OTk3MywxLjE4NjE2LC45MTMzOSwxLjA4MDc0LC44Mjg5MSwxLjAyMDU4LC41NTUwOSwuNzE1MjYsLjg5MDIyLDEuMDg1OTUsMSwxLDEuMTg2MTYsMSwuOTY3MzYsLjkzNTgyLDEuMTg2MTYsMSwxLjA0ODY0LC44MjcxMSwuOTkwNDMsLjk5MDQzLC45OTA0MywuNzE1NDEsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg0NSwuODA3MjksLjc3NTEyLC43NzUxMiwuNzc1MTIsLjc3NTEyLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTU5NjEsLjkyMjIyLC45MDYzNywuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsMS4wMjA1OCwuOTAyNTEsLjkwNjk5LC45MDY5OSwuOTA2OTksLjkwNjk5LC44NTQ1OCwuODM2NTksLjk0OTUxLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC44NTgxMSwuNzgyMTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC45NTM4MSwuOTUzODEsLjk1MzgxLC45NTM4MSwuOTEzNSwuOTIxNjgsLjkxNTEzLC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywxLjA4NTk1LC45MTY3NywuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjg5MzY0LC45MjMzMiwuODkzNjQsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44NTU3NiwuOTk2MTMsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuOTQyOTksLjc2NzgzLC45NTk2MSwuOTE2NzcsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC44NjUyMywuOTEzNSwuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LDEsMSwuOTIyMjIsLjkyMTY4LC45MjIyMiwuOTIxNjgsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC44NjAzNiwuOTcwOTYsLjcxNzQzLC45ODk4MSwxLDEsLjk1Mjk4LC43OTcyNiwuOTUzODEsMSwxLC43OTcyNiwuNjg5NCwuNzk3MjYsLjc0MzIxLC44MTY5MSwxLjAwMDYsLjkyMjIyLC45MjE2OCwxLDEsLjkyMjIyLC45MjE2OCwuNzk0NjQsLjkyMDk4LC45MjE2OCwuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwNjM3LC45MTUxMywuOTA5LC44NzUxNCwuODA3MjksLjk1MDc3LDEsMSwuODA3MjksLjk1MDc3LC43NjQ2MywuNzQ4LC43NjQ2MywuNzQ4LDEsMSwuNzY0NjMsLjc0OCwxLDEsLjg2Mjc1LC43MjY1MSwuODYyNzUsMS4wNDUwMiwuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuODU0NTgsLjkwNTMxLC45LC45MDUzMSwuOSwuOTA1MzEsLjksMSwuOTcyNzYsLjg1NTc2LC45OTYxMywuODQ1LC44NTgxMSwuOTAyNTEsLjkxNjc3LDEsMSwuODYyNzUsMS4wNDUwMiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjAwODk5LDEuMzA2MjgsLjg1NTc2LC44MDE3OCwuNjY4NjIsLjc5MjcsLjY5MzIzLC44ODEyNywuNzI0NTksLjg5NzExLC45NTM4MSwuODU1NzYsLjgwNTkxLC43ODA1LC45NDcyOSwuNzc1MTIsLjkwNTMxLC45MjIyMiwuOTA2MzcsLjk4NjIxLC44MTY5OCwuOTI2NTUsLjk4NTU4LC45MjIyMiwuODUzNTksLjkwNjM3LC45MDk3NiwuODM4MDksLjk0NTIzLC44NjI3NSwuODM1MDksLjkzMTU3LC44NTMwOCwuODMzOTIsLjkyMzQ2LC45ODYyMSwuODM1MDksLjkyODg2LC45MTMyNCwuOTIxNjgsLjk1MzgxLC45MDY0NiwuOTI4ODYsLjkwNTU3LC44Njg0NywuOTAyNzYsLjkxMzI0LC44Njg0MiwuOTIxNjgsLjk5NTMxLC45NTM4MSwuOTIyNCwuODU0MDgsLjkyNjk5LC44Njg0NywxLjAwNTEsLjkxNTEzLC44MDQ4NywuOTM0ODEsMSwuODgxNTksMS4wNTIxNCwuOTA2NDYsLjk3MzU1LC44MTUzOSwuODkzOTgsLjg1OTIzLC45NTM4MSwuOTA2NDYsLjkxNTEzLC45MDY0NiwuODU5MjMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTE1NCwuOTQyMzYsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuODU0NTgsLjg5MzY0LC45NjY5NCwxLC44OTkwMywxLDEsMSwuOTE3ODIsLjkxNzgyLC45MTc4MiwxLC44OTYsLjg5NiwuODk2LC45MzMyLC45MzMyLC45NTk3MywxLDEuMjYsMSwxLC44MDQ3OSwuODAxNzgsMSwxLC44NTYzMywxLDEsMSwxLC45NzI3NiwxLDEsMSwuNjk4LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNDU0MiwxLC43OTE5OSwuNzg2OTQsMS4wMjA1OCwxLjAzNDkzLDEuMDU0ODYsMSwxLDEuMjMwMjYsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4yMDAwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx6cz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sTHM9WzEuMzY4OTgsMSwxLC42NTUwNywuODQ5NDMsLjg1NjM5LC44ODQ2NSwuODg0NjUsLjg2OTM2LC44ODMwNywuODY5NDgsLjg1MjgzLC44NTI4MywxLjA2MzgzLDEuMDIwNTgsLjc1OTQ1LC45MjE5LC43NTk0NSwxLjE3MzM3LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuNzU5NDUsLjc1OTQ1LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC42OTA0NiwuNzA5MjYsLjg1MTU4LC43NzgxMiwuNzY4NTIsLjg5NTkxLC43MDQ2NiwuNzYxMjUsLjgwMDk0LC44NjgyMiwuODM4NjQsLjcyOCwuNzcyMTIsLjc5NDc1LC45MzYzNywuODc1MTQsLjg1ODgsLjc2MDEzLC44NTg4LC43MjQyMSwuNjk4NjYsLjc3NTk4LC44NTk5MSwuODA4MTEsLjg3ODMyLC43ODExMiwuNzc1MTIsLjg1NjIsMS4wMjIyLDEuMTg0MTcsMS4wMjIyLDEuMjcwMTQsLjg5OTAzLDEuMTUwMTIsLjkzODU5LC45NDM5OSwuODQ2LC45NDM5OSwuODE0NTMsMS4wMTg2LC45NDIxOSwuOTYwMTcsMS4wMzA3NSwxLjAyMTc1LC45MTIsMS4wMzA3NSwuOTY5OTgsLjk2MDE3LC45Mzg1OSwuOTQzOTksLjk0Mzk5LC45NTQ5MywuNzQ2LDEuMTI2NTgsLjk0NTc4LC45MSwuOTc5LC44ODIsLjg4MiwuODMsLjg1MDM0LC44MzUzNywuODUwMzQsMS4wMjA1OCwuNzA4NjksLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44MzUzNywuOTAwODMsMS4xNTAxMiwuOTE2MSwuOTQ1NjUsLjczNTQxLDEuMDIwNTgsLjUzNjA5LC42OTM1MywuNzk1MTksMS4wODU5NSwxLDEsMS4xNTAxMiwxLC45MTk3NCwuNzU5NDUsMS4xNTAxMiwxLC45NDQ2LC43MzM2MSwuOTAwNSwuOTAwNSwuOTAwNSwuNjI4NjQsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjc3MywuNzY4NTIsLjcwNDY2LC43MDQ2NiwuNzA0NjYsLjcwNDY2LC44Mzg2NCwuODM4NjQsLjgzODY0LC44Mzg2NCwuOTA1NjEsLjg3NTE0LC44NTg4LC44NTg4LC44NTg4LC44NTg4LC44NTg4LDEuMDIwNTgsLjg1NzUxLC44NTk5MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuNzc1MTIsLjc2MDEzLC44ODA3NSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuODA3NSwuODQ2LC44MTQ1MywuODE0NTMsLjgxNDUzLC44MTQ1MywuODI0MjQsLjgyNDI0LC44MjQyNCwuODI0MjQsLjkyNzgsLjk2MDE3LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksMS4wODU5NSwuODU2MiwuOTQ1NzgsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjg4MiwuOTQ1NzgsLjg4MiwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjg1MTU4LC45Mzg1OSwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuODk1OTEsLjg1NDQsLjkwNTYxLC45NDM5OSwuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LC44MDA5NCwuOTQyMTksMSwxLC44NjgyMiwuOTYwMTcsLjg2ODIyLC45NjAxNywuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LC44MjQyNCwuODM4NjQsMS4wMzA3NSwuODM4NjQsLjgyNDI0LC44MTQwMiwxLjAyNzM4LC43MjgsMS4wMjE3NSwxLDEsLjkxMiwuNzk0NzUsMS4wMzA3NSwxLDEsLjc5NDc1LC44MzkxMSwuNzk0NzUsLjY2MjY2LC44MDU1MywxLjA2Njc2LC44NzUxNCwuOTYwMTcsMSwxLC44NzUxNCwuOTYwMTcsLjg2ODY1LC44NzM5NiwuOTYwMTcsLjg1ODgsLjkzODU5LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg2NywuODQ3NTksLjcyNDIxLC45NTQ5MywxLDEsLjcyNDIxLC45NTQ5MywuNjk4NjYsLjc0NiwuNjk4NjYsLjc0NiwxLDEsLjY5ODY2LC43NDYsMSwxLC43NzU5OCwuODg0MTcsLjc3NTk4LDEuMTI2NTgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjc3NTEyLC44NTYyLC44MywuODU2MiwuODMsLjg1NjIsLjgzLDEsLjg4NDY1LC44NTE1OCwuOTM4NTksLjc3MywuODA3NSwuODU3NTEsLjg1NjIsMSwxLC43NzU5OCwxLjEyNjU4LDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MzEzLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMDgxMDYsMS4wMzkwMSwuODUxNTgsLjc3MDI1LC42MjI2NCwuNzY0NiwuNjUzNTEsLjg2MDI2LC42OTQ2MSwuODk5NDcsMS4wMzA3NSwuODUxNTgsLjc3ODEyLC43NjQ0OSwuODg4MzYsLjcwNDY2LC44NTYyLC44NjgyMiwuODU4OCwuODM4NjQsLjc3MjEyLC44NTMwOCwuOTM2MzcsLjg3NTE0LC44MjM1MiwuODU4OCwuODU3MDEsLjc2MDEzLC44OTA1OCwuNzc1OTgsLjgxNTYsLjgyNTY1LC43ODExMiwuNzc4OTksLjg5Mzg2LC44Mzg2NCwuODE1NiwuOTQ4NiwuOTIzODgsLjk2MTg2LDEuMDMwNzUsLjkxMTIzLC45NDg2LC45MzI5OCwuODc4LC45Mzk0MiwuOTIzODgsLjg0NTk2LC45NjE4NiwuOTUxMTksMS4wMzA3NSwuOTIyLC44ODc4NywuOTU4MjksLjg4LC45MzU1OSwuOTM4NTksLjc4ODE1LC45Mzc1OCwxLC44OTIxNywxLjAzNzM3LC45MTEyMywuOTM5NjksLjc3NDg3LC44NTc2OSwuODY3OTksMS4wMzA3NSwuOTExMjMsLjkzODU5LC45MTEyMywuODY3OTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc4MzIsLjk3OSwuODc4MzIsLjk3OSwuODc4MzIsLjk3OSwuNzc1MTIsLjg4MiwuOTIxOSwxLC44OTkwMywxLDEsMSwuODczMjEsLjg3MzIxLC44NzMyMSwxLDEuMDI3LDEuMDI3LDEuMDI3LC44Njg0NywuODY4NDcsLjc5MTIxLDEsMS4xMjQsMSwxLC43MzU3MiwuNzM1NzIsMSwxLC44NTAzNCwxLDEsMSwxLC44ODQ2NSwxLDEsMSwuNjY5LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNDgyOCwxLC43NDk0OCwuNzUxODcsMS4wMjA1OCwuOTgzOTEsMS4wMjExOSwxLDEsMS4wNjIzMywxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1MjMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFVzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxXcz1bMS4zNjg5OCwxLDEsLjc2MzA1LC44Mjc4NCwuOTQ5MzUsLjg5MzY0LC45MjI0MSwuODkwNzMsLjkwNzA2LC45ODQ3MiwuODUyODMsLjg1MjgzLDEuMDY2NCwxLjAyMDU4LC43NDUwNSwuOTIxOSwuNzQ1MDUsMS4yMzQ1NiwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjc0NTA1LC43NDUwNSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzMwMDIsLjcyNjAxLC45MTc1NSwuODEyNiwuODAzMTQsLjkyMjIyLC43Mzc2NCwuNzk3MjYsLjgzMDUxLC45MDI4NCwuODYwMjMsLjc0LC44MTI2LC44NDg2OSwuOTY1MTgsLjkxMTE1LC44ODU4LC43OTc2MSwuODg1OCwuNzQ0OTgsLjczOTE0LC44MTM2MywuODk1OTEsLjgzNjU5LC44OTYzMywuODU2MDgsLjgxMTEsLjkwNTMxLDEuMDIyMiwxLjIyNzM2LDEuMDIyMiwxLjI3MDE0LC44OTkwMywuOTAwODgsLjg2NjY3LDEuMDIzMSwuODk2LDEuMDE0MTEsLjkwMDgzLDEuMDUwOTksMS4wMDUxMiwuOTk3OTMsMS4wNTMyNiwxLjA5Mzc3LC45MzgsMS4wNjIyNiwxLjAwMTE5LC45OTc5MywuOTg3MTQsMS4wMjMxLDEuMDEyMzEsLjk4MTk2LC43OTIsMS4xOTEzNywuOTkwNzQsLjk2MiwxLjAxOTE1LC45MjYsLjk0MiwuODU2LC44NTAzNCwuOTIwMDYsLjg1MDM0LDEuMDIwNTgsLjY5MDY3LC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIwMDYsLjkzMzIsLjkwMDg4LC45MTg4MiwuOTM0ODQsLjc1MzM5LDEuMDIwNTgsLjU2ODY2LC41NDMyNCwuNzk1MTksMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk1MzI1LC43NDUwNSwuOTAwODgsMSwuOTcxOTgsLjc1MzM5LC45MTAwOSwuOTEwMDksLjkxMDA5LC42NjQ2NiwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuNzg4LC44MDMxNCwuNzM3NjQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjg2MDIzLC44NjAyMywuODYwMjMsLjg2MDIzLC45MjkxNSwuOTExMTUsLjg4NTgsLjg4NTgsLjg4NTgsLjg4NTgsLjg4NTgsMS4wMjA1OCwuODg1OCwuODk1OTEsLjg5NTkxLC44OTU5MSwuODk1OTEsLjgxMTEsLjc5NjExLC44OTcxMywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY5MzYsLjg5NiwuOTAwODMsLjkwMDgzLC45MDA4MywuOTAwODMsLjg0MjI0LC44NDIyNCwuODQyMjQsLjg0MjI0LC45NzI3NiwuOTk3OTMsLjk4NzE0LC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwxLjA4NTk1LC44OTg3NiwuOTkwNzQsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk0MiwxLjAyMzEsLjk0MiwuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjkxNzU1LC44NjY2NywuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuOTIyMjIsLjkzMzcyLC45MjkxNSwxLjAxNDExLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuODMwNTEsMS4wMDUxMiwuODMwNTEsMS4wMDUxMiwuODMwNTEsMS4wMDUxMiwxLDEsLjkwMjg0LC45OTc5MywuOTA5NzYsLjk5NzkzLC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsLjg0MjI0LC44NjAyMywxLjA1MzI2LC44NjAyMywuODQyMjQsLjgyODczLDEuMDc0NjksLjc0LDEuMDkzNzcsMSwxLC45MzgsLjg0ODY5LDEuMDYyMjYsMSwxLC44NDg2OSwuODM3MDQsLjg0ODY5LC44MTQ0MSwuODU1ODgsMS4wODkyNywuOTExMTUsLjk5NzkzLDEsMSwuOTExMTUsLjk5NzkzLC45MTg4NywuOTA5OTEsLjk5NzkzLC44ODU4LC45ODcxNCwuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44OTQsLjkxNDM0LC43NDQ5OCwuOTgxOTYsMSwxLC43NDQ5OCwuOTgxOTYsLjczOTE0LC43OTIsLjczOTE0LC43OTIsMSwxLC43MzkxNCwuNzkyLDEsMSwuODEzNjMsLjkwNCwuODEzNjMsMS4xOTEzNywuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC44MTExLC45MDUzMSwuODU2LC45MDUzMSwuODU2LC45MDUzMSwuODU2LDEsLjkyMjQxLC45MTc1NSwuODY2NjcsLjc4OCwuODY5MzYsLjg4NTgsLjg5ODc2LDEsMSwuODEzNjMsMS4xOTEzNywuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAzODgsMS4wMzkwMSwuOTIxMzgsLjc4MTA1LC43MTU0LC44NjE2OSwuODA1MTMsLjk0MDA3LC44MjUyOCwuOTg2MTIsMS4wNjIyNiwuOTE3NTUsLjgxMjYsLjgxODg0LC45MjgxOSwuNzM3NjQsLjkwNTMxLC45MDI4NCwuODg1OCwuODYwMjMsLjgxMjYsLjkxMTcyLC45NjUxOCwuOTExMTUsLjgzMDg5LC44ODU4LC44Nzc5MSwuNzk3NjEsLjg5Mjk3LC44MTM2MywuODgxNTcsLjg5OTkyLC44NTYwOCwuODE5OTIsLjk0MzA3LC44NjAyMywuODgxNTcsLjk1MzA4LC45ODY5OSwuOTk3OTMsMS4wNjIyNiwuOTU4MTcsLjk1MzA4LC45NzM1OCwuOTI4LC45ODA4OCwuOTg2OTksLjkyNzYxLC45OTc5MywuOTYwMTcsMS4wNjIyNiwuOTg2LC45NDQsLjk1OTc4LC45MzgsLjk2NzA1LC45ODcxNCwuODA0NDIsLjk4OTcyLDEsLjg5NzYyLDEuMDQ1NTIsLjk1ODE3LC45OTAwNywuODcwNjQsLjkxODc5LC44ODg4OCwxLjA2MjI2LC45NTgxNywuOTg3MTQsLjk1ODE3LC44ODg4OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTYzMywxLjAxOTE1LC44OTYzMywxLjAxOTE1LC44OTYzMywxLjAxOTE1LC44MTExLC45NDIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjkzMTczLC45MzE3MywuOTMxNzMsMSwxLjA2MzA0LDEuMDYzMDQsMS4wNjkwNCwuODk5MDMsLjg5OTAzLC44MDU0OSwxLDEuMTU2LDEsMSwuNzY1NzUsLjc2NTc1LDEsMSwuNzI0NTgsMSwxLDEsMSwuOTIyNDEsMSwxLDEsLjYxOSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDcyNTcsMSwuNzQ3MDUsLjcxMTE5LDEuMDIwNTgsMS4wMjQsMS4wMjExOSwxLDEsMS4xNTM2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU2MzgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sWHM9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LEtzPVsxLjc2NzM4LDEsMSwuOTkyOTcsLjk4MjQsMS4wNDAxNiwxLjA2NDk3LDEuMDM0MjQsLjk3NTI5LDEuMTc2NDcsMS4yMzIwMywxLjEwODUsMS4xMDg1LDEuMTY5MzksMS4yMTA3LC45NzU0LDEuMjE0MDgsLjk3NTQsMS41OTU3OCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LC44MTM3OCwuODEzNzgsMS4yMTA3LDEuMjEwNywxLjIxMDcsLjcxNzAzLC45Nzg0NywuOTczNjMsLjg4Nzc2LC44NjQxLDEuMDIwOTYsLjc5Nzk1LC44NTEzMiwuOTE0LDEuMDYwODUsMS4xNDA2LC44MDA3LC44OTg1OCwuODM2OTMsMS4xNDg4OSwxLjA5Mzk4LC45NzQ4OSwuOTIwOTQsLjk3NDg5LC45MDM5OSwuODQwNDEsLjk1OTIzLDEuMDAxMzUsMSwxLjA2NDY3LC45ODI0MywuOTA5OTYsLjk5MzYxLDEuMTA4NSwxLjU2OTQyLDEuMTA4NSwxLjIxMDcsLjc0NjI3LC45NDI4MiwuOTY3NTIsMS4wMTUxOSwuODYzMDQsMS4wMTM1OSwuOTcyNzgsMS4xNTEwMywxLjAxMzU5LC45ODU2MSwxLjAyMjg1LDEuMDIyODUsMS4wMDUyNywxLjAyMjg1LDEuMDMwMiwuOTkwNDEsMS4wMDA4LDEuMDE1MTksMS4wMTM1OSwxLjAyMjU4LC43OTEwNCwxLjE2ODYyLC45OTA0MSwuOTc0NTQsMS4wMjUxMSwuOTkyOTgsLjk2NzUyLC45NTgwMSwuOTQ4NTYsMS4xNjU3OSwuOTQ4NTYsMS4yMTA3LC45ODI0LDEuMDM0MjQsMS4wMzQyNCwxLDEuMDM0MjQsMS4xNjU3OSwuODcyNywxLjM4NzEsMS4xODYyMiwxLjEwODE4LDEuMDQ0NzgsMS4yMTA3LDEuMTg2MjIsLjc1MTU1LC45NDk5NCwxLjI4ODI2LDEuMjE0MDgsMS4yMTQwOCwuOTEwNTYsMSwuOTE1NzIsLjk3NTQsLjY0NjYzLDEuMTgzMjgsMS4yNDg2NiwxLjA0NDc4LDEuMTQxNjksMS4xNTc0OSwxLjE3Mzg5LC43MTcwMywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTM1MDYsLjg2NDEsLjc5Nzk1LC43OTc5NSwuNzk3OTUsLjc5Nzk1LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjAyMDk2LDEuMDkzOTgsLjk3NDI2LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwxLjIxMDcsLjk3NDg5LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkwOTk2LC45MjA5NCwxLjAyNzk4LC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45MzEzNiwuODYzMDQsLjk3Mjc4LC45NzI3OCwuOTcyNzgsLjk3Mjc4LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LDEuMDIyODUsLjk3MTIyLC45OTA0MSwxLDEsMSwxLDEsMS4yODgyNiwxLjAwMDgsLjk5MDQxLC45OTA0MSwuOTkwNDEsLjk5MDQxLC45Njc1MiwxLjAxNTE5LC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjk3MzYzLC45Njc1MiwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsMS4wMjA5NiwxLjAzMDU3LDEuMDIwOTYsMS4wMzUxNywuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjkxNCwxLjAxMzU5LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksMSwxLDEuMDYwODUsLjk4NTYxLDEuMDYwODUsMS4wMDg3OSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwuOTcxMzgsMS4wODY5MiwuODAwNywxLjAyMjg1LDEsMSwxLjAwNTI3LC44MzY5MywxLjAyMjg1LDEsMSwuODM2OTMsLjk0NTUsLjgzNjkzLC45MDQxOCwuODM2OTMsMS4xMzAwNSwxLjA5Mzk4LC45OTA0MSwxLDEsMS4wOTM5OCwuOTkwNDEsLjk2NjkyLDEuMDkyNTEsLjk5MDQxLC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTc0ODksMS4wMDA4LC45Mzk5NCwuOTc5MzEsLjkwMzk5LDEuMDIyNTgsMSwxLC45MDM5OSwxLjAyMjU4LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsMSwxLC45NTkyMywxLjA3MDM0LC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLC45MDk5NiwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsLjk5MzYxLC45NTgwMSwxLjA3NzMzLDEuMDM0MjQsLjk3MzYzLC45Njc1MiwuOTM1MDYsLjkzMTM2LC45NzQ4OSwxLjAwMDgsMSwxLC45NTkyMywxLjE2ODYyLDEuMTUxMDMsMS4xNTEwMywxLjAxMTczLDEuMDM5NTksLjc1OTUzLC44MTM3OCwuNzk5MTIsMS4xNTEwMywxLjIxOTk0LC45NTE2MSwuODc4MTUsMS4wMTE0OSwuODE1MjUsLjc2NzYsLjk4MTY3LDEuMDExMzQsMS4wMjU0NiwuODQwOTcsMS4wMzA4OSwxLjE4MTAyLC45NzM2MywuODg3NzYsLjg1MTM0LC45NzgyNiwuNzk3OTUsLjk5MzYxLDEuMDYwODUsLjk3NDg5LDEuMTQwNiwuODk4NTgsMS4wMzg4LDEuMTQ4ODksMS4wOTM5OCwuODYwMzksLjk3NDg5LDEuMDU5NSwuOTIwOTQsLjk0NzkzLC45NTkyMywuOTA5OTYsLjk5MzQ2LC45ODI0MywxLjAyMTEyLC45NTQ5MywxLjE0MDYsLjkwOTk2LDEuMDM1NzQsMS4wMjU5NywxLjAwMDgsMS4xODEwMiwxLjA2NjI4LDEuMDM1NzQsMS4wMTkyLDEuMDE5MzIsMS4wMDg4NiwuOTc1MzEsMS4wMTA2LDEuMDAwOCwxLjEzMTg5LDEuMTgxMDIsMS4wMjI3NywuOTg2ODMsMS4wMDE2LC45OTU2MSwxLjA3MjM3LDEuMDAwOCwuOTA0MzQsLjk5OTIxLC45MzgwMywuODk2NSwxLjIzMDg1LDEuMDY2MjgsMS4wNDk4MywuOTYyNjgsMS4wNDk5LC45ODQzOSwxLjE4MTAyLDEuMDY2MjgsMS4wMDA4LDEuMDY2MjgsLjk4NDM5LC43OTc5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA5NDY2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NzI3OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAyMDY1LDEsMSwxLDEsMSwxLDEuMDY0NjcsMS4wMjUxMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLC45MDk5NiwuOTY3NTIsMSwxLjIxNDA4LC44OTkwMywxLDEsLjc1MTU1LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjczMDQ3LC43MzA0NywxLjIwNjQyLC45MTIxMSwxLjI1NjM1LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4xMjQ1NCwuOTM1MDMsMS4wMzQyNCwxLjE5Njg3LDEuMDM0MjQsMSwxLDEsLjc3MSwxLDEsMS4xNTc0OSwxLjE1NzQ5LDEuMTU3NDksMS4xMDk0OCwuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjE2ODk3LDEsLjk2MDg1LC45MDEzNywxLjIxMDcsMS4xODQxNiwxLjEzOTczLC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMTcyLDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg4NzQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjA5MTkzLDEuMDkxOTMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLEdzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxWcz1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMDM5NTksMS4wNDAxNiwxLjAyODA5LDEuMDM2LC45NzYzOSwxLjEwOTUzLDEuMjMyMDMsMS4xMTE0NCwxLjExMTQ0LDEuMTY5MzksMS4yMTIzNywuOTc1NCwxLjIxMjYxLC45NzU0LDEuNTk3NTQsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsLjgxMzc4LC44MTM3OCwxLjIxMjM3LDEuMjEyMzcsMS4yMTIzNywuNzM1NDEsLjk3ODQ3LC45NzM2MywuODk3MjMsLjg3ODk3LDEuMDQyNiwuNzk0MjksLjg1MjkyLC45MTE0OSwxLjA1ODE1LDEuMTQwNiwuNzk2MzEsLjkwMTI4LC44Mzg1MywxLjA0Mzk2LDEuMTA2MTUsLjk3NTUyLC45NDQzNiwuOTc1NTIsLjg4NjQxLC44MDUyNywuOTYwODMsMS4wMDEzNSwxLDEuMDY3NzcsLjk4MTcsLjkxMTQyLC45OTM2MSwxLjExMTQ0LDEuNTcyOTMsMS4xMTE0NCwxLjIxMjM3LC43NDYyNywxLjMxODE4LDEuMDY1ODUsLjk3MDQyLC44MzA1NSwuOTcwNDIsLjkzNTAzLDEuMTI2MSwuOTcwNDIsLjk3OTIyLDEuMTQyMzYsLjk0NTUyLDEuMDEwNTQsMS4xNDIzNiwxLjAyNDcxLC45NzkyMiwuOTQxNjUsLjk3MDQyLC45NzA0MiwxLjAyNzYsLjc4OTI5LDEuMTI2MSwuOTc5MjIsLjk1ODc0LDEuMDIxOTcsLjk4NTA3LC45Njc1MiwuOTcxNjgsLjk1MTA3LDEuMTY1NzksLjk1MTA3LDEuMjEyMzcsMS4wMzk1OSwxLjAzNiwxLjAzNiwxLDEuMDM2LDEuMTY1NzksLjg3MzU3LDEuMzE4MTgsMS4xODc1NCwxLjI2NzgxLDEuMDUzNTYsMS4yMTIzNywxLjE4NjIyLC43OTQ4NywuOTQ5OTQsMS4yOTAwNCwxLjI0MDQ3LDEuMjQwNDcsMS4zMTgxOCwxLC45MTQ4NCwuOTc1NCwxLjMxODE4LDEuMTM0OSwxLjI0ODY2LDEuMDUzNTYsMS4xMzkzNCwxLjE1NTc0LDEuMTczODksLjczNTQxLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NDM4NSwuODc4OTcsLjc5NDI5LC43OTQyOSwuNzk0MjksLjc5NDI5LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjA0MjYsMS4xMDYxNSwuOTc1NTIsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLDEuMjEyMzcsLjk3NTUyLDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkxMTQyLC45NDQzNiwuOTg3MjEsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsLjk2NzA1LC44MzA1NSwuOTM1MDMsLjkzNTAzLC45MzUwMywuOTM1MDMsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsMS4xNDIzNiwuOTMxMjUsLjk3OTIyLC45NDE2NSwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsMS4yOTAwNCwuOTQxNjUsLjk3OTIyLC45NzkyMiwuOTc5MjIsLjk3OTIyLC45Njc1MiwuOTcwNDIsLjk2NzUyLC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsMS4wNDI2LDEuMDAzMywxLjA0MjYsLjk3MDQyLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsLjkxMTQ5LC45NzA0MiwxLDEsMS4wNTgxNSwuOTc5MjIsMS4wNTgxNSwuOTc5MjIsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsLjk3NDQxLDEuMDQzMDIsLjc5NjMxLDEuMDE1ODIsMSwxLDEuMDEwNTQsLjgzODUzLDEuMTQyMzYsMSwxLC44Mzg1MywxLjA5MTI1LC44Mzg1MywuOTA0MTgsLjgzODUzLDEuMTk1MDgsMS4xMDYxNSwuOTc5MjIsMSwxLDEuMTA2MTUsLjk3OTIyLDEuMDEwMzQsMS4xMDQ2NiwuOTc5MjIsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45NzU1MiwuOTQxNjUsLjkxNjAyLC45MTk4MSwuODg2NDEsMS4wMjc2LDEsMSwuODg2NDEsMS4wMjc2LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksMSwxLC45NjA4MywxLjA1NDAzLC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLC45MTE0MiwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsLjk5MzYxLC45NzE2OCwxLjIzMTk5LDEuMDM2LC45NzM2MywxLjA2NTg1LC45NDM4NSwuOTY3MDUsLjk3NTUyLC45NDE2NSwxLDEsLjk2MDgzLDEuMTI2MSwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwuOTUxNjEsMS4yNzEyNiwxLjAwODExLC44MzI4NCwuNzc3MDIsLjk5MTM3LC45NTI1MywxLjAzNDcsLjg2MTQyLDEuMDcyMDUsMS4xNDIzNiwuOTczNjMsLjg5NzIzLC44Njg2OSwxLjA5ODE4LC43OTQyOSwuOTkzNjEsMS4wNTgxNSwuOTc1NTIsMS4xNDA2LC45MDEyOCwxLjA2NjYyLDEuMDQzOTYsMS4xMDYxNSwuODQ5MTgsLjk3NTUyLDEuMDQ2OTQsLjk0NDM2LC45ODAxNSwuOTYwODMsLjkxMTQyLDEuMDAzNTYsLjk4MTcsMS4wMTk0NSwuOTg5OTksMS4xNDA2LC45MTE0MiwxLjA0OTYxLC45ODk4LDEuMDA2MzksMS4xNDIzNiwxLjA3NTE0LDEuMDQ5NjEsLjk5NjA3LDEuMDI4OTcsMS4wMDgsLjk4OTgsLjk1MTM0LDEuMDA2MzksMS4xMTEyMSwxLjE0MjM2LDEuMDA1MTgsLjk3OTgxLDEuMDIxODYsMSwxLjA4NTc4LC45NDE2NSwuOTkzMTQsLjk4Mzg3LC45MzAyOCwuOTMzNzcsMS4zNTEyNSwxLjA3NTE0LDEuMTA2ODcsLjkzNDkxLDEuMDQyMzIsMS4wMDM1MSwxLjE0MjM2LDEuMDc1MTQsLjk0MTY1LDEuMDc1MTQsMS4wMDM1MSwuNzk0MjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTA5NywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTM1MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NjA5LDEsMSwxLDEsMSwxLDEuMDY3NzcsMS4wMjE5NywxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LC45MTE0MiwuOTY3NTIsMSwxLjIxMjYxLC44OTkwMywxLDEsLjc1MTU1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0NzQ1LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjcyOTU5LC43Mjk1OSwxLjIwNTAyLC45MTQwNiwxLjI2NTE0LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4wOTEyNSwuOTMzMjcsMS4wMzMzNiwxLjE2NTQxLDEuMDM2LDEsMSwxLC43NzEsMSwxLDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LDEuMTU1NzQsLjg2MzY0LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjIyNCwxLDEsMS4xNjc5OCwxLC45NjA4NSwuOTAwNjgsMS4yMTIzNywxLjE4NDE2LDEuMTM5MDQsLjY5ODI1LC45NzE2LDIuMTAzMzksMS4yOTAwNCwxLjI5MDA0LDEuMjEzMzksMS4yOTAwNCwxLjI5MDA0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODc3NSwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTMyNjksMS4xMzI2OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sJHM9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LFlzPVsxLjc2NzM4LDEsMSwuOTg5NDYsMS4xNDc2MywxLjA1MzY1LDEuMDYyMzQsLjk2OTI3LC45MjU4NiwxLjE1MzczLDEuMTg0MTQsLjkxMzQ5LC45MTM0OSwxLjA3NDAzLDEuMTczMDgsLjc4MzgzLDEuMjAwODgsLjc4MzgzLDEuNDI1MzEsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC43ODM4MywuNzgzODMsMS4xNzMwOCwxLjE3MzA4LDEuMTczMDgsLjc3MzQ5LC45NDU2NSwuOTQ3MjksLjg1OTQ0LC44ODUwNiwuOTg1OCwuNzQ4MTcsLjgwMDE2LC44ODQ0OSwuOTgwMzksLjk1NzgyLC42OTIzOCwuODk4OTgsLjgzMjMxLC45ODE4MywxLjAzOTg5LC45NjkyNCwuODYyMzcsLjk2OTI0LC44MDU5NSwuNzQ1MjQsLjg2MDkxLC45NTQwMiwuOTQxNDMsLjk4NDQ4LC44ODU4LC44MzA4OSwuOTMyODUsMS4wOTQ5LDEuMzkwMTYsMS4wOTQ5LDEuNDU5OTQsLjc0NjI3LDEuMDQ4MzksLjk3NDU0LC45NzQ1NCwuODcyMDcsLjk3NDU0LC44NzUzMywxLjA2MTUxLC45NzQ1NCwxLjAwMTc2LDEuMTY0ODQsMS4wODEzMiwuOTgwNDcsMS4xNjQ4NCwxLjAyOTg5LDEuMDEwNTQsLjk2MjI1LC45NzQ1NCwuOTc0NTQsMS4wNjU5OCwuNzkwMDQsMS4xNjM0NCwxLjAwMzUxLC45NDYyOSwuOTk3MywuOTEwMTYsLjk2Nzc3LC45MDQzLC45MTA4MiwuOTI0ODEsLjkxMDgyLDEuMTczMDgsLjk1NzQ4LC45NjkyNywuOTY5MjcsMSwuOTY5MjcsLjkyNDgxLC44MDU5NywxLjA0ODM5LDEuMjMzOTMsMS4xNzgxLC45MjQ1LDEuMTczMDgsMS4yMDgwOCwuNjMyMTgsLjk0MjYxLDEuMjQ4MjIsMS4wOTk3MSwxLjA5OTcxLDEuMDQ4MzksMSwuODUyNzMsLjc4MDMyLDEuMDQ4MzksMS4wOTk3MSwxLjIyMzI2LC45MjQ1LDEuMDk4MzYsMS4xMzUyNSwxLjE1MjIyLC43MDQyNCwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuODU0OTgsLjg4NTA2LC43NDgxNywuNzQ4MTcsLjc0ODE3LC43NDgxNywuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk4NTgsMS4wMzk4OSwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTczMDgsLjk2OTI0LC45NTQwMiwuOTU0MDIsLjk1NDAyLC45NTQwMiwuODMwODksLjg2MjM3LC44ODQwOSwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTI5MTYsLjg3MjA3LC44NzUzMywuODc1MzMsLjg3NTMzLC44NzUzMywuOTMxNDYsLjkzMTQ2LC45MzE0NiwuOTMxNDYsLjkzODU0LDEuMDEwNTQsLjk2MjI1LC45NjIyNSwuOTYyMjUsLjk2MjI1LC45NjIyNSwxLjI0ODIyLC44NzYxLDEuMDAzNTEsMS4wMDM1MSwxLjAwMzUxLDEuMDAzNTEsLjk2Nzc3LC45NzQ1NCwuOTY3NzcsLjk0NzI5LC45NzQ1NCwuOTQ3MjksLjk3NDU0LC45NDcyOSwuOTc0NTQsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuOTg1OCwuOTUzOTEsLjk4NTgsLjk3NDU0LC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuODg0NDksLjk3NDU0LC44ODQ0OSwuOTc0NTQsLjg4NDQ5LC45NzQ1NCwxLDEsLjk4MDM5LDEuMDAxNzYsLjk4MDM5LDEuMDAxNzYsLjk1NzgyLC45MzE0NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwuOTMxNDYsLjk1NzgyLDEuMTY0ODQsLjk1NzgyLC45MzE0NiwuODQ0MjEsMS4xMjc2MSwuNjkyMzgsMS4wODEzMiwxLDEsLjk4MDQ3LC44MzIzMSwxLjE2NDg0LDEsMSwuODQ3MjMsMS4wNDg2MSwuODQ3MjMsLjc4NzU1LC44MzIzMSwxLjIzNzM2LDEuMDM5ODksMS4wMTA1NCwxLDEsMS4wMzk4OSwxLjAxMDU0LC45ODU3LDEuMDM4NDksMS4wMTA1NCwuOTY5MjQsLjk2MjI1LC45NjkyNCwuOTYyMjUsLjk2OTI0LC45NjIyNSwuOTIzODMsLjkwMTcxLC44MDU5NSwxLjA2NTk4LDEsMSwuODA1OTUsMS4wNjU5OCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LDEsMSwuODYwOTEsMS4wMjc1OSwuODU3NzEsMS4xNjM0NCwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTg0NDgsLjk5NzMsLjgzMDg5LC45Njc3NywuODMwODksLjkzMjg1LC45MDQzLC45MzI4NSwuOTA0MywuOTMyODUsLjkwNDMsMS4zMTg2OCwuOTY5MjcsLjk0NzI5LC45NzQ1NCwuODU0OTgsLjkyOTE2LC45NjkyNCwuODc2MSwxLDEsLjg2MDkxLDEuMTYzNDQsMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksLjgxOTY1LC44MTk2NSwuOTQ3MjksLjc4MDMyLC43MTAyMiwuOTA4ODMsLjg0MTcxLC45OTg3NywuNzc1OTYsMS4wNTczNCwxLjIsLjk0NzI5LC44NTk0NCwuODI3OTEsLjk2MDcsLjc0ODE3LC45MzI4NSwuOTgwMzksLjk2OTI0LC45NTc4MiwuODk4OTgsLjk4MzE2LC45ODE4MywxLjAzOTg5LC43ODYxNCwuOTY5MjQsLjk3NjQyLC44NjIzNywuODYwNzUsLjg2MDkxLC44MzA4OSwuOTAwODIsLjg4NTgsLjk3Mjk2LDEuMDEyODQsLjk1NzgyLC44MzA4OSwxLjA5NzYsMS4wNCwxLjAzMzQyLDEuMiwxLjA2NzUsMS4wOTc2LC45ODIwNSwxLjAzODA5LDEuMDUwOTcsMS4wNCwuOTUzNjQsMS4wMzM0MiwxLjA1NDAxLDEuMiwxLjAyMTQ4LDEuMDExOSwxLjA0NzI0LDEuMDEyNywxLjAyNzMyLC45NjIyNSwuODk2NSwuOTc3ODMsLjkzNTc0LC45NDgxOCwxLjMwNjc5LDEuMDY3NSwxLjExODI2LC45OTgyMSwxLjA1NTcsMS4wMzI2LDEuMiwxLjA2NzUsLjk2MjI1LDEuMDY3NSwxLjAzMjYsLjc0ODE3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDM3NTQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3NTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45ODcwNSwxLDEsMSwxLDEsMSwuOTg0NDgsLjk5NzMsLjk4NDQ4LC45OTczLC45ODQ0OCwuOTk3MywuODMwODksLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwuOTQ5NDUsLjk0OTQ1LC45NDk0NSwuOTQ5NDUsMS4xMjMxNywxLjEyMzE3LDEuMTIzMTcsLjY3NjAzLC42NzYwMywxLjE1NjIxLC43MzU4NCwxLjIxMTkxLDEuMjIxMzUsMS4wNjQ4MywuOTQ4NjgsLjk0ODY4LC45NTk5NiwxLjI0NjMzLDEsMS4wNzQ5NywuODc3MDksLjk2OTI3LDEuMDE0NzMsLjk2OTI3LDEsMSwxLC43NzI5NSwxLDEsMS4wOTgzNiwxLjA5ODM2LDEuMDk4MzYsMS4wMTUyMiwuODYzMjEsLjk0NDM0LC44NjQ5LC45NDQzNCwuODYxODIsMSwxLDEuMDgzLDEsLjkxNTc4LC44NjQzOCwxLjE3MzA4LDEuMTg0MTYsMS4xNDU4OSwuNjk4MjUsLjk3NjIyLDEuOTY3OTEsMS4yNDgyMiwxLjI0ODIyLDEuMTczMDgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xNzk4NCwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA3NDIsMS4xMDc0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sSnM9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LFFzPVsxLjc2NzM4LDEsMSwuOTg1OTQsMS4wMjI4NSwxLjEwNDU0LDEuMDYyMzQsLjk2OTI3LC45MjAzNywxLjE5OTg1LDEuMjA0NiwuOTA2MTYsLjkwNjE2LDEuMDcxNTIsMS4xNzE0LC43ODAzMiwxLjIwMDg4LC43ODAzMiwxLjQwMjQ2LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuNzgwMzIsLjc4MDMyLDEuMTcxNCwxLjE3MTQsMS4xNzE0LC44MDU5NywuOTQwODQsLjk2NzA2LC44NTk0NCwuODU3MzQsLjk3MDkzLC43NTg0MiwuNzk5MzYsLjg4MTk4LC45ODMxLC45NTc4MiwuNzEzODcsLjg2OTY5LC44NDYzNiwxLjA3Nzk2LDEuMDM1ODQsLjk2OTI0LC44Mzk2OCwuOTY5MjQsLjgyODI2LC43OTY0OSwuODU3NzEsLjk1MTMyLC45MzExOSwuOTg5NjUsLjg4NDMzLC44Mjg3LC45MzM2NSwxLjA4NjEyLDEuMzYzOCwxLjA4NjEyLDEuNDU3ODYsLjc0NjI3LC44MDQ5OSwuOTE0ODQsMS4wNTcwNywuOTIzODMsMS4wNTg4MiwuOTQwMywxLjEyNjU0LDEuMDU4ODIsMS4wMTc1NiwxLjA5MDExLDEuMDkwMTEsLjk5NDE0LDEuMDkwMTEsMS4wMzQsMS4wMTc1NiwxLjA1MzU2LDEuMDU3MDcsMS4wNTg4MiwxLjA0Mzk5LC44NDg2MywxLjIxOTY4LDEuMDE3NTYsLjk1ODAxLDEuMDAwNjgsLjkxNzk3LC45Njc3NywuOTA0MywuOTAzNTEsLjkyMTA1LC45MDM1MSwxLjE3MTQsLjg1MzM3LC45NjkyNywuOTY5MjcsLjk5OTEyLC45NjkyNywuOTIxMDUsLjgwNTk3LDEuMjQzNCwxLjIwODA4LDEuMDU5MzcsLjkwOTU3LDEuMTcxNCwxLjIwODA4LC43NTE1NSwuOTQyNjEsMS4yNDY0NCwxLjA5OTcxLDEuMDk5NzEsLjg0NzUxLDEsLjg1MjczLC43ODAzMiwuNjE1ODQsMS4wNTQyNSwxLjE3OTE0LC45MDk1NywxLjA4NjY1LDEuMTE1OTMsMS4xNDE2OSwuNzMzODEsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjg2MDM1LC44NTczNCwuNzU4NDIsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NzA5MywxLjAzNTg0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsMS4xNzE0LC45NjkyNCwuOTUxMzIsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjgyODcsLjgzOTY4LC44OTA0OSwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTM1NzUsLjkyMzgzLC45NDAzLC45NDAzLC45NDAzLC45NDAzLC44NzE3LC44NzE3LC44NzE3LC44NzE3LDEuMDA1MjcsMS4wMTc1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4yNDY0NCwuOTU5MjMsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsMS4wMTc1NiwuOTY3NzcsMS4wNTcwNywuOTY3NzcsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC45NjcwNiwuOTE0ODQsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuOTcwOTMsMS4wOTY5LC45NzA5MywxLjA1ODgyLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjg4MTk4LDEuMDU4ODIsLjg4MTk4LDEuMDU4ODIsLjg4MTk4LDEuMDU4ODIsMSwxLC45ODMxLDEuMDE3NTYsLjk4MzEsMS4wMTc1NiwuOTU3ODIsLjg3MTcsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsMS4wOTAxMSwuOTU3ODIsLjg3MTcsLjg0Nzg0LDEuMTE1NTEsLjcxMzg3LDEuMDkwMTEsMSwxLC45OTQxNCwuODQ2MzYsMS4wOTAxMSwxLDEsLjg0NjM2LDEuMDUzNiwuODQ2MzYsLjk0Mjk4LC44NDYzNiwxLjIzMjk3LDEuMDM1ODQsMS4wMTc1NiwxLDEsMS4wMzU4NCwxLjAxNzU2LDEuMDAzMjMsMS4wMzQ0NCwxLjAxNzU2LC45NjkyNCwxLjA1MzU2LC45NjkyNCwxLjA1MzU2LC45NjkyNCwxLjA1MzU2LC45MzA2NiwuOTgyOTMsLjgyODI2LDEuMDQzOTksMSwxLC44MjgyNiwxLjA0Mzk5LC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsMSwxLC44NTc3MSwxLjE3MzE4LC44NTc3MSwxLjIxOTY4LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45ODk2NSwxLjAwMDY4LC44Mjg3LC45Njc3NywuODI4NywuOTMzNjUsLjkwNDMsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywxLjA4NTcxLC45NjkyNywuOTY3MDYsLjkxNDg0LC44NjAzNSwuOTM1NzUsLjk2OTI0LC45NTkyMywxLDEsLjg1NzcxLDEuMjE5NjgsMS4xMTQzNywxLjExNDM3LC45MzEwOSwuOTEyMDIsLjYwNDExLC44NDE2NCwuNTU1NzIsMS4wMTE3MywuOTczNjEsLjgxODE4LC44MTgxOCwuOTY2MzUsLjc4MDMyLC43MjcyNywuOTIzNjYsLjk4NjAxLDEuMDM0MDUsLjc3OTY4LDEuMDk3OTksMS4yLC45NjcwNiwuODU5NDQsLjg1NjM4LC45NjQ5MSwuNzU4NDIsLjkzMzY1LC45ODMxLC45NjkyNCwuOTU3ODIsLjg2OTY5LC45NDE1MiwxLjA3Nzk2LDEuMDM1ODQsLjc4NDM3LC45NjkyNCwuOTg3MTUsLjgzOTY4LC44MzQ5MSwuODU3NzEsLjgyODcsLjk0NDkyLC44ODQzMywuOTI4NywxLjAwOTgsLjk1NzgyLC44Mjg3LDEuMDYyNSwuOTgyNDgsMS4wMzQyNCwxLjIsMS4wMTA3MSwxLjA2MjUsLjk1MjQ2LDEuMDM4MDksMS4wNDkxMiwuOTgyNDgsMS4wMDIyMSwxLjAzNDI0LDEuMDU0NDMsMS4yLDEuMDQ3ODUsLjk5NjA5LDEuMDAxNjksMS4wNTE3NiwuOTkzNDYsMS4wNTM1NiwuOTA4NywxLjAzMDA0LC45NTU0MiwuOTMxMTcsMS4yMzM2MiwxLjAxMDcxLDEuMDc4MzEsMS4wMjUxMiwxLjA1MjA1LDEuMDM1MDIsMS4yLDEuMDEwNzEsMS4wNTM1NiwxLjAxMDcxLDEuMDM1MDIsLjc1ODQyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDM3MTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk0MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNDAyMSwxLDEsMSwxLDEsMSwuOTg5NjUsMS4wMDA2OCwuOTg5NjUsMS4wMDA2OCwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsMSwxLjIwMDg4LC44OTkwMywxLDEsLjc1MTU1LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMDMwNzcsMS4xMzE5NiwxLjEzMTk2LDEuMTMxOTYsLjY3NDI4LC42NzQyOCwxLjE2MDM5LC43MzI5MSwxLjIwOTk2LDEuMjIxMzUsMS4wNjQ4MywuOTQ4NjgsLjk0ODY4LC45NTk5NiwxLjI0NjMzLDEsMS4wNzQ5NywuODc3OTYsLjk2OTI3LDEuMDE1MTgsLjk2OTI3LDEsMSwxLC43NzI5NSwxLDEsMS4xMDUzOSwxLjEwNTM5LDEuMTEzNTgsMS4wNjk2NywuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjA4MywxLC45MTU3OCwuODY1MDcsMS4xNzE0LDEuMTg0MTYsMS4xNDU4OSwuNjk4MjUsLjk3NjIyLDEuOTY5NywxLjI0ODIyLDEuMjQ4MjIsMS4xNzIzOCwxLjI0ODIyLDEuMjQ4MjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4MDgzLDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMDkzOCwxLjEwOTM4LDEsMSwxLDEuMDU0MjUsMS4wOTk3MSwxLjA5OTcxLDEuMDk5NzEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxacz17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sZXI9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbIk15cmlhZFByby1SZWd1bGFyIl09ZVsiUGRmSlMtRmFsbGJhY2stUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOldzLGJhc2VXaWR0aHM6RHMsYmFzZU1hcHBpbmc6TXMsbWV0cmljczpYc307ZVsiTXlyaWFkUHJvLUJvbGQiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6TnMsYmFzZVdpZHRoczpGcyxiYXNlTWFwcGluZzpUcyxtZXRyaWNzOkVzfTtlWyJNeXJpYWRQcm8tSXQiXT1lWyJNeXJpYWRQcm8tSXRhbGljIl09ZVsiUGRmSlMtRmFsbGJhY2stSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpMcyxiYXNlV2lkdGhzOkhzLGJhc2VNYXBwaW5nOkJzLG1ldHJpY3M6VXN9O2VbIk15cmlhZFByby1Cb2xkSXQiXT1lWyJNeXJpYWRQcm8tQm9sZEl0YWxpYyJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpfcyxiYXNlV2lkdGhzOlJzLGJhc2VNYXBwaW5nOk9zLG1ldHJpY3M6enN9O2UuQXJpYWxNVD1lLkFyaWFsPWVbIkFyaWFsLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsYmFzZVdpZHRoczpEcyxiYXNlTWFwcGluZzpNc307ZVsiQXJpYWwtQm9sZE1UIl09ZVsiQXJpYWwtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixiYXNlV2lkdGhzOkZzLGJhc2VNYXBwaW5nOlRzfTtlWyJBcmlhbC1JdGFsaWNNVCJdPWVbIkFyaWFsLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGJhc2VXaWR0aHM6SHMsYmFzZU1hcHBpbmc6QnN9O2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPWVbIkFyaWFsLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsYmFzZVdpZHRoczpScyxiYXNlTWFwcGluZzpPc307ZVsiQ2FsaWJyaS1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6anMsYmFzZVdpZHRoczpEcyxiYXNlTWFwcGluZzpNcyxtZXRyaWNzOmtzfTtlWyJDYWxpYnJpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczptcyxiYXNlV2lkdGhzOkZzLGJhc2VNYXBwaW5nOlRzLG1ldHJpY3M6cHN9O2VbIkNhbGlicmktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpicyxiYXNlV2lkdGhzOkhzLGJhc2VNYXBwaW5nOkJzLG1ldHJpY3M6d3N9O2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOmRzLGJhc2VXaWR0aHM6UnMsYmFzZU1hcHBpbmc6T3MsbWV0cmljczpnc307ZVsiU2Vnb2V1aS1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6UXMsYmFzZVdpZHRoczpEcyxiYXNlTWFwcGluZzpNcyxtZXRyaWNzOlpzfTtlWyJTZWdvZXVpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpLcyxiYXNlV2lkdGhzOkZzLGJhc2VNYXBwaW5nOlRzLG1ldHJpY3M6R3N9O2VbIlNlZ29ldWktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpZcyxiYXNlV2lkdGhzOkhzLGJhc2VNYXBwaW5nOkJzLG1ldHJpY3M6SnN9O2VbIlNlZ29ldWktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOlZzLGJhc2VXaWR0aHM6UnMsYmFzZU1hcHBpbmc6T3MsbWV0cmljczokc307ZVsiSGVsdmV0aWNhLVJlZ3VsYXIiXT1lLkhlbHZldGljYT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpDcyxiYXNlV2lkdGhzOkRzLGJhc2VNYXBwaW5nOk1zLG1ldHJpY3M6SXN9O2VbIkhlbHZldGljYS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6eXMsYmFzZVdpZHRoczpGcyxiYXNlTWFwcGluZzpUcyxtZXRyaWNzOnFzfTtlWyJIZWx2ZXRpY2EtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpBcyxiYXNlV2lkdGhzOkhzLGJhc2VNYXBwaW5nOkJzLG1ldHJpY3M6eHN9O2VbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6dnMsYmFzZVdpZHRoczpScyxiYXNlTWFwcGluZzpPcyxtZXRyaWNzOlNzfX0pO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuIGVyKClbdF19ZnVuY3Rpb24gZ2V0WGZhRm9udERpY3QoZSl7Y29uc3QgdD1mdW5jdGlvbiBnZXRYZmFGb250V2lkdGhzKGUpe2NvbnN0IHQ9Z2V0WGZhRm9udE5hbWUoZSk7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3R7YmFzZVdpZHRoczpuLGJhc2VNYXBwaW5nOmEsZmFjdG9yczpzfT10LHI9cz9uLm1hcCgoZSx0KT0+ZSpzW3RdKTpuO2xldCBpLG89LTI7Y29uc3QgbD1bXTtmb3IoY29uc3RbZSx0XW9mIGEubWFwKChlLHQpPT5bZSx0XSkuc29ydCgoW2VdLFt0XSk9PmUtdCkpaWYoLTEhPT1lKWlmKGU9PT1vKzEpe2kucHVzaChyW3RdKTtvKz0xfWVsc2V7bz1lO2k9W3JbdF1dO2wucHVzaChlLGkpfXJldHVybiBsfShlKSxuPW5ldyBEaWN0KG51bGwpO24uc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoZSkpO24uc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtuLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTtuLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJJZGVudGl0eS1IIikpO24uc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO24uc2V0KCJXIix0KTtuLnNldCgiRmlyc3RDaGFyIix0WzBdKTtuLnNldCgiTGFzdENoYXIiLHQuYXQoLTIpK3QuYXQoLTEpLmxlbmd0aC0xKTtjb25zdCBhPW5ldyBEaWN0KG51bGwpO24uc2V0KCJGb250RGVzY3JpcHRvciIsYSk7Y29uc3Qgcz1uZXcgRGljdChudWxsKTtzLnNldCgiT3JkZXJpbmciLCJJZGVudGl0eSIpO3Muc2V0KCJSZWdpc3RyeSIsIkFkb2JlIik7cy5zZXQoIlN1cHBsZW1lbnQiLDApO24uc2V0KCJDSURTeXN0ZW1JbmZvIixzKTtyZXR1cm4gbn1jb25zdCB0cj17bnVtYmVyOjAsbGJyYWNlOjEscmJyYWNlOjIsdHJ1ZTozLGZhbHNlOjQsYWRkOjUsc3ViOjYsbXVsOjcsZGl2OjgsaWRpdjo5LG1vZDoxMCxleHA6MTEsZXE6MTIsbmU6MTMsZ3Q6MTQsZ2U6MTUsbHQ6MTYsbGU6MTcsYW5kOjE4LG9yOjE5LHhvcjoyMCxiaXRzaGlmdDoyMSxhYnM6MjIsbmVnOjIzLGNlaWxpbmc6MjQsZmxvb3I6MjUscm91bmQ6MjYsdHJ1bmNhdGU6Mjcsbm90OjI4LHNxcnQ6Mjksc2luOjMwLGNvczozMSxsbjozMixsb2c6MzMsYXRhbjozNCxjdmk6MzUsY3ZyOjM2LGR1cDozNyxleGNoOjM4LHBvcDozOSxjb3B5OjQwLGluZGV4OjQxLHJvbGw6NDIsaWY6NDMsaWZlbHNlOjQ0LGVvZjo0NSxtaW46NDYsbWF4OjQ3fTtjbGFzcyBUb2tlbntjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7dGhpcy5pZD1lO3RoaXMudmFsdWU9dH19Y2xhc3MgbGV4ZXJfTGV4ZXJ7c3RhdGljI2JlPW51bGw7c3RhdGljI3dlPW51bGw7c3RhdGljI2plKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbbixhXW9mIE9iamVjdC5lbnRyaWVzKHRyKSl7aWYoIm51bWJlciI9PT1uKWNvbnRpbnVlO2NvbnN0IHM9YT49dHIudHJ1ZSYmYTw9dHIuaWZlbHNlLHI9bmV3IFRva2VuKGEscz9uOm51bGwpO2Vbbl09cjtzJiYodFtuXT1yKX10aGlzLiNiZT1lO3RoaXMuI3dlPXR9Y29uc3RydWN0b3IoZSl7bGV4ZXJfTGV4ZXIuI2JlfHxsZXhlcl9MZXhlci4jamUoKTt0aGlzLmRhdGE9ZTt0aGlzLnBvcz0wO3RoaXMubGVuPWUubGVuZ3RoO3RoaXMuX251bWJlclBhdHRlcm49L1srLV0/KD86XGQrXC4/XGQqfFwuXGQrKSg/OmVbKy1dP1xkKyk/L2l5O3RoaXMuX2lkZW50aWZpZXJQYXR0ZXJuPS9bYS16XSsveX1fc2tpcENvbW1lbnQoKXtjb25zdCBlPXRoaXMuZGF0YS5pbmRleE9mKCJcbiIsdGhpcy5wb3MpLHQ9dGhpcy5kYXRhLmluZGV4T2YoIlxyIix0aGlzLnBvcyksbj1NYXRoLm1pbihlPDA/dGhpcy5sZW46ZSx0PDA/dGhpcy5sZW46dCk7dGhpcy5wb3M9TWF0aC5taW4obisxLHRoaXMubGVuKX1fZ2V0TnVtYmVyKCl7dGhpcy5fbnVtYmVyUGF0dGVybi5sYXN0SW5kZXg9dGhpcy5wb3M7Y29uc3QgZT10aGlzLl9udW1iZXJQYXR0ZXJuLmV4ZWModGhpcy5kYXRhKTtpZighZSlyZXR1cm4gbmV3IFRva2VuKHRyLm51bWJlciwwKTtjb25zdCB0PXBhcnNlRmxvYXQoZVswXSk7aWYoIU51bWJlci5pc0Zpbml0ZSh0KSlyZXR1cm4gbmV3IFRva2VuKHRyLm51bWJlciwwKTt0aGlzLnBvcz10aGlzLl9udW1iZXJQYXR0ZXJuLmxhc3RJbmRleDtyZXR1cm4gbmV3IFRva2VuKHRyLm51bWJlcix0KX1fZ2V0T3BlcmF0b3IoKXt0aGlzLl9pZGVudGlmaWVyUGF0dGVybi5sYXN0SW5kZXg9dGhpcy5wb3M7Y29uc3QgZT10aGlzLl9pZGVudGlmaWVyUGF0dGVybi5leGVjKHRoaXMuZGF0YSk7aWYoIWUpcmV0dXJuIG5ldyBUb2tlbih0ci5udW1iZXIsMCk7dGhpcy5wb3M9dGhpcy5faWRlbnRpZmllclBhdHRlcm4ubGFzdEluZGV4O2NvbnN0IHQ9ZVswXSxuPWxleGVyX0xleGVyLiN3ZVt0XTtyZXR1cm4gbnx8bmV3IFRva2VuKHRyLm51bWJlciwwKX1uZXh0KCl7Zm9yKDt0aGlzLnBvczx0aGlzLmxlbjspe2NvbnN0IGU9dGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy5wb3MrKyk7c3dpdGNoKGUpe2Nhc2UgMDpjYXNlIDk6Y2FzZSAxMDpjYXNlIDEyOmNhc2UgMTM6Y2FzZSAzMjpicmVhaztjYXNlIDM3OnRoaXMuX3NraXBDb21tZW50KCk7YnJlYWs7Y2FzZSAxMjM6cmV0dXJuIGxleGVyX0xleGVyLiNiZS5sYnJhY2U7Y2FzZSAxMjU6cmV0dXJuIGxleGVyX0xleGVyLiNiZS5yYnJhY2U7Y2FzZSA0MzpjYXNlIDQ1OmNhc2UgNDY6dGhpcy5wb3MtLTtyZXR1cm4gdGhpcy5fZ2V0TnVtYmVyKCk7ZGVmYXVsdDppZihlPj00OCYmZTw9NTcpe3RoaXMucG9zLS07cmV0dXJuIHRoaXMuX2dldE51bWJlcigpfWlmKGU+PTk3JiZlPD0xMjIpe3RoaXMucG9zLS07cmV0dXJuIHRoaXMuX2dldE9wZXJhdG9yKCl9cmV0dXJuIG5ldyBUb2tlbih0ci5udW1iZXIsMCl9fXJldHVybiBsZXhlcl9MZXhlci4jYmUuZW9mfX1jb25zdCBucj0wLGFyPTEsc3I9Mixycj0wLGlyPTEsb3I9Mixscj0zLGZyPTQsY3I9NSxocj02LHVyPTcsbXI9OCxwcj05LGRyPTEwO2NsYXNzIFBzTm9kZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnR5cGU9ZX19Y2xhc3MgUHNQcm9ncmFtIGV4dGVuZHMgUHNOb2Rle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHJyKTt0aGlzLmJvZHk9ZX19Y2xhc3MgUHNCbG9jayBleHRlbmRzIFBzTm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcihpcik7dGhpcy5pbnN0cnVjdGlvbnM9ZX19Y2xhc3MgUHNOdW1iZXIgZXh0ZW5kcyBQc05vZGV7Y29uc3RydWN0b3IoZSl7c3VwZXIob3IpO3RoaXMudmFsdWU9ZX19Y2xhc3MgUHNPcGVyYXRvciBleHRlbmRzIFBzTm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcihscik7dGhpcy5vcD1lfX1jbGFzcyBQc0lmIGV4dGVuZHMgUHNOb2Rle2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZyKTt0aGlzLnRoZW49ZX19Y2xhc3MgUHNJZkVsc2UgZXh0ZW5kcyBQc05vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihjcik7dGhpcy50aGVuPWU7dGhpcy5vdGhlcndpc2U9dH19Y2xhc3MgUHNBcmdOb2RlIGV4dGVuZHMgUHNOb2Rle2NvbnN0cnVjdG9yKGUpe3N1cGVyKGhyKTt0aGlzLmluZGV4PWU7dGhpcy52YWx1ZVR5cGU9bnJ9fWNsYXNzIFBzQ29uc3ROb2RlIGV4dGVuZHMgUHNOb2Rle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVyKTt0aGlzLnZhbHVlPWU7dGhpcy52YWx1ZVR5cGU9ImJvb2xlYW4iPT10eXBlb2YgZT9hcjpucn19Y2xhc3MgUHNVbmFyeU5vZGUgZXh0ZW5kcyBQc05vZGV7Y29uc3RydWN0b3IoZSx0LG49c3Ipe3N1cGVyKG1yKTt0aGlzLm9wPWU7dGhpcy5vcGVyYW5kPXQ7dGhpcy52YWx1ZVR5cGU9bn19Y2xhc3MgUHNCaW5hcnlOb2RlIGV4dGVuZHMgUHNOb2Rle2NvbnN0cnVjdG9yKGUsdCxuLGE9c3Ipe3N1cGVyKHByKTt0aGlzLm9wPWU7dGhpcy5maXJzdD10O3RoaXMuc2Vjb25kPW47dGhpcy52YWx1ZVR5cGU9YX19Y2xhc3MgUHNUZXJuYXJ5Tm9kZSBleHRlbmRzIFBzTm9kZXtjb25zdHJ1Y3RvcihlLHQsbixhPXNyKXtzdXBlcihkcik7dGhpcy5jb25kPWU7dGhpcy50aGVuPXQ7dGhpcy5vdGhlcndpc2U9bjt0aGlzLnZhbHVlVHlwZT1hfX1jbGFzcyBhc3RfUGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLl90b2tlbj1udWxsfXN0YXRpYyBfaXNSZWd1bGFyT3BlcmF0b3IoZSl7cmV0dXJuIGU+PXRyLnRydWUmJmU8dHIuaWZ9X2FkdmFuY2UoKXt0aGlzLl90b2tlbj10aGlzLmxleGVyLm5leHQoKX1fZXhwZWN0KGUpe2lmKHRoaXMuX3Rva2VuLmlkIT09ZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFBvc3RTY3JpcHQgZnVuY3Rpb246IGV4cGVjdGVkIHRva2VuIGlkICR7ZX0sIGdvdCAke3RoaXMuX3Rva2VuLmlkfS5gKTtjb25zdCB0PXRoaXMuX3Rva2VuO3RoaXMuX2FkdmFuY2UoKTtyZXR1cm4gdH1wYXJzZSgpe3RoaXMuX2FkdmFuY2UoKTt0aGlzLl9leHBlY3QodHIubGJyYWNlKTtjb25zdCBlPXRoaXMuX3BhcnNlQmxvY2soKTt0aGlzLl9leHBlY3QodHIucmJyYWNlKTt0aGlzLl90b2tlbi5pZCE9PXRyLmVvZiYmd2FybigiUG9zdFNjcmlwdCBmdW5jdGlvbjogdW5leHBlY3RlZCBjb250ZW50IGFmdGVyIGNsb3NpbmcgYnJhY2UuIik7cmV0dXJuIG5ldyBQc1Byb2dyYW0oZSl9X3BhcnNlQmxvY2soKXtjb25zdCBlPVtdO2Zvcig7Oyl7Y29uc3QgdD10aGlzLl90b2tlbjtzd2l0Y2godC5pZCl7Y2FzZSB0ci5udW1iZXI6ZS5wdXNoKG5ldyBQc051bWJlcih0LnZhbHVlKSk7dGhpcy5fYWR2YW5jZSgpO2JyZWFrO2Nhc2UgdHIubGJyYWNlOnt0aGlzLl9hZHZhbmNlKCk7Y29uc3QgdD10aGlzLl9wYXJzZUJsb2NrKCk7dGhpcy5fZXhwZWN0KHRyLnJicmFjZSk7aWYodGhpcy5fdG9rZW4uaWQ9PT10ci5pZil7dGhpcy5fYWR2YW5jZSgpO2UucHVzaChuZXcgUHNJZih0KSl9ZWxzZXtpZih0aGlzLl90b2tlbi5pZCE9PXRyLmxicmFjZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb246IGEgcHJvY2VkdXJlIGJsb2NrIG11c3QgYmUgZm9sbG93ZWQgYnkgJ2lmJyBvciAne+KApn0gaWZlbHNlJy4iKTt7dGhpcy5fYWR2YW5jZSgpO2NvbnN0IG49dGhpcy5fcGFyc2VCbG9jaygpO3RoaXMuX2V4cGVjdCh0ci5yYnJhY2UpO3RoaXMuX2V4cGVjdCh0ci5pZmVsc2UpO2UucHVzaChuZXcgUHNJZkVsc2UodCxuKSl9fWJyZWFrfWNhc2UgdHIucmJyYWNlOmNhc2UgdHIuZW9mOnJldHVybiBuZXcgUHNCbG9jayhlKTtjYXNlIHRyLmlmOmNhc2UgdHIuaWZlbHNlOnRocm93IG5ldyBGb3JtYXRFcnJvcihgUG9zdFNjcmlwdCBmdW5jdGlvbjogdW5leHBlY3RlZCAnJHt0LnZhbHVlfScgb3BlcmF0b3IuYCk7ZGVmYXVsdDppZihhc3RfUGFyc2VyLl9pc1JlZ3VsYXJPcGVyYXRvcih0LmlkKSl7ZS5wdXNoKG5ldyBQc09wZXJhdG9yKHQuaWQpKTt0aGlzLl9hZHZhbmNlKCk7YnJlYWt9dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBQb3N0U2NyaXB0IGZ1bmN0aW9uOiB1bmV4cGVjdGVkIHRva2VuIGlkICR7dC5pZH0uYCl9fX19ZnVuY3Rpb24gcGFyc2VQb3N0U2NyaXB0RnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBhc3RfUGFyc2VyKG5ldyBsZXhlcl9MZXhlcihlKSkucGFyc2UoKX1mdW5jdGlvbiBfbm9kZXNFcXVhbChlLHQpe2lmKGU9PT10KXJldHVybiEwO2lmKGUudHlwZSE9PXQudHlwZSlyZXR1cm4hMTtzd2l0Y2goZS50eXBlKXtjYXNlIGhyOnJldHVybiBlLmluZGV4PT09dC5pbmRleDtjYXNlIHVyOnJldHVybiBlLnZhbHVlPT09dC52YWx1ZTtjYXNlIG1yOnJldHVybiBlLm9wPT09dC5vcCYmX25vZGVzRXF1YWwoZS5vcGVyYW5kLHQub3BlcmFuZCk7Y2FzZSBwcjpyZXR1cm4gZS5vcD09PXQub3AmJl9ub2Rlc0VxdWFsKGUuZmlyc3QsdC5maXJzdCkmJl9ub2Rlc0VxdWFsKGUuc2Vjb25kLHQuc2Vjb25kKTtjYXNlIGRyOnJldHVybiBfbm9kZXNFcXVhbChlLmNvbmQsdC5jb25kKSYmX25vZGVzRXF1YWwoZS50aGVuLHQudGhlbikmJl9ub2Rlc0VxdWFsKGUub3RoZXJ3aXNlLHQub3RoZXJ3aXNlKTtkZWZhdWx0OnJldHVybiExfX1jb25zdCBncj0xMDA7Y2xhc3MgUFNTdGFja1RvVHJlZXtzdGF0aWMja2U9bnVsbDtzdGF0aWMjeWU9bnVsbDtzdGF0aWMjcWU9bnVsbDtzdGF0aWMjdmU9bnVsbDtzdGF0aWMjU2UoKXt0aGlzLiNrZT1uZXcgU2V0KFt0ci5hZGQsdHIuc3ViLHRyLm11bCx0ci5kaXYsdHIuaWRpdix0ci5tb2QsdHIuZXhwLHRyLmF0YW4sdHIuZXEsdHIubmUsdHIuZ3QsdHIuZ2UsdHIubHQsdHIubGUsdHIuYW5kLHRyLm9yLHRyLnhvcix0ci5iaXRzaGlmdF0pO3RoaXMuI3llPW5ldyBTZXQoW3RyLmFicyx0ci5uZWcsdHIuY2VpbGluZyx0ci5mbG9vcix0ci5yb3VuZCx0ci50cnVuY2F0ZSx0ci5zcXJ0LHRyLnNpbix0ci5jb3MsdHIubG4sdHIubG9nLHRyLmN2aSx0ci5jdnIsdHIubm90XSk7dGhpcy4jcWU9bmV3IFNldChbdHIuYWJzLHRyLmNlaWxpbmcsdHIuY3ZpLHRyLmN2cix0ci5mbG9vcix0ci5yb3VuZCx0ci50cnVuY2F0ZV0pO3RoaXMuI3ZlPW5ldyBNYXAoW1t0ci5lcSx0ci5uZV0sW3RyLm5lLHRyLmVxXSxbdHIubHQsdHIuZ2VdLFt0ci5sZSx0ci5ndF0sW3RyLmd0LHRyLmxlXSxbdHIuZ2UsdHIubHRdXSl9ZXZhbHVhdGUoZSx0KXtQU1N0YWNrVG9UcmVlLiNrZXx8UFNTdGFja1RvVHJlZS4jU2UoKTt0aGlzLl9mYWlsZWQ9ITE7aWYodD5ncilyZXR1cm4gbnVsbDtjb25zdCBuPVtdO2ZvcihsZXQgZT0wO2U8dDtlKyspbi5wdXNoKG5ldyBQc0FyZ05vZGUoZSkpO3RoaXMuX2V2YWxCbG9jayhlLmJvZHksbik7aWYodGhpcy5fZmFpbGVkKXJldHVybiBudWxsO1BTU3RhY2tUb1RyZWUuI0FlKG4pO3JldHVybiBufXN0YXRpYyNBZShlKXtjb25zdCB0PW5ldyBNYXAsdmlzaXQ9ZT0+e2lmKCFlfHxlLnR5cGU9PT1ocnx8ZS50eXBlPT09dXIpcmV0dXJuO2NvbnN0IG49dC5nZXQoZSk/PzA7dC5zZXQoZSxuKzEpO2lmKCEobj4wKSlzd2l0Y2goZS50eXBlKXtjYXNlIG1yOnZpc2l0KGUub3BlcmFuZCk7YnJlYWs7Y2FzZSBwcjp2aXNpdChlLmZpcnN0KTt2aXNpdChlLnNlY29uZCk7YnJlYWs7Y2FzZSBkcjp2aXNpdChlLmNvbmQpO3Zpc2l0KGUudGhlbik7dmlzaXQoZS5vdGhlcndpc2UpfX07Zm9yKGNvbnN0IHQgb2YgZSl2aXNpdCh0KTtmb3IoY29uc3RbZSxuXW9mIHQpaWYobj4xKXtlLnNoYXJlZD0hMDtlLnNoYXJlZENvdW50PW59fV9ldmFsQmxvY2soZSx0KXt0aGlzLl9ldmFsQmxvY2tGcm9tKGUuaW5zdHJ1Y3Rpb25zLDAsdCl9X2V2YWxCbG9ja0Zyb20oZSx0LG4pe2ZvcihsZXQgYT10O2E8ZS5sZW5ndGgmJiF0aGlzLl9mYWlsZWQ7YSsrKXtjb25zdCB0PWVbYV07c3dpdGNoKHQudHlwZSl7Y2FzZSBvcjpuLnB1c2gobmV3IFBzQ29uc3ROb2RlKHQudmFsdWUpKTtuLmxlbmd0aD5nciYmKHRoaXMuX2ZhaWxlZD0hMCk7YnJlYWs7Y2FzZSBscjp0aGlzLl9ldmFsT3AodC5vcCxuKTticmVhaztjYXNlIGZyOntpZihuLmxlbmd0aDwxKXt0aGlzLl9mYWlsZWQ9ITA7YnJlYWt9Y29uc3Qgcz1uLnBvcCgpLHI9bi5zbGljZSgpO3RoaXMuX2V2YWxCbG9jayh0LnRoZW4sbik7aWYodGhpcy5fZmFpbGVkKWJyZWFrO2lmKG4ubGVuZ3RoPT09ci5sZW5ndGgpZm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspbltlXSE9PXJbZV0mJihuW2VdPXRoaXMuX21ha2VUZXJuYXJ5KHMsbltlXSxyW2VdKSk7ZWxzZXtpZihuLmxlbmd0aD5yLmxlbmd0aCl7aWYocy50eXBlPT09dXIpe2lmKCFzLnZhbHVlKXtuLmxlbmd0aD0wO24ucHVzaCguLi5yKX1icmVha31jb25zdCB0PW4uc2xpY2UoKTt0aGlzLl9ldmFsQmxvY2tGcm9tKGUsYSsxLHQpO2lmKHRoaXMuX2ZhaWxlZClicmVhaztjb25zdCBpPXI7dGhpcy5fZXZhbEJsb2NrRnJvbShlLGErMSxpKTtpZih0aGlzLl9mYWlsZWQpYnJlYWs7aWYodC5sZW5ndGghPT1pLmxlbmd0aCl7Y29uc3QgZT1uZXcgUHNDb25zdE5vZGUoMCk7Zm9yKDt0Lmxlbmd0aDxpLmxlbmd0aDspdC5wdXNoKGUpO2Zvcig7aS5sZW5ndGg8dC5sZW5ndGg7KWkucHVzaChlKX1uLmxlbmd0aD0wO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKW4ucHVzaCh0aGlzLl9tYWtlVGVybmFyeShzLHRbZV0saVtlXSkpO3JldHVybn10aGlzLl9mYWlsZWQ9ITB9YnJlYWt9Y2FzZSBjcjp7aWYobi5sZW5ndGg8MSl7dGhpcy5fZmFpbGVkPSEwO2JyZWFrfWNvbnN0IGU9bi5wb3AoKSxhPW4uc2xpY2UoKSxzPWEuc2xpY2UoKTt0aGlzLl9ldmFsQmxvY2sodC50aGVuLHMpO2lmKHRoaXMuX2ZhaWxlZClicmVhaztjb25zdCByPWEuc2xpY2UoKTt0aGlzLl9ldmFsQmxvY2sodC5vdGhlcndpc2Uscik7aWYodGhpcy5fZmFpbGVkKWJyZWFrO2lmKHMubGVuZ3RoIT09ci5sZW5ndGgpe2NvbnN0IGU9bmV3IFBzQ29uc3ROb2RlKDApO2Zvcig7cy5sZW5ndGg8ci5sZW5ndGg7KXMucHVzaChlKTtmb3IoO3IubGVuZ3RoPHMubGVuZ3RoOylyLnB1c2goZSl9bi5sZW5ndGg9MDtmb3IobGV0IHQ9MDt0PHMubGVuZ3RoO3QrKyluLnB1c2godGhpcy5fbWFrZVRlcm5hcnkoZSxzW3RdLHJbdF0pKTticmVha319fX1fZXZhbE9wKGUsdCl7aWYoUFNTdGFja1RvVHJlZS4ja2UuaGFzKGUpKXtpZih0Lmxlbmd0aDwyKXt0aGlzLl9mYWlsZWQ9ITA7cmV0dXJufWNvbnN0IG49dC5wb3AoKSxhPXQucG9wKCk7dC5wdXNoKHRoaXMuX21ha2VCaW5hcnkoZSxuLGEpKTtyZXR1cm59aWYoUFNTdGFja1RvVHJlZS4jeWUuaGFzKGUpKXtpZih0Lmxlbmd0aDwxKXt0aGlzLl9mYWlsZWQ9ITA7cmV0dXJufXQucHVzaCh0aGlzLl9tYWtlVW5hcnkoZSx0LnBvcCgpKSl9ZWxzZSBzd2l0Y2goZSl7Y2FzZSB0ci50cnVlOnQucHVzaChuZXcgUHNDb25zdE5vZGUoITApKTt0Lmxlbmd0aD5nciYmKHRoaXMuX2ZhaWxlZD0hMCk7YnJlYWs7Y2FzZSB0ci5mYWxzZTp0LnB1c2gobmV3IFBzQ29uc3ROb2RlKCExKSk7dC5sZW5ndGg+Z3ImJih0aGlzLl9mYWlsZWQ9ITApO2JyZWFrO2Nhc2UgdHIuZHVwOmlmKHQubGVuZ3RoPDEpe3RoaXMuX2ZhaWxlZD0hMDticmVha310LnB1c2godC5hdCgtMSkpO3QubGVuZ3RoPmdyJiYodGhpcy5fZmFpbGVkPSEwKTticmVhaztjYXNlIHRyLmV4Y2g6e2lmKHQubGVuZ3RoPDIpe3RoaXMuX2ZhaWxlZD0hMDticmVha31jb25zdCBlPXQucG9wKCksbj10LnBvcCgpO3QucHVzaChlLG4pO2JyZWFrfWNhc2UgdHIucG9wOmlmKHQubGVuZ3RoPDEpe3RoaXMuX2ZhaWxlZD0hMDticmVha310LnBvcCgpO2JyZWFrO2Nhc2UgdHIuY29weTp7aWYodC5sZW5ndGg8MSl7dGhpcy5fZmFpbGVkPSEwO2JyZWFrfWNvbnN0IGU9dC5wb3AoKTtpZihlLnR5cGU9PT11cil7Y29uc3Qgbj0wfGUudmFsdWU7aWYoMD09PW4pO2Vsc2UgaWYobjwwfHxuPnQubGVuZ3RoKXRoaXMuX2ZhaWxlZD0hMDtlbHNle3QucHVzaCguLi50LnNsaWNlKC1uKSk7dC5sZW5ndGg+Z3ImJih0aGlzLl9mYWlsZWQ9ITApfX1lbHNlIHRoaXMuX2ZhaWxlZD0hMDticmVha31jYXNlIHRyLmluZGV4OntpZih0Lmxlbmd0aDwxKXt0aGlzLl9mYWlsZWQ9ITA7YnJlYWt9Y29uc3QgZT10LnBvcCgpO2lmKGUudHlwZT09PXVyKXtjb25zdCBuPTB8ZS52YWx1ZTtuPDB8fG4+PXQubGVuZ3RoP3RoaXMuX2ZhaWxlZD0hMDp0LnB1c2godC5hdCgtbi0xKSl9ZWxzZSB0aGlzLl9mYWlsZWQ9ITA7YnJlYWt9Y2FzZSB0ci5yb2xsOntpZih0Lmxlbmd0aDwyKXt0aGlzLl9mYWlsZWQ9ITA7YnJlYWt9Y29uc3QgZT10LnBvcCgpLG49dC5wb3AoKTtpZihuLnR5cGU9PT11ciYmZS50eXBlPT09dXIpe2NvbnN0IGE9MHxuLnZhbHVlO2lmKDA9PT1hKTtlbHNlIGlmKGE8MHx8YT50Lmxlbmd0aCl0aGlzLl9mYWlsZWQ9ITA7ZWxzZXtjb25zdCBuPSgoMHxlLnZhbHVlKSVhK2EpJWE7aWYobj4wKXtjb25zdCBlPXQuc3BsaWNlKC1hLGEpO3QucHVzaCguLi5lLnNsaWNlKGEtbiksLi4uZS5zbGljZSgwLGEtbikpfX19ZWxzZSB0aGlzLl9mYWlsZWQ9ITA7YnJlYWt9ZGVmYXVsdDp0aGlzLl9mYWlsZWQ9ITB9fV9tYWtlQmluYXJ5KGUsdCxuKXtpZih0LnR5cGU9PT11ciYmbi50eXBlPT09dXIpe2NvbnN0IGE9ZnVuY3Rpb24gX2V2YWxCaW5hcnlDb25zdChlLHQsbil7c3dpdGNoKGUpe2Nhc2UgdHIuYWRkOnJldHVybiB0K247Y2FzZSB0ci5zdWI6cmV0dXJuIHQtbjtjYXNlIHRyLm11bDpyZXR1cm4gdCpuO2Nhc2UgdHIuZGl2OnJldHVybiAwIT09bj90L246MDtjYXNlIHRyLmlkaXY6cmV0dXJuIDAhPT1uP01hdGgudHJ1bmModC9uKTowO2Nhc2UgdHIubW9kOnJldHVybiAwIT09bj90LU1hdGgudHJ1bmModC9uKSpuOjA7Y2FzZSB0ci5leHA6e2NvbnN0IGU9dCoqbjtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKGUpP2U6dm9pZCAwfWNhc2UgdHIuYXRhbjp7bGV0IGU9TWF0aC5hdGFuMih0LG4pKigxODAvTWF0aC5QSSk7ZTwwJiYoZSs9MzYwKTtyZXR1cm4gZX1jYXNlIHRyLmVxOnJldHVybiB0PT09bjtjYXNlIHRyLm5lOnJldHVybiB0IT09bjtjYXNlIHRyLmd0OnJldHVybiB0Pm47Y2FzZSB0ci5nZTpyZXR1cm4gdD49bjtjYXNlIHRyLmx0OnJldHVybiB0PG47Y2FzZSB0ci5sZTpyZXR1cm4gdDw9bjtjYXNlIHRyLmFuZDpyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0P3QmJm46dCZufDA7Y2FzZSB0ci5vcjpyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0P3R8fG46dHxufDA7Y2FzZSB0ci54b3I6cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdD90IT09bjp0Xm58MDtjYXNlIHRyLmJpdHNoaWZ0OnJldHVybiBuPj0wP3Q8PG58MDp0Pj4tbnwwO2Nhc2UgdHIubWluOnJldHVybiBNYXRoLm1pbih0LG4pO2Nhc2UgdHIubWF4OnJldHVybiBNYXRoLm1heCh0LG4pO2RlZmF1bHQ6cmV0dXJufX0oZSxuLnZhbHVlLHQudmFsdWUpO2lmKHZvaWQgMCE9PWEpcmV0dXJuIG5ldyBQc0NvbnN0Tm9kZShhKX1pZihfbm9kZXNFcXVhbCh0LG4pKXN3aXRjaChlKXtjYXNlIHRyLnN1YjpyZXR1cm4gbmV3IFBzQ29uc3ROb2RlKDApO2Nhc2UgdHIueG9yOnJldHVybiBuZXcgUHNDb25zdE5vZGUodC52YWx1ZVR5cGUhPT1hciYmMCk7Y2FzZSB0ci5hbmQ6Y2FzZSB0ci5vcjpjYXNlIHRyLm1pbjpjYXNlIHRyLm1heDpyZXR1cm4gdDtjYXNlIHRyLmVxOmNhc2UgdHIuZ2U6Y2FzZSB0ci5sZTpyZXR1cm4gbmV3IFBzQ29uc3ROb2RlKCEwKTtjYXNlIHRyLm5lOmNhc2UgdHIuZ3Q6Y2FzZSB0ci5sdDpyZXR1cm4gbmV3IFBzQ29uc3ROb2RlKCExKX1pZih0LnR5cGU9PT11cil7Y29uc3QgYT10LnZhbHVlO3N3aXRjaChlKXtjYXNlIHRyLmFkZDpjYXNlIHRyLnN1YjppZigwPT09YSlyZXR1cm4gbjticmVhaztjYXNlIHRyLm11bDppZigxPT09YSlyZXR1cm4gbjtpZigwPT09YSlyZXR1cm4gdDtpZigtMT09PWEpcmV0dXJuIHRoaXMuX21ha2VVbmFyeSh0ci5uZWcsbik7YnJlYWs7Y2FzZSB0ci5kaXY6aWYoMCE9PWEpcmV0dXJuIHRoaXMuX21ha2VCaW5hcnkodHIubXVsLG5ldyBQc0NvbnN0Tm9kZSgxL2EpLG4pO2JyZWFrO2Nhc2UgdHIuaWRpdjppZigxPT09YSlyZXR1cm4gbjticmVhaztjYXNlIHRyLmV4cDppZigxPT09YSlyZXR1cm4gbjtpZigtMT09PWEpcmV0dXJuIHRoaXMuX21ha2VCaW5hcnkodHIuZGl2LG4sbmV3IFBzQ29uc3ROb2RlKDEpKTtpZiguNT09PWEpcmV0dXJuIHRoaXMuX21ha2VVbmFyeSh0ci5zcXJ0LG4pO2lmKC4yNT09PWEpe2NvbnN0IGU9dGhpcy5fbWFrZVVuYXJ5KHRyLnNxcnQsbik7cmV0dXJuIHRoaXMuX21ha2VVbmFyeSh0ci5zcXJ0LGUpfWlmKDI9PT1hKXJldHVybiB0aGlzLl9tYWtlQmluYXJ5KHRyLm11bCxuLG4pO2lmKDM9PT1hKXJldHVybiB0aGlzLl9tYWtlQmluYXJ5KHRyLm11bCx0aGlzLl9tYWtlQmluYXJ5KHRyLm11bCxuLG4pLG4pO2lmKDQ9PT1hKXtjb25zdCBlPXRoaXMuX21ha2VCaW5hcnkodHIubXVsLG4sbik7cmV0dXJuIHRoaXMuX21ha2VCaW5hcnkodHIubXVsLGUsZSl9aWYoMD09PWEpcmV0dXJuIG5ldyBQc0NvbnN0Tm9kZSgxKTticmVhaztjYXNlIHRyLmFuZDppZighMD09PWEpcmV0dXJuIG47aWYoITE9PT1hKXJldHVybiB0O2JyZWFrO2Nhc2UgdHIub3I6aWYoITE9PT1hKXJldHVybiBuO2lmKCEwPT09YSlyZXR1cm4gdDticmVhaztjYXNlIHRyLm1pbjppZihuLnR5cGU9PT1wciYmbi5vcD09PXRyLm1heCYmbi5maXJzdC50eXBlPT09dXImJm4uZmlyc3QudmFsdWU+PWEpcmV0dXJuIHQ7YnJlYWs7Y2FzZSB0ci5tYXg6aWYobi50eXBlPT09cHImJm4ub3A9PT10ci5taW4mJm4uZmlyc3QudHlwZT09PXVyJiZuLmZpcnN0LnZhbHVlPD1hKXJldHVybiB0fX1pZihuLnR5cGU9PT11cil7Y29uc3QgYT1uLnZhbHVlO3N3aXRjaChlKXtjYXNlIHRyLmFkZDppZigwPT09YSlyZXR1cm4gdDticmVhaztjYXNlIHRyLnN1YjppZigwPT09YSlyZXR1cm4gdGhpcy5fbWFrZVVuYXJ5KHRyLm5lZyx0KTticmVhaztjYXNlIHRyLm11bDppZigxPT09YSlyZXR1cm4gdDtpZigwPT09YSlyZXR1cm4gbjtpZigtMT09PWEpcmV0dXJuIHRoaXMuX21ha2VVbmFyeSh0ci5uZWcsdCk7YnJlYWs7Y2FzZSB0ci5hbmQ6aWYoITA9PT1hKXJldHVybiB0O2lmKCExPT09YSlyZXR1cm4gbjticmVhaztjYXNlIHRyLm9yOmlmKCExPT09YSlyZXR1cm4gdDtpZighMD09PWEpcmV0dXJuIG59fXJldHVybiBuZXcgUHNCaW5hcnlOb2RlKGUsdCxuLGZ1bmN0aW9uIF9iaW5hcnlWYWx1ZVR5cGUoZSx0LG4pe3N3aXRjaChlKXtjYXNlIHRyLmVxOmNhc2UgdHIubmU6Y2FzZSB0ci5ndDpjYXNlIHRyLmdlOmNhc2UgdHIubHQ6Y2FzZSB0ci5sZTpyZXR1cm4gYXI7Y2FzZSB0ci5hbmQ6Y2FzZSB0ci5vcjpjYXNlIHRyLnhvcjpyZXR1cm4gdD09PW4mJnQhPT1zcj90OnNyO2RlZmF1bHQ6cmV0dXJuIG5yfX0oZSx0LnZhbHVlVHlwZSxuLnZhbHVlVHlwZSkpfV9tYWtlVW5hcnkoZSx0KXtpZih0LnR5cGU9PT11cil7Y29uc3Qgbj1mdW5jdGlvbiBfZXZhbFVuYXJ5Q29uc3QoZSx0KXtzd2l0Y2goZSl7Y2FzZSB0ci5hYnM6cmV0dXJuIE1hdGguYWJzKHQpO2Nhc2UgdHIubmVnOnJldHVybi10O2Nhc2UgdHIuY2VpbGluZzpyZXR1cm4gTWF0aC5jZWlsKHQpO2Nhc2UgdHIuZmxvb3I6cmV0dXJuIE1hdGguZmxvb3IodCk7Y2FzZSB0ci5yb3VuZDpyZXR1cm4gTWF0aC5yb3VuZCh0KTtjYXNlIHRyLnRydW5jYXRlOnJldHVybiBNYXRoLnRydW5jKHQpO2Nhc2UgdHIuc3FydDp7Y29uc3QgZT1NYXRoLnNxcnQodCk7cmV0dXJuIE51bWJlci5pc0Zpbml0ZShlKT9lOnZvaWQgMH1jYXNlIHRyLnNpbjpyZXR1cm4gTWF0aC5zaW4odCUzNjAqTWF0aC5QSS8xODApO2Nhc2UgdHIuY29zOnJldHVybiBNYXRoLmNvcyh0JTM2MCpNYXRoLlBJLzE4MCk7Y2FzZSB0ci5sbjp7Y29uc3QgZT1NYXRoLmxvZyh0KTtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKGUpP2U6dm9pZCAwfWNhc2UgdHIubG9nOntjb25zdCBlPU1hdGgubG9nMTAodCk7cmV0dXJuIE51bWJlci5pc0Zpbml0ZShlKT9lOnZvaWQgMH1jYXNlIHRyLmN2aTpyZXR1cm4gTWF0aC50cnVuYyh0KTtjYXNlIHRyLmN2cjpyZXR1cm4gdDtjYXNlIHRyLm5vdDpyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0PyF0On50O2RlZmF1bHQ6cmV0dXJufX0oZSx0LnZhbHVlKTtpZih2b2lkIDAhPT1uKXJldHVybiBuZXcgUHNDb25zdE5vZGUobil9aWYoZT09PXRyLm5vdCYmdC50eXBlPT09cHIpe2NvbnN0IGU9UFNTdGFja1RvVHJlZS4jdmUuZ2V0KHQub3ApO2lmKHZvaWQgMCE9PWUpcmV0dXJuIG5ldyBQc0JpbmFyeU5vZGUoZSx0LmZpcnN0LHQuc2Vjb25kLGFyKX1pZihlPT09dHIubmVnJiZ0LnR5cGU9PT1wciYmdC5vcD09PXRyLnN1YilyZXR1cm4gdGhpcy5fbWFrZUJpbmFyeSh0ci5zdWIsdC5zZWNvbmQsdC5maXJzdCk7aWYodC50eXBlPT09bXIpe2lmKGU9PT10ci5uZWcmJnQub3A9PT10ci5uZWd8fGU9PT10ci5ub3QmJnQub3A9PT10ci5ub3QpcmV0dXJuIHQub3BlcmFuZDtpZihlPT09dHIuYWJzJiZ0Lm9wPT09dHIubmVnKXJldHVybiB0aGlzLl9tYWtlVW5hcnkodHIuYWJzLHQub3BlcmFuZCk7aWYoUFNTdGFja1RvVHJlZS4jcWUuaGFzKGUpJiZlPT09dC5vcClyZXR1cm4gdH1yZXR1cm4gbmV3IFBzVW5hcnlOb2RlKGUsdCxmdW5jdGlvbiBfdW5hcnlWYWx1ZVR5cGUoZSx0KXtyZXR1cm4gZT09PXRyLm5vdD90Om5yfShlLHQudmFsdWVUeXBlKSl9X21ha2VUZXJuYXJ5KGUsdCxuKXtpZihlLnR5cGU9PT11cilyZXR1cm4gZS52YWx1ZT90Om47aWYoX25vZGVzRXF1YWwodCxuKSlyZXR1cm4gdDtpZih0LnR5cGU9PT11ciYmbi50eXBlPT09dXIpe2lmKCEwPT09dC52YWx1ZSYmITE9PT1uLnZhbHVlKXJldHVybiBlO2lmKCExPT09dC52YWx1ZSYmITA9PT1uLnZhbHVlKXJldHVybiB0aGlzLl9tYWtlVW5hcnkodHIubm90LGUpfWlmKGUudHlwZT09PXByKXtjb25zdHtvcDphLGZpcnN0OnMsc2Vjb25kOnJ9PWU7aWYoYT09PXRyLmd0fHxhPT09dHIuZ2Upe2lmKF9ub2Rlc0VxdWFsKHQscykmJl9ub2Rlc0VxdWFsKG4scikpcmV0dXJuIHRoaXMuX21ha2VCaW5hcnkodHIubWluLHMscik7aWYoX25vZGVzRXF1YWwodCxyKSYmX25vZGVzRXF1YWwobixzKSlyZXR1cm4gdGhpcy5fbWFrZUJpbmFyeSh0ci5tYXgscyxyKX1lbHNlIGlmKGE9PT10ci5sdHx8YT09PXRyLmxlKXtpZihfbm9kZXNFcXVhbCh0LHMpJiZfbm9kZXNFcXVhbChuLHIpKXJldHVybiB0aGlzLl9tYWtlQmluYXJ5KHRyLm1heCxzLHIpO2lmKF9ub2Rlc0VxdWFsKHQscikmJl9ub2Rlc0VxdWFsKG4scykpcmV0dXJuIHRoaXMuX21ha2VCaW5hcnkodHIubWluLHMscil9fXJldHVybiBuZXcgUHNUZXJuYXJ5Tm9kZShlLHQsbix0LnZhbHVlVHlwZT09PW4udmFsdWVUeXBlP3QudmFsdWVUeXBlOnNyKX19Y29uc3QgYnI9MCx3cj0xLGpyPTIsa3I9Myx5cj00LHFyPTUsdnI9NixTcj03LEFyPTgseHI9OSxDcj0xMCxJcj0xMSxGcj0xMixUcj0xMyxScj0xNCxPcj0xNSxIcj0xNixEcj0xNyxNcj0xOCxOcj0xOSxQcj0yMCxFcj0yMSxfcj0yMix6cj0yMyxMcj0yNCxVcj0yNSxXcj0yNixYcj0yNyxLcj0yOCxHcj0yOSxWcj0zMCwkcj0zMSxZcj0zMixKcj0zMyxRcj0zNCxacj0zNSxlaT0zNix0aT0zNyxuaT0zOCxhaT0zOSxzaT00MCxyaT1NYXRoLlBJLzE4MCxpaT0xODAvTWF0aC5QSTtjbGFzcyBQc0pzQ29tcGlsZXJ7c3RhdGljI3hlPW5ldyBGbG9hdDY0QXJyYXkoNjQpO3N0YXRpYyNDZT1uZXcgRmxvYXQ2NEFycmF5KDY0KTtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubkluPWUubGVuZ3RoPj4xO3RoaXMubk91dD10Lmxlbmd0aD4+MTt0aGlzLnJhbmdlPXQ7dGhpcy5pcj1bXTt0aGlzLl90bXBNYXA9bmV3IE1hcDt0aGlzLl9uZXh0VG1wPTB9X2NvbXBpbGVOb2RlKGUpe2lmKGUuc2hhcmVkKXtjb25zdCB0PXRoaXMuX3RtcE1hcC5nZXQoZSk7aWYodm9pZCAwIT09dCl7dGhpcy5pci5wdXNoKHNpLHQpO3JldHVybiEwfWlmKCF0aGlzLl9jb21waWxlTm9kZUltcGwoZSkpcmV0dXJuITE7Y29uc3Qgbj10aGlzLl9uZXh0VG1wKys7dGhpcy5fdG1wTWFwLnNldChlLG4pO3RoaXMuaXIucHVzaChhaSxuKTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5fY29tcGlsZU5vZGVJbXBsKGUpfV9jb21waWxlTm9kZUltcGwoZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSBocjp0aGlzLmlyLnB1c2goYnIsZS5pbmRleCk7cmV0dXJuITA7Y2FzZSB1cjp7Y29uc3QgdD1lLnZhbHVlO3RoaXMuaXIucHVzaCh3ciwiYm9vbGVhbiI9PXR5cGVvZiB0P051bWJlcih0KTp0KTtyZXR1cm4hMH1jYXNlIG1yOnJldHVybiB0aGlzLl9jb21waWxlVW5hcnkoZSk7Y2FzZSBwcjpyZXR1cm4gdGhpcy5fY29tcGlsZUJpbmFyeShlKTtjYXNlIGRyOnJldHVybiB0aGlzLl9jb21waWxlVGVybmFyeShlKTtkZWZhdWx0OnJldHVybiExfX1fY29tcGlsZVVuYXJ5KGUpe2NvbnN0e29wOnQsb3BlcmFuZDpuLHZhbHVlVHlwZTphfT1lO2lmKHQ9PT10ci5jdnIpcmV0dXJuIHRoaXMuX2NvbXBpbGVOb2RlKG4pO2lmKCF0aGlzLl9jb21waWxlTm9kZShuKSlyZXR1cm4hMTtzd2l0Y2godCl7Y2FzZSB0ci5hYnM6dGhpcy5pci5wdXNoKHFyKTticmVhaztjYXNlIHRyLm5lZzp0aGlzLmlyLnB1c2godnIpO2JyZWFrO2Nhc2UgdHIuY2VpbGluZzp0aGlzLmlyLnB1c2goU3IpO2JyZWFrO2Nhc2UgdHIuZmxvb3I6dGhpcy5pci5wdXNoKEFyKTticmVhaztjYXNlIHRyLnJvdW5kOnRoaXMuaXIucHVzaCh4cik7YnJlYWs7Y2FzZSB0ci50cnVuY2F0ZTp0aGlzLmlyLnB1c2goQ3IpO2JyZWFrO2Nhc2UgdHIuc3FydDp0aGlzLmlyLnB1c2goVHIpO2JyZWFrO2Nhc2UgdHIuc2luOnRoaXMuaXIucHVzaChScik7YnJlYWs7Y2FzZSB0ci5jb3M6dGhpcy5pci5wdXNoKE9yKTticmVhaztjYXNlIHRyLmxuOnRoaXMuaXIucHVzaChIcik7YnJlYWs7Y2FzZSB0ci5sb2c6dGhpcy5pci5wdXNoKERyKTticmVhaztjYXNlIHRyLmN2aTp0aGlzLmlyLnB1c2goTXIpO2JyZWFrO2Nhc2UgdHIubm90OmlmKGE9PT1hcil0aGlzLmlyLnB1c2goSXIpO2Vsc2V7aWYoYSE9PW5yKXJldHVybiExO3RoaXMuaXIucHVzaChGcil9YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1yZXR1cm4hMH1fY29tcGlsZUJpbmFyeShlKXtjb25zdHtvcDp0LGZpcnN0Om4sc2Vjb25kOmF9PWU7aWYodD09PXRyLmJpdHNoaWZ0KXtpZihuLnR5cGUhPT11cnx8IU51bWJlci5pc0ludGVnZXIobi52YWx1ZSkpcmV0dXJuITE7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGEpKXJldHVybiExO3RoaXMuaXIucHVzaChOcixuLnZhbHVlKTtyZXR1cm4hMH1pZighdGhpcy5fY29tcGlsZU5vZGUoYSkpcmV0dXJuITE7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKG4pKXJldHVybiExO3N3aXRjaCh0KXtjYXNlIHRyLmFkZDp0aGlzLmlyLnB1c2goUHIpO2JyZWFrO2Nhc2UgdHIuc3ViOnRoaXMuaXIucHVzaChFcik7YnJlYWs7Y2FzZSB0ci5tdWw6dGhpcy5pci5wdXNoKF9yKTticmVhaztjYXNlIHRyLmRpdjp0aGlzLmlyLnB1c2goenIpO2JyZWFrO2Nhc2UgdHIuaWRpdjp0aGlzLmlyLnB1c2goTHIpO2JyZWFrO2Nhc2UgdHIubW9kOnRoaXMuaXIucHVzaChVcik7YnJlYWs7Y2FzZSB0ci5leHA6dGhpcy5pci5wdXNoKFdyKTticmVhaztjYXNlIHRyLmVxOnRoaXMuaXIucHVzaChYcik7YnJlYWs7Y2FzZSB0ci5uZTp0aGlzLmlyLnB1c2goS3IpO2JyZWFrO2Nhc2UgdHIuZ3Q6dGhpcy5pci5wdXNoKEdyKTticmVhaztjYXNlIHRyLmdlOnRoaXMuaXIucHVzaChWcik7YnJlYWs7Y2FzZSB0ci5sdDp0aGlzLmlyLnB1c2goJHIpO2JyZWFrO2Nhc2UgdHIubGU6dGhpcy5pci5wdXNoKFlyKTticmVhaztjYXNlIHRyLmFuZDp0aGlzLmlyLnB1c2goSnIpO2JyZWFrO2Nhc2UgdHIub3I6dGhpcy5pci5wdXNoKFFyKTticmVhaztjYXNlIHRyLnhvcjp0aGlzLmlyLnB1c2goWnIpO2JyZWFrO2Nhc2UgdHIuYXRhbjp0aGlzLmlyLnB1c2goZWkpO2JyZWFrO2Nhc2UgdHIubWluOnRoaXMuaXIucHVzaCh0aSk7YnJlYWs7Y2FzZSB0ci5tYXg6dGhpcy5pci5wdXNoKG5pKTticmVhaztkZWZhdWx0OnJldHVybiExfXJldHVybiEwfV9jb21waWxlVGVybmFyeShlKXtpZighdGhpcy5fY29tcGlsZU5vZGUoZS5jb25kKSlyZXR1cm4hMTt0aGlzLmlyLnB1c2goa3IsMCk7Y29uc3QgdD10aGlzLmlyLmxlbmd0aC0xO2lmKCF0aGlzLl9jb21waWxlTm9kZShlLnRoZW4pKXJldHVybiExO3RoaXMuaXIucHVzaCh5ciwwKTtjb25zdCBuPXRoaXMuaXIubGVuZ3RoLTE7dGhpcy5pclt0XT10aGlzLmlyLmxlbmd0aDtpZighdGhpcy5fY29tcGlsZU5vZGUoZS5vdGhlcndpc2UpKXJldHVybiExO3RoaXMuaXJbbl09dGhpcy5pci5sZW5ndGg7cmV0dXJuITB9Y29tcGlsZShlKXtjb25zdCB0PShuZXcgUFNTdGFja1RvVHJlZSkuZXZhbHVhdGUoZSx0aGlzLm5Jbik7aWYoIXR8fHQubGVuZ3RoPHRoaXMubk91dClyZXR1cm4gbnVsbDtmb3IobGV0IGU9MDtlPHRoaXMubk91dDtlKyspe2lmKCF0aGlzLl9jb21waWxlTm9kZSh0W2VdKSlyZXR1cm4gbnVsbDtjb25zdCBuPXRoaXMucmFuZ2VbMiplXSxhPXRoaXMucmFuZ2VbMiplKzFdO3RoaXMuaXIucHVzaChqcixlLG4sYSl9cmV0dXJuIG5ldyBGbG9hdDY0QXJyYXkodGhpcy5pcil9c3RhdGljIGV4ZWN1dGUoZSx0LG4sYSxzKXtsZXQgcj0wLGk9MDtjb25zdCBvPWUubGVuZ3RoLGw9dGhpcy4jeGUsZj10aGlzLiNDZTtmb3IoO3I8bzspc3dpdGNoKDB8ZVtyKytdKXtjYXNlIGJyOmxbaSsrXT10W24rKDB8ZVtyKytdKV07YnJlYWs7Y2FzZSB3cjpsW2krK109ZVtyKytdO2JyZWFrO2Nhc2UganI6e2NvbnN0IHQ9MHxlW3IrK10sbj1lW3IrK10sbz1lW3IrK107YVtzK3RdPU1hdGhDbGFtcChsWy0taV0sbixvKTticmVha31jYXNlIGtyOntjb25zdCB0PWVbcisrXTswPT09bFstLWldJiYocj10KTticmVha31jYXNlIHlyOnI9ZVtyXTticmVhaztjYXNlIHFyOmxbaS0xXT1NYXRoLmFicyhsW2ktMV0pO2JyZWFrO2Nhc2UgdnI6bFtpLTFdPS1sW2ktMV07YnJlYWs7Y2FzZSBTcjpsW2ktMV09TWF0aC5jZWlsKGxbaS0xXSk7YnJlYWs7Y2FzZSBBcjpsW2ktMV09TWF0aC5mbG9vcihsW2ktMV0pO2JyZWFrO2Nhc2UgeHI6bFtpLTFdPU1hdGguZmxvb3IobFtpLTFdKy41KTticmVhaztjYXNlIENyOmxbaS0xXT1NYXRoLnRydW5jKGxbaS0xXSk7YnJlYWs7Y2FzZSBJcjpsW2ktMV09MCE9PWxbaS0xXT8wOjE7YnJlYWs7Y2FzZSBGcjpsW2ktMV09fmxbaS0xXTticmVhaztjYXNlIFRyOmxbaS0xXT1NYXRoLnNxcnQobFtpLTFdKTticmVhaztjYXNlIFJyOmxbaS0xXT1NYXRoLnNpbihsW2ktMV0lMzYwKnJpKTticmVhaztjYXNlIE9yOmxbaS0xXT1NYXRoLmNvcyhsW2ktMV0lMzYwKnJpKTticmVhaztjYXNlIEhyOmxbaS0xXT1NYXRoLmxvZyhsW2ktMV0pO2JyZWFrO2Nhc2UgRHI6bFtpLTFdPU1hdGgubG9nMTAobFtpLTFdKTticmVhaztjYXNlIE1yOmxbaS0xXT0wfE1hdGgudHJ1bmMobFtpLTFdKTticmVhaztjYXNlIE5yOntjb25zdCB0PWVbcisrXSxuPTB8bFtpLTFdO2xbaS0xXT10PjA/bjw8dDp0PDA/bj4+LXQ6bjticmVha31jYXNlIFByOntjb25zdCBlPWxbLS1pXTtsW2ktMV0rPWU7YnJlYWt9Y2FzZSBFcjp7Y29uc3QgZT1sWy0taV07bFtpLTFdLT1lO2JyZWFrfWNhc2UgX3I6e2NvbnN0IGU9bFstLWldO2xbaS0xXSo9ZTticmVha31jYXNlIHpyOntjb25zdCBlPWxbLS1pXTtsW2ktMV09MCE9PWU/bFtpLTFdL2U6MDticmVha31jYXNlIExyOntjb25zdCBlPWxbLS1pXTtsW2ktMV09MCE9PWU/TWF0aC50cnVuYyhsW2ktMV0vZSk6MDticmVha31jYXNlIFVyOntjb25zdCBlPWxbLS1pXTtsW2ktMV09MCE9PWU/bFtpLTFdJWU6MDticmVha31jYXNlIFdyOntjb25zdCBlPWxbLS1pXTtsW2ktMV0qKj1lO2JyZWFrfWNhc2UgWHI6e2NvbnN0IGU9bFstLWldO2xbaS0xXT1sW2ktMV09PT1lPzE6MDticmVha31jYXNlIEtyOntjb25zdCBlPWxbLS1pXTtsW2ktMV09bFtpLTFdIT09ZT8xOjA7YnJlYWt9Y2FzZSBHcjp7Y29uc3QgZT1sWy0taV07bFtpLTFdPWxbaS0xXT5lPzE6MDticmVha31jYXNlIFZyOntjb25zdCBlPWxbLS1pXTtsW2ktMV09bFtpLTFdPj1lPzE6MDticmVha31jYXNlICRyOntjb25zdCBlPWxbLS1pXTtsW2ktMV09bFtpLTFdPGU/MTowO2JyZWFrfWNhc2UgWXI6e2NvbnN0IGU9bFstLWldO2xbaS0xXT1sW2ktMV08PWU/MTowO2JyZWFrfWNhc2UgSnI6e2NvbnN0IGU9MHxsWy0taV07bFtpLTFdPSgwfGxbaS0xXSkmZTticmVha31jYXNlIFFyOntjb25zdCBlPTB8bFstLWldO2xbaS0xXT0wfGxbaS0xXXxlO2JyZWFrfWNhc2UgWnI6e2NvbnN0IGU9MHxsWy0taV07bFtpLTFdPSgwfGxbaS0xXSleZTticmVha31jYXNlIGVpOntjb25zdCBlPWxbLS1pXSx0PU1hdGguYXRhbjIobFtpLTFdLGUpKmlpO2xbaS0xXT10PDA/dCszNjA6dDticmVha31jYXNlIHRpOntjb25zdCBlPWxbLS1pXTtsW2ktMV09TWF0aC5taW4obFtpLTFdLGUpO2JyZWFrfWNhc2Ugbmk6e2NvbnN0IGU9bFstLWldO2xbaS0xXT1NYXRoLm1heChsW2ktMV0sZSk7YnJlYWt9Y2FzZSBhaTpmWzB8ZVtyKytdXT1sW2ktMV07YnJlYWs7Y2FzZSBzaTpsW2krK109ZlswfGVbcisrXV19fX1jbGFzcyBQU1N0YWNrQmFzZWRJbnRlcnByZXRlcntzdGF0aWMjeGU9bmV3IEZsb2F0NjRBcnJheSgxMDApO3N0YXRpYyNJZT0wO3N0YXRpYyNGZShlKXt0aGlzLiNJZTx0aGlzLiN4ZS5sZW5ndGgmJih0aGlzLiN4ZVt0aGlzLiNJZSsrXT1lKX1zdGF0aWMjVGUoZSl7Y29uc3QgdD10aGlzLiN4ZTtzd2l0Y2goZSl7Y2FzZSB0ci50cnVlOnRoaXMuI0ZlKDEpO2JyZWFrO2Nhc2UgdHIuZmFsc2U6dGhpcy4jRmUoMCk7YnJlYWs7Y2FzZSB0ci5hYnM6dFt0aGlzLiNJZS0xXT1NYXRoLmFicyh0W3RoaXMuI0llLTFdKTticmVhaztjYXNlIHRyLm5lZzp0W3RoaXMuI0llLTFdPS10W3RoaXMuI0llLTFdO2JyZWFrO2Nhc2UgdHIuY2VpbGluZzp0W3RoaXMuI0llLTFdPU1hdGguY2VpbCh0W3RoaXMuI0llLTFdKTticmVhaztjYXNlIHRyLmZsb29yOnRbdGhpcy4jSWUtMV09TWF0aC5mbG9vcih0W3RoaXMuI0llLTFdKTticmVhaztjYXNlIHRyLnJvdW5kOnRbdGhpcy4jSWUtMV09TWF0aC5mbG9vcih0W3RoaXMuI0llLTFdKy41KTticmVhaztjYXNlIHRyLnRydW5jYXRlOnRbdGhpcy4jSWUtMV09TWF0aC50cnVuYyh0W3RoaXMuI0llLTFdKTticmVhaztjYXNlIHRyLnNxcnQ6dFt0aGlzLiNJZS0xXT1NYXRoLnNxcnQodFt0aGlzLiNJZS0xXSk7YnJlYWs7Y2FzZSB0ci5zaW46dFt0aGlzLiNJZS0xXT1NYXRoLnNpbih0W3RoaXMuI0llLTFdJTM2MCpyaSk7YnJlYWs7Y2FzZSB0ci5jb3M6dFt0aGlzLiNJZS0xXT1NYXRoLmNvcyh0W3RoaXMuI0llLTFdJTM2MCpyaSk7YnJlYWs7Y2FzZSB0ci5sbjp0W3RoaXMuI0llLTFdPU1hdGgubG9nKHRbdGhpcy4jSWUtMV0pO2JyZWFrO2Nhc2UgdHIubG9nOnRbdGhpcy4jSWUtMV09TWF0aC5sb2cxMCh0W3RoaXMuI0llLTFdKTticmVhaztjYXNlIHRyLmN2aTp0W3RoaXMuI0llLTFdPTB8TWF0aC50cnVuYyh0W3RoaXMuI0llLTFdKTticmVhaztjYXNlIHRyLmN2cjpicmVhaztjYXNlIHRyLm5vdDp7Y29uc3QgZT10W3RoaXMuI0llLTFdO3RbdGhpcy4jSWUtMV09MD09PWV8fDE9PT1lPzEtZTp+ZTticmVha31jYXNlIHRyLmFkZDp7Y29uc3QgZT10Wy0tdGhpcy4jSWVdO3RbdGhpcy4jSWUtMV0rPWU7YnJlYWt9Y2FzZSB0ci5zdWI6e2NvbnN0IGU9dFstLXRoaXMuI0llXTt0W3RoaXMuI0llLTFdLT1lO2JyZWFrfWNhc2UgdHIubXVsOntjb25zdCBlPXRbLS10aGlzLiNJZV07dFt0aGlzLiNJZS0xXSo9ZTticmVha31jYXNlIHRyLmRpdjp7Y29uc3QgZT10Wy0tdGhpcy4jSWVdO3RbdGhpcy4jSWUtMV09MCE9PWU/dFt0aGlzLiNJZS0xXS9lOjA7YnJlYWt9Y2FzZSB0ci5pZGl2Ontjb25zdCBlPXRbLS10aGlzLiNJZV07dFt0aGlzLiNJZS0xXT0wIT09ZT9NYXRoLnRydW5jKHRbdGhpcy4jSWUtMV0vZSk6MDticmVha31jYXNlIHRyLm1vZDp7Y29uc3QgZT10Wy0tdGhpcy4jSWVdO3RbdGhpcy4jSWUtMV09MCE9PWU/dFt0aGlzLiNJZS0xXSVlOjA7YnJlYWt9Y2FzZSB0ci5leHA6e2NvbnN0IGU9dFstLXRoaXMuI0llXTt0W3RoaXMuI0llLTFdKio9ZTticmVha31jYXNlIHRyLmF0YW46e2NvbnN0IGU9dFstLXRoaXMuI0llXSxuPU1hdGguYXRhbjIodFt0aGlzLiNJZS0xXSxlKSppaTt0W3RoaXMuI0llLTFdPW48MD9uKzM2MDpuO2JyZWFrfWNhc2UgdHIuZXE6e2NvbnN0IGU9dFstLXRoaXMuI0llXTt0W3RoaXMuI0llLTFdPXRbdGhpcy4jSWUtMV09PT1lPzE6MDticmVha31jYXNlIHRyLm5lOntjb25zdCBlPXRbLS10aGlzLiNJZV07dFt0aGlzLiNJZS0xXT10W3RoaXMuI0llLTFdIT09ZT8xOjA7YnJlYWt9Y2FzZSB0ci5ndDp7Y29uc3QgZT10Wy0tdGhpcy4jSWVdO3RbdGhpcy4jSWUtMV09dFt0aGlzLiNJZS0xXT5lPzE6MDticmVha31jYXNlIHRyLmdlOntjb25zdCBlPXRbLS10aGlzLiNJZV07dFt0aGlzLiNJZS0xXT10W3RoaXMuI0llLTFdPj1lPzE6MDticmVha31jYXNlIHRyLmx0Ontjb25zdCBlPXRbLS10aGlzLiNJZV07dFt0aGlzLiNJZS0xXT10W3RoaXMuI0llLTFdPGU/MTowO2JyZWFrfWNhc2UgdHIubGU6e2NvbnN0IGU9dFstLXRoaXMuI0llXTt0W3RoaXMuI0llLTFdPXRbdGhpcy4jSWUtMV08PWU/MTowO2JyZWFrfWNhc2UgdHIuYW5kOntjb25zdCBlPTB8dFstLXRoaXMuI0llXTt0W3RoaXMuI0llLTFdPSgwfHRbdGhpcy4jSWUtMV0pJmU7YnJlYWt9Y2FzZSB0ci5vcjp7Y29uc3QgZT0wfHRbLS10aGlzLiNJZV07dFt0aGlzLiNJZS0xXT0wfHRbdGhpcy4jSWUtMV18ZTticmVha31jYXNlIHRyLnhvcjp7Y29uc3QgZT0wfHRbLS10aGlzLiNJZV07dFt0aGlzLiNJZS0xXT0oMHx0W3RoaXMuI0llLTFdKV5lO2JyZWFrfWNhc2UgdHIuYml0c2hpZnQ6e2NvbnN0IGU9MHx0Wy0tdGhpcy4jSWVdLG49MHx0W3RoaXMuI0llLTFdO3RbdGhpcy4jSWUtMV09ZT4wP248PGU6bj4+LWU7YnJlYWt9Y2FzZSB0ci5taW46e2NvbnN0IGU9dFstLXRoaXMuI0llXTt0W3RoaXMuI0llLTFdPU1hdGgubWluKHRbdGhpcy4jSWUtMV0sZSk7YnJlYWt9Y2FzZSB0ci5tYXg6e2NvbnN0IGU9dFstLXRoaXMuI0llXTt0W3RoaXMuI0llLTFdPU1hdGgubWF4KHRbdGhpcy4jSWUtMV0sZSk7YnJlYWt9Y2FzZSB0ci5kdXA6dGhpcy4jRmUodFt0aGlzLiNJZS0xXSk7YnJlYWs7Y2FzZSB0ci5leGNoOntjb25zdCBlPXRbLS10aGlzLiNJZV0sbj10Wy0tdGhpcy4jSWVdO3RoaXMuI0ZlKGUpO3RoaXMuI0ZlKG4pO2JyZWFrfWNhc2UgdHIucG9wOnRoaXMuI0llLS07YnJlYWs7Y2FzZSB0ci5jb3B5Ontjb25zdCBlPU1hdGgudHJ1bmModFstLXRoaXMuI0llXSksbj10aGlzLiNJZS1lO2ZvcihsZXQgYT0wO2E8ZTthKyspdGhpcy4jRmUodFtuK2FdKTticmVha31jYXNlIHRyLmluZGV4Ontjb25zdCBlPU1hdGgudHJ1bmModFstLXRoaXMuI0llXSk7dGhpcy4jRmUodFt0aGlzLiNJZS0xLWVdKTticmVha31jYXNlIHRyLnJvbGw6e2NvbnN0IGU9TWF0aC50cnVuYyh0Wy0tdGhpcy4jSWVdKSxuPU1hdGgudHJ1bmModFstLXRoaXMuI0llXSk7aWYobj4xJiYwIT09ZSl7Y29uc3QgYT0oZSVuK24pJW47aWYoMCE9PWEpe2NvbnN0IGU9dGhpcy4jSWUtbixzPXQuc2xpY2UoZSx0aGlzLiNJZSk7Zm9yKGxldCByPTA7cjxuO3IrKyl0W2Urcl09c1soci1hK24pJW5dfX1icmVha319fXN0YXRpYyNSZShlKXtmb3IoY29uc3QgdCBvZiBlKXN3aXRjaCh0LnR5cGUpe2Nhc2Ugb3I6dGhpcy4jRmUodC52YWx1ZSk7YnJlYWs7Y2FzZSBscjp0aGlzLiNUZSh0Lm9wKTticmVhaztjYXNlIGZyOjAhPT10aGlzLiN4ZVstLXRoaXMuI0llXSYmdGhpcy4jUmUodC50aGVuLmluc3RydWN0aW9ucyk7YnJlYWs7Y2FzZSBjcjowIT09dGhpcy4jeGVbLS10aGlzLiNJZV0/dGhpcy4jUmUodC50aGVuLmluc3RydWN0aW9ucyk6dGhpcy4jUmUodC5vdGhlcndpc2UuaW5zdHJ1Y3Rpb25zKX19c3RhdGljIGJ1aWxkKGUsdCxuKXtjb25zdCBhPXQubGVuZ3RoPj4xLHM9bi5sZW5ndGg+PjEse2luc3RydWN0aW9uczpyfT1lLmJvZHk7cmV0dXJuKGUsdCxpLG8pPT57dGhpcy4jSWU9MDtmb3IobGV0IG49MDtuPGE7bisrKXRoaXMuI0ZlKGVbdCtuXSk7dGhpcy4jUmUocik7Y29uc3QgbD10aGlzLiNJZS1zO2ZvcihsZXQgZT0wO2U8cztlKyspe2NvbnN0IHQ9bCtlPj0wP3RoaXMuI3hlW2wrZV06MDtpW28rZV09TWF0aENsYW1wKG5bMiplKzFdLG5bMiplXSx0KX19fX1jb25zdCBvaT17aWY6NCxlbHNlOjUsZW5kOjExLHNlbGVjdDoyNyxjYWxsOjE2LGxvY2FsX2dldDozMixsb2NhbF9zZXQ6MzMsbG9jYWxfdGVlOjM0LGkzMl9jb25zdDo2NSxpMzJfZXF6OjY5LGkzMl9hbmQ6MTEzLGkzMl9vcjoxMTQsaTMyX3hvcjoxMTUsaTMyX3NobDoxMTYsaTMyX3Nocl9zOjExNyxpMzJfdHJ1bmNfZjY0X3M6MTcwLGY2NF9jb25zdDo2OCxmNjRfZXE6OTcsZjY0X25lOjk4LGY2NF9sdDo5OSxmNjRfZ3Q6MTAwLGY2NF9sZToxMDEsZjY0X2dlOjEwMixmNjRfYWJzOjE1MyxmNjRfbmVnOjE1NCxmNjRfY2VpbDoxNTUsZjY0X2Zsb29yOjE1NixmNjRfdHJ1bmM6MTU3LGY2NF9uZWFyZXN0OjE1OCxmNjRfc3FydDoxNTksZjY0X2FkZDoxNjAsZjY0X3N1YjoxNjEsZjY0X211bDoxNjIsZjY0X2RpdjoxNjMsZjY0X21pbjoxNjQsZjY0X21heDoxNjUsZjY0X2NvbnZlcnRfaTMyX3M6MTgzLGY2NF9zdG9yZTo1N30sbGk9MTI0LGZpPTEsY2k9MixoaT0zLHVpPTUsbWk9NyxwaT0xMDtmdW5jdGlvbiB1bnNpZ25lZExFQjEyOChlKXtjb25zdCB0PVtdO2Rve2xldCBuPTEyNyZlOzAhPT0oZT4+Pj03KSYmKG58PTEyOCk7dC5wdXNoKG4pfXdoaWxlKDAhPT1lKTtyZXR1cm4gdH1mdW5jdGlvbiBlbmNvZGVBU0NJSVN0cmluZyhlKXtyZXR1cm5bLi4udW5zaWduZWRMRUIxMjgoZS5sZW5ndGgpLC4uLkFycmF5LmZyb20oZSxlPT5lLmNoYXJDb2RlQXQoMCkpXX1mdW5jdGlvbiBzZWN0aW9uKGUsdCl7cmV0dXJuW2UsLi4udW5zaWduZWRMRUIxMjgodC5sZW5ndGgpLC4uLnRdfWZ1bmN0aW9uIHZlYyhlKXtjb25zdCB0PXVuc2lnbmVkTEVCMTI4KGUubGVuZ3RoKTtmb3IoY29uc3QgbiBvZiBlKWlmKCJudW1iZXIiIT10eXBlb2Ygbilmb3IoY29uc3QgZSBvZiBuKXQucHVzaChlKTtlbHNlIHQucHVzaChuKTtyZXR1cm4gdH1jb25zdCBkaT1bWyJzaW4iLCJNYXRoIiwic2luIixbbGldLFtsaV1dLFsiY29zIiwiTWF0aCIsImNvcyIsW2xpXSxbbGldXSxbImF0YW4yIiwiTWF0aCIsImF0YW4yIixbbGksbGldLFtsaV1dLFsibG9nIiwiTWF0aCIsImxvZyIsW2xpXSxbbGldXSxbImxvZzEwIiwiTWF0aCIsImxvZzEwIixbbGldLFtsaV1dLFsicG93IiwiTWF0aCIsInBvdyIsW2xpLGxpXSxbbGldXV0sZ2k9e01hdGg6T2JqZWN0LmZyb21FbnRyaWVzKGRpLm1hcCgoW2VdKT0+W2UsTWF0aFtlXV0pKX07Y2xhc3MgUHNXYXNtQ29tcGlsZXJ7c3RhdGljI09lPSExO3N0YXRpYyNIZT1udWxsO3N0YXRpYyNCZT1udWxsO3N0YXRpYyNEZT0wO3N0YXRpYyNNZT0wO3N0YXRpYyNOZT1udWxsO3N0YXRpYyNQZT1udWxsO3N0YXRpYyNFZT1udWxsO3N0YXRpYyNfZT1udWxsO3N0YXRpYyN6ZT1udWxsO3N0YXRpYyNMZT1udWxsO3N0YXRpYyNVZT1udWxsO3N0YXRpYyNXZT1udWxsO3N0YXRpYyNTZSgpe3RoaXMuI0hlPW5ldyBNYXAoW1t0ci5lcSxvaS5mNjRfZXFdLFt0ci5uZSxvaS5mNjRfbmVdLFt0ci5sdCxvaS5mNjRfbHRdLFt0ci5sZSxvaS5mNjRfbGVdLFt0ci5ndCxvaS5mNjRfZ3RdLFt0ci5nZSxvaS5mNjRfZ2VdXSk7dGhpcy4jQmU9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IGU9MDtlPGRpLmxlbmd0aDtlKyspdGhpcy4jQmVbZGlbZV1bMF1dPWU7dGhpcy4jRGU9TWF0aC5QSS8xODA7dGhpcy4jTWU9MTgwL01hdGguUEk7dGhpcy4jTmU9ZGkubWFwKChbLCwsZSx0XSk9Pls5NiwuLi52ZWMoZSksLi4udmVjKHQpXSk7dGhpcy4jUGU9bmV3IFVpbnQ4QXJyYXkoc2VjdGlvbihjaSx2ZWMoZGkubWFwKChbLGUsdF0sbik9PlsuLi5lbmNvZGVBU0NJSVN0cmluZyhlKSwuLi5lbmNvZGVBU0NJSVN0cmluZyh0KSwwLC4uLnVuc2lnbmVkTEVCMTI4KG4rMSldKSkpKTt0aGlzLiNFZT1uZXcgVWludDhBcnJheShzZWN0aW9uKGhpLHZlYyhbWzBdXSkpKTt0aGlzLiNfZT1uZXcgVWludDhBcnJheShzZWN0aW9uKHVpLHZlYyhbWzAsMV1dKSkpO3RoaXMuI3plPW5ldyBVaW50OEFycmF5KHNlY3Rpb24obWksdmVjKFtbLi4uZW5jb2RlQVNDSUlTdHJpbmcoImZuIiksMCwuLi51bnNpZ25lZExFQjEyOChkaS5sZW5ndGgpXSxbLi4uZW5jb2RlQVNDSUlTdHJpbmcoIm1lbSIpLDIsMF1dKSkpO3RoaXMuI0xlPW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMF0pO2NvbnN0IGU9bmV3IEFycmF5QnVmZmVyKDgpO3RoaXMuI1VlPW5ldyBEYXRhVmlldyhlKTt0aGlzLiNXZT1uZXcgVWludDhBcnJheShlKTt0aGlzLiNPZT0hMH1jb25zdHJ1Y3RvcihlLHQpe1BzV2FzbUNvbXBpbGVyLiNPZXx8UHNXYXNtQ29tcGlsZXIuI1NlKCk7dGhpcy5fbkluPWUubGVuZ3RoPj4xO3RoaXMuX25PdXQ9dC5sZW5ndGg+PjE7dGhpcy5fcmFuZ2U9dDt0aGlzLl9jb2RlPVtdO3RoaXMuX25leHRMb2NhbD10aGlzLl9uSW47dGhpcy5fZnJlZUxvY2Fscz1bXTt0aGlzLl9zaGFyZWRMb2NhbHM9bmV3IE1hcH1fYWxsb2NMb2NhbCgpe3JldHVybiB0aGlzLl9mcmVlTG9jYWxzLnBvcCgpPz90aGlzLl9uZXh0TG9jYWwrK31fcmVsZWFzZUxvY2FsKGUpe3RoaXMuX2ZyZWVMb2NhbHMucHVzaChlKX1fZW1pdFVMRUIxMjgoZSl7ZG97bGV0IHQ9MTI3JmU7MCE9PShlPj4+PTcpJiYodHw9MTI4KTt0aGlzLl9jb2RlLnB1c2godCl9d2hpbGUoMCE9PWUpfV9lbWl0U0xFQjEyOChlKXtmb3IoOzspe2NvbnN0IHQ9MTI3JmU7aWYoMD09PShlPj49NykmJiEoNjQmdCl8fC0xPT09ZSYmNjQmdCl7dGhpcy5fY29kZS5wdXNoKHQpO3JldHVybn10aGlzLl9jb2RlLnB1c2goMTI4fHQpfX1fZW1pdEY2NENvbnN0KGUpe3RoaXMuX2NvZGUucHVzaChvaS5mNjRfY29uc3QpO1BzV2FzbUNvbXBpbGVyLiNVZS5zZXRGbG9hdDY0KDAsZSwhMCk7Zm9yKGxldCBlPTA7ZTw4O2UrKyl0aGlzLl9jb2RlLnB1c2goUHNXYXNtQ29tcGlsZXIuI1dlW2VdKX1fZW1pdExvY2FsR2V0KGUpe3RoaXMuX2NvZGUucHVzaChvaS5sb2NhbF9nZXQpO3RoaXMuX2VtaXRVTEVCMTI4KGUpfV9lbWl0TG9jYWxTZXQoZSl7dGhpcy5fY29kZS5wdXNoKG9pLmxvY2FsX3NldCk7dGhpcy5fZW1pdFVMRUIxMjgoZSl9X2VtaXRMb2NhbFRlZShlKXt0aGlzLl9jb2RlLnB1c2gob2kubG9jYWxfdGVlKTt0aGlzLl9lbWl0VUxFQjEyOChlKX1fY29tcGlsZU5vZGUoZSl7aWYoZS5zaGFyZWQpe2NvbnN0IHQ9dGhpcy5fc2hhcmVkTG9jYWxzLmdldChlKTtpZih2b2lkIDAhPT10KXt0aGlzLl9lbWl0TG9jYWxHZXQodC5sb2NhbCk7MD09PS0tdC5yZW1haW5pbmcmJnRoaXMuX3JlbGVhc2VMb2NhbCh0LmxvY2FsKTtyZXR1cm4hMH1pZighdGhpcy5fY29tcGlsZU5vZGVJbXBsKGUpKXJldHVybiExO2NvbnN0IG49dGhpcy5fYWxsb2NMb2NhbCgpO3RoaXMuX3NoYXJlZExvY2Fscy5zZXQoZSx7bG9jYWw6bixyZW1haW5pbmc6ZS5zaGFyZWRDb3VudC0xfSk7dGhpcy5fZW1pdExvY2FsVGVlKG4pO3JldHVybiEwfXJldHVybiB0aGlzLl9jb21waWxlTm9kZUltcGwoZSl9X2NvbXBpbGVOb2RlSW1wbChlKXtzd2l0Y2goZS50eXBlKXtjYXNlIGhyOnRoaXMuX2VtaXRMb2NhbEdldChlLmluZGV4KTtyZXR1cm4hMDtjYXNlIHVyOntsZXQgdD1lLnZhbHVlOyJib29sZWFuIj09dHlwZW9mIHQmJih0PXQ/MTowKTt0aGlzLl9lbWl0RjY0Q29uc3QodCk7cmV0dXJuITB9Y2FzZSBtcjpyZXR1cm4gdGhpcy5fY29tcGlsZVVuYXJ5Tm9kZShlKTtjYXNlIHByOnJldHVybiB0aGlzLl9jb21waWxlQmluYXJ5Tm9kZShlKTtjYXNlIGRyOnJldHVybiB0aGlzLl9jb21waWxlVGVybmFyeU5vZGUoZSk7ZGVmYXVsdDpyZXR1cm4hMX19X2NvbXBpbGVTaW5Db3NOb2RlKGUpe2NvbnN0IHQ9dGhpcy5fYWxsb2NMb2NhbCgpO3RyeXtpZighdGhpcy5fY29tcGlsZU5vZGUoZS5vcGVyYW5kKSlyZXR1cm4hMTtjb25zdCBuPXRoaXMuX2NvZGU7dGhpcy5fZW1pdExvY2FsU2V0KHQpO3RoaXMuX2VtaXRMb2NhbEdldCh0KTt0aGlzLl9lbWl0TG9jYWxHZXQodCk7dGhpcy5fZW1pdEY2NENvbnN0KDM2MCk7bi5wdXNoKG9pLmY2NF9kaXYsb2kuZjY0X3RydW5jKTt0aGlzLl9lbWl0RjY0Q29uc3QoMzYwKTtuLnB1c2gob2kuZjY0X211bCxvaS5mNjRfc3ViKTt0aGlzLl9lbWl0RjY0Q29uc3QoUHNXYXNtQ29tcGlsZXIuI0RlKTtuLnB1c2gob2kuZjY0X211bCxvaS5jYWxsKTt0aGlzLl9lbWl0VUxFQjEyOChQc1dhc21Db21waWxlci4jQmVbZS5vcD09PXRyLnNpbj8ic2luIjoiY29zIl0pO3JldHVybiEwfWZpbmFsbHl7dGhpcy5fcmVsZWFzZUxvY2FsKHQpfX1fY29tcGlsZVVuYXJ5Tm9kZShlKXtjb25zdCB0PXRoaXMuX2NvZGU7aWYoZS5vcD09PXRyLnNpbnx8ZS5vcD09PXRyLmNvcylyZXR1cm4gdGhpcy5fY29tcGlsZVNpbkNvc05vZGUoZSk7aWYoZS5vcD09PXRyLm5vdCl7aWYoZS52YWx1ZVR5cGU9PT1hcil7aWYoIXRoaXMuX2NvbXBpbGVOb2RlQXNCb29sSTMyKGUub3BlcmFuZCkpcmV0dXJuITE7dC5wdXNoKG9pLmkzMl9lcXosb2kuZjY0X2NvbnZlcnRfaTMyX3MpO3JldHVybiEwfWlmKGUudmFsdWVUeXBlPT09bnIpe2lmKCF0aGlzLl9jb21waWxlTm9kZShlLm9wZXJhbmQpKXJldHVybiExO3QucHVzaChvaS5pMzJfdHJ1bmNfZjY0X3Msb2kuaTMyX2NvbnN0LDEyNyxvaS5pMzJfeG9yLG9pLmY2NF9jb252ZXJ0X2kzMl9zKTtyZXR1cm4hMH1yZXR1cm4hMX1pZighdGhpcy5fY29tcGlsZU5vZGUoZS5vcGVyYW5kKSlyZXR1cm4hMTtzd2l0Y2goZS5vcCl7Y2FzZSB0ci5hYnM6dC5wdXNoKG9pLmY2NF9hYnMpO2JyZWFrO2Nhc2UgdHIubmVnOnQucHVzaChvaS5mNjRfbmVnKTticmVhaztjYXNlIHRyLnNxcnQ6dC5wdXNoKG9pLmY2NF9zcXJ0KTticmVhaztjYXNlIHRyLmZsb29yOnQucHVzaChvaS5mNjRfZmxvb3IpO2JyZWFrO2Nhc2UgdHIuY2VpbGluZzp0LnB1c2gob2kuZjY0X2NlaWwpO2JyZWFrO2Nhc2UgdHIucm91bmQ6dGhpcy5fZW1pdEY2NENvbnN0KC41KTt0LnB1c2gob2kuZjY0X2FkZCxvaS5mNjRfZmxvb3IpO2JyZWFrO2Nhc2UgdHIudHJ1bmNhdGU6dC5wdXNoKG9pLmY2NF90cnVuYyk7YnJlYWs7Y2FzZSB0ci5jdmk6dC5wdXNoKG9pLmkzMl90cnVuY19mNjRfcyxvaS5mNjRfY29udmVydF9pMzJfcyk7YnJlYWs7Y2FzZSB0ci5jdnI6YnJlYWs7Y2FzZSB0ci5sbjp0LnB1c2gob2kuY2FsbCk7dGhpcy5fZW1pdFVMRUIxMjgoUHNXYXNtQ29tcGlsZXIuI0JlLmxvZyk7YnJlYWs7Y2FzZSB0ci5sb2c6dC5wdXNoKG9pLmNhbGwpO3RoaXMuX2VtaXRVTEVCMTI4KFBzV2FzbUNvbXBpbGVyLiNCZS5sb2cxMCk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1yZXR1cm4hMH1fY29tcGlsZVNhZmVEaXZOb2RlKGUsdCl7Y29uc3Qgbj10aGlzLl9hbGxvY0xvY2FsKCk7dHJ5e2lmKCF0aGlzLl9jb21waWxlTm9kZSh0KSlyZXR1cm4hMTtpZighdGhpcy5fY29tcGlsZU5vZGUoZSkpcmV0dXJuITE7Y29uc3QgYT10aGlzLl9jb2RlO3RoaXMuX2VtaXRMb2NhbFRlZShuKTthLnB1c2gob2kuZjY0X2Rpdik7dGhpcy5fZW1pdEY2NENvbnN0KDApO3RoaXMuX2VtaXRMb2NhbEdldChuKTt0aGlzLl9lbWl0RjY0Q29uc3QoMCk7YS5wdXNoKG9pLmY2NF9uZSxvaS5zZWxlY3QpO3JldHVybiEwfWZpbmFsbHl7dGhpcy5fcmVsZWFzZUxvY2FsKG4pfX1fY29tcGlsZVNhZmVJZGl2Tm9kZShlLHQpe2NvbnN0IG49dGhpcy5fYWxsb2NMb2NhbCgpO3RyeXtpZighdGhpcy5fY29tcGlsZU5vZGUodCkpcmV0dXJuITE7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUpKXJldHVybiExO2NvbnN0IGE9dGhpcy5fY29kZTt0aGlzLl9lbWl0TG9jYWxUZWUobik7YS5wdXNoKG9pLmY2NF9kaXYsb2kuZjY0X3RydW5jKTt0aGlzLl9lbWl0RjY0Q29uc3QoMCk7dGhpcy5fZW1pdExvY2FsR2V0KG4pO3RoaXMuX2VtaXRGNjRDb25zdCgwKTthLnB1c2gob2kuZjY0X25lLG9pLnNlbGVjdCk7cmV0dXJuITB9ZmluYWxseXt0aGlzLl9yZWxlYXNlTG9jYWwobil9fV9jb21waWxlQml0c2hpZnROb2RlKGUsdCl7aWYoZS50eXBlIT09dXJ8fCFOdW1iZXIuaXNJbnRlZ2VyKGUudmFsdWUpKXJldHVybiExO2lmKCF0aGlzLl9jb21waWxlTm9kZSh0KSlyZXR1cm4hMTtjb25zdCBuPXRoaXMuX2NvZGU7bi5wdXNoKG9pLmkzMl90cnVuY19mNjRfcyk7Y29uc3QgYT1lLnZhbHVlO2lmKGE+MCl7bi5wdXNoKG9pLmkzMl9jb25zdCk7dGhpcy5fZW1pdFNMRUIxMjgoYSk7bi5wdXNoKG9pLmkzMl9zaGwpfWVsc2UgaWYoYTwwKXtuLnB1c2gob2kuaTMyX2NvbnN0KTt0aGlzLl9lbWl0U0xFQjEyOCgtYSk7bi5wdXNoKG9pLmkzMl9zaHJfcyl9bi5wdXNoKG9pLmY2NF9jb252ZXJ0X2kzMl9zKTtyZXR1cm4hMH1fY29tcGlsZU1vZE5vZGUoZSx0KXtpZihlLnR5cGU9PT11ciYmMD09PWUudmFsdWUpe2lmKCF0aGlzLl9jb21waWxlTm9kZSh0KSlyZXR1cm4hMTt0aGlzLl9jb2RlLnB1c2gob2kuZHJvcCk7dGhpcy5fZW1pdEY2NENvbnN0KDApO3JldHVybiEwfWNvbnN0IG49dGhpcy5fYWxsb2NMb2NhbCgpO3RyeXtpZighdGhpcy5fY29tcGlsZU5vZGUodCkpcmV0dXJuITE7dGhpcy5fZW1pdExvY2FsVGVlKG4pO2NvbnN0IGE9dGhpcy5fY29kZTtpZihlLnR5cGU9PT11cil7dGhpcy5fZW1pdExvY2FsR2V0KG4pO3RoaXMuX2VtaXRGNjRDb25zdChlLnZhbHVlKTthLnB1c2gob2kuZjY0X2RpdixvaS5mNjRfdHJ1bmMpO3RoaXMuX2VtaXRGNjRDb25zdChlLnZhbHVlKTthLnB1c2gob2kuZjY0X211bCxvaS5mNjRfc3ViKX1lbHNle2NvbnN0IHQ9dGhpcy5fYWxsb2NMb2NhbCgpO3RyeXtpZighdGhpcy5fY29tcGlsZU5vZGUoZSkpcmV0dXJuITE7dGhpcy5fZW1pdExvY2FsU2V0KHQpO3RoaXMuX2VtaXRMb2NhbEdldChuKTt0aGlzLl9lbWl0TG9jYWxHZXQodCk7YS5wdXNoKG9pLmY2NF9kaXYsb2kuZjY0X3RydW5jKTt0aGlzLl9lbWl0TG9jYWxHZXQodCk7YS5wdXNoKG9pLmY2NF9tdWwsb2kuZjY0X3N1Yik7dGhpcy5fZW1pdEY2NENvbnN0KDApO3RoaXMuX2VtaXRMb2NhbEdldCh0KTt0aGlzLl9lbWl0RjY0Q29uc3QoMCk7YS5wdXNoKG9pLmY2NF9uZSxvaS5zZWxlY3QpfWZpbmFsbHl7dGhpcy5fcmVsZWFzZUxvY2FsKHQpfX1yZXR1cm4hMH1maW5hbGx5e3RoaXMuX3JlbGVhc2VMb2NhbChuKX19X2NvbXBpbGVBdGFuTm9kZShlLHQpe2NvbnN0IG49dGhpcy5fYWxsb2NMb2NhbCgpO3RyeXtpZighdGhpcy5fY29tcGlsZU5vZGUodCkpcmV0dXJuITE7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUpKXJldHVybiExO2NvbnN0IGE9dGhpcy5fY29kZTthLnB1c2gob2kuY2FsbCk7dGhpcy5fZW1pdFVMRUIxMjgoUHNXYXNtQ29tcGlsZXIuI0JlLmF0YW4yKTt0aGlzLl9lbWl0RjY0Q29uc3QoUHNXYXNtQ29tcGlsZXIuI01lKTthLnB1c2gob2kuZjY0X211bCk7dGhpcy5fZW1pdExvY2FsVGVlKG4pO3RoaXMuX2VtaXRGNjRDb25zdCgwKTthLnB1c2gob2kuZjY0X2x0LG9pLmlmLGxpKTt0aGlzLl9lbWl0TG9jYWxHZXQobik7dGhpcy5fZW1pdEY2NENvbnN0KDM2MCk7YS5wdXNoKG9pLmY2NF9hZGQsb2kuZWxzZSk7dGhpcy5fZW1pdExvY2FsR2V0KG4pO2EucHVzaChvaS5lbmQpO3JldHVybiEwfWZpbmFsbHl7dGhpcy5fcmVsZWFzZUxvY2FsKG4pfX1fY29tcGlsZUJpdHdpc2VOb2RlKGUsdCxuKXtpZighdGhpcy5fY29tcGlsZUJpdHdpc2VPcGVyYW5kSTMyKG4pKXJldHVybiExO2lmKCF0aGlzLl9jb21waWxlQml0d2lzZU9wZXJhbmRJMzIodCkpcmV0dXJuITE7Y29uc3QgYT10aGlzLl9jb2RlO3N3aXRjaChlKXtjYXNlIHRyLmFuZDphLnB1c2gob2kuaTMyX2FuZCk7YnJlYWs7Y2FzZSB0ci5vcjphLnB1c2gob2kuaTMyX29yKTticmVhaztjYXNlIHRyLnhvcjphLnB1c2gob2kuaTMyX3hvcik7YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1hLnB1c2gob2kuZjY0X2NvbnZlcnRfaTMyX3MpO3JldHVybiEwfV9jb21waWxlQml0d2lzZU9wZXJhbmRJMzIoZSl7aWYoZS52YWx1ZVR5cGU9PT1hcilyZXR1cm4gdGhpcy5fY29tcGlsZU5vZGVBc0Jvb2xJMzIoZSk7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUpKXJldHVybiExO3RoaXMuX2NvZGUucHVzaChvaS5pMzJfdHJ1bmNfZjY0X3MpO3JldHVybiEwfV9jb21waWxlU3RhbmRhcmRCaW5hcnlOb2RlKGUsdCxuKXtpZih0IT09bnx8dC50eXBlPT09aHJ8fHQudHlwZT09PXVyfHx0LnNoYXJlZCl7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKG4pKXJldHVybiExO2lmKCF0aGlzLl9jb21waWxlTm9kZSh0KSlyZXR1cm4hMX1lbHNle2NvbnN0IGU9dGhpcy5fYWxsb2NMb2NhbCgpO3RyeXtpZighdGhpcy5fY29tcGlsZU5vZGUodCkpcmV0dXJuITE7dGhpcy5fZW1pdExvY2FsVGVlKGUpO3RoaXMuX2VtaXRMb2NhbEdldChlKX1maW5hbGx5e3RoaXMuX3JlbGVhc2VMb2NhbChlKX19Y29uc3QgYT10aGlzLl9jb2RlO3N3aXRjaChlKXtjYXNlIHRyLmFkZDphLnB1c2gob2kuZjY0X2FkZCk7YnJlYWs7Y2FzZSB0ci5zdWI6YS5wdXNoKG9pLmY2NF9zdWIpO2JyZWFrO2Nhc2UgdHIubXVsOmEucHVzaChvaS5mNjRfbXVsKTticmVhaztjYXNlIHRyLmV4cDphLnB1c2gob2kuY2FsbCk7dGhpcy5fZW1pdFVMRUIxMjgoUHNXYXNtQ29tcGlsZXIuI0JlLnBvdyk7YnJlYWs7Y2FzZSB0ci5lcTphLnB1c2gob2kuZjY0X2VxLG9pLmY2NF9jb252ZXJ0X2kzMl9zKTticmVhaztjYXNlIHRyLm5lOmEucHVzaChvaS5mNjRfbmUsb2kuZjY0X2NvbnZlcnRfaTMyX3MpO2JyZWFrO2Nhc2UgdHIubHQ6YS5wdXNoKG9pLmY2NF9sdCxvaS5mNjRfY29udmVydF9pMzJfcyk7YnJlYWs7Y2FzZSB0ci5sZTphLnB1c2gob2kuZjY0X2xlLG9pLmY2NF9jb252ZXJ0X2kzMl9zKTticmVhaztjYXNlIHRyLmd0OmEucHVzaChvaS5mNjRfZ3Qsb2kuZjY0X2NvbnZlcnRfaTMyX3MpO2JyZWFrO2Nhc2UgdHIuZ2U6YS5wdXNoKG9pLmY2NF9nZSxvaS5mNjRfY29udmVydF9pMzJfcyk7YnJlYWs7Y2FzZSB0ci5taW46YS5wdXNoKG9pLmY2NF9taW4pO2JyZWFrO2Nhc2UgdHIubWF4OmEucHVzaChvaS5mNjRfbWF4KTticmVhaztkZWZhdWx0OnJldHVybiExfXJldHVybiEwfV9jb21waWxlQmluYXJ5Tm9kZShlKXtjb25zdHtvcDp0LGZpcnN0Om4sc2Vjb25kOmF9PWU7cmV0dXJuIHQ9PT10ci5iaXRzaGlmdD90aGlzLl9jb21waWxlQml0c2hpZnROb2RlKG4sYSk6dD09PXRyLmRpdj90aGlzLl9jb21waWxlU2FmZURpdk5vZGUobixhKTp0PT09dHIuaWRpdj90aGlzLl9jb21waWxlU2FmZUlkaXZOb2RlKG4sYSk6dD09PXRyLm1vZD90aGlzLl9jb21waWxlTW9kTm9kZShuLGEpOnQ9PT10ci5hdGFuP3RoaXMuX2NvbXBpbGVBdGFuTm9kZShuLGEpOnQ9PT10ci5hbmR8fHQ9PT10ci5vcnx8dD09PXRyLnhvcj90aGlzLl9jb21waWxlQml0d2lzZU5vZGUodCxuLGEpOnRoaXMuX2NvbXBpbGVTdGFuZGFyZEJpbmFyeU5vZGUodCxuLGEpfV9jb21waWxlTm9kZUFzQm9vbEkzMihlKXtpZihlLnR5cGU9PT1wcil7Y29uc3QgdD1Qc1dhc21Db21waWxlci4jSGUuZ2V0KGUub3ApO2lmKHZvaWQgMCE9PXQpe2lmKCF0aGlzLl9jb21waWxlTm9kZShlLnNlY29uZCkpcmV0dXJuITE7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUuZmlyc3QpKXJldHVybiExO3RoaXMuX2NvZGUucHVzaCh0KTtyZXR1cm4hMH1pZihlLnZhbHVlVHlwZT09PWFyJiYoZS5vcD09PXRyLmFuZHx8ZS5vcD09PXRyLm9yfHxlLm9wPT09dHIueG9yKSl7aWYoIXRoaXMuX2NvbXBpbGVOb2RlQXNCb29sSTMyKGUuc2Vjb25kKSlyZXR1cm4hMTtpZighdGhpcy5fY29tcGlsZU5vZGVBc0Jvb2xJMzIoZS5maXJzdCkpcmV0dXJuITE7c3dpdGNoKGUub3Ape2Nhc2UgdHIuYW5kOnRoaXMuX2NvZGUucHVzaChvaS5pMzJfYW5kKTticmVhaztjYXNlIHRyLm9yOnRoaXMuX2NvZGUucHVzaChvaS5pMzJfb3IpO2JyZWFrO2Nhc2UgdHIueG9yOnRoaXMuX2NvZGUucHVzaChvaS5pMzJfeG9yKX1yZXR1cm4hMH19aWYoZS50eXBlPT09bXImJmUub3A9PT10ci5ub3QmJmUudmFsdWVUeXBlPT09YXIpe2lmKCF0aGlzLl9jb21waWxlTm9kZUFzQm9vbEkzMihlLm9wZXJhbmQpKXJldHVybiExO3RoaXMuX2NvZGUucHVzaChvaS5pMzJfZXF6KTtyZXR1cm4hMH1pZighdGhpcy5fY29tcGlsZU5vZGUoZSkpcmV0dXJuITE7aWYoZS52YWx1ZVR5cGU9PT1hcil0aGlzLl9jb2RlLnB1c2gob2kuaTMyX3RydW5jX2Y2NF9zKTtlbHNle3RoaXMuX2VtaXRGNjRDb25zdCgwKTt0aGlzLl9jb2RlLnB1c2gob2kuZjY0X25lKX1yZXR1cm4hMH1fY29tcGlsZVRlcm5hcnlOb2RlKGUpe2lmKCF0aGlzLl9jb21waWxlTm9kZUFzQm9vbEkzMihlLmNvbmQpKXJldHVybiExO3RoaXMuX2NvZGUucHVzaChvaS5pZixsaSk7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUudGhlbikpcmV0dXJuITE7dGhpcy5fY29kZS5wdXNoKG9pLmVsc2UpO2lmKCF0aGlzLl9jb21waWxlTm9kZShlLm90aGVyd2lzZSkpcmV0dXJuITE7dGhpcy5fY29kZS5wdXNoKG9pLmVuZCk7cmV0dXJuITB9Y29tcGlsZShlKXtjb25zdCB0PShuZXcgUFNTdGFja1RvVHJlZSkuZXZhbHVhdGUoZSx0aGlzLl9uSW4pO2lmKCF0fHx0Lmxlbmd0aDx0aGlzLl9uT3V0KXJldHVybiBudWxsO2NvbnN0IG49dGhpcy5fY29kZTtmb3IobGV0IGU9MDtlPHRoaXMuX25PdXQ7ZSsrKXtjb25zdCBhPXRoaXMuX3JhbmdlWzIqZV0scz10aGlzLl9yYW5nZVsyKmUrMV07bi5wdXNoKG9pLmkzMl9jb25zdCk7dGhpcy5fZW1pdFNMRUIxMjgoOCplKTtpZighdGhpcy5fY29tcGlsZU5vZGUodFtlXSkpcmV0dXJuIG51bGw7dGhpcy5fZW1pdEY2NENvbnN0KHMpO24ucHVzaChvaS5mNjRfbWluKTt0aGlzLl9lbWl0RjY0Q29uc3QoYSk7bi5wdXNoKG9pLmY2NF9tYXgsb2kuZjY0X3N0b3JlLDMsMCl9bi5wdXNoKG9pLmVuZCk7Y29uc3QgYT10aGlzLl9uSW4scz10aGlzLl9uZXh0TG9jYWwtYSxyPVs5NiwuLi52ZWMoQXJyYXkoYSkuZmlsbChsaSkpLC4uLnZlYyhbXSldLGk9bmV3IFVpbnQ4QXJyYXkoc2VjdGlvbihmaSx2ZWMoW3IsLi4uUHNXYXNtQ29tcGlsZXIuI05lXSkpKSxvPXZlYyhzPjA/W1suLi51bnNpZ25lZExFQjEyOChzKSxsaV1dOltdKSxsPW8ubGVuZ3RoK24ubGVuZ3RoLGY9bmV3IFVpbnQ4QXJyYXkoc2VjdGlvbihwaSx2ZWMoW1suLi51bnNpZ25lZExFQjEyOChsKSwuLi5vLC4uLm5dXSkpKSxjPVBzV2FzbUNvbXBpbGVyLiNMZSxoPVBzV2FzbUNvbXBpbGVyLiNQZSx1PVBzV2FzbUNvbXBpbGVyLiNFZSxtPVBzV2FzbUNvbXBpbGVyLiNfZSxwPVBzV2FzbUNvbXBpbGVyLiN6ZSxkPWMubGVuZ3RoK2kubGVuZ3RoK2gubGVuZ3RoK3UubGVuZ3RoK20ubGVuZ3RoK3AubGVuZ3RoK2YubGVuZ3RoLGc9bmV3IFVpbnQ4QXJyYXkoZCk7bGV0IGI9MDtnLnNldChjLGIpO2IrPWMubGVuZ3RoO2cuc2V0KGksYik7Yis9aS5sZW5ndGg7Zy5zZXQoaCxiKTtiKz1oLmxlbmd0aDtnLnNldCh1LGIpO2IrPXUubGVuZ3RoO2cuc2V0KG0sYik7Yis9bS5sZW5ndGg7Zy5zZXQocCxiKTtiKz1wLmxlbmd0aDtnLnNldChmLGIpO3JldHVybiBnfX1mdW5jdGlvbiBidWlsZFBvc3RTY3JpcHRXYXNtRnVuY3Rpb24oZSx0LG4pe2NvbnN0IGE9ZnVuY3Rpb24gY29tcGlsZVBvc3RTY3JpcHRUb1dhc20oZSx0LG4pe3JldHVybiBuZXcgUHNXYXNtQ29tcGlsZXIodCxuKS5jb21waWxlKHBhcnNlUG9zdFNjcmlwdEZ1bmN0aW9uKGUpKX0oZSx0LG4pO2lmKCFhKXJldHVybiBudWxsO3RyeXtyZXR1cm4gZnVuY3Rpb24gX21ha2VXcmFwcGVyKGUsdCxuKXtjb25zdHtmbjphLG1lbTpzfT1lLHI9bmV3IEZsb2F0NjRBcnJheShzLmJ1ZmZlciwwLG4pO2xldCBpO3N3aXRjaChuKXtjYXNlIDE6aT0oZSx0KT0+e2VbdF09clswXX07YnJlYWs7Y2FzZSAyOmk9KGUsdCk9PntlW3RdPXJbMF07ZVt0KzFdPXJbMV19O2JyZWFrO2Nhc2UgMzppPShlLHQpPT57ZVt0XT1yWzBdO2VbdCsxXT1yWzFdO2VbdCsyXT1yWzJdfTticmVhaztjYXNlIDQ6aT0oZSx0KT0+e2VbdF09clswXTtlW3QrMV09clsxXTtlW3QrMl09clsyXTtlW3QrM109clszXX07YnJlYWs7ZGVmYXVsdDppPShlLHQpPT57Zm9yKGxldCBhPTA7YTxuO2ErKyllW3QrYV09clthXX19c3dpdGNoKHQpe2Nhc2UgMTpyZXR1cm4oZSx0LG4scyk9PnthKGVbdF0pO2kobixzKX07Y2FzZSAyOnJldHVybihlLHQsbixzKT0+e2EoZVt0XSxlW3QrMV0pO2kobixzKX07Y2FzZSAzOnJldHVybihlLHQsbixzKT0+e2EoZVt0XSxlW3QrMV0sZVt0KzJdKTtpKG4scyl9O2Nhc2UgNDpyZXR1cm4oZSx0LG4scyk9PnthKGVbdF0sZVt0KzFdLGVbdCsyXSxlW3QrM10pO2kobixzKX07ZGVmYXVsdDp7Y29uc3QgZT1uZXcgRmxvYXQ2NEFycmF5KHQpO3JldHVybihuLHMscixvKT0+e2ZvcihsZXQgYT0wO2E8dDthKyspZVthXT1uW3MrYV07YSguLi5lKTtpKHIsbyl9fX19KG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGEpLGdpKS5leHBvcnRzLHQubGVuZ3RoPj4xLG4ubGVuZ3RoPj4xKX1jYXRjaHtyZXR1cm4gbnVsbH19Y2xhc3MgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7dGhpcy5fb25seVJlZnM9ITA9PT1lPy5vbmx5UmVmcztpZighdGhpcy5fb25seVJlZnMpe3RoaXMuX25hbWVSZWZNYXA9bmV3IE1hcDt0aGlzLl9pbWFnZU1hcD1uZXcgTWFwfXRoaXMuX2ltYWdlQ2FjaGU9bmV3IFJlZlNldENhY2hlfWdldEJ5TmFtZShlKXt0aGlzLl9vbmx5UmVmcyYmdW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBgZ2V0QnlOYW1lYCBtZXRob2QuIik7Y29uc3QgdD10aGlzLl9uYW1lUmVmTWFwLmdldChlKTtyZXR1cm4gdD90aGlzLmdldEJ5UmVmKHQpOnRoaXMuX2ltYWdlTWFwLmdldChlKXx8bnVsbH1nZXRCeVJlZihlKXtyZXR1cm4gdGhpcy5faW1hZ2VDYWNoZS5nZXQoZSl8fG51bGx9c2V0KGUsdCxuKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBzZXRgIGNhbGxlZC4iKX19Y2xhc3MgTG9jYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGUsdD1udWxsLG4pe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsSW1hZ2VDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxuKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsbil9fWNsYXNzIExvY2FsQ29sb3JTcGFjZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGU9bnVsbCx0PW51bGwsbil7aWYoInN0cmluZyIhPXR5cGVvZiBlJiYhdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsQ29sb3JTcGFjZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhbmQvb3IgInJlZiIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO251bGwhPT1lJiZ0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpO3RoaXMuX2ltYWdlQ2FjaGUucHV0KHQsbil9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLG4pfX1jbGFzcyBMb2NhbEZ1bmN0aW9uQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsbil7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEZ1bmN0aW9uQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsbil9fWNsYXNzIExvY2FsR1N0YXRlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsbil7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxHU3RhdGVDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxuKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsbil9fWNsYXNzIExvY2FsVGlsaW5nUGF0dGVybkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LG4pe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsbil9fWNsYXNzIFJlZ2lvbmFsSW1hZ2VDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldChlPW51bGwsdCxuKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ1JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxuKX19Y2xhc3MgR2xvYmFsQ29sb3JTcGFjZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LG4pe2lmKCF0KXRocm93IG5ldyBFcnJvcignR2xvYmFsQ29sb3JTcGFjZUNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LG4pfWNsZWFyKCl7dGhpcy5faW1hZ2VDYWNoZS5jbGVhcigpfX1jbGFzcyBHbG9iYWxJbWFnZUNhY2hle3N0YXRpYyBOVU1fUEFHRVNfVEhSRVNIT0xEPTI7c3RhdGljIE1JTl9JTUFHRVNfVE9fQ0FDSEU9MTA7c3RhdGljIE1BWF9CWVRFX1NJWkU9NWU3OyNYZT1uZXcgUmVmU2V0O2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVmQ2FjaGU9bmV3IFJlZlNldENhY2hlO3RoaXMuX2ltYWdlQ2FjaGU9bmV3IFJlZlNldENhY2hlfWdldCNLZSgpe2xldCBlPTA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5faW1hZ2VDYWNoZSllKz10LmJ5dGVTaXplO3JldHVybiBlfWdldCNHZSgpe3JldHVybiEodGhpcy5faW1hZ2VDYWNoZS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTUlOX0lNQUdFU19UT19DQUNIRSkmJiEodGhpcy4jS2U8R2xvYmFsSW1hZ2VDYWNoZS5NQVhfQllURV9TSVpFKX1zaG91bGRDYWNoZShlLHQpe2NvbnN0IG49dGhpcy5fcmVmQ2FjaGUuZ2V0T3JQdXRDb21wdXRlZChlLG1ha2VTZXQpO24uYWRkKHQpO3JldHVybiEobi5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTlVNX1BBR0VTX1RIUkVTSE9MRCkmJiEoIXRoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpJiZ0aGlzLiNHZSl9YWRkRGVjb2RlRmFpbGVkKGUpe3RoaXMuI1hlLnB1dChlKX1oYXNEZWNvZGVGYWlsZWQoZSl7cmV0dXJuIHRoaXMuI1hlLmhhcyhlKX1hZGRCeXRlU2l6ZShlLHQpe2NvbnN0IG49dGhpcy5faW1hZ2VDYWNoZS5nZXQoZSk7biYmKG4uYnl0ZVNpemV8fChuLmJ5dGVTaXplPXQpKX1nZXREYXRhKGUsdCl7Y29uc3Qgbj10aGlzLl9yZWZDYWNoZS5nZXQoZSk7aWYoIW4pcmV0dXJuIG51bGw7aWYobi5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTlVNX1BBR0VTX1RIUkVTSE9MRClyZXR1cm4gbnVsbDtjb25zdCBhPXRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpO2lmKCFhKXJldHVybiBudWxsO24uYWRkKHQpO3JldHVybiBhfXNldERhdGEoZSx0KXtpZighdGhpcy5fcmVmQ2FjaGUuaGFzKGUpKXRocm93IG5ldyBFcnJvcignR2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhIC0gZXhwZWN0ZWQgInNob3VsZENhY2hlIiB0byBoYXZlIGJlZW4gY2FsbGVkLicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpfHwodGhpcy4jR2U/d2FybigiR2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhIC0gY2FjaGUgbGltaXQgcmVhY2hlZC4iKTp0aGlzLl9pbWFnZUNhY2hlLnB1dChlLHQpKX1jbGVhcihlPSExKXtpZighZSl7dGhpcy4jWGUuY2xlYXIoKTt0aGlzLl9yZWZDYWNoZS5jbGVhcigpfXRoaXMuX2ltYWdlQ2FjaGUuY2xlYXIoKX19Y29uc3QgYmk9MCx3aT0yLGppPTMsa2k9NDtjbGFzcyBQREZGdW5jdGlvbkZhY3Rvcnl7c3RhdGljI0Y9ITA7c3RhdGljIHNldE9wdGlvbnMoe3VzZVdhc206ZX0pe3RoaXMuI0Y9ZX1jb25zdHJ1Y3Rvcih7eHJlZjplfSl7dGhpcy54cmVmPWV9Z2V0IHVzZVdhc20oKXtyZXR1cm4gUERGRnVuY3Rpb25GYWN0b3J5LiNGfWNyZWF0ZShlLHQ9ITEpe2xldCBuLGE7ZSBpbnN0YW5jZW9mIFJlZj9uPWU6ZSBpbnN0YW5jZW9mIERpY3Q/bj1lLm9iaklkOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYobj1lLmRpY3Q/Lm9iaklkKTtpZihuKXtjb25zdCBlPXRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5nZXRCeVJlZihuKTtpZihlKXJldHVybiBlfWNvbnN0IHM9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7aWYoQXJyYXkuaXNBcnJheShzKSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdQREZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlIC0gZXhwZWN0ZWQgInBhcnNlQXJyYXkiIGFyZ3VtZW50LicpO2E9UERGRnVuY3Rpb24ucGFyc2VBcnJheSh0aGlzLHMpfWVsc2UgYT1QREZGdW5jdGlvbi5wYXJzZSh0aGlzLHMpO24mJnRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5zZXQobnVsbCxuLGEpO3JldHVybiBhfWdldCBfbG9jYWxGdW5jdGlvbkNhY2hlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfbG9jYWxGdW5jdGlvbkNhY2hlIixuZXcgTG9jYWxGdW5jdGlvbkNhY2hlKX19ZnVuY3Rpb24gdG9OdW1iZXJBcnJheShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9pc051bWJlckFycmF5KGUsbnVsbCk/ZTplLm1hcChlPT4rZSk6bnVsbH1jbGFzcyBQREZGdW5jdGlvbntzdGF0aWMgZ2V0U2FtcGxlQXJyYXkoZSx0LG4sYSl7bGV0IHM9dDtmb3IoY29uc3QgdCBvZiBlKXMqPXQ7Y29uc3Qgcj1uZXcgQXJyYXkocyk7bGV0IGk9MCxvPTA7Y29uc3QgbD0xLygyKipuLTEpLGY9YS5nZXRCeXRlcygocypuKzcpLzgpO2xldCBjPTA7Zm9yKGxldCBlPTA7ZTxzO2UrKyl7Zm9yKDtpPG47KXtvPDw9ODtvfD1mW2MrK107aSs9OH1pLT1uO3JbZV09KG8+PmkpKmw7byY9KDE8PGkpLTF9cmV0dXJuIHJ9c3RhdGljIHBhcnNlKGUsdCl7Y29uc3Qgbj10LmRpY3R8fHQsYT1uLmdldCgiRnVuY3Rpb25UeXBlIik7c3dpdGNoKGEpe2Nhc2UgYmk6cmV0dXJuIHRoaXMuY29uc3RydWN0U2FtcGxlZChlLHQsbik7Y2FzZSB3aTpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RJbnRlcnBvbGF0ZWQoZSxuKTtjYXNlIGppOnJldHVybiB0aGlzLmNvbnN0cnVjdFN0aWNoZWQoZSxuKTtjYXNlIGtpOnJldHVybiB0aGlzLmNvbnN0cnVjdFBvc3RTY3JpcHQoZSx0LG4pfXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBmdW5jdGlvbiB0eXBlOiAke2F9YCl9c3RhdGljIHBhcnNlQXJyYXkoZSx0KXtjb25zdHt4cmVmOm59PWUsYT1bXTtmb3IoY29uc3QgcyBvZiB0KWEucHVzaCh0aGlzLnBhcnNlKGUsbi5mZXRjaElmUmVmKHMpKSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHMpe2ZvcihsZXQgcj0wLGk9YS5sZW5ndGg7cjxpO3IrKylhW3JdKGUsdCxuLHMrcil9fXN0YXRpYyBjb25zdHJ1Y3RTYW1wbGVkKGUsdCxuKXtmdW5jdGlvbiBpbnRlcnBvbGF0ZShlLHQsbixhLHMpe3JldHVybiBhKyhzLWEpLyhuLXQpKihlLXQpfWNvbnN0IGE9dG9OdW1iZXJBcnJheShuLmdldEFycmF5KCJEb21haW4iKSkscz10b051bWJlckFycmF5KG4uZ2V0QXJyYXkoIlJhbmdlIikpO2lmKCFhfHwhcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiBvciByYW5nZSIpO2NvbnN0IHI9YS5sZW5ndGgvMixpPXMubGVuZ3RoLzIsbz10b051bWJlckFycmF5KG4uZ2V0QXJyYXkoIlNpemUiKSksbD1uLmdldCgiQml0c1BlclNhbXBsZSIpLGY9bi5nZXQoIk9yZGVyIil8fDE7MSE9PWYmJmluZm8oIk5vIHN1cHBvcnQgZm9yIGN1YmljIHNwbGluZSBpbnRlcnBvbGF0aW9uOiAiK2YpO2xldCBjPXRvTnVtYmVyQXJyYXkobi5nZXRBcnJheSgiRW5jb2RlIikpO2lmKCFjKXtjPVtdO2ZvcihsZXQgZT0wO2U8cjsrK2UpYy5wdXNoKDAsb1tlXS0xKX1jb25zdCBoPXRvTnVtYmVyQXJyYXkobi5nZXRBcnJheSgiRGVjb2RlIikpfHxzLHU9dGhpcy5nZXRTYW1wbGVBcnJheShvLGksbCx0KTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U2FtcGxlZEZuKGUsdCxuLGwpe2NvbnN0IGY9MTw8cixtPW5ldyBGbG9hdDY0QXJyYXkoZikuZmlsbCgxKSxwPW5ldyBVaW50MzJBcnJheShmKTtsZXQgZCxnLGI9aSx3PTE7Zm9yKGQ9MDtkPHI7KytkKXtjb25zdCBuPWFbMipkXSxzPWFbMipkKzFdO2xldCByPWludGVycG9sYXRlKE1hdGhDbGFtcChlW3QrZF0sbixzKSxuLHMsY1syKmRdLGNbMipkKzFdKTtjb25zdCBpPW9bZF07cj1NYXRoQ2xhbXAociwwLGktMSk7Y29uc3QgbD1yPGktMT9NYXRoLmZsb29yKHIpOnItMSxoPWwrMS1yLHU9ci1sLGo9bCpiLGs9aitiO2ZvcihnPTA7ZzxmO2crKylpZihnJncpe21bZ10qPXU7cFtnXSs9a31lbHNle21bZ10qPWg7cFtnXSs9an1iKj1pO3c8PD0xfWZvcihnPTA7ZzxpOysrZyl7bGV0IGU9MDtmb3IoZD0wO2Q8ZjtkKyspZSs9dVtwW2RdK2ddKm1bZF07ZT1pbnRlcnBvbGF0ZShlLDAsMSxoWzIqZ10saFsyKmcrMV0pO25bbCtnXT1NYXRoQ2xhbXAoZSxzWzIqZ10sc1syKmcrMV0pfX19c3RhdGljIGNvbnN0cnVjdEludGVycG9sYXRlZChlLHQpe2NvbnN0IG49dG9OdW1iZXJBcnJheSh0LmdldEFycmF5KCJDMCIpKXx8WzBdLGE9dG9OdW1iZXJBcnJheSh0LmdldEFycmF5KCJDMSIpKXx8WzFdLHM9dC5nZXQoIk4iKSxyPVtdO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0OysrZSlyLnB1c2goYVtlXS1uW2VdKTtjb25zdCBpPXIubGVuZ3RoO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RJbnRlcnBvbGF0ZWRGbihlLHQsYSxvKXtjb25zdCBsPTE9PT1zP2VbdF06ZVt0XSoqcztmb3IobGV0IGU9MDtlPGk7KytlKWFbbytlXT1uW2VdK2wqcltlXX19c3RhdGljIGNvbnN0cnVjdFN0aWNoZWQoZSx0KXtjb25zdCBuPXRvTnVtYmVyQXJyYXkodC5nZXRBcnJheSgiRG9tYWluIikpO2lmKCFuKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gZG9tYWluIik7aWYoMSE9PW4ubGVuZ3RoLzIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZG9tYWluIGZvciBzdGljaGVkIGZ1bmN0aW9uIik7Y29uc3R7eHJlZjphfT1lLHM9W107Zm9yKGNvbnN0IG4gb2YgdC5nZXQoIkZ1bmN0aW9ucyIpKXMucHVzaCh0aGlzLnBhcnNlKGUsYS5mZXRjaElmUmVmKG4pKSk7Y29uc3Qgcj10b051bWJlckFycmF5KHQuZ2V0QXJyYXkoIkJvdW5kcyIpKSxpPXRvTnVtYmVyQXJyYXkodC5nZXRBcnJheSgiRW5jb2RlIikpLG89bmV3IEZsb2F0MzJBcnJheSgxKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZuKGUsdCxhLGwpe2NvbnN0IGY9TWF0aENsYW1wKGVbdF0sblswXSxuWzFdKSxjPXIubGVuZ3RoO2xldCBoO2ZvcihoPTA7aDxjJiYhKGY8cltoXSk7KytoKTtjb25zdCB1PWg+MD9yW2gtMV06blswXSxtPWg8Yz9yW2hdOm5bMV0scD1pWzIqaF0sZD1pWzIqaCsxXTtvWzBdPXU9PT1tP3A6cCsoZi11KSooZC1wKS8obS11KTtzW2hdKG8sMCxhLGwpfX1zdGF0aWMgY29uc3RydWN0UG9zdFNjcmlwdChlLHQsbil7Y29uc3QgYT10b051bWJlckFycmF5KG4uZ2V0QXJyYXkoIkRvbWFpbiIpKSxzPXRvTnVtYmVyQXJyYXkobi5nZXRBcnJheSgiUmFuZ2UiKSk7aWYoIWEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4uIik7aWYoIXMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyByYW5nZS4iKTtjb25zdCByPXQuZ2V0U3RyaW5nKCk7dHJ5e2lmKGUudXNlV2FzbSl7Y29uc3QgZT1idWlsZFBvc3RTY3JpcHRXYXNtRnVuY3Rpb24ocixhLHMpO2lmKGUpcmV0dXJuIGV9fWNhdGNoe313YXJuKCJGYWlsZWQgdG8gY29tcGlsZSBQb3N0U2NyaXB0IGZ1bmN0aW9uIHRvIHdhc20sIGZhbGxpbmcgYmFjayB0byBKUyIpO3JldHVybiBmdW5jdGlvbiBidWlsZFBvc3RTY3JpcHRKc0Z1bmN0aW9uKGUsdCxuLGE9ITEpe2NvbnN0IHM9cGFyc2VQb3N0U2NyaXB0RnVuY3Rpb24oZSkscj0hYSYmbmV3IFBzSnNDb21waWxlcih0LG4pLmNvbXBpbGUocyk7cmV0dXJuIHI/KGUsdCxuLGEpPT57UHNKc0NvbXBpbGVyLmV4ZWN1dGUocixlLHQsbixhKX06UFNTdGFja0Jhc2VkSW50ZXJwcmV0ZXIuYnVpbGQocyx0LG4pfShyLGEscyl9fWZ1bmN0aW9uIGlzUERGRnVuY3Rpb24oZSl7bGV0IHQ7aWYoZSBpbnN0YW5jZW9mIERpY3QpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpcmV0dXJuITE7dD1lLmRpY3R9cmV0dXJuIHQuaGFzKCJGdW5jdGlvblR5cGUiKX1mdW5jdGlvbiB0ZXh0U2lua1dyYXBwZXIoZSl7Y29uc3QgdD1lP251bGw6UHJvbWlzZS5yZXNvbHZlKCk7cmV0dXJue2VucXVldWVJbnZva2VkOiExLGVucXVldWUodCxuKXt0aGlzLmVucXVldWVJbnZva2VkPSEwO2U/LmVucXVldWUodCxuKX0sZ2V0IGRlc2lyZWRTaXplKCl7cmV0dXJuIGU/LmRlc2lyZWRTaXplPz8xMDB9LGdldCByZWFkeSgpe3JldHVybiBlPy5yZWFkeT8/dH19fWZ1bmN0aW9uIF9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsdCxuLGEpe2lmKCsrbj4xMCl7d2FybigiVmlzaWJpbGl0eSBleHByZXNzaW9uIGlzIHRvbyBkZWVwbHkgbmVzdGVkIik7cmV0dXJufWNvbnN0IHM9dC5sZW5ndGgscj1lLmZldGNoSWZSZWYodFswXSk7aWYoIShzPDIpJiZyIGluc3RhbmNlb2YgTmFtZSl7c3dpdGNoKHIubmFtZSl7Y2FzZSJBbmQiOmNhc2UiT3IiOmNhc2UiTm90IjphLnB1c2goci5uYW1lKTticmVhaztkZWZhdWx0Ondhcm4oYEludmFsaWQgb3BlcmF0b3IgJHtyLm5hbWV9IGluIHZpc2liaWxpdHkgZXhwcmVzc2lvbmApO3JldHVybn1mb3IobGV0IHI9MTtyPHM7cisrKXtjb25zdCBzPXRbcl0saT1lLmZldGNoSWZSZWYocyk7aWYoQXJyYXkuaXNBcnJheShpKSl7Y29uc3QgdD1bXTthLnB1c2godCk7X3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24oZSxpLG4sdCl9ZWxzZSBzIGluc3RhbmNlb2YgUmVmJiZhLnB1c2gocy50b1N0cmluZygpKX19ZWxzZSB3YXJuKCJJbnZhbGlkIHZpc2liaWxpdHkgZXhwcmVzc2lvbiIpfWZ1bmN0aW9uIHBhcnNlTWFya2VkQ29udGVudFByb3BzKGUsdCxuKXtsZXQgYTtpZih0IGluc3RhbmNlb2YgTmFtZSl7YT1uLmdldCgiUHJvcGVydGllcyIpLmdldCh0Lm5hbWUpfWVsc2V7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJPcHRpb25hbCBjb250ZW50IHByb3BlcnRpZXMgbWFsZm9ybWVkLiIpO2E9dH1jb25zdCBzPWEuZ2V0KCJUeXBlIik/Lm5hbWU7aWYoIk9DRyI9PT1zKXJldHVybnt0eXBlOnMsaWQ6YS5vYmpJZH07aWYoIk9DTUQiPT09cyl7Y29uc3QgdD1hLmdldCgiVkUiKTtpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBuPVtdO19wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsdCwwLG4pO2lmKG4ubGVuZ3RoPjApcmV0dXJue3R5cGU6Ik9DTUQiLGV4cHJlc3Npb246bn19Y29uc3Qgbj1hLmdldCgiT0NHcyIpO2lmKEFycmF5LmlzQXJyYXkobil8fG4gaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPVtdO2lmKEFycmF5LmlzQXJyYXkobikpZm9yKGNvbnN0IHQgb2YgbillLnB1c2godC50b1N0cmluZygpKTtlbHNlIGUucHVzaChuLm9iaklkKTtjb25zdCB0PWEuZ2V0KCJQIik7cmV0dXJue3R5cGU6cyxpZHM6ZSxwb2xpY3k6dCBpbnN0YW5jZW9mIE5hbWU/dC5uYW1lOm51bGwsZXhwcmVzc2lvbjpudWxsfX1pZihuIGluc3RhbmNlb2YgUmVmKXJldHVybnt0eXBlOnMsaWQ6bi50b1N0cmluZygpfX1yZXR1cm4gbnVsbH1jb25zdCB5aT1bIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIlMiLCJCIiwiUyIsIldTIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQiIsIkIiLCJTIiwiV1MiLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkVTIiwiQ1MiLCJFUyIsIkNTIiwiQ1MiLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkNTIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJDUyIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJPTiIsIk9OIiwiQk4iLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVOIiwiRU4iLCJPTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJFTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIl0scWk9WyJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJPTiIsIk9OIiwiQUwiLCJFVCIsIkVUIiwiQUwiLCJDUyIsIkFMIiwiT04iLCJPTiIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFMIiwiQUwiLCIiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkVUIiwiQU4iLCJBTiIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIl07ZnVuY3Rpb24gaXNPZGQoZSl7cmV0dXJuISEoMSZlKX1mdW5jdGlvbiBpc0V2ZW4oZSl7cmV0dXJuISgxJmUpfWZ1bmN0aW9uIGZpbmRVbmVxdWFsKGUsdCxuKXtsZXQgYSxzO2ZvcihhPXQscz1lLmxlbmd0aDthPHM7KythKWlmKGVbYV0hPT1uKXJldHVybiBhO3JldHVybiBhfWZ1bmN0aW9uIHJldmVyc2VWYWx1ZXMoZSx0LG4pe2ZvcihsZXQgYT10LHM9bi0xO2E8czsrK2EsLS1zKXtjb25zdCB0PWVbYV07ZVthXT1lW3NdO2Vbc109dH19ZnVuY3Rpb24gY3JlYXRlQmlkaVRleHQoZSx0LG49ITEpe2xldCBhPSJsdHIiO24/YT0idHRiIjp0fHwoYT0icnRsIik7cmV0dXJue3N0cjplLGRpcjphfX1jb25zdCB2aT1bXSxTaT1bXTtmdW5jdGlvbiBiaWRpKGUsdD0tMSxuPSExKXtsZXQgYT0hMDtjb25zdCBzPWUubGVuZ3RoO2lmKDA9PT1zfHxuKXJldHVybiBjcmVhdGVCaWRpVGV4dChlLGEsbik7dmkubGVuZ3RoPXM7U2kubGVuZ3RoPXM7bGV0IHIsaSxvPTA7Zm9yKHI9MDtyPHM7KytyKXt2aVtyXT1lLmNoYXJBdChyKTtjb25zdCB0PWUuY2hhckNvZGVBdChyKTtsZXQgbj0iTCI7aWYodDw9MjU1KW49eWlbdF07ZWxzZSBpZigxNDI0PD10JiZ0PD0xNTI0KW49IlIiO2Vsc2UgaWYoMTUzNjw9dCYmdDw9MTc5MSl7bj1xaVsyNTUmdF07bnx8d2FybigiQmlkaTogaW52YWxpZCBVbmljb2RlIGNoYXJhY3RlciAiK3QudG9TdHJpbmcoMTYpKX1lbHNlKDE3OTI8PXQmJnQ8PTIyMjB8fDY0MzM2PD10JiZ0PD02NTAyM3x8NjUxMzY8PXQmJnQ8PTY1Mjc5KSYmKG49IkFMIik7IlIiIT09biYmIkFMIiE9PW4mJiJBTiIhPT1ufHxvKys7U2lbcl09bn1pZigwPT09byl7YT0hMDtyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxhKX1pZigtMT09PXQpaWYoby9zPC4zJiZzPjQpe2E9ITA7dD0wfWVsc2V7YT0hMTt0PTF9Y29uc3QgbD1bXTtmb3Iocj0wO3I8czsrK3IpbFtyXT10O2NvbnN0IGY9aXNPZGQodCk/IlIiOiJMIixjPWYsaD1jO2xldCB1LG09Yztmb3Iocj0wO3I8czsrK3IpIk5TTSI9PT1TaVtyXT9TaVtyXT1tOm09U2lbcl07bT1jO2ZvcihyPTA7cjxzOysrcil7dT1TaVtyXTsiRU4iPT09dT9TaVtyXT0iQUwiPT09bT8iQU4iOiJFTiI6IlIiIT09dSYmIkwiIT09dSYmIkFMIiE9PXV8fChtPXUpfWZvcihyPTA7cjxzOysrcil7dT1TaVtyXTsiQUwiPT09dSYmKFNpW3JdPSJSIil9Zm9yKHI9MTtyPHMtMTsrK3IpeyJFUyI9PT1TaVtyXSYmIkVOIj09PVNpW3ItMV0mJiJFTiI9PT1TaVtyKzFdJiYoU2lbcl09IkVOIik7IkNTIiE9PVNpW3JdfHwiRU4iIT09U2lbci0xXSYmIkFOIiE9PVNpW3ItMV18fFNpW3IrMV0hPT1TaVtyLTFdfHwoU2lbcl09U2lbci0xXSl9Zm9yKHI9MDtyPHM7KytyKWlmKCJFTiI9PT1TaVtyXSl7Zm9yKGxldCBlPXItMTtlPj0wJiYiRVQiPT09U2lbZV07LS1lKVNpW2VdPSJFTiI7Zm9yKGxldCBlPXIrMTtlPHMmJiJFVCI9PT1TaVtlXTsrK2UpU2lbZV09IkVOIn1mb3Iocj0wO3I8czsrK3Ipe3U9U2lbcl07IldTIiE9PXUmJiJFUyIhPT11JiYiRVQiIT09dSYmIkNTIiE9PXV8fChTaVtyXT0iT04iKX1tPWM7Zm9yKHI9MDtyPHM7KytyKXt1PVNpW3JdOyJFTiI9PT11P1NpW3JdPSJMIj09PW0/IkwiOiJFTiI6IlIiIT09dSYmIkwiIT09dXx8KG09dSl9Zm9yKHI9MDtyPHM7KytyKWlmKCJPTiI9PT1TaVtyXSl7Y29uc3QgZT1maW5kVW5lcXVhbChTaSxyKzEsIk9OIik7bGV0IHQ9Yztmb3IobGV0IGU9ci0xO2U+PTA7ZS0tKXtjb25zdCBuPVNpW2VdO2lmKCJMIj09PW4pe3Q9IkwiO2JyZWFrfWlmKCJSIj09PW58fCJFTiI9PT1ufHwiQU4iPT09bil7dD0iUiI7YnJlYWt9fWxldCBuPWg7Zm9yKGxldCB0PWU7dDxzO3QrKyl7Y29uc3QgZT1TaVt0XTtpZigiTCI9PT1lKXtuPSJMIjticmVha31pZigiUiI9PT1lfHwiRU4iPT09ZXx8IkFOIj09PWUpe249IlIiO2JyZWFrfX10PT09biYmU2kuZmlsbCh0LHIsZSk7cj1lLTF9Zm9yKHI9MDtyPHM7KytyKSJPTiI9PT1TaVtyXSYmKFNpW3JdPWYpO2ZvcihyPTA7cjxzOysrcil7dT1TaVtyXTtpc0V2ZW4obFtyXSk/IlIiPT09dT9sW3JdKz0xOiJBTiIhPT11JiYiRU4iIT09dXx8KGxbcl0rPTIpOiJMIiE9PXUmJiJBTiIhPT11JiYiRU4iIT09dXx8KGxbcl0rPTEpfWxldCBwLGQ9LTEsZz05OTtmb3Iocj0wLGk9bC5sZW5ndGg7cjxpOysrcil7cD1sW3JdO2Q8cCYmKGQ9cCk7Zz5wJiZpc09kZChwKSYmKGc9cCl9Zm9yKHA9ZDtwPj1nOy0tcCl7bGV0IGU9LTE7Zm9yKHI9MCxpPWwubGVuZ3RoO3I8aTsrK3IpaWYobFtyXTxwKXtpZihlPj0wKXtyZXZlcnNlVmFsdWVzKHZpLGUscik7ZT0tMX19ZWxzZSBlPDAmJihlPXIpO2U+PTAmJnJldmVyc2VWYWx1ZXModmksZSxsLmxlbmd0aCl9Zm9yKHI9MCxpPXZpLmxlbmd0aDtyPGk7KytyKXtjb25zdCBlPXZpW3JdOyI8IiE9PWUmJiI+IiE9PWV8fCh2aVtyXT0iIil9cmV0dXJuIGNyZWF0ZUJpZGlUZXh0KHZpLmpvaW4oIiIpLGEpfWNvbnN0IEFpPXtzdHlsZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCJ9LHhpPXtzdHlsZToibm9ybWFsIix3ZWlnaHQ6IjUwMCJ9LENpPXtzdHlsZToibm9ybWFsIix3ZWlnaHQ6ImJvbGQifSxJaT17c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiJub3JtYWwifSxGaT17c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiJib2xkIn0sVGk9bmV3IE1hcChbWyJUaW1lcy1Sb21hbiIse2xvY2FsOlsiVGltZXMgTmV3IFJvbWFuIiwiVGltZXMtUm9tYW4iLCJUaW1lcyIsIkxpYmVyYXRpb24gU2VyaWYiLCJOaW1idXMgUm9tYW4iLCJOaW1idXMgUm9tYW4gTCIsIlRpbm9zIiwiVGhvcm5kYWxlIiwiVGVYIEd5cmUgVGVybWVzIiwiRnJlZVNlcmlmIiwiTGludXggTGliZXJ0aW5lIE8iLCJMaWJlcnRpbnVzIFNlcmlmIiwiUFQgQXN0cmEgU2VyaWYiLCJEZWphVnUgU2VyaWYiLCJCaXRzdHJlYW0gVmVyYSBTZXJpZiIsIlVidW50dSJdLHN0eWxlOkFpLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUJvbGQiLHthbGlhczoiVGltZXMtUm9tYW4iLHN0eWxlOkNpLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6SWksdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZEl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6RmksdWx0aW1hdGU6InNlcmlmIn1dLFsiSGVsdmV0aWNhIix7bG9jYWw6WyJIZWx2ZXRpY2EiLCJIZWx2ZXRpY2EgTmV1ZSIsIkFyaWFsIiwiQXJpYWwgTm92YSIsIkxpYmVyYXRpb24gU2FucyIsIkFyaW1vIiwiTmltYnVzIFNhbnMiLCJOaW1idXMgU2FucyBMIiwiQTAzMCIsIlRlWCBHeXJlIEhlcm9zIiwiRnJlZVNhbnMiLCJEZWphVnUgU2FucyIsIkFsYmFueSIsIkJpdHN0cmVhbSBWZXJhIFNhbnMiLCJBcmlhbCBVbmljb2RlIE1TIiwiTWljcm9zb2Z0IFNhbnMgU2VyaWYiLCJBcHBsZSBTeW1ib2xzIiwiQ2FudGFyZWxsIl0scGF0aDoiTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiLHN0eWxlOkFpLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLUJvbGQiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiIsc3R5bGU6Q2ksdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtT2JsaXF1ZSIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiLHN0eWxlOklpLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYiLHN0eWxlOkZpLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiQ291cmllciIse2xvY2FsOlsiQ291cmllciIsIkNvdXJpZXIgTmV3IiwiTGliZXJhdGlvbiBNb25vIiwiTmltYnVzIE1vbm8iLCJOaW1idXMgTW9ubyBMIiwiQ291c2luZSIsIkN1bWJlcmxhbmQiLCJUZVggR3lyZSBDdXJzb3IiLCJGcmVlTW9ubyIsIkxpbnV4IExpYmVydGluZSBNb25vIE8iLCJMaWJlcnRpbnVzIE1vbm8iXSxzdHlsZTpBaSx1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1Cb2xkIix7YWxpYXM6IkNvdXJpZXIiLHN0eWxlOkNpLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLU9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6SWksdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItQm9sZE9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6RmksdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkFyaWFsQmxhY2siLHtsb2NhbDpbIkFyaWFsIEJsYWNrIl0sc3R5bGU6e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiOTAwIn0sZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxCbGFjay1Cb2xkIix7YWxpYXM6IkFyaWFsQmxhY2sifV0sWyJBcmlhbEJsYWNrLUl0YWxpYyIse2FsaWFzOiJBcmlhbEJsYWNrIixzdHlsZTp7c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiI5MDAifSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiQXJpYWxCbGFjay1Cb2xkSXRhbGljIix7YWxpYXM6IkFyaWFsQmxhY2stSXRhbGljIn1dLFsiQXJpYWxOYXJyb3ciLHtsb2NhbDpbIkFyaWFsIE5hcnJvdyIsIkxpYmVyYXRpb24gU2FucyBOYXJyb3ciLCJIZWx2ZXRpY2EgQ29uZGVuc2VkIiwiTmltYnVzIFNhbnMgTmFycm93IiwiVGVYIEd5cmUgSGVyb3MgQ24iXSxzdHlsZTpBaSxmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQXJpYWxOYXJyb3ctQm9sZCIse2FsaWFzOiJBcmlhbE5hcnJvdyIsc3R5bGU6Q2ksZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxOYXJyb3ctSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpJaSxmYWxsYmFjazoiSGVsdmV0aWNhLU9ibGlxdWUifV0sWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpGaSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiQ2FsaWJyaSIse2xvY2FsOlsiQ2FsaWJyaSIsIkNhcmxpdG8iXSxzdHlsZTpBaSxmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQ2FsaWJyaS1Cb2xkIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOkNpLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZCJ9XSxbIkNhbGlicmktSXRhbGljIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOklpLGZhbGxiYWNrOiJIZWx2ZXRpY2EtT2JsaXF1ZSJ9XSxbIkNhbGlicmktQm9sZEl0YWxpYyIse2FsaWFzOiJDYWxpYnJpIixzdHlsZTpGaSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiV2luZ2RpbmdzIix7bG9jYWw6WyJXaW5nZGluZ3MiLCJVUlcgRGluZ2JhdHMiXSxzdHlsZTpBaX1dLFsiV2luZ2RpbmdzLVJlZ3VsYXIiLHthbGlhczoiV2luZ2RpbmdzIn1dLFsiV2luZ2RpbmdzLUJvbGQiLHthbGlhczoiV2luZ2RpbmdzIn1dLFsiw4vDjsOMw6UiLHtsb2NhbDpbIlNpbVN1biIsIlNpbVN1biBSZWd1bGFyIiwiTlNpbVN1biJdLHN0eWxlOkFpLHVsdGltYXRlOiJzZXJpZiJ9XSxbIsK6w5rDjMOlIix7bG9jYWw6WyJTaW1IZWkiLCJTaW1IZWkgUmVndWxhciJdLHN0eWxlOkFpLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiwr/CrMOMw6UiLHtsb2NhbDpbIkthaVRpIiwiU2ltS2FpIiwiU2ltS2FpIFJlZ3VsYXIiXSxzdHlsZTpBaSx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIsK3w4LDi8OOIix7bG9jYWw6WyJGYW5nU29uZyIsIlNpbUZhbmciLCJTaW1GYW5nIFJlZ3VsYXIiXSxzdHlsZTpBaSx1bHRpbWF0ZToic2VyaWYifV0sWyLCv8Ksw4zDpV9HQjIzMTIiLHthbGlhczoiwr/CrMOMw6UifV0sWyLCt8OCw4vDjl9HQjIzMTIiLHthbGlhczoiwrfDgsOLw44ifV0sWyLDgcKlw4rDqSIse2xvY2FsOlsiU2ltTGkiLCJTaW1MaSBSZWd1bGFyIl0sc3R5bGU6QWksdWx0aW1hdGU6InNlcmlmIn1dLFsiw5DDgsOLw44iLHthbGlhczoiw4vDjsOMw6UifV0sWyJIZWlzZWlNaW4tVzMiLHtsb2NhbDpbIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwiSGlyYWdpbm8gTWluY2hvIFBybyIsIll1IE1pbmNobyIsIll1TWluY2hvIiwiU291cmNlIEhhbiBTZXJpZiBKUCIsIk5vdG8gU2VyaWYgSlAiLCJOb3RvIFNlcmlmIENKSyBKUCIsIklQQWV4TWluY2hvIiwiSVBBTWluY2hvIiwiVGFrYW8gTWluY2hvIiwiTVMgTWluY2hvIiwiTVMgUE1pbmNobyJdLHN0eWxlOkFpLHVsdGltYXRlOiJzZXJpZiJ9XSxbIkhlaXNlaUtha3VHby1XNSIse2xvY2FsOlsiSGlyYWdpbm8gS2FrdSBHb3RoaWMgUHJvTiIsIkhpcmFnaW5vIEtha3UgR290aGljIFBybyIsIkhpcmFnaW5vIFNhbnMiLCJZdSBHb3RoaWMiLCJZdUdvdGhpYyIsIlNvdXJjZSBIYW4gU2FucyBKUCIsIk5vdG8gU2FucyBKUCIsIk5vdG8gU2FucyBDSksgSlAiLCJJUEFleEdvdGhpYyIsIklQQUdvdGhpYyIsIlRha2FvIEdvdGhpYyIsIk1laXJ5byIsIk1TIEdvdGhpYyIsIk1TIFBHb3RoaWMiXSxzdHlsZTp4aSx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkhlaXNlaU1pbi1XMy1BY3JvIix7YWxpYXM6IkhlaXNlaU1pbi1XMyJ9XSxbIkhlaXNlaUtha3VHby1XNS1BY3JvIix7YWxpYXM6IkhlaXNlaUtha3VHby1XNSJ9XSxbIktvek1pblByby1SZWd1bGFyIix7YWxpYXM6IkhlaXNlaU1pbi1XMyJ9XSxbIktvek1pblByb1ZJLVJlZ3VsYXIiLHthbGlhczoiSGVpc2VpTWluLVczIn1dLFsiS296TWluUHI2Ti1SZWd1bGFyIix7YWxpYXM6IkhlaXNlaU1pbi1XMyJ9XSxbIktvekdvUHJvLVJlZ3VsYXIiLHthbGlhczoiSGVpc2VpS2FrdUdvLVc1In1dLFsiS296R29Qcm9WSS1SZWd1bGFyIix7YWxpYXM6IkhlaXNlaUtha3VHby1XNSJ9XSxbIktvekdvUHI2Ti1SZWd1bGFyIix7YWxpYXM6IkhlaXNlaUtha3VHby1XNSJ9XSxbIlNUU29uZy1MaWdodCIse2xvY2FsOlsiU1RTb25nIiwiU29uZ3RpIFNDIiwiU291cmNlIEhhbiBTZXJpZiBTQyIsIlNvdXJjZSBIYW4gU2VyaWYgQ04iLCJOb3RvIFNlcmlmIFNDIiwiTm90byBTZXJpZiBDSksgU0MiLCJBUiBQTCBVTWluZyBDTiIsIlNpbVN1biIsIk5TaW1TdW4iXSxzdHlsZTpBaSx1bHRpbWF0ZToic2VyaWYifV0sWyJTVEhlaXRpLVJlZ3VsYXIiLHtsb2NhbDpbIlNUSGVpdGkiLCJIZWl0aSBTQyIsIlBpbmdGYW5nIFNDIiwiU291cmNlIEhhbiBTYW5zIFNDIiwiU291cmNlIEhhbiBTYW5zIENOIiwiTm90byBTYW5zIFNDIiwiTm90byBTYW5zIENKSyBTQyIsIk1pY3Jvc29mdCBZYUhlaSIsIlNpbUhlaSIsIldlblF1YW5ZaSBaZW4gSGVpIl0sc3R5bGU6QWksdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJTVFNvbmdTdGQtTGlnaHQiLHthbGlhczoiU1RTb25nLUxpZ2h0In1dLFsiQWRvYmVTb25nU3RkLUxpZ2h0Iix7YWxpYXM6IlNUU29uZy1MaWdodCJ9XSxbIkFkb2JlSGVpdGlTdGQtUmVndWxhciIse2FsaWFzOiJTVEhlaXRpLVJlZ3VsYXIifV0sWyJBZG9iZUthaXRpU3RkLVJlZ3VsYXIiLHthbGlhczoiwr/CrMOMw6UifV0sWyJBZG9iZUZhbmdzb25nU3RkLVJlZ3VsYXIiLHthbGlhczoiwrfDgsOLw44ifV0sWyJNU3VuZy1MaWdodCIse2xvY2FsOlsiU29uZ3RpIFRDIiwiTGlTb25nIFBybyIsIlNvdXJjZSBIYW4gU2VyaWYgVEMiLCJTb3VyY2UgSGFuIFNlcmlmIFRXIiwiTm90byBTZXJpZiBUQyIsIk5vdG8gU2VyaWYgQ0pLIFRDIiwiQVIgUEwgVU1pbmcgVFciLCJQTWluZ0xpVSIsIk1pbmdMaVUiLCJNaW5nTGlVX0hLU0NTIl0sc3R5bGU6QWksdWx0aW1hdGU6InNlcmlmIn1dLFsiTUhlaS1NZWRpdW0iLHtsb2NhbDpbIkhlaXRpIFRDIiwiU1RIZWl0aSIsIlNvdXJjZSBIYW4gU2FucyBUQyIsIlNvdXJjZSBIYW4gU2FucyBUVyIsIk5vdG8gU2FucyBUQyIsIk5vdG8gU2FucyBDSksgVEMiLCJQaW5nRmFuZyBUQyIsIk1pY3Jvc29mdCBKaGVuZ0hlaSJdLHN0eWxlOnhpLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiTVN1bmdTdGQtTGlnaHQiLHthbGlhczoiTVN1bmctTGlnaHQifV0sWyJBZG9iZU1pbmdTdGQtTGlnaHQiLHthbGlhczoiTVN1bmctTGlnaHQifV0sWyJIWVNNeWVvbmdKby1NZWRpdW0iLHtsb2NhbDpbIkFwcGxlTXl1bmdqbyIsIlNvdXJjZSBIYW4gU2VyaWYgS1IiLCJOb3RvIFNlcmlmIEtSIiwiTm90byBTZXJpZiBDSksgS1IiLCJOYW51bSBNeWVvbmdqbyIsIkJhdGFuZyJdLHN0eWxlOnhpLHVsdGltYXRlOiJzZXJpZiJ9XSxbIkhZR29UaGljLU1lZGl1bSIse2xvY2FsOlsiQXBwbGUgU0QgR290aGljIE5lbyIsIkFwcGxlR290aGljIiwiU291cmNlIEhhbiBTYW5zIEtSIiwiTm90byBTYW5zIEtSIiwiTm90byBTYW5zIENKSyBLUiIsIk5hbnVtIEdvdGhpYyIsIk1hbGd1biBHb3RoaWMiLCJEb3R1bSIsIkd1bGltIl0sc3R5bGU6eGksdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIWVNNeWVvbmdKb1N0ZC1NZWRpdW0iLHthbGlhczoiSFlTTXllb25nSm8tTWVkaXVtIn1dLFsiQWRvYmVNeXVuZ2pvU3RkLU1lZGl1bSIse2FsaWFzOiJIWVNNeWVvbmdKby1NZWRpdW0ifV0sWyJIWUdvVGhpYy1Cb2xkIix7YWxpYXM6IkhZR29UaGljLU1lZGl1bSIsc3R5bGU6Q2l9XSxbIkFkb2JlR290aGljU3RkLUJvbGQiLHthbGlhczoiSFlHb1RoaWMtTWVkaXVtIixzdHlsZTpDaX1dXSksUmk9bmV3IE1hcChbWyJBcmlhbC1CbGFjayIsIkFyaWFsQmxhY2siXV0pO2Z1bmN0aW9uIGdldEZhbWlseU5hbWUoZSl7Y29uc3QgdD1uZXcgU2V0KFsidGhpbiIsImV4dHJhbGlnaHQiLCJ1bHRyYWxpZ2h0IiwiZGVtaWxpZ2h0Iiwic2VtaWxpZ2h0IiwibGlnaHQiLCJib29rIiwicmVndWxhciIsIm5vcm1hbCIsIm1lZGl1bSIsImRlbWlib2xkIiwic2VtaWJvbGQiLCJib2xkIiwiZXh0cmFib2xkIiwidWx0cmFib2xkIiwiYmxhY2siLCJoZWF2eSIsImV4dHJhYmxhY2siLCJ1bHRyYWJsYWNrIiwicm9tYW4iLCJpdGFsaWMiLCJvYmxpcXVlIiwidWx0cmFjb25kZW5zZWQiLCJleHRyYWNvbmRlbnNlZCIsImNvbmRlbnNlZCIsInNlbWljb25kZW5zZWQiLCJub3JtYWwiLCJzZW1pZXhwYW5kZWQiLCJleHBhbmRlZCIsImV4dHJhZXhwYW5kZWQiLCJ1bHRyYWV4cGFuZGVkIiwiYm9sZGl0YWxpYyJdKTtyZXR1cm4gZS5zcGxpdCgvWy0gLCtdKy9nKS5maWx0ZXIoZT0+IXQuaGFzKGUudG9Mb3dlckNhc2UoKSkpLmpvaW4oIiAiKX1mdW5jdGlvbiBnZW5lcmF0ZUZvbnQoe2FsaWFzOmUsbG9jYWw6dCxwYXRoOm4sZmFsbGJhY2s6YSxzdHlsZTpzLHVsdGltYXRlOnJ9LGksbyxsPSEwLGY9ITAsYz0iIil7Y29uc3QgaD17c3R5bGU6bnVsbCx1bHRpbWF0ZTpudWxsfTtpZih0KXtjb25zdCBlPWM/YCAke2N9YDoiIjtmb3IoY29uc3QgbiBvZiB0KWkucHVzaChgbG9jYWwoJHtufSR7ZX0pYCl9aWYoZSl7Y29uc3QgdD1UaS5nZXQoZSkscj1jfHxmdW5jdGlvbiBnZXRTdHlsZVRvQXBwZW5kKGUpe3N3aXRjaChlKXtjYXNlIENpOnJldHVybiJCb2xkIjtjYXNlIElpOnJldHVybiJJdGFsaWMiO2Nhc2UgRmk6cmV0dXJuIkJvbGQgSXRhbGljIjtkZWZhdWx0OmlmKCJib2xkIj09PWU/LndlaWdodClyZXR1cm4iQm9sZCI7aWYoIml0YWxpYyI9PT1lPy5zdHlsZSlyZXR1cm4iSXRhbGljIn1yZXR1cm4iIn0ocyk7T2JqZWN0LmFzc2lnbihoLGdlbmVyYXRlRm9udCh0LGksbyxsJiYhYSxmJiYhbixyKSl9cyYmKGguc3R5bGU9cyk7ciYmKGgudWx0aW1hdGU9cik7aWYobCYmYSl7Y29uc3QgZT1UaS5nZXQoYSkse3VsdGltYXRlOnR9PWdlbmVyYXRlRm9udChlLGksbyxsLGYmJiFuLGMpO2gudWx0aW1hdGV8fD10fWYmJm4mJm8mJmkucHVzaChgdXJsKCR7b30ke259KWApO3JldHVybiBofWZ1bmN0aW9uIGdldEZvbnRTdWJzdGl0dXRpb24oZSx0LG4sYSxzLHIpe2lmKGEuc3RhcnRzV2l0aCgiSW52YWxpZFBERmpzRm9udF8iKSlyZXR1cm4gbnVsbDsiVHJ1ZVR5cGUiIT09ciYmIlR5cGUxIiE9PXJ8fCEvXltBLVpdezZ9XCsvLnRlc3QoYSl8fChhPWEuc2xpY2UoNykpO2NvbnN0IGk9YT1ub3JtYWxpemVGb250TmFtZShhKTtsZXQgbz1lLmdldChpKTtpZihvKXJldHVybiBvO2xldCBsPVRpLmdldChhKTtpZighbClmb3IoY29uc3RbZSx0XW9mIFJpKWlmKGEuc3RhcnRzV2l0aChlKSl7YT1gJHt0fSR7YS5zdWJzdHJpbmcoZS5sZW5ndGgpfWA7bD1UaS5nZXQoYSk7YnJlYWt9bGV0IGY9ITE7aWYoIWwpe2w9VGkuZ2V0KHMpO2Y9ITB9Y29uc3QgYz1gJHt0LmdldERvY0lkKCl9X3Mke3QuY3JlYXRlRm9udElkKCl9YDtpZighbCl7aWYoIXZhbGlkYXRlRm9udE5hbWUoYSkpe3dhcm4oYENhbm5vdCBzdWJzdGl0dXRlIHRoZSBmb250IGJlY2F1c2Ugb2YgaXRzIG5hbWU6ICR7YX1gKTtlLnNldChpLG51bGwpO3JldHVybiBudWxsfWNvbnN0IHQ9L2JvbGQvaS50ZXN0KGEpLG49L29ibGlxdWV8aXRhbGljL2kudGVzdChhKSxzPXQmJm4mJkZpfHx0JiZDaXx8biYmSWl8fEFpO289e2NzczpgIiR7Z2V0RmFtaWx5TmFtZShhKX0iLCR7Y31gLGd1ZXNzRmFsbGJhY2s6ITAsbG9hZGVkTmFtZTpjLGJhc2VGb250TmFtZTphLHNyYzpgbG9jYWwoJHthfSlgLHN0eWxlOnN9O2Uuc2V0KGksbyk7cmV0dXJuIG99Y29uc3QgaD1bXTtmJiZ2YWxpZGF0ZUZvbnROYW1lKGEpJiZoLnB1c2goYGxvY2FsKCR7YX0pYCk7Y29uc3R7c3R5bGU6dSx1bHRpbWF0ZTptfT1nZW5lcmF0ZUZvbnQobCxoLG4pLHA9bnVsbD09PW0sZD1wPyIiOmAsJHttfWA7bz17Y3NzOmAiJHtnZXRGYW1pbHlOYW1lKGEpfSIsJHtjfSR7ZH1gLGd1ZXNzRmFsbGJhY2s6cCxsb2FkZWROYW1lOmMsYmFzZUZvbnROYW1lOmEsc3JjOmguam9pbigiLCIpLHN0eWxlOnV9O2Uuc2V0KGksbyk7cmV0dXJuIG99Y29uc3QgT2k9MzI4NTM3NzUyMCxIaT00Mjk0OTAxNzYwLEJpPTY1NTM1O2NsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKGUpe3RoaXMuaDE9ZT80Mjk0OTY3Mjk1JmU6T2k7dGhpcy5oMj1lPzQyOTQ5NjcyOTUmZTpPaX11cGRhdGUoZSl7bGV0IHQsbjtpZigic3RyaW5nIj09dHlwZW9mIGUpe3Q9bmV3IFVpbnQ4QXJyYXkoMiplLmxlbmd0aCk7bj0wO2ZvcihsZXQgYT0wLHM9ZS5sZW5ndGg7YTxzO2ErKyl7Y29uc3Qgcz1lLmNoYXJDb2RlQXQoYSk7aWYoczw9MjU1KXRbbisrXT1zO2Vsc2V7dFtuKytdPXM+Pj44O3RbbisrXT0yNTUmc319fWVsc2V7aWYoIUFycmF5QnVmZmVyLmlzVmlldyhlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgZGF0YSBmb3JtYXQsIG11c3QgYmUgYSBzdHJpbmcgb3IgVHlwZWRBcnJheS4iKTt0PWUuc2xpY2UoKTtuPXQuYnl0ZUxlbmd0aH1jb25zdCBhPW4+PjIscz1uLTQqYSxyPW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciwwLGEpO2xldCBpPTAsbz0wLGw9dGhpcy5oMSxmPXRoaXMuaDI7Y29uc3QgYz0zNDMyOTE4MzUzLGg9NDYxODQ1OTA3LHU9MTE2MDEsbT0xMzcxNTtmb3IobGV0IGU9MDtlPGE7ZSsrKWlmKDEmZSl7aT1yW2VdO2k9aSpjJkhpfGkqdSZCaTtpPWk8PDE1fGk+Pj4xNztpPWkqaCZIaXxpKm0mQmk7bF49aTtsPWw8PDEzfGw+Pj4xOTtsPTUqbCszODY0MjkyMTk2fWVsc2V7bz1yW2VdO289bypjJkhpfG8qdSZCaTtvPW88PDE1fG8+Pj4xNztvPW8qaCZIaXxvKm0mQmk7Zl49bztmPWY8PDEzfGY+Pj4xOTtmPTUqZiszODY0MjkyMTk2fWk9MDtzd2l0Y2gocyl7Y2FzZSAzOmlePXRbNCphKzJdPDwxNjtjYXNlIDI6aV49dFs0KmErMV08PDg7Y2FzZSAxOmlePXRbNCphXTtpPWkqYyZIaXxpKnUmQmk7aT1pPDwxNXxpPj4+MTc7aT1pKmgmSGl8aSptJkJpOzEmYT9sXj1pOmZePWl9dGhpcy5oMT1sO3RoaXMuaDI9Zn1oZXhkaWdlc3QoKXtsZXQgZT10aGlzLmgxLHQ9dGhpcy5oMjtlXj10Pj4+MTtlPTM5ODE4MDY3OTcqZSZIaXwzNjA0NSplJkJpO3Q9NDI4MzU0MzUxMSp0JkhpfCgyOTUwMTYzNzk3Kih0PDwxNnxlPj4+MTYpJkhpKT4+PjE2O2VePXQ+Pj4xO2U9NDQ0OTg0NDAzKmUmSGl8NjA0OTkqZSZCaTt0PTMzMDE4ODIzNjYqdCZIaXwoMzEyMDQzNzg5MyoodDw8MTZ8ZT4+PjE2KSZIaSk+Pj4xNjtlXj10Pj4+MTtyZXR1cm4oZT4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIikrKHQ+Pj4wKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpfX1jbGFzcyBQREZJbWFnZXtjb25zdHJ1Y3Rvcih7eHJlZjplLHJlczp0LGltYWdlOm4saXNJbmxpbmU6YT0hMSxzbWFzazpzPW51bGwsbWFzazpyPW51bGwsaXNNYXNrOmk9ITEscGRmRnVuY3Rpb25GYWN0b3J5Om8sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmwsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pe3RoaXMuaW1hZ2U9bjtjb25zdCBjPW4uZGljdCxoPWMuZ2V0KCJGIiwiRmlsdGVyIik7bGV0IHU7aWYoaCBpbnN0YW5jZW9mIE5hbWUpdT1oLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KGgpKXtjb25zdCB0PWUuZmV0Y2hJZlJlZihoWzBdKTt0IGluc3RhbmNlb2YgTmFtZSYmKHU9dC5uYW1lKX1zd2l0Y2godSl7Y2FzZSJKUFhEZWNvZGUiOih7d2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWlnaHQsY29tcG9uZW50c0NvdW50Om4ubnVtQ29tcHMsYml0c1BlckNvbXBvbmVudDpuLmJpdHNQZXJDb21wb25lbnR9PUpweEltYWdlLnBhcnNlSW1hZ2VQcm9wZXJ0aWVzKG4uc3RyZWFtKSk7bi5zdHJlYW0ucmVzZXQoKTtjb25zdCBlPUltYWdlUmVzaXplci5nZXRSZWR1Y2VQb3dlckZvckpQWChuLndpZHRoLG4uaGVpZ2h0LG4ubnVtQ29tcHMpO3RoaXMuanB4RGVjb2Rlck9wdGlvbnM9e251bUNvbXBvbmVudHM6MCxpc0luZGV4ZWRDb2xvcm1hcDohMSxzbWFza0luRGF0YTpjLmdldCgiU01hc2tJbkRhdGEiKT49MSxyZWR1Y2VQb3dlcjplfTtpZihlKXtjb25zdCB0PTIqKmU7bi53aWR0aD1NYXRoLmNlaWwobi53aWR0aC90KTtuLmhlaWdodD1NYXRoLmNlaWwobi5oZWlnaHQvdCl9YnJlYWs7Y2FzZSJKQklHMkRlY29kZSI6bi5iaXRzUGVyQ29tcG9uZW50PTE7bi5udW1Db21wcz0xfWxldCBtPWMuZ2V0KCJXIiwiV2lkdGgiKSxwPWMuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoTnVtYmVyLmlzSW50ZWdlcihuLndpZHRoKSYmbi53aWR0aD4wJiZOdW1iZXIuaXNJbnRlZ2VyKG4uaGVpZ2h0KSYmbi5oZWlnaHQ+MCYmKG4ud2lkdGghPT1tfHxuLmhlaWdodCE9PXApKXt3YXJuKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIGltYWdlIGRhdGEsIHJhdGhlciB0aGFuIHRoZSBpbWFnZSBkaWN0aW9uYXJ5LiIpO209bi53aWR0aDtwPW4uaGVpZ2h0fWVsc2V7Y29uc3QgZT0ibnVtYmVyIj09dHlwZW9mIG0mJm0+MCx0PSJudW1iZXIiPT10eXBlb2YgcCYmcD4wO2lmKCFlfHwhdCl7aWYoIW4uZmFsbGJhY2tEaW1zKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBpbWFnZSB3aWR0aDogJHttfSBvciBoZWlnaHQ6ICR7cH1gKTt3YXJuKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIHBhcmVudCBpbWFnZSwgZm9yIFNNYXNrL01hc2sgZGF0YS4iKTtlfHwobT1uLmZhbGxiYWNrRGltcy53aWR0aCk7dHx8KHA9bi5mYWxsYmFja0RpbXMuaGVpZ2h0KX19dGhpcy53aWR0aD1tO3RoaXMuaGVpZ2h0PXA7dGhpcy5pbnRlcnBvbGF0ZT1jLmdldCgiSSIsIkludGVycG9sYXRlIik7dGhpcy5pbWFnZU1hc2s9Yy5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExO3RoaXMubWF0dGU9Yy5nZXQoIk1hdHRlIil8fCExO2xldCBkPW4uYml0c1BlckNvbXBvbmVudDtpZighZCl7ZD1jLmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpO2lmKCFkKXtpZighdGhpcy5pbWFnZU1hc2spdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCaXRzIHBlciBjb21wb25lbnQgbWlzc2luZyBpbiBpbWFnZTogJHt0aGlzLmltYWdlTWFza31gKTtkPTF9fXRoaXMuYnBjPWQ7aWYodGhpcy5pbWFnZU1hc2spdGhpcy5udW1Db21wcz0xO2Vsc2V7bGV0IHM9Yy5nZXRSYXcoIkNTIil8fGMuZ2V0UmF3KCJDb2xvclNwYWNlIik7Y29uc3Qgcj0hIXM7aWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucz8uc21hc2tJbkRhdGEmJjI9PT1jLmdldCgiU01hc2tJbkRhdGEiKSl7dGhpcy5qcHhQcmVtdWx0aXBsaWVkPSEwO2lmKHRoaXMubWF0dGUpe2NvbnN0IG49Q29sb3JTcGFjZVV0aWxzLnBhcnNlKHtjczpyP3M6TmFtZS5nZXQoIkRldmljZVJHQiIpLHhyZWY6ZSxyZXNvdXJjZXM6YT90Om51bGwscGRmRnVuY3Rpb25GYWN0b3J5Om8sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmwsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pO3RoaXMucHJlYmxlbmRNYXR0ZT1uLmdldFJnYih0aGlzLm1hdHRlLDApfX1pZihyKXRoaXMuanB4RGVjb2Rlck9wdGlvbnM/LnNtYXNrSW5EYXRhJiYocz1OYW1lLmdldCgiRGV2aWNlUkdCQSIpKTtlbHNlIGlmKHRoaXMuanB4RGVjb2Rlck9wdGlvbnMpcz1OYW1lLmdldCgiRGV2aWNlUkdCQSIpO2Vsc2Ugc3dpdGNoKG4ubnVtQ29tcHMpe2Nhc2UgMTpzPU5hbWUuZ2V0KCJEZXZpY2VHcmF5Iik7YnJlYWs7Y2FzZSAzOnM9TmFtZS5nZXQoIkRldmljZVJHQiIpO2JyZWFrO2Nhc2UgNDpzPU5hbWUuZ2V0KCJEZXZpY2VDTVlLIik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEltYWdlcyB3aXRoICR7bi5udW1Db21wc30gY29sb3IgY29tcG9uZW50cyBub3Qgc3VwcG9ydGVkLmApfXRoaXMuY29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOnMseHJlZjplLHJlc291cmNlczphP3Q6bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6byxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6bCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSk7dGhpcy5udW1Db21wcz10aGlzLmNvbG9yU3BhY2UubnVtQ29tcHM7aWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucyl7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucy5udW1Db21wb25lbnRzPXI/dGhpcy5udW1Db21wczowO3RoaXMuanB4RGVjb2Rlck9wdGlvbnMuaXNJbmRleGVkQ29sb3JtYXA9IkluZGV4ZWQiPT09dGhpcy5jb2xvclNwYWNlLm5hbWV9fXRoaXMuZGVjb2RlPWMuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTt0aGlzLm5lZWRzRGVjb2RlPSExO2lmKHRoaXMuZGVjb2RlJiYodGhpcy5jb2xvclNwYWNlJiYhdGhpcy5jb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSh0aGlzLmRlY29kZSxkKXx8aSYmIUNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLDEpKSl7dGhpcy5uZWVkc0RlY29kZT0hMDtjb25zdCBlPSgxPDxkKS0xO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzPVtdO3RoaXMuZGVjb2RlQWRkZW5kcz1bXTtjb25zdCB0PSJJbmRleGVkIj09PXRoaXMuY29sb3JTcGFjZT8ubmFtZTtmb3IobGV0IG49MCxhPTA7bjx0aGlzLmRlY29kZS5sZW5ndGg7bis9MiwrK2Epe2NvbnN0IHM9dGhpcy5kZWNvZGVbbl0scj10aGlzLmRlY29kZVtuKzFdO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzW2FdPXQ/KHItcykvZTpyLXM7dGhpcy5kZWNvZGVBZGRlbmRzW2FdPXQ/czplKnN9fWlmKHMpe3MuZmFsbGJhY2tEaW1zPz89e3dpZHRoOm0saGVpZ2h0OnB9O3RoaXMuc21hc2s9bmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6cyxpc0lubGluZTphLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpsLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmZ9KX1lbHNlIGlmKHIpaWYociBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2lmKHIuZGljdC5nZXQoIklNIiwiSW1hZ2VNYXNrIikpe3IuZmFsbGJhY2tEaW1zPz89e3dpZHRoOm0saGVpZ2h0OnB9O3RoaXMubWFzaz1uZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpyLGlzSW5saW5lOmEsaXNNYXNrOiEwLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpsLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmZ9KX1lbHNlIHdhcm4oIklnbm9yaW5nIC9NYXNrIGluIGltYWdlIHdpdGhvdXQgL0ltYWdlTWFzay4iKX1lbHNlIHRoaXMubWFzaz1yfXN0YXRpYyBhc3luYyBidWlsZEltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6bixpc0lubGluZTphPSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpyLGxvY2FsQ29sb3JTcGFjZUNhY2hlOml9KXtjb25zdCBvPW47bGV0IGw9bnVsbCxmPW51bGw7Y29uc3QgYz1uLmRpY3QuZ2V0KCJTTWFzayIpLGg9bi5kaWN0LmdldCgiTWFzayIpO2M/YyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/bD1jOndhcm4oIlVuc3VwcG9ydGVkIC9TTWFzayBmb3JtYXQuIik6aCYmKGggaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGgpP2Y9aDp3YXJuKCJVbnN1cHBvcnRlZCAvTWFzayBmb3JtYXQuIikpO3JldHVybiBuZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpvLGlzSW5saW5lOmEsc21hc2s6bCxtYXNrOmYscGRmRnVuY3Rpb25GYWN0b3J5OnMsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnIsbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX0pfXN0YXRpYyBhc3luYyBjcmVhdGVNYXNrKHtpbWFnZTplLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOnQ9ITF9KXtjb25zdHtkaWN0Om59PWUsYT1uLmdldCgiVyIsIldpZHRoIikscz1uLmdldCgiSCIsIkhlaWdodCIpLHI9bi5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpLGk9bi5nZXRBcnJheSgiRCIsIkRlY29kZSIpLG89aT8uWzBdPjAsbD0oYSs3Pj4zKSpzLGY9YXdhaXQgZS5nZXRJbWFnZURhdGEobCksYz0xPT09YSYmMT09PXMmJm89PT0oMD09PWYubGVuZ3RofHwhISgxMjgmZlswXSkpO2lmKGMpcmV0dXJue2lzU2luZ2xlT3BhcXVlUGl4ZWw6Y307aWYodCl7aWYoSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQoYSxzKSl7Y29uc3QgZT1uZXcgVWludDhDbGFtcGVkQXJyYXkoYSpzKjQpO2NvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHtzcmM6ZixkZXN0OmUsd2lkdGg6YSxoZWlnaHQ6cyxub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpvfSk7cmV0dXJuIEltYWdlUmVzaXplci5jcmVhdGVJbWFnZSh7a2luZDpULGRhdGE6ZSx3aWR0aDphLGhlaWdodDpzLGludGVycG9sYXRlOnJ9KX1jb25zdCBlPW5ldyBPZmZzY3JlZW5DYW52YXMoYSxzKSx0PWUuZ2V0Q29udGV4dCgiMmQiKSxuPXQuY3JlYXRlSW1hZ2VEYXRhKGEscyk7Y29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzpmLGRlc3Q6bi5kYXRhLHdpZHRoOmEsaGVpZ2h0OnMsbm9uQmxhY2tDb2xvcjowLGludmVyc2VEZWNvZGU6b30pO3QucHV0SW1hZ2VEYXRhKG4sMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOmEsaGVpZ2h0OnMsaW50ZXJwb2xhdGU6cixiaXRtYXA6ZS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX19Y29uc3QgaD1mLmJ5dGVMZW5ndGg7bGV0IHU7aWYoZSBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSYmKCFvfHxsPT09aCkpdT1mO2Vsc2UgaWYobyl7dT1uZXcgVWludDhBcnJheShsKTt1LnNldChmKTt1LmZpbGwoMjU1LGgpfWVsc2UgdT1uZXcgVWludDhBcnJheShmKTtpZihvKWZvcihsZXQgZT0wO2U8aDtlKyspdVtlXV49MjU1O3JldHVybntkYXRhOnUsd2lkdGg6YSxoZWlnaHQ6cyxpbnRlcnBvbGF0ZTpyfX1nZXQgZHJhd1dpZHRoKCl7cmV0dXJuIE1hdGgubWF4KHRoaXMud2lkdGgsdGhpcy5zbWFzaz8ud2lkdGh8fDAsdGhpcy5tYXNrPy53aWR0aHx8MCl9Z2V0IGRyYXdIZWlnaHQoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5oZWlnaHQsdGhpcy5zbWFzaz8uaGVpZ2h0fHwwLHRoaXMubWFzaz8uaGVpZ2h0fHwwKX1kZWNvZGVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJwYyxuPXRoaXMubnVtQ29tcHMsYT10aGlzLmRlY29kZUFkZGVuZHMscz10aGlzLmRlY29kZUNvZWZmaWNpZW50cyxyPSgxPDx0KS0xO2xldCBpLG87aWYoMT09PXQpe2ZvcihpPTAsbz1lLmxlbmd0aDtpPG87aSsrKWVbaV09KyFlW2ldO3JldHVybn1sZXQgbD0wO2ZvcihpPTAsbz10aGlzLndpZHRoKnRoaXMuaGVpZ2h0O2k8bztpKyspZm9yKGxldCB0PTA7dDxuO3QrKyl7ZVtsXT1NYXRoQ2xhbXAoYVt0XStlW2xdKnNbdF0sMCxyKTtsKyt9fWdldENvbXBvbmVudHMoZSl7Y29uc3QgdD10aGlzLmJwYztpZig4PT09dClyZXR1cm4gZTtjb25zdCBuPXRoaXMud2lkdGgsYT10aGlzLmhlaWdodCxzPXRoaXMubnVtQ29tcHMscj1uKmEqcztsZXQgaSxvPTA7aT10PD04P25ldyBVaW50OEFycmF5KHIpOnQ8PTE2P25ldyBVaW50MTZBcnJheShyKTpuZXcgVWludDMyQXJyYXkocik7Y29uc3QgbD1uKnMsZj0oMTw8dCktMTtsZXQgYyxoLHU9MDtpZigxPT09dCl7bGV0IHQsbixzO2ZvcihsZXQgcj0wO3I8YTtyKyspe249dSsoLTgmbCk7cz11K2w7Zm9yKDt1PG47KXtoPWVbbysrXTtpW3VdPWg+PjcmMTtpW3UrMV09aD4+NiYxO2lbdSsyXT1oPj41JjE7aVt1KzNdPWg+PjQmMTtpW3UrNF09aD4+MyYxO2lbdSs1XT1oPj4yJjE7aVt1KzZdPWg+PjEmMTtpW3UrN109MSZoO3UrPTh9aWYodTxzKXtoPWVbbysrXTt0PTEyODtmb3IoO3U8czspe2lbdSsrXT0rISEoaCZ0KTt0Pj49MX19fX1lbHNle2xldCBuPTA7aD0wO2Zvcih1PTAsYz1yO3U8YzsrK3Upe2lmKHUlbD09PTApe2g9MDtuPTB9Zm9yKDtuPHQ7KXtoPWg8PDh8ZVtvKytdO24rPTh9Y29uc3QgYT1uLXQ7aVt1XT1NYXRoQ2xhbXAoaD4+YSwwLGYpO2gmPSgxPDxhKS0xO249YX19cmV0dXJuIGl9YXN5bmMgZmlsbE9wYWNpdHkoZSx0LG4sYSxzKXtsZXQgcjtpZih0aGlzLnNtYXNrKXI9KGUsYSk9PnRoaXMuc21hc2suZmlsbEdyYXlCdWZmZXIoZSx7Li4uYSxkZXN0V2lkdGg6dCxkZXN0SGVpZ2h0Om59KTtlbHNlIGlmKHRoaXMubWFzaylpZih0aGlzLm1hc2sgaW5zdGFuY2VvZiBQREZJbWFnZSlyPShlLGEpPT50aGlzLm1hc2suZmlsbEdyYXlCdWZmZXIoZSx7Li4uYSxpbnZlcnRPdXRwdXQ6ITAsZGVzdFdpZHRoOnQsZGVzdEhlaWdodDpufSk7ZWxzZXtpZighQXJyYXkuaXNBcnJheSh0aGlzLm1hc2spKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBtYXNrIGZvcm1hdC4iKTtyPShlLHttYXhSb3dzOm4sb2Zmc2V0OmEsc3RyaWRlOnJ9KT0+e2ZvcihsZXQgaT0wLG89dCpuO2k8bzsrK2kpe2xldCB0PTA7Y29uc3Qgbj1pKnRoaXMubnVtQ29tcHM7Zm9yKGxldCBlPTA7ZTx0aGlzLm51bUNvbXBzOysrZSl7Y29uc3QgYT1zW24rZV0scj0yKmU7aWYoYTx0aGlzLm1hc2tbcl18fGE+dGhpcy5tYXNrW3IrMV0pe3Q9MjU1O2JyZWFrfX1lW2kqcithXT10fX19ZWxzZSByPShlLHttYXhSb3dzOm4sb2Zmc2V0OmEsc3RyaWRlOnN9KT0+e2ZvcihsZXQgcj0wLGk9dCpuO3I8aTsrK3IpZVtyKnMrYV09MjU1fTthd2FpdCByKGUse21heFJvd3M6YSxvZmZzZXQ6MyxzdHJpZGU6NH0pfXN0YXRpYyNWZShlLHQsbixhLHMpe2ZvcihsZXQgcj0wO3I8dDtyKz00KXtjb25zdCB0PWVbciszXTtpZigwPT09dCl7ZVtyXT0yNTU7ZVtyKzFdPTI1NTtlW3IrMl09MjU1O2NvbnRpbnVlfWNvbnN0IGk9MjU1L3Q7ZVtyXT0oZVtyXS1uKSppK247ZVtyKzFdPShlW3IrMV0tYSkqaSthO2VbcisyXT0oZVtyKzJdLXMpKmkrc319dW5kb1ByZWJsZW5kKGUsdCxuKXtjb25zdCBhPXRoaXMuc21hc2s/Lm1hdHRlO2lmKCFhKXJldHVybjtjb25zdCBzPXRoaXMuY29sb3JTcGFjZS5nZXRSZ2IoYSwwKTtQREZJbWFnZS4jVmUoZSx0Km4qNCxzWzBdLHNbMV0sc1syXSl9YXN5bmMgY3JlYXRlSW1hZ2VEYXRhKGU9ITEsdD0hMSl7Y29uc3Qgbj10aGlzLmRyYXdXaWR0aCxhPXRoaXMuZHJhd0hlaWdodCxzPXt3aWR0aDpuLGhlaWdodDphLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGUsa2luZDowLGRhdGE6bnVsbH0scj10aGlzLm51bUNvbXBzLGk9dGhpcy53aWR0aCxvPXRoaXMuaGVpZ2h0LGw9dGhpcy5icGMsZj1pKnIqbCs3Pj4zLGM9dCYmSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQobixhKTtpZighdGhpcy5zbWFzayYmIXRoaXMubWFzayYmIkRldmljZVJHQkEiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUpe3Mua2luZD1UO2NvbnN0IGU9cy5kYXRhPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmkqNCx7aW50ZXJuYWw6dCYmY30pO2lmKHRoaXMuanB4UHJlbXVsdGlwbGllZCl7Y29uc3QgdD10aGlzLnByZWJsZW5kTWF0dGU7UERGSW1hZ2UuI1ZlKGUsZS5sZW5ndGgsdD8uWzBdPz8wLHQ/LlsxXT8/MCx0Py5bMl0/PzApfXJldHVybiB0P2M/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHMsITEpOnRoaXMuY3JlYXRlQml0bWFwKFQsbixhLGUpOnN9aWYoIWUpe2xldCBlOyJEZXZpY2VHcmF5Ij09PXRoaXMuY29sb3JTcGFjZS5uYW1lJiYxPT09bD9lPUM6IkRldmljZVJHQiIhPT10aGlzLmNvbG9yU3BhY2UubmFtZXx8OCE9PWx8fHRoaXMubmVlZHNEZWNvZGV8fChlPUYpO2lmKGUmJiF0aGlzLnNtYXNrJiYhdGhpcy5tYXNrJiZuPT09aSYmYT09PW8pe2NvbnN0IHI9YXdhaXQgdGhpcy4jJGUoaSxvKTtpZihyKXJldHVybiByO2NvbnN0IGw9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKG8qZix7aW50ZXJuYWw6dCYmY30pO2lmKHQpcmV0dXJuIGM/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHtkYXRhOmwsa2luZDplLHdpZHRoOm4saGVpZ2h0OmEsaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX0sdGhpcy5uZWVkc0RlY29kZSk6dGhpcy5jcmVhdGVCaXRtYXAoZSxpLG8sbCk7cy5raW5kPWU7cy5kYXRhPWw7aWYodGhpcy5uZWVkc0RlY29kZSl7YXNzZXJ0KGU9PT1DLCJQREZJbWFnZS5jcmVhdGVJbWFnZURhdGE6IFRoZSBpbWFnZSBtdXN0IGJlIGdyYXlzY2FsZS4iKTtjb25zdCB0PXMuZGF0YTtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspdFtlXV49MjU1fXJldHVybiBzfWlmKHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBKcGVnU3RyZWFtJiYhdGhpcy5zbWFzayYmIXRoaXMubWFzayYmIXRoaXMubmVlZHNEZWNvZGUpe2xldCBlPW8qZjtpZih0JiYhYyl7bGV0IHQ9ITE7c3dpdGNoKHRoaXMuY29sb3JTcGFjZS5uYW1lKXtjYXNlIkRldmljZUdyYXkiOmUqPTQ7dD0hMDticmVhaztjYXNlIkRldmljZVJHQiI6ZT1lLzMqNDt0PSEwO2JyZWFrO2Nhc2UiRGV2aWNlQ01ZSyI6dD0hMH1pZih0KXtjb25zdCB0PWF3YWl0IHRoaXMuIyRlKG4sYSk7aWYodClyZXR1cm4gdDtjb25zdCBzPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6bixkcmF3SGVpZ2h0OmEsZm9yY2VSR0JBOiEwLGludGVybmFsOiEwfSk7cmV0dXJuIHRoaXMuY3JlYXRlQml0bWFwKFQsbixhLHMpfX1lbHNlIHN3aXRjaCh0aGlzLmNvbG9yU3BhY2UubmFtZSl7Y2FzZSJEZXZpY2VHcmF5IjplKj0zO2Nhc2UiRGV2aWNlUkdCIjpjYXNlIkRldmljZUNNWUsiOnMua2luZD1GO3MuZGF0YT1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOm4sZHJhd0hlaWdodDphLGZvcmNlUkdCOiEwLGludGVybmFsOmN9KTtyZXR1cm4gYz9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2Uocyk6c319fWNvbnN0IGg9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKG8qZix7aW50ZXJuYWw6ITB9KSx1PTB8aC5sZW5ndGgvZiphL28sbT10aGlzLmdldENvbXBvbmVudHMoaCk7bGV0IHAsZCxnLGIsdyxqO2lmKHQmJiFjKXtnPW5ldyBPZmZzY3JlZW5DYW52YXMobixhKTtiPWcuZ2V0Q29udGV4dCgiMmQiKTt3PWIuY3JlYXRlSW1hZ2VEYXRhKG4sYSk7aj13LmRhdGF9cy5raW5kPVQ7aWYoZXx8dGhpcy5zbWFza3x8dGhpcy5tYXNrKXt0JiYhY3x8KGo9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG4qYSo0KSk7cD0xO2Q9ITA7YXdhaXQgdGhpcy5maWxsT3BhY2l0eShqLG4sYSx1LG0pfWVsc2V7aWYoIXR8fGMpe3Mua2luZD1GO2o9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG4qYSozKTtwPTB9ZWxzZXtuZXcgVWludDMyQXJyYXkoai5idWZmZXIpLmZpbGwoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUpO3A9MX1kPSExfXRoaXMubmVlZHNEZWNvZGUmJnRoaXMuZGVjb2RlQnVmZmVyKG0pO3RoaXMuY29sb3JTcGFjZS5maWxsUmdiKGosaSxvLG4sYSx1LGwsbSxwKTtkJiZ0aGlzLnVuZG9QcmVibGVuZChqLG4sdSk7aWYodCYmIWMpe2IucHV0SW1hZ2VEYXRhKHcsMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOm4saGVpZ2h0OmEsYml0bWFwOmcudHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX19cy5kYXRhPWo7cmV0dXJuIGM/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHMpOnN9YXN5bmMgZmlsbEdyYXlCdWZmZXIoZSx7ZGVzdFdpZHRoOnQsZGVzdEhlaWdodDpuLGludmVydE91dHB1dDphLG1heFJvd3M6cyxvZmZzZXQ6cj0wLHN0cmlkZTppPTF9PXt9KXtjb25zdCBvPXRoaXMubnVtQ29tcHM7aWYoMSE9PW8pdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBSZWFkaW5nIGdyYXkgc2NhbGUgZnJvbSBhIGNvbG9yIGltYWdlOiAke299YCk7Y29uc3QgbD10aGlzLndpZHRoLGY9dGhpcy5oZWlnaHQsYz10aGlzLmJwYyxoPWwqbypjKzc+PjMsdT1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMoZipoLHtpbnRlcm5hbDohMH0pLG09dGhpcy5nZXRDb21wb25lbnRzKHUpLHA9dD8/bCxkPW4/P2YsZz1wIT09bHx8ZCE9PWYsYj12b2lkIDA9PT1zP2Q6TWF0aC5taW4oZCxzKTtsZXQgdz1sLGo9MCxrPW51bGw7aWYoZyl7dz1wO2o9Zi9kO2NvbnN0IGU9bC9wO2s9bmV3IFVpbnQzMkFycmF5KHApO2ZvcihsZXQgdD0wO3Q8cDt0Kyspa1t0XT1NYXRoLmZsb29yKHQqZSl9Y29uc3QgeT1hPzI1NTowO2lmKDE9PT1jKXtpZihrKXtjb25zdCB0PWs7bGV0IG49cjtpZih0aGlzLm5lZWRzRGVjb2RlKWZvcihsZXQgYT0wO2E8YjthKyspe2NvbnN0IHM9TWF0aC5mbG9vcihhKmopKmw7Zm9yKGxldCBhPTA7YTx3O2ErKyl7ZVtuXT1tW3MrdFthXV0tMSYyNTVeeTtuKz1pfX1lbHNlIGZvcihsZXQgYT0wO2E8YjthKyspe2NvbnN0IHM9TWF0aC5mbG9vcihhKmopKmw7Zm9yKGxldCBhPTA7YTx3O2ErKyl7ZVtuXT0yNTUmLW1bcyt0W2FdXV55O24rPWl9fX1lbHNle2NvbnN0IHQ9dypiO2lmKHRoaXMubmVlZHNEZWNvZGUpZm9yKGxldCBuPTA7bjx0OysrbillW24qaStyXT1tW25dLTEmMjU1Xnk7ZWxzZSBmb3IobGV0IG49MDtuPHQ7KytuKWVbbippK3JdPTI1NSYtbVtuXV55fXJldHVybn10aGlzLm5lZWRzRGVjb2RlJiZ0aGlzLmRlY29kZUJ1ZmZlcihtKTtjb25zdCBxPTI1NS8oKDE8PGMpLTEpO2lmKGspe2NvbnN0IHQ9aztsZXQgbj1yO2ZvcihsZXQgYT0wO2E8YjthKyspe2NvbnN0IHM9TWF0aC5mbG9vcihhKmopKmw7Zm9yKGxldCBhPTA7YTx3O2ErKyl7ZVtuXT1xKm1bcyt0W2FdXV55O24rPWl9fX1lbHNle2NvbnN0IHQ9dypiO2ZvcihsZXQgbj0wO248dDsrK24pZVtuKmkrcl09cSptW25dXnl9fWNyZWF0ZUJpdG1hcChlLHQsbixhKXtjb25zdCBzPW5ldyBPZmZzY3JlZW5DYW52YXModCxuKSxyPXMuZ2V0Q29udGV4dCgiMmQiKTtsZXQgaTtpZihlPT09VClpPW5ldyBJbWFnZURhdGEoYSx0LG4pO2Vsc2V7aT1yLmNyZWF0ZUltYWdlRGF0YSh0LG4pO2NvbnZlcnRUb1JHQkEoe2tpbmQ6ZSxzcmM6YSxkZXN0Om5ldyBVaW50MzJBcnJheShpLmRhdGEuYnVmZmVyKSx3aWR0aDp0LGhlaWdodDpuLGludmVyc2VEZWNvZGU6dGhpcy5uZWVkc0RlY29kZX0pfXIucHV0SW1hZ2VEYXRhKGksMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOnQsaGVpZ2h0Om4sYml0bWFwOnMudHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX19YXN5bmMjJGUoZSx0KXtjb25zdCBuPWF3YWl0IHRoaXMuaW1hZ2UuZ2V0VHJhbnNmZXJhYmxlSW1hZ2UoKTtyZXR1cm4gbj97ZGF0YTpudWxsLHdpZHRoOmUsaGVpZ2h0OnQsYml0bWFwOm4saW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX06bnVsbH1hc3luYyBnZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDp0LGRyYXdIZWlnaHQ6bixmb3JjZVJHQkE6YT0hMSxmb3JjZVJHQjpzPSExLGludGVybmFsOnI9ITF9KXt0aGlzLmltYWdlLnJlc2V0KCk7dGhpcy5pbWFnZS5kcmF3V2lkdGg9dHx8dGhpcy53aWR0aDt0aGlzLmltYWdlLmRyYXdIZWlnaHQ9bnx8dGhpcy5oZWlnaHQ7dGhpcy5pbWFnZS5mb3JjZVJHQkE9ISFhO3RoaXMuaW1hZ2UuZm9yY2VSR0I9ISFzO2NvbnN0IGk9YXdhaXQgdGhpcy5pbWFnZS5nZXRJbWFnZURhdGEoZSx0aGlzLmpweERlY29kZXJPcHRpb25zKTtpZihyfHx0aGlzLmltYWdlIGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtKXJldHVybiBpO2Fzc2VydChpIGluc3RhbmNlb2YgVWludDhBcnJheSwnUERGSW1hZ2UuZ2V0SW1hZ2VCeXRlczogVW5zdXBwb3J0ZWQgImltYWdlQnl0ZXMiIHR5cGUuJyk7cmV0dXJuIG5ldyBVaW50OEFycmF5KGkpfX1jb25zdCBEaT1PYmplY3QuZnJlZXplKHttYXhJbWFnZVNpemU6LTEsZGlzYWJsZUZvbnRGYWNlOiExLGlnbm9yZUVycm9yczohMSxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMSxpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDohMSxjYW52YXNNYXhBcmVhSW5CeXRlczotMSxmb250RXh0cmFQcm9wZXJ0aWVzOiExLHVzZVN5c3RlbUZvbnRzOiEwLHVzZVdhc206ITAsdXNlV29ya2VyRmV0Y2g6ITAsY01hcFVybDpudWxsLGNNYXBQYWNrZWQ6ITAsaWNjVXJsOm51bGwsc3RhbmRhcmRGb250RGF0YVVybDpudWxsLHdhc21Vcmw6bnVsbCxoYXNHUFU6ITF9KSxNaT0xLE5pPTIsUGk9UHJvbWlzZS5yZXNvbHZlKCk7ZnVuY3Rpb24gbm9ybWFsaXplQmxlbmRNb2RlKGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1ub3JtYWxpemVCbGVuZE1vZGUodCwhMCk7aWYoZSlyZXR1cm4gZX13YXJuKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlIEFycmF5OiAke2V9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1pZihlIGluc3RhbmNlb2YgTmFtZSl7c3dpdGNoKGUubmFtZSl7Y2FzZSJOb3JtYWwiOmNhc2UiQ29tcGF0aWJsZSI6cmV0dXJuInNvdXJjZS1vdmVyIjtjYXNlIk11bHRpcGx5IjpyZXR1cm4ibXVsdGlwbHkiO2Nhc2UiU2NyZWVuIjpyZXR1cm4ic2NyZWVuIjtjYXNlIk92ZXJsYXkiOnJldHVybiJvdmVybGF5IjtjYXNlIkRhcmtlbiI6cmV0dXJuImRhcmtlbiI7Y2FzZSJMaWdodGVuIjpyZXR1cm4ibGlnaHRlbiI7Y2FzZSJDb2xvckRvZGdlIjpyZXR1cm4iY29sb3ItZG9kZ2UiO2Nhc2UiQ29sb3JCdXJuIjpyZXR1cm4iY29sb3ItYnVybiI7Y2FzZSJIYXJkTGlnaHQiOnJldHVybiJoYXJkLWxpZ2h0IjtjYXNlIlNvZnRMaWdodCI6cmV0dXJuInNvZnQtbGlnaHQiO2Nhc2UiRGlmZmVyZW5jZSI6cmV0dXJuImRpZmZlcmVuY2UiO2Nhc2UiRXhjbHVzaW9uIjpyZXR1cm4iZXhjbHVzaW9uIjtjYXNlIkh1ZSI6cmV0dXJuImh1ZSI7Y2FzZSJTYXR1cmF0aW9uIjpyZXR1cm4ic2F0dXJhdGlvbiI7Y2FzZSJDb2xvciI6cmV0dXJuImNvbG9yIjtjYXNlIkx1bWlub3NpdHkiOnJldHVybiJsdW1pbm9zaXR5In13YXJuKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlOiAke2UubmFtZX1gKX1yZXR1cm4gdD9udWxsOiJzb3VyY2Utb3ZlciJ9ZnVuY3Rpb24gYWRkQ2FjaGVkSW1hZ2VPcHMoZSx7b2JqSWQ6dCxmbjpuLGFyZ3M6YSxvcHRpb25hbENvbnRlbnQ6cyxoYXNNYXNrOnJ9KXt0JiZlLmFkZERlcGVuZGVuY3kodCk7ZS5hZGRJbWFnZU9wcyhuLGEscyxyKTtuPT09TnQmJmFbMF0/LmNvdW50PjAmJmFbMF0uY291bnQrK31jbGFzcyBUaW1lU2xvdE1hbmFnZXJ7c3RhdGljIFRJTUVfU0xPVF9EVVJBVElPTl9NUz0yMDtzdGF0aWMgQ0hFQ0tfVElNRV9FVkVSWT0xMDA7Y29uc3RydWN0b3IoKXt0aGlzLnJlc2V0KCl9Y2hlY2soKXtpZigrK3RoaXMuY2hlY2tlZDxUaW1lU2xvdE1hbmFnZXIuQ0hFQ0tfVElNRV9FVkVSWSlyZXR1cm4hMTt0aGlzLmNoZWNrZWQ9MDtyZXR1cm4gdGhpcy5lbmRUaW1lPD1EYXRlLm5vdygpfXJlc2V0KCl7dGhpcy5lbmRUaW1lPURhdGUubm93KCkrVGltZVNsb3RNYW5hZ2VyLlRJTUVfU0xPVF9EVVJBVElPTl9NUzt0aGlzLmNoZWNrZWQ9MH19Y2xhc3MgUGFydGlhbEV2YWx1YXRvcntjb25zdHJ1Y3Rvcih7eHJlZjplLGhhbmRsZXI6dCxwYWdlSW5kZXg6bixpZEZhY3Rvcnk6YSxmb250Q2FjaGU6cyxidWlsdEluQ01hcENhY2hlOnIsc3RhbmRhcmRGb250RGF0YUNhY2hlOmksZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOm8sZ2xvYmFsSW1hZ2VDYWNoZTpsLHN5c3RlbUZvbnRDYWNoZTpmLG9wdGlvbnM6Yz1udWxsfSl7dGhpcy54cmVmPWU7dGhpcy5oYW5kbGVyPXQ7dGhpcy5wYWdlSW5kZXg9bjt0aGlzLmlkRmFjdG9yeT1hO3RoaXMuZm9udENhY2hlPXM7dGhpcy5idWlsdEluQ01hcENhY2hlPXI7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9aTt0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZT1vO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZT1sO3RoaXMuc3lzdGVtRm9udENhY2hlPWY7dGhpcy5vcHRpb25zPWN8fERpO3RoaXMudHlwZTNGb250UmVmcz1udWxsO3RoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZT1uZXcgUmVnaW9uYWxJbWFnZUNhY2hlO3RoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZD10aGlzLmZldGNoQnVpbHRJbkNNYXAuYmluZCh0aGlzKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe3JldHVybiBzaGFkb3codGhpcywiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsbmV3IFBERkZ1bmN0aW9uRmFjdG9yeSh7eHJlZjp0aGlzLnhyZWZ9KSl9Z2V0IHBhcnNpbmdUeXBlM0ZvbnQoKXtyZXR1cm4hIXRoaXMudHlwZTNGb250UmVmc31jbG9uZShlPW51bGwpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZSh0aGlzKTt0Lm9wdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMub3B0aW9ucyxlKTtyZXR1cm4gdH1oYXNCbGVuZE1vZGVzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuITE7aWYoZS5vYmpJZCYmdC5oYXMoZS5vYmpJZCkpcmV0dXJuITE7Y29uc3Qgbj1uZXcgUmVmU2V0KHQpO2Uub2JqSWQmJm4ucHV0KGUub2JqSWQpO2NvbnN0IGE9W2VdLHM9dGhpcy54cmVmO2Zvcig7YS5sZW5ndGg7KXtjb25zdCBlPWEuc2hpZnQoKSx0PWUuZ2V0KCJFeHRHU3RhdGUiKTtpZih0IGluc3RhbmNlb2YgRGljdClmb3IobGV0IGUgb2YgdC5nZXRSYXdWYWx1ZXMoKSl7aWYoZSBpbnN0YW5jZW9mIFJlZil7aWYobi5oYXMoZSkpY29udGludWU7dHJ5e2U9cy5mZXRjaChlKX1jYXRjaCh0KXtuLnB1dChlKTtpbmZvKGBoYXNCbGVuZE1vZGVzIC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHt0fSIuYCk7Y29udGludWV9fWlmKCEoZSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2Uub2JqSWQmJm4ucHV0KGUub2JqSWQpO2NvbnN0IHQ9ZS5nZXQoIkJNIik7aWYodCBpbnN0YW5jZW9mIE5hbWUpe2lmKCJOb3JtYWwiIT09dC5uYW1lKXJldHVybiEwfWVsc2UgaWYodm9pZCAwIT09dCYmQXJyYXkuaXNBcnJheSh0KSlmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBOYW1lJiYiTm9ybWFsIiE9PWUubmFtZSlyZXR1cm4hMH1jb25zdCByPWUuZ2V0KCJYT2JqZWN0Iik7aWYociBpbnN0YW5jZW9mIERpY3QpZm9yKGxldCBlIG9mIHIuZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKG4uaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXMuZmV0Y2goZSl9Y2F0Y2godCl7bi5wdXQoZSk7aW5mbyhgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIFhPYmplY3Q6ICIke3R9Ii5gKTtjb250aW51ZX19aWYoIShlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpY29udGludWU7ZS5kaWN0Lm9iaklkJiZuLnB1dChlLmRpY3Qub2JqSWQpO2NvbnN0IHQ9ZS5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYodCBpbnN0YW5jZW9mIERpY3QmJighdC5vYmpJZHx8IW4uaGFzKHQub2JqSWQpKSl7YS5wdXNoKHQpO3Qub2JqSWQmJm4ucHV0KHQub2JqSWQpfX19Zm9yKGNvbnN0IGUgb2Ygbil0LnB1dChlKTtyZXR1cm4hMX1hc3luYyBmZXRjaEJ1aWx0SW5DTWFwKGUpe2NvbnN0IHQ9dGhpcy5idWlsdEluQ01hcENhY2hlLmdldChlKTtpZih0KXJldHVybiB0O2xldCBuO249dGhpcy5vcHRpb25zLnVzZVdvcmtlckZldGNoP3tjTWFwRGF0YTphd2FpdCBmZXRjaEJpbmFyeURhdGEoYCR7dGhpcy5vcHRpb25zLmNNYXBVcmx9JHtlfS5iY21hcGApLGlzQ29tcHJlc3NlZDohMH06e2NNYXBEYXRhOmF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQmluYXJ5RGF0YSIse2tpbmQ6ImNNYXBVcmwiLGZpbGVuYW1lOmAke2V9JHt0aGlzLm9wdGlvbnMuY01hcFBhY2tlZD8iLmJjbWFwIjoiIn1gfSksaXNDb21wcmVzc2VkOnRoaXMub3B0aW9ucy5jTWFwUGFja2VkfTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuc2V0KGUsbik7cmV0dXJuIG59YXN5bmMgZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpe2NvbnN0IHQ9dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuZ2V0KGUpO2lmKHQpcmV0dXJuIG5ldyBTdHJlYW0odCk7aWYodGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYiU3ltYm9sIiE9PWUmJiJaYXBmRGluZ2JhdHMiIT09ZSlyZXR1cm4gbnVsbDtjb25zdCBuPXphKClbZV07bGV0IGE7dHJ5e2E9dGhpcy5vcHRpb25zLnVzZVdvcmtlckZldGNoP2F3YWl0IGZldGNoQmluYXJ5RGF0YShgJHt0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybH0ke259YCk6YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiRmV0Y2hCaW5hcnlEYXRhIix7a2luZDoic3RhbmRhcmRGb250RGF0YVVybCIsZmlsZW5hbWU6bn0pfWNhdGNoKGUpe3dhcm4oZSk7cmV0dXJuIG51bGx9dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuc2V0KGUsYSk7cmV0dXJuIG5ldyBTdHJlYW0oYSl9YXN5bmMgYnVpbGRGb3JtWE9iamVjdChlLHQsbixhLHMscixpLG8pe2NvbnN0e2RpY3Q6bH09dCxmPWxvb2t1cE1hdHJpeChsLmdldEFycmF5KCJNYXRyaXgiKSxudWxsKSxjPWxvb2t1cE5vcm1hbFJlY3QobC5nZXRBcnJheSgiQkJveCIpLG51bGwpO2xldCBoLHUsbT1jJiZuZXcgRmxvYXQzMkFycmF5KGMpO20/LnNvbWUoZT0+IWlzRmluaXRlKGUpKSYmKG09bnVsbCk7bC5oYXMoIk9DIikmJihoPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMobC5nZXQoIk9DIiksZSkpO3ZvaWQgMCE9PWgmJmEuYWRkT3AoQ3QsWyJPQyIsaF0pO2NvbnN0IHA9bC5nZXQoIkdyb3VwIik7bGV0IGQ7Y29uc3QgZz1bZiYmbmV3IEZsb2F0MzJBcnJheShmKSwhcCYmbXx8bnVsbF0sYj1sLmdldCgiUmVzb3VyY2VzIik7aWYocCl7dT17bWF0cml4OmYsYmJveDptLHNtYXNrOm4saXNvbGF0ZWQ6ITEsa25vY2tvdXQ6ITEsbmVlZHNJc29sYXRpb246ITEsaGFzU29mdE1hc2s6ITEsaXNHcmF5OiExfTtsZXQgdD1udWxsO2lmKGlzTmFtZShwLmdldCgiUyIpLCJUcmFuc3BhcmVuY3kiKSl7dS5pc29sYXRlZD1wLmdldCgiSSIpfHwhMTt1Lmtub2Nrb3V0PXAuZ2V0KCJLIil8fCExO2lmKHAuaGFzKCJDUyIpKXtjb25zdCBuPXRoaXMuX2dldENvbG9yU3BhY2UocC5nZXRSYXcoIkNTIiksZSxpKTt0PW4gaW5zdGFuY2VvZiBDb2xvclNwYWNlP246YXdhaXQgdGhpcy5faGFuZGxlQ29sb3JTcGFjZShuKX19dS5pc0dyYXk9MT09PXQ/Lm51bUNvbXBzO2lmKG4/LmJhY2tkcm9wKXt0fHw9Q29sb3JTcGFjZVV0aWxzLnJnYjtuLmJhY2tkcm9wPXQuZ2V0UmdiSGV4KG4uYmFja2Ryb3AsMCl9ZWxzZSJMdW1pbm9zaXR5Ij09PW4/LnN1YnR5cGUmJihuLmJhY2tkcm9wPSIjMDAwMDAwIik7ZD1uZXcgQ2hlY2tlZE9wZXJhdG9yTGlzdH1lbHNle2Q9YTthLmFkZE9wKFJ0LGcpfWF3YWl0IHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOnMscmVzb3VyY2VzOmIgaW5zdGFuY2VvZiBEaWN0P2I6ZSxvcGVyYXRvckxpc3Q6ZCxpbml0aWFsU3RhdGU6cixwcmV2UmVmczpvfSk7aWYocCl7dS5uZWVkc0lzb2xhdGlvbj1kLm5lZWRzSXNvbGF0aW9ufHwhIW47dS5oYXNTb2Z0TWFzaz1kLmhhc1NvZnRNYXNrfHwhIW47YS5hZGRPcChIdCxbdV0pO2EuYWRkT3AoUnQsZyk7YS5hZGRPcExpc3QoZCk7YS5hZGRPcChPdCxbXSk7YS5hZGRPcChCdCxbdV0pfWVsc2UgYS5hZGRPcChPdCxbXSk7dm9pZCAwIT09aCYmYS5hZGRPcChJdCxbXSl9X3NlbmRJbWdEYXRhKGUsdCxuPSExKXtjb25zdCBhPXQ/W3QuYml0bWFwfHx0LmRhdGEuYnVmZmVyXTpudWxsO3JldHVybiB0aGlzLnBhcnNpbmdUeXBlM0ZvbnR8fG4/dGhpcy5oYW5kbGVyLnNlbmQoImNvbW1vbm9iaiIsW2UsIkltYWdlIix0XSxhKTp0aGlzLmhhbmRsZXIuc2VuZCgib2JqIixbZSx0aGlzLnBhZ2VJbmRleCwiSW1hZ2UiLHRdLGEpfWFzeW5jIGJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczplLGltYWdlOnQsaXNJbmxpbmU6bj0hMSxvcGVyYXRvckxpc3Q6YSxjYWNoZUtleTpzLGxvY2FsSW1hZ2VDYWNoZTpyLGxvY2FsQ29sb3JTcGFjZUNhY2hlOml9KXtjb25zdHttYXhJbWFnZVNpemU6byxpZ25vcmVFcnJvcnM6bCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpmfT10aGlzLm9wdGlvbnMse2RpY3Q6Y309dCxoPWMub2JqSWQsdT1jLmdldCgiVyIsIldpZHRoIiksbT1jLmdldCgiSCIsIkhlaWdodCIpO2lmKCF1fHwibnVtYmVyIiE9dHlwZW9mIHV8fCFtfHwibnVtYmVyIiE9dHlwZW9mIG0pe3dhcm4oIkltYWdlIGRpbWVuc2lvbnMgYXJlIG1pc3NpbmcsIG9yIG5vdCBudW1iZXJzLiIpO3JldHVybn1pZigtMSE9PW8mJnUqbT5vKXtjb25zdCBlPSJJbWFnZSBleGNlZWRlZCBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBhbmQgd2FzIHJlbW92ZWQuIjtpZighbCl0aHJvdyBuZXcgRXJyb3IoZSk7d2FybihlKTtyZXR1cm59bGV0IHA7Yy5oYXMoIk9DIikmJihwPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoYy5nZXQoIk9DIiksZSkpO2xldCBkLGcsYjtpZihjLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITEpe2Q9YXdhaXQgUERGSW1hZ2UuY3JlYXRlTWFzayh7aW1hZ2U6dCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpmJiYhdGhpcy5wYXJzaW5nVHlwZTNGb250fSk7aWYoZC5pc1NpbmdsZU9wYXF1ZVBpeGVsKXtnPVd0O2I9W107YS5hZGRJbWFnZU9wcyhnLGIscCk7aWYocyl7Y29uc3QgZT17Zm46ZyxhcmdzOmIsb3B0aW9uYWxDb250ZW50OnB9O3Iuc2V0KHMsaCxlKTtoJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsaCxlKX1yZXR1cm59aWYodGhpcy5wYXJzaW5nVHlwZTNGb250KXtiPWZ1bmN0aW9uIGNvbXBpbGVUeXBlM0dseXBoKHtkYXRhOmUsd2lkdGg6dCxoZWlnaHQ6bn0pe2lmKHQ+MWUzfHxuPjFlMylyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBVaW50OEFycmF5KFswLDIsNCwwLDEsMCw1LDQsOCwxMCwwLDgsMCwyLDEsMF0pLHM9dCsxLHI9bmV3IFVpbnQ4QXJyYXkocyoobisxKSk7bGV0IGksbyxsO2NvbnN0IGY9dCs3Ji04LGM9bmV3IFVpbnQ4QXJyYXkoZipuKTtsZXQgaD0wO2Zvcihjb25zdCB0IG9mIGUpe2xldCBlPTEyODtmb3IoO2U+MDspe2NbaCsrXT10JmU/MDoyNTU7ZT4+PTF9fWxldCB1PTA7aD0wO2lmKDAhPT1jW2hdKXtyWzBdPTE7Kyt1fWZvcihvPTE7bzx0O28rKyl7aWYoY1toXSE9PWNbaCsxXSl7cltvXT1jW2hdPzI6MTsrK3V9aCsrfWlmKDAhPT1jW2hdKXtyW29dPTI7Kyt1fWZvcihpPTE7aTxuO2krKyl7aD1pKmY7bD1pKnM7aWYoY1toLWZdIT09Y1toXSl7cltsXT1jW2hdPzE6ODsrK3V9bGV0IGU9KGNbaF0/NDowKSsoY1toLWZdPzg6MCk7Zm9yKG89MTtvPHQ7bysrKXtlPShlPj4yKSsoY1toKzFdPzQ6MCkrKGNbaC1mKzFdPzg6MCk7aWYoYVtlXSl7cltsK29dPWFbZV07Kyt1fWgrK31pZihjW2gtZl0hPT1jW2hdKXtyW2wrb109Y1toXT8yOjQ7Kyt1fWlmKHU+MWUzKXJldHVybiBudWxsfWg9Zioobi0xKTtsPWkqcztpZigwIT09Y1toXSl7cltsXT04OysrdX1mb3Iobz0xO288dDtvKyspe2lmKGNbaF0hPT1jW2grMV0pe3JbbCtvXT1jW2hdPzQ6ODsrK3V9aCsrfWlmKDAhPT1jW2hdKXtyW2wrb109NDsrK3V9aWYodT4xZTMpcmV0dXJuIG51bGw7Y29uc3QgbT1uZXcgSW50MzJBcnJheShbMCxzLC0xLDAsLXMsMCwwLDAsMV0pLHA9W10se2E6ZCxiOmcsYzpiLGQ6dyxlOmosZjprfT0obmV3IERPTU1hdHJpeCkuc2NhbGVTZWxmKDEvdCwtMS9uKS50cmFuc2xhdGVTZWxmKDAsLW4pO2ZvcihpPTA7dSYmaTw9bjtpKyspe2xldCBlPWkqcztjb25zdCBuPWUrdDtmb3IoO2U8biYmIXJbZV07KWUrKztpZihlPT09biljb250aW51ZTtsZXQgYT1lJXMsbz1pO3AucHVzaCgkdCxkKmErYipvK2osZyphK3cqbytrKTtjb25zdCBsPWU7bGV0IGY9cltlXTtkb3tjb25zdCB0PW1bZl07ZG97ZSs9dH13aGlsZSghcltlXSk7Y29uc3Qgbj1yW2VdO2lmKDUhPT1uJiYxMCE9PW4pe2Y9bjtyW2VdPTB9ZWxzZXtmPW4mNTEqZj4+NDtyW2VdJj1mPj4yfGY8PDJ9YT1lJXM7bz1lL3N8MDtwLnB1c2goWXQsZCphK2IqbytqLGcqYSt3Km8rayk7cltlXXx8LS11fXdoaWxlKGwhPT1lKTstLWl9cmV0dXJuW1Z0LFtuZXcgRmxvYXQzMkFycmF5KHApXSxuZXcgRmxvYXQzMkFycmF5KFswLDAsdCxuXSldfShkKTtpZihiKXthLmFkZEltYWdlT3BzKFh0LGIscCk7cmV0dXJufXdhcm4oIkNhbm5vdCBjb21waWxlIFR5cGUzIGdseXBoLiIpO2EuYWRkSW1hZ2VPcHMoTnQsW2RdLHApO3JldHVybn1jb25zdCBlPWBtYXNrXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO2EuYWRkRGVwZW5kZW5jeShlKTtkLmRhdGFMZW49ZC5iaXRtYXA/ZC53aWR0aCpkLmhlaWdodCo0OmQuZGF0YS5sZW5ndGg7dGhpcy5fc2VuZEltZ0RhdGEoZSxkKTtnPU50O2I9W3tkYXRhOmUsd2lkdGg6ZC53aWR0aCxoZWlnaHQ6ZC5oZWlnaHQsaW50ZXJwb2xhdGU6ZC5pbnRlcnBvbGF0ZSxjb3VudDoxfV07YS5hZGRJbWFnZU9wcyhnLGIscCk7aWYocyl7Y29uc3QgdD17b2JqSWQ6ZSxmbjpnLGFyZ3M6YixvcHRpb25hbENvbnRlbnQ6cH07ci5zZXQocyxoLHQpO2gmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxoLHQpfXJldHVybn1jb25zdCB3PWMuaGFzKCJTTWFzayIpfHxjLmhhcygiTWFzayIpO2lmKG4mJnUrbTwyMDAmJiF3KXt0cnl7Y29uc3Qgcz1uZXcgUERGSW1hZ2Uoe3hyZWY6dGhpcy54cmVmLHJlczplLGltYWdlOnQsaXNJbmxpbmU6bixwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGdsb2JhbENvbG9yU3BhY2VDYWNoZTp0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxsb2NhbENvbG9yU3BhY2VDYWNoZTppfSk7ZD1hd2FpdCBzLmNyZWF0ZUltYWdlRGF0YSghMCwhMSk7YS5hZGRJbWFnZU9wcyhfdCxbZF0scCl9Y2F0Y2goZSl7Y29uc3QgdD1gVW5hYmxlIHRvIGRlY29kZSBpbmxpbmUgaW1hZ2U6ICIke2V9Ii5gO2lmKCFsKXRocm93IG5ldyBFcnJvcih0KTt3YXJuKHQpfXJldHVybn1sZXQgaj1gaW1nXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gLGs9ITEseT1udWxsO2lmKHRoaXMucGFyc2luZ1R5cGUzRm9udClqPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9X3R5cGUzXyR7an1gO2Vsc2UgaWYocyYmaCl7az10aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2hvdWxkQ2FjaGUoaCx0aGlzLnBhZ2VJbmRleCk7aWYoayl7YXNzZXJ0KCFuLCJDYW5ub3QgY2FjaGUgYW4gaW5saW5lIGltYWdlIGdsb2JhbGx5LiIpO2o9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fJHtqfWB9fWEuYWRkRGVwZW5kZW5jeShqKTtnPUV0O2I9W2osdSxtXTthLmFkZEltYWdlT3BzKGcsYixwLHcpO2lmKGspe3k9e29iaklkOmosZm46ZyxhcmdzOmIsb3B0aW9uYWxDb250ZW50OnAsaGFzTWFzazp3LGJ5dGVTaXplOjB9O2lmKHRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5oYXNEZWNvZGVGYWlsZWQoaCkpe3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGgseSk7dGhpcy5fc2VuZEltZ0RhdGEoaixudWxsLGspO3JldHVybn1pZih1Km0+MjVlNHx8dyl7Y29uc3QgZT1hd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJjb21tb25vYmoiLFtqLCJDb3B5TG9jYWxJbWFnZSIse2ltYWdlUmVmOmh9XSk7aWYoZSl7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNldERhdGEoaCx5KTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkQnl0ZVNpemUoaCxlKTtyZXR1cm59fX1QREZJbWFnZS5idWlsZEltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOm4scGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX0pLnRoZW4oYXN5bmMgZT0+e2Q9YXdhaXQgZS5jcmVhdGVJbWFnZURhdGEoITEsZik7ZC5kYXRhTGVuPWQuYml0bWFwP2Qud2lkdGgqZC5oZWlnaHQqNDpkLmRhdGEubGVuZ3RoO2QucmVmPWg7ayYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGgsZC5kYXRhTGVuKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoaixkLGspfSkuY2F0Y2goZT0+e3dhcm4oYFVuYWJsZSB0byBkZWNvZGUgaW1hZ2UgIiR7an0iOiAiJHtlfSIuYCk7aCYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZERlY29kZUZhaWxlZChoKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoaixudWxsLGspfSk7aWYocyl7Y29uc3QgZT17b2JqSWQ6aixmbjpnLGFyZ3M6YixvcHRpb25hbENvbnRlbnQ6cCxoYXNNYXNrOnd9O3Iuc2V0KHMsaCxlKTtpZihoKXt0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsaCxlKTtpZihrKXthc3NlcnQoeSwiVGhlIGdsb2JhbCBjYWNoZS1kYXRhIG11c3QgYmUgYXZhaWxhYmxlLiIpO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGgseSl9fX19aGFuZGxlU01hc2soZSx0LG4sYSxzLHIsaSl7Y29uc3Qgbz1lLmdldCgiRyIpLGw9e3N1YnR5cGU6ZS5nZXQoIlMiKS5uYW1lLGJhY2tkcm9wOmUuZ2V0KCJCQyIpfSxmPWUuZ2V0KCJUUiIpO2lmKGlzUERGRnVuY3Rpb24oZikpe2NvbnN0IGU9dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LmNyZWF0ZShmKSx0PW5ldyBVaW50OEFycmF5KDI1Niksbj1uZXcgRmxvYXQzMkFycmF5KDEpO2ZvcihsZXQgYT0wO2E8MjU2O2ErKyl7blswXT1hLzI1NTtlKG4sMCxuLDApO3RbYV09MjU1Km5bMF18MH1sLnRyYW5zZmVyTWFwPXR9cmV0dXJuIHRoaXMuYnVpbGRGb3JtWE9iamVjdCh0LG8sbCxuLGEscy5zdGF0ZS5jbG9uZSh7bmV3UGF0aDohMH0pLHIsaSl9aGFuZGxlVHJhbnNmZXJGdW5jdGlvbihlKXtsZXQgdDtpZihBcnJheS5pc0FycmF5KGUpKXt0PWU7ZS5sZW5ndGg+MSYmZS5ldmVyeSh0PT50PT09ZVswXSkmJih0PVtlWzBdXSl9ZWxzZXtpZighaXNQREZGdW5jdGlvbihlKSlyZXR1cm4gbnVsbDt0PVtlXX1jb25zdCBuPVtdO2xldCBhPTAscz0wO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7YSsrO2lmKGlzTmFtZSh0LCJJZGVudGl0eSIpKXtuLnB1c2gobnVsbCk7Y29udGludWV9aWYoIWlzUERGRnVuY3Rpb24odCkpcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKHQpLGk9bmV3IFVpbnQ4QXJyYXkoMjU2KSxvPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXtvWzBdPWUvMjU1O3IobywwLG8sMCk7aVtlXT0yNTUqb1swXXwwfW4ucHVzaChpKTtzKyt9cmV0dXJuIDEhPT1hJiY0IT09YXx8MD09PXM/bnVsbDpufWhhbmRsZVRpbGluZ1R5cGUoZSx0LG4sYSxzLHIsaSxvLGwpe2NvbnN0IGY9bmV3IENoZWNrZWRPcGVyYXRvckxpc3QsYz1EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6W3MuZ2V0KCJSZXNvdXJjZXMiKSxuXX0pO3JldHVybiB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmEsdGFzazppLHJlc291cmNlczpjLG9wZXJhdG9yTGlzdDpmLHByZXZSZWZzOmx9KS50aGVuKGZ1bmN0aW9uKCl7Y29uc3Qgbj1mLmdldElSKCkse25lZWRzSXNvbGF0aW9uOmF9PWYsaT1nZXRUaWxpbmdQYXR0ZXJuSVIobixzLHQsYSk7ci5hZGREZXBlbmRlbmNpZXMoZi5kZXBlbmRlbmNpZXMpO3IuYWRkT3AoZSxpKTtzLm9iaklkJiZvLnNldChudWxsLHMub2JqSWQse29wZXJhdG9yTGlzdElSOm4sbmVlZHNJc29sYXRpb246YSxkaWN0OnN9KX0pLmNhdGNoKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgaGFuZGxlVGlsaW5nVHlwZSAtIGlnbm9yaW5nIHBhdHRlcm46ICIke2V9Ii5gKX19KX1hc3luYyBoYW5kbGVTZXRGb250KGUsdCxuLGEscyxyLGk9bnVsbCxvPW51bGwsbD1udWxsKXtjb25zdCBmPXQ/LlswXWluc3RhbmNlb2YgTmFtZT90WzBdLm5hbWU6bnVsbCxjPWF3YWl0IHRoaXMubG9hZEZvbnQoZixuLGUscyxpLG8sbCk7Yy5mb250LmlzVHlwZTNGb250JiZhLmFkZERlcGVuZGVuY2llcyhjLnR5cGUzRGVwZW5kZW5jaWVzKTtyLmZvbnQ9Yy5mb250O2Muc2VuZCh0aGlzLmhhbmRsZXIpO3JldHVybiBjLmxvYWRlZE5hbWV9aGFuZGxlVGV4dChlLHQpe2NvbnN0IG49dC5mb250LGE9bi5jaGFyc1RvR2x5cGhzKGUpO2lmKG4uZGF0YSl7KCEhKHQudGV4dFJlbmRlcmluZ01vZGUmeCl8fCJQYXR0ZXJuIj09PXQuZmlsbENvbG9yU3BhY2UubmFtZXx8IlBhdHRlcm4iPT09dC5zdHJva2VDb2xvclNwYWNlLm5hbWV8fG4uZGlzYWJsZUZvbnRGYWNlKSYmUGFydGlhbEV2YWx1YXRvci5idWlsZEZvbnRQYXRocyhuLGEsdGhpcy5oYW5kbGVyLHRoaXMub3B0aW9ucyl9cmV0dXJuIGF9ZW5zdXJlU3RhdGVGb250KGUpe2lmKGUuZm9udClyZXR1cm47Y29uc3QgdD1uZXcgRm9ybWF0RXJyb3IoIk1pc3Npbmcgc2V0Rm9udCAoVGYpIG9wZXJhdG9yIGJlZm9yZSB0ZXh0IHJlbmRlcmluZyBvcGVyYXRvci4iKTtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyB0O3dhcm4oYGVuc3VyZVN0YXRlRm9udDogIiR7dH0iLmApfWFzeW5jIHNldEdTdGF0ZSh7cmVzb3VyY2VzOmUsZ1N0YXRlOnQsb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6YSx0YXNrOnMsc3RhdGVNYW5hZ2VyOnIsbG9jYWxHU3RhdGVDYWNoZTppLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm8sc2VlblJlZnM6bH0pe2NvbnN0IGY9dC5vYmpJZDtsZXQgYz0hMDtjb25zdCBoPVtdO2xldCB1PVByb21pc2UucmVzb2x2ZSgpO2Zvcihjb25zdFthLGldb2YgdClzd2l0Y2goYSl7Y2FzZSJUeXBlIjpicmVhaztjYXNlIkxXIjppZigibnVtYmVyIiE9dHlwZW9mIGkpe3dhcm4oYEludmFsaWQgTFcgKGxpbmUgd2lkdGgpOiAke2l9YCk7YnJlYWt9aC5wdXNoKFthLE1hdGguYWJzKGkpXSk7YnJlYWs7Y2FzZSJMQyI6Y2FzZSJMSiI6Y2FzZSJNTCI6Y2FzZSJEIjpjYXNlIlJJIjpjYXNlIkZMIjpjYXNlIkNBIjpjYXNlImNhIjpoLnB1c2goW2EsaV0pO2JyZWFrO2Nhc2UiRm9udCI6Yz0hMTt1PXUudGhlbigoKT0+dGhpcy5oYW5kbGVTZXRGb250KGUsbnVsbCxpWzBdLG4scyxyLnN0YXRlLG51bGwsbnVsbCxsKS50aGVuKGZ1bmN0aW9uKGUpe24uYWRkRGVwZW5kZW5jeShlKTtoLnB1c2goW2EsW2UsaVsxXV1dKX0pKTticmVhaztjYXNlIkJNIjpoLnB1c2goW2Esbm9ybWFsaXplQmxlbmRNb2RlKGkpXSk7YnJlYWs7Y2FzZSJTTWFzayI6aWYoaXNOYW1lKGksIk5vbmUiKSl7aC5wdXNoKFthLCExXSk7YnJlYWt9aWYoaSBpbnN0YW5jZW9mIERpY3Qpe2M9ITE7dT11LnRoZW4oKCk9PnRoaXMuaGFuZGxlU01hc2soaSxlLG4scyxyLG8sbCkpO2gucHVzaChbYSwhMF0pfWVsc2Ugd2FybigiVW5zdXBwb3J0ZWQgU01hc2sgdHlwZSIpO2JyZWFrO2Nhc2UiVFIiOmNhc2UiVFIyIjp7aWYoIlRSIj09PWEmJnQuaGFzKCJUUjIiKSlicmVhaztjb25zdCBlPXRoaXMuaGFuZGxlVHJhbnNmZXJGdW5jdGlvbihpKTtoLnB1c2goWyJUUiIsZV0pO2JyZWFrfWNhc2UiT1AiOmNhc2Uib3AiOmNhc2UiT1BNIjpjYXNlIkJHIjpjYXNlIkJHMiI6Y2FzZSJVQ1IiOmNhc2UiVUNSMiI6Y2FzZSJIVCI6Y2FzZSJTTSI6Y2FzZSJTQSI6Y2FzZSJBSVMiOmNhc2UiVEsiOmluZm8oImdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIithKTticmVhaztkZWZhdWx0OmluZm8oIlVua25vd24gZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK2EpfWF3YWl0IHU7aC5sZW5ndGg+MCYmbi5hZGRPcChrZSxbaF0pO2MmJmkuc2V0KGEsZixoKX1sb2FkRm9udChlLHQsbixhLHM9bnVsbCxyPW51bGwsaT1udWxsKXtjb25zdCBlcnJvckZvbnQ9YXN5bmMoKT0+bmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOiJnX2ZvbnRfZXJyb3IiLGZvbnQ6bmV3IEVycm9yRm9udChgRm9udCAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZS5gKSxkaWN0OnR9KTtsZXQgbztpZih0KXQgaW5zdGFuY2VvZiBSZWYmJihvPXQpO2Vsc2V7Y29uc3QgdD1uLmdldCgiRm9udCIpO3QmJihvPXQuZ2V0UmF3KGUpKX1pZihvKXtpZih0aGlzLnR5cGUzRm9udFJlZnM/LmhhcyhvKSlyZXR1cm4gZXJyb3JGb250KCk7aWYodGhpcy5mb250Q2FjaGUuaGFzKG8pKXJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQobyk7dHJ5e3Q9dGhpcy54cmVmLmZldGNoSWZSZWYobyl9Y2F0Y2goZSl7d2FybihgbG9hZEZvbnQgLSBsb29rdXAgZmFpbGVkOiAiJHtlfSIuYCl9fWlmKCEodCBpbnN0YW5jZW9mIERpY3QpKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyYmIXRoaXMucGFyc2luZ1R5cGUzRm9udCl7d2FybihgRm9udCAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZS5gKTtyZXR1cm4gZXJyb3JGb250KCl9d2FybihgRm9udCAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZSAtLSBhdHRlbXB0aW5nIHRvIGZhbGxiYWNrIHRvIGEgZGVmYXVsdCBmb250LmApO3Q9c3x8UGFydGlhbEV2YWx1YXRvci5mYWxsYmFja0ZvbnREaWN0fWlmKHQuY2FjaGVLZXkmJnRoaXMuZm9udENhY2hlLmhhcyh0LmNhY2hlS2V5KSlyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KHQuY2FjaGVLZXkpO2NvbnN0e3Byb21pc2U6bCxyZXNvbHZlOmZ9PVByb21pc2Uud2l0aFJlc29sdmVycygpO2xldCBjO3RyeXtjPXRoaXMucHJlRXZhbHVhdGVGb250KHQpO2MuY3NzRm9udEluZm89cn1jYXRjaChlKXt3YXJuKGBsb2FkRm9udCAtIHByZUV2YWx1YXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTtyZXR1cm4gZXJyb3JGb250KCl9Y29uc3R7ZGVzY3JpcHRvcjpoLGhhc2g6dX09YyxtPW8gaW5zdGFuY2VvZiBSZWY7bGV0IHA7aWYodSYmaCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9aC5mb250QWxpYXNlc3x8PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZVt1XSl7Y29uc3QgdD1lW3VdLmFsaWFzUmVmO2lmKG0mJnQmJnRoaXMuZm9udENhY2hlLmhhcyh0KSl7dGhpcy5mb250Q2FjaGUucHV0QWxpYXMobyx0KTtyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KG8pfX1lbHNlIGVbdV09e2ZvbnRJRDp0aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKX07bSYmKGVbdV0uYWxpYXNSZWY9byk7cD1lW3VdLmZvbnRJRH1lbHNlIHA9dGhpcy5pZEZhY3RvcnkuY3JlYXRlRm9udElkKCk7YXNzZXJ0KHA/LnN0YXJ0c1dpdGgoImYiKSwnVGhlICJmb250SUQiIG11c3QgYmUgKGNvcnJlY3RseSkgZGVmaW5lZC4nKTtpZihtKXRoaXMuZm9udENhY2hlLnB1dChvLGwpO2Vsc2V7dC5jYWNoZUtleT1gY2FjaGVLZXlfJHtwfWA7dGhpcy5mb250Q2FjaGUucHV0KHQuY2FjaGVLZXksbCl9dC5sb2FkZWROYW1lPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7cH1gO3RoaXMudHJhbnNsYXRlRm9udChjKS50aGVuKGFzeW5jIGU9Pntjb25zdCBzPW5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDplLGRpY3Q6dH0pO2lmKGUuaXNUeXBlM0ZvbnQpdHJ5e2F3YWl0IHMubG9hZFR5cGUzRGF0YSh0aGlzLG4sYSxpKX1jYXRjaChlKXt0aHJvdyBuZXcgRXJyb3IoYFR5cGUzIGZvbnQgbG9hZCBlcnJvcjogJHtlfWApfWYocyl9KS5jYXRjaChlPT57d2FybihgbG9hZEZvbnQgLSB0cmFuc2xhdGVGb250IGZhaWxlZDogIiR7ZX0iLmApO2YobmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOnQubG9hZGVkTmFtZSxmb250Om5ldyBFcnJvckZvbnQoZT8ubWVzc2FnZSksZGljdDp0fSkpfSk7cmV0dXJuIGx9YnVpbGRQYXRoKGUsdCxuKXtjb25zdHtwYXRoTWluTWF4OmEscGF0aEJ1ZmZlcjpzfT1uO3N3aXRjaCgwfGUpe2Nhc2UgVGU6e2NvbnN0IGU9bi5jdXJyZW50UG9pbnRYPXRbMF0scj1uLmN1cnJlbnRQb2ludFk9dFsxXSxpPXRbMl0sbz10WzNdLGw9ZStpLGY9citvOzA9PT1pfHwwPT09bz9zLnB1c2goJHQsZSxyLFl0LGwsZixadCk6cy5wdXNoKCR0LGUscixZdCxsLHIsWXQsbCxmLFl0LGUsZixadCk7VXRpbC5yZWN0Qm91bmRpbmdCb3goZSxyLGwsZixhKTticmVha31jYXNlIFNlOntjb25zdCBlPW4uY3VycmVudFBvaW50WD10WzBdLHI9bi5jdXJyZW50UG9pbnRZPXRbMV07cy5wdXNoKCR0LGUscik7VXRpbC5wb2ludEJvdW5kaW5nQm94KGUscixhKTticmVha31jYXNlIEFlOntjb25zdCBlPW4uY3VycmVudFBvaW50WD10WzBdLHI9bi5jdXJyZW50UG9pbnRZPXRbMV07cy5wdXNoKFl0LGUscik7VXRpbC5wb2ludEJvdW5kaW5nQm94KGUscixhKTticmVha31jYXNlIHhlOntjb25zdCBlPW4uY3VycmVudFBvaW50WCxyPW4uY3VycmVudFBvaW50WSxbaSxvLGwsZixjLGhdPXQ7bi5jdXJyZW50UG9pbnRYPWM7bi5jdXJyZW50UG9pbnRZPWg7cy5wdXNoKEp0LGksbyxsLGYsYyxoKTtVdGlsLmJlemllckJvdW5kaW5nQm94KGUscixpLG8sbCxmLGMsaCxhKTticmVha31jYXNlIENlOntjb25zdCBlPW4uY3VycmVudFBvaW50WCxyPW4uY3VycmVudFBvaW50WSxbaSxvLGwsZl09dDtuLmN1cnJlbnRQb2ludFg9bDtuLmN1cnJlbnRQb2ludFk9ZjtzLnB1c2goSnQsZSxyLGksbyxsLGYpO1V0aWwuYmV6aWVyQm91bmRpbmdCb3goZSxyLGUscixpLG8sbCxmLGEpO2JyZWFrfWNhc2UgSWU6e2NvbnN0IGU9bi5jdXJyZW50UG9pbnRYLHI9bi5jdXJyZW50UG9pbnRZLFtpLG8sbCxmXT10O24uY3VycmVudFBvaW50WD1sO24uY3VycmVudFBvaW50WT1mO3MucHVzaChKdCxpLG8sbCxmLGwsZik7VXRpbC5iZXppZXJCb3VuZGluZ0JveChlLHIsaSxvLGwsZixsLGYsYSk7YnJlYWt9Y2FzZSBGZTpzLnB1c2goWnQpfX1fZ2V0Q29sb3JTcGFjZShlLHQsbil7cmV0dXJuIENvbG9yU3BhY2VVdGlscy5wYXJzZSh7Y3M6ZSx4cmVmOnRoaXMueHJlZixyZXNvdXJjZXM6dCxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGdsb2JhbENvbG9yU3BhY2VDYWNoZTp0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxsb2NhbENvbG9yU3BhY2VDYWNoZTpuLGFzeW5jSWZOb3RDYWNoZWQ6ITB9KX1hc3luYyBfaGFuZGxlQ29sb3JTcGFjZShlKXt0cnl7cmV0dXJuIGF3YWl0IGV9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYF9oYW5kbGVDb2xvclNwYWNlIC0gaWdub3JpbmcgQ29sb3JTcGFjZTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9fXBhcnNlU2hhZGluZyh7c2hhZGluZzplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOm4sbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOmF9KXtsZXQgcyxyPWEuZ2V0KGUpO2lmKHIpcmV0dXJuIHI7dHJ5e3M9UGF0dGVybi5wYXJzZVNoYWRpbmcoZSx0aGlzLnhyZWYsdCx0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksdGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsbikuZ2V0SVIoKX1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgcGFyc2VTaGFkaW5nIC0gaWdub3Jpbmcgc2hhZGluZzogIiR7dH0iLmApO2Euc2V0KGUsbnVsbCk7cmV0dXJuIG51bGx9dGhyb3cgdH1yPWBwYXR0ZXJuXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO3RoaXMucGFyc2luZ1R5cGUzRm9udCYmKHI9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHtyfWApO2Euc2V0KGUscik7aWYodGhpcy5wYXJzaW5nVHlwZTNGb250KXtjb25zdCBlPWZ1bmN0aW9uIGNvbXBpbGVQYXR0ZXJuSW5mbyhlKXtsZXQgdCxuPW51bGwsYT1bXSxzPVtdLHI9W10saT1udWxsLG89bnVsbDtzd2l0Y2goZVswXSl7Y2FzZSJSYWRpYWxBeGlhbCI6dD0iYXhpYWwiPT09ZVsxXT8xOjI7bj1lWzJdO3I9ZVszXTsxPT09dD9hLnB1c2goLi4uZVs0XSwuLi5lWzVdKTphLnB1c2goZVs0XVswXSxlWzRdWzFdLGVbNl0sZVs1XVswXSxlWzVdWzFdLGVbN10pO2JyZWFrO2Nhc2UiTWVzaCI6dD0zO2k9ZVsxXTthPWVbMl07cz1lWzNdO249ZVs2XTtvPWVbN107YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHBhdHRlcm4gdHlwZTogJHtlWzBdfWApfWNvbnN0IGw9TWF0aC5mbG9vcihhLmxlbmd0aC8yKSxmPU1hdGguZmxvb3Iocy5sZW5ndGgvNCksYz1yLmxlbmd0aCxoPW5ldyBBcnJheUJ1ZmZlcigyMCs4KmwrNCpmKzgqYysobj8xNjowKSsobz8zOjApKSx1PW5ldyBEYXRhVmlldyhoKSxtPW5ldyBVaW50OEFycmF5KGgpO3Uuc2V0VWludDgoUEFUVEVSTl9JTkZPLktJTkQsdCk7dS5zZXRVaW50OChQQVRURVJOX0lORk8uSEFTX0JCT1gsbj8xOjApO3Uuc2V0VWludDgoUEFUVEVSTl9JTkZPLkhBU19CQUNLR1JPVU5ELG8/MTowKTt1LnNldFVpbnQ4KFBBVFRFUk5fSU5GTy5TSEFESU5HX1RZUEUsaSk7dS5zZXRVaW50MzIoUEFUVEVSTl9JTkZPLk5fQ09PUkQsbCwhMCk7dS5zZXRVaW50MzIoUEFUVEVSTl9JTkZPLk5fQ09MT1IsZiwhMCk7dS5zZXRVaW50MzIoUEFUVEVSTl9JTkZPLk5fU1RPUCxjLCEwKTt1LnNldFVpbnQzMihQQVRURVJOX0lORk8uTl9GSUdVUkVTLDAsITApO2xldCBwPTIwO25ldyBGbG9hdDMyQXJyYXkoaCxwLDIqbCkuc2V0KGEpO3ArPTgqbDttLnNldChzLHApO3ArPTQqZjtmb3IoY29uc3RbZSx0XW9mIHIpe3Uuc2V0RmxvYXQzMihwLGUsITApO3ArPTQ7dS5zZXRVaW50MzIocCxwYXJzZUludCh0LnNsaWNlKDEpLDE2KSwhMCk7cCs9NH1pZihuKWZvcihjb25zdCBlIG9mIG4pe3Uuc2V0RmxvYXQzMihwLGUsITApO3ArPTR9byYmbS5zZXQobyxwKTtyZXR1cm4gaH0ocyk7dGhpcy5oYW5kbGVyLnNlbmQoImNvbW1vbm9iaiIsW3IsIlBhdHRlcm4iLGVdLFtlXSl9ZWxzZSB0aGlzLmhhbmRsZXIuc2VuZCgib2JqIixbcix0aGlzLnBhZ2VJbmRleCwiUGF0dGVybiIsc10pO3JldHVybiByfWhhbmRsZUNvbG9yTihlLHQsbixhLHMscixpLG8sbCxmLGMpe2NvbnN0IGg9bi5wb3AoKTtpZihoIGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgdT1zLmdldFJhdyhoLm5hbWUpLG09dSBpbnN0YW5jZW9mIFJlZiYmbC5nZXRCeVJlZih1KTtpZihtKXRyeXtjb25zdCBzPWEuYmFzZT9hLmJhc2UuZ2V0UmdiSGV4KG4sMCk6bnVsbCxyPWdldFRpbGluZ1BhdHRlcm5JUihtLm9wZXJhdG9yTGlzdElSLG0uZGljdCxzLG0ubmVlZHNJc29sYXRpb24pO2UuYWRkT3AodCxyKTtyZXR1cm59Y2F0Y2h7fWNvbnN0IHA9dGhpcy54cmVmLmZldGNoSWZSZWYodSk7aWYocCl7Y29uc3Qgcz1wIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9wLmRpY3Q6cCxoPXMuZ2V0KCJQYXR0ZXJuVHlwZSIpO2lmKGg9PT1NaSl7Y29uc3Qgbz1hLmJhc2U/YS5iYXNlLmdldFJnYkhleChuLDApOm51bGw7cmV0dXJuIHRoaXMuaGFuZGxlVGlsaW5nVHlwZSh0LG8scixwLHMsZSxpLGwsYyl9aWYoaD09PU5pKXtjb25zdCBuPXMuZ2V0KCJTaGFkaW5nIiksYT10aGlzLnBhcnNlU2hhZGluZyh7c2hhZGluZzpuLHJlc291cmNlczpyLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm8sbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOmZ9KTtpZihhKXtjb25zdCBuPWxvb2t1cE1hdHJpeChzLmdldEFycmF5KCJNYXRyaXgiKSxudWxsKTtlLmFkZE9wKHQsWyJTaGFkaW5nIixhLG5dKX1yZXR1cm59dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIFBhdHRlcm5UeXBlOiAke2h9YCl9fXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuTmFtZTogJHtofWApfWFzeW5jIHBhcnNlTWFya2VkQ29udGVudFByb3BzKGUsdCl7cmV0dXJuIHBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMueHJlZixlLHQpfWFzeW5jIGdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmUsdGFzazpuLHJlc291cmNlczphLG9wZXJhdG9yTGlzdDpzLGluaXRpYWxTdGF0ZTpyPW51bGwsZmFsbGJhY2tGb250RGljdDppPW51bGwscHJldlJlZnM6bz1udWxsfSl7aWYoZS5pc0FzeW5jKXtjb25zdCB0PWF3YWl0IGUuYXN5bmNHZXRCeXRlcygpO3QmJihlPW5ldyBTdHJlYW0odCwwLHQubGVuZ3RoLGUuZGljdCkpfWNvbnN0IGw9ZS5kaWN0Py5vYmpJZCxmPW5ldyBSZWZTZXQobyk7aWYobCl7aWYobz8uaGFzKGwpKXRocm93IG5ldyBFcnJvcihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgY2lyY3VsYXIgcmVmZXJlbmNlOiAke2x9YCk7Zi5wdXQobCl9YXx8PURpY3QuZW1wdHk7cnx8PW5ldyBFdmFsU3RhdGU7aWYoIXMpdGhyb3cgbmV3IEVycm9yKCdnZXRPcGVyYXRvckxpc3Q6IG1pc3NpbmcgIm9wZXJhdG9yTGlzdCIgcGFyYW1ldGVyJyk7Y29uc3QgYz10aGlzLGg9dGhpcy54cmVmLHU9bmV3IExvY2FsSW1hZ2VDYWNoZSxtPW5ldyBMb2NhbENvbG9yU3BhY2VDYWNoZSxwPW5ldyBMb2NhbEdTdGF0ZUNhY2hlLGQ9bmV3IExvY2FsVGlsaW5nUGF0dGVybkNhY2hlLGc9bmV3IE1hcCxiPWEuZ2V0KCJYT2JqZWN0Iil8fERpY3QuZW1wdHksdz1hLmdldCgiUGF0dGVybiIpfHxEaWN0LmVtcHR5LGo9bmV3IFN0YXRlTWFuYWdlcihyKSxrPW5ldyBFdmFsdWF0b3JQcmVwcm9jZXNzb3IoZSxoLGopLHk9bmV3IFRpbWVTbG90TWFuYWdlcjtmdW5jdGlvbiBjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKGUpe2ZvcihsZXQgZT0wLHQ9ay5zYXZlZFN0YXRlc0RlcHRoO2U8dDtlKyspcy5hZGRPcChxZSxbXSl9cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIHByb21pc2VCb2R5KGUscil7Y29uc3QgbmV4dD1mdW5jdGlvbih0KXtQcm9taXNlLmFsbChbdCxzLnJlYWR5XSkudGhlbihmdW5jdGlvbigpe3RyeXtwcm9taXNlQm9keShlLHIpfWNhdGNoKGUpe3IoZSl9fSxyKX07bi5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7eS5yZXNldCgpO2NvbnN0IG89e307bGV0IGwscSx2LFMseCxDO2Zvcig7IShsPXkuY2hlY2soKSk7KXtvLmFyZ3M9bnVsbDtpZighay5yZWFkKG8pKWJyZWFrO2xldCBlPW8uYXJncyxyPW8uZm47c3dpdGNoKDB8cil7Y2FzZSB2dDpDPWVbMF1pbnN0YW5jZW9mIE5hbWU7eD1lWzBdLm5hbWU7aWYoQyl7Y29uc3QgdD11LmdldEJ5TmFtZSh4KTtpZih0KXthZGRDYWNoZWRJbWFnZU9wcyhzLHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuZXcgUHJvbWlzZShmdW5jdGlvbihlLHQpe2lmKCFDKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IHI9Yi5nZXRSYXcoeCk7aWYociBpbnN0YW5jZW9mIFJlZil7Y29uc3QgdD11LmdldEJ5UmVmKHIpfHxjLl9yZWdpb25hbEltYWdlQ2FjaGUuZ2V0QnlSZWYocil8fGMuZ2xvYmFsSW1hZ2VDYWNoZS5nZXREYXRhKHIsYy5wYWdlSW5kZXgpO2lmKHQpe2FkZENhY2hlZEltYWdlT3BzKHMsdCk7ZSgpO3JldHVybn1yPWguZmV0Y2gocil9aWYoIShyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0IGk9ci5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCEoaSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgaGF2ZSBhIE5hbWUgc3VidHlwZSIpO2lmKCJGb3JtIiE9PWkubmFtZSlpZigiSW1hZ2UiIT09aS5uYW1lKXtpZigiUFMiIT09aS5uYW1lKXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5oYW5kbGVkIFhPYmplY3Qgc3VidHlwZSAke2kubmFtZX1gKTtpbmZvKCJJZ25vcmVkIFhPYmplY3Qgc3VidHlwZSBQUyIpO2UoKX1lbHNlIGMuYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmEsaW1hZ2U6cixvcGVyYXRvckxpc3Q6cyxjYWNoZUtleTp4LGxvY2FsSW1hZ2VDYWNoZTp1LGxvY2FsQ29sb3JTcGFjZUNhY2hlOm19KS50aGVuKGUsdCk7ZWxzZXtqLnNhdmUoKTtjLmJ1aWxkRm9ybVhPYmplY3QoYSxyLG51bGwscyxuLGouc3RhdGUuY2xvbmUoe25ld1BhdGg6ITB9KSxtLGYpLnRoZW4oZnVuY3Rpb24oKXtqLnJlc3RvcmUoKTtlKCl9LHQpfX0pLmNhdGNoKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIWMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpO3JldHVybjtjYXNlIFZlOmNvbnN0IG89ZVsxXTtuZXh0KGMuaGFuZGxlU2V0Rm9udChhLGUsbnVsbCxzLG4sai5zdGF0ZSxpLG51bGwsZikudGhlbihmdW5jdGlvbihlKXtzLmFkZERlcGVuZGVuY3koZSk7cy5hZGRPcChWZSxbZSxvXSl9KSk7cmV0dXJuO2Nhc2UgcXQ6Y29uc3QgbD1lWzBdLmNhY2hlS2V5O2lmKGwpe2NvbnN0IHQ9dS5nZXRCeU5hbWUobCk7aWYodCl7YWRkQ2FjaGVkSW1hZ2VPcHMocyx0KTtlPW51bGw7Y29udGludWV9fW5leHQoYy5idWlsZFBhaW50SW1hZ2VYT2JqZWN0KHtyZXNvdXJjZXM6YSxpbWFnZTplWzBdLGlzSW5saW5lOiEwLG9wZXJhdG9yTGlzdDpzLGNhY2hlS2V5OmwsbG9jYWxJbWFnZUNhY2hlOnUsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bX0pKTtyZXR1cm47Y2FzZSB0dDppZighai5zdGF0ZS5mb250KXtjLmVuc3VyZVN0YXRlRm9udChqLnN0YXRlKTtjb250aW51ZX1lWzBdPWMuaGFuZGxlVGV4dChlWzBdLGouc3RhdGUpO2JyZWFrO2Nhc2UgbnQ6aWYoIWouc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoai5zdGF0ZSk7Y29udGludWV9Y29uc3Qgaz1bXSx5PWouc3RhdGU7Zm9yKGNvbnN0IHQgb2YgZVswXSkic3RyaW5nIj09dHlwZW9mIHQ/ay5wdXNoKC4uLmMuaGFuZGxlVGV4dCh0LHkpKToibnVtYmVyIj09dHlwZW9mIHQmJmsucHVzaCh0KTtlWzBdPWs7cj10dDticmVhaztjYXNlIGF0OmlmKCFqLnN0YXRlLmZvbnQpe2MuZW5zdXJlU3RhdGVGb250KGouc3RhdGUpO2NvbnRpbnVlfXMuYWRkT3AoZXQpO2VbMF09Yy5oYW5kbGVUZXh0KGVbMF0sai5zdGF0ZSk7cj10dDticmVhaztjYXNlIHN0OmlmKCFqLnN0YXRlLmZvbnQpe2MuZW5zdXJlU3RhdGVGb250KGouc3RhdGUpO2NvbnRpbnVlfXMuYWRkT3AoZXQpO3MuYWRkT3AoWGUsW2Uuc2hpZnQoKV0pO3MuYWRkT3AoV2UsW2Uuc2hpZnQoKV0pO2VbMF09Yy5oYW5kbGVUZXh0KGVbMF0sai5zdGF0ZSk7cj10dDticmVhaztjYXNlICRlOmouc3RhdGUudGV4dFJlbmRlcmluZ01vZGU9ZVswXTticmVhaztjYXNlIGx0Ontjb25zdCB0PWMuX2dldENvbG9yU3BhY2UoZVswXSxhLG0pO2lmKHQgaW5zdGFuY2VvZiBDb2xvclNwYWNlKXtqLnN0YXRlLmZpbGxDb2xvclNwYWNlPXQ7Y29udGludWV9bmV4dChjLl9oYW5kbGVDb2xvclNwYWNlKHQpLnRoZW4oZT0+e2ouc3RhdGUuZmlsbENvbG9yU3BhY2U9ZXx8Q29sb3JTcGFjZVV0aWxzLmdyYXl9KSk7cmV0dXJufWNhc2Ugb3Q6e2NvbnN0IHQ9Yy5fZ2V0Q29sb3JTcGFjZShlWzBdLGEsbSk7aWYodCBpbnN0YW5jZW9mIENvbG9yU3BhY2Upe2ouc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQoYy5faGFuZGxlQ29sb3JTcGFjZSh0KS50aGVuKGU9PntqLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9ZXx8Q29sb3JTcGFjZVV0aWxzLmdyYXl9KSk7cmV0dXJufWNhc2UgaHQ6aWYoIWlzTnVtYmVyQXJyYXkoZSxudWxsKSljb250aW51ZTtTPWouc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1bUy5nZXRSZ2JIZXgoZSwwKV07cj1ndDticmVhaztjYXNlIGZ0OmlmKCFpc051bWJlckFycmF5KGUsbnVsbCkpY29udGludWU7Uz1qLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7ZT1bUy5nZXRSZ2JIZXgoZSwwKV07cj1kdDticmVhaztjYXNlIHB0OmlmKCFpc051bWJlckFycmF5KGUsbnVsbCkpY29udGludWU7ai5zdGF0ZS5maWxsQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMuZ3JheTtlPVtDb2xvclNwYWNlVXRpbHMuZ3JheS5nZXRSZ2JIZXgoZSwwKV07cj1ndDticmVhaztjYXNlIG10OmlmKCFpc051bWJlckFycmF5KGUsbnVsbCkpY29udGludWU7ai5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5ncmF5O2U9W0NvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkhleChlLDApXTtyPWR0O2JyZWFrO2Nhc2Ugd3Q6aWYoIWlzTnVtYmVyQXJyYXkoZSxudWxsKSljb250aW51ZTtqLnN0YXRlLmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5jbXlrO2U9W0NvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkhleChlLDApXTtyPWd0O2JyZWFrO2Nhc2UgYnQ6aWYoIWlzTnVtYmVyQXJyYXkoZSxudWxsKSljb250aW51ZTtqLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLmNteWs7ZT1bQ29sb3JTcGFjZVV0aWxzLmNteWsuZ2V0UmdiSGV4KGUsMCldO3I9ZHQ7YnJlYWs7Y2FzZSBndDppZighaXNOdW1iZXJBcnJheShlLG51bGwpKWNvbnRpbnVlO2ouc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLnJnYjtlPVtDb2xvclNwYWNlVXRpbHMucmdiLmdldFJnYkhleChlLDApXTticmVhaztjYXNlIGR0OmlmKCFpc051bWJlckFycmF5KGUsbnVsbCkpY29udGludWU7ai5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5yZ2I7ZT1bQ29sb3JTcGFjZVV0aWxzLnJnYi5nZXRSZ2JIZXgoZSwwKV07YnJlYWs7Y2FzZSB1dDpTPWouc3RhdGUucGF0dGVybkZpbGxDb2xvclNwYWNlO2lmKCFTKXtpZihpc051bWJlckFycmF5KGUsbnVsbCkpe2U9W0NvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkhleChlLDApXTtyPWd0O2JyZWFrfWU9W107cj1HdDticmVha31pZigiUGF0dGVybiI9PT1TLm5hbWUpe2lmKCFBcnJheS5pc0FycmF5KGUpKWNvbnRpbnVlO25leHQoYy5oYW5kbGVDb2xvck4ocyx1dCxlLFMsdyxhLG4sbSxkLGcsZikpO3JldHVybn1pZighaXNOdW1iZXJBcnJheShlLG51bGwpKWNvbnRpbnVlO2U9W1MuZ2V0UmdiSGV4KGUsMCldO3I9Z3Q7YnJlYWs7Y2FzZSBjdDpTPWouc3RhdGUucGF0dGVyblN0cm9rZUNvbG9yU3BhY2U7aWYoIVMpe2lmKGlzTnVtYmVyQXJyYXkoZSxudWxsKSl7ZT1bQ29sb3JTcGFjZVV0aWxzLmdyYXkuZ2V0UmdiSGV4KGUsMCldO3I9ZHQ7YnJlYWt9ZT1bXTtyPUt0O2JyZWFrfWlmKCJQYXR0ZXJuIj09PVMubmFtZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7bmV4dChjLmhhbmRsZUNvbG9yTihzLGN0LGUsUyx3LGEsbixtLGQsZyxmKSk7cmV0dXJufWlmKCFpc051bWJlckFycmF5KGUsbnVsbCkpY29udGludWU7ZT1bUy5nZXRSZ2JIZXgoZSwwKV07cj1kdDticmVhaztjYXNlIGp0OmxldCBGO3RyeXtjb25zdCB0PWEuZ2V0KCJTaGFkaW5nIik7aWYoIXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBzaGFkaW5nIHJlc291cmNlIGZvdW5kIik7Rj10LmdldChlWzBdLm5hbWUpO2lmKCFGKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gc2hhZGluZyBvYmplY3QgZm91bmQiKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pY29udGludWU7aWYoYy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgU2hhZGluZzogIiR7ZX0iLmApO2NvbnRpbnVlfXRocm93IGV9Y29uc3QgVD1jLnBhcnNlU2hhZGluZyh7c2hhZGluZzpGLHJlc291cmNlczphLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm0sbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOmd9KTtpZighVCljb250aW51ZTtlPVtUXTtyPWp0O2JyZWFrO2Nhc2Uga2U6Qz1lWzBdaW5zdGFuY2VvZiBOYW1lO3g9ZVswXS5uYW1lO2lmKEMpe2NvbnN0IHQ9cC5nZXRCeU5hbWUoeCk7aWYodCl7dC5sZW5ndGg+MCYmcy5hZGRPcChrZSxbdF0pO2U9bnVsbDtjb250aW51ZX19bmV4dChuZXcgUHJvbWlzZShmdW5jdGlvbihlLHQpe2lmKCFDKXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCByPWEuZ2V0KCJFeHRHU3RhdGUiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IGk9ci5nZXQoeCk7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjLnNldEdTdGF0ZSh7cmVzb3VyY2VzOmEsZ1N0YXRlOmksb3BlcmF0b3JMaXN0OnMsY2FjaGVLZXk6eCx0YXNrOm4sc3RhdGVNYW5hZ2VyOmosbG9jYWxHU3RhdGVDYWNoZTpwLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm0sc2VlblJlZnM6Zn0pLnRoZW4oZSx0KX0pLmNhdGNoKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIWMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke2V9Ii5gKX19KSk7cmV0dXJuO2Nhc2UgbWU6e2NvbnN0W3RdPWU7aWYoIm51bWJlciIhPXR5cGVvZiB0KXt3YXJuKGBJbnZhbGlkIHNldExpbmVXaWR0aDogJHt0fWApO2NvbnRpbnVlfWVbMF09TWF0aC5hYnModCk7YnJlYWt9Y2FzZSBiZTp7Y29uc3QgdD1lWzFdO2lmKCJudW1iZXIiIT10eXBlb2YgdCl7d2FybihgSW52YWxpZCBzZXREYXNoOiAke3R9YCk7Y29udGludWV9Y29uc3Qgbj1lWzBdO2lmKCFBcnJheS5pc0FycmF5KG4pKXt3YXJuKGBJbnZhbGlkIHNldERhc2g6ICR7bn1gKTtjb250aW51ZX1uLnNvbWUoZT0+Im51bWJlciIhPXR5cGVvZiBlKSYmKGVbMF09bi5maWx0ZXIoZT0+Im51bWJlciI9PXR5cGVvZiBlKSk7YnJlYWt9Y2FzZSBTZTpjYXNlIEFlOmNhc2UgeGU6Y2FzZSBDZTpjYXNlIEllOmNhc2UgRmU6Y2FzZSBUZTpjLmJ1aWxkUGF0aChyLGUsai5zdGF0ZSk7Y29udGludWU7Y2FzZSBSZTpjYXNlIE9lOmNhc2UgSGU6Y2FzZSBCZTpjYXNlIERlOmNhc2UgTWU6Y2FzZSBOZTpjYXNlIFBlOmNhc2UgRWU6e2NvbnN0e3N0YXRlOntwYXRoQnVmZmVyOmUscGF0aE1pbk1heDpufX09ajtyIT09T2UmJnIhPT1OZSYmciE9PVBlfHxlLnB1c2goWnQpO2lmKDA9PT1lLmxlbmd0aClzLmFkZE9wKFh0LFtyLFtudWxsXSxudWxsXSk7ZWxzZXtzLmFkZE9wKFh0LFtyLFtuZXcgRmxvYXQzMkFycmF5KGUpXSxuLnNsaWNlKCldKTtlLmxlbmd0aD0wO24uc2V0KHQsMCl9Y29udGludWV9Y2FzZSBaZTpzLmFkZE9wKHIsW25ldyBGbG9hdDMyQXJyYXkoZSldKTtjb250aW51ZTtjYXNlIFN0OmNhc2UgQXQ6Y2FzZSBGdDpjYXNlIFR0OmNvbnRpbnVlO2Nhc2UgQ3Q6aWYoIShlWzBdaW5zdGFuY2VvZiBOYW1lKSl7d2FybihgRXhwZWN0ZWQgbmFtZSBmb3IgYmVnaW5NYXJrZWRDb250ZW50UHJvcHMgYXJnMD0ke2VbMF19YCk7cy5hZGRPcChDdCxbIk9DIixudWxsXSk7Y29udGludWV9aWYoIk9DIj09PWVbMF0ubmFtZSl7bmV4dChjLnBhcnNlTWFya2VkQ29udGVudFByb3BzKGVbMV0sYSkudGhlbihlPT57cy5hZGRPcChDdCxbIk9DIixlXSl9KS5jYXRjaChlPT57aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighYy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGJlZ2luTWFya2VkQ29udGVudFByb3BzOiAiJHtlfSIuYCk7cy5hZGRPcChDdCxbIk9DIixudWxsXSl9fSkpO3JldHVybn1lPVtlWzBdLm5hbWUsZVsxXWluc3RhbmNlb2YgRGljdD9lWzFdLmdldCgiTUNJRCIpOm51bGxdO2JyZWFrO2RlZmF1bHQ6aWYobnVsbCE9PWUpe2ZvcihxPTAsdj1lLmxlbmd0aDtxPHYmJiEoZVtxXWluc3RhbmNlb2YgRGljdCk7cSsrKTtpZihxPHYpe3dhcm4oImdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIG9wZXJhdG9yOiAiK3IpO2NvbnRpbnVlfX19cy5hZGRPcChyLGUpfWlmKGwpbmV4dChQaSk7ZWxzZXtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCk7ZSgpfX0pLmNhdGNoKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgZXJyb3JzIGR1cmluZyAiJHtuLm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7Y2xvc2VQZW5kaW5nUmVzdG9yZU9QUygpfX0pfWFzeW5jIGdldFRleHRDb250ZW50KHtzdHJlYW06ZSx0YXNrOnQscmVzb3VyY2VzOm4sc3RhdGVNYW5hZ2VyOnM9bnVsbCxpbmNsdWRlTWFya2VkQ29udGVudDpyPSExLHNpbms6aSxzZWVuU3R5bGVzOm89bmV3IFNldCx2aWV3Qm94OmwsbGFuZzpmPW51bGwsbWFya2VkQ29udGVudERhdGE6Yz1udWxsLGRpc2FibGVOb3JtYWxpemF0aW9uOmg9ITEsa2VlcFdoaXRlU3BhY2U6dT0hMSxwcmV2UmVmczptPW51bGwsaW50ZXJzZWN0b3I6cD1udWxsfSl7aWYoZS5pc0FzeW5jKXtjb25zdCB0PWF3YWl0IGUuYXN5bmNHZXRCeXRlcygpO3QmJihlPW5ldyBTdHJlYW0odCwwLHQubGVuZ3RoLGUuZGljdCkpfWk/Pz10ZXh0U2lua1dyYXBwZXIobnVsbCk7Y29uc3QgZD1lLmRpY3Q/Lm9iaklkLGc9bmV3IFJlZlNldChtKTtpZihkKXtpZihtPy5oYXMoZCkpdGhyb3cgbmV3IEVycm9yKGBnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogJHtkfWApO2cucHV0KGQpfW58fD1EaWN0LmVtcHR5O3N8fD1uZXcgU3RhdGVNYW5hZ2VyKG5ldyBUZXh0U3RhdGUpO3ImJihjfHw9e2xldmVsOjB9KTtjb25zdCBiPXtpdGVtczpbXSxzdHlsZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxsYW5nOmZ9LHc9e2luaXRpYWxpemVkOiExLHN0cjpbXSx0b3RhbFdpZHRoOjAsdG90YWxIZWlnaHQ6MCx3aWR0aDowLGhlaWdodDowLHZlcnRpY2FsOiExLHByZXZUcmFuc2Zvcm06bnVsbCxwcmV2VGV4dFJpc2U6MCx0ZXh0QWR2YW5jZVNjYWxlOjAsc3BhY2VJbkZsb3dNaW46MCxzcGFjZUluRmxvd01heDowLHRyYWNraW5nU3BhY2VNaW46MS8wLG5lZ2F0aXZlU3BhY2VNYXg6LTEvMCxub3RBU3BhY2U6LTEvMCx0cmFuc2Zvcm06bnVsbCxmb250TmFtZTpudWxsLGhhc0VPTDohMX0saj1bIiAiLCIgIl07bGV0IGs9MDtmdW5jdGlvbiBzYXZlTGFzdENoYXIoZSl7Y29uc3QgdD0oaysxKSUyLG49IiAiIT09altrXSYmIiAiPT09alt0XTtqW2tdPWU7az10O3JldHVybiF1JiZufWZ1bmN0aW9uIHNob3VsZEFkZFdoaXRlcHNhY2UoKXtyZXR1cm4hdSYmIiAiIT09altrXSYmIiAiPT09alsoaysxKSUyXX1mdW5jdGlvbiByZXNldExhc3RDaGFycygpe2pbMF09alsxXT0iICI7az0wfWNvbnN0IHk9dGhpcyxxPXRoaXMueHJlZix2PVtdO2xldCBTPW51bGw7Y29uc3QgeD1uZXcgTG9jYWxJbWFnZUNhY2hlLEM9bmV3IExvY2FsR1N0YXRlQ2FjaGUsRj1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUscSxzKTtsZXQgVCxSO2Z1bmN0aW9uIHB1c2hXaGl0ZXNwYWNlKHt3aWR0aDplPTAsaGVpZ2h0OnQ9MCx0cmFuc2Zvcm06bj13LnByZXZUcmFuc2Zvcm0sZm9udE5hbWU6YT13LmZvbnROYW1lfSl7cD8uYWRkRXh0cmFDaGFyKCIgIik7Yi5pdGVtcy5wdXNoKHtzdHI6IiAiLGRpcjoibHRyIix3aWR0aDplLGhlaWdodDp0LHRyYW5zZm9ybTpuLGZvbnROYW1lOmEsaGFzRU9MOiExfSl9ZnVuY3Rpb24gZ2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKXtjb25zdCBlPVQuZm9udCx0PVtULmZvbnRTaXplKlQudGV4dEhTY2FsZSwwLDAsVC5mb250U2l6ZSwwLFQudGV4dFJpc2VdO2lmKGUuaXNUeXBlM0ZvbnQmJihULmZvbnRTaXplPD0xfHxlLmlzQ2hhckJCb3gpJiYhaXNBcnJheUVxdWFsKFQuZm9udE1hdHJpeCxhKSl7Y29uc3Qgbj1lLmJib3hbM10tZS5iYm94WzFdO24+MCYmKHRbM10qPW4qVC5mb250TWF0cml4WzNdKX1yZXR1cm4gVXRpbC50cmFuc2Zvcm0oVC5jdG0sVXRpbC50cmFuc2Zvcm0oVC50ZXh0TWF0cml4LHQpKX1mdW5jdGlvbiBlbnN1cmVUZXh0Q29udGVudEl0ZW0oKXtpZih3LmluaXRpYWxpemVkKXJldHVybiB3O2NvbnN0e2ZvbnQ6ZSxsb2FkZWROYW1lOnR9PVQ7aWYoIW8uaGFzKHQpKXtvLmFkZCh0KTtiLnN0eWxlc1t0XT17Zm9udEZhbWlseTplLmZhbGxiYWNrTmFtZSxhc2NlbnQ6ZS5hc2NlbnQsZGVzY2VudDplLmRlc2NlbnQsdmVydGljYWw6ZS52ZXJ0aWNhbH07aWYoeS5vcHRpb25zLmZvbnRFeHRyYVByb3BlcnRpZXMmJmUuc3lzdGVtRm9udEluZm8pe2NvbnN0IG49Yi5zdHlsZXNbdF07bi5mb250U3Vic3RpdHV0aW9uPWUuc3lzdGVtRm9udEluZm8uY3NzO24uZm9udFN1YnN0aXR1dGlvbkxvYWRlZE5hbWU9ZS5zeXN0ZW1Gb250SW5mby5sb2FkZWROYW1lfX13LmZvbnROYW1lPXQ7Y29uc3Qgbj13LnRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpO2lmKGUudmVydGljYWwpe3cud2lkdGg9dy50b3RhbFdpZHRoPU1hdGguaHlwb3QoblswXSxuWzFdKTt3LmhlaWdodD13LnRvdGFsSGVpZ2h0PTA7dy52ZXJ0aWNhbD0hMH1lbHNle3cud2lkdGg9dy50b3RhbFdpZHRoPTA7dy5oZWlnaHQ9dy50b3RhbEhlaWdodD1NYXRoLmh5cG90KG5bMl0sblszXSk7dy52ZXJ0aWNhbD0hMX1jb25zdCBhPU1hdGguaHlwb3QoVC50ZXh0TGluZU1hdHJpeFswXSxULnRleHRMaW5lTWF0cml4WzFdKSxzPU1hdGguaHlwb3QoVC5jdG1bMF0sVC5jdG1bMV0pO3cudGV4dEFkdmFuY2VTY2FsZT1zKmE7Y29uc3R7Zm9udFNpemU6cn09VDt3LnRyYWNraW5nU3BhY2VNaW49LjEwMipyO3cubm90QVNwYWNlPS4wMypyO3cubmVnYXRpdmVTcGFjZU1heD0tLjIqcjt3LnNwYWNlSW5GbG93TWluPS4xMDIqcjt3LnNwYWNlSW5GbG93TWF4PS42KnI7dy5oYXNFT0w9ITE7dy5pbml0aWFsaXplZD0hMDtyZXR1cm4gd31mdW5jdGlvbiB1cGRhdGVBZHZhbmNlU2NhbGUoKXtpZighdy5pbml0aWFsaXplZClyZXR1cm47Y29uc3QgZT1NYXRoLmh5cG90KFQudGV4dExpbmVNYXRyaXhbMF0sVC50ZXh0TGluZU1hdHJpeFsxXSksdD1NYXRoLmh5cG90KFQuY3RtWzBdLFQuY3RtWzFdKSplO2lmKHQhPT13LnRleHRBZHZhbmNlU2NhbGUpe2lmKHcudmVydGljYWwpe3cudG90YWxIZWlnaHQrPXcuaGVpZ2h0KncudGV4dEFkdmFuY2VTY2FsZTt3LmhlaWdodD0wfWVsc2V7dy50b3RhbFdpZHRoKz13LndpZHRoKncudGV4dEFkdmFuY2VTY2FsZTt3LndpZHRoPTB9dy50ZXh0QWR2YW5jZVNjYWxlPXR9fWZ1bmN0aW9uIHJ1bkJpZGlUcmFuc2Zvcm0oZSl7bGV0IHQ9ZS5zdHIuam9pbigiIik7aHx8KHQ9ZnVuY3Rpb24gbm9ybWFsaXplVW5pY29kZShlKXtpZighc24pe3NuPS8oW1x1MDBhMFx1MDBiNVx1MDM3ZVx1MGViM1x1MjAwMC1cdTIwMGFcdTIwMmZcdTIxMjZcdWZiMDAtXHVmYjA0XHVmYjA2XHVmYjIwLVx1ZmIzNlx1ZmIzOC1cdWZiM2NcdWZiM2VcdWZiNDBcdWZiNDFcdWZiNDNcdWZiNDRcdWZiNDYtXHVmYmExXHVmYmE0LVx1ZmJhOVx1ZmJhZS1cdWZiYjFcdWZiZDMtXHVmYmRjXHVmYmRlLVx1ZmJlN1x1ZmJlYS1cdWZiZjhcdWZiZmNcdWZiZmRcdWZjMDAtXHVmYzVkXHVmYzY0LVx1ZmNmMVx1ZmNmNS1cdWZkM2RcdWZkODhcdWZkZjRcdWZkZmFcdWZkZmJcdWZlNzFcdWZlNzdcdWZlNzlcdWZlN2JcdWZlN2RdKyl8KFx1ZmIwNSspL2d1O3JuPW5ldyBNYXAoW1si76yFIiwixb90Il1dKX1yZXR1cm4gZS5yZXBsYWNlQWxsKHNuLChlLHQsbik9PnQ/dC5ub3JtYWxpemUoIk5GS0MiKTpybi5nZXQobikpfSh0KSk7Y29uc3Qgbj1iaWRpKHQsLTEsZS52ZXJ0aWNhbCk7cmV0dXJue3N0cjpuLnN0cixkaXI6bi5kaXIsd2lkdGg6TWF0aC5hYnMoZS50b3RhbFdpZHRoKSxoZWlnaHQ6TWF0aC5hYnMoZS50b3RhbEhlaWdodCksdHJhbnNmb3JtOmUudHJhbnNmb3JtLGZvbnROYW1lOmUuZm9udE5hbWUsaGFzRU9MOmUuaGFzRU9MfX1hc3luYyBmdW5jdGlvbiBoYW5kbGVTZXRGb250KGUscyl7Y29uc3Qgcj1hd2FpdCB5LmxvYWRGb250KGUscyxuLHQsbnVsbCxudWxsLGcpO1QubG9hZGVkTmFtZT1yLmxvYWRlZE5hbWU7VC5mb250PXIuZm9udDtULmZvbnRNYXRyaXg9ci5mb250LmZvbnRNYXRyaXh8fGF9ZnVuY3Rpb24gYXBwbHlJbnZlcnNlUm90YXRpb24oZSx0LG4pe2NvbnN0IGE9TWF0aC5oeXBvdChuWzBdLG5bMV0pO3JldHVyblsoblswXSplK25bMV0qdCkvYSwoblsyXSplK25bM10qdCkvYV19ZnVuY3Rpb24gY29tcGFyZVdpdGhMYXN0UG9zaXRpb24oZSl7Y29uc3QgdD1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpO2xldCBuPXRbNF0sYT10WzVdO2lmKFQuZm9udD8udmVydGljYWwpe2lmKG48bFswXXx8bj5sWzJdfHxhK2U8bFsxXXx8YT5sWzNdKXJldHVybiExfWVsc2UgaWYobitlPGxbMF18fG4+bFsyXXx8YTxsWzFdfHxhPmxbM10pcmV0dXJuITE7aWYoIVQuZm9udHx8IXcucHJldlRyYW5zZm9ybSlyZXR1cm4hMDtsZXQgcz13LnByZXZUcmFuc2Zvcm1bNF0scj13LnByZXZUcmFuc2Zvcm1bNV07aWYocz09PW4mJnI9PT1hKXJldHVybiEwO2xldCBpPS0xO3RbMF0mJjA9PT10WzFdJiYwPT09dFsyXT9pPXRbMF0+MD8wOjE4MDp0WzFdJiYwPT09dFswXSYmMD09PXRbM10mJihpPXRbMV0+MD85MDoyNzApO3N3aXRjaChpKXtjYXNlIDA6YnJlYWs7Y2FzZSA5MDpbbixhXT1bYSxuXTtbcyxyXT1bcixzXTticmVhaztjYXNlIDE4MDpbbixhLHMscl09Wy1uLC1hLC1zLC1yXTticmVhaztjYXNlIDI3MDpbbixhXT1bLWEsLW5dO1tzLHJdPVstciwtc107YnJlYWs7ZGVmYXVsdDpbbixhXT1hcHBseUludmVyc2VSb3RhdGlvbihuLGEsdCk7W3Mscl09YXBwbHlJbnZlcnNlUm90YXRpb24ocyxyLHcucHJldlRyYW5zZm9ybSl9aWYoVC5mb250LnZlcnRpY2FsKXtjb25zdCBlPShyLWEpL3cudGV4dEFkdmFuY2VTY2FsZSx0PW4tcyxpPU1hdGguc2lnbih3LmhlaWdodHx8dy50b3RhbEhlaWdodCk7aWYoZTxpKncubmVnYXRpdmVTcGFjZU1heCl7aWYoTWF0aC5hYnModCk+LjUqdy53aWR0aCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWlmKE1hdGguYWJzKHQpPncud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfWU8PWkqdy5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYoZTw9aSp3LnRyYWNraW5nU3BhY2VNaW4paWYoc2hvdWxkQWRkV2hpdGVwc2FjZSgpKXtyZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cHVzaFdoaXRlc3BhY2Uoe2hlaWdodDpNYXRoLmFicyhlKX0pfWVsc2Ugdy5oZWlnaHQrPWU7ZWxzZSBpZighYWRkRmFrZVNwYWNlcyhlLHcucHJldlRyYW5zZm9ybSxpKSlpZigwPT09dy5zdHIubGVuZ3RoKXtyZXNldExhc3RDaGFycygpO3B1c2hXaGl0ZXNwYWNlKHtoZWlnaHQ6TWF0aC5hYnMoZSl9KX1lbHNlIHcuaGVpZ2h0Kz1lO01hdGguYWJzKHQpPi4yNSp3LndpZHRoJiZmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWNvbnN0IG89KG4tcykvdy50ZXh0QWR2YW5jZVNjYWxlLGY9YS1yLGM9TWF0aC5zaWduKHcud2lkdGh8fHcudG90YWxXaWR0aCk7aWYobzxjKncubmVnYXRpdmVTcGFjZU1heCl7aWYoTWF0aC5hYnMoZik+LjUqdy5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1jb25zdCBoPVQudGV4dFJpc2Utdy5wcmV2VGV4dFJpc2UsdT0wPT09aD9mOmYtdFszXS9ULmZvbnRTaXplKmg7aWYoTWF0aC5hYnModSk+dy5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfW88PWMqdy5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYobzw9Yyp3LnRyYWNraW5nU3BhY2VNaW4paWYoc2hvdWxkQWRkV2hpdGVwc2FjZSgpKXtyZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKG8pfSl9ZWxzZSB3LndpZHRoKz1vO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMobyx3LnByZXZUcmFuc2Zvcm0sYykpaWYoMD09PXcuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtwdXNoV2hpdGVzcGFjZSh7d2lkdGg6TWF0aC5hYnMobyl9KX1lbHNlIHcud2lkdGgrPW87TWF0aC5hYnMoZik+LjI1KncuaGVpZ2h0JiZmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWZ1bmN0aW9uIGJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0fSl7aWYoUiE9PVQmJihSLmZvbnRTaXplIT09VC5mb250U2l6ZXx8Ui5mb250TmFtZSE9PVQuZm9udE5hbWUmJihSLmZvbnQubmFtZSE9PVQuZm9udC5uYW1lfHxSLmZvbnQudmVydGljYWwhPT1ULmZvbnQudmVydGljYWwpKSl7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtSPVQuY2xvbmUoKX1jb25zdCBuPVQuZm9udCxhPW4udmVydGljYWw/LVQuY2hhclNwYWNpbmc6VC5jaGFyU3BhY2luZztpZighZSl7Y29uc3QgZT1hK3Q7ZSYmKG4udmVydGljYWw/VC50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWUpOlQudHJhbnNsYXRlVGV4dE1hdHJpeChlKlQudGV4dEhTY2FsZSwwKSk7dSYmY29tcGFyZVdpdGhMYXN0UG9zaXRpb24oMCk7cmV0dXJufWNvbnN0IHM9bi5jaGFyc1RvR2x5cGhzKGUpLHI9VC5mb250TWF0cml4WzBdKlQuZm9udFNpemU7Zm9yKGxldCBlPTAsaT1zLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBvPXNbZV0se2NhdGVnb3J5Omwsb3JpZ2luYWxDaGFyQ29kZTpmfT1vO2lmKGwuaXNJbnZpc2libGVGb3JtYXRNYXJrKWNvbnRpbnVlO2xldCBjPWErKGUrMT09PWk/dDowKSxoPW8ud2lkdGg7bi52ZXJ0aWNhbCYmKGg9by52bWV0cmljP28udm1ldHJpY1swXTotaCk7bGV0IG09aCpyOzMyPT09ZiYmKGMrPVQud29yZFNwYWNpbmcpO2lmKCF1JiZsLmlzV2hpdGVzcGFjZSl7aWYobi52ZXJ0aWNhbCl7Yys9LW07VC50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWMpfWVsc2V7Yys9bTtULnRyYW5zbGF0ZVRleHRNYXRyaXgoYypULnRleHRIU2NhbGUsMCl9c2F2ZUxhc3RDaGFyKCIgIik7Y29udGludWV9aWYoIWwuaXNaZXJvV2lkdGhEaWFjcml0aWMmJiFjb21wYXJlV2l0aExhc3RQb3NpdGlvbihtKSl7bi52ZXJ0aWNhbD9ULnRyYW5zbGF0ZVRleHRNYXRyaXgoMCxtKTpULnRyYW5zbGF0ZVRleHRNYXRyaXgobSpULnRleHRIU2NhbGUsMCk7Y29udGludWV9Y29uc3QgZD1lbnN1cmVUZXh0Q29udGVudEl0ZW0oKTtsLmlzWmVyb1dpZHRoRGlhY3JpdGljJiYobT0wKTtpZihuLnZlcnRpY2FsKXtwPy5hZGRHbHlwaChnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLDAsbSxvLnVuaWNvZGUpO1QudHJhbnNsYXRlVGV4dE1hdHJpeCgwLG0pO209TWF0aC5hYnMobSk7ZC5oZWlnaHQrPW19ZWxzZXttKj1ULnRleHRIU2NhbGU7cD8uYWRkR2x5cGgoZ2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxtLDAsby51bmljb2RlKTtULnRyYW5zbGF0ZVRleHRNYXRyaXgobSwwKTtkLndpZHRoKz1tfWlmKG0pe2QucHJldlRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpO2QucHJldlRleHRSaXNlPVQudGV4dFJpc2V9Y29uc3QgZz1vLnVuaWNvZGU7aWYoc2F2ZUxhc3RDaGFyKGcpKXtkLnN0ci5wdXNoKCIgIik7cD8uYWRkRXh0cmFDaGFyKCIgIil9cHx8ZC5zdHIucHVzaChnKTtjJiYobi52ZXJ0aWNhbD9ULnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtYyk6VC50cmFuc2xhdGVUZXh0TWF0cml4KGMqVC50ZXh0SFNjYWxlLDApKX19ZnVuY3Rpb24gYXBwZW5kRU9MKCl7cD8uYWRkRXh0cmFDaGFyKCJcbiIpO3Jlc2V0TGFzdENoYXJzKCk7aWYody5pbml0aWFsaXplZCl7dy5oYXNFT0w9ITA7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1lbHNlIGIuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOlQubG9hZGVkTmFtZSxoYXNFT0w6ITB9KX1mdW5jdGlvbiBhZGRGYWtlU3BhY2VzKGUsdCxuKXtpZihuKncuc3BhY2VJbkZsb3dNaW48PWUmJmU8PW4qdy5zcGFjZUluRmxvd01heCl7aWYody5pbml0aWFsaXplZCl7cmVzZXRMYXN0Q2hhcnMoKTt3LnN0ci5wdXNoKCIgIik7cD8uYWRkRXh0cmFDaGFyKCIgIil9cmV0dXJuITF9Y29uc3QgYT13LmZvbnROYW1lO2xldCBzPTA7aWYody52ZXJ0aWNhbCl7cz1lO2U9MH1mbHVzaFRleHRDb250ZW50SXRlbSgpO3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhzKSx0cmFuc2Zvcm06dHx8Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTphfSk7cmV0dXJuITB9ZnVuY3Rpb24gZmx1c2hUZXh0Q29udGVudEl0ZW0oKXtpZih3LmluaXRpYWxpemVkJiZ3LnN0cil7dy52ZXJ0aWNhbD93LnRvdGFsSGVpZ2h0Kz13LmhlaWdodCp3LnRleHRBZHZhbmNlU2NhbGU6dy50b3RhbFdpZHRoKz13LndpZHRoKncudGV4dEFkdmFuY2VTY2FsZTtiLml0ZW1zLnB1c2gocnVuQmlkaVRyYW5zZm9ybSh3KSk7dy5pbml0aWFsaXplZD0hMTt3LnN0ci5sZW5ndGg9MH19ZnVuY3Rpb24gZW5xdWV1ZUNodW5rKGU9ITEpe2NvbnN0IHQ9Yi5pdGVtcy5sZW5ndGg7aWYoMCE9PXQmJiEoZSYmdDwxMCkpe2kuZW5xdWV1ZShiLHQpO2IuaXRlbXM9W107Yi5zdHlsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX19Y29uc3QgTz1uZXcgVGltZVNsb3RNYW5hZ2VyO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiBwcm9taXNlQm9keShlLGEpe2NvbnN0IG5leHQ9ZnVuY3Rpb24odCl7ZW5xdWV1ZUNodW5rKCEwKTtQcm9taXNlLmFsbChbdCxpLnJlYWR5XSkudGhlbihmdW5jdGlvbigpe3RyeXtwcm9taXNlQm9keShlLGEpfWNhdGNoKGUpe2EoZSl9fSxhKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Ty5yZXNldCgpO2NvbnN0IG09e307bGV0IHAsZCx3LGo9W107Zm9yKDshKHA9Ty5jaGVjaygpKTspe2oubGVuZ3RoPTA7bS5hcmdzPWo7aWYoIUYucmVhZChtKSlicmVhaztUPXMuc3RhdGU7Unx8PVQuY2xvbmUoKTtjb25zdCBlPW0uZm47aj1tLmFyZ3M7c3dpdGNoKDB8ZSl7Y2FzZSBWZTpjb25zdCBlPWpbMF0ubmFtZSxhPWpbMV07aWYoVC5mb250JiZlPT09VC5mb250TmFtZSYmYT09PVQuZm9udFNpemUpYnJlYWs7VC5mb250TmFtZT1lO1QuZm9udFNpemU9YTtuZXh0KGhhbmRsZVNldEZvbnQoZSxudWxsKSk7cmV0dXJuO2Nhc2UgWWU6VC50ZXh0UmlzZT1qWzBdO2JyZWFrO2Nhc2UgS2U6VC50ZXh0SFNjYWxlPWpbMF0vMTAwO2JyZWFrO2Nhc2UgR2U6VC5sZWFkaW5nPWpbMF07YnJlYWs7Y2FzZSBKZTpULnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGpbMF0salsxXSk7VC50ZXh0TWF0cml4PVQudGV4dExpbmVNYXRyaXguc2xpY2UoKTticmVhaztjYXNlIFFlOlQubGVhZGluZz0talsxXTtULnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGpbMF0salsxXSk7VC50ZXh0TWF0cml4PVQudGV4dExpbmVNYXRyaXguc2xpY2UoKTticmVhaztjYXNlIGV0OlQuY2FycmlhZ2VSZXR1cm4oKTticmVhaztjYXNlIFplOlQuc2V0VGV4dE1hdHJpeChqWzBdLGpbMV0salsyXSxqWzNdLGpbNF0sals1XSk7VC5zZXRUZXh0TGluZU1hdHJpeChqWzBdLGpbMV0salsyXSxqWzNdLGpbNF0sals1XSk7dXBkYXRlQWR2YW5jZVNjYWxlKCk7YnJlYWs7Y2FzZSBXZTpULmNoYXJTcGFjaW5nPWpbMF07YnJlYWs7Y2FzZSBYZTpULndvcmRTcGFjaW5nPWpbMF07YnJlYWs7Y2FzZSBMZTpULnRleHRNYXRyaXg9Z24uc2xpY2UoKTtULnRleHRMaW5lTWF0cml4PWduLnNsaWNlKCk7YnJlYWs7Y2FzZSBudDppZighcy5zdGF0ZS5mb250KXt5LmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1jb25zdCBtPShULmZvbnQudmVydGljYWw/MTotMSkqVC5mb250U2l6ZS8xZTM7Zm9yKGNvbnN0IGUgb2YgalswXSlpZigic3RyaW5nIj09dHlwZW9mIGUpdi5wdXNoKGUpO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlJiYwIT09ZSl7Y29uc3QgdD12LmpvaW4oIiIpO3YubGVuZ3RoPTA7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOnQsZXh0cmFTcGFjaW5nOmUqbX0pfWlmKHYubGVuZ3RoPjApe2NvbnN0IGU9di5qb2luKCIiKTt2Lmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzowfSl9YnJlYWs7Y2FzZSB0dDppZighcy5zdGF0ZS5mb250KXt5LmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1idWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6alswXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2UgYXQ6aWYoIXMuc3RhdGUuZm9udCl7eS5lbnN1cmVTdGF0ZUZvbnQocy5zdGF0ZSk7Y29udGludWV9VC5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpqWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBzdDppZighcy5zdGF0ZS5mb250KXt5LmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1ULndvcmRTcGFjaW5nPWpbMF07VC5jaGFyU3BhY2luZz1qWzFdO1QuY2FycmlhZ2VSZXR1cm4oKTtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6alsyXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2UgdnQ6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtTPz89bi5nZXQoIlhPYmplY3QiKXx8RGljdC5lbXB0eTt3PWpbMF1pbnN0YW5jZW9mIE5hbWU7ZD1qWzBdLm5hbWU7aWYodyYmeC5nZXRCeU5hbWUoZCkpYnJlYWs7bmV4dChuZXcgUHJvbWlzZShmdW5jdGlvbihlLGEpe2lmKCF3KXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IG09Uy5nZXRSYXcoZCk7aWYobSBpbnN0YW5jZW9mIFJlZil7aWYoeC5nZXRCeVJlZihtKSl7ZSgpO3JldHVybn1pZih5Lmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShtLHkucGFnZUluZGV4KSl7ZSgpO3JldHVybn1tPXEuZmV0Y2gobSl9aWYoIShtIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0e2RpY3Q6cH09bSxiPXAuZ2V0KCJTdWJ0eXBlIik7aWYoIShiIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBoYXZlIGEgTmFtZSBzdWJ0eXBlIik7aWYoIkZvcm0iIT09Yi5uYW1lKXt4LnNldChkLHAub2JqSWQsITApO2UoKTtyZXR1cm59Y29uc3Qgaj1zLnN0YXRlLmNsb25lKCksaz1uZXcgU3RhdGVNYW5hZ2VyKGopLHY9bG9va3VwTWF0cml4KHAuZ2V0QXJyYXkoIk1hdHJpeCIpLG51bGwpO3YmJmsudHJhbnNmb3JtKHYpO2NvbnN0IEM9cC5nZXQoIlJlc291cmNlcyIpO2VucXVldWVDaHVuaygpO2NvbnN0IEY9dGV4dFNpbmtXcmFwcGVyKGkpO3kuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTptLHRhc2s6dCxyZXNvdXJjZXM6QyBpbnN0YW5jZW9mIERpY3Q/QzpuLHN0YXRlTWFuYWdlcjprLGluY2x1ZGVNYXJrZWRDb250ZW50OnIsc2luazpGLHNlZW5TdHlsZXM6byx2aWV3Qm94OmwsbGFuZzpmLG1hcmtlZENvbnRlbnREYXRhOmMsZGlzYWJsZU5vcm1hbGl6YXRpb246aCxrZWVwV2hpdGVTcGFjZTp1LHByZXZSZWZzOmd9KS50aGVuKGZ1bmN0aW9uKCl7Ri5lbnF1ZXVlSW52b2tlZHx8eC5zZXQoZCxwLm9iaklkLCEwKTtlKCl9LGEpfSkuY2F0Y2goZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZigheS5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKTtyZXR1cm47Y2FzZSBrZTp3PWpbMF1pbnN0YW5jZW9mIE5hbWU7ZD1qWzBdLm5hbWU7aWYodyYmQy5nZXRCeU5hbWUoZCkpYnJlYWs7bmV4dChuZXcgUHJvbWlzZShmdW5jdGlvbihlLHQpe2lmKCF3KXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCBhPW4uZ2V0KCJFeHRHU3RhdGUiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IHM9YS5nZXQoZCk7aWYoIShzIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCByPXMuZ2V0KCJGb250Iik7aWYocil7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtULmZvbnROYW1lPW51bGw7VC5mb250U2l6ZT1yWzFdO2hhbmRsZVNldEZvbnQobnVsbCxyWzBdKS50aGVuKGUsdCl9ZWxzZXtDLnNldChkLHMub2JqSWQsITApO2UoKX19KS5jYXRjaChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF5Lm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke2V9Ii5gKX19KSk7cmV0dXJuO2Nhc2UgeHQ6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihyKXtjLmxldmVsKys7Yi5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnQiLHRhZzpqWzBdaW5zdGFuY2VvZiBOYW1lP2pbMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSBDdDpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKHIpe2MubGV2ZWwrKztjb25zdCBlPWpbMV1pbnN0YW5jZW9mIERpY3Q/alsxXS5nZXQoIk1DSUQiKTpudWxsO2IuaXRlbXMucHVzaCh7dHlwZToiYmVnaW5NYXJrZWRDb250ZW50UHJvcHMiLGlkOk51bWJlci5pc0ludGVnZXIoZSk/YCR7eS5pZEZhY3RvcnkuZ2V0UGFnZU9iaklkKCl9X21jJHtlfWA6bnVsbCx0YWc6alswXWluc3RhbmNlb2YgTmFtZT9qWzBdLm5hbWU6bnVsbH0pfWJyZWFrO2Nhc2UgSXQ6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihyKXtpZigwPT09Yy5sZXZlbClicmVhaztjLmxldmVsLS07Yi5pdGVtcy5wdXNoKHt0eXBlOiJlbmRNYXJrZWRDb250ZW50In0pfX1pZihiLml0ZW1zLmxlbmd0aD49aS5kZXNpcmVkU2l6ZSl7cD0hMDticmVha319aWYocCluZXh0KFBpKTtlbHNle2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7ZW5xdWV1ZUNodW5rKCk7ZSgpfX0pLmNhdGNoKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpfX0pfWFzeW5jIGV4dHJhY3REYXRhU3RydWN0dXJlcyhlLHQpe2NvbnN0IG49dGhpcy54cmVmO2xldCBhO2NvbnN0IHM9dGhpcy5yZWFkVG9Vbmljb2RlKHQudG9Vbmljb2RlKTtpZih0LmNvbXBvc2l0ZSl7Y29uc3Qgbj1lLmdldCgiQ0lEU3lzdGVtSW5mbyIpO24gaW5zdGFuY2VvZiBEaWN0JiYhdC5jaWRTeXN0ZW1JbmZvJiYodC5jaWRTeXN0ZW1JbmZvPXtyZWdpc3RyeTpzdHJpbmdUb1BERlN0cmluZyhuLmdldCgiUmVnaXN0cnkiKSksb3JkZXJpbmc6c3RyaW5nVG9QREZTdHJpbmcobi5nZXQoIk9yZGVyaW5nIikpLHN1cHBsZW1lbnQ6bi5nZXQoIlN1cHBsZW1lbnQiKX0pO3RyeXtjb25zdCB0PWUuZ2V0KCJDSURUb0dJRE1hcCIpO3QgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYoYT10LmdldEJ5dGVzKCkpfWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZXh0cmFjdERhdGFTdHJ1Y3R1cmVzIC0gaWdub3JpbmcgQ0lEVG9HSURNYXAgZGF0YTogIiR7ZX0iLmApfX1jb25zdCByPVtdO2xldCBpLG89bnVsbDtpZihlLmhhcygiRW5jb2RpbmciKSl7aT1lLmdldCgiRW5jb2RpbmciKTtpZihpIGluc3RhbmNlb2YgRGljdCl7bz1pLmdldCgiQmFzZUVuY29kaW5nIik7bz1vIGluc3RhbmNlb2YgTmFtZT9vLm5hbWU6bnVsbDtpZihpLmhhcygiRGlmZmVyZW5jZXMiKSl7Y29uc3QgZT1pLmdldCgiRGlmZmVyZW5jZXMiKTtsZXQgdD0wO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9bi5mZXRjaElmUmVmKGEpO2lmKCJudW1iZXIiPT10eXBlb2YgZSl0PWU7ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZW50cnkgaW4gJ0RpZmZlcmVuY2VzJyBhcnJheTogJHtlfWApO3JbdCsrXT1lLm5hbWV9fX19ZWxzZSBpZihpIGluc3RhbmNlb2YgTmFtZSlvPWkubmFtZTtlbHNle2NvbnN0IGU9IkVuY29kaW5nIGlzIG5vdCBhIE5hbWUgbm9yIGEgRGljdCI7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGUpO3dhcm4oZSl9Ik1hY1JvbWFuRW5jb2RpbmciIT09byYmIk1hY0V4cGVydEVuY29kaW5nIiE9PW8mJiJXaW5BbnNpRW5jb2RpbmciIT09byYmKG89bnVsbCl9Y29uc3QgbD0hdC5maWxlfHx0LmlzSW50ZXJuYWxGb250LGY9V2EoKVt0Lm5hbWVdO28mJmwmJmYmJihvPW51bGwpO2lmKCJXaW5BbnNpRW5jb2RpbmciPT09byYmbCYmdC5uYW1lPy5jaGFyQ29kZUF0KDApPj0xODMpe2NvbnN0IGU9dC5uYW1lO2lmKFsiw4vDjsOMw6UiLCLCusOaw4zDpSIsIsK/wqzDjMOlIiwiwrfDgsOLw44iLCLCv8Ksw4zDpV9HQjIzMTIiLCLCt8OCw4vDjl9HQjIzMTIiLCLDgcKlw4rDqSIsIsOQw4LDi8OOIiwiwrfDgsOLw47DjMOlIiwiw5DCocKxw6rDi8OOIl0uaW5jbHVkZXMoZSkpe289bnVsbDt0LmRlZmF1bHRFbmNvZGluZz0iQWRvYmUtR0IxLVVDUzIiO3QuY29tcG9zaXRlPSEwO3QuY2lkRW5jb2Rpbmc9TmFtZS5nZXQoIkdCSy1FVUMtSCIpO2NvbnN0IGU9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzp0LmNpZEVuY29kaW5nLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO3QuY01hcD1lO3QudmVydGljYWw9dC5jTWFwLnZlcnRpY2FsO3QuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6IkFkb2JlIixvcmRlcmluZzoiR0IxIixzdXBwbGVtZW50OjB9fX1pZihvKXQuZGVmYXVsdEVuY29kaW5nPWdldEVuY29kaW5nKG8pO2Vsc2V7bGV0IGU9ISEodC5mbGFncyZBYSk7Y29uc3Qgbj0hISh0LmZsYWdzJnhhKTtpZigiVHJ1ZVR5cGUiPT09dC50eXBlJiZlJiZuJiYwIT09ci5sZW5ndGgpe3QuZmxhZ3MmPX5BYTtlPSExfWk9bWE7IlRydWVUeXBlIiE9PXQudHlwZXx8bnx8KGk9cGEpO2lmKGV8fGYpe2k9dWE7bCYmKC9TeW1ib2wvaS50ZXN0KHQubmFtZSk/aT1kYTovRGluZ2JhdHMvaS50ZXN0KHQubmFtZSk/aT1nYTovV2luZ2RpbmdzL2kudGVzdCh0Lm5hbWUpJiYoaT1wYSkpfXQuZGVmYXVsdEVuY29kaW5nPWl9dC5kaWZmZXJlbmNlcz1yO3QuYmFzZUVuY29kaW5nTmFtZT1vO3QuaGFzRW5jb2Rpbmc9ISFvfHxyLmxlbmd0aD4wO3QuZGljdD1lO3QudG9Vbmljb2RlPWF3YWl0IHM7Y29uc3QgYz1hd2FpdCB0aGlzLmJ1aWxkVG9Vbmljb2RlKHQpO3QudG9Vbmljb2RlPWM7YSYmKHQuY2lkVG9HaWRNYXA9dGhpcy5yZWFkQ2lkVG9HaWRNYXAoYSxjKSk7cmV0dXJuIHR9X3NpbXBsZUZvbnRUb1VuaWNvZGUoZSx0PSExKXthc3NlcnQoIWUuY29tcG9zaXRlLCJNdXN0IGJlIGEgc2ltcGxlIGZvbnQuIik7Y29uc3Qgbj1bXSxhPWUuZGVmYXVsdEVuY29kaW5nLnNsaWNlKCkscz1lLmJhc2VFbmNvZGluZ05hbWUscj1lLmRpZmZlcmVuY2VzO2Zvcihjb25zdCBlIGluIHIpe2NvbnN0IHQ9cltlXTsiLm5vdGRlZiIhPT10JiYoYVtlXT10KX1jb25zdCBpPWJhKCk7Zm9yKGNvbnN0IHIgaW4gYSl7bGV0IG89YVtyXTtpZigiIj09PW8pY29udGludWU7bGV0IGw9aVtvXTtpZih2b2lkIDAhPT1sKXtuW3JdPVN0cmluZy5mcm9tQ2hhckNvZGUobCk7Y29udGludWV9bGV0IGY9MDtzd2l0Y2gob1swXSl7Y2FzZSJHIjozPT09by5sZW5ndGgmJihmPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJnIjo1PT09by5sZW5ndGgmJihmPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJDIjpjYXNlImMiOmlmKG8ubGVuZ3RoPj0zJiZvLmxlbmd0aDw9NCl7Y29uc3Qgbj1vLnN1YnN0cmluZygxKTtpZih0KXtmPXBhcnNlSW50KG4sMTYpO2JyZWFrfWY9K247aWYoTnVtYmVyLmlzTmFOKGYpJiZOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlSW50KG4sMTYpKSlyZXR1cm4gdGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlLCEwKX1icmVhaztjYXNlInUiOmw9Z2V0VW5pY29kZUZvckdseXBoKG8saSk7LTEhPT1sJiYoZj1sKTticmVhaztkZWZhdWx0OnN3aXRjaChvKXtjYXNlImZfaCI6Y2FzZSJmX3QiOmNhc2UiVF9oIjpuW3JdPW8ucmVwbGFjZUFsbCgiXyIsIiIpO2NvbnRpbnVlfX1pZihmPjAmJmY8PTExMTQxMTEmJk51bWJlci5pc0ludGVnZXIoZikpe2lmKHMmJmY9PT0rcil7Y29uc3QgZT1nZXRFbmNvZGluZyhzKTtpZihlJiYobz1lW3JdKSl7bltyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGlbb10pO2NvbnRpbnVlfX1uW3JdPVN0cmluZy5mcm9tQ29kZVBvaW50KGYpfX1yZXR1cm4gbn1hc3luYyBidWlsZFRvVW5pY29kZShlKXtlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwPWUudG9Vbmljb2RlPy5sZW5ndGg+MDtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXshZS5jb21wb3NpdGUmJmUuaGFzRW5jb2RpbmcmJihlLmZhbGxiYWNrVG9Vbmljb2RlPXRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO3JldHVybiBlLnRvVW5pY29kZX1pZighZS5jb21wb3NpdGUpcmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAodGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlKSk7aWYoZS5jb21wb3NpdGUmJihlLmNNYXAuYnVpbHRJbkNNYXAmJiEoZS5jTWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKXx8IkFkb2JlIj09PWUuY2lkU3lzdGVtSW5mbz8ucmVnaXN0cnkmJigiR0IxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkNOUzEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiSmFwYW4xIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IktvcmVhMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmcpKSl7Y29uc3R7cmVnaXN0cnk6dCxvcmRlcmluZzpufT1lLmNpZFN5c3RlbUluZm8sYT1OYW1lLmdldChgJHt0fS0ke259LVVDUzJgKSxzPWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6YSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KSxyPVtdLGk9W107ZS5jTWFwLmZvckVhY2goZnVuY3Rpb24oZSx0KXtpZih0PjY1NTM1KXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNSIpO2NvbnN0IG49cy5sb29rdXAodCk7aWYobil7aS5sZW5ndGg9MDtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKz0yKWkucHVzaCgobi5jaGFyQ29kZUF0KGUpPDw4KStuLmNoYXJDb2RlQXQoZSsxKSk7cltlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKC4uLmkpfX0pO3JldHVybiBuZXcgVG9Vbmljb2RlTWFwKHIpfXJldHVybiBuZXcgSWRlbnRpdHlUb1VuaWNvZGVNYXAoZS5maXJzdENoYXIsZS5sYXN0Q2hhcil9YXN5bmMgcmVhZFRvVW5pY29kZShlKXtpZighZSlyZXR1cm4gbnVsbDtpZihlIGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7cmV0dXJuIHQgaW5zdGFuY2VvZiBJZGVudGl0eUNNYXA/bmV3IElkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpOm5ldyBUb1VuaWNvZGVNYXAodC5nZXRNYXAoKSl9aWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pdHJ5e2NvbnN0IHQ9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO2lmKHQgaW5zdGFuY2VvZiBJZGVudGl0eUNNYXApcmV0dXJuIG5ldyBJZGVudGl0eVRvVW5pY29kZU1hcCgwLDY1NTM1KTtjb25zdCBuPW5ldyBBcnJheSh0Lmxlbmd0aCk7dC5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXtuW2VdPVN0cmluZy5mcm9tQ29kZVBvaW50KHQpO3JldHVybn10Lmxlbmd0aCUyIT0wJiYodD0iXDAiK3QpO2NvbnN0IGE9W107Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz0yKXtjb25zdCBuPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTtpZig1NTI5NiE9KDYzNDg4Jm4pKXthLnB1c2gobik7Y29udGludWV9ZSs9Mjtjb25zdCBzPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTthLnB1c2goKCgxMDIzJm4pPDwxMCkrKDEwMjMmcykrNjU1MzYpfW5bZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uYSl9KTtyZXR1cm4gbmV3IFRvVW5pY29kZU1hcChuKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgcmVhZFRvVW5pY29kZSAtIGlnbm9yaW5nIFRvVW5pY29kZSBkYXRhOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9dGhyb3cgZX1yZXR1cm4gbnVsbH1yZWFkQ2lkVG9HaWRNYXAoZSx0KXtjb25zdCBuPVtdO2ZvcihsZXQgYT0wLHM9ZS5sZW5ndGg7YTxzO2ErKyl7Y29uc3Qgcz1lW2ErK108PDh8ZVthXSxyPWE+PjE7KDAhPT1zfHx0LmhhcyhyKSkmJihuW3JdPXMpfXJldHVybiBufWV4dHJhY3RXaWR0aHMoZSx0LG4pe2NvbnN0IGE9dGhpcy54cmVmO2xldCBzPVtdLHI9MDtjb25zdCBpPVtdO2xldCBvO2lmKG4uY29tcG9zaXRlKXtjb25zdCB0PWUuZ2V0KCJEVyIpO3I9Im51bWJlciI9PXR5cGVvZiB0P01hdGguY2VpbCh0KToxZTM7Y29uc3QgbD1lLmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkobCkpZm9yKGxldCBlPTAsdD1sLmxlbmd0aDtlPHQ7ZSsrKXtsZXQgdD1hLmZldGNoSWZSZWYobFtlKytdKTtpZighTnVtYmVyLmlzSW50ZWdlcih0KSlicmVhaztjb25zdCBuPWEuZmV0Y2hJZlJlZihsW2VdKTtpZihBcnJheS5pc0FycmF5KG4pKWZvcihjb25zdCBlIG9mIG4pe2NvbnN0IG49YS5mZXRjaElmUmVmKGUpOyJudW1iZXIiPT10eXBlb2YgbiYmKHNbdF09bik7dCsrfWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIobikpYnJlYWs7e2NvbnN0IHI9YS5mZXRjaElmUmVmKGxbKytlXSk7aWYoIm51bWJlciIhPXR5cGVvZiByKWNvbnRpbnVlO2ZvcihsZXQgZT10O2U8PW47ZSsrKXNbZV09cn19fWlmKG4udmVydGljYWwpe2NvbnN0IHQ9ZS5nZXRBcnJheSgiRFcyIik7bGV0IG49aXNOdW1iZXJBcnJheSh0LDIpP3Q6Wzg4MCwtMWUzXTtvPVtuWzFdLC41KnIsblswXV07bj1lLmdldCgiVzIiKTtpZihBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9YS5mZXRjaElmUmVmKG5bZSsrXSk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpYnJlYWs7Y29uc3Qgcz1hLmZldGNoSWZSZWYobltlXSk7aWYoQXJyYXkuaXNBcnJheShzKSlmb3IobGV0IGU9MCxuPXMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49W2EuZmV0Y2hJZlJlZihzW2UrK10pLGEuZmV0Y2hJZlJlZihzW2UrK10pLGEuZmV0Y2hJZlJlZihzW2VdKV07aXNOdW1iZXJBcnJheShuLG51bGwpJiYoaVt0XT1uKTt0Kyt9ZWxzZXtpZighTnVtYmVyLmlzSW50ZWdlcihzKSlicmVhazt7Y29uc3Qgcj1bYS5mZXRjaElmUmVmKG5bKytlXSksYS5mZXRjaElmUmVmKG5bKytlXSksYS5mZXRjaElmUmVmKG5bKytlXSldO2lmKCFpc051bWJlckFycmF5KHIsbnVsbCkpY29udGludWU7Zm9yKGxldCBlPXQ7ZTw9cztlKyspaVtlXT1yfX19fX1lbHNle2NvbnN0IGk9ZS5nZXQoIldpZHRocyIpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2xldCBlPW4uZmlyc3RDaGFyO2Zvcihjb25zdCB0IG9mIGkpe2NvbnN0IG49YS5mZXRjaElmUmVmKHQpOyJudW1iZXIiPT10eXBlb2YgbiYmKHNbZV09bik7ZSsrfWNvbnN0IG89dC5nZXQoIk1pc3NpbmdXaWR0aCIpO3I9Im51bWJlciI9PXR5cGVvZiBvP286MH1lbHNle2NvbnN0IHQ9ZS5nZXQoIkJhc2VGb250Iik7aWYodCBpbnN0YW5jZW9mIE5hbWUpe2NvbnN0IGU9dGhpcy5nZXRCYXNlRm9udE1ldHJpY3ModC5uYW1lKTtzPXRoaXMuYnVpbGRDaGFyQ29kZVRvV2lkdGgoZS53aWR0aHMsbik7cj1lLmRlZmF1bHRXaWR0aH19fWxldCBsPSEwLGY9cjtmb3IoY29uc3QgZSBpbiBzKXtjb25zdCB0PXNbZV07aWYodClpZihmKXtpZihmIT09dCl7bD0hMTticmVha319ZWxzZSBmPXR9bD9uLmZsYWdzfD12YTpuLmZsYWdzJj1+dmE7bi5kZWZhdWx0V2lkdGg9cjtuLndpZHRocz1zO24uZGVmYXVsdFZNZXRyaWNzPW87bi52bWV0cmljcz1pfWlzU2VyaWZGb250KGUpe2NvbnN0IHQ9ZS5zcGxpdCgiLSIsMSlbMF07cmV0dXJuIHQgaW4gVWEoKXx8L3NlcmlmL2kudGVzdCh0KX1nZXRCYXNlRm9udE1ldHJpY3MoZSl7bGV0IHQ9MCxuPU9iamVjdC5jcmVhdGUobnVsbCksYT0hMSxzPW5vcm1hbGl6ZUZvbnROYW1lKGUpO3M9X2EoKVtzXXx8cztjb25zdCByPVlhKCksaT1yW3NdPz9yW3RoaXMuaXNTZXJpZkZvbnQoZSk/IlRpbWVzLVJvbWFuIjoiSGVsdmV0aWNhIl07aWYoIm51bWJlciI9PXR5cGVvZiBpKXt0PWk7YT0hMH1lbHNlIG49aSgpO3JldHVybntkZWZhdWx0V2lkdGg6dCxtb25vc3BhY2U6YSx3aWR0aHM6bn19YnVpbGRDaGFyQ29kZVRvV2lkdGgoZSx0KXtjb25zdCBuPU9iamVjdC5jcmVhdGUobnVsbCksYT10LmRpZmZlcmVuY2VzLHM9dC5kZWZhdWx0RW5jb2Rpbmc7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXQgaW4gYSYmZVthW3RdXT9uW3RdPWVbYVt0XV06dCBpbiBzJiZlW3NbdF1dJiYoblt0XT1lW3NbdF1dKTtyZXR1cm4gbn1wcmVFdmFsdWF0ZUZvbnQoZSl7Y29uc3QgdD1lO2xldCBuPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShuIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO2xldCBhLHM9ITE7aWYoIlR5cGUwIj09PW4ubmFtZSl7Y29uc3QgdD1lLmdldCgiRGVzY2VuZGFudEZvbnRzIik7aWYoIXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRlc2NlbmRhbnQgZm9udCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO249ZS5nZXQoIlN1YnR5cGUiKTtpZighKG4gaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7cz0hMH1sZXQgcj1lLmdldCgiRmlyc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihyKXx8KHI9MCk7bGV0IGk9ZS5nZXQoIkxhc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihpKXx8KGk9cz82NTUzNToyNTUpO2NvbnN0IG89ZS5nZXQoIkZvbnREZXNjcmlwdG9yIiksbD1lLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKTtpZihvKXthPW5ldyBNdXJtdXJIYXNoM182NDtjb25zdCBvPXQuZ2V0UmF3KCJFbmNvZGluZyIpO2lmKG8gaW5zdGFuY2VvZiBOYW1lKWEudXBkYXRlKG8ubmFtZSk7ZWxzZSBpZihvIGluc3RhbmNlb2YgUmVmKWEudXBkYXRlKG8udG9TdHJpbmcoKSk7ZWxzZSBpZihvIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3QgZSBvZiBvLmdldFJhd1ZhbHVlcygpKWlmKGUgaW5zdGFuY2VvZiBOYW1lKWEudXBkYXRlKGUubmFtZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKWEudXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLG49bmV3IEFycmF5KHQpO2ZvcihsZXQgYT0wO2E8dDthKyspe2NvbnN0IHQ9ZVthXTt0IGluc3RhbmNlb2YgTmFtZT9uW2FdPXQubmFtZTooIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmKG5bYV09dC50b1N0cmluZygpKX1hLnVwZGF0ZShuLmpvaW4oKSl9YS51cGRhdGUoYCR7cn0tJHtpfWApO2lmKGwgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPWwuc3RyZWFtfHxsLHQ9ZS5idWZmZXI/bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIuYnVmZmVyLDAsZS5idWZmZXJMZW5ndGgpOm5ldyBVaW50OEFycmF5KGUuYnl0ZXMuYnVmZmVyLGUuc3RhcnQsZS5lbmQtZS5zdGFydCk7YS51cGRhdGUodCl9ZWxzZSBsIGluc3RhbmNlb2YgTmFtZSYmYS51cGRhdGUobC5uYW1lKTtjb25zdCBmPWUuZ2V0KCJXaWR0aHMiKXx8dC5nZXQoIldpZHRocyIpO2lmKEFycmF5LmlzQXJyYXkoZikpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgZikoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7YS51cGRhdGUoZS5qb2luKCkpfWlmKHMpe2EudXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3Qgbj1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkobikpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgbilpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBSZWYpZS5wdXNoKHQudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBuPVtdO2Zvcihjb25zdCBlIG9mIHQpKCJudW1iZXIiPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFJlZikmJm4ucHVzaChlLnRvU3RyaW5nKCkpO2UucHVzaChgWyR7bi5qb2luKCl9XWApfWEudXBkYXRlKGUuam9pbigpKX1jb25zdCBzPWUuZ2V0UmF3KCJDSURUb0dJRE1hcCIpfHx0LmdldFJhdygiQ0lEVG9HSURNYXAiKTtzIGluc3RhbmNlb2YgTmFtZT9hLnVwZGF0ZShzLm5hbWUpOnMgaW5zdGFuY2VvZiBSZWY/YS51cGRhdGUocy50b1N0cmluZygpKTpzIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmYS51cGRhdGUocy5wZWVrQnl0ZXMoKSl9aWYoIlR5cGUzIj09PW4ubmFtZSl7Y29uc3QgZT10LmdldCgiQ2hhclByb2NzIik7aWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3Qsbl1vZiBlLmdldFJhd0VudHJpZXMoKSlhLnVwZGF0ZShuIGluc3RhbmNlb2YgUmVmP2Ake3R9XDAke259YDp0KX19cmV0dXJue2Rlc2NyaXB0b3I6byxkaWN0OmUsYmFzZURpY3Q6dCxjb21wb3NpdGU6cyx0eXBlOm4ubmFtZSxmaXJzdENoYXI6cixsYXN0Q2hhcjppLHRvVW5pY29kZTpsLGhhc2g6YT9hLmhleGRpZ2VzdCgpOiIifX1hc3luYyB0cmFuc2xhdGVGb250KHtkZXNjcmlwdG9yOmUsZGljdDp0LGJhc2VEaWN0Om4sY29tcG9zaXRlOnMsdHlwZTpyLGZpcnN0Q2hhcjppLGxhc3RDaGFyOm8sdG9Vbmljb2RlOmwsY3NzRm9udEluZm86Zn0pe2NvbnN0IGM9IlR5cGUzIj09PXI7aWYoIWUpaWYoYyllPURpY3QuZW1wdHk7ZWxzZXtpZighcyl7bGV0IGU9dC5nZXQoIkJhc2VGb250Iik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYXNlIGZvbnQgaXMgbm90IHNwZWNpZmllZCIpO2U9bm9ybWFsaXplRm9udE5hbWUoZS5uYW1lKTtjb25zdCBhPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKGUpLHM9ZS5zcGxpdCgiLSIsMSlbMF0sZj0odGhpcy5pc1NlcmlmRm9udChzKT9TYTowKXwoYS5tb25vc3BhY2U/dmE6MCl8KFdhKClbc10/QWE6eGEpLGg9e3R5cGU6cixuYW1lOmUsbG9hZGVkTmFtZTpuLmxvYWRlZE5hbWUsc3lzdGVtRm9udEluZm86bnVsbCx3aWR0aHM6YS53aWR0aHMsZGVmYXVsdFdpZHRoOmEuZGVmYXVsdFdpZHRoLGlzU2ltdWxhdGVkRmxhZ3M6ITAsZmxhZ3M6ZixmaXJzdENoYXI6aSxsYXN0Q2hhcjpvLHRvVW5pY29kZTpsLHhIZWlnaHQ6MCxjYXBIZWlnaHQ6MCxpdGFsaWNBbmdsZTowLGlzVHlwZTNGb250OmN9LHU9dC5nZXQoIldpZHRocyIpLG09Z2V0U3RhbmRhcmRGb250TmFtZShlKTtsZXQgcD1udWxsO2lmKG0pe3A9YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEobSk7aC5pc0ludGVybmFsRm9udD0hIXB9IWguaXNJbnRlcm5hbEZvbnQmJnRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmKGguc3lzdGVtRm9udEluZm89Z2V0Rm9udFN1YnN0aXR1dGlvbih0aGlzLnN5c3RlbUZvbnRDYWNoZSx0aGlzLmlkRmFjdG9yeSx0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCxlLG0scikpO2NvbnN0IGQ9YXdhaXQgdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCxoKTtpZihBcnJheS5pc0FycmF5KHUpKXtjb25zdCBlPVtdO2xldCB0PWk7Zm9yKGNvbnN0IG4gb2YgdSl7Y29uc3QgYT10aGlzLnhyZWYuZmV0Y2hJZlJlZihuKTsibnVtYmVyIj09dHlwZW9mIGEmJihlW3RdPWEpO3QrK31kLndpZHRocz1lfWVsc2UgZC53aWR0aHM9dGhpcy5idWlsZENoYXJDb2RlVG9XaWR0aChhLndpZHRocyxkKTtyZXR1cm4gbmV3IEZvbnQoZSxwLGQsdGhpcy5vcHRpb25zKX1lPURpY3QuZW1wdHl9bGV0IGg9ZS5nZXQoIkZvbnROYW1lIiksdT10LmdldCgiQmFzZUZvbnQiKTsic3RyaW5nIj09dHlwZW9mIGgmJihoPU5hbWUuZ2V0KGgpKTsic3RyaW5nIj09dHlwZW9mIHUmJih1PU5hbWUuZ2V0KHUpKTtjb25zdCBtPWg/Lm5hbWUscD11Py5uYW1lO2lmKGMpbXx8KGg9TmFtZS5nZXQocikpO2Vsc2UgaWYobSE9PXApe2luZm8oYFRoZSBGb250RGVzY3JpcHRvcidzIEZvbnROYW1lIGlzICIke219IiBidXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBGb250J3MgQmFzZUZvbnQgIiR7cH0iLmApO20mJnAmJihwLnN0YXJ0c1dpdGgobSl8fCFpc0tub3duRm9udE5hbWUobSkmJmlzS25vd25Gb250TmFtZShwKSkmJihoPW51bGwpO2h8fD11fWlmKCEoaCBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBmb250IG5hbWUiKTtsZXQgZCxnLGIsdyxqLGs7dHJ5e2Zvcihjb25zdCB0IG9mWyJGb250RmlsZSIsIkZvbnRGaWxlMiIsIkZvbnRGaWxlMyJdKXtkPWUuZ2V0KHQpO2lmKGQpe2c9dDticmVha319aWYoZCl7aWYoIShkIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJGb250RmlsZSBzaG91bGQgYmUgYSBzdHJlYW0iKTtpZihkLmlzQXN5bmMpe2NvbnN0IGU9YXdhaXQgZC5hc3luY0dldEJ5dGVzKCk7ZSYmKGQ9bmV3IFN0cmVhbShlLDAsZS5sZW5ndGgsZC5kaWN0KSl9aWYoZC5pc0VtcHR5KXRocm93IG5ldyBGb3JtYXRFcnJvcigiRm9udEZpbGUgaXMgZW1wdHkiKX19Y2F0Y2goZSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGB0cmFuc2xhdGVGb250IC0gZmV0Y2hpbmcgIiR7aC5uYW1lfSIgZm9udCBmaWxlOiAiJHtlfSIuYCk7ZD1udWxsfWxldCB5PSExLHE9bnVsbCx2PW51bGw7aWYoZCl7aWYoZC5kaWN0KXtjb25zdCBlPWQuZGljdC5nZXQoIlN1YnR5cGUiKTtlIGluc3RhbmNlb2YgTmFtZSYmKGI9ZS5uYW1lKTt3PWQuZGljdC5nZXQoIkxlbmd0aDEiKTtqPWQuZGljdC5nZXQoIkxlbmd0aDIiKTtrPWQuZGljdC5nZXQoIkxlbmd0aDMiKX19ZWxzZSBpZihmKXtjb25zdCBlPWdldFhmYUZvbnROYW1lKGgubmFtZSk7aWYoZSl7Zi5mb250RmFtaWx5PWAke2YuZm9udEZhbWlseX0tUGRmSlMtWEZBYDtmLm1ldHJpY3M9ZS5tZXRyaWNzfHxudWxsO3E9ZS5mYWN0b3JzfHxudWxsO2Q9YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEoZS5uYW1lKTt5PSEhZDtuPXQ9Z2V0WGZhRm9udERpY3QoaC5uYW1lKTtzPSEwfX1lbHNlIGlmKCFjKXtjb25zdCBlPWdldFN0YW5kYXJkRm9udE5hbWUoaC5uYW1lKTtpZihlKXtkPWF3YWl0IHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpO3k9ISFkfSF5JiZ0aGlzLm9wdGlvbnMudXNlU3lzdGVtRm9udHMmJih2PWdldEZvbnRTdWJzdGl0dXRpb24odGhpcy5zeXN0ZW1Gb250Q2FjaGUsdGhpcy5pZEZhY3RvcnksdGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmwsaC5uYW1lLGUscikpfWNvbnN0IFM9bG9va3VwTWF0cml4KHQuZ2V0QXJyYXkoIkZvbnRNYXRyaXgiKSxhKSx4PWxvb2t1cE5vcm1hbFJlY3QoZS5nZXRBcnJheSgiRm9udEJCb3giKXx8dC5nZXRBcnJheSgiRm9udEJCb3giKSxjP1swLDAsMCwwXTp2b2lkIDApO2xldCBDPWUuZ2V0KCJBc2NlbnQiKTsibnVtYmVyIiE9dHlwZW9mIEMmJihDPXZvaWQgMCk7bGV0IEY9ZS5nZXQoIkRlc2NlbnQiKTsibnVtYmVyIiE9dHlwZW9mIEYmJihGPXZvaWQgMCk7bGV0IFQ9ZS5nZXQoIlhIZWlnaHQiKTsibnVtYmVyIiE9dHlwZW9mIFQmJihUPTApO2xldCBSPWUuZ2V0KCJDYXBIZWlnaHQiKTsibnVtYmVyIiE9dHlwZW9mIFImJihSPTApO2xldCBPPWUuZ2V0KCJGbGFncyIpO051bWJlci5pc0ludGVnZXIoTyl8fChPPTApO2xldCBIPWUuZ2V0KCJJdGFsaWNBbmdsZSIpOyJudW1iZXIiIT10eXBlb2YgSCYmKEg9MCk7Y29uc3QgRD17dHlwZTpyLG5hbWU6aC5uYW1lLHN1YnR5cGU6YixmaWxlOmQsZm9udEZpbGVOOmcsbGVuZ3RoMTp3LGxlbmd0aDI6aixsZW5ndGgzOmssaXNJbnRlcm5hbEZvbnQ6eSxsb2FkZWROYW1lOm4ubG9hZGVkTmFtZSxjb21wb3NpdGU6cyxmaXhlZFBpdGNoOiExLGZvbnRNYXRyaXg6UyxmaXJzdENoYXI6aSxsYXN0Q2hhcjpvLHRvVW5pY29kZTpsLGJib3g6eCxhc2NlbnQ6QyxkZXNjZW50OkYseEhlaWdodDpULGNhcEhlaWdodDpSLGZsYWdzOk8saXRhbGljQW5nbGU6SCxpc1R5cGUzRm9udDpjLGNzc0ZvbnRJbmZvOmYsc2NhbGVGYWN0b3JzOnEsc3lzdGVtRm9udEluZm86dn07aWYocyl7Y29uc3QgZT1uLmdldCgiRW5jb2RpbmciKTtlIGluc3RhbmNlb2YgTmFtZSYmKEQuY2lkRW5jb2Rpbmc9ZS5uYW1lKTtjb25zdCB0PWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTtELmNNYXA9dDtELnZlcnRpY2FsPUQuY01hcC52ZXJ0aWNhbH1jb25zdCBNPWF3YWl0IHRoaXMuZXh0cmFjdERhdGFTdHJ1Y3R1cmVzKHQsRCk7dGhpcy5leHRyYWN0V2lkdGhzKHQsZSxNKTtjb25zdCBOPW5ldyBGb250KGgubmFtZSxkLE0sdGhpcy5vcHRpb25zKTtpZihOLm1pc3NpbmdGaWxlJiYhTi5zeXN0ZW1Gb250SW5mbyYmIWMmJnRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyl7Y29uc3QgZT1nZXRTdGFuZGFyZEZvbnROYW1lKGgubmFtZSksdD1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGgubmFtZSxlLHIpO2lmKHQpe2lmKHQuZ3Vlc3NGYWxsYmFjayl7dC5ndWVzc0ZhbGxiYWNrPSExO3QuY3NzKz1gLCR7Ti5mYWxsYmFja05hbWV9YH1OLnN5c3RlbUZvbnRJbmZvPXR9fXJldHVybiBOfXN0YXRpYyBidWlsZEZvbnRQYXRocyhlLHQsbixhKXtmdW5jdGlvbiBidWlsZFBhdGgodCl7Y29uc3Qgcz1gJHtlLmxvYWRlZE5hbWV9X3BhdGhfJHt0fWA7dHJ5e2NvbnN0IGE9ZS5yZW5kZXJlci5nZXRQYXRoKHQpO2lmKCFhKXJldHVybjtuLnNlbmQoImNvbW1vbm9iaiIsW3MsIkZvbnRQYXRoIixhXSxbYV0pfWNhdGNoKGUpe2lmKGEuaWdub3JlRXJyb3JzKXt3YXJuKGBidWlsZEZvbnRQYXRocyAtIGlnbm9yaW5nICR7c30gZ2x5cGg6ICIke2V9Ii5gKTtyZXR1cm59dGhyb3cgZX19Zm9yKGNvbnN0IGUgb2YgdCl7YnVpbGRQYXRoKGUuZm9udENoYXIpO2NvbnN0IHQ9ZS5hY2NlbnQ7dD8uZm9udENoYXImJmJ1aWxkUGF0aCh0LmZvbnRDaGFyKX19c3RhdGljIGdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO3JldHVybiBzaGFkb3codGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIFRyYW5zbGF0ZWRGb250eyNZZT0hMTsjSmU9bnVsbDtjb25zdHJ1Y3Rvcih7bG9hZGVkTmFtZTplLGZvbnQ6dCxkaWN0Om59KXt0aGlzLmxvYWRlZE5hbWU9ZTt0aGlzLmZvbnQ9dDt0aGlzLmRpY3Q9bjt0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXQuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsfXNlbmQoZSl7aWYodGhpcy4jWWUpcmV0dXJuO3RoaXMuI1llPSEwO2NvbnN0IHQ9dGhpcy5mb250LmV4cG9ydERhdGEoKSxuPXQuYnVmZmVyP1t0LmJ1ZmZlcl06bnVsbDtlLnNlbmQoImNvbW1vbm9iaiIsW3RoaXMubG9hZGVkTmFtZSwiRm9udCIsdF0sbil9ZmFsbGJhY2soZSx0KXtpZih0aGlzLmZvbnQuZGF0YSl7dGhpcy5mb250LmRpc2FibGVGb250RmFjZT0hMDtQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKHRoaXMuZm9udCx0aGlzLmZvbnQuZ2x5cGhDYWNoZVZhbHVlcyxlLHQpfX1sb2FkVHlwZTNEYXRhKGUsdCxuLGE9bnVsbCl7aWYodGhpcy4jSmUpcmV0dXJuIHRoaXMuI0plO2NvbnN0e2ZvbnQ6cyx0eXBlM0RlcGVuZGVuY2llczpyfT10aGlzO2Fzc2VydChzLmlzVHlwZTNGb250LCJNdXN0IGJlIGEgVHlwZTMgZm9udC4iKTtjb25zdCBpPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pLG89bmV3IFJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIW8uaGFzKHRoaXMuZGljdC5vYmpJZCkmJm8ucHV0KHRoaXMuZGljdC5vYmpJZCk7aS50eXBlM0ZvbnRSZWZzPW87bGV0IGw9UHJvbWlzZS5yZXNvbHZlKCk7Y29uc3QgZj10aGlzLmRpY3QuZ2V0KCJDaGFyUHJvY3MiKSxjPXRoaXMuZGljdC5nZXQoIlJlc291cmNlcyIpfHx0LGg9T2JqZWN0LmNyZWF0ZShudWxsKSxbdSxtLHAsZF09cy5iYm94LGc9cC11LGI9ZC1tLHc9TWF0aC5oeXBvdChnLGIpO2Zvcihjb25zdCBlIG9mIGYuZ2V0S2V5cygpKWw9bC50aGVuKCgpPT57Y29uc3QgdD1mLmdldChlKSxzPW5ldyBPcGVyYXRvckxpc3Q7cmV0dXJuIGkuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOm4scmVzb3VyY2VzOmMsb3BlcmF0b3JMaXN0OnMscHJldlJlZnM6YX0pLnRoZW4oKCk9Pntzd2l0Y2gocy5mbkFycmF5WzBdKXtjYXNlIGl0OnRoaXMuI1FlKHMsdyk7YnJlYWs7Y2FzZSBydDp3fHx0aGlzLiNaZShzKX1oW2VdPXMuZ2V0SVIoKTtmb3IoY29uc3QgZSBvZiBzLmRlcGVuZGVuY2llcylyLmFkZChlKX0pLmNhdGNoKGZ1bmN0aW9uKHQpe3dhcm4oYFR5cGUzIGZvbnQgcmVzb3VyY2UgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCk7Y29uc3Qgbj1uZXcgT3BlcmF0b3JMaXN0O2hbZV09bi5nZXRJUigpfSl9KTt0aGlzLiNKZT1sLnRoZW4oKCk9PntzLmNoYXJQcm9jT3BlcmF0b3JMaXN0PWg7aWYodGhpcy5fYmJveCl7cy5pc0NoYXJCQm94PSEwO3MuYmJveD10aGlzLl9iYm94fX0pO3JldHVybiB0aGlzLiNKZX0jUWUoZSxuPU5hTil7Y29uc3QgYT1VdGlsLm5vcm1hbGl6ZVJlY3QoZS5hcmdzQXJyYXlbMF0uc2xpY2UoMikpLHM9YVsyXS1hWzBdLHI9YVszXS1hWzFdLGk9TWF0aC5oeXBvdChzLHIpO2lmKDA9PT1zfHwwPT09cil7ZS5mbkFycmF5LnNwbGljZSgwLDEpO2UuYXJnc0FycmF5LnNwbGljZSgwLDEpfWVsc2UgaWYoMD09PW58fE1hdGgucm91bmQoaS9uKT49MTApe3RoaXMuX2Jib3g/Pz10LnNsaWNlKCk7VXRpbC5yZWN0Qm91bmRpbmdCb3goLi4uYSx0aGlzLl9iYm94KX1sZXQgbz0wLGw9ZS5sZW5ndGg7Zm9yKDtvPGw7KXtzd2l0Y2goZS5mbkFycmF5W29dKXtjYXNlIGl0OmJyZWFrO2Nhc2Ugb3Q6Y2FzZSBsdDpjYXNlIGZ0OmNhc2UgY3Q6Y2FzZSBodDpjYXNlIHV0OmNhc2UgbXQ6Y2FzZSBwdDpjYXNlIGR0OmNhc2UgZ3Q6Y2FzZSBidDpjYXNlIHd0OmNhc2UganQ6Y2FzZSB3ZTplLmZuQXJyYXkuc3BsaWNlKG8sMSk7ZS5hcmdzQXJyYXkuc3BsaWNlKG8sMSk7bC0tO2NvbnRpbnVlO2Nhc2Uga2U6Y29uc3RbdF09ZS5hcmdzQXJyYXlbb107bGV0IG49MCxhPXQubGVuZ3RoO2Zvcig7bjxhOyl7Y29uc3RbZV09dFtuXTtzd2l0Y2goZSl7Y2FzZSJUUiI6Y2FzZSJUUjIiOmNhc2UiSFQiOmNhc2UiQkciOmNhc2UiQkcyIjpjYXNlIlVDUiI6Y2FzZSJVQ1IyIjp0LnNwbGljZShuLDEpO2EtLTtjb250aW51ZX1uKyt9fW8rK319I1plKGUpe2xldCBuPTE7Y29uc3QgYT1lLmxlbmd0aDtmb3IoO248YTspe2lmKGUuZm5BcnJheVtuXT09PVh0KXtjb25zdCBhPWUuYXJnc0FycmF5W25dWzJdO3RoaXMuX2Jib3g/Pz10LnNsaWNlKCk7VXRpbC5yZWN0Qm91bmRpbmdCb3goLi4uYSx0aGlzLl9iYm94KX1uKyt9fX1jbGFzcyBTdGF0ZU1hbmFnZXJ7Y29uc3RydWN0b3IoZT1uZXcgRXZhbFN0YXRlKXt0aGlzLnN0YXRlPWU7dGhpcy5zdGF0ZVN0YWNrPVtdfXNhdmUoKXtjb25zdCBlPXRoaXMuc3RhdGU7dGhpcy5zdGF0ZVN0YWNrLnB1c2godGhpcy5zdGF0ZSk7dGhpcy5zdGF0ZT1lLmNsb25lKCl9cmVzdG9yZSgpe2NvbnN0IGU9dGhpcy5zdGF0ZVN0YWNrLnBvcCgpO2UmJih0aGlzLnN0YXRlPWUpfXRyYW5zZm9ybShlKXt0aGlzLnN0YXRlLmN0bT1VdGlsLnRyYW5zZm9ybSh0aGlzLnN0YXRlLmN0bSxlKX19Y2xhc3MgVGV4dFN0YXRle2N0bT1uZXcgRmxvYXQzMkFycmF5KGduKTtmb250TmFtZT1udWxsO2ZvbnRTaXplPTA7bG9hZGVkTmFtZT1udWxsO2ZvbnQ9bnVsbDtmb250TWF0cml4PWE7dGV4dE1hdHJpeD1nbi5zbGljZSgpO3RleHRMaW5lTWF0cml4PWduLnNsaWNlKCk7Y2hhclNwYWNpbmc9MDt3b3JkU3BhY2luZz0wO2xlYWRpbmc9MDt0ZXh0SFNjYWxlPTE7dGV4dFJpc2U9MDtzZXRUZXh0TWF0cml4KGUsdCxuLGEscyxyKXtjb25zdCBpPXRoaXMudGV4dE1hdHJpeDtpWzBdPWU7aVsxXT10O2lbMl09bjtpWzNdPWE7aVs0XT1zO2lbNV09cn1zZXRUZXh0TGluZU1hdHJpeChlLHQsbixhLHMscil7Y29uc3QgaT10aGlzLnRleHRMaW5lTWF0cml4O2lbMF09ZTtpWzFdPXQ7aVsyXT1uO2lbM109YTtpWzRdPXM7aVs1XT1yfXRyYW5zbGF0ZVRleHRNYXRyaXgoZSx0KXtjb25zdCBuPXRoaXMudGV4dE1hdHJpeDtuWzRdPW5bMF0qZStuWzJdKnQrbls0XTtuWzVdPW5bMV0qZStuWzNdKnQrbls1XX10cmFuc2xhdGVUZXh0TGluZU1hdHJpeChlLHQpe2NvbnN0IG49dGhpcy50ZXh0TGluZU1hdHJpeDtuWzRdPW5bMF0qZStuWzJdKnQrbls0XTtuWzVdPW5bMV0qZStuWzNdKnQrbls1XX1jYXJyaWFnZVJldHVybigpe3RoaXMudHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoMCwtdGhpcy5sZWFkaW5nKTt0aGlzLnRleHRNYXRyaXg9dGhpcy50ZXh0TGluZU1hdHJpeC5zbGljZSgpfWNsb25lKCl7Y29uc3QgZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUodGhpcyksdGhpcyk7ZS50ZXh0TWF0cml4PXRoaXMudGV4dE1hdHJpeC5zbGljZSgpO2UudGV4dExpbmVNYXRyaXg9dGhpcy50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2UuZm9udE1hdHJpeD10aGlzLmZvbnRNYXRyaXguc2xpY2UoKTtyZXR1cm4gZX19Y2xhc3MgRXZhbFN0YXRle2N0bT1uZXcgRmxvYXQzMkFycmF5KGduKTtmb250PW51bGw7dGV4dFJlbmRlcmluZ01vZGU9UztfZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLmdyYXk7X3N0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLmdyYXk7cGF0dGVybkZpbGxDb2xvclNwYWNlPW51bGw7cGF0dGVyblN0cm9rZUNvbG9yU3BhY2U9bnVsbDtjdXJyZW50UG9pbnRYPTA7Y3VycmVudFBvaW50WT0wO3BhdGhNaW5NYXg9bi5zbGljZSgpO3BhdGhCdWZmZXI9W107Z2V0IGZpbGxDb2xvclNwYWNlKCl7cmV0dXJuIHRoaXMuX2ZpbGxDb2xvclNwYWNlfXNldCBmaWxsQ29sb3JTcGFjZShlKXt0aGlzLl9maWxsQ29sb3JTcGFjZT10aGlzLnBhdHRlcm5GaWxsQ29sb3JTcGFjZT1lfWdldCBzdHJva2VDb2xvclNwYWNlKCl7cmV0dXJuIHRoaXMuX3N0cm9rZUNvbG9yU3BhY2V9c2V0IHN0cm9rZUNvbG9yU3BhY2UoZSl7dGhpcy5fc3Ryb2tlQ29sb3JTcGFjZT10aGlzLnBhdHRlcm5TdHJva2VDb2xvclNwYWNlPWV9Y2xvbmUoe25ld1BhdGg6ZT0hMX09e30pe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZSh0aGlzKTtpZihlKXt0LnBhdGhCdWZmZXI9W107dC5wYXRoTWluTWF4PW4uc2xpY2UoKX1yZXR1cm4gdH19Y2xhc3MgRXZhbHVhdG9yUHJlcHJvY2Vzc29ye3N0YXRpYyBnZXQgb3BNYXAoKXtyZXR1cm4gc2hhZG93KHRoaXMsIm9wTWFwIixPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCkse3c6e2lkOm1lLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LEo6e2lkOnBlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGo6e2lkOmRlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LE06e2lkOmdlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGQ6e2lkOmJlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LHJpOntpZDp3ZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxpOntpZDpqZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxnczp7aWQ6a2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0scTp7aWQ6eWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sUTp7aWQ6cWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sY206e2lkOnZlLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LG06e2lkOlNlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGw6e2lkOkFlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGM6e2lkOnhlLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LHY6e2lkOkNlLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LHk6e2lkOkllLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LGg6e2lkOkZlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LHJlOntpZDpUZSxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSxTOntpZDpSZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxzOntpZDpPZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxmOntpZDpIZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxGOntpZDpIZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSwiZioiOntpZDpCZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxCOntpZDpEZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSwiQioiOntpZDpNZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxiOntpZDpOZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSwiYioiOntpZDpQZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxuOntpZDpFZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxXOntpZDpfZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSwiVyoiOntpZDp6ZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxCVDp7aWQ6TGUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRVQ6e2lkOlVlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFRjOntpZDpXZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUdzp7aWQ6WGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVHo6e2lkOktlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRMOntpZDpHZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUZjp7aWQ6VmUsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sVHI6e2lkOiRlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRzOntpZDpZZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUZDp7aWQ6SmUsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sVEQ6e2lkOlFlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LFRtOntpZDpaZSxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfSwiVCoiOntpZDpldCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxUajp7aWQ6dHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVEo6e2lkOm50LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LCInIjp7aWQ6YXQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sJyInOntpZDpzdCxudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfSxkMDp7aWQ6cnQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sZDE6e2lkOml0LG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LENTOntpZDpvdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxjczp7aWQ6bHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sU0M6e2lkOmZ0LG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9LFNDTjp7aWQ6Y3QsbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9LHNjOntpZDpodCxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiEwfSxzY246e2lkOnV0LG51bUFyZ3M6MzMsdmFyaWFibGVBcmdzOiEwfSxHOntpZDptdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxnOntpZDpwdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxSRzp7aWQ6ZHQsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0scmc6e2lkOmd0LG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LEs6e2lkOmJ0LG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LGs6e2lkOnd0LG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LHNoOntpZDpqdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxCSTp7aWQ6a3QsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sSUQ6e2lkOnl0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEVJOntpZDpxdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxEbzp7aWQ6dnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sTVA6e2lkOlN0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LERQOntpZDpBdCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxCTUM6e2lkOnh0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LEJEQzp7aWQ6Q3QsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sRU1DOntpZDpJdCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxCWDp7aWQ6RnQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRVg6e2lkOlR0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJNOm51bGwsQkQ6bnVsbCx0cnVlOm51bGwsZmE6bnVsbCxmYWw6bnVsbCxmYWxzOm51bGwsZmFsc2U6bnVsbCxudTpudWxsLG51bDpudWxsLG51bGw6bnVsbH0pKX1zdGF0aWMgTUFYX0lOVkFMSURfUEFUSF9PUFM9MTA7Y29uc3RydWN0b3IoZSx0LG49bmV3IFN0YXRlTWFuYWdlcil7dGhpcy5wYXJzZXI9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGUsRXZhbHVhdG9yUHJlcHJvY2Vzc29yLm9wTWFwKSx4cmVmOnR9KTt0aGlzLnN0YXRlTWFuYWdlcj1uO3RoaXMubm9uUHJvY2Vzc2VkQXJncz1bXTt0aGlzLl9pc1BhdGhPcD0hMTt0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz0wfWdldCBzYXZlZFN0YXRlc0RlcHRoKCl7cmV0dXJuIHRoaXMuc3RhdGVNYW5hZ2VyLnN0YXRlU3RhY2subGVuZ3RofXJlYWQoZSl7bGV0IHQ9ZS5hcmdzO2Zvcig7Oyl7Y29uc3Qgbj10aGlzLnBhcnNlci5nZXRPYmooKTtpZihuIGluc3RhbmNlb2YgQ21kKXtjb25zdCBhPW4uY21kLHM9RXZhbHVhdG9yUHJlcHJvY2Vzc29yLm9wTWFwW2FdO2lmKCFzKXt3YXJuKGBVbmtub3duIGNvbW1hbmQgIiR7YX0iLmApO2NvbnRpbnVlfWNvbnN0IHI9cy5pZCxpPXMubnVtQXJncztsZXQgbz1udWxsIT09dD90Lmxlbmd0aDowO3RoaXMuX2lzUGF0aE9wfHwodGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MCk7dGhpcy5faXNQYXRoT3A9cj49U2UmJnI8PUVlO2lmKHMudmFyaWFibGVBcmdzKW8+aSYmaW5mbyhgQ29tbWFuZCAke2F9OiBleHBlY3RlZCBbMCwgJHtpfV0gYXJncywgYnV0IHJlY2VpdmVkICR7b30gYXJncy5gKTtlbHNle2lmKG8hPT1pKXtjb25zdCBlPXRoaXMubm9uUHJvY2Vzc2VkQXJncztmb3IoO28+aTspe2UucHVzaCh0LnNoaWZ0KCkpO28tLX1mb3IoO288aSYmMCE9PWUubGVuZ3RoOyl7bnVsbD09PXQmJih0PVtdKTt0LnVuc2hpZnQoZS5wb3AoKSk7bysrfX1pZihvPGkpe2NvbnN0IGU9YGNvbW1hbmQgJHthfTogZXhwZWN0ZWQgJHtpfSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtvfSBhcmdzLmA7aWYodGhpcy5faXNQYXRoT3AmJisrdGhpcy5fbnVtSW52YWxpZFBhdGhPUFM+RXZhbHVhdG9yUHJlcHJvY2Vzc29yLk1BWF9JTlZBTElEX1BBVEhfT1BTKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCAke2V9YCk7d2FybihgU2tpcHBpbmcgJHtlfWApO251bGwhPT10JiYodC5sZW5ndGg9MCk7Y29udGludWV9fXRoaXMucHJlcHJvY2Vzc0NvbW1hbmQocix0KTtlLmZuPXI7ZS5hcmdzPXQ7cmV0dXJuITB9aWYobj09PWxuKXJldHVybiExO2lmKG51bGwhPT1uKXtudWxsPT09dCYmKHQ9W10pO3QucHVzaChuKTtpZih0Lmxlbmd0aD4zMyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRvbyBtYW55IGFyZ3VtZW50cyIpfX19cHJlcHJvY2Vzc0NvbW1hbmQoZSx0KXtzd2l0Y2goMHxlKXtjYXNlIHllOnRoaXMuc3RhdGVNYW5hZ2VyLnNhdmUoKTticmVhaztjYXNlIHFlOnRoaXMuc3RhdGVNYW5hZ2VyLnJlc3RvcmUoKTticmVhaztjYXNlIHZlOnRoaXMuc3RhdGVNYW5hZ2VyLnRyYW5zZm9ybSh0KX19fWNsYXNzIERlZmF1bHRBcHBlYXJhbmNlRXZhbHVhdG9yIGV4dGVuZHMgRXZhbHVhdG9yUHJlcHJvY2Vzc29ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5ldyBTdHJpbmdTdHJlYW0oZSkpfXBhcnNlKCl7Y29uc3QgZT17Zm46MCxhcmdzOltdfSx0PXtmb250U2l6ZTowLGZvbnROYW1lOiIiLGZvbnRDb2xvcjpuZXcgVWludDhDbGFtcGVkQXJyYXkoMyl9O3RyeXtmb3IoOzspe2UuYXJncy5sZW5ndGg9MDtpZighdGhpcy5yZWFkKGUpKWJyZWFrO2lmKDAhPT10aGlzLnNhdmVkU3RhdGVzRGVwdGgpY29udGludWU7Y29uc3R7Zm46bixhcmdzOmF9PWU7c3dpdGNoKDB8bil7Y2FzZSBWZTpjb25zdFtlLG5dPWE7ZSBpbnN0YW5jZW9mIE5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiBuJiZuPjAmJih0LmZvbnRTaXplPW4pO2JyZWFrO2Nhc2UgZ3Q6Q29sb3JTcGFjZVV0aWxzLnJnYi5nZXRSZ2JJdGVtKGEsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIHB0OkNvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkl0ZW0oYSwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2Ugd3Q6Q29sb3JTcGFjZVV0aWxzLmNteWsuZ2V0UmdiSXRlbShhLDAsdC5mb250Q29sb3IsMCl9fX1jYXRjaChlKXt3YXJuKGBwYXJzZURlZmF1bHRBcHBlYXJhbmNlIC0gaWdub3JpbmcgZXJyb3JzOiAiJHtlfSIuYCl9cmV0dXJuIHR9fWZ1bmN0aW9uIHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvcihlKS5wYXJzZSgpfWNsYXNzIEFwcGVhcmFuY2VTdHJlYW1FdmFsdWF0b3IgZXh0ZW5kcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKGUpO3RoaXMuc3RyZWFtPWU7dGhpcy54cmVmPXQ7dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGU9bjt0aGlzLnJlc291cmNlcz1lLmRpY3Q/LmdldCgiUmVzb3VyY2VzIil9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119O2xldCB0PXtzY2FsZUZhY3RvcjoxLGZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKSxmaWxsQ29sb3JTcGFjZTpDb2xvclNwYWNlVXRpbHMuZ3JheX0sbj0hMTtjb25zdCBhPVtdO3RyeXtmb3IoOzspe2UuYXJncy5sZW5ndGg9MDtpZihufHwhdGhpcy5yZWFkKGUpKWJyZWFrO2NvbnN0e2ZuOnMsYXJnczpyfT1lO3N3aXRjaCgwfHMpe2Nhc2UgeWU6YS5wdXNoKHtzY2FsZUZhY3Rvcjp0LnNjYWxlRmFjdG9yLGZvbnRTaXplOnQuZm9udFNpemUsZm9udE5hbWU6dC5mb250TmFtZSxmb250Q29sb3I6dC5mb250Q29sb3Iuc2xpY2UoKSxmaWxsQ29sb3JTcGFjZTp0LmZpbGxDb2xvclNwYWNlfSk7YnJlYWs7Y2FzZSBxZTp0PWEucG9wKCl8fHQ7YnJlYWs7Y2FzZSBaZTpjb25zdCBlPVV0aWwudHJhbnNmb3JtKHRoaXMuc3RhdGVNYW5hZ2VyLnN0YXRlLmN0bSxyKTt0LnNjYWxlRmFjdG9yKj1NYXRoLmh5cG90KGVbMF0sZVsxXSk7YnJlYWs7Y2FzZSBWZTpjb25zdFtzLGldPXI7cyBpbnN0YW5jZW9mIE5hbWUmJih0LmZvbnROYW1lPXMubmFtZSk7Im51bWJlciI9PXR5cGVvZiBpJiZpPjAmJih0LmZvbnRTaXplPWkpO2JyZWFrO2Nhc2UgbHQ6dC5maWxsQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOnJbMF0seHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnRoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnRoaXMuX2xvY2FsQ29sb3JTcGFjZUNhY2hlfSk7YnJlYWs7Y2FzZSBodDp0LmZpbGxDb2xvclNwYWNlLmdldFJnYkl0ZW0ociwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgZ3Q6Q29sb3JTcGFjZVV0aWxzLnJnYi5nZXRSZ2JJdGVtKHIsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIHB0OkNvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkl0ZW0ociwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2Ugd3Q6Q29sb3JTcGFjZVV0aWxzLmNteWsuZ2V0UmdiSXRlbShyLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSB0dDpjYXNlIG50OmNhc2UgYXQ6Y2FzZSBzdDp0LmZvbnRTaXplKj10LnNjYWxlRmFjdG9yO249ITB9fX1jYXRjaChlKXt3YXJuKGBwYXJzZUFwcGVhcmFuY2VTdHJlYW0gLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX10aGlzLnN0cmVhbS5yZXNldCgpO2RlbGV0ZSB0LnNjYWxlRmFjdG9yO2RlbGV0ZSB0LmZpbGxDb2xvclNwYWNlO3JldHVybiB0fWdldCBfbG9jYWxDb2xvclNwYWNlQ2FjaGUoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9sb2NhbENvbG9yU3BhY2VDYWNoZSIsbmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe3JldHVybiBzaGFkb3codGhpcywiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsbmV3IFBERkZ1bmN0aW9uRmFjdG9yeSh7eHJlZjp0aGlzLnhyZWZ9KSl9fWZ1bmN0aW9uIGdldFBkZkNvbG9yKGUsdCl7aWYoZVswXT09PWVbMV0mJmVbMV09PT1lWzJdKXtyZXR1cm5gJHtudW1iZXJUb1N0cmluZyhlWzBdLzI1NSl9ICR7dD8iZyI6IkcifWB9cmV0dXJuIEFycmF5LmZyb20oZSxlPT5udW1iZXJUb1N0cmluZyhlLzI1NSkpLmpvaW4oIiAiKSsiICIrKHQ/InJnIjoiUkciKX1jbGFzcyBGYWtlVW5pY29kZUZvbnR7c3RhdGljI2V0PTE7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnhyZWY9ZTt0aGlzLndpZHRocz1udWxsO3RoaXMuZmlyc3RDaGFyPTEvMDt0aGlzLmxhc3RDaGFyPS0xLzA7dGhpcy5mb250RmFtaWx5PXQ7Y29uc3Qgbj1uZXcgT2Zmc2NyZWVuQ2FudmFzKDEsMSk7dGhpcy5jdHhNZWFzdXJlPW4uZ2V0Q29udGV4dCgiMmQiLHt3aWxsUmVhZEZyZXF1ZW50bHk6ITB9KTt0aGlzLmZvbnROYW1lPU5hbWUuZ2V0KGBJbnZhbGlkUERGanNGb250XyR7dH1fJHtGYWtlVW5pY29kZUZvbnQuI2V0Kyt9YCl9Z2V0IGZvbnREZXNjcmlwdG9yUmVmKCl7aWYoIUZha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWYpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtlLnNldElmTmFtZSgiVHlwZSIsIkZvbnREZXNjcmlwdG9yIik7ZS5zZXQoIkZvbnROYW1lIix0aGlzLmZvbnROYW1lKTtlLnNldCgiRm9udEZhbWlseSIsIk15cmlhZFBybyBSZWd1bGFyIik7ZS5zZXQoIkZvbnRCQm94IixbMCwwLDAsMF0pO2Uuc2V0SWZOYW1lKCJGb250U3RyZXRjaCIsIk5vcm1hbCIpO2Uuc2V0KCJGb250V2VpZ2h0Iiw0MDApO2Uuc2V0KCJJdGFsaWNBbmdsZSIsMCk7RmFrZVVuaWNvZGVGb250Ll9mb250RGVzY3JpcHRvclJlZj10aGlzLnhyZWYuZ2V0TmV3UGVyc2lzdGVudFJlZihlKX1yZXR1cm4gRmFrZVVuaWNvZGVGb250Ll9mb250RGVzY3JpcHRvclJlZn1nZXQgZGVzY2VuZGFudEZvbnRSZWYoKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZik7ZS5zZXQoIkJhc2VGb250Iix0aGlzLmZvbnROYW1lKTtlLnNldElmTmFtZSgiVHlwZSIsIkZvbnQiKTtlLnNldElmTmFtZSgiU3VidHlwZSIsIkNJREZvbnRUeXBlMCIpO2Uuc2V0SWZOYW1lKCJDSURUb0dJRE1hcCIsIklkZW50aXR5Iik7ZS5zZXQoIkZpcnN0Q2hhciIsdGhpcy5maXJzdENoYXIpO2Uuc2V0KCJMYXN0Q2hhciIsdGhpcy5sYXN0Q2hhcik7ZS5zZXQoIkZvbnREZXNjcmlwdG9yIix0aGlzLmZvbnREZXNjcmlwdG9yUmVmKTtlLnNldCgiRFciLDFlMyk7Y29uc3QgdD1bXSxuPVsuLi50aGlzLndpZHRoc10uc29ydCgpO2xldCBhPW51bGwscz1udWxsO2Zvcihjb25zdFtlLHJdb2YgbilpZihhKWlmKGU9PT1hK3MubGVuZ3RoKXMucHVzaChyKTtlbHNle3QucHVzaChhLHMpO2E9ZTtzPVtyXX1lbHNle2E9ZTtzPVtyXX1hJiZ0LnB1c2goYSxzKTtlLnNldCgiVyIsdCk7Y29uc3Qgcj1uZXcgRGljdCh0aGlzLnhyZWYpO3Iuc2V0KCJPcmRlcmluZyIsIklkZW50aXR5Iik7ci5zZXQoIlJlZ2lzdHJ5IiwiQWRvYmUiKTtyLnNldCgiU3VwcGxlbWVudCIsMCk7ZS5zZXQoIkNJRFN5c3RlbUluZm8iLHIpO3JldHVybiB0aGlzLnhyZWYuZ2V0TmV3UGVyc2lzdGVudFJlZihlKX1nZXQgYmFzZUZvbnRSZWYoKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZik7ZS5zZXQoIkJhc2VGb250Iix0aGlzLmZvbnROYW1lKTtlLnNldElmTmFtZSgiVHlwZSIsIkZvbnQiKTtlLnNldElmTmFtZSgiU3VidHlwZSIsIlR5cGUwIik7ZS5zZXRJZk5hbWUoIkVuY29kaW5nIiwiSWRlbnRpdHktSCIpO2Uuc2V0KCJEZXNjZW5kYW50Rm9udHMiLFt0aGlzLmRlc2NlbmRhbnRGb250UmVmXSk7ZS5zZXRJZk5hbWUoIlRvVW5pY29kZSIsIklkZW50aXR5LUgiKTtyZXR1cm4gdGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKSx0PW5ldyBEaWN0KHRoaXMueHJlZik7dC5zZXQodGhpcy5mb250TmFtZS5uYW1lLHRoaXMuYmFzZUZvbnRSZWYpO2Uuc2V0KCJGb250Iix0KTtyZXR1cm4gZX1fY3JlYXRlQ29udGV4dCgpe3RoaXMud2lkdGhzPW5ldyBNYXA7dGhpcy5jdHhNZWFzdXJlLmZvbnQ9YDEwMDBweCAke3RoaXMuZm9udEZhbWlseX1gO3JldHVybiB0aGlzLmN0eE1lYXN1cmV9Y3JlYXRlRm9udFJlc291cmNlcyhlKXtjb25zdCB0PXRoaXMuX2NyZWF0ZUNvbnRleHQoKTtmb3IoY29uc3QgbiBvZiBlLnNwbGl0KC9cclxuP3xcbi8pKWZvcihjb25zdCBlIG9mIG4uc3BsaXQoIiIpKXtjb25zdCBuPWUuY2hhckNvZGVBdCgwKTtpZih0aGlzLndpZHRocy5oYXMobikpY29udGludWU7Y29uc3QgYT10Lm1lYXN1cmVUZXh0KGUpLHM9TWF0aC5jZWlsKGEud2lkdGgpO3RoaXMud2lkdGhzLnNldChuLHMpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKG4sdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgobix0aGlzLmxhc3RDaGFyKX1yZXR1cm4gdGhpcy5yZXNvdXJjZXN9c3RhdGljIGdldEZpcnN0UG9zaXRpb25JbmZvKGUsdCxuKXtjb25zdFthLHMscixpXT1lO2xldCBvPXItYSxsPWktczt0JTE4MCE9MCYmKFtvLGxdPVtsLG9dKTtjb25zdCBmPTEuMzUqbjtyZXR1cm57Y29vcmRzOlswLGwrLjM1Km4tZl0sYmJveDpbMCwwLG8sbF0sbWF0cml4OjAhPT10P2dldFJvdGF0aW9uTWF0cml4KHQsbCxmKTp2b2lkIDB9fWNyZWF0ZUFwcGVhcmFuY2UoZSx0LG4sYSxzLHIpe2NvbnN0IGk9dGhpcy5fY3JlYXRlQ29udGV4dCgpLG89W107bGV0IGw9LTEvMDtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9cclxuP3xcbi8pKXtvLnB1c2godCk7Y29uc3QgZT1pLm1lYXN1cmVUZXh0KHQpLndpZHRoO2w9TWF0aC5tYXgobCxlKTtmb3IoY29uc3QgZSBvZiBjb2RlUG9pbnRJdGVyKHQpKXtjb25zdCB0PVN0cmluZy5mcm9tQ29kZVBvaW50KGUpO2xldCBuPXRoaXMud2lkdGhzLmdldChlKTtpZih2b2lkIDA9PT1uKXtjb25zdCBhPWkubWVhc3VyZVRleHQodCk7bj1NYXRoLmNlaWwoYS53aWR0aCk7dGhpcy53aWR0aHMuc2V0KGUsbik7dGhpcy5maXJzdENoYXI9TWF0aC5taW4oZSx0aGlzLmZpcnN0Q2hhcik7dGhpcy5sYXN0Q2hhcj1NYXRoLm1heChlLHRoaXMubGFzdENoYXIpfX19bCo9YS8xZTM7Y29uc3RbZixjLGgsdV09dDtsZXQgbT1oLWYscD11LWM7biUxODAhPTAmJihbbSxwXT1bcCxtXSk7Y29uc3QgZD1sPm0/bS9sOjE7bGV0IGc9MTtjb25zdCBiPTEuMzUqYSx3PS4zNSphLGo9YipvLmxlbmd0aDtqPnAmJihnPXAvaik7Y29uc3Qgaz1hKk1hdGgubWluKGQsZykseT1bInEiLGAwIDAgJHtudW1iZXJUb1N0cmluZyhtKX0gJHtudW1iZXJUb1N0cmluZyhwKX0gcmUgVyBuYCwiQlQiLGAxIDAgMCAxIDAgJHtudW1iZXJUb1N0cmluZyhwK3cpfSBUbSAwIFRjICR7Z2V0UGRmQ29sb3IocywhMCl9YCxgLyR7dGhpcy5mb250TmFtZS5uYW1lfSAke251bWJlclRvU3RyaW5nKGspfSBUZmBdLHtyZXNvdXJjZXM6cX09dGhpcztpZigxIT09KHI9Im51bWJlciI9PXR5cGVvZiByJiZyPj0wJiZyPD0xP3I6MSkpe3kucHVzaCgiL1IwIGdzIik7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpLHQ9bmV3IERpY3QodGhpcy54cmVmKTt0LnNldCgiY2EiLHIpO3Quc2V0KCJDQSIscik7dC5zZXRJZk5hbWUoIlR5cGUiLCJFeHRHU3RhdGUiKTtlLnNldCgiUjAiLHQpO3Euc2V0KCJFeHRHU3RhdGUiLGUpfWNvbnN0IHY9bnVtYmVyVG9TdHJpbmcoYik7Zm9yKGNvbnN0IGUgb2Ygbyl5LnB1c2goYDAgLSR7dn0gVGQgPCR7c3RyaW5nVG9VVEYxNkhleFN0cmluZyhlKX0+IFRqYCk7eS5wdXNoKCJFVCIsIlEiKTtjb25zdCBTPXkuam9pbigiXG4iKSx4PW5ldyBEaWN0KHRoaXMueHJlZik7eC5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7eC5zZXRJZk5hbWUoIlR5cGUiLCJYT2JqZWN0Iik7eC5zZXQoIkJCb3giLFswLDAsbSxwXSk7eC5zZXQoIkxlbmd0aCIsUy5sZW5ndGgpO3guc2V0KCJSZXNvdXJjZXMiLHEpO2lmKG4pe2NvbnN0IGU9Z2V0Um90YXRpb25NYXRyaXgobixtLHApO3guc2V0KCJNYXRyaXgiLGUpfXJldHVybiBuZXcgU3RyaW5nU3RyZWFtKFMseCl9fWNvbnN0IEVpPVsibS9kIiwibS9kL3l5IiwibW0vZGQveXkiLCJtbS95eSIsImQtbW1tIiwiZC1tbW0teXkiLCJkZC1tbW0teXkiLCJ5eS1tbS1kZCIsIm1tbS15eSIsIm1tbW0teXkiLCJtbW0gZCwgeXl5eSIsIm1tbW0gZCwgeXl5eSIsIm0vZC95eSBoOk1NIHR0IiwibS9kL3l5IEhIOk1NIl0sX2k9WyJISDpNTSIsImg6TU0gdHQiLCJISDpNTTpzcyIsImg6TU06c3MgdHQiXTtjbGFzcyBOYW1lT3JOdW1iZXJUcmVle2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnJvb3Q9ZTt0aGlzLnhyZWY9dDt0aGlzLl90eXBlPW59Z2V0QWxsKGU9ITEpe2NvbnN0IHQ9bmV3IE1hcDtpZighdGhpcy5yb290KXJldHVybiB0O2NvbnN0IG49dGhpcy54cmVmLGE9bmV3IFJlZlNldDt0aGlzLnJvb3QgaW5zdGFuY2VvZiBSZWYmJmEucHV0KHRoaXMucm9vdCk7Y29uc3Qgcz1bdGhpcy5yb290XTtmb3IoY29uc3QgciBvZiBzKXtjb25zdCBpPW4uZmV0Y2hJZlJlZihyKTtpZighKGkgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtpZihpLmhhcygiS2lkcyIpKXtjb25zdCBlPWkuZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7Zm9yKGNvbnN0IHQgb2YgZSl7aWYodCBpbnN0YW5jZW9mIFJlZil7aWYoYS5oYXModCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBEdXBsaWNhdGUgZW50cnkgaW4gIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7YS5wdXQodCl9cy5wdXNoKHQpfWNvbnRpbnVlfWNvbnN0IG89aS5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShvKSlmb3IobGV0IGE9MCxzPW8ubGVuZ3RoO2E8czthKz0yKXQuc2V0KGU/b1thXTpuLmZldGNoSWZSZWYob1thXSksZT9vW2ErMV06bi5mZXRjaElmUmVmKG9bYSsxXSkpfXJldHVybiB0fWdldFJhdyhlKXtpZighdGhpcy5yb290KXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy54cmVmO2xldCBuPXQuZmV0Y2hJZlJlZih0aGlzLnJvb3QpLGE9MDtmb3IoO24uaGFzKCJLaWRzIik7KXtpZigrK2E+MTApe3dhcm4oYFNlYXJjaCBkZXB0aCBsaW1pdCByZWFjaGVkIGZvciAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTtyZXR1cm4gbnVsbH1jb25zdCBzPW4uZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkocykpcmV0dXJuIG51bGw7bGV0IHI9MCxpPXMubGVuZ3RoLTE7Zm9yKDtyPD1pOyl7Y29uc3QgYT1yK2k+PjEsbz10LmZldGNoSWZSZWYoc1thXSksbD1vLmdldCgiTGltaXRzIik7aWYoZTx0LmZldGNoSWZSZWYobFswXSkpaT1hLTE7ZWxzZXtpZighKGU+dC5mZXRjaElmUmVmKGxbMV0pKSl7bj1vO2JyZWFrfXI9YSsxfX1pZihyPmkpcmV0dXJuIG51bGx9Y29uc3Qgcz1uLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF5KHMpKXtsZXQgbj0wLGE9cy5sZW5ndGgtMjtmb3IoO248PWE7KXtjb25zdCByPW4rYT4+MSxpPXIrKDEmciksbz10LmZldGNoSWZSZWYoc1tpXSk7aWYoZTxvKWE9aS0yO2Vsc2V7aWYoIShlPm8pKXJldHVybiBzW2krMV07bj1pKzJ9fX1yZXR1cm4gbnVsbH1nZXQoZSl7cmV0dXJuIHRoaXMueHJlZi5mZXRjaElmUmVmKHRoaXMuZ2V0UmF3KGUpKX19Y2xhc3MgTmFtZVRyZWUgZXh0ZW5kcyBOYW1lT3JOdW1iZXJUcmVle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LCJOYW1lcyIpfX1jbGFzcyBOdW1iZXJUcmVlIGV4dGVuZHMgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwiTnVtcyIpfX1mdW5jdGlvbiBjbGVhckdsb2JhbENhY2hlcygpeyFmdW5jdGlvbiBjbGVhclBhdHRlcm5DYWNoZXMoKXtKbj8uY2xlYXIoKX0oKTshZnVuY3Rpb24gY2xlYXJQcmltaXRpdmVDYWNoZXMoKXtmbj1PYmplY3QuY3JlYXRlKG51bGwpO2NuPU9iamVjdC5jcmVhdGUobnVsbCk7aG49T2JqZWN0LmNyZWF0ZShudWxsKX0oKTshZnVuY3Rpb24gY2xlYXJVbmljb2RlQ2FjaGVzKCl7cWEuY2xlYXIoKX0oKTtXYXNtSW1hZ2UuY2xlYW51cCgpfWNsYXNzIEZpbGVTcGVje2NvbnN0cnVjdG9yKGUpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KXt0aGlzLnJvb3Q9ZTtlLmhhcygiRlMiKSYmKHRoaXMuZnM9ZS5nZXQoIkZTIikpO2UuaGFzKCJSRiIpJiZ3YXJuKCJSZWxhdGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKX19Z2V0IGZpbGVuYW1lKCl7Y29uc3QgZT1GaWxlU3BlYy5waWNrUGxhdGZvcm1JdGVtKHRoaXMucm9vdCk7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlLCEwKS5yZXBsYWNlQWxsKCJcXFxcIiwiXFwiKS5yZXBsYWNlQWxsKCJcXC8iLCIvIikucmVwbGFjZUFsbCgiXFwiLCIvIik6IiJ9Z2V0IGRlc2NyaXB0aW9uKCl7Y29uc3QgZT10aGlzLnJvb3Q/LmdldCgiRGVzYyIpO3JldHVybiBlJiYic3RyaW5nIj09dHlwZW9mIGU/c3RyaW5nVG9QREZTdHJpbmcoZSk6IiJ9Z2V0IHNlcmlhbGl6YWJsZSgpe2NvbnN0e2ZpbGVuYW1lOmUsZGVzY3JpcHRpb246dH09dGhpcztyZXR1cm57cmF3RmlsZW5hbWU6ZSxmaWxlbmFtZToobj1lLG4uc3Vic3RyaW5nKG4ubGFzdEluZGV4T2YoIi8iKSsxKSl8fCJ1bm5hbWVkIixkZXNjcmlwdGlvbjp0fTt2YXIgbn1zdGF0aWMgcGlja1BsYXRmb3JtSXRlbShlLHQ9ITEpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdCBuIG9mWyJVRiIsIkYiLCJVbml4IiwiTWFjIiwiRE9TIl0paWYoZS5oYXMobikpcmV0dXJuIHQ/ZS5nZXRSYXcobik6ZS5nZXQobik7cmV0dXJuIG51bGx9c3RhdGljIGhhc0VtYmVkZGVkRmlsZShlKXtyZXR1cm4gdGhpcy5waWNrUGxhdGZvcm1JdGVtKGUuZ2V0KCJFRiIpKWluc3RhbmNlb2YgQmFzZVN0cmVhbX1zdGF0aWMgcmVhZENvbnRlbnQoZSl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLnBpY2tQbGF0Zm9ybUl0ZW0oZS5nZXQoIkVGIikpO2lmKCEodCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXt3YXJuKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gcG9pbnRzIHRvIG5vbi1leGlzdGluZy9pbnZhbGlkIGNvbnRlbnQiKTtyZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5yZWFkU3RyZWFtQ29udGVudCh0KX1zdGF0aWMgcmVhZFN0cmVhbUNvbnRlbnQoZSl7Y29uc3QgdD1lLmRpY3Q/LnhyZWY/LmVuY3J5cHQ7aWYobnVsbD09PXQ/LmVuY3J5cHRpb25LZXkpdGhyb3cgbmV3IFBhc3N3b3JkRXhjZXB0aW9uKCJObyBwYXNzd29yZCBnaXZlbiIsZW4pO3JldHVybiBlLmdldEJ5dGVzKCl9fWNvbnN0IHppPTAsV2k9LTIsWGk9LTMsS2k9LTQsR2k9LTUsVmk9LTYsJGk9LTk7ZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGUsdCl7Y29uc3Qgbj1lW3RdO3JldHVybiIgIj09PW58fCJcbiI9PT1ufHwiXHIiPT09bnx8Ilx0Ij09PW59Y2xhc3MgWE1MUGFyc2VyQmFzZXtzdGF0aWMgZ2V0IF9lbnRpdHlSZWdleCgpe3JldHVybiBzaGFkb3codGhpcywiX2VudGl0eVJlZ2V4IiwvJig/OiN4KFteO10rKXwjKFteO10rKXwoW147XSspKTsvZyl9X3Jlc29sdmVFbnRpdGllcyhlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKFhNTFBhcnNlckJhc2UuX2VudGl0eVJlZ2V4LChlLHQsbixhKT0+e2lmKHQpcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHQsMTYpKTtpZihuKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludChuLDEwKSk7c3dpdGNoKGEpe2Nhc2UibHQiOnJldHVybiI8IjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlInF1b3QiOnJldHVybiciJztjYXNlImFwb3MiOnJldHVybiInIn1yZXR1cm4gdGhpcy5vblJlc29sdmVFbnRpdHkoYSl9KX1fcGFyc2VDb250ZW50KGUsdCl7Y29uc3Qgbj1bXTtsZXQgYT10O2Z1bmN0aW9uIHNraXBXcygpe2Zvcig7YTxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsYSk7KSsrYX1mb3IoO2E8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxhKSYmIj4iIT09ZVthXSYmIi8iIT09ZVthXTspKythO2NvbnN0IHM9ZS5zdWJzdHJpbmcodCxhKTtza2lwV3MoKTtmb3IoO2E8ZS5sZW5ndGgmJiI+IiE9PWVbYV0mJiIvIiE9PWVbYV0mJiI/IiE9PWVbYV07KXtza2lwV3MoKTtsZXQgdD0iIixzPSIiO2Zvcig7YTxlLmxlbmd0aCYmIWlzV2hpdGVzcGFjZShlLGEpJiYiPSIhPT1lW2FdOyl7dCs9ZVthXTsrK2F9c2tpcFdzKCk7aWYoIj0iIT09ZVthXSlyZXR1cm4gbnVsbDsrK2E7c2tpcFdzKCk7Y29uc3Qgcj1lW2FdO2lmKCciJyE9PXImJiInIiE9PXIpcmV0dXJuIG51bGw7Y29uc3QgaT1lLmluZGV4T2YociwrK2EpO2lmKGk8MClyZXR1cm4gbnVsbDtzPWUuc3Vic3RyaW5nKGEsaSk7bi5wdXNoKHtuYW1lOnQsdmFsdWU6dGhpcy5fcmVzb2x2ZUVudGl0aWVzKHMpfSk7YT1pKzE7c2tpcFdzKCl9cmV0dXJue25hbWU6cyxhdHRyaWJ1dGVzOm4scGFyc2VkOmEtdH19X3BhcnNlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGUsdCl7bGV0IG49dDtmb3IoO248ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxuKSYmIj4iIT09ZVtuXSYmIj8iIT09ZVtuXSYmIi8iIT09ZVtuXTspKytuO2NvbnN0IGE9ZS5zdWJzdHJpbmcodCxuKTshZnVuY3Rpb24gc2tpcFdzKCl7Zm9yKDtuPGUubGVuZ3RoJiZpc1doaXRlc3BhY2UoZSxuKTspKytufSgpO2NvbnN0IHM9bjtmb3IoO248ZS5sZW5ndGgmJigiPyIhPT1lW25dfHwiPiIhPT1lW24rMV0pOykrK247cmV0dXJue25hbWU6YSx2YWx1ZTplLnN1YnN0cmluZyhzLG4pLHBhcnNlZDpuLXR9fXBhcnNlWG1sKGUpe2xldCB0PTA7Zm9yKDt0PGUubGVuZ3RoOyl7bGV0IG49dDtpZigiPCI9PT1lW3RdKXsrK247bGV0IHQ7c3dpdGNoKGVbbl0pe2Nhc2UiLyI6KytuO3Q9ZS5pbmRleE9mKCI+IixuKTtpZih0PDApe3RoaXMub25FcnJvcigkaSk7cmV0dXJufXRoaXMub25FbmRFbGVtZW50KGUuc3Vic3RyaW5nKG4sdCkpO249dCsxO2JyZWFrO2Nhc2UiPyI6KytuO2NvbnN0IGE9dGhpcy5fcGFyc2VQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oZSxuKTtpZigiPz4iIT09ZS5zdWJzdHJpbmcobithLnBhcnNlZCxuK2EucGFyc2VkKzIpKXt0aGlzLm9uRXJyb3IoWGkpO3JldHVybn10aGlzLm9uUGkoYS5uYW1lLGEudmFsdWUpO24rPWEucGFyc2VkKzI7YnJlYWs7Y2FzZSIhIjppZigiLS0iPT09ZS5zdWJzdHJpbmcobisxLG4rMykpe3Q9ZS5pbmRleE9mKCItLVx4M2UiLG4rMyk7aWYodDwwKXt0aGlzLm9uRXJyb3IoR2kpO3JldHVybn10aGlzLm9uQ29tbWVudChlLnN1YnN0cmluZyhuKzMsdCkpO249dCszfWVsc2UgaWYoIltDREFUQVsiPT09ZS5zdWJzdHJpbmcobisxLG4rOCkpe3Q9ZS5pbmRleE9mKCJdXT4iLG4rOCk7aWYodDwwKXt0aGlzLm9uRXJyb3IoV2kpO3JldHVybn10aGlzLm9uQ2RhdGEoZS5zdWJzdHJpbmcobis4LHQpKTtuPXQrM31lbHNle2lmKCJET0NUWVBFIiE9PWUuc3Vic3RyaW5nKG4rMSxuKzgpKXt0aGlzLm9uRXJyb3IoVmkpO3JldHVybn17Y29uc3QgYT1lLmluZGV4T2YoIlsiLG4rOCk7bGV0IHM9ITE7dD1lLmluZGV4T2YoIj4iLG4rOCk7aWYodDwwKXt0aGlzLm9uRXJyb3IoS2kpO3JldHVybn1pZihhPjAmJnQ+YSl7dD1lLmluZGV4T2YoIl0+IixuKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKEtpKTtyZXR1cm59cz0hMH1jb25zdCByPWUuc3Vic3RyaW5nKG4rOCx0KyhzPzE6MCkpO3RoaXMub25Eb2N0eXBlKHIpO249dCsocz8yOjEpfX1icmVhaztkZWZhdWx0OmNvbnN0IHM9dGhpcy5fcGFyc2VDb250ZW50KGUsbik7aWYobnVsbD09PXMpe3RoaXMub25FcnJvcihWaSk7cmV0dXJufWxldCByPSExO2lmKCIvPiI9PT1lLnN1YnN0cmluZyhuK3MucGFyc2VkLG4rcy5wYXJzZWQrMikpcj0hMDtlbHNlIGlmKCI+IiE9PWUuc3Vic3RyaW5nKG4rcy5wYXJzZWQsbitzLnBhcnNlZCsxKSl7dGhpcy5vbkVycm9yKCRpKTtyZXR1cm59dGhpcy5vbkJlZ2luRWxlbWVudChzLm5hbWUscy5hdHRyaWJ1dGVzLHIpO24rPXMucGFyc2VkKyhyPzI6MSl9fWVsc2V7Zm9yKDtuPGUubGVuZ3RoJiYiPCIhPT1lW25dOyluKys7Y29uc3QgYT1lLnN1YnN0cmluZyh0LG4pO3RoaXMub25UZXh0KHRoaXMuX3Jlc29sdmVFbnRpdGllcyhhKSl9dD1ufX1vblJlc29sdmVFbnRpdHkoZSl7cmV0dXJuYCYke2V9O2B9b25QaShlLHQpe31vbkNvbW1lbnQoZSl7fW9uQ2RhdGEoZSl7fW9uRG9jdHlwZShlKXt9b25UZXh0KGUpe31vbkJlZ2luRWxlbWVudChlLHQsbil7fW9uRW5kRWxlbWVudChlKXt9b25FcnJvcihlKXt9fWNsYXNzIFNpbXBsZURPTU5vZGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5vZGVOYW1lPWU7dGhpcy5ub2RlVmFsdWU9dDtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicGFyZW50Tm9kZSIse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KX1nZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/LlswXX1nZXQgbmV4dFNpYmxpbmcoKXtjb25zdCBlPXRoaXMucGFyZW50Tm9kZS5jaGlsZE5vZGVzO2lmKCFlKXJldHVybjtjb25zdCB0PWUuaW5kZXhPZih0aGlzKTtyZXR1cm4tMSE9PXQ/ZVt0KzFdOnZvaWQgMH1nZXQgdGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzP3RoaXMuY2hpbGROb2Rlcy5tYXAoZT0+ZS50ZXh0Q29udGVudCkuam9pbigiIik6dGhpcy5ub2RlVmFsdWV8fCIifWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXN8fFtdfWhhc0NoaWxkTm9kZXMoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzPy5sZW5ndGg+MH1zZWFyY2hOb2RlKGUsdCl7aWYodD49ZS5sZW5ndGgpcmV0dXJuIHRoaXM7Y29uc3Qgbj1lW3RdO2lmKG4ubmFtZS5zdGFydHNXaXRoKCIjIikmJnQ8ZS5sZW5ndGgtMSlyZXR1cm4gdGhpcy5zZWFyY2hOb2RlKGUsdCsxKTtjb25zdCBhPVtdO2xldCBzPXRoaXM7Zm9yKDs7KXtpZihuLm5hbWU9PT1zLm5vZGVOYW1lKXtpZigwIT09bi5wb3Mpe2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbnVsbDt7Y29uc3Rbcl09YS5wb3AoKTtsZXQgaT0wO2Zvcihjb25zdCBhIG9mIHIuY2hpbGROb2RlcylpZihuLm5hbWU9PT1hLm5vZGVOYW1lKXtpZihpPT09bi5wb3MpcmV0dXJuIGEuc2VhcmNoTm9kZShlLHQrMSk7aSsrfXJldHVybiBzLnNlYXJjaE5vZGUoZSx0KzEpfX17Y29uc3Qgbj1zLnNlYXJjaE5vZGUoZSx0KzEpO2lmKG51bGwhPT1uKXJldHVybiBufX1pZihzLmNoaWxkTm9kZXM/Lmxlbmd0aD4wKXthLnB1c2goW3MsMF0pO3M9cy5jaGlsZE5vZGVzWzBdfWVsc2V7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO2Zvcig7MCE9PWEubGVuZ3RoOyl7Y29uc3RbZSx0XT1hLnBvcCgpLG49dCsxO2lmKG48ZS5jaGlsZE5vZGVzLmxlbmd0aCl7YS5wdXNoKFtlLG5dKTtzPWUuY2hpbGROb2Rlc1tuXTticmVha319aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsfX19ZHVtcChlKXtpZigiI3RleHQiIT09dGhpcy5ub2RlTmFtZSl7ZS5wdXNoKGA8JHt0aGlzLm5vZGVOYW1lfWApO2lmKHRoaXMuYXR0cmlidXRlcylmb3IoY29uc3QgdCBvZiB0aGlzLmF0dHJpYnV0ZXMpZS5wdXNoKGAgJHt0Lm5hbWV9PSIke2VuY29kZVRvWG1sU3RyaW5nKHQudmFsdWUpfSJgKTtpZih0aGlzLmhhc0NoaWxkTm9kZXMoKSl7ZS5wdXNoKCI+Iik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5jaGlsZE5vZGVzKXQuZHVtcChlKTtlLnB1c2goYDwvJHt0aGlzLm5vZGVOYW1lfT5gKX1lbHNlIHRoaXMubm9kZVZhbHVlP2UucHVzaChgPiR7ZW5jb2RlVG9YbWxTdHJpbmcodGhpcy5ub2RlVmFsdWUpfTwvJHt0aGlzLm5vZGVOYW1lfT5gKTplLnB1c2goIi8+Iil9ZWxzZSBlLnB1c2goZW5jb2RlVG9YbWxTdHJpbmcodGhpcy5ub2RlVmFsdWUpKX19Y2xhc3MgU2ltcGxlWE1MUGFyc2VyIGV4dGVuZHMgWE1MUGFyc2VyQmFzZXtjb25zdHJ1Y3Rvcih7aGFzQXR0cmlidXRlczplPSExLGxvd2VyQ2FzZU5hbWU6dD0hMX0pe3N1cGVyKCk7dGhpcy5fY3VycmVudEZyYWdtZW50PW51bGw7dGhpcy5fc3RhY2s9bnVsbDt0aGlzLl9lcnJvckNvZGU9emk7dGhpcy5faGFzQXR0cmlidXRlcz1lO3RoaXMuX2xvd2VyQ2FzZU5hbWU9dH1wYXJzZUZyb21TdHJpbmcoZSl7dGhpcy5fY3VycmVudEZyYWdtZW50PVtdO3RoaXMuX3N0YWNrPVtdO3RoaXMuX2Vycm9yQ29kZT16aTt0aGlzLnBhcnNlWG1sKGUpO2lmKHRoaXMuX2Vycm9yQ29kZSE9PXppKXJldHVybjtjb25zdFt0XT10aGlzLl9jdXJyZW50RnJhZ21lbnQ7cmV0dXJuIHQ/e2RvY3VtZW50RWxlbWVudDp0fTp2b2lkIDB9b25UZXh0KGUpe2lmKGZ1bmN0aW9uIGlzV2hpdGVzcGFjZVN0cmluZyhlKXtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspaWYoIWlzV2hpdGVzcGFjZShlLHQpKXJldHVybiExO3JldHVybiEwfShlKSlyZXR1cm47Y29uc3QgdD1uZXcgU2ltcGxlRE9NTm9kZSgiI3RleHQiLGUpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHQpfW9uQ2RhdGEoZSl7Y29uc3QgdD1uZXcgU2ltcGxlRE9NTm9kZSgiI3RleHQiLGUpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHQpfW9uQmVnaW5FbGVtZW50KGUsdCxuKXt0aGlzLl9sb3dlckNhc2VOYW1lJiYoZT1lLnRvTG93ZXJDYXNlKCkpO2NvbnN0IGE9bmV3IFNpbXBsZURPTU5vZGUoZSk7YS5jaGlsZE5vZGVzPVtdO3RoaXMuX2hhc0F0dHJpYnV0ZXMmJihhLmF0dHJpYnV0ZXM9dCk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2goYSk7aWYoIW4pe3RoaXMuX3N0YWNrLnB1c2godGhpcy5fY3VycmVudEZyYWdtZW50KTt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9YS5jaGlsZE5vZGVzfX1vbkVuZEVsZW1lbnQoZSl7dGhpcy5fY3VycmVudEZyYWdtZW50PXRoaXMuX3N0YWNrLnBvcCgpfHxbXTtjb25zdCB0PXRoaXMuX2N1cnJlbnRGcmFnbWVudC5hdCgtMSk7aWYoIXQpcmV0dXJuIG51bGw7Zm9yKGNvbnN0IGUgb2YgdC5jaGlsZE5vZGVzKWUucGFyZW50Tm9kZT10O3JldHVybiB0fW9uRXJyb3IoZSl7dGhpcy5fZXJyb3JDb2RlPWV9fWNsYXNzIE1ldGFkYXRhUGFyc2Vye2NvbnN0cnVjdG9yKGUpe2U9dGhpcy5fcmVwYWlyKGUpO2NvbnN0IHQ9bmV3IFNpbXBsZVhNTFBhcnNlcih7bG93ZXJDYXNlTmFtZTohMH0pLnBhcnNlRnJvbVN0cmluZyhlKTt0aGlzLl9tZXRhZGF0YU1hcD1uZXcgTWFwO3RoaXMuX2RhdGE9ZTt0JiZ0aGlzLl9wYXJzZSh0KX1fcmVwYWlyKGUpe3JldHVybiBlLnJlcGxhY2UoL15bXjxdKy8sIiIpLnJlcGxhY2VBbGwoLz5cXDM3NlxcMzc3KFtePF0rKS9nLGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj10LnJlcGxhY2VBbGwoL1xcKFswLTNdKShbMC03XSkoWzAtN10pL2csZnVuY3Rpb24oZSx0LG4sYSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoNjQqdCs4Km4rMSphKX0pLnJlcGxhY2VBbGwoLyYoYW1wfGFwb3N8Z3R8bHR8cXVvdCk7L2csZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlImFwb3MiOnJldHVybiInIjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJsdCI6cmV0dXJuIjwiO2Nhc2UicXVvdCI6cmV0dXJuJyInfXRocm93IG5ldyBFcnJvcihgX3JlcGFpcjogJHt0fSBpc24ndCBkZWZpbmVkLmApfSksYT1bIj4iXTtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKz0yKXtjb25zdCB0PTI1NipuLmNoYXJDb2RlQXQoZSkrbi5jaGFyQ29kZUF0KGUrMSk7dD49MzImJnQ8MTI3JiY2MCE9PXQmJjYyIT09dCYmMzghPT10P2EucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTphLnB1c2goIiYjeCIrKDY1NTM2K3QpLnRvU3RyaW5nKDE2KS5zdWJzdHJpbmcoMSkrIjsiKX1yZXR1cm4gYS5qb2luKCIiKX0pfV9nZXRTZXF1ZW5jZShlKXtjb25zdCB0PWUubm9kZU5hbWU7cmV0dXJuInJkZjpiYWciIT09dCYmInJkZjpzZXEiIT09dCYmInJkZjphbHQiIT09dD9udWxsOmUuY2hpbGROb2Rlcy5maWx0ZXIoZT0+InJkZjpsaSI9PT1lLm5vZGVOYW1lKX1fcGFyc2VBcnJheShlKXtpZighZS5oYXNDaGlsZE5vZGVzKCkpcmV0dXJuO2NvbnN0W3RdPWUuY2hpbGROb2RlcyxuPXRoaXMuX2dldFNlcXVlbmNlKHQpfHxbXTt0aGlzLl9tZXRhZGF0YU1hcC5zZXQoZS5ub2RlTmFtZSxuLm1hcChlPT5lLnRleHRDb250ZW50LnRyaW0oKSkpfV9wYXJzZShlKXtsZXQgdD1lLmRvY3VtZW50RWxlbWVudDtpZigicmRmOnJkZiIhPT10Lm5vZGVOYW1lKXt0PXQuZmlyc3RDaGlsZDtmb3IoO3QmJiJyZGY6cmRmIiE9PXQubm9kZU5hbWU7KXQ9dC5uZXh0U2libGluZ31pZih0JiYicmRmOnJkZiI9PT10Lm5vZGVOYW1lJiZ0Lmhhc0NoaWxkTm9kZXMoKSlmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpaWYoInJkZjpkZXNjcmlwdGlvbiI9PT1lLm5vZGVOYW1lKWZvcihjb25zdCB0IG9mIGUuY2hpbGROb2Rlcyl7Y29uc3QgZT10Lm5vZGVOYW1lO3N3aXRjaChlKXtjYXNlIiN0ZXh0Ijpjb250aW51ZTtjYXNlImRjOmNyZWF0b3IiOmNhc2UiZGM6c3ViamVjdCI6dGhpcy5fcGFyc2VBcnJheSh0KTtjb250aW51ZX10aGlzLl9tZXRhZGF0YU1hcC5zZXQoZSx0LnRleHRDb250ZW50LnRyaW0oKSl9fWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cGFyc2VkRGF0YTp0aGlzLl9tZXRhZGF0YU1hcCxyYXdEYXRhOnRoaXMuX2RhdGF9fX1mdW5jdGlvbiBnZXRTb3VuZEZvcm1hdChlKXtpZighZXx8ZS5oYXMoIkNPIikpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmdldCgiUiIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpfHx0PD0wKXJldHVybiBudWxsO2NvbnN0IG49ZS5nZXQoIkMiKT8/MTtpZighTnVtYmVyLmlzSW50ZWdlcihuKXx8bjwxfHxuPjIpcmV0dXJuIG51bGw7Y29uc3QgYT1lLmdldCgiQiIpPz84O2lmKDghPT1hJiYxNiE9PWEpcmV0dXJuIG51bGw7Y29uc3Qgcz1lLmdldCgiRSIpO2xldCByPSJSYXciO3ZvaWQgMCE9PXMmJihyPXMgaW5zdGFuY2VvZiBOYW1lP3MubmFtZTpudWxsKTtyZXR1cm4iUmF3IiE9PXImJiJTaWduZWQiIT09cj9udWxsOntjaGFubmVsczpuLHNhbXBsZVJhdGU6dCxiaXRzUGVyU2FtcGxlOmEsZW5jb2Rpbmc6cn19Y29uc3QgWWk9MSxKaT0yLFFpPTMsWmk9NCxlbz01O2NsYXNzIFN0cnVjdFRyZWVSb290e2tpZFJlZlRvUG9zaXRpb249dm9pZCAwO3BhcmVudFRyZWU9bnVsbDtyb2xlTWFwPW5ldyBNYXA7c3RydWN0UGFyZW50SWRzPW51bGw7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMueHJlZj1lO3RoaXMuZGljdD10O3RoaXMucmVmPW4gaW5zdGFuY2VvZiBSZWY/bjpudWxsO2NvbnN0IGE9dC5nZXQoIlJvbGVNYXAiKTtpZihhIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3RbZSx0XW9mIGEpdCBpbnN0YW5jZW9mIE5hbWUmJnRoaXMucm9sZU1hcC5zZXQoZSx0Lm5hbWUpO2NvbnN0IHM9dC5nZXRSYXcoIlBhcmVudFRyZWUiKTtzJiYodGhpcy5wYXJlbnRUcmVlPW5ldyBOdW1iZXJUcmVlKHMsZSkpfWdldEtpZFBvc2l0aW9uKGUpe2lmKHZvaWQgMD09PXRoaXMua2lkUmVmVG9Qb3NpdGlvbil7Y29uc3QgZT10aGlzLmRpY3QuZ2V0KCJLIik7aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgdD10aGlzLmtpZFJlZlRvUG9zaXRpb249bmV3IE1hcDtmb3IobGV0IG49MCxhPWUubGVuZ3RoO248YTtuKyspe2NvbnN0IGE9ZVtuXTthJiZ0LnNldChhLnRvU3RyaW5nKCksbil9fWVsc2UgdGhpcy5raWRSZWZUb1Bvc2l0aW9uPWUgaW5zdGFuY2VvZiBEaWN0P25ldyBNYXAoW1tlLm9iaklkLDBdXSk6ZT9udWxsOm5ldyBNYXB9cmV0dXJuIHRoaXMua2lkUmVmVG9Qb3NpdGlvbj90aGlzLmtpZFJlZlRvUG9zaXRpb24uZ2V0KGUpPz9OYU46LTF9I3R0KGUsdCxuKXtpZihlIGluc3RhbmNlb2YgUmVmJiYhKHQ8MCkpe3RoaXMuc3RydWN0UGFyZW50SWRzfHw9bmV3IFJlZlNldENhY2hlO3RoaXMuc3RydWN0UGFyZW50SWRzLmdldE9yUHV0Q29tcHV0ZWQoZSxtYWtlQXJyKS5wdXNoKFt0LG5dKX19YWRkQW5ub3RhdGlvbklkVG9QYWdlKGUsdCl7dGhpcy4jdHQoZSx0LFppKX1zdGF0aWMgYXN5bmMgY2FuQ3JlYXRlU3RydWN0dXJlVHJlZSh7Y2F0YWxvZ1JlZjplLHBkZk1hbmFnZXI6dCxuZXdBbm5vdGF0aW9uc0J5UGFnZTpufSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSl7d2FybigiQ2Fubm90IHNhdmUgdGhlIHN0cnVjdCB0cmVlOiBubyBjYXRhbG9nIHJlZmVyZW5jZS4iKTtyZXR1cm4hMX1sZXQgYT0wLHM9ITA7Zm9yKGNvbnN0W2Uscl1vZiBuKXtjb25zdHtyZWY6bn09YXdhaXQgdC5nZXRQYWdlKGUpO2lmKCEobiBpbnN0YW5jZW9mIFJlZikpe3dhcm4oYENhbm5vdCBzYXZlIHRoZSBzdHJ1Y3QgdHJlZTogcGFnZSAke2V9IGhhcyBubyByZWYuYCk7cz0hMDticmVha31mb3IoY29uc3QgZSBvZiByKWlmKGUuYWNjZXNzaWJpbGl0eURhdGE/LnR5cGUpe2UucGFyZW50VHJlZUlkPWErKztzPSExfX1pZihzKXtmb3IoY29uc3QgZSBvZiBuLnZhbHVlcygpKWZvcihjb25zdCB0IG9mIGUpZGVsZXRlIHQucGFyZW50VHJlZUlkO3JldHVybiExfXJldHVybiEwfXN0YXRpYyBhc3luYyBjcmVhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHhyZWY6dCxjYXRhbG9nUmVmOm4scGRmTWFuYWdlcjphLGNoYW5nZXM6c30pe2NvbnN0IHI9YXdhaXQgYS5lbnN1cmVDYXRhbG9nKCJjbG9uZURpY3QiKSxpPW5ldyBSZWZTZXRDYWNoZTtpLnB1dChuLHIpO2NvbnN0IG89dC5nZXROZXdUZW1wb3JhcnlSZWYoKTtyLnNldCgiU3RydWN0VHJlZVJvb3QiLG8pO2NvbnN0IGw9bmV3IERpY3QodCk7bC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJTdHJ1Y3RUcmVlUm9vdCIpKTtjb25zdCBmPXQuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7bC5zZXQoIlBhcmVudFRyZWUiLGYpO2NvbnN0IGM9W107bC5zZXQoIksiLGMpO2kucHV0KG8sbCk7Y29uc3QgaD1uZXcgRGljdCh0KSx1PVtdO2guc2V0KCJOdW1zIix1KTtjb25zdCBtPWF3YWl0IHRoaXMuI250KHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHN0cnVjdFRyZWVSb290UmVmOm8sc3RydWN0VHJlZVJvb3Q6bnVsbCxraWRzOmMsbnVtczp1LHhyZWY6dCxwZGZNYW5hZ2VyOmEsY2hhbmdlczpzLGNhY2hlOml9KTtsLnNldCgiUGFyZW50VHJlZU5leHRLZXkiLG0pO2kucHV0KGYsaCk7Zm9yKGNvbnN0W2UsdF1vZiBpLml0ZW1zKCkpcy5wdXQoZSx7ZGF0YTp0fSl9YXN5bmMgY2FuVXBkYXRlU3RydWN0VHJlZSh7cGRmTWFuYWdlcjplLG5ld0Fubm90YXRpb25zQnlQYWdlOnR9KXtpZighdGhpcy5yZWYpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBubyByb290IHJlZmVyZW5jZS4iKTtyZXR1cm4hMX1sZXQgbj10aGlzLmRpY3QuZ2V0KCJQYXJlbnRUcmVlTmV4dEtleSIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pfHxuPDApe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBpbnZhbGlkIG5leHQga2V5LiIpO3JldHVybiExfWNvbnN0IGE9dGhpcy5kaWN0LmdldCgiUGFyZW50VHJlZSIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXt3YXJuKCJDYW5ub3QgdXBkYXRlIHRoZSBzdHJ1Y3QgdHJlZTogUGFyZW50VHJlZSBpc24ndCBhIGRpY3QuIik7cmV0dXJuITF9Y29uc3Qgcz1hLmdldCgiTnVtcyIpO2lmKCFBcnJheS5pc0FycmF5KHMpKXt3YXJuKCJDYW5ub3QgdXBkYXRlIHRoZSBzdHJ1Y3QgdHJlZTogbnVtcyBpc24ndCBhbiBhcnJheS4iKTtyZXR1cm4hMX1jb25zdCByPW5ldyBOdW1iZXJUcmVlKGEsdGhpcy54cmVmKTtmb3IoY29uc3QgbiBvZiB0LmtleXMoKSl7Y29uc3R7cGFnZURpY3Q6dH09YXdhaXQgZS5nZXRQYWdlKG4pO2lmKCF0LmhhcygiU3RydWN0UGFyZW50cyIpKWNvbnRpbnVlO2NvbnN0IGE9dC5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKXx8IUFycmF5LmlzQXJyYXkoci5nZXQoYSkpKXt3YXJuKGBDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IHBhZ2UgJHtufSBoYXMgYSB3cm9uZyBpZC5gKTtyZXR1cm4hMX19bGV0IGk9ITA7Zm9yKGNvbnN0W2Esc11vZiB0KXtjb25zdHtwYWdlRGljdDp0fT1hd2FpdCBlLmdldFBhZ2UoYSk7U3RydWN0VHJlZVJvb3QuI2F0KHtlbGVtZW50czpzLHhyZWY6dGhpcy54cmVmLHBhZ2VEaWN0OnQsbnVtYmVyVHJlZTpyfSk7Zm9yKGNvbnN0IGUgb2YgcylpZihlLmFjY2Vzc2liaWxpdHlEYXRhPy50eXBlKXtlLmFjY2Vzc2liaWxpdHlEYXRhLnN0cnVjdFBhcmVudD49MHx8KGUucGFyZW50VHJlZUlkPW4rKyk7aT0hMX19aWYoaSl7Zm9yKGNvbnN0IGUgb2YgdC52YWx1ZXMoKSlmb3IoY29uc3QgdCBvZiBlKXtkZWxldGUgdC5wYXJlbnRUcmVlSWQ7ZGVsZXRlIHQuc3RydWN0VHJlZVBhcmVudH1yZXR1cm4hMX1yZXR1cm4hMH1hc3luYyB1cGRhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHBkZk1hbmFnZXI6dCxjaGFuZ2VzOm59KXtjb25zdHtyZWY6YSx4cmVmOnN9PXRoaXMscj10aGlzLmRpY3QuY2xvbmUoKSxpPW5ldyBSZWZTZXRDYWNoZTtpLnB1dChhLHIpO2xldCBvLGw9ci5nZXRSYXcoIlBhcmVudFRyZWUiKTtpZihsIGluc3RhbmNlb2YgUmVmKW89cy5mZXRjaChsKTtlbHNle289bDtsPXMuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7ci5zZXQoIlBhcmVudFRyZWUiLGwpfW89by5jbG9uZSgpO2kucHV0KGwsbyk7bGV0IGY9by5nZXRSYXcoIk51bXMiKSxjPW51bGw7aWYoZiBpbnN0YW5jZW9mIFJlZil7Yz1mO2Y9cy5mZXRjaChjKX1mPWYuc2xpY2UoKTtjfHxvLnNldCgiTnVtcyIsZik7Y29uc3QgaD1hd2FpdCBTdHJ1Y3RUcmVlUm9vdC4jbnQoe25ld0Fubm90YXRpb25zQnlQYWdlOmUsc3RydWN0VHJlZVJvb3RSZWY6YSxzdHJ1Y3RUcmVlUm9vdDp0aGlzLGtpZHM6bnVsbCxudW1zOmYseHJlZjpzLHBkZk1hbmFnZXI6dCxjaGFuZ2VzOm4sY2FjaGU6aX0pO2lmKC0xIT09aCl7ci5zZXQoIlBhcmVudFRyZWVOZXh0S2V5IixoKTtjJiZpLnB1dChjLGYpO2Zvcihjb25zdFtlLHRdb2YgaS5pdGVtcygpKW4ucHV0KGUse2RhdGE6dH0pfX1zdGF0aWMgYXN5bmMjbnQoe25ld0Fubm90YXRpb25zQnlQYWdlOmUsc3RydWN0VHJlZVJvb3RSZWY6dCxzdHJ1Y3RUcmVlUm9vdDpuLGtpZHM6YSxudW1zOnMseHJlZjpyLHBkZk1hbmFnZXI6aSxjaGFuZ2VzOm8sY2FjaGU6bH0pe2NvbnN0IGY9TmFtZS5nZXQoIk9CSlIiKTtsZXQgYyxoPS0xO2Zvcihjb25zdFt1LG1db2YgZSl7Y29uc3QgZT1hd2FpdCBpLmdldFBhZ2UodSkse3JlZjpwfT1lLGQ9cCBpbnN0YW5jZW9mIFJlZjtmb3IoY29uc3R7YWNjZXNzaWJpbGl0eURhdGE6aSxyZWY6ZyxwYXJlbnRUcmVlSWQ6YixzdHJ1Y3RUcmVlUGFyZW50Ond9b2YgbSl7aWYoIWk/LnR5cGUpY29udGludWU7Y29uc3R7c3RydWN0UGFyZW50Om19PWk7aWYobiYmTnVtYmVyLmlzSW50ZWdlcihtKSYmbT49MCl7bGV0IHQ9KGN8fD1uZXcgTWFwKS5nZXQodSk7aWYodm9pZCAwPT09dCl7dD1uZXcgU3RydWN0VHJlZVBhZ2UobixlLnBhZ2VEaWN0KS5jb2xsZWN0T2JqZWN0cyhwKTtjLnNldCh1LHQpfWNvbnN0IGE9dD8uZ2V0KG0pO2lmKGEpe2NvbnN0IGU9ci5mZXRjaChhKS5jbG9uZSgpO1N0cnVjdFRyZWVSb290LiNzdChlLGkpO28ucHV0KGEse2RhdGE6ZX0pO2NvbnRpbnVlfX1oPU1hdGgubWF4KGgsYik7Y29uc3Qgaj1yLmdldE5ld1RlbXBvcmFyeVJlZigpLGs9bmV3IERpY3Qocik7U3RydWN0VHJlZVJvb3QuI3N0KGssaSk7YXdhaXQgdGhpcy4jcnQoe3N0cnVjdFRyZWVQYXJlbnQ6dyx0YWdEaWN0OmssbmV3VGFnUmVmOmosc3RydWN0VHJlZVJvb3RSZWY6dCxmYWxsYmFja0tpZHM6YSx4cmVmOnIsY2FjaGU6bH0pO2NvbnN0IHk9bmV3IERpY3Qocik7ay5zZXQoIksiLHkpO3kuc2V0KCJUeXBlIixmKTtkJiZ5LnNldCgiUGciLHApO3kuc2V0KCJPYmoiLGcpO2wucHV0KGosayk7cy5wdXNoKGIsail9fXJldHVybiBoKzF9c3RhdGljI3N0KGUse3R5cGU6dCx0aXRsZTpuLGxhbmc6YSxhbHQ6cyxleHBhbmRlZDpyLGFjdHVhbFRleHQ6aX0pe2Uuc2V0KCJTIixOYW1lLmdldCh0KSk7biYmZS5zZXQoIlQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUobikpO2EmJmUuc2V0KCJMYW5nIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGEpKTtzJiZlLnNldCgiQWx0IixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKHMpKTtyJiZlLnNldCgiRSIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShyKSk7aSYmZS5zZXQoIkFjdHVhbFRleHQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUoaSkpfXN0YXRpYyNhdCh7ZWxlbWVudHM6ZSx4cmVmOnQscGFnZURpY3Q6bixudW1iZXJUcmVlOmF9KXtjb25zdCBzPW5ldyBNYXA7Zm9yKGNvbnN0IHQgb2YgZSlpZih0LnN0cnVjdFRyZWVQYXJlbnRJZCl7Y29uc3QgZT1wYXJzZUludCh0LnN0cnVjdFRyZWVQYXJlbnRJZC5zcGxpdCgiX21jIilbMV0sMTApO3MuZ2V0T3JJbnNlcnRDb21wdXRlZChlLG1ha2VBcnIpLnB1c2godCl9Y29uc3Qgcj1uLmdldCgiU3RydWN0UGFyZW50cyIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpKXJldHVybjtjb25zdCBpPWEuZ2V0KHIpLHVwZGF0ZUVsZW1lbnQ9KGUsbixhKT0+e2NvbnN0IHI9cy5nZXQoZSk7aWYocil7Y29uc3QgZT1uLmdldFJhdygiUCIpLHM9dC5mZXRjaElmUmVmKGUpO2lmKGUgaW5zdGFuY2VvZiBSZWYmJnMgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPXtyZWY6YSxkaWN0Om59O2Zvcihjb25zdCB0IG9mIHIpdC5zdHJ1Y3RUcmVlUGFyZW50PWV9cmV0dXJuITB9cmV0dXJuITF9O2Zvcihjb25zdCBlIG9mIGkpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpY29udGludWU7Y29uc3Qgbj10LmZldGNoKGUpLGE9bi5nZXQoIksiKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGEpKXVwZGF0ZUVsZW1lbnQoYSxuLGUpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShhKSlmb3IobGV0IHMgb2YgYSl7cz10LmZldGNoSWZSZWYocyk7aWYoTnVtYmVyLmlzSW50ZWdlcihzKSYmdXBkYXRlRWxlbWVudChzLG4sZSkpYnJlYWs7aWYoIShzIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7aWYoIWlzTmFtZShzLmdldCgiVHlwZSIpLCJNQ1IiKSlicmVhaztjb25zdCBhPXMuZ2V0KCJNQ0lEIik7aWYoTnVtYmVyLmlzSW50ZWdlcihhKSYmdXBkYXRlRWxlbWVudChhLG4sZSkpYnJlYWt9fX1zdGF0aWMgYXN5bmMjcnQoe3N0cnVjdFRyZWVQYXJlbnQ6ZSx0YWdEaWN0OnQsbmV3VGFnUmVmOm4sc3RydWN0VHJlZVJvb3RSZWY6YSxmYWxsYmFja0tpZHM6cyx4cmVmOnIsY2FjaGU6aX0pe2xldCBvLGw9bnVsbDtpZihlKXsoe3JlZjpsfT1lKTtvPWUuZGljdC5nZXRSYXcoIlAiKXx8YX1lbHNlIG89YTt0LnNldCgiUCIsbyk7Y29uc3QgZj1yLmZldGNoSWZSZWYobyk7aWYoIWYpe3MucHVzaChuKTtyZXR1cm59Y29uc3QgYz1pLmdldE9yUHV0Q29tcHV0ZWQobywoKT0+Zi5jbG9uZSgpKSxoPWMuZ2V0UmF3KCJLIik7bGV0IHU9aCBpbnN0YW5jZW9mIFJlZj9pLmdldChoKTpudWxsO2lmKCF1KXt1PXIuZmV0Y2hJZlJlZihoKTt1PUFycmF5LmlzQXJyYXkodSk/dS5zbGljZSgpOltoXTtjb25zdCBlPXIuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7Yy5zZXQoIksiLGUpO2kucHV0KGUsdSl9Y29uc3QgbT11LmluZGV4T2YobCk7dS5zcGxpY2UobT49MD9tKzE6dS5sZW5ndGgsMCxuKX19Y2xhc3MgU3RydWN0RWxlbWVudE5vZGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnRyZWU9ZTt0aGlzLnhyZWY9ZS54cmVmO3RoaXMuZGljdD10O3RoaXMua2lkcz1bXTt0aGlzLnBhcnNlS2lkcygpfWdldCByb2xlKCl7Y29uc3QgZT10aGlzLmRpY3QuZ2V0KCJTIiksdD1lIGluc3RhbmNlb2YgTmFtZT9lLm5hbWU6IiIse3Jvb3Q6bn09dGhpcy50cmVlO3JldHVybiBuLnJvbGVNYXAuZ2V0KHQpPz90fWdldCBtYXRoTUwoKXtsZXQgZT10aGlzLmRpY3QuZ2V0KCJBRiIpfHxbXTtBcnJheS5pc0FycmF5KGUpfHwoZT1bZV0pO2ZvcihsZXQgdCBvZiBlKXt0PXRoaXMueHJlZi5mZXRjaElmUmVmKHQpO2lmKCFpc0RpY3QodCwiRmlsZXNwZWMiKXx8IWlzTmFtZSh0LmdldCgiQUZSZWxhdGlvbnNoaXAiKSwiU3VwcGxlbWVudCIpKWNvbnRpbnVlO2NvbnN0IGU9RmlsZVNwZWMucGlja1BsYXRmb3JtSXRlbSh0LmdldCgiRUYiKSk7aWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJmlzRGljdChlLmRpY3QsIkVtYmVkZGVkRmlsZSIpJiZpc05hbWUoZS5kaWN0LmdldCgiU3VidHlwZSIpLCJhcHBsaWNhdGlvbi9tYXRobWwreG1sIikpcmV0dXJuIHN0cmluZ1RvVVRGOFN0cmluZyhlLmdldFN0cmluZygpKX1jb25zdCB0PXRoaXMuZGljdC5nZXQoIkEiKTtpZih0IGluc3RhbmNlb2YgRGljdCl7aWYoaXNOYW1lKHQuZ2V0KCJPIiksIk1TRlRfT2ZmaWNlIikpe2NvbnN0IGU9dC5nZXQoIk1TRlRfTWF0aE1MIik7cmV0dXJuIGU/c3RyaW5nVG9QREZTdHJpbmcoZSk6bnVsbH19cmV0dXJuIG51bGx9cGFyc2VLaWRzKCl7bGV0IGU9bnVsbDtjb25zdCB0PXRoaXMuZGljdC5nZXRSYXcoIlBnIik7dCBpbnN0YW5jZW9mIFJlZiYmKGU9dC50b1N0cmluZygpKTtjb25zdCBuPXRoaXMuZGljdC5nZXQoIksiKTtpZihBcnJheS5pc0FycmF5KG4pKWZvcihjb25zdCB0IG9mIG4pe2NvbnN0IG49dGhpcy5wYXJzZUtpZChlLHRoaXMueHJlZi5mZXRjaElmUmVmKHQpKTtuJiZ0aGlzLmtpZHMucHVzaChuKX1lbHNle2NvbnN0IHQ9dGhpcy5wYXJzZUtpZChlLG4pO3QmJnRoaXMua2lkcy5wdXNoKHQpfX1wYXJzZUtpZChlLHQpe2lmKE51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuIHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWU/bnVsbDpuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpZaSxtY2lkOnQscGFnZU9iaklkOmV9KTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCBuPXQuZ2V0UmF3KCJQZyIpO24gaW5zdGFuY2VvZiBSZWYmJihlPW4udG9TdHJpbmcoKSk7Y29uc3QgYT10LmdldCgiVHlwZSIpaW5zdGFuY2VvZiBOYW1lP3QuZ2V0KCJUeXBlIikubmFtZTpudWxsO2lmKCJNQ1IiPT09YSl7aWYodGhpcy50cmVlLnBhZ2VEaWN0Lm9iaklkIT09ZSlyZXR1cm4gbnVsbDtjb25zdCBuPXQuZ2V0UmF3KCJTdG0iKTtyZXR1cm4gbmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6SmkscmVmT2JqSWQ6biBpbnN0YW5jZW9mIFJlZj9uLnRvU3RyaW5nKCk6bnVsbCxwYWdlT2JqSWQ6ZSxtY2lkOnQuZ2V0KCJNQ0lEIil9KX1pZigiT0JKUiI9PT1hKXtpZih0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lKXJldHVybiBudWxsO2NvbnN0IG49dC5nZXRSYXcoIk9iaiIpO3JldHVybiBuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpRaSxyZWZPYmpJZDpuIGluc3RhbmNlb2YgUmVmP24udG9TdHJpbmcoKTpudWxsLHBhZ2VPYmpJZDplfSl9cmV0dXJuIG5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOmVvLGRpY3Q6dH0pfX1jbGFzcyBTdHJ1Y3RFbGVtZW50e2NvbnN0cnVjdG9yKHt0eXBlOmUsZGljdDp0PW51bGwsbWNpZDpuPW51bGwscGFnZU9iaklkOmE9bnVsbCxyZWZPYmpJZDpzPW51bGx9KXt0aGlzLnR5cGU9ZTt0aGlzLmRpY3Q9dDt0aGlzLm1jaWQ9bjt0aGlzLnBhZ2VPYmpJZD1hO3RoaXMucmVmT2JqSWQ9czt0aGlzLnBhcmVudE5vZGU9bnVsbH19Y2xhc3MgU3RydWN0VHJlZVBhZ2V7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnJvb3Q9ZTt0aGlzLnhyZWY9ZT8ueHJlZj8/bnVsbDt0aGlzLnJvb3REaWN0PWU/LmRpY3Q/P251bGw7dGhpcy5wYWdlRGljdD10O3RoaXMubm9kZXM9W119Y29sbGVjdE9iamVjdHMoZSl7aWYoISh0aGlzLnJvb3QmJnRoaXMucm9vdERpY3QmJmUgaW5zdGFuY2VvZiBSZWYpKXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy5yb290RGljdC5nZXQoIlBhcmVudFRyZWUiKTtpZighdClyZXR1cm4gbnVsbDtjb25zdCBuPXRoaXMucm9vdC5zdHJ1Y3RQYXJlbnRJZHM/LmdldChlKTtpZighbilyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBNYXAscz1uZXcgTnVtYmVyVHJlZSh0LHRoaXMueHJlZik7Zm9yKGNvbnN0W2Vdb2Ygbil7Y29uc3QgdD1zLmdldFJhdyhlKTt0IGluc3RhbmNlb2YgUmVmJiZhLnNldChlLHQpfXJldHVybiBhfXBhcnNlKGUpe2lmKCEodGhpcy5yb290JiZ0aGlzLnJvb3REaWN0JiZlIGluc3RhbmNlb2YgUmVmKSlyZXR1cm47Y29uc3R7cGFyZW50VHJlZTp0fT10aGlzLnJvb3Q7aWYoIXQpcmV0dXJuO2NvbnN0IG49dGhpcy5wYWdlRGljdC5nZXQoIlN0cnVjdFBhcmVudHMiKSxhPXRoaXMucm9vdC5zdHJ1Y3RQYXJlbnRJZHM/LmdldChlKTtpZighTnVtYmVyLmlzSW50ZWdlcihuKSYmIWEpcmV0dXJuO2NvbnN0IHM9bmV3IE1hcDtpZihOdW1iZXIuaXNJbnRlZ2VyKG4pKXtjb25zdCBlPXQuZ2V0KG4pO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHQgb2YgZSl0IGluc3RhbmNlb2YgUmVmJiZ0aGlzLmFkZE5vZGUodGhpcy54cmVmLmZldGNoKHQpLHMpfWlmKGEpZm9yKGNvbnN0W2Usbl1vZiBhKXtjb25zdCBhPXQuZ2V0KGUpO2lmKGEpe2NvbnN0IGU9dGhpcy5hZGROb2RlKHRoaXMueHJlZi5mZXRjaElmUmVmKGEpLHMpOzE9PT1lPy5raWRzPy5sZW5ndGgmJmUua2lkc1swXS50eXBlPT09UWkmJihlLmtpZHNbMF0udHlwZT1uKX19fWFkZE5vZGUoZSx0LG49MCl7aWYobj40MCl7d2FybigiU3RydWN0VHJlZSBNQVhfREVQVEggcmVhY2hlZC4iKTtyZXR1cm4gbnVsbH1pZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7Y29uc3QgYT1uZXcgU3RydWN0RWxlbWVudE5vZGUodGhpcyxlKTt0LnNldChlLGEpO3N3aXRjaChhLnJvbGUpe2Nhc2UiTCI6Y2FzZSJMQm9keSI6Y2FzZSJMSSI6Y2FzZSJUYWJsZSI6Y2FzZSJUSGVhZCI6Y2FzZSJUQm9keSI6Y2FzZSJURm9vdCI6Y2FzZSJUUiI6Zm9yKGNvbnN0IGUgb2YgYS5raWRzKWUudHlwZT09PWVvJiZ0aGlzLmFkZE5vZGUoZS5kaWN0LHQsbi0xKX1jb25zdCBzPWUuZ2V0KCJQIik7aWYoIShzIGluc3RhbmNlb2YgRGljdCl8fGlzTmFtZShzLmdldCgiVHlwZSIpLCJTdHJ1Y3RUcmVlUm9vdCIpKXt0aGlzLmFkZFRvcExldmVsTm9kZShlLGEpfHx0LmRlbGV0ZShlKTtyZXR1cm4gYX1jb25zdCByPXRoaXMuYWRkTm9kZShzLHQsbisxKTtpZighcilyZXR1cm4gYTtsZXQgaT0hMTtmb3IoY29uc3QgdCBvZiByLmtpZHMpaWYodC50eXBlPT09ZW8mJnQuZGljdD09PWUpe3QucGFyZW50Tm9kZT1hO2k9ITB9aXx8dC5kZWxldGUoZSk7cmV0dXJuIGF9YWRkVG9wTGV2ZWxOb2RlKGUsdCl7Y29uc3Qgbj10aGlzLnJvb3QuZ2V0S2lkUG9zaXRpb24oZS5vYmpJZCk7aWYoaXNOYU4obikpcmV0dXJuITE7LTEhPT1uJiYodGhpcy5ub2Rlc1tuXT10KTtyZXR1cm4hMH1nZXQgc2VyaWFsaXphYmxlKCl7ZnVuY3Rpb24gbm9kZVRvU2VyaWFsaXphYmxlKGUsdCxuPTApe2lmKG4+NDApe3dhcm4oIlN0cnVjdFRyZWUgdG9vIGRlZXAgdG8gYmUgZnVsbHkgc2VyaWFsaXplZC4iKTtyZXR1cm59Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2Eucm9sZT1lLnJvbGU7YS5jaGlsZHJlbj1bXTt0LmNoaWxkcmVuLnB1c2goYSk7bGV0IHM9ZS5kaWN0LmdldCgiQWx0Iik7InN0cmluZyIhPXR5cGVvZiBzJiYocz1lLmRpY3QuZ2V0KCJBY3R1YWxUZXh0IikpOyJzdHJpbmciPT10eXBlb2YgcyYmKGEuYWx0PXN0cmluZ1RvUERGU3RyaW5nKHMpKTtpZigiRm9ybXVsYSI9PT1hLnJvbGUpdHJ5e2NvbnN0e21hdGhNTDp0fT1lO3QmJihhLm1hdGhNTD10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBJZ25vcmluZyBtYXRoTUw6ICIke2V9Ii5gKX1jb25zdCByPWUuZGljdC5nZXQoIkEiKTtpZihyIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1sb29rdXBOb3JtYWxSZWN0KHIuZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtpZihlKWEuYmJveD1lO2Vsc2V7Y29uc3QgZT1yLmdldCgiV2lkdGgiKSx0PXIuZ2V0KCJIZWlnaHQiKTsibnVtYmVyIj09dHlwZW9mIGUmJmU+MCYmIm51bWJlciI9PXR5cGVvZiB0JiZ0PjAmJihhLmJib3g9WzAsMCxlLHRdKX19Y29uc3QgaT1lLmRpY3QuZ2V0KCJMYW5nIik7InN0cmluZyI9PXR5cGVvZiBpJiYoYS5sYW5nPXN0cmluZ1RvUERGU3RyaW5nKGkpKTtmb3IoY29uc3QgdCBvZiBlLmtpZHMpe2NvbnN0IGU9dC50eXBlPT09ZW8/dC5wYXJlbnROb2RlOm51bGw7ZT9ub2RlVG9TZXJpYWxpemFibGUoZSxhLG4rMSk6dC50eXBlPT09WWl8fHQudHlwZT09PUppP2EuY2hpbGRyZW4ucHVzaCh7dHlwZToiY29udGVudCIsaWQ6YHAke3QucGFnZU9iaklkfV9tYyR7dC5tY2lkfWB9KTp0LnR5cGU9PT1RaT9hLmNoaWxkcmVuLnB1c2goe3R5cGU6Im9iamVjdCIsaWQ6dC5yZWZPYmpJZH0pOnQudHlwZT09PVppJiZhLmNoaWxkcmVuLnB1c2goe3R5cGU6ImFubm90YXRpb24iLGlkOmBwZGZqc19pbnRlcm5hbF9pZF8ke3QucmVmT2JqSWR9YH0pfX1jb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZS5jaGlsZHJlbj1bXTtlLnJvbGU9IlJvb3QiO2Zvcihjb25zdCB0IG9mIHRoaXMubm9kZXMpdCYmbm9kZVRvU2VyaWFsaXphYmxlKHQsZSk7cmV0dXJuIGV9fWNvbnN0IHRvPWZ1bmN0aW9uIF9pc1ZhbGlkRXhwbGljaXREZXN0KGUsdCxuKXtpZighQXJyYXkuaXNBcnJheShuKXx8bi5sZW5ndGg8MilyZXR1cm4hMTtjb25zdFthLHMsLi4ucl09bjtpZighZShhKSYmIU51bWJlci5pc0ludGVnZXIoYSkpcmV0dXJuITE7aWYoIXQocykpcmV0dXJuITE7Y29uc3QgaT1yLmxlbmd0aDtsZXQgbz0hMDtzd2l0Y2gocy5uYW1lKXtjYXNlIlhZWiI6aWYoaTwyfHxpPjMpcmV0dXJuITE7YnJlYWs7Y2FzZSJGaXQiOmNhc2UiRml0QiI6cmV0dXJuIDA9PT1pO2Nhc2UiRml0SCI6Y2FzZSJGaXRCSCI6Y2FzZSJGaXRWIjpjYXNlIkZpdEJWIjppZihpPjEpcmV0dXJuITE7YnJlYWs7Y2FzZSJGaXRSIjppZig0IT09aSlyZXR1cm4hMTtvPSExO2JyZWFrO2RlZmF1bHQ6cmV0dXJuITF9Zm9yKGNvbnN0IGUgb2YgcilpZighKCJudW1iZXIiPT10eXBlb2YgZXx8byYmbnVsbD09PWUpKXJldHVybiExO3JldHVybiEwfS5iaW5kKG51bGwsZT0+ZSBpbnN0YW5jZW9mIFJlZixpc05hbWUpO2Z1bmN0aW9uIGZldGNoRGVzdChlKXtlIGluc3RhbmNlb2YgRGljdCYmKGU9ZS5nZXQoIkQiKSk7cmV0dXJuIHRvKGUpP2U6bnVsbH1mdW5jdGlvbiBmZXRjaFJlbW90ZURlc3QoZSl7bGV0IHQ9ZS5nZXQoIkQiKTtpZih0KXt0IGluc3RhbmNlb2YgTmFtZSYmKHQ9dC5uYW1lKTtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHN0cmluZ1RvUERGU3RyaW5nKHQsITApO2lmKHRvKHQpKXJldHVybiBKU09OLnN0cmluZ2lmeSh0KX1yZXR1cm4gbnVsbH1jbGFzcyBDYXRhbG9neyNpdD1udWxsOyNvdD1uZXcgUmVmU2V0Q2FjaGU7I2x0PW5ldyBNYXA7I2Z0PW5ldyBTZXQ7I2N0PW51bGw7YnVpbHRJbkNNYXBDYWNoZT1uZXcgTWFwO2ZvbnRDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7Z2xvYmFsQ29sb3JTcGFjZUNhY2hlPW5ldyBHbG9iYWxDb2xvclNwYWNlQ2FjaGU7Z2xvYmFsSW1hZ2VDYWNoZT1uZXcgR2xvYmFsSW1hZ2VDYWNoZTtub25CbGVuZE1vZGVzU2V0PW5ldyBSZWZTZXQ7cGFnZURpY3RDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7cGFnZUluZGV4Q2FjaGU9bmV3IFJlZlNldENhY2hlO3BhZ2VLaWRzQ291bnRDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7c3RhbmRhcmRGb250RGF0YUNhY2hlPW5ldyBNYXA7c3lzdGVtRm9udENhY2hlPW5ldyBNYXA7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnhyZWY9dDt0aGlzLiNjdD10LmdldENhdGFsb2dPYmooKTtpZighKHRoaXMuI2N0IGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJDYXRhbG9nIG9iamVjdCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO3RoaXMudG9wbGV2ZWxQYWdlc0RpY3R9Y2xvbmVEaWN0KCl7cmV0dXJuIHRoaXMuI2N0LmNsb25lKCl9Z2V0QXR0YWNobWVudElkRm9yQW5ub3RhdGlvbihlLHQ9ITEpe2xldCBuPXRoaXMuI290LmdldChlKTtpZighbil7Y29uc3QgdD1gYXR0YWNobWVudFJlZjoke2UudG9TdHJpbmcoKX1gO249dDtsZXQgYT0xO2Zvcig7dGhpcy4jbHQuaGFzKG4pfHx0aGlzLmF0dGFjaG1lbnRzPy5oYXMobik7KW49YCR7dH0tJHthKyt9YDt0aGlzLiNvdC5wdXQoZSxuKTt0aGlzLiNsdC5zZXQobixlKX10JiZ0aGlzLiNmdC5hZGQobik7cmV0dXJuIG59Z2V0IHZlcnNpb24oKXtjb25zdCBlPXRoaXMuI2N0LmdldCgiVmVyc2lvbiIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXtpZihwbi50ZXN0KGUubmFtZSkpcmV0dXJuIHNoYWRvdyh0aGlzLCJ2ZXJzaW9uIixlLm5hbWUpO3dhcm4oYEludmFsaWQgUERGIGNhdGFsb2cgdmVyc2lvbjogJHtlLm5hbWV9YCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJ2ZXJzaW9uIixudWxsKX1nZXQgbGFuZygpe2NvbnN0IGU9dGhpcy4jY3QuZ2V0KCJMYW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJsYW5nIixlJiYic3RyaW5nIj09dHlwZW9mIGU/c3RyaW5nVG9QREZTdHJpbmcoZSk6bnVsbCl9Z2V0IG5lZWRzUmVuZGVyaW5nKCl7Y29uc3QgZT10aGlzLiNjdC5nZXQoIk5lZWRzUmVuZGVyaW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJuZWVkc1JlbmRlcmluZyIsImJvb2xlYW4iPT10eXBlb2YgZSYmZSl9Z2V0IGNvbGxlY3Rpb24oKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuI2N0LmdldCgiQ29sbGVjdGlvbiIpO3QgaW5zdGFuY2VvZiBEaWN0JiZ0LnNpemU+MCYmKGU9dCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiQ2Fubm90IGZldGNoIENvbGxlY3Rpb24gZW50cnk7IGFzc3VtaW5nIG5vIGNvbGxlY3Rpb24gaXMgcHJlc2VudC4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImNvbGxlY3Rpb24iLGUpfWdldCBhY3JvRm9ybSgpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy4jY3QuZ2V0KCJBY3JvRm9ybSIpO3QgaW5zdGFuY2VvZiBEaWN0JiZ0LnNpemU+MCYmKGU9dCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiQ2Fubm90IGZldGNoIEFjcm9Gb3JtIGVudHJ5OyBhc3N1bWluZyBubyBmb3JtcyBhcmUgcHJlc2VudC4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImFjcm9Gb3JtIixlKX1nZXQgYWNyb0Zvcm1SZWYoKXtjb25zdCBlPXRoaXMuI2N0LmdldFJhdygiQWNyb0Zvcm0iKTtyZXR1cm4gc2hhZG93KHRoaXMsImFjcm9Gb3JtUmVmIixlIGluc3RhbmNlb2YgUmVmP2U6bnVsbCl9Z2V0IG1ldGFkYXRhKCl7Y29uc3QgZT10aGlzLiNjdC5nZXRSYXcoIk1ldGFkYXRhIik7aWYoIShlIGluc3RhbmNlb2YgUmVmKSlyZXR1cm4gc2hhZG93KHRoaXMsIm1ldGFkYXRhIixudWxsKTtsZXQgdD1udWxsO3RyeXtjb25zdCBuPXRoaXMueHJlZi5mZXRjaChlLCF0aGlzLnhyZWYuZW5jcnlwdD8uZW5jcnlwdE1ldGFkYXRhKTtpZihuIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmaXNEaWN0KG4uZGljdCwiTWV0YWRhdGEiKSYmaXNOYW1lKG4uZGljdC5nZXQoIlN1YnR5cGUiKSwiWE1MIikpe2NvbnN0IGU9c3RyaW5nVG9VVEY4U3RyaW5nKG4uZ2V0U3RyaW5nKCkpO2UmJih0PW5ldyBNZXRhZGF0YVBhcnNlcihlKS5zZXJpYWxpemFibGUpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKGBTa2lwcGluZyBpbnZhbGlkIE1ldGFkYXRhOiAiJHtlfSIuYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJtZXRhZGF0YSIsdCl9Z2V0IG1hcmtJbmZvKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLiNodCgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIG1hcmsgaW5mby4iKX1yZXR1cm4gc2hhZG93KHRoaXMsIm1hcmtJbmZvIixlKX0jaHQoKXtjb25zdCBlPXRoaXMuI2N0LmdldCgiTWFya0luZm8iKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PXtNYXJrZWQ6ITEsVXNlclByb3BlcnRpZXM6ITEsU3VzcGVjdHM6ITF9O2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IGE9ZS5nZXQobik7ImJvb2xlYW4iPT10eXBlb2YgYSYmKHRbbl09YSl9cmV0dXJuIHR9Z2V0IGhhc1N0cnVjdFRyZWUoKXtyZXR1cm4gdGhpcy4jY3QuaGFzKCJTdHJ1Y3RUcmVlUm9vdCIpfWdldCBzdHJ1Y3RUcmVlUm9vdCgpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy4jdXQoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgcmVhZCB0byBzdHJ1Y3RUcmVlUm9vdCBpbmZvLiIpfXJldHVybiBzaGFkb3codGhpcywic3RydWN0VHJlZVJvb3QiLGUpfSN1dCgpe2NvbnN0IGU9dGhpcy4jY3QuZ2V0UmF3KCJTdHJ1Y3RUcmVlUm9vdCIpLHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7cmV0dXJuIHQgaW5zdGFuY2VvZiBEaWN0P25ldyBTdHJ1Y3RUcmVlUm9vdCh0aGlzLnhyZWYsdCxlKTpudWxsfWdldCB0b3BsZXZlbFBhZ2VzRGljdCgpe2NvbnN0IGU9dGhpcy4jY3QuZ2V0KCJQYWdlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeS4iKTtyZXR1cm4gc2hhZG93KHRoaXMsInRvcGxldmVsUGFnZXNEaWN0IixlKX1nZXQgZG9jdW1lbnRPdXRsaW5lKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLiNtdCgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIGRvY3VtZW50IG91dGxpbmUuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJkb2N1bWVudE91dGxpbmUiLGUpfSNtdChlPXt9KXtsZXQgdD10aGlzLiNjdC5nZXQoIk91dGxpbmVzIik7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7dD10LmdldFJhdygiRmlyc3QiKTtpZighKHQgaW5zdGFuY2VvZiBSZWYpKXJldHVybiBudWxsO2NvbnN0IG49e2l0ZW1zOltdfSxhPVt7b2JqOnQscGFyZW50Om59XSxzPW5ldyBSZWZTZXQ7cy5wdXQodCk7Y29uc3Qgcj10aGlzLnhyZWYsaT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7Zm9yKDthLmxlbmd0aD4wOyl7Y29uc3Qgbj1hLnNoaWZ0KCksbz1yLmZldGNoSWZSZWYobi5vYmopO2lmKG51bGw9PT1vKWNvbnRpbnVlO28uaGFzKCJUaXRsZSIpfHx3YXJuKCJJbnZhbGlkIG91dGxpbmUgaXRlbSBlbmNvdW50ZXJlZC4iKTtjb25zdCBsPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6byxyZXN1bHRPYmo6bCxkb2NCYXNlVXJsOnRoaXMuYmFzZVVybCxkb2NBdHRhY2htZW50czp0aGlzLmF0dGFjaG1lbnRzfSk7Y29uc3QgZj1vLmdldCgiVGl0bGUiKSxjPW8uZ2V0KCJGIil8fDAsaD1vLmdldEFycmF5KCJDIiksdT1vLmdldCgiQ291bnQiKTtsZXQgbT1pOyFpc051bWJlckFycmF5KGgsMyl8fDA9PT1oWzBdJiYwPT09aFsxXSYmMD09PWhbMl18fChtPUNvbG9yU3BhY2VVdGlscy5yZ2IuZ2V0UmdiKGgsMCkpO2NvbnN0IHA9e2FjdGlvbjpsLmFjdGlvbixhdHRhY2htZW50SWQ6bC5hdHRhY2htZW50SWQsYXR0YWNobWVudDpsLmF0dGFjaG1lbnQsZGVzdDpsLmRlc3QsdXJsOmwudXJsLHVuc2FmZVVybDpsLnVuc2FmZVVybCxuZXdXaW5kb3c6bC5uZXdXaW5kb3csc2V0T0NHU3RhdGU6bC5zZXRPQ0dTdGF0ZSx0aXRsZToic3RyaW5nIj09dHlwZW9mIGY/c3RyaW5nVG9QREZTdHJpbmcoZik6IiIsY29sb3I6bSxjb3VudDpOdW1iZXIuaXNJbnRlZ2VyKHUpP3U6dm9pZCAwLGJvbGQ6ISEoMiZjKSxpdGFsaWM6ISEoMSZjKSxpdGVtczpbXX07ZS5rZWVwUmF3RGljdCYmKHAucmF3RGljdD1vKTtuLnBhcmVudC5pdGVtcy5wdXNoKHApO3Q9by5nZXRSYXcoIkZpcnN0Iik7aWYodCBpbnN0YW5jZW9mIFJlZiYmIXMuaGFzKHQpKXthLnB1c2goe29iajp0LHBhcmVudDpwfSk7cy5wdXQodCl9dD1vLmdldFJhdygiTmV4dCIpO2lmKHQgaW5zdGFuY2VvZiBSZWYmJiFzLmhhcyh0KSl7YS5wdXNoKHtvYmo6dCxwYXJlbnQ6bi5wYXJlbnR9KTtzLnB1dCh0KX19cmV0dXJuIG4uaXRlbXMubGVuZ3RoPjA/bi5pdGVtczpudWxsfWdldCBkb2N1bWVudE91dGxpbmVGb3JFZGl0b3IoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuI210KHtrZWVwUmF3RGljdDohMH0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIGRvY3VtZW50IG91dGxpbmUuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJkb2N1bWVudE91dGxpbmVGb3JFZGl0b3IiLGUpfWdldCBwZXJtaXNzaW9ucygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy4jcHQoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBwZXJtaXNzaW9ucy4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInBlcm1pc3Npb25zIixlKX0jcHQoKXtjb25zdCBlPXRoaXMueHJlZi50cmFpbGVyLmdldCgiRW5jcnlwdCIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2xldCB0PWUuZ2V0KCJQIik7aWYoIm51bWJlciIhPXR5cGVvZiB0KXJldHVybiBudWxsO3QrPTIqKjMyO2NvbnN0IG49W107Zm9yKGNvbnN0IGUgaW4gayl7Y29uc3QgYT1rW2VdO3QmYSYmbi5wdXNoKGEpfXJldHVybiBufWdldCBvcHRpb25hbENvbnRlbnRDb25maWcoKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuI2N0LmdldCgiT0NQcm9wZXJ0aWVzIik7aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IG49dC5nZXQoIkQiKTtpZighbilyZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3QgYT10LmdldCgiT0NHcyIpO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBzPW5ldyBSZWZTZXRDYWNoZTtmb3IoY29uc3QgZSBvZiBhKWUgaW5zdGFuY2VvZiBSZWYmJiFzLmhhcyhlKSYmcy5wdXQoZSx0aGlzLiNkdChlKSk7ZT10aGlzLiNndChuLHMpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFVuYWJsZSB0byByZWFkIG9wdGlvbmFsIGNvbnRlbnQgY29uZmlnOiAke2V9YCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLGUpfSNkdChlKXtjb25zdCB0PXRoaXMueHJlZi5mZXRjaChlKSxuPXtpZDplLnRvU3RyaW5nKCksbmFtZTpudWxsLGludGVudDpudWxsLHVzYWdlOntwcmludDpudWxsLHZpZXc6bnVsbH0scmJHcm91cHM6W119LGE9dC5nZXQoIk5hbWUiKTsic3RyaW5nIj09dHlwZW9mIGEmJihuLm5hbWU9c3RyaW5nVG9QREZTdHJpbmcoYSkpO2xldCBzPXQuZ2V0QXJyYXkoIkludGVudCIpO0FycmF5LmlzQXJyYXkocyl8fChzPVtzXSk7cy5ldmVyeShlPT5lIGluc3RhbmNlb2YgTmFtZSkmJihuLmludGVudD1zLm1hcChlPT5lLm5hbWUpKTtjb25zdCByPXQuZ2V0KCJVc2FnZSIpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBuO2NvbnN0IGk9bi51c2FnZSxvPXIuZ2V0KCJQcmludCIpO2lmKG8gaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPW8uZ2V0KCJQcmludFN0YXRlIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOmkucHJpbnQ9e3ByaW50U3RhdGU6ZS5uYW1lfX19Y29uc3QgbD1yLmdldCgiVmlldyIpO2lmKGwgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPWwuZ2V0KCJWaWV3U3RhdGUiKTtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIk9OIjpjYXNlIk9GRiI6aS52aWV3PXt2aWV3U3RhdGU6ZS5uYW1lfX19cmV0dXJuIG59I2d0KGUsdCl7ZnVuY3Rpb24gcGFyc2VPbk9mZihlKXtjb25zdCBuPVtdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IGEgb2YgZSlhIGluc3RhbmNlb2YgUmVmJiZ0LmhhcyhhKSYmbi5wdXNoKGEudG9TdHJpbmcoKSk7cmV0dXJuIG59ZnVuY3Rpb24gcGFyc2VPcmRlcihlLG49MCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3Qgcz1bXTtmb3IoY29uc3QgciBvZiBlKXtpZihyIGluc3RhbmNlb2YgUmVmJiZ0LmhhcyhyKSl7YS5wdXQocik7cy5wdXNoKHIudG9TdHJpbmcoKSk7Y29udGludWV9Y29uc3QgZT1wYXJzZU5lc3RlZE9yZGVyKHIsbik7ZSYmcy5wdXNoKGUpfWlmKG4+MClyZXR1cm4gcztjb25zdCByPVtdO2Zvcihjb25zdFtlXW9mIHQuaXRlbXMoKSlhLmhhcyhlKXx8ci5wdXNoKGUudG9TdHJpbmcoKSk7ci5sZW5ndGgmJnMucHVzaCh7bmFtZTpudWxsLG9yZGVyOnJ9KTtyZXR1cm4gc31mdW5jdGlvbiBwYXJzZU5lc3RlZE9yZGVyKGUsdCl7aWYoKyt0PnMpe3dhcm4oInBhcnNlTmVzdGVkT3JkZXIgLSByZWFjaGVkIE1BWF9ORVNURURfTEVWRUxTLiIpO3JldHVybiBudWxsfWNvbnN0IGE9bi5mZXRjaElmUmVmKGUpO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBudWxsO2NvbnN0IHI9bi5mZXRjaElmUmVmKGFbMF0pO2lmKCJzdHJpbmciIT10eXBlb2YgcilyZXR1cm4gbnVsbDtjb25zdCBpPXBhcnNlT3JkZXIoYS5zbGljZSgxKSx0KTtyZXR1cm4gaT8ubGVuZ3RoP3tuYW1lOnN0cmluZ1RvUERGU3RyaW5nKHIpLG9yZGVyOml9Om51bGx9Y29uc3Qgbj10aGlzLnhyZWYsYT1uZXcgUmVmU2V0LHM9MTA7IWZ1bmN0aW9uIHBhcnNlUkJHcm91cHMoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPW4uZmV0Y2hJZlJlZihhKTtpZighQXJyYXkuaXNBcnJheShlKXx8IWUubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IHM9bmV3IFNldDtmb3IoY29uc3QgbiBvZiBlKWlmKG4gaW5zdGFuY2VvZiBSZWYmJnQuaGFzKG4pJiYhcy5oYXMobi50b1N0cmluZygpKSl7cy5hZGQobi50b1N0cmluZygpKTt0LmdldChuKS5yYkdyb3Vwcy5wdXNoKHMpfX19KGUuZ2V0KCJSQkdyb3VwcyIpKTtyZXR1cm57bmFtZToic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJOYW1lIik/c3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIk5hbWUiKSk6bnVsbCxjcmVhdG9yOiJzdHJpbmciPT10eXBlb2YgZS5nZXQoIkNyZWF0b3IiKT9zdHJpbmdUb1BERlN0cmluZyhlLmdldCgiQ3JlYXRvciIpKTpudWxsLGJhc2VTdGF0ZTplLmdldCgiQmFzZVN0YXRlIilpbnN0YW5jZW9mIE5hbWU/ZS5nZXQoIkJhc2VTdGF0ZSIpLm5hbWU6bnVsbCxvbjpwYXJzZU9uT2ZmKGUuZ2V0KCJPTiIpKSxvZmY6cGFyc2VPbk9mZihlLmdldCgiT0ZGIikpLG9yZGVyOnBhcnNlT3JkZXIoZS5nZXQoIk9yZGVyIikpLGdyb3VwczpbLi4udF19fXNldEFjdHVhbE51bVBhZ2VzKGU9bnVsbCl7dGhpcy4jaXQ9ZX1nZXQgaGFzQWN0dWFsTnVtUGFnZXMoKXtyZXR1cm4gbnVsbCE9PXRoaXMuI2l0fWdldCBfcGFnZXNDb3VudCgpe2NvbnN0IGU9dGhpcy50b3BsZXZlbFBhZ2VzRGljdC5nZXQoIkNvdW50Iik7aWYoIU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGluIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO3JldHVybiBzaGFkb3codGhpcywiX3BhZ2VzQ291bnQiLGUpfWdldCBudW1QYWdlcygpe3JldHVybiB0aGlzLiNpdD8/dGhpcy5fcGFnZXNDb3VudH1nZXQgZGVzdGluYXRpb25zKCl7Y29uc3QgZT1uZXcgTWFwO2Zvcihjb25zdCB0IG9mIHRoaXMuI2J0KCkpaWYodCBpbnN0YW5jZW9mIE5hbWVUcmVlKWZvcihjb25zdFtuLGFdb2YgdC5nZXRBbGwoKSl7Y29uc3QgdD1mZXRjaERlc3QoYSk7dCYmZS5zZXQoc3RyaW5nVG9QREZTdHJpbmcobiwhMCksdCl9ZWxzZSBpZih0IGluc3RhbmNlb2YgRGljdClmb3IoY29uc3RbbixhXW9mIHQpe2NvbnN0IHQ9ZmV0Y2hEZXN0KGEpO3QmJmUuZ2V0T3JJbnNlcnQoc3RyaW5nVG9QREZTdHJpbmcobiwhMCksdCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJkZXN0aW5hdGlvbnMiLGUpfWdldERlc3RpbmF0aW9uKGUpe2lmKE9iamVjdC5oYXNPd24odGhpcywiZGVzdGluYXRpb25zIikpcmV0dXJuIHRoaXMuZGVzdGluYXRpb25zLmdldChlKT8/bnVsbDtmb3IoY29uc3QgdCBvZiB0aGlzLiNidCgpKWlmKHQgaW5zdGFuY2VvZiBOYW1lVHJlZXx8dCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IG49ZmV0Y2hEZXN0KHQuZ2V0KGUpKTtpZihuKXJldHVybiBufXJldHVybiB0aGlzLmRlc3RpbmF0aW9ucy5nZXQoZSk/P251bGx9I2J0KCl7Y29uc3QgZT10aGlzLiNjdC5nZXQoIk5hbWVzIiksdD1bXTtlPy5oYXMoIkRlc3RzIikmJnQucHVzaChuZXcgTmFtZVRyZWUoZS5nZXRSYXcoIkRlc3RzIiksdGhpcy54cmVmKSk7dGhpcy4jY3QuaGFzKCJEZXN0cyIpJiZ0LnB1c2godGhpcy4jY3QuZ2V0KCJEZXN0cyIpKTtyZXR1cm4gdH1nZXQgcmF3UGFnZUxhYmVscygpe2NvbnN0IGU9dGhpcy4jY3QuZ2V0UmF3KCJQYWdlTGFiZWxzIik7aWYoIWUpcmV0dXJuIG51bGw7cmV0dXJuIG5ldyBOdW1iZXJUcmVlKGUsdGhpcy54cmVmKS5nZXRBbGwoKX1nZXQgcGFnZUxhYmVscygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy4jd3QoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBwYWdlIGxhYmVscy4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInBhZ2VMYWJlbHMiLGUpfSN3dCgpe2NvbnN0IGU9dGhpcy5yYXdQYWdlTGFiZWxzO2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHQ9bmV3IEFycmF5KHRoaXMubnVtUGFnZXMpO2xldCBuPW51bGwsYT0iIixzPSIiLHI9MTtmb3IobGV0IGk9MCxvPXRoaXMubnVtUGFnZXM7aTxvO2krKyl7Y29uc3Qgbz1lLmdldChpKTtpZih2b2lkIDAhPT1vKXtpZighKG8gaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2VMYWJlbCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2lmKG8uaGFzKCJUeXBlIikmJiFpc05hbWUoby5nZXQoIlR5cGUiKSwiUGFnZUxhYmVsIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHR5cGUgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7aWYoby5oYXMoIlMiKSl7Y29uc3QgZT1vLmdldCgiUyIpO2lmKCEoZSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBzdHlsZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtuPWUubmFtZX1lbHNlIG49bnVsbDtpZihvLmhhcygiUCIpKXtjb25zdCBlPW8uZ2V0KCJQIik7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBwcmVmaXggaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7YT1zdHJpbmdUb1BERlN0cmluZyhlKX1lbHNlIGE9IiI7aWYoby5oYXMoIlN0Iikpe2NvbnN0IGU9by5nZXQoIlN0Iik7aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj0xKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgc3RhcnQgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7cj1lfWVsc2Ugcj0xfXN3aXRjaChuKXtjYXNlIkQiOnM9cjticmVhaztjYXNlIlIiOmNhc2UiciI6cz10b1JvbWFuTnVtZXJhbHMociwiciI9PT1uKTticmVhaztjYXNlIkEiOmNhc2UiYSI6Y29uc3QgZT0yNix0PSJhIj09PW4/OTc6NjUsYT1yLTE7cz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQrYSVlKS5yZXBlYXQoTWF0aC5mbG9vcihhL2UpKzEpO2JyZWFrO2RlZmF1bHQ6aWYobil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgc3R5bGUgIiR7bn0iIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LmApO3M9IiJ9dFtpXT1hK3M7cisrfXJldHVybiB0fWdldCBwYWdlTGF5b3V0KCl7Y29uc3QgZT10aGlzLiNjdC5nZXQoIlBhZ2VMYXlvdXQiKTtsZXQgdD0iIjtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIlNpbmdsZVBhZ2UiOmNhc2UiT25lQ29sdW1uIjpjYXNlIlR3b0NvbHVtbkxlZnQiOmNhc2UiVHdvQ29sdW1uUmlnaHQiOmNhc2UiVHdvUGFnZUxlZnQiOmNhc2UiVHdvUGFnZVJpZ2h0Ijp0PWUubmFtZX1yZXR1cm4gc2hhZG93KHRoaXMsInBhZ2VMYXlvdXQiLHQpfWdldCBwYWdlTW9kZSgpe2NvbnN0IGU9dGhpcy4jY3QuZ2V0KCJQYWdlTW9kZSIpO2xldCB0PSJVc2VOb25lIjtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIkZ1bGxTY3JlZW4iOmNhc2UiVXNlT0MiOmNhc2UiVXNlQXR0YWNobWVudHMiOnQ9ZS5uYW1lfXJldHVybiBzaGFkb3codGhpcywicGFnZU1vZGUiLHQpfWdldCB2aWV3ZXJQcmVmZXJlbmNlcygpe2NvbnN0IGU9dGhpcy4jY3QuZ2V0KCJWaWV3ZXJQcmVmZXJlbmNlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBzaGFkb3codGhpcywidmlld2VyUHJlZmVyZW5jZXMiLG51bGwpO2xldCB0PW51bGw7Zm9yKGNvbnN0W24sYV1vZiBlKXtsZXQgZTtzd2l0Y2gobil7Y2FzZSJIaWRlVG9vbGJhciI6Y2FzZSJIaWRlTWVudWJhciI6Y2FzZSJIaWRlV2luZG93VUkiOmNhc2UiRml0V2luZG93IjpjYXNlIkNlbnRlcldpbmRvdyI6Y2FzZSJEaXNwbGF5RG9jVGl0bGUiOmNhc2UiUGlja1RyYXlCeVBERlNpemUiOiJib29sZWFuIj09dHlwZW9mIGEmJihlPWEpO2JyZWFrO2Nhc2UiTm9uRnVsbFNjcmVlblBhZ2VNb2RlIjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIlVzZU9DIjplPWEubmFtZTticmVhaztkZWZhdWx0OmU9IlVzZU5vbmUifWJyZWFrO2Nhc2UiRGlyZWN0aW9uIjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIkwyUiI6Y2FzZSJSMkwiOmU9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6ZT0iTDJSIn1icmVhaztjYXNlIlZpZXdBcmVhIjpjYXNlIlZpZXdDbGlwIjpjYXNlIlByaW50QXJlYSI6Y2FzZSJQcmludENsaXAiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiTWVkaWFCb3giOmNhc2UiQ3JvcEJveCI6Y2FzZSJCbGVlZEJveCI6Y2FzZSJUcmltQm94IjpjYXNlIkFydEJveCI6ZT1hLm5hbWU7YnJlYWs7ZGVmYXVsdDplPSJDcm9wQm94In1icmVhaztjYXNlIlByaW50U2NhbGluZyI6aWYoYSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJOb25lIjpjYXNlIkFwcERlZmF1bHQiOmU9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6ZT0iQXBwRGVmYXVsdCJ9YnJlYWs7Y2FzZSJEdXBsZXgiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiU2ltcGxleCI6Y2FzZSJEdXBsZXhGbGlwU2hvcnRFZGdlIjpjYXNlIkR1cGxleEZsaXBMb25nRWRnZSI6ZT1hLm5hbWU7YnJlYWs7ZGVmYXVsdDplPSJOb25lIn1icmVhaztjYXNlIlByaW50UGFnZVJhbmdlIjpBcnJheS5pc0FycmF5KGEpJiZhLmxlbmd0aCUyPT0wJiZhLmV2ZXJ5KChlLHQsbik9Pk51bWJlci5pc0ludGVnZXIoZSkmJmU+MCYmKDA9PT10fHxlPj1uW3QtMV0pJiZlPD10aGlzLm51bVBhZ2VzKSYmKGU9YSk7YnJlYWs7Y2FzZSJOdW1Db3BpZXMiOk51bWJlci5pc0ludGVnZXIoYSkmJmE+MCYmKGU9YSk7YnJlYWs7ZGVmYXVsdDp3YXJuKGBJZ25vcmluZyBub24tc3RhbmRhcmQga2V5IGluIFZpZXdlclByZWZlcmVuY2VzOiAke259LmApO2NvbnRpbnVlfXZvaWQgMCE9PWU/KHQ/Pz1uZXcgTWFwKS5zZXQobixlKTp3YXJuKGBCYWQgdmFsdWUsIGZvciBrZXkgIiR7bn0iLCBpbiBWaWV3ZXJQcmVmZXJlbmNlczogJHthfS5gKX1yZXR1cm4gc2hhZG93KHRoaXMsInZpZXdlclByZWZlcmVuY2VzIix0KX1nZXQgb3BlbkFjdGlvbigpe2NvbnN0IGU9dGhpcy4jY3QuZ2V0KCJPcGVuQWN0aW9uIiksdD1uZXcgTWFwO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBuPW5ldyBEaWN0KHRoaXMueHJlZik7bi5zZXQoIkEiLGUpO2NvbnN0IGE9e3VybDpudWxsLGRlc3Q6bnVsbCxhY3Rpb246bnVsbH07Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDpuLHJlc3VsdE9iajphfSk7QXJyYXkuaXNBcnJheShhLmRlc3QpP3Quc2V0KCJkZXN0IixhLmRlc3QpOmEuYWN0aW9uJiZ0LnNldCgiYWN0aW9uIixhLmFjdGlvbil9ZWxzZSB0byhlKSYmdC5zZXQoImRlc3QiLGUpO3JldHVybiBzaGFkb3codGhpcywib3BlbkFjdGlvbiIsdC5zaXplP3Q6bnVsbCl9Z2V0IGF0dGFjaG1lbnRzKCl7Y29uc3QgZT10aGlzLiNjdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtpZihlIGluc3RhbmNlb2YgRGljdCYmZS5oYXMoIkVtYmVkZGVkRmlsZXMiKSl7Y29uc3Qgbj1uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIkVtYmVkZGVkRmlsZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLGFdb2Ygbi5nZXRBbGwoKSkodD8/PW5ldyBNYXApLnNldChzdHJpbmdUb1BERlN0cmluZyhlLCEwKSxuZXcgRmlsZVNwZWMoYSkuc2VyaWFsaXphYmxlKX1yZXR1cm4gc2hhZG93KHRoaXMsImF0dGFjaG1lbnRzIix0KX0janQoZSl7Y29uc3QgdD10aGlzLiNjdC5nZXQoIk5hbWVzIik7aWYodCBpbnN0YW5jZW9mIERpY3QmJnQuaGFzKCJFbWJlZGRlZEZpbGVzIikpe2NvbnN0IG49bmV3IE5hbWVUcmVlKHQuZ2V0UmF3KCJFbWJlZGRlZEZpbGVzIiksdGhpcy54cmVmKTtmb3IoY29uc3RbdCxhXW9mIG4uZ2V0QWxsKCkpaWYoc3RyaW5nVG9QREZTdHJpbmcodCwhMCk9PT1lKXJldHVybiBGaWxlU3BlYy5yZWFkQ29udGVudChhKX19YXR0YWNobWVudENvbnRlbnQoZSl7Y29uc3QgdD10aGlzLiNqdChlKTtpZih2b2lkIDAhPT10KXJldHVybiB0O2NvbnN0IG49dGhpcy4jbHQuZ2V0KGUpO2lmKG4pe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoKG4pO2lmKHQgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBuPUZpbGVTcGVjLnJlYWRTdHJlYW1Db250ZW50KHQpO3JldHVybiB0aGlzLiNmdC5oYXMoZSk/ZnVuY3Rpb24gc291bmRTdHJlYW1Ub1dhdihlLHQpe2NvbnN0IG49Z2V0U291bmRGb3JtYXQoZS5kaWN0KTtpZighbilyZXR1cm4gbnVsbDtjb25zdHtjaGFubmVsczphLHNhbXBsZVJhdGU6cyxiaXRzUGVyU2FtcGxlOnIsZW5jb2Rpbmc6aX09bixvPWEqKHI+PjMpLGw9dC5sZW5ndGgtdC5sZW5ndGglbztpZigwPT09bClyZXR1cm4gbnVsbDtjb25zdCBmPW5ldyBVaW50OEFycmF5KDQ0K2wpLGM9bmV3IERhdGFWaWV3KGYuYnVmZmVyKTtmLnNldChzdHJpbmdUb0J5dGVzKCJSSUZGIiksMCk7Yy5zZXRVaW50MzIoNCwzNitsLCEwKTtmLnNldChzdHJpbmdUb0J5dGVzKCJXQVZFIiksOCk7Zi5zZXQoc3RyaW5nVG9CeXRlcygiZm10ICIpLDEyKTtjLnNldFVpbnQzMigxNiwxNiwhMCk7Yy5zZXRVaW50MTYoMjAsMSwhMCk7Yy5zZXRVaW50MTYoMjIsYSwhMCk7Yy5zZXRVaW50MzIoMjQscywhMCk7Yy5zZXRVaW50MzIoMjgscypvLCEwKTtjLnNldFVpbnQxNigzMixvLCEwKTtjLnNldFVpbnQxNigzNCxyLCEwKTtmLnNldChzdHJpbmdUb0J5dGVzKCJkYXRhIiksMzYpO2Muc2V0VWludDMyKDQwLGwsITApO2lmKDE2PT09cil7Y29uc3QgZT0iU2lnbmVkIj09PWk7Zm9yKGxldCBuPTA7bjxsO24rPTIpe2xldCBhPXRbbl08PDh8dFtuKzFdO2U/YT49MzI3NjgmJihhLT02NTUzNik6YS09MzI3Njg7Yy5zZXRJbnQxNig0NCtuLGEsITApfX1lbHNlIGlmKCJTaWduZWQiPT09aSlmb3IobGV0IGU9MDtlPGw7ZSsrKWZbNDQrZV09dFtlXSsxMjgmMjU1O2Vsc2UgZi5zZXQodC5zdWJhcnJheSgwLGwpLDQ0KTtyZXR1cm4gZn0odCxuKT8/bjpufXJldHVybiB0IGluc3RhbmNlb2YgRGljdD9GaWxlU3BlYy5yZWFkQ29udGVudCh0KTpudWxsfXJldHVybiBudWxsfWdldCByYXdFbWJlZGRlZEZpbGVzKCl7Y29uc3QgZT10aGlzLiNjdC5nZXQoIk5hbWVzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCYmZS5oYXMoIkVtYmVkZGVkRmlsZXMiKSkpcmV0dXJuIG51bGw7cmV0dXJuIG5ldyBOYW1lVHJlZShlLmdldFJhdygiRW1iZWRkZWRGaWxlcyIpLHRoaXMueHJlZikuZ2V0QWxsKCEwKX1nZXQgeGZhSW1hZ2VzKCl7Y29uc3QgZT10aGlzLiNjdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtpZihlIGluc3RhbmNlb2YgRGljdCYmZS5oYXMoIlhGQUltYWdlcyIpKXtjb25zdCBuPW5ldyBOYW1lVHJlZShlLmdldFJhdygiWEZBSW1hZ2VzIiksdGhpcy54cmVmKTtmb3IoY29uc3RbZSxhXW9mIG4uZ2V0QWxsKCkpaWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe3Q/Pz1uZXcgTWFwO3Quc2V0KHN0cmluZ1RvUERGU3RyaW5nKGUsITApLGEuZ2V0Qnl0ZXMoKSl9fXJldHVybiBzaGFkb3codGhpcywieGZhSW1hZ2VzIix0KX0ja3QoKXtjb25zdCBlPXRoaXMuI2N0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2Z1bmN0aW9uIGFwcGVuZElmSmF2YVNjcmlwdERpY3QoZSxuKXtpZighKG4gaW5zdGFuY2VvZiBEaWN0JiZpc05hbWUobi5nZXQoIlMiKSwiSmF2YVNjcmlwdCIpKSlyZXR1cm47bGV0IGE9bi5nZXQoIkpTIik7aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pYT1hLmdldFN0cmluZygpO2Vsc2UgaWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybjthPXN0cmluZ1RvUERGU3RyaW5nKGEsITApLnJlcGxhY2VBbGwoIlwwIiwiIik7YSYmKHQ/Pz1uZXcgTWFwKS5zZXQoZSxhKX1pZihlIGluc3RhbmNlb2YgRGljdCYmZS5oYXMoIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIkphdmFTY3JpcHQiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLG5db2YgdC5nZXRBbGwoKSlhcHBlbmRJZkphdmFTY3JpcHREaWN0KHN0cmluZ1RvUERGU3RyaW5nKGUsITApLG4pfWNvbnN0IG49dGhpcy4jY3QuZ2V0KCJPcGVuQWN0aW9uIik7biYmYXBwZW5kSWZKYXZhU2NyaXB0RGljdCgiT3BlbkFjdGlvbiIsbik7cmV0dXJuIHR9Z2V0IGpzQWN0aW9ucygpe2NvbnN0IGU9dGhpcy4ja3QoKTtsZXQgdD1jb2xsZWN0QWN0aW9ucyh0aGlzLnhyZWYsdGhpcy4jY3QsbGUpO2lmKGUpe3Q/Pz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtuLGFdb2YgZSkodFtuXT8/PVtdKS5wdXNoKGEpfXJldHVybiBzaGFkb3codGhpcywianNBY3Rpb25zIix0KX1hc3luYyBjbGVhbnVwKGU9ITEpe2NsZWFyR2xvYmFsQ2FjaGVzKCk7dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUuY2xlYXIoKTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuY2xlYXIoZSk7dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGUuY2xlYXIoKTt0aGlzLnBhZ2VJbmRleENhY2hlLmNsZWFyKCk7dGhpcy5wYWdlRGljdENhY2hlLmNsZWFyKCk7dGhpcy5ub25CbGVuZE1vZGVzU2V0LmNsZWFyKCk7Zm9yKGNvbnN0e2RpY3Q6ZX1vZiBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmZvbnRDYWNoZSkpZGVsZXRlIGUuY2FjaGVLZXk7dGhpcy5mb250Q2FjaGUuY2xlYXIoKTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuY2xlYXIoKTt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZS5jbGVhcigpO3RoaXMuc3lzdGVtRm9udENhY2hlLmNsZWFyKCl9YXN5bmMgZ2V0UGFnZURpY3QoZSl7Y29uc3QgdD1bdGhpcy50b3BsZXZlbFBhZ2VzRGljdF0sbj1uZXcgUmVmU2V0LGE9dGhpcy4jY3QuZ2V0UmF3KCJQYWdlcyIpO2EgaW5zdGFuY2VvZiBSZWYmJm4ucHV0KGEpO2NvbnN0IHM9dGhpcy54cmVmLHI9dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGUsaT10aGlzLnBhZ2VJbmRleENhY2hlLG89dGhpcy5wYWdlRGljdENhY2hlO2xldCBsPTA7Zm9yKDt0Lmxlbmd0aDspe2NvbnN0IGE9dC5wb3AoKTtpZihhIGluc3RhbmNlb2YgUmVmKXtjb25zdCBmPXIuZ2V0KGEpO2lmKGY+PTAmJmwrZjw9ZSl7bCs9Zjtjb250aW51ZX1pZihuLmhhcyhhKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2VzIHRyZWUgY29udGFpbnMgY2lyY3VsYXIgcmVmZXJlbmNlLiIpO24ucHV0KGEpO2NvbnN0IGM9YXdhaXQoby5nZXQoYSl8fHMuZmV0Y2hBc3luYyhhKSk7aWYoYyBpbnN0YW5jZW9mIERpY3Qpe2xldCB0PWMuZ2V0UmF3KCJUeXBlIik7dCBpbnN0YW5jZW9mIFJlZiYmKHQ9YXdhaXQgcy5mZXRjaEFzeW5jKHQpKTtpZihpc05hbWUodCwiUGFnZSIpfHwhYy5oYXMoIktpZHMiKSl7ci5oYXMoYSl8fHIucHV0KGEsMSk7aS5oYXMoYSl8fGkucHV0KGEsbCk7aWYobD09PWUpcmV0dXJuW2MsYV07bCsrO2NvbnRpbnVlfX10LnB1c2goYyk7Y29udGludWV9aWYoIShhIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkIHJlZmVyZW5jZSBwb2ludHMgdG8gd3JvbmcgdHlwZSBvZiBvYmplY3QuIik7Y29uc3R7b2JqSWQ6Zn09YTtsZXQgYz1hLmdldFJhdygiQ291bnQiKTtjIGluc3RhbmNlb2YgUmVmJiYoYz1hd2FpdCBzLmZldGNoQXN5bmMoYykpO2lmKE51bWJlci5pc0ludGVnZXIoYykmJmM+PTApe2YmJiFyLmhhcyhmKSYmci5wdXQoZixjKTtpZihsK2M8PWUpe2wrPWM7Y29udGludWV9fWxldCBoPWEuZ2V0UmF3KCJLaWRzIik7aCBpbnN0YW5jZW9mIFJlZiYmKGg9YXdhaXQgcy5mZXRjaEFzeW5jKGgpKTtpZighQXJyYXkuaXNBcnJheShoKSl7bGV0IHQ9YS5nZXRSYXcoIlR5cGUiKTt0IGluc3RhbmNlb2YgUmVmJiYodD1hd2FpdCBzLmZldGNoQXN5bmModCkpO2lmKGlzTmFtZSh0LCJQYWdlIil8fCFhLmhhcygiS2lkcyIpKXtpZihsPT09ZSlyZXR1cm5bYSxudWxsXTtsKys7Y29udGludWV9dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkcyBvYmplY3QgaXMgbm90IGFuIGFycmF5LiIpfWZvcihsZXQgZT1oLmxlbmd0aC0xO2U+PTA7ZS0tKXtjb25zdCBuPWhbZV07dC5wdXNoKG4pO2E9PT10aGlzLnRvcGxldmVsUGFnZXNEaWN0JiZuIGluc3RhbmNlb2YgUmVmJiYhby5oYXMobikmJm8ucHV0KG4scy5mZXRjaEFzeW5jKG4pKX19dGhyb3cgbmV3IEVycm9yKGBQYWdlIGluZGV4ICR7ZX0gbm90IGZvdW5kLmApfWFzeW5jIGdldEFsbFBhZ2VEaWN0cyhlPSExKXtjb25zdHtpZ25vcmVFcnJvcnM6dH09dGhpcy5wZGZNYW5hZ2VyLmV2YWx1YXRvck9wdGlvbnMsbj1be2N1cnJlbnROb2RlOnRoaXMudG9wbGV2ZWxQYWdlc0RpY3QscG9zSW5LaWRzOjB9XSxhPW5ldyBSZWZTZXQscz10aGlzLiNjdC5nZXRSYXcoIlBhZ2VzIik7cyBpbnN0YW5jZW9mIFJlZiYmYS5wdXQocyk7Y29uc3Qgcj1uZXcgTWFwLGk9dGhpcy54cmVmLG89dGhpcy5wYWdlSW5kZXhDYWNoZTtsZXQgbD0wO2Z1bmN0aW9uIGFkZFBhZ2VEaWN0KGUsdCl7dCYmIW8uaGFzKHQpJiZvLnB1dCh0LGwpO3Iuc2V0KGwrKyxbZSx0XSl9ZnVuY3Rpb24gYWRkUGFnZUVycm9yKG4pe2lmKG4gaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG47aWYoZSYmdCYmMD09PWwpe3dhcm4oYGdldEFsbFBhZ2VEaWN0cyAtIFNraXBwaW5nIGludmFsaWQgZmlyc3QgcGFnZTogIiR7bn0iLmApO249RGljdC5lbXB0eX1yLnNldChsKyssW24sbnVsbF0pfWZvcig7bi5sZW5ndGg+MDspe2NvbnN0IGU9bi5hdCgtMSkse2N1cnJlbnROb2RlOnQscG9zSW5LaWRzOnN9PWU7bGV0IHI9dC5nZXRSYXcoIktpZHMiKTtpZihyIGluc3RhbmNlb2YgUmVmKXRyeXtyPWF3YWl0IGkuZmV0Y2hBc3luYyhyKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aWYoIUFycmF5LmlzQXJyYXkocikpe2xldCBlPXQuZ2V0UmF3KCJUeXBlIik7aWYoZSBpbnN0YW5jZW9mIFJlZil0cnl7ZT1hd2FpdCBpLmZldGNoQXN5bmMoZSl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfWlmKGlzTmFtZShlLCJQYWdlIil8fCF0LmhhcygiS2lkcyIpKXthZGRQYWdlRGljdCh0LG51bGwpO2JyZWFrfWFkZFBhZ2VFcnJvcihuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWRzIG9iamVjdCBpcyBub3QgYW4gYXJyYXkuIikpO2JyZWFrfWlmKHM+PXIubGVuZ3RoKXtuLnBvcCgpO2NvbnRpbnVlfWNvbnN0IG89cltzXTtsZXQgbDtpZihvIGluc3RhbmNlb2YgUmVmKXtpZihhLmhhcyhvKSl7YWRkUGFnZUVycm9yKG5ldyBGb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIikpO2JyZWFrfWEucHV0KG8pO3RyeXtsPWF3YWl0IGkuZmV0Y2hBc3luYyhvKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9fWVsc2UgbD1vO2lmKCEobCBpbnN0YW5jZW9mIERpY3QpKXthZGRQYWdlRXJyb3IobmV3IEZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkIHJlZmVyZW5jZSBwb2ludHMgdG8gd3JvbmcgdHlwZSBvZiBvYmplY3QuIikpO2JyZWFrfWxldCBmPWwuZ2V0UmF3KCJUeXBlIik7aWYoZiBpbnN0YW5jZW9mIFJlZil0cnl7Zj1hd2FpdCBpLmZldGNoQXN5bmMoZil9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfWlzTmFtZShmLCJQYWdlIil8fCFsLmhhcygiS2lkcyIpP2FkZFBhZ2VEaWN0KGwsbyBpbnN0YW5jZW9mIFJlZj9vOm51bGwpOm4ucHVzaCh7Y3VycmVudE5vZGU6bCxwb3NJbktpZHM6MH0pO2UucG9zSW5LaWRzKyt9cmV0dXJuIHJ9YXN5bmMgZ2V0UGFnZUluZGV4KGUpe2NvbnN0IHQ9dGhpcy5wYWdlSW5kZXhDYWNoZS5nZXQoZSk7aWYodm9pZCAwIT09dClyZXR1cm4gdDtjb25zdCBuPXRoaXMueHJlZjtsZXQgYT0wLHM9ZTtjb25zdCByPW5ldyBSZWZTZXQ7ci5wdXQoZSk7Zm9yKDs7KXtjb25zdCB0PWF3YWl0IG4uZmV0Y2hBc3luYyhzKTtpZihpc1JlZnNFcXVhbChzLGUpJiYhaXNEaWN0KHQsIlBhZ2UiKSYmISh0IGluc3RhbmNlb2YgRGljdCYmIXQuaGFzKCJUeXBlIikmJnQuaGFzKCJDb250ZW50cyIpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZSByZWZlcmVuY2UgZG9lcyBub3QgcG9pbnQgdG8gYSAvUGFnZSBkaWN0aW9uYXJ5LiIpO2lmKCF0KWJyZWFrO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBpPXQuZ2V0UmF3KCJQYXJlbnQiKTtpZihpIGluc3RhbmNlb2YgUmVmKXtpZihyLmhhcyhpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2VzIHRyZWUgY29udGFpbnMgY2lyY3VsYXIgcmVmZXJlbmNlLiIpO3IucHV0KGkpfWNvbnN0IG89YXdhaXQgdC5nZXRBc3luYygiUGFyZW50Iik7aWYoIW8pYnJlYWs7aWYoIShvIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYXJlbnQgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3QgbD1hd2FpdCBvLmdldEFzeW5jKCJLaWRzIik7aWYoIWwpYnJlYWs7aWYoIUFycmF5LmlzQXJyYXkobCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWRzIG11c3QgYmUgYW4gYXJyYXkuIik7Y29uc3QgZj1bXTtsZXQgYz0hMTtmb3IoY29uc3QgZSBvZiBsKXtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiS2lkIG11c3QgYmUgYSByZWZlcmVuY2UuIik7aWYoaXNSZWZzRXF1YWwoZSxzKSl7Yz0hMDticmVha31mLnB1c2gobi5mZXRjaEFzeW5jKGUpLnRoZW4oZT0+e2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiS2lkIG5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7aWYoZS5oYXMoIkNvdW50Iikpe2NvbnN0IHQ9ZS5nZXQoIkNvdW50Iik7aWYoTnVtYmVyLmlzSW50ZWdlcih0KSYmdD49MCl7YSs9dDtyZXR1cm59dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJDb3VudCBtdXN0IGJlIGEgKHBvc2l0aXZlKSBpbnRlZ2VyLiIpfWErK30pKX1pZighYyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIktpZCByZWZlcmVuY2Ugbm90IGZvdW5kIGluIHBhcmVudCdzIGtpZHMuIik7YXdhaXQgUHJvbWlzZS5hbGwoZik7cz1pfXRoaXMucGFnZUluZGV4Q2FjaGUucHV0KGUsYSk7cmV0dXJuIGF9Z2V0IGJhc2VVcmwoKXtjb25zdCBlPXRoaXMuI2N0LmdldCgiVVJJIik7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9ZS5nZXQoIkJhc2UiKTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2NvbnN0IGU9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybCh0LG51bGwse3RyeUNvbnZlcnRFbmNvZGluZzohMH0pO2lmKGUpcmV0dXJuIHNoYWRvdyh0aGlzLCJiYXNlVXJsIixlLmhyZWYpfX1yZXR1cm4gc2hhZG93KHRoaXMsImJhc2VVcmwiLHRoaXMucGRmTWFuYWdlci5kb2NCYXNlVXJsKX1zdGF0aWMjeXQoZSx0KXtjb25zdCBuPWUuZmV0Y2hJZlJlZih0KTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtsZXQgYT1udWxsO2NvbnN0IHM9bi5nZXRSYXcoIlBnIik7cyBpbnN0YW5jZW9mIFJlZiYmKGE9cyk7aWYoIWEpe2NvbnN0IHM9W25dLHI9bmV3IFJlZlNldDtyLnB1dCh0KTtmb3IoO3MubGVuZ3RoPjAmJiFhOyl7bGV0IHQsbj1zLnNoaWZ0KCkuZ2V0UmF3KCJLIik7aWYobiBpbnN0YW5jZW9mIFJlZil7aWYoci5oYXMobikpY29udGludWU7ci5wdXQobik7bj1lLmZldGNoKG4pfWlmKEFycmF5LmlzQXJyYXkobikpdD1uO2Vsc2V7aWYoIW4pY29udGludWU7dD1bbl19Zm9yKGNvbnN0IG4gb2YgdCl7aWYobiBpbnN0YW5jZW9mIFJlZil7aWYoci5oYXMobikpY29udGludWU7ci5wdXQobil9Y29uc3QgdD1lLmZldGNoSWZSZWYobik7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpY29udGludWU7Y29uc3QgaT10LmdldFJhdygiUGciKTtpZihpIGluc3RhbmNlb2YgUmVmKXthPWk7YnJlYWt9cy5wdXNoKHQpfX19aWYoIWEpe2NvbnN0IHQ9NDA7bGV0IHM9bjtmb3IobGV0IG49MDtuPHQ7bisrKXtjb25zdCB0PXMuZ2V0UmF3KCJQIik7aWYoISh0IGluc3RhbmNlb2YgUmVmKSlicmVhaztjb25zdCBuPWUuZmV0Y2godCk7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpYnJlYWs7aWYoaXNOYW1lKG4uZ2V0KCJUeXBlIiksIlN0cnVjdFRyZWVSb290IikpYnJlYWs7Y29uc3Qgcj1uLmdldFJhdygiUGciKTtpZihyIGluc3RhbmNlb2YgUmVmKXthPXI7YnJlYWt9cz1ufX1pZighYSlyZXR1cm4gbnVsbDtsZXQgcj1udWxsLGk9bnVsbDtjb25zdCBvPW4uZ2V0KCJBIik7aWYobyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9bG9va3VwUmVjdChvLmdldEFycmF5KCJCQm94IiksbnVsbCk7aWYoZSl7cj1lWzBdO2k9ZVszXX19cmV0dXJuW2Ese25hbWU6IlhZWiJ9LHIsaSxudWxsXX1zdGF0aWMgcGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6ZSxyZXN1bHRPYmo6dCxkb2NCYXNlVXJsOm49bnVsbCxkb2NBdHRhY2htZW50czphPW51bGx9KXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl7d2FybigicGFyc2VEZXN0RGljdGlvbmFyeTogYGRlc3REaWN0YCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm59bGV0IHMscixpPWUuZ2V0KCJBIik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpaWYoZS5oYXMoIkRlc3QiKSlpPWUuZ2V0KCJEZXN0Iik7ZWxzZXtpPWUuZ2V0KCJBQSIpO2kgaW5zdGFuY2VvZiBEaWN0JiYoaS5oYXMoIkQiKT9pPWkuZ2V0KCJEIik6aS5oYXMoIlUiKSYmKGk9aS5nZXQoIlUiKSkpfWlmKGkgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPWkuZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpe3dhcm4oInBhcnNlRGVzdERpY3Rpb25hcnk6IEludmFsaWQgdHlwZSBpbiBBY3Rpb24gZGljdGlvbmFyeS4iKTtyZXR1cm59Y29uc3Qgbj1lLm5hbWU7c3dpdGNoKG4pe2Nhc2UiUmVzZXRGb3JtIjpjb25zdCBlPWkuZ2V0KCJGbGFncyIpLG89ISgxJigibnVtYmVyIj09dHlwZW9mIGU/ZTowKSksbD1bXSxmPVtdO2Zvcihjb25zdCBlIG9mIGkuZ2V0KCJGaWVsZHMiKXx8W10pZSBpbnN0YW5jZW9mIFJlZj9mLnB1c2goZS50b1N0cmluZygpKToic3RyaW5nIj09dHlwZW9mIGUmJmwucHVzaChzdHJpbmdUb1BERlN0cmluZyhlKSk7dC5yZXNldEZvcm09e2ZpZWxkczpsLHJlZnM6ZixpbmNsdWRlOm99O2JyZWFrO2Nhc2UiVVJJIjpzPWkuZ2V0KCJVUkkiKTtzIGluc3RhbmNlb2YgTmFtZSYmKHM9Ii8iK3MubmFtZSk7YnJlYWs7Y2FzZSJHb1RvIjpyPWkuZ2V0KCJEIik7YnJlYWs7Y2FzZSJMYXVuY2giOmNhc2UiR29Ub1IiOmNvbnN0IGM9aS5nZXQoIkYiKTtpZihjIGluc3RhbmNlb2YgRGljdClzPW5ldyBGaWxlU3BlYyhjKS5maWxlbmFtZTtlbHNle2lmKCJzdHJpbmciIT10eXBlb2YgYylicmVhaztzPWN9Y29uc3QgaD1mZXRjaFJlbW90ZURlc3QoaSk7aCYmKHM9cy5zcGxpdCgiIyIsMSlbMF0rIiMiK2gpO2NvbnN0IHU9aS5nZXQoIk5ld1dpbmRvdyIpOyJib29sZWFuIj09dHlwZW9mIHUmJih0Lm5ld1dpbmRvdz11KTticmVhaztjYXNlIkdvVG9FIjpjb25zdCBtPWkuZ2V0KCJUIik7bGV0IHA9bnVsbDtpZihtIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1tLmdldCgiUiIpLHQ9bS5nZXQoIk4iKTtpc05hbWUoZSwiQyIpJiYic3RyaW5nIj09dHlwZW9mIHQmJihwPXN0cmluZ1RvUERGU3RyaW5nKHQsITApKX1pZihhJiZwKXt0LmF0dGFjaG1lbnRJZD1wO3QuYXR0YWNobWVudD1hLmdldChwKTtjb25zdCBlPWZldGNoUmVtb3RlRGVzdChpKTtlJiYodC5hdHRhY2htZW50RGVzdD1lKX1lbHNlIHdhcm4oJ3BhcnNlRGVzdERpY3Rpb25hcnkgLSB1bmltcGxlbWVudGVkICJHb1RvRSIgYWN0aW9uLicpO2JyZWFrO2Nhc2UiTmFtZWQiOmNvbnN0IGQ9aS5nZXQoIk4iKTtkIGluc3RhbmNlb2YgTmFtZSYmKHQuYWN0aW9uPWQubmFtZSk7YnJlYWs7Y2FzZSJTZXRPQ0dTdGF0ZSI6Y29uc3QgZz1pLmdldCgiU3RhdGUiKSxiPWkuZ2V0KCJQcmVzZXJ2ZVJCIik7aWYoIUFycmF5LmlzQXJyYXkoZyl8fDA9PT1nLmxlbmd0aClicmVhaztjb25zdCB3PVtdO2Zvcihjb25zdCBlIG9mIGcpaWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOmNhc2UiVG9nZ2xlIjp3LnB1c2goZS5uYW1lKX1lbHNlIGUgaW5zdGFuY2VvZiBSZWYmJncucHVzaChlLnRvU3RyaW5nKCkpO2lmKHcubGVuZ3RoIT09Zy5sZW5ndGgpYnJlYWs7dC5zZXRPQ0dTdGF0ZT17c3RhdGU6dyxwcmVzZXJ2ZVJCOiJib29sZWFuIiE9dHlwZW9mIGJ8fGJ9O2JyZWFrO2Nhc2UiSmF2YVNjcmlwdCI6Y29uc3Qgaj1pLmdldCgiSlMiKTtsZXQgaztqIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9rPWouZ2V0U3RyaW5nKCk6InN0cmluZyI9PXR5cGVvZiBqJiYoaz1qKTtjb25zdCB5PWsmJnJlY292ZXJKc1VSTChzdHJpbmdUb1BERlN0cmluZyhrLCEwKSk7aWYoeSl7cz15LnVybDt0Lm5ld1dpbmRvdz15Lm5ld1dpbmRvdzticmVha31kZWZhdWx0OmlmKCJKYXZhU2NyaXB0Ij09PW58fCJTdWJtaXRGb3JtIj09PW4pYnJlYWs7d2FybihgcGFyc2VEZXN0RGljdGlvbmFyeSAtIHVuc3VwcG9ydGVkIGFjdGlvbjogIiR7bn0iLmApfX1lbHNlIGUuaGFzKCJEZXN0IikmJihyPWUuZ2V0KCJEZXN0IikpO2lmKCJzdHJpbmciPT10eXBlb2Ygcyl7Y29uc3QgZT1jcmVhdGVWYWxpZEFic29sdXRlVXJsKHMsbix7YWRkRGVmYXVsdFByb3RvY29sOiEwLHRyeUNvbnZlcnRFbmNvZGluZzohMH0pO2UmJih0LnVybD1lLmhyZWYpO3QudW5zYWZlVXJsPXN9aWYocil7ciBpbnN0YW5jZW9mIE5hbWUmJihyPXIubmFtZSk7InN0cmluZyI9PXR5cGVvZiByP3QuZGVzdD1zdHJpbmdUb1BERlN0cmluZyhyLCEwKTp0byhyKSYmKHQuZGVzdD1yKX1pZighKHQuZGVzdHx8dC51cmx8fHQuYWN0aW9ufHx0LmF0dGFjaG1lbnR8fHQuc2V0T0NHU3RhdGV8fHQucmVzZXRGb3JtKSl7Y29uc3Qgbj1lLmdldFJhdygiU0UiKTtpZihuIGluc3RhbmNlb2YgUmVmKXRyeXtjb25zdCBhPUNhdGFsb2cuI3l0KGUueHJlZixuKTthJiYodC5kZXN0PWEpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIlNFIHBhcnNpbmcgZmFpbGVkLiIpfX19fWZ1bmN0aW9uIGNyZWF0ZUltYWdlRGljdChlLHQsbixhKXtjb25zdCBzPW5ldyBEaWN0KGUpO3Muc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtzLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkltYWdlIikpO3Muc2V0KCJCaXRzUGVyQ29tcG9uZW50Iiw4KTtzLnNldElmTmFtZSgiQ29sb3JTcGFjZSIsYSk7cy5zZXQoIldpZHRoIix0KTtzLnNldCgiSGVpZ2h0IixuKTtyZXR1cm4gc31mdW5jdGlvbiBjcmVhdGVSYXdJbWFnZShlLHQpe3JldHVybiBuZXcgU3RyZWFtKGUsMCxlLmxlbmd0aCx0KX1mdW5jdGlvbiBwYWV0aFByZWRpY3RvcihlLHQsbil7Y29uc3QgYT1lK3QtbixzPU1hdGguYWJzKGEtZSkscj1NYXRoLmFicyhhLXQpLGk9TWF0aC5hYnMoYS1uKTtyZXR1cm4gczw9ciYmczw9aT9lOnI8PWk/dDpufWFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVBOR0xpa2VJbWFnZShlLHQsbixhKXtjb25zdCBzPWUubGVuZ3RoLyh0Km4pO2xldCByO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBDb21wcmVzc2lvblN0cmVhbSl0cnl7Y29uc3QgYT1mdW5jdGlvbiBhcHBseVBOR09wdGltdW1GaWx0ZXIoZSx0LG4sYSl7Y29uc3Qgcz10KmEscj1uZXcgVWludDhBcnJheShuKihzKzEpKSxpPVtuZXcgVWludDhBcnJheShzKSxuZXcgVWludDhBcnJheShzKSxuZXcgVWludDhBcnJheShzKSxuZXcgVWludDhBcnJheShzKSxuZXcgVWludDhBcnJheShzKV07Zm9yKGxldCB0PTA7dDxuO3QrKyl7Y29uc3Qgbj10KnMsbz1uLXMsbD1bMCwwLDAsMCwwXTtmb3IobGV0IHI9MDtyPHM7cisrKXtjb25zdCBzPW4rcixmPWVbc10sYz1yPj1hP2Vbcy1hXTowLGg9dD4wP2VbbytyXTowLHU9dD4wJiZyPj1hP2VbbytyLWFdOjA7aVswXVtyXT1mO2lbMV1bcl09Zi1jJjI1NTtpWzJdW3JdPWYtaCYyNTU7aVszXVtyXT1mLShjK2g+PjEpJjI1NTtpWzRdW3JdPWYtcGFldGhQcmVkaWN0b3IoYyxoLHUpJjI1NTtmb3IobGV0IGU9MDtlPDU7ZSsrKXtjb25zdCB0PWlbZV1bcl07bFtlXSs9dDwxMjg/dDoyNTYtdH19bGV0IGY9MDtmb3IobGV0IGU9MTtlPDU7ZSsrKWxbZV08bFtmXSYmKGY9ZSk7Y29uc3QgYz10KihzKzEpO3JbY109ZjtyLnNldChpW2ZdLGMrMSl9cmV0dXJuIHJ9KGUsdCxuLHMpO3I9YXdhaXQgYXN5bmMgZnVuY3Rpb24gZGVmbGF0ZShlKXtjb25zdCB0PW5ldyBDb21wcmVzc2lvblN0cmVhbSgiZGVmbGF0ZSIpLG49dC53cml0YWJsZS5nZXRXcml0ZXIoKSxhPShhc3luYygpPT57dHJ5e2F3YWl0IG4ucmVhZHk7YXdhaXQgbi53cml0ZShlKTthd2FpdCBuLnJlYWR5O2F3YWl0IG4uY2xvc2UoKX1jYXRjaChlKXthd2FpdCBuLmFib3J0KGUpLmNhdGNoKCgpPT57fSk7dGhyb3cgZX19KSgpLFtzXT1hd2FpdCBQcm9taXNlLmFsbChbbmV3IFJlc3BvbnNlKHQucmVhZGFibGUpLmJ5dGVzKCksYS50aGVuKCgpPT5udWxsKV0pO3JldHVybiBzfShhKX1jYXRjaHt9aWYoIXIpcmV0dXJuIGNyZWF0ZVJhd0ltYWdlKGUsYSk7YS5zZXRJZk5hbWUoIkZpbHRlciIsIkZsYXRlRGVjb2RlIik7Y29uc3QgaT1uZXcgRGljdChhLnhyZWYpO2kuc2V0KCJQcmVkaWN0b3IiLDE1KTtpLnNldCgiQ29sdW1ucyIsdCk7aS5zZXQoIkNvbG9ycyIscyk7aS5zZXQoIkJpdHNQZXJDb21wb25lbnQiLDgpO2Euc2V0KCJEZWNvZGVQYXJtcyIsaSk7cmV0dXJuIGNyZWF0ZVJhd0ltYWdlKHIsYSl9YXN5bmMgZnVuY3Rpb24gY3JlYXRlSW1hZ2UoZSx0LHtjbG9zZUJpdG1hcDpuPSExfT17fSl7Y29uc3R7d2lkdGg6YSxoZWlnaHQ6c309ZTtpZighTnVtYmVyLmlzSW50ZWdlcihhKXx8IU51bWJlci5pc0ludGVnZXIocyl8fGE8PTB8fHM8PTApe24mJmUuY2xvc2U/LigpO3Rocm93IG5ldyBFcnJvcihgY3JlYXRlSW1hZ2U6IGludmFsaWQgYml0bWFwIGRpbWVuc2lvbnMgJHthfXgke3N9YCl9Y29uc3Qgcj1uZXcgT2Zmc2NyZWVuQ2FudmFzKGEscyksaT1yLmdldENvbnRleHQoIjJkIix7YWxwaGE6ITAsd2lsbFJlYWRGcmVxdWVudGx5OiEwfSk7bGV0IG87dHJ5e2kuZHJhd0ltYWdlKGUsMCwwKTtvPWkuZ2V0SW1hZ2VEYXRhKDAsMCxhLHMpLmRhdGF9ZmluYWxseXtuJiZlLmNsb3NlPy4oKX1jb25zdCBsPW5ldyBVaW50MzJBcnJheShvLmJ1ZmZlcixvLmJ5dGVPZmZzZXQsby5ieXRlTGVuZ3RoPj4yKSxmPUZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuLGM9Zj8xNjc3NzIxNTo0Mjk0OTY3MDQwLGg9bmV3IFNldDtsZXQgdT0hMSxtPSEwO2Zvcihjb25zdCBlIG9mIGwpe2lmKDI1NSE9KGY/ZT4+PjI0OjI1NSZlKSl7dT0hMDticmVha31pZihtKXtoLmFkZCgoZSZjKT4+PjApO2lmKGguc2l6ZT4xNjM4NCl7bT0hMTtoLmNsZWFyKCl9fX11JiYobT0hMCk7Y29uc3QgcD1jcmVhdGVJbWFnZURpY3QodCxhLHMsIkRldmljZVJHQiIpO2xldCBkLGc9bnVsbDtpZihtKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGEqcyozKTtmb3IobGV0IHQ9MCxuPTAsYT1vLmxlbmd0aDt0PGE7dCs9NCxuKz0zKXtlW25dPW9bdF07ZVtuKzFdPW9bdCsxXTtlW24rMl09b1t0KzJdfWQ9Y3JlYXRlUE5HTGlrZUltYWdlKGUsYSxzLHApO2c9Y3JlYXRlUmF3SW1hZ2UoZSxjcmVhdGVJbWFnZURpY3QodCxhLHMsIkRldmljZVJHQiIpKX1lbHNle3Auc2V0SWZOYW1lKCJGaWx0ZXIiLCJEQ1REZWNvZGUiKTtkPXIuY29udmVydFRvQmxvYih7dHlwZToiaW1hZ2UvanBlZyIscXVhbGl0eToxfSkudGhlbihlPT5lLmJ5dGVzKCkpLnRoZW4oZT0+Y3JlYXRlUmF3SW1hZ2UoZSxwKSl9bGV0IGI9UHJvbWlzZS5yZXNvbHZlKG51bGwpLHc9bnVsbDtpZih1KXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGwubGVuZ3RoKTtpZihmKWZvcihsZXQgdD0wLG49bC5sZW5ndGg7dDxuO3QrKyllW3RdPWxbdF0+Pj4yNDtlbHNlIGZvcihsZXQgdD0wLG49bC5sZW5ndGg7dDxuO3QrKyllW3RdPTI1NSZsW3RdO2NvbnN0IG49Y3JlYXRlSW1hZ2VEaWN0KHQsYSxzLCJEZXZpY2VHcmF5Iikscj1jcmVhdGVJbWFnZURpY3QodCxhLHMsIkRldmljZUdyYXkiKTtiPWNyZWF0ZVBOR0xpa2VJbWFnZShlLGEscyxuKTt3PWNyZWF0ZVJhd0ltYWdlKGUscil9Y29uc3RbaixrXT1hd2FpdCBQcm9taXNlLmFsbChbZCxiXSk7cmV0dXJue2ltYWdlU3RyZWFtOmosaW1hZ2VSZW5kZXJTdHJlYW06ZyxzbWFza1N0cmVhbTprLHNtYXNrUmVuZGVyU3RyZWFtOncsd2lkdGg6YSxoZWlnaHQ6c319ZnVuY3Rpb24gbWF5SGF2ZUNoaWxkcmVuKGUpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmfHxlIGluc3RhbmNlb2YgRGljdHx8ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW18fEFycmF5LmlzQXJyYXkoZSl9ZnVuY3Rpb24gYWRkQ2hpbGRyZW4oZSx0KXtpZihlIGluc3RhbmNlb2YgRGljdCllPWUuZ2V0UmF3VmFsdWVzKCk7ZWxzZSBpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSllPWUuZGljdC5nZXRSYXdWYWx1ZXMoKTtlbHNlIGlmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybjtmb3IoY29uc3QgbiBvZiBlKW1heUhhdmVDaGlsZHJlbihuKSYmdC5wdXNoKG4pfWNsYXNzIE9iamVjdExvYWRlcntyZWZTZXQ9bmV3IFJlZlNldDtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5kaWN0PWU7dGhpcy5rZXlzPXQ7dGhpcy54cmVmPW59YXN5bmMgbG9hZCgpe2NvbnN0e2tleXM6ZSxkaWN0OnR9PXRoaXMsbj1bXTtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPXQuZ2V0UmF3KGEpO3ZvaWQgMCE9PWUmJm4ucHVzaChlKX1hd2FpdCB0aGlzLiNxdChuKTt0aGlzLnJlZlNldD1udWxsfWFzeW5jI3F0KGUpe2NvbnN0IHQ9W10sbj1bXTtmb3IoO2UubGVuZ3RoOyl7bGV0IGE9ZS5wb3AoKTtpZihhIGluc3RhbmNlb2YgUmVmKXtpZih0aGlzLnJlZlNldC5oYXMoYSkpY29udGludWU7dHJ5e3RoaXMucmVmU2V0LnB1dChhKTthPXRoaXMueHJlZi5mZXRjaChhKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpe3dhcm4oYE9iamVjdExvYWRlci4jd2FsayAtIHJlcXVlc3RpbmcgYWxsIGRhdGE6ICIke2V9Ii5gKTthd2FpdCB0aGlzLnhyZWYuc3RyZWFtLm1hbmFnZXIucmVxdWVzdEFsbENodW5rcygpO3JldHVybn10LnB1c2goYSk7bi5wdXNoKHtiZWdpbjplLmJlZ2luLGVuZDplLmVuZH0pfX1pZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7Y29uc3QgZT1hLmdldEJhc2VTdHJlYW1zKCk7aWYoZSl7bGV0IHM9ITE7Zm9yKGNvbnN0IHQgb2YgZSlpZighdC5pc0RhdGFMb2FkZWQpe3M9ITA7bi5wdXNoKHtiZWdpbjp0LnN0YXJ0LGVuZDp0LmVuZH0pfXMmJnQucHVzaChhKX19YWRkQ2hpbGRyZW4oYSxlKX1pZihuLmxlbmd0aCl7YXdhaXQgdGhpcy54cmVmLnN0cmVhbS5tYW5hZ2VyLnJlcXVlc3RSYW5nZXMobik7Zm9yKGNvbnN0IGUgb2YgdCllIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnJlZlNldC5yZW1vdmUoZSk7YXdhaXQgdGhpcy4jcXQodCl9fXN0YXRpYyBhc3luYyBsb2FkKGUsdCxuKXtpZihuLnN0cmVhbS5pc0RhdGFMb2FkZWQpcmV0dXJuO2NvbnN0IGE9bmV3IE9iamVjdExvYWRlcihlLHQsbik7YXdhaXQgYS5sb2FkKCl9fWNvbnN0IG5vPVN5bWJvbCgpLGFvPVN5bWJvbCgpLHNvPVN5bWJvbCgpLHJvPVN5bWJvbCgpLGlvPVN5bWJvbCgpLG9vPVN5bWJvbCgpLGxvPVN5bWJvbCgpLGZvPVN5bWJvbCgpLGNvPVN5bWJvbCgpLGhvPVN5bWJvbCgiY29udGVudCIpLHVvPVN5bWJvbCgiZGF0YSIpLG1vPVN5bWJvbCgpLHBvPVN5bWJvbCgiZXh0cmEiKSxnbz1TeW1ib2woKSxibz1TeW1ib2woKSx3bz1TeW1ib2woKSxqbz1TeW1ib2woKSxrbz1TeW1ib2woKSx5bz1TeW1ib2woKSxxbz1TeW1ib2woKSx2bz1TeW1ib2woKSxTbz1TeW1ib2woKSxBbz1TeW1ib2woKSx4bz1TeW1ib2woKSxDbz1TeW1ib2woKSxJbz1TeW1ib2woKSxGbz1TeW1ib2woKSxSbz1TeW1ib2woKSxPbz1TeW1ib2woKSxIbz1TeW1ib2woKSxCbz1TeW1ib2woKSxEbz1TeW1ib2woKSxNbz1TeW1ib2woKSxObz1TeW1ib2woKSxQbz1TeW1ib2woKSxFbz1TeW1ib2woKSxfbz1TeW1ib2woKSx6bz1TeW1ib2woKSxMbz1TeW1ib2woKSxVbz1TeW1ib2woKSxXbz1TeW1ib2woKSxYbz1TeW1ib2woKSxLbz1TeW1ib2woKSxHbz1TeW1ib2woKSxWbz1TeW1ib2woKSwkbz1TeW1ib2woIm5hbWVzcGFjZUlkIiksWW89U3ltYm9sKCJub2RlTmFtZSIpLEpvPVN5bWJvbCgpLFFvPVN5bWJvbCgpLFpvPVN5bWJvbCgpLGVsPVN5bWJvbCgpLHRsPVN5bWJvbCgpLG5sPVN5bWJvbCgpLGFsPVN5bWJvbCgpLHNsPVN5bWJvbCgpLHJsPVN5bWJvbCgicm9vdCIpLGlsPVN5bWJvbCgpLG9sPVN5bWJvbCgpLGxsPVN5bWJvbCgpLGZsPVN5bWJvbCgpLGNsPVN5bWJvbCgpLGhsPVN5bWJvbCgpLHVsPVN5bWJvbCgpLG1sPVN5bWJvbCgpLHBsPVN5bWJvbCgpLGRsPVN5bWJvbCgpLGdsPVN5bWJvbCgpLGJsPVN5bWJvbCgidWlkIiksd2w9U3ltYm9sKCksamw9e2NvbmZpZzp7aWQ6MCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGNpLyIpfSxjb25uZWN0aW9uU2V0OntpZDoxLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtY29ubmVjdGlvbi1zZXQvIil9LGRhdGFzZXRzOntpZDoyLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8iKX0sZm9ybTp7aWQ6MyxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWZvcm0vIil9LGxvY2FsZVNldDp7aWQ6NCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWxvY2FsZS1zZXQvIil9LHBkZjp7aWQ6NSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvcGRmLyI9PT1lfSxzaWduYXR1cmU6e2lkOjYsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPT09ZX0sc291cmNlU2V0OntpZDo3LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtc291cmNlLXNldC8iKX0sc3R5bGVzaGVldDp7aWQ6OCxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj09PWV9LHRlbXBsYXRlOntpZDo5LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtdGVtcGxhdGUvIil9LHhkYzp7aWQ6MTAsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hkYy8iKX0seGRwOntpZDoxMSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvIj09PWV9LHhmZGY6e2lkOjEyLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hmZGYvIj09PWV9LHhodG1sOntpZDoxMyxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI9PT1lfSx4bXBtZXRhOntpZDoxNCxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94bXBtZXRhLyI9PT1lfX0sa2w9e3B0OmU9PmUsY206ZT0+ZS8yLjU0KjcyLG1tOmU9PmUvMjUuNCo3MixpbjplPT43MiplLHB4OmU9PmV9LHlsPS8oWystXT9cZCtcLj9cZCopKC4qKS87ZnVuY3Rpb24gc3RyaXBRdW90ZXMoZSl7cmV0dXJuIGUuc3RhcnRzV2l0aCgiJyIpfHxlLnN0YXJ0c1dpdGgoJyInKT9lLnNsaWNlKDEsLTEpOmV9ZnVuY3Rpb24gZ2V0SW50ZWdlcih7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOm59KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IGE9cGFyc2VJbnQoZSwxMCk7cmV0dXJuIWlzTmFOKGEpJiZuKGEpP2E6dH1mdW5jdGlvbiBnZXRGbG9hdCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOm59KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IGE9cGFyc2VGbG9hdChlKTtyZXR1cm4haXNOYU4oYSkmJm4oYSk/YTp0fWZ1bmN0aW9uIGdldEtleXdvcmQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dCx2YWxpZGF0ZTpufSl7cmV0dXJuIGUmJm4oZT1lLnRyaW0oKSk/ZTp0fWZ1bmN0aW9uIGdldFN0cmluZ09wdGlvbihlLHQpe3JldHVybiBnZXRLZXl3b3JkKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnRbMF0sdmFsaWRhdGU6ZT0+dC5pbmNsdWRlcyhlKX0pfWZ1bmN0aW9uIGdldE1lYXN1cmVtZW50KGUsdD0iMCIpe3R8fD0iMCI7aWYoIWUpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0IG49ZS50cmltKCkubWF0Y2goeWwpO2lmKCFuKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtjb25zdFssYSxzXT1uLHI9cGFyc2VGbG9hdChhKTtpZihpc05hTihyKSlyZXR1cm4gZ2V0TWVhc3VyZW1lbnQodCk7aWYoMD09PXIpcmV0dXJuIDA7Y29uc3QgaT1rbFtzXTtyZXR1cm4gaT9pKHIpOnJ9ZnVuY3Rpb24gZ2V0UmF0aW8oZSl7aWYoIWUpcmV0dXJue251bToxLGRlbjoxfTtjb25zdCB0PWUuc3BsaXQoIjoiLDIpLm1hcChlPT5wYXJzZUZsb2F0KGUudHJpbSgpKSkuZmlsdGVyKGU9PiFpc05hTihlKSk7MT09PXQubGVuZ3RoJiZ0LnB1c2goMSk7aWYoMD09PXQubGVuZ3RoKXJldHVybntudW06MSxkZW46MX07Y29uc3RbbixhXT10O3JldHVybntudW06bixkZW46YX19ZnVuY3Rpb24gZ2V0UmVsZXZhbnQoZSl7cmV0dXJuIGU/ZS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcChlPT4oe2V4Y2x1ZGVkOiItIj09PWVbMF0sdmlld25hbWU6ZS5zdWJzdHJpbmcoMSl9KSk6W119Y2xhc3MgSFRNTFJlc3VsdHtzdGF0aWMgZ2V0IEZBSUxVUkUoKXtyZXR1cm4gc2hhZG93KHRoaXMsIkZBSUxVUkUiLG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxudWxsKSl9c3RhdGljIGdldCBFTVBUWSgpe3JldHVybiBzaGFkb3codGhpcywiRU1QVFkiLG5ldyBIVE1MUmVzdWx0KCEwLG51bGwsbnVsbCxudWxsKSl9Y29uc3RydWN0b3IoZSx0LG4sYSl7dGhpcy5zdWNjZXNzPWU7dGhpcy5odG1sPXQ7dGhpcy5iYm94PW47dGhpcy5icmVha05vZGU9YX1pc0JyZWFrKCl7cmV0dXJuISF0aGlzLmJyZWFrTm9kZX1zdGF0aWMgYnJlYWtOb2RlKGUpe3JldHVybiBuZXcgSFRNTFJlc3VsdCghMSxudWxsLG51bGwsZSl9c3RhdGljIHN1Y2Nlc3MoZSx0PW51bGwpe3JldHVybiBuZXcgSFRNTFJlc3VsdCghMCxlLHQsbnVsbCl9fWNsYXNzIEZvbnRGaW5kZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5mb250cz1uZXcgTWFwO3RoaXMuY2FjaGU9bmV3IE1hcDt0aGlzLndhcm5lZD1uZXcgU2V0O3RoaXMuZGVmYXVsdEZvbnQ9bnVsbDt0aGlzLmFkZChlKX1hZGQoZSx0PW51bGwpe2Zvcihjb25zdCB0IG9mIGUpdGhpcy5hZGRQZGZGb250KHQpO2Zvcihjb25zdCBlIG9mIHRoaXMuZm9udHMudmFsdWVzKCkpZS5yZWd1bGFyfHw9ZS5pdGFsaWN8fGUuYm9sZHx8ZS5ib2xkaXRhbGljO2lmKCF0fHwwPT09dC5zaXplKXJldHVybjtjb25zdCBuPXRoaXMuZm9udHMuZ2V0KCJQZGZKUy1GYWxsYmFjay1QZGZKUy1YRkEiKTtmb3IoY29uc3QgZSBvZiB0KXRoaXMuZm9udHMuc2V0KGUsbil9YWRkUGRmRm9udChlKXtjb25zdCB0PWUuY3NzRm9udEluZm8sbj10LmZvbnRGYW1pbHksYT10aGlzLmZvbnRzLmdldE9ySW5zZXJ0Q29tcHV0ZWQobixtYWtlT2JqKTt0aGlzLmRlZmF1bHRGb250Pz89YTtsZXQgcz0iIjtjb25zdCByPXBhcnNlRmxvYXQodC5mb250V2VpZ2h0KTswIT09cGFyc2VGbG9hdCh0Lml0YWxpY0FuZ2xlKT9zPXI+PTcwMD8iYm9sZGl0YWxpYyI6Iml0YWxpYyI6cj49NzAwJiYocz0iYm9sZCIpO2lmKCFzKXsoZS5uYW1lLmluY2x1ZGVzKCJCb2xkIil8fGUucHNOYW1lPy5pbmNsdWRlcygiQm9sZCIpKSYmKHM9ImJvbGQiKTsoZS5uYW1lLmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5uYW1lLmVuZHNXaXRoKCJJdCIpfHxlLnBzTmFtZT8uaW5jbHVkZXMoIkl0YWxpYyIpfHxlLnBzTmFtZT8uZW5kc1dpdGgoIkl0IikpJiYocys9Iml0YWxpYyIpfXN8fD0icmVndWxhciI7YVtzXT1lfWdldERlZmF1bHQoKXtyZXR1cm4gdGhpcy5kZWZhdWx0Rm9udH1maW5kKGUsdD0hMCl7bGV0IG49dGhpcy5mb250cy5nZXQoZSl8fHRoaXMuY2FjaGUuZ2V0KGUpO2lmKG4pcmV0dXJuIG47Y29uc3QgYT0vWyxcLV8gXXxib2xkaXRhbGljfGJvbGR8aXRhbGljfHJlZ3VsYXJ8aXQvZ2k7bGV0IHM9ZS5yZXBsYWNlQWxsKGEsIiIpO249dGhpcy5mb250cy5nZXQocyk7aWYobil7dGhpcy5jYWNoZS5zZXQoZSxuKTtyZXR1cm4gbn1zPXMudG9Mb3dlckNhc2UoKTtjb25zdCByPVtdO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5mb250cyllLnJlcGxhY2VBbGwoYSwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHMpJiZyLnB1c2godCk7aWYoMD09PXIubGVuZ3RoKWZvcihjb25zdCBlIG9mIHRoaXMuZm9udHMudmFsdWVzKCkpZS5yZWd1bGFyLm5hbWU/LnJlcGxhY2VBbGwoYSwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHMpJiZyLnB1c2goZSk7aWYoMD09PXIubGVuZ3RoKXtzPXMucmVwbGFjZUFsbCgvcHNtdHxtdC9naSwiIik7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLmZvbnRzKWUucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocykmJnIucHVzaCh0KX1pZigwPT09ci5sZW5ndGgpZm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocykmJnIucHVzaChlKTtpZihyLmxlbmd0aD49MSl7MSE9PXIubGVuZ3RoJiZ0JiZ3YXJuKGBYRkEgLSBUb28gbWFueSBjaG9pY2VzIHRvIGd1ZXNzIHRoZSBjb3JyZWN0IGZvbnQ6ICR7ZX1gKTt0aGlzLmNhY2hlLnNldChlLHJbMF0pO3JldHVybiByWzBdfWlmKHQmJiF0aGlzLndhcm5lZC5oYXMoZSkpe3RoaXMud2FybmVkLmFkZChlKTt3YXJuKGBYRkEgLSBDYW5ub3QgZmluZCB0aGUgZm9udDogJHtlfWApfXJldHVybiBudWxsfX1mdW5jdGlvbiBzZWxlY3RGb250KGUsdCl7cmV0dXJuIml0YWxpYyI9PT1lLnBvc3R1cmU/ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkaXRhbGljOnQuaXRhbGljOiJib2xkIj09PWUud2VpZ2h0P3QuYm9sZDp0LnJlZ3VsYXJ9Y2xhc3MgRm9udEluZm97Y29uc3RydWN0b3IoZSx0LG4sYSl7dGhpcy5saW5lSGVpZ2h0PW47dGhpcy5wYXJhTWFyZ2luPXR8fHt0b3A6MCxib3R0b206MCxsZWZ0OjAscmlnaHQ6MH07aWYoIWUpe1t0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpO3JldHVybn10aGlzLnhmYUZvbnQ9e3R5cGVmYWNlOmUudHlwZWZhY2UscG9zdHVyZTplLnBvc3R1cmUsd2VpZ2h0OmUud2VpZ2h0LHNpemU6ZS5zaXplLGxldHRlclNwYWNpbmc6ZS5sZXR0ZXJTcGFjaW5nfTtjb25zdCBzPWEuZmluZChlLnR5cGVmYWNlKTtpZihzKXt0aGlzLnBkZkZvbnQ9c2VsZWN0Rm9udChlLHMpO3RoaXMucGRmRm9udHx8KFt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpKX1lbHNlW3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQoYSl9ZGVmYXVsdEZvbnQoZSl7Y29uc3QgdD1lLmZpbmQoIkhlbHZldGljYSIsITEpfHxlLmZpbmQoIk15cmlhZCBQcm8iLCExKXx8ZS5maW5kKCJBcmlhbCIsITEpfHxlLmdldERlZmF1bHQoKTtpZih0Py5yZWd1bGFyKXtjb25zdCBlPXQucmVndWxhcjtyZXR1cm5bZSx7dHlwZWZhY2U6ZS5jc3NGb250SW5mby5mb250RmFtaWx5LHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19cmV0dXJuW251bGwse3R5cGVmYWNlOiJDb3VyaWVyIixwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfX1jbGFzcyBGb250U2VsZWN0b3J7Y29uc3RydWN0b3IoZSx0LG4sYSl7dGhpcy5mb250RmluZGVyPWE7dGhpcy5zdGFjaz1bbmV3IEZvbnRJbmZvKGUsdCxuLGEpXX1wdXNoRGF0YShlLHQsbil7Y29uc3QgYT10aGlzLnN0YWNrLmF0KC0xKTtmb3IoY29uc3QgdCBvZlsidHlwZWZhY2UiLCJwb3N0dXJlIiwid2VpZ2h0Iiwic2l6ZSIsImxldHRlclNwYWNpbmciXSllW3RdfHw9YS54ZmFGb250W3RdO2Zvcihjb25zdCBlIG9mWyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXSlpc05hTih0W2VdKSYmKHRbZV09YS5wYXJhTWFyZ2luW2VdKTtjb25zdCBzPW5ldyBGb250SW5mbyhlLHQsbnx8YS5saW5lSGVpZ2h0LHRoaXMuZm9udEZpbmRlcik7cy5wZGZGb250fHw9YS5wZGZGb250O3RoaXMuc3RhY2sucHVzaChzKX1wb3BGb250KCl7dGhpcy5zdGFjay5wb3AoKX10b3BGb250KCl7cmV0dXJuIHRoaXMuc3RhY2suYXQoLTEpfX1jbGFzcyBUZXh0TWVhc3VyZXtjb25zdHJ1Y3RvcihlLHQsbixhKXt0aGlzLmdseXBocz1bXTt0aGlzLmZvbnRTZWxlY3Rvcj1uZXcgRm9udFNlbGVjdG9yKGUsdCxuLGEpO3RoaXMuZXh0cmFIZWlnaHQ9MH1wdXNoRGF0YShlLHQsbil7dGhpcy5mb250U2VsZWN0b3IucHVzaERhdGEoZSx0LG4pfXBvcEZvbnQoZSl7cmV0dXJuIHRoaXMuZm9udFNlbGVjdG9yLnBvcEZvbnQoKX1hZGRQYXJhKCl7Y29uc3QgZT10aGlzLmZvbnRTZWxlY3Rvci50b3BGb250KCk7dGhpcy5leHRyYUhlaWdodCs9ZS5wYXJhTWFyZ2luLnRvcCtlLnBhcmFNYXJnaW4uYm90dG9tfWFkZFN0cmluZyhlKXtpZighZSlyZXR1cm47Y29uc3QgdD10aGlzLmZvbnRTZWxlY3Rvci50b3BGb250KCksbj10LnhmYUZvbnQuc2l6ZTtpZih0LnBkZkZvbnQpe2NvbnN0IGE9dC54ZmFGb250LmxldHRlclNwYWNpbmcscz10LnBkZkZvbnQscj1zLmxpbmVIZWlnaHR8fDEuMixpPXQubGluZUhlaWdodHx8TWF0aC5tYXgoMS4yLHIpKm4sbz1yLSh2b2lkIDA9PT1zLmxpbmVHYXA/LjI6cy5saW5lR2FwKSxsPU1hdGgubWF4KDEsbykqbixmPW4vMWUzLGM9cy5kZWZhdWx0V2lkdGh8fHMuY2hhcnNUb0dseXBocygiICIpWzBdLndpZHRoO2Zvcihjb25zdCB0IG9mIGUuc3BsaXQoL1tcdTIwMjlcbl0vKSl7Y29uc3QgZT1zLmVuY29kZVN0cmluZyh0KS5qb2luKCIiKSxuPXMuY2hhcnNUb0dseXBocyhlKTtmb3IoY29uc3QgZSBvZiBuKXtjb25zdCB0PWUud2lkdGh8fGM7dGhpcy5nbHlwaHMucHVzaChbdCpmK2EsaSxsLGUudW5pY29kZSwhMV0pfXRoaXMuZ2x5cGhzLnB1c2goWzAsMCwwLCJcbiIsITBdKX10aGlzLmdseXBocy5wb3AoKTtyZXR1cm59Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCIiKSl0aGlzLmdseXBocy5wdXNoKFtuLDEuMipuLG4sZSwhMV0pO3RoaXMuZ2x5cGhzLnB1c2goWzAsMCwwLCJcbiIsITBdKX10aGlzLmdseXBocy5wb3AoKX1jb21wdXRlKGUpe2xldCB0PS0xLG49MCxhPTAscz0wLHI9MCxpPTAsbz0hMSxsPSEwO2ZvcihsZXQgZj0wLGM9dGhpcy5nbHlwaHMubGVuZ3RoO2Y8YztmKyspe2NvbnN0W2MsaCx1LG0scF09dGhpcy5nbHlwaHNbZl0sZD0iICI9PT1tLGc9bD91Omg7aWYocCl7YT1NYXRoLm1heChhLHIpO3I9MDtzKz1pO2k9Zzt0PS0xO249MDtsPSExfWVsc2UgaWYoZClpZihyK2M+ZSl7YT1NYXRoLm1heChhLHIpO3I9MDtzKz1pO2k9Zzt0PS0xO249MDtvPSEwO2w9ITF9ZWxzZXtpPU1hdGgubWF4KGcsaSk7bj1yO3IrPWM7dD1mfWVsc2UgaWYocitjPmUpe3MrPWk7aT1nO2lmKC0xIT09dCl7Zj10O2E9TWF0aC5tYXgoYSxuKTtyPTA7dD0tMTtuPTB9ZWxzZXthPU1hdGgubWF4KGEscik7cj1jfW89ITA7bD0hMX1lbHNle3IrPWM7aT1NYXRoLm1heChnLGkpfX1hPU1hdGgubWF4KGEscik7cys9aSt0aGlzLmV4dHJhSGVpZ2h0O3JldHVybnt3aWR0aDoxLjAyKmEsaGVpZ2h0OnMsaXNCcm9rZW46b319fWNvbnN0IHFsPS9eW14uW10rLyx2bD0vXlteXF1dKy8sU2w9MCxBbD0xLHhsPTIsQ2w9MyxJbD00LEZsPW5ldyBNYXAoW1siJGRhdGEiLChlLHQpPT5lLmRhdGFzZXRzP2UuZGF0YXNldHMuZGF0YTplXSxbIiRyZWNvcmQiLChlLHQpPT4oZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZSlbQ29dKClbMF1dLFsiJHRlbXBsYXRlIiwoZSx0KT0+ZS50ZW1wbGF0ZV0sWyIkY29ubmVjdGlvblNldCIsKGUsdCk9PmUuY29ubmVjdGlvblNldF0sWyIkZm9ybSIsKGUsdCk9PmUuZm9ybV0sWyIkbGF5b3V0IiwoZSx0KT0+ZS5sYXlvdXRdLFsiJGhvc3QiLChlLHQpPT5lLmhvc3RdLFsiJGRhdGFXaW5kb3ciLChlLHQpPT5lLmRhdGFXaW5kb3ddLFsiJGV2ZW50IiwoZSx0KT0+ZS5ldmVudF0sWyIhIiwoZSx0KT0+ZS5kYXRhc2V0c10sWyIkeGZhIiwoZSx0KT0+ZV0sWyJ4ZmEiLChlLHQpPT5lXSxbIiQiLChlLHQpPT50XV0pLFRsPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHBhcnNlSW5kZXgoZSl7cmV0dXJuIioiPT09KGU9ZS50cmltKCkpPzEvMDpwYXJzZUludChlLDEwKXx8MH1mdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oZSx0LG49ITApe2xldCBhPWUubWF0Y2gocWwpO2lmKCFhKXJldHVybiBudWxsO2xldFtzXT1hO2NvbnN0IHI9W3tuYW1lOnMsY2FjaGVOYW1lOiIuIitzLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsLG9wZXJhdG9yOlNsfV07bGV0IGk9cy5sZW5ndGg7Zm9yKDtpPGUubGVuZ3RoOyl7Y29uc3Qgbz1pO2lmKCJbIj09PWUuY2hhckF0KGkrKykpe2E9ZS5zbGljZShpKS5tYXRjaCh2bCk7aWYoIWEpe3dhcm4oIlhGQSAtIEludmFsaWQgaW5kZXggaW4gU09NIGV4cHJlc3Npb24iKTtyZXR1cm4gbnVsbH1yLmF0KC0xKS5pbmRleD1wYXJzZUluZGV4KGFbMF0pO2krPWFbMF0ubGVuZ3RoKzE7Y29udGludWV9bGV0IGw7c3dpdGNoKGUuY2hhckF0KGkpKXtjYXNlIi4iOmlmKCF0KXJldHVybiBudWxsO2krKztsPUFsO2JyZWFrO2Nhc2UiIyI6aSsrO2w9eGw7YnJlYWs7Y2FzZSJbIjppZihuKXt3YXJuKCJYRkEgLSBTT00gZXhwcmVzc2lvbiBjb250YWlucyBhIEZvcm1DYWxjIHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpO3JldHVybiBudWxsfWw9Q2w7YnJlYWs7Y2FzZSIoIjppZihuKXt3YXJuKCJYRkEgLSBTT00gZXhwcmVzc2lvbiBjb250YWlucyBhIEphdmFTY3JpcHQgc3ViZXhwcmVzc2lvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGZvciBub3cuIik7cmV0dXJuIG51bGx9bD1JbDticmVhaztkZWZhdWx0Omw9U2x9YT1lLnNsaWNlKGkpLm1hdGNoKHFsKTtpZighYSlicmVhaztbc109YTtpKz1zLmxlbmd0aDtyLnB1c2goe25hbWU6cyxjYWNoZU5hbWU6ZS5zbGljZShvLGkpLG9wZXJhdG9yOmwsaW5kZXg6MCxqczpudWxsLGZvcm1DYWxjOm51bGx9KX1yZXR1cm4gcn1mdW5jdGlvbiBzZWFyY2hOb2RlKGUsdCxuLGE9ITAscz0hMCl7Y29uc3Qgcj1wYXJzZUV4cHJlc3Npb24obixhKTtpZighcilyZXR1cm4gbnVsbDtjb25zdCBpPUZsLmdldChyWzBdLm5hbWUpO2xldCBvLGw9MDtpZihpKXtvPSEwO2U9W2koZSx0KV07bD0xfWVsc2V7bz1udWxsPT09dDtlPVt0fHxlXX1mb3IobGV0IG49ci5sZW5ndGg7bDxuO2wrKyl7Y29uc3R7bmFtZTpuLGNhY2hlTmFtZTphLG9wZXJhdG9yOmksaW5kZXg6Zn09cltsXSxjPVtdO2Zvcihjb25zdCB0IG9mIGUpe2lmKCF0LmlzWEZBT2JqZWN0KWNvbnRpbnVlO2xldCBlLHI7aWYocyl7cj1UbC5nZXRPckluc2VydENvbXB1dGVkKHQsbWFrZU1hcCk7ZT1yLmdldChhKX1pZighZSl7c3dpdGNoKGkpe2Nhc2UgU2w6ZT10W3FvXShuLCExKTticmVhaztjYXNlIEFsOmU9dFtxb10obiwhMCk7YnJlYWs7Y2FzZSB4bDplPXRbeW9dKG4pO2U9ZS5pc1hGQU9iamVjdEFycmF5P2UuY2hpbGRyZW46W2VdfXMmJnIuc2V0KGEsZSl9ZS5sZW5ndGg+MCYmYy5wdXNoKGUpfWlmKDA9PT1jLmxlbmd0aCYmIW8mJjA9PT1sKXtjb25zdCBuPXRbT29dKCk7aWYoISh0PW4pKXJldHVybiBudWxsO2w9LTE7ZT1bdF07Y29udGludWV9ZT1pc0Zpbml0ZShmKT9jLmZpbHRlcihlPT5mPGUubGVuZ3RoKS5tYXAoZT0+ZVtmXSk6Yy5mbGF0KCl9cmV0dXJuIDA9PT1lLmxlbmd0aD9udWxsOmV9ZnVuY3Rpb24gY3JlYXRlRGF0YU5vZGUoZSx0LG4pe2NvbnN0IGE9cGFyc2VFeHByZXNzaW9uKG4pO2lmKCFhKXJldHVybiBudWxsO2lmKGEuc29tZShlPT5lLm9wZXJhdG9yPT09QWwpKXJldHVybiBudWxsO2NvbnN0IHM9RmwuZ2V0KGFbMF0ubmFtZSk7bGV0IHI9MDtpZihzKXtlPXMoZSx0KTtyPTF9ZWxzZSBlPXR8fGU7Zm9yKGxldCB0PWEubGVuZ3RoO3I8dDtyKyspe2NvbnN0e25hbWU6dCxvcGVyYXRvcjpuLGluZGV4OnN9PWFbcl07aWYoIWlzRmluaXRlKHMpKXthW3JdLmluZGV4PTA7cmV0dXJuIGUuY3JlYXRlTm9kZXMoYS5zbGljZShyKSl9bGV0IGk7c3dpdGNoKG4pe2Nhc2UgU2w6aT1lW3FvXSh0LCExKTticmVhaztjYXNlIEFsOmk9ZVtxb10odCwhMCk7YnJlYWs7Y2FzZSB4bDppPWVbeW9dKHQpO2k9aS5pc1hGQU9iamVjdEFycmF5P2kuY2hpbGRyZW46W2ldfWlmKDA9PT1pLmxlbmd0aClyZXR1cm4gZS5jcmVhdGVOb2RlcyhhLnNsaWNlKHIpKTtpZighKHM8aS5sZW5ndGgpKXthW3JdLmluZGV4PXMtaS5sZW5ndGg7cmV0dXJuIGUuY3JlYXRlTm9kZXMoYS5zbGljZShyKSl9e2NvbnN0IHQ9aVtzXTtpZighdC5pc1hGQU9iamVjdCl7d2FybigiWEZBIC0gQ2Fubm90IGNyZWF0ZSBhIG5vZGUuIik7cmV0dXJuIG51bGx9ZT10fX1yZXR1cm4gbnVsbH1jb25zdCBSbD1TeW1ib2woKSxIbD1TeW1ib2woKSxCbD1TeW1ib2woKSxEbD1TeW1ib2woIl9jaGlsZHJlbiIpLE1sPVN5bWJvbCgpLE5sPVN5bWJvbCgpLFBsPVN5bWJvbCgpLEVsPVN5bWJvbCgpLF9sPVN5bWJvbCgpLHpsPVN5bWJvbCgpLExsPVN5bWJvbCgpLFdsPVN5bWJvbCgpLFhsPVN5bWJvbCgpLEtsPVN5bWJvbCgicGFyZW50IiksR2w9U3ltYm9sKCksVmw9U3ltYm9sKCksJGw9U3ltYm9sKCk7bGV0IFlsPTA7Y29uc3QgSmw9amwuZGF0YXNldHMuaWQ7Y2xhc3MgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxuPSExKXt0aGlzWyRvXT1lO3RoaXNbWW9dPXQ7dGhpc1tMbF09bjt0aGlzW0tsXT1udWxsO3RoaXNbRGxdPVtdO3RoaXNbYmxdPWAke3R9JHtZbCsrfWA7dGhpc1tCb109bnVsbH1nZXQgaXNYRkFPYmplY3QoKXtyZXR1cm4hMH1nZXQgaXNYRkFPYmplY3RBcnJheSgpe3JldHVybiExfWNyZWF0ZU5vZGVzKGUpe2xldCB0PXRoaXMsbj1udWxsO2Zvcihjb25zdHtuYW1lOmEsaW5kZXg6c31vZiBlKXtmb3IobGV0IGU9MCxyPWlzRmluaXRlKHMpP3M6MDtlPD1yO2UrKyl7Y29uc3QgZT10WyRvXT09PUpsPy0xOnRbJG9dO249bmV3IFhtbE9iamVjdChlLGEpO3Rbc29dKG4pfXQ9bn1yZXR1cm4gbn1bUW9dKGUpe2lmKCF0aGlzW0xsXXx8IXRoaXNbWm9dKGUpKXJldHVybiExO2NvbnN0IHQ9ZVtZb10sbj10aGlzW3RdO2lmKCEobiBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KSl7bnVsbCE9PW4mJnRoaXNbc2xdKG4pO3RoaXNbdF09ZTt0aGlzW3NvXShlKTtyZXR1cm4hMH1pZihuLnB1c2goZSkpe3RoaXNbc29dKGUpO3JldHVybiEwfWxldCBhPSIiO3RoaXMuaWQ/YT1gIChpZDogJHt0aGlzLmlkfSlgOnRoaXMubmFtZSYmKGE9YCAobmFtZTogJHt0aGlzLm5hbWV9ICR7dGhpcy5oLnZhbHVlfSlgKTt3YXJuKGBYRkEgLSBub2RlICIke3RoaXNbWW9dfSIke2F9IGhhcyBhbHJlYWR5IGVub3VnaCAiJHt0fSIhYCk7cmV0dXJuITF9W1pvXShlKXtyZXR1cm4gT2JqZWN0Lmhhc093bih0aGlzLGVbWW9dKSYmZVskb109PT10aGlzWyRvXX1bVW9dKCl7cmV0dXJuITF9W25vXSgpe3JldHVybiExfVtFb10oKXtyZXR1cm4hMX1bX29dKCl7cmV0dXJuITF9W25sXSgpe3RoaXMucGFyYSYmdGhpc1tIb10oKVtwb10ucGFyYVN0YWNrLnBvcCgpfVthbF0oKXt0aGlzW0hvXSgpW3BvXS5wYXJhU3RhY2sucHVzaCh0aGlzLnBhcmEpfVtsbF0oZSl7dGhpcy5pZCYmdGhpc1skb109PT1qbC50ZW1wbGF0ZS5pZCYmZS5zZXQodGhpcy5pZCx0aGlzKX1bSG9dKCl7cmV0dXJuIHRoaXNbQm9dLnRlbXBsYXRlfVtXb10oKXtyZXR1cm4hMX1bWG9dKCl7cmV0dXJuITF9W3NvXShlKXtlW0tsXT10aGlzO3RoaXNbRGxdLnB1c2goZSk7IWVbQm9dJiZ0aGlzW0JvXSYmKGVbQm9dPXRoaXNbQm9dKX1bc2xdKGUpe2NvbnN0IHQ9dGhpc1tEbF0uaW5kZXhPZihlKTt0aGlzW0RsXS5zcGxpY2UodCwxKX1bRG9dKCl7cmV0dXJuIE9iamVjdC5oYXNPd24odGhpcywidmFsdWUiKX1bY2xdKGUpe31bZWxdKGUpe31bZ29dKCl7fVtpb10oZSl7ZGVsZXRlIHRoaXNbTGxdO2lmKHRoaXNbbG9dKXtlLmNsZWFuKHRoaXNbbG9dKTtkZWxldGUgdGhpc1tsb119fVtOb10oZSl7cmV0dXJuIHRoaXNbRGxdLmluZGV4T2YoZSl9W1BvXShlLHQpe3RbS2xdPXRoaXM7dGhpc1tEbF0uc3BsaWNlKGUsMCx0KTshdFtCb10mJnRoaXNbQm9dJiYodFtCb109dGhpc1tCb10pfVtLb10oKXtyZXR1cm4hdGhpcy5uYW1lfVtWb10oKXtyZXR1cm4iIn1bdWxdKCl7cmV0dXJuIDA9PT10aGlzW0RsXS5sZW5ndGg/dGhpc1tob106dGhpc1tEbF0ubWFwKGU9PmVbdWxdKCkpLmpvaW4oIiIpfWdldFtCbF0oKXtjb25zdCBlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtpZighZS5fYXR0cmlidXRlcyl7Y29uc3QgdD1lLl9hdHRyaWJ1dGVzPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKG51bGw9PT10aGlzW2VdfHx0aGlzW2VdaW5zdGFuY2VvZiBYRkFPYmplY3R8fHRoaXNbZV1pbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KWJyZWFrO3QuYWRkKGUpfX1yZXR1cm4gc2hhZG93KHRoaXMsQmwsZS5fYXR0cmlidXRlcyl9W0xvXShlKXtsZXQgdD10aGlzO2Zvcig7dDspe2lmKHQ9PT1lKXJldHVybiEwO3Q9dFtPb10oKX1yZXR1cm4hMX1bT29dKCl7cmV0dXJuIHRoaXNbS2xdfVtSb10oKXtyZXR1cm4gdGhpc1tPb10oKX1bQ29dKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tlXTp0aGlzW0RsXX1bbW9dKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXNbaG9dJiYoZS4kY29udGVudD10aGlzW2hvXSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IG49dGhpc1t0XTtudWxsIT09biYmKG4gaW5zdGFuY2VvZiBYRkFPYmplY3Q/ZVt0XT1uW21vXSgpOm4gaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9uLmlzRW1wdHkoKXx8KGVbdF09bi5kdW1wKCkpOmVbdF09bil9cmV0dXJuIGV9W2dsXSgpe3JldHVybiBudWxsfVtwbF0oKXtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX0qW0lvXSgpe2Zvcihjb25zdCBlIG9mIHRoaXNbQ29dKCkpeWllbGQgZX0qW0VsXShlLHQpe2Zvcihjb25zdCBuIG9mIHRoaXNbSW9dKCkpaWYoIWV8fHQ9PT1lLmhhcyhuW1lvXSkpe2NvbnN0IGU9dGhpc1trb10oKSx0PW5bcGxdKGUpO3Quc3VjY2Vzc3x8KHRoaXNbcG9dLmZhaWxpbmdOb2RlPW4pO3lpZWxkIHR9fVtib10oKXtyZXR1cm4gbnVsbH1bYW9dKGUsdCl7dGhpc1twb10uY2hpbGRyZW4ucHVzaChlKX1ba29dKCl7fVtyb10oe2ZpbHRlcjplPW51bGwsaW5jbHVkZTp0PSEwfSl7aWYodGhpc1twb10uZ2VuZXJhdG9yKXtjb25zdCBlPXRoaXNba29dKCksdD10aGlzW3BvXS5mYWlsaW5nTm9kZVtwbF0oZSk7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbYW9dKHQuaHRtbCx0LmJib3gpO2RlbGV0ZSB0aGlzW3BvXS5mYWlsaW5nTm9kZX1lbHNlIHRoaXNbcG9dLmdlbmVyYXRvcj10aGlzW0VsXShlLHQpO2Zvcig7Oyl7Y29uc3QgZT10aGlzW3BvXS5nZW5lcmF0b3IubmV4dCgpO2lmKGUuZG9uZSlicmVhaztjb25zdCB0PWUudmFsdWU7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbYW9dKHQuaHRtbCx0LmJib3gpfXRoaXNbcG9dLmdlbmVyYXRvcj1udWxsO3JldHVybiBIVE1MUmVzdWx0LkVNUFRZfVtmbF0oZSl7dGhpc1tWbF09bmV3IFNldChPYmplY3Qua2V5cyhlKSl9W3psXShlKXtjb25zdCB0PXRoaXNbQmxdLG49dGhpc1tWbF07cmV0dXJuIGUua2V5cygpLmZpbHRlcihlPT50LmhhcyhlKSYmIW4uaGFzKGUpKS50b0FycmF5KCl9W2lsXShlLHQ9bmV3IFNldCl7Zm9yKGNvbnN0IG4gb2YgdGhpc1tEbF0pbltHbF0oZSx0KX1bR2xdKGUsdCl7Y29uc3Qgbj10aGlzW19sXShlLHQpO24/dGhpc1tSbF0obixlLHQpOnRoaXNbaWxdKGUsdCl9W19sXShlLHQpe2NvbnN0e3VzZTpuLHVzZWhyZWY6YX09dGhpcztpZighbiYmIWEpcmV0dXJuIG51bGw7bGV0IHM9bnVsbCxyPW51bGwsaT1udWxsLG89bjtpZihhKXtvPWE7YS5zdGFydHNXaXRoKCIjc29tKCIpJiZhLmVuZHNXaXRoKCIpIik/cj1hLnNsaWNlKDUsLTEpOmEuc3RhcnRzV2l0aCgiLiNzb20oIikmJmEuZW5kc1dpdGgoIikiKT9yPWEuc2xpY2UoNiwtMSk6YS5zdGFydHNXaXRoKCIjIik/aT1hLnNsaWNlKDEpOmEuc3RhcnRzV2l0aCgiLiMiKSYmKGk9YS5zbGljZSgyKSl9ZWxzZSBuLnN0YXJ0c1dpdGgoIiMiKT9pPW4uc2xpY2UoMSk6cj1uO3RoaXMudXNlPXRoaXMudXNlaHJlZj0iIjtpZihpKXM9ZS5nZXQoaSk7ZWxzZXtzPXNlYXJjaE5vZGUoZS5nZXQocmwpLHRoaXMsciwhMCwhMSk7cyYmPXNbMF19aWYoIXMpe3dhcm4oYFhGQSAtIEludmFsaWQgcHJvdG90eXBlIHJlZmVyZW5jZTogJHtvfS5gKTtyZXR1cm4gbnVsbH1pZihzW1lvXSE9PXRoaXNbWW9dKXt3YXJuKGBYRkEgLSBJbmNvbXBhdGlibGUgcHJvdG90eXBlOiAke3NbWW9dfSAhPT0gJHt0aGlzW1lvXX0uYCk7cmV0dXJuIG51bGx9aWYodC5oYXMocykpe3dhcm4oIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybiBudWxsfXQuYWRkKHMpO2NvbnN0IGw9c1tfbF0oZSx0KTtsJiZzW1JsXShsLGUsdCk7c1tpbF0oZSx0KTt0LmRlbGV0ZShzKTtyZXR1cm4gc31bUmxdKGUsdCxuKXtpZihuLmhhcyhlKSl7d2FybigiWEZBIC0gQ3ljbGUgZGV0ZWN0ZWQgaW4gcHJvdG90eXBlcyB1c2UuIik7cmV0dXJufSF0aGlzW2hvXSYmZVtob10mJih0aGlzW2hvXT1lW2hvXSk7bmV3IFNldChuKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1t6bF0oZVtWbF0pKXt0aGlzW3RdPWVbdF07dGhpc1tWbF0mJnRoaXNbVmxdLmFkZCh0KX1mb3IoY29uc3QgYSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1tCbF0uaGFzKGEpKWNvbnRpbnVlO2NvbnN0IHM9dGhpc1thXSxyPWVbYV07aWYocyBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiBzW0RsXSllW0dsXSh0LG4pO2ZvcihsZXQgYT1zW0RsXS5sZW5ndGgsaT1yW0RsXS5sZW5ndGg7YTxpO2ErKyl7Y29uc3Qgcj1lW0RsXVthXVtmb10oKTtpZighcy5wdXNoKHIpKWJyZWFrO3JbS2xdPXRoaXM7dGhpc1tEbF0ucHVzaChyKTtyW0dsXSh0LG4pfX1lbHNlIGlmKG51bGw9PT1zKXtpZihudWxsIT09cil7Y29uc3QgZT1yW2ZvXSgpO2VbS2xdPXRoaXM7dGhpc1thXT1lO3RoaXNbRGxdLnB1c2goZSk7ZVtHbF0odCxuKX19ZWxzZXtzW2lsXSh0LG4pO3ImJnNbUmxdKHIsdCxuKX19fXN0YXRpY1tNbF0oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5tYXAoZT0+WEZBT2JqZWN0W01sXShlKSk6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9PYmplY3QuYXNzaWduKHt9LGUpOmV9W2ZvXSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykpO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModGhpcykpdHJ5e2VbdF09dGhpc1t0XX1jYXRjaHtzaGFkb3coZSx0LHRoaXNbdF0pfWVbYmxdPWAke2VbWW9dfSR7WWwrK31gO2VbRGxdPVtdO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZih0aGlzW0JsXS5oYXModCkpe2VbdF09WEZBT2JqZWN0W01sXSh0aGlzW3RdKTtjb250aW51ZX1jb25zdCBuPXRoaXNbdF07ZVt0XT1uIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXk/bmV3IFhGQU9iamVjdEFycmF5KG5bV2xdKTpudWxsfWZvcihjb25zdCB0IG9mIHRoaXNbRGxdKXtjb25zdCBuPXRbWW9dLGE9dFtmb10oKTtlW0RsXS5wdXNoKGEpO2FbS2xdPWU7bnVsbD09PWVbbl0/ZVtuXT1hOmVbbl1bRGxdLnB1c2goYSl9cmV0dXJuIGV9W0NvXShlPW51bGwpe3JldHVybiBlP3RoaXNbRGxdLmZpbHRlcih0PT50W1lvXT09PWUpOnRoaXNbRGxdfVt5b10oZSl7cmV0dXJuIHRoaXNbZV19W3FvXShlLHQsbj0hMCl7cmV0dXJuIEFycmF5LmZyb20odGhpc1t2b10oZSx0LG4pKX0qW3ZvXShlLHQsbj0hMCl7aWYoInBhcmVudCIhPT1lKXtmb3IoY29uc3QgbiBvZiB0aGlzW0RsXSl7bltZb109PT1lJiYoeWllbGQgbik7bi5uYW1lPT09ZSYmKHlpZWxkIG4pOyh0fHxuW0tvXSgpKSYmKHlpZWxkKm5bdm9dKGUsdCwhMSkpfW4mJnRoaXNbQmxdLmhhcyhlKSYmKHlpZWxkIG5ldyBYRkFBdHRyaWJ1dGUodGhpcyxlLHRoaXNbZV0pKX1lbHNlIHlpZWxkIHRoaXNbS2xdfX1jbGFzcyBYRkFPYmplY3RBcnJheXtjb25zdHJ1Y3RvcihlPTEvMCl7dGhpc1tXbF09ZTt0aGlzW0RsXT1bXX1nZXQgaXNYRkFPYmplY3QoKXtyZXR1cm4hMX1nZXQgaXNYRkFPYmplY3RBcnJheSgpe3JldHVybiEwfXB1c2goZSl7aWYodGhpc1tEbF0ubGVuZ3RoPD10aGlzW1dsXSl7dGhpc1tEbF0ucHVzaChlKTtyZXR1cm4hMH13YXJuKGBYRkEgLSBub2RlICIke2VbWW9dfSIgYWNjZXB0cyBubyBtb3JlIHRoYW4gJHt0aGlzW1dsXX0gY2hpbGRyZW5gKTtyZXR1cm4hMX1pc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzW0RsXS5sZW5ndGh9ZHVtcCgpe3JldHVybiAxPT09dGhpc1tEbF0ubGVuZ3RoP3RoaXNbRGxdWzBdW21vXSgpOnRoaXNbRGxdLm1hcChlPT5lW21vXSgpKX1bZm9dKCl7Y29uc3QgZT1uZXcgWEZBT2JqZWN0QXJyYXkodGhpc1tXbF0pO2VbRGxdPXRoaXNbRGxdLm1hcChlPT5lW2ZvXSgpKTtyZXR1cm4gZX1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpc1tEbF19Y2xlYXIoKXt0aGlzW0RsXS5sZW5ndGg9MH19Y2xhc3MgWEZBQXR0cmlidXRle2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzW0tsXT1lO3RoaXNbWW9dPXQ7dGhpc1tob109bjt0aGlzW2NvXT0hMTt0aGlzW2JsXT0iYXR0cmlidXRlIitZbCsrfVtPb10oKXtyZXR1cm4gdGhpc1tLbF19W3pvXSgpe3JldHVybiEwfVtTb10oKXtyZXR1cm4gdGhpc1tob10udHJpbSgpfVtjbF0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2hvXT1lLnRvU3RyaW5nKCl9W3VsXSgpe3JldHVybiB0aGlzW2hvXX1bTG9dKGUpe3JldHVybiB0aGlzW0tsXT09PWV8fHRoaXNbS2xdW0xvXShlKX19Y2xhc3MgWG1sT2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxuPXt9KXtzdXBlcihlLHQpO3RoaXNbaG9dPSIiO3RoaXNbTmxdPW51bGw7aWYoIiN0ZXh0IiE9PXQpe2NvbnN0IGU9bmV3IE1hcDt0aGlzW0hsXT1lO2Zvcihjb25zdFt0LGFdb2YgT2JqZWN0LmVudHJpZXMobikpZS5zZXQodCxuZXcgWEZBQXR0cmlidXRlKHRoaXMsdCxhKSk7aWYoT2JqZWN0Lmhhc093bihuLEpvKSl7Y29uc3QgZT1uW0pvXS54ZmEuZGF0YU5vZGU7dm9pZCAwIT09ZSYmKCJkYXRhR3JvdXAiPT09ZT90aGlzW05sXT0hMToiZGF0YVZhbHVlIj09PWUmJih0aGlzW05sXT0hMCkpfX10aGlzW2NvXT0hMX1bZGxdKGUpe2NvbnN0IHQ9dGhpc1tZb107aWYoIiN0ZXh0Ij09PXQpe2UucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzW2hvXSkpO3JldHVybn1jb25zdCBuPXV0ZjhTdHJpbmdUb1N0cmluZyh0KSxhPXRoaXNbJG9dPT09Smw/InhmYToiOiIiO2UucHVzaChgPCR7YX0ke259YCk7Zm9yKGNvbnN0W3Qsbl1vZiB0aGlzW0hsXSl7Y29uc3QgYT11dGY4U3RyaW5nVG9TdHJpbmcodCk7ZS5wdXNoKGAgJHthfT0iJHtlbmNvZGVUb1htbFN0cmluZyhuW2hvXSl9ImApfW51bGwhPT10aGlzW05sXSYmKHRoaXNbTmxdP2UucHVzaCgnIHhmYTpkYXRhTm9kZT0iZGF0YVZhbHVlIicpOmUucHVzaCgnIHhmYTpkYXRhTm9kZT0iZGF0YUdyb3VwIicpKTtpZih0aGlzW2hvXXx8MCE9PXRoaXNbRGxdLmxlbmd0aCl7ZS5wdXNoKCI+Iik7aWYodGhpc1tob10pInN0cmluZyI9PXR5cGVvZiB0aGlzW2hvXT9lLnB1c2goZW5jb2RlVG9YbWxTdHJpbmcodGhpc1tob10pKTp0aGlzW2hvXVtkbF0oZSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW0RsXSl0W2RsXShlKTtlLnB1c2goYDwvJHthfSR7bn0+YCl9ZWxzZSBlLnB1c2goIi8+Iil9W1FvXShlKXtpZih0aGlzW2hvXSl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbJG9dLCIjdGV4dCIpO3RoaXNbc29dKGUpO2VbaG9dPXRoaXNbaG9dO3RoaXNbaG9dPSIifXRoaXNbc29dKGUpO3JldHVybiEwfVtlbF0oZSl7dGhpc1tob10rPWV9W2dvXSgpe2lmKHRoaXNbaG9dJiZ0aGlzW0RsXS5sZW5ndGg+MCl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbJG9dLCIjdGV4dCIpO3RoaXNbc29dKGUpO2VbaG9dPXRoaXNbaG9dO2RlbGV0ZSB0aGlzW2hvXX19W3BsXSgpe3JldHVybiIjdGV4dCI9PT10aGlzW1lvXT9IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6IiN0ZXh0Iix2YWx1ZTp0aGlzW2hvXX0pOkhUTUxSZXN1bHQuRU1QVFl9W0NvXShlPW51bGwpe3JldHVybiBlP3RoaXNbRGxdLmZpbHRlcih0PT50W1lvXT09PWUpOnRoaXNbRGxdfVtqb10oKXtyZXR1cm4gdGhpc1tIbF19W3lvXShlKXtjb25zdCB0PXRoaXNbSGxdLmdldChlKTtyZXR1cm4gdm9pZCAwIT09dD90OnRoaXNbQ29dKGUpfSpbdm9dKGUsdCl7Y29uc3Qgbj10aGlzW0hsXS5nZXQoZSk7biYmKHlpZWxkIG4pO2Zvcihjb25zdCBuIG9mIHRoaXNbRGxdKXtuW1lvXT09PWUmJih5aWVsZCBuKTt0JiYoeWllbGQqblt2b10oZSx0KSl9fSpbd29dKGUsdCl7Y29uc3Qgbj10aGlzW0hsXS5nZXQoZSk7IW58fHQmJm5bY29dfHwoeWllbGQgbik7Zm9yKGNvbnN0IG4gb2YgdGhpc1tEbF0peWllbGQqblt3b10oZSx0KX0qW3hvXShlLHQsbil7Zm9yKGNvbnN0IGEgb2YgdGhpc1tEbF0pe2FbWW9dIT09ZXx8biYmYVtjb118fCh5aWVsZCBhKTt0JiYoeWllbGQqYVt4b10oZSx0LG4pKX19W3pvXSgpe3JldHVybiBudWxsPT09dGhpc1tObF0/MD09PXRoaXNbRGxdLmxlbmd0aHx8dGhpc1tEbF1bMF1bJG9dPT09amwueGh0bWwuaWQ6dGhpc1tObF19W1NvXSgpe3JldHVybiBudWxsPT09dGhpc1tObF0/MD09PXRoaXNbRGxdLmxlbmd0aD90aGlzW2hvXS50cmltKCk6dGhpc1tEbF1bMF1bJG9dPT09amwueGh0bWwuaWQ/dGhpc1tEbF1bMF1bdWxdKCkudHJpbSgpOm51bGw6dGhpc1tob10udHJpbSgpfVtjbF0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2hvXT1lLnRvU3RyaW5nKCl9W21vXShlPSExKXtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7ZSYmKHQuJG5zPXRoaXNbJG9dKTt0aGlzW2hvXSYmKHQuJGNvbnRlbnQ9dGhpc1tob10pO3QuJG5hbWU9dGhpc1tZb107dC5jaGlsZHJlbj1bXTtmb3IoY29uc3QgbiBvZiB0aGlzW0RsXSl0LmNoaWxkcmVuLnB1c2goblttb10oZSkpO3QuYXR0cmlidXRlcz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtlLG5db2YgdGhpc1tIbF0pdC5hdHRyaWJ1dGVzW2VdPW5baG9dO3JldHVybiB0fX1jbGFzcyBDb250ZW50T2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KTt0aGlzW2hvXT0iIn1bZWxdKGUpe3RoaXNbaG9dKz1lfVtnb10oKXt9fWNsYXNzIE9wdGlvbk9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKGUsdCk7dGhpc1tYbF09bn1bZ29dKCl7dGhpc1tob109Z2V0S2V5d29yZCh7ZGF0YTp0aGlzW2hvXSxkZWZhdWx0VmFsdWU6dGhpc1tYbF1bMF0sdmFsaWRhdGU6ZT0+dGhpc1tYbF0uaW5jbHVkZXMoZSl9KX1baW9dKGUpe3N1cGVyW2lvXShlKTtkZWxldGUgdGhpc1tYbF19fWNsYXNzIFN0cmluZ09iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7W2dvXSgpe3RoaXNbaG9dPXRoaXNbaG9dLnRyaW0oKX19Y2xhc3MgSW50ZWdlck9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LG4sYSl7c3VwZXIoZSx0KTt0aGlzW1BsXT1uO3RoaXNbJGxdPWF9W2dvXSgpe3RoaXNbaG9dPWdldEludGVnZXIoe2RhdGE6dGhpc1tob10sZGVmYXVsdFZhbHVlOnRoaXNbUGxdLHZhbGlkYXRlOnRoaXNbJGxdfSl9W2lvXShlKXtzdXBlcltpb10oZSk7ZGVsZXRlIHRoaXNbUGxdO2RlbGV0ZSB0aGlzWyRsXX19Y2xhc3MgT3B0aW9uMDEgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LDAsZT0+MT09PWUpfX1jbGFzcyBPcHRpb24xMCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsMSxlPT4wPT09ZSl9fWZ1bmN0aW9uIG1lYXN1cmVUb1N0cmluZyhlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/IjBweCI6TnVtYmVyLmlzSW50ZWdlcihlKT9gJHtlfXB4YDpgJHtlLnRvRml4ZWQoMil9cHhgfWNvbnN0IFFsPXthbmNob3JUeXBlKGUsdCl7Y29uc3Qgbj1lW1JvXSgpO2lmKG4mJighbi5sYXlvdXR8fCJwb3NpdGlvbiI9PT1uLmxheW91dCkpeyJ0cmFuc2Zvcm0iaW4gdHx8KHQudHJhbnNmb3JtPSIiKTtzd2l0Y2goZS5hbmNob3JUeXBlKXtjYXNlImJvdHRvbUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwgLTEwMCUpIjticmVhaztjYXNlImJvdHRvbUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTEwMCUpIjticmVhaztjYXNlImJvdHRvbVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtMTAwJSkiO2JyZWFrO2Nhc2UibWlkZGxlQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLC01MCUpIjticmVhaztjYXNlIm1pZGRsZUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTUwJSkiO2JyZWFrO2Nhc2UibWlkZGxlUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLC01MCUpIjticmVhaztjYXNlInRvcENlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwwKSI7YnJlYWs7Y2FzZSJ0b3BSaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsMCkifX19LGRpbWVuc2lvbnMoZSx0KXtjb25zdCBuPWVbUm9dKCk7bGV0IGE9ZS53O2NvbnN0IHM9ZS5oO2lmKG4ubGF5b3V0Py5pbmNsdWRlcygicm93Iikpe2NvbnN0IHQ9bltwb10scz1lLmNvbFNwYW47bGV0IHI7aWYoLTE9PT1zKXtyPU1hdGguc3VtUHJlY2lzZSh0LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4pKTt0LmN1cnJlbnRDb2x1bW49MH1lbHNle3I9TWF0aC5zdW1QcmVjaXNlKHQuY29sdW1uV2lkdGhzLnNsaWNlKHQuY3VycmVudENvbHVtbix0LmN1cnJlbnRDb2x1bW4rcykpO3QuY3VycmVudENvbHVtbj0odC5jdXJyZW50Q29sdW1uK2UuY29sU3BhbikldC5jb2x1bW5XaWR0aHMubGVuZ3RofWlzTmFOKHIpfHwoYT1lLnc9cil9dC53aWR0aD0iIiE9PWE/bWVhc3VyZVRvU3RyaW5nKGEpOiJhdXRvIjt0LmhlaWdodD0iIiE9PXM/bWVhc3VyZVRvU3RyaW5nKHMpOiJhdXRvIn0scG9zaXRpb24oZSx0KXtjb25zdCBuPWVbUm9dKCk7aWYoIW4/LmxheW91dHx8InBvc2l0aW9uIj09PW4ubGF5b3V0KXt0LnBvc2l0aW9uPSJhYnNvbHV0ZSI7dC5sZWZ0PW1lYXN1cmVUb1N0cmluZyhlLngpO3QudG9wPW1lYXN1cmVUb1N0cmluZyhlLnkpfX0scm90YXRlKGUsdCl7aWYoZS5yb3RhdGUpeyJ0cmFuc2Zvcm0iaW4gdHx8KHQudHJhbnNmb3JtPSIiKTt0LnRyYW5zZm9ybSs9YHJvdGF0ZSgtJHtlLnJvdGF0ZX1kZWcpYDt0LnRyYW5zZm9ybU9yaWdpbj0idG9wIGxlZnQifX0scHJlc2VuY2UoZSx0KXtzd2l0Y2goZS5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOnQudmlzaWJpbGl0eT0iaGlkZGVuIjticmVhaztjYXNlImhpZGRlbiI6Y2FzZSJpbmFjdGl2ZSI6dC5kaXNwbGF5PSJub25lIn19LGhBbGlnbihlLHQpe2lmKCJwYXJhIj09PWVbWW9dKXN3aXRjaChlLmhBbGlnbil7Y2FzZSJqdXN0aWZ5QWxsIjp0LnRleHRBbGlnbj0ianVzdGlmeS1hbGwiO2JyZWFrO2Nhc2UicmFkaXgiOnQudGV4dEFsaWduPSJsZWZ0IjticmVhaztkZWZhdWx0OnQudGV4dEFsaWduPWUuaEFsaWdufWVsc2Ugc3dpdGNoKGUuaEFsaWduKXtjYXNlImxlZnQiOnQuYWxpZ25TZWxmPSJzdGFydCI7YnJlYWs7Y2FzZSJjZW50ZXIiOnQuYWxpZ25TZWxmPSJjZW50ZXIiO2JyZWFrO2Nhc2UicmlnaHQiOnQuYWxpZ25TZWxmPSJlbmQifX0sbWFyZ2luKGUsdCl7ZS5tYXJnaW4mJih0Lm1hcmdpbj1lLm1hcmdpbltnbF0oKS5tYXJnaW4pfX07ZnVuY3Rpb24gc2V0TWluTWF4RGltZW5zaW9ucyhlLHQpe2lmKCJwb3NpdGlvbiI9PT1lW1JvXSgpLmxheW91dCl7ZS5taW5XPjAmJih0Lm1pbldpZHRoPW1lYXN1cmVUb1N0cmluZyhlLm1pblcpKTtlLm1heFc+MCYmKHQubWF4V2lkdGg9bWVhc3VyZVRvU3RyaW5nKGUubWF4VykpO2UubWluSD4wJiYodC5taW5IZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKGUubWluSCkpO2UubWF4SD4wJiYodC5tYXhIZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKGUubWF4SCkpfX1mdW5jdGlvbiBsYXlvdXRUZXh0KGUsdCxuLGEscyxyKXtjb25zdCBpPW5ldyBUZXh0TWVhc3VyZSh0LG4sYSxzKTsic3RyaW5nIj09dHlwZW9mIGU/aS5hZGRTdHJpbmcoZSk6ZVt0bF0oaSk7cmV0dXJuIGkuY29tcHV0ZShyKX1mdW5jdGlvbiBsYXlvdXROb2RlKGUsdCl7bGV0IG49bnVsbCxhPW51bGwscz0hMTtpZigoIWUud3x8IWUuaCkmJmUudmFsdWUpe2xldCByPTAsaT0wO2lmKGUubWFyZ2luKXtyPWUubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0O2k9ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IG89bnVsbCxsPW51bGw7aWYoZS5wYXJhKXtsPU9iamVjdC5jcmVhdGUobnVsbCk7bz0iIj09PWUucGFyYS5saW5lSGVpZ2h0P251bGw6ZS5wYXJhLmxpbmVIZWlnaHQ7bC50b3A9IiI9PT1lLnBhcmEuc3BhY2VBYm92ZT8wOmUucGFyYS5zcGFjZUFib3ZlO2wuYm90dG9tPSIiPT09ZS5wYXJhLnNwYWNlQmVsb3c/MDplLnBhcmEuc3BhY2VCZWxvdztsLmxlZnQ9IiI9PT1lLnBhcmEubWFyZ2luTGVmdD8wOmUucGFyYS5tYXJnaW5MZWZ0O2wucmlnaHQ9IiI9PT1lLnBhcmEubWFyZ2luUmlnaHQ/MDplLnBhcmEubWFyZ2luUmlnaHR9bGV0IGY9ZS5mb250O2lmKCFmKXtjb25zdCB0PWVbSG9dKCk7bGV0IG49ZVtPb10oKTtmb3IoO24mJm4hPT10Oyl7aWYobi5mb250KXtmPW4uZm9udDticmVha31uPW5bT29dKCl9fWNvbnN0IGM9KGUud3x8dC53aWR0aCktcixoPWVbQm9dLmZvbnRGaW5kZXI7aWYoZS52YWx1ZS5leERhdGEmJmUudmFsdWUuZXhEYXRhW2hvXSYmInRleHQvaHRtbCI9PT1lLnZhbHVlLmV4RGF0YS5jb250ZW50VHlwZSl7Y29uc3QgdD1sYXlvdXRUZXh0KGUudmFsdWUuZXhEYXRhW2hvXSxmLGwsbyxoLGMpO2E9dC53aWR0aDtuPXQuaGVpZ2h0O3M9dC5pc0Jyb2tlbn1lbHNle2NvbnN0IHQ9ZS52YWx1ZVt1bF0oKTtpZih0KXtjb25zdCBlPWxheW91dFRleHQodCxmLGwsbyxoLGMpO2E9ZS53aWR0aDtuPWUuaGVpZ2h0O3M9ZS5pc0Jyb2tlbn19bnVsbD09PWF8fGUud3x8KGErPXIpO251bGw9PT1ufHxlLmh8fChuKz1pKX1yZXR1cm57dzphLGg6bixpc0Jyb2tlbjpzfX1mdW5jdGlvbiBjb21wdXRlQmJveChlLHQsbil7bGV0IGE7aWYoIiIhPT1lLncmJiIiIT09ZS5oKWE9W2UueCxlLnksZS53LGUuaF07ZWxzZXtpZighbilyZXR1cm4gbnVsbDtsZXQgcz1lLnc7aWYoIiI9PT1zKXtpZigwPT09ZS5tYXhXKXtjb25zdCB0PWVbUm9dKCk7cz0icG9zaXRpb24iPT09dC5sYXlvdXQmJiIiIT09dC53PzA6ZS5taW5XfWVsc2Ugcz1NYXRoLm1pbihlLm1heFcsbi53aWR0aCk7dC5hdHRyaWJ1dGVzLnN0eWxlLndpZHRoPW1lYXN1cmVUb1N0cmluZyhzKX1sZXQgcj1lLmg7aWYoIiI9PT1yKXtpZigwPT09ZS5tYXhIKXtjb25zdCB0PWVbUm9dKCk7cj0icG9zaXRpb24iPT09dC5sYXlvdXQmJiIiIT09dC5oPzA6ZS5taW5IfWVsc2Ugcj1NYXRoLm1pbihlLm1heEgsbi5oZWlnaHQpO3QuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHIpfWE9W2UueCxlLnkscyxyXX1yZXR1cm4gYX1mdW5jdGlvbiBmaXhEaW1lbnNpb25zKGUpe2NvbnN0IHQ9ZVtSb10oKTtpZih0LmxheW91dD8uaW5jbHVkZXMoInJvdyIpKXtjb25zdCBuPXRbcG9dLGE9ZS5jb2xTcGFuO2xldCBzO3M9LTE9PT1hP01hdGguc3VtUHJlY2lzZShuLmNvbHVtbldpZHRocy5zbGljZShuLmN1cnJlbnRDb2x1bW4pKTpNYXRoLnN1bVByZWNpc2Uobi5jb2x1bW5XaWR0aHMuc2xpY2Uobi5jdXJyZW50Q29sdW1uLG4uY3VycmVudENvbHVtbithKSk7aXNOYU4ocyl8fChlLnc9cyl9dC5sYXlvdXQmJiJwb3NpdGlvbiIhPT10LmxheW91dCYmKGUueD1lLnk9MCk7InRhYmxlIj09PWUubGF5b3V0JiYiIj09PWUudyYmQXJyYXkuaXNBcnJheShlLmNvbHVtbldpZHRocykmJihlLnc9TWF0aC5zdW1QcmVjaXNlKGUuY29sdW1uV2lkdGhzKSl9ZnVuY3Rpb24gbGF5b3V0Q2xhc3MoZSl7c3dpdGNoKGUubGF5b3V0KXtjYXNlInBvc2l0aW9uIjpkZWZhdWx0OnJldHVybiJ4ZmFQb3NpdGlvbiI7Y2FzZSJsci10YiI6cmV0dXJuInhmYUxyVGIiO2Nhc2Uicmwtcm93IjpyZXR1cm4ieGZhUmxSb3ciO2Nhc2UicmwtdGIiOnJldHVybiJ4ZmFSbFRiIjtjYXNlInJvdyI6cmV0dXJuInhmYVJvdyI7Y2FzZSJ0YWJsZSI6cmV0dXJuInhmYVRhYmxlIjtjYXNlInRiIjpyZXR1cm4ieGZhVGIifX1mdW5jdGlvbiB0b1N0eWxlKGUsLi4udCl7Y29uc3Qgbj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBhIG9mIHQpe2NvbnN0IHQ9ZVthXTtpZihudWxsIT09dClpZihPYmplY3QuaGFzT3duKFFsLGEpKVFsW2FdKGUsbik7ZWxzZSBpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXtjb25zdCBlPXRbZ2xdKCk7ZT9PYmplY3QuYXNzaWduKG4sZSk6d2FybihgKERFQlVHKSAtIFhGQSAtIHN0eWxlIGZvciAke2F9IG5vdCBpbXBsZW1lbnRlZCB5ZXRgKX19cmV0dXJuIG59ZnVuY3Rpb24gY3JlYXRlV3JhcHBlcihlLHQpe2NvbnN0e2F0dHJpYnV0ZXM6bn09dCx7c3R5bGU6YX09bixzPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhV3JhcHBlciJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOltdfTtuLmNsYXNzLnB1c2goInhmYVdyYXBwZWQiKTtpZihlLmJvcmRlcil7Y29uc3R7d2lkdGhzOm4saW5zZXRzOnJ9PWUuYm9yZGVyW3BvXTtsZXQgaSxvLGw9clswXSxmPXJbM107Y29uc3QgYz1yWzBdK3JbMl0saD1yWzFdK3JbM107c3dpdGNoKGUuYm9yZGVyLmhhbmQpe2Nhc2UiZXZlbiI6bC09blswXS8yO2YtPW5bM10vMjtpPWBjYWxjKDEwMCUgKyAkeyhuWzFdK25bM10pLzItaH1weClgO289YGNhbGMoMTAwJSArICR7KG5bMF0rblsyXSkvMi1jfXB4KWA7YnJlYWs7Y2FzZSJsZWZ0IjpsLT1uWzBdO2YtPW5bM107aT1gY2FsYygxMDAlICsgJHtuWzFdK25bM10taH1weClgO289YGNhbGMoMTAwJSArICR7blswXStuWzJdLWN9cHgpYDticmVhaztjYXNlInJpZ2h0IjppPWg/YGNhbGMoMTAwJSAtICR7aH1weClgOiIxMDAlIjtvPWM/YGNhbGMoMTAwJSAtICR7Y31weClgOiIxMDAlIn1jb25zdCB1PVsieGZhQm9yZGVyIl07aXNQcmludE9ubHkoZS5ib3JkZXIpJiZ1LnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IG09e25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6dSxzdHlsZTp7dG9wOmAke2x9cHhgLGxlZnQ6YCR7Zn1weGAsd2lkdGg6aSxoZWlnaHQ6b319LGNoaWxkcmVuOltdfTtmb3IoY29uc3QgZSBvZlsiYm9yZGVyIiwiYm9yZGVyV2lkdGgiLCJib3JkZXJDb2xvciIsImJvcmRlclJhZGl1cyIsImJvcmRlclN0eWxlIl0paWYodm9pZCAwIT09YVtlXSl7bS5hdHRyaWJ1dGVzLnN0eWxlW2VdPWFbZV07ZGVsZXRlIGFbZV19cy5jaGlsZHJlbi5wdXNoKG0sdCl9ZWxzZSBzLmNoaWxkcmVuLnB1c2godCk7Zm9yKGNvbnN0IGUgb2ZbImJhY2tncm91bmQiLCJiYWNrZ3JvdW5kQ2xpcCIsInRvcCIsImxlZnQiLCJ3aWR0aCIsImhlaWdodCIsIm1pbldpZHRoIiwibWluSGVpZ2h0IiwibWF4V2lkdGgiLCJtYXhIZWlnaHQiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2Zvcm1PcmlnaW4iLCJ2aXNpYmlsaXR5Il0paWYodm9pZCAwIT09YVtlXSl7cy5hdHRyaWJ1dGVzLnN0eWxlW2VdPWFbZV07ZGVsZXRlIGFbZV19cy5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI9PT1hLnBvc2l0aW9uPyJhYnNvbHV0ZSI6InJlbGF0aXZlIjtkZWxldGUgYS5wb3NpdGlvbjtpZihhLmFsaWduU2VsZil7cy5hdHRyaWJ1dGVzLnN0eWxlLmFsaWduU2VsZj1hLmFsaWduU2VsZjtkZWxldGUgYS5hbGlnblNlbGZ9cmV0dXJuIHN9ZnVuY3Rpb24gZml4VGV4dEluZGVudChlKXtjb25zdCB0PWdldE1lYXN1cmVtZW50KGUudGV4dEluZGVudCwiMHB4Iik7aWYodD49MClyZXR1cm47Y29uc3Qgbj0icGFkZGluZyIrKCJsZWZ0Ij09PSgicmlnaHQiPT09ZS50ZXh0QWxpZ24/InJpZ2h0IjoibGVmdCIpPyJMZWZ0IjoiUmlnaHQiKSxhPWdldE1lYXN1cmVtZW50KGVbbl0sIjBweCIpO2Vbbl09YS10KyJweCJ9ZnVuY3Rpb24gc2V0QWNjZXNzKGUsdCl7c3dpdGNoKGUuYWNjZXNzKXtjYXNlIm5vbkludGVyYWN0aXZlIjp0LnB1c2goInhmYU5vbkludGVyYWN0aXZlIik7YnJlYWs7Y2FzZSJyZWFkT25seSI6dC5wdXNoKCJ4ZmFSZWFkT25seSIpO2JyZWFrO2Nhc2UicHJvdGVjdGVkIjp0LnB1c2goInhmYURpc2FibGVkIil9fWZ1bmN0aW9uIGlzUHJpbnRPbmx5KGUpe3JldHVybiBlLnJlbGV2YW50Lmxlbmd0aD4wJiYhZS5yZWxldmFudFswXS5leGNsdWRlZCYmInByaW50Ij09PWUucmVsZXZhbnRbMF0udmlld25hbWV9ZnVuY3Rpb24gZ2V0Q3VycmVudFBhcmEoZSl7Y29uc3QgdD1lW0hvXSgpW3BvXS5wYXJhU3RhY2s7cmV0dXJuIHQubGVuZ3RoP3QuYXQoLTEpOm51bGx9ZnVuY3Rpb24gc2V0UGFyYShlLHQsbil7aWYobi5hdHRyaWJ1dGVzLmNsYXNzPy5pbmNsdWRlcygieGZhUmljaCIpKXtpZih0KXsiIj09PWUuaCYmKHQuaGVpZ2h0PSJhdXRvIik7IiI9PT1lLncmJih0LndpZHRoPSJhdXRvIil9Y29uc3QgYT1nZXRDdXJyZW50UGFyYShlKTtpZihhKXtjb25zdCBlPW4uYXR0cmlidXRlcy5zdHlsZTtlLmRpc3BsYXk9ImZsZXgiO2UuZmxleERpcmVjdGlvbj0iY29sdW1uIjtzd2l0Y2goYS52QWxpZ24pe2Nhc2UidG9wIjplLmp1c3RpZnlDb250ZW50PSJzdGFydCI7YnJlYWs7Y2FzZSJib3R0b20iOmUuanVzdGlmeUNvbnRlbnQ9ImVuZCI7YnJlYWs7Y2FzZSJtaWRkbGUiOmUuanVzdGlmeUNvbnRlbnQ9ImNlbnRlciJ9Y29uc3QgdD1hW2dsXSgpO2Zvcihjb25zdFtuLGFdb2YgT2JqZWN0LmVudHJpZXModCkpbiBpbiBlfHwoZVtuXT1hKX19fWZ1bmN0aW9uIHNldEZvbnRGYW1pbHkoZSx0LG4sYSl7aWYoIW4pe2RlbGV0ZSBhLmZvbnRGYW1pbHk7cmV0dXJufWNvbnN0IHM9c3RyaXBRdW90ZXMoZS50eXBlZmFjZSk7YS5mb250RmFtaWx5PWAiJHtzfSJgO2NvbnN0IHI9bi5maW5kKHMpO2lmKHIpe2NvbnN0e2ZvbnRGYW1pbHk6bn09ci5yZWd1bGFyLmNzc0ZvbnRJbmZvO24hPT1zJiYoYS5mb250RmFtaWx5PWAiJHtufSJgKTtjb25zdCBpPWdldEN1cnJlbnRQYXJhKHQpO2lmKGkmJiIiIT09aS5saW5lSGVpZ2h0KXJldHVybjtpZihhLmxpbmVIZWlnaHQpcmV0dXJuO2NvbnN0IG89c2VsZWN0Rm9udChlLHIpO28mJihhLmxpbmVIZWlnaHQ9TWF0aC5tYXgoMS4yLG8ubGluZUhlaWdodCkpfX1mdW5jdGlvbiBmaXhVUkwoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUsbnVsbCx7YWRkRGVmYXVsdFByb3RvY29sOiEwLHRyeUNvbnZlcnRFbmNvZGluZzohMH0pO3JldHVybiB0P3QuaHJlZjpudWxsfWZ1bmN0aW9uIGNyZWF0ZUxpbmUoZSx0KXtyZXR1cm57bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbImxyLXRiIj09PWUubGF5b3V0PyJ4ZmFMciI6InhmYVJsIl19LGNoaWxkcmVuOnR9fWZ1bmN0aW9uIGZsdXNoSFRNTChlKXtpZighZVtwb10pcmV0dXJuIG51bGw7Y29uc3QgdD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmVbcG9dLmF0dHJpYnV0ZXMsY2hpbGRyZW46ZVtwb10uY2hpbGRyZW59O2lmKGVbcG9dLmZhaWxpbmdOb2RlKXtjb25zdCBuPWVbcG9dLmZhaWxpbmdOb2RlW2JvXSgpO24mJihlLmxheW91dC5lbmRzV2l0aCgiLXRiIik/dC5jaGlsZHJlbi5wdXNoKGNyZWF0ZUxpbmUoZSxbbl0pKTp0LmNoaWxkcmVuLnB1c2gobikpfXJldHVybiAwPT09dC5jaGlsZHJlbi5sZW5ndGg/bnVsbDp0fWZ1bmN0aW9uIGFkZEhUTUwoZSx0LG4pe2NvbnN0IGE9ZVtwb10scz1hLmF2YWlsYWJsZVNwYWNlLFtyLGksbyxsXT1uO3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6YS53aWR0aD1NYXRoLm1heChhLndpZHRoLHIrbyk7YS5oZWlnaHQ9TWF0aC5tYXgoYS5oZWlnaHQsaStsKTthLmNoaWxkcmVuLnB1c2godCk7YnJlYWs7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6aWYoIWEubGluZXx8MT09PWEuYXR0ZW1wdCl7YS5saW5lPWNyZWF0ZUxpbmUoZSxbXSk7YS5jaGlsZHJlbi5wdXNoKGEubGluZSk7YS5udW1iZXJJbkxpbmU9MH1hLm51bWJlckluTGluZSs9MTthLmxpbmUuY2hpbGRyZW4ucHVzaCh0KTtpZigwPT09YS5hdHRlbXB0KXthLmN1cnJlbnRXaWR0aCs9bzthLmhlaWdodD1NYXRoLm1heChhLmhlaWdodCxhLnByZXZIZWlnaHQrbCl9ZWxzZXthLmN1cnJlbnRXaWR0aD1vO2EucHJldkhlaWdodD1hLmhlaWdodDthLmhlaWdodCs9bDthLmF0dGVtcHQ9MH1hLndpZHRoPU1hdGgubWF4KGEud2lkdGgsYS5jdXJyZW50V2lkdGgpO2JyZWFrO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6e2EuY2hpbGRyZW4ucHVzaCh0KTthLndpZHRoKz1vO2EuaGVpZ2h0PU1hdGgubWF4KGEuaGVpZ2h0LGwpO2NvbnN0IGU9bWVhc3VyZVRvU3RyaW5nKGEuaGVpZ2h0KTtmb3IoY29uc3QgdCBvZiBhLmNoaWxkcmVuKXQuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9ZTticmVha31jYXNlInRhYmxlIjpjYXNlInRiIjphLndpZHRoPU1hdGhDbGFtcChvLGEud2lkdGgscy53aWR0aCk7YS5oZWlnaHQrPWw7YS5jaGlsZHJlbi5wdXNoKHQpfX1mdW5jdGlvbiBnZXRBdmFpbGFibGVTcGFjZShlKXtjb25zdCB0PWVbcG9dLmF2YWlsYWJsZVNwYWNlLG49ZS5tYXJnaW4/ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXQ6MCxhPWUubWFyZ2luP2UubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0OjA7c3dpdGNoKGUubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWVbcG9dLmF0dGVtcHQ/e3dpZHRoOnQud2lkdGgtYS1lW3BvXS5jdXJyZW50V2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LW4tZVtwb10ucHJldkhlaWdodH06e3dpZHRoOnQud2lkdGgtYSxoZWlnaHQ6dC5oZWlnaHQtbi1lW3BvXS5oZWlnaHR9O2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6cmV0dXJue3dpZHRoOk1hdGguc3VtUHJlY2lzZShlW3BvXS5jb2x1bW5XaWR0aHMuc2xpY2UoZVtwb10uY3VycmVudENvbHVtbikpLGhlaWdodDp0LmhlaWdodC1hfTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm57d2lkdGg6dC53aWR0aC1hLGhlaWdodDp0LmhlaWdodC1uLWVbcG9dLmhlaWdodH07ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbSG9dKClbcG9dLmZpcnN0VW5zcGxpdHRhYmxlKXJldHVybiEwO2lmKDA9PT1lLnd8fDA9PT1lLmgpcmV0dXJuITA7Y29uc3Qgbj1lW1JvXSgpLGE9bltwb10/LmF0dGVtcHR8fDAsWyxzLHIsaV09ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LG4sYT0iIj09PWUudz9OYU46ZS53LHM9IiI9PT1lLmg/TmFOOmUuaCxbcixpXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltyLGldPVthLzIsc107YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbcixpXT1bMCxzXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbcixpXT1bYSxzXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W3IsaV09W2EvMixzLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W3IsaV09WzAscy8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbcixpXT1bYSxzLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbcixpXT1bYS8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltyLGldPVthLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LG5dPVstciwtaV07YnJlYWs7Y2FzZSA5MDpbdCxuXT1bLWkscl07W2Esc109W3MsLWFdO2JyZWFrO2Nhc2UgMTgwOlt0LG5dPVtyLGldO1thLHNdPVstYSwtc107YnJlYWs7Y2FzZSAyNzA6W3Qsbl09W2ksLXJdO1thLHNdPVstcyxhXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxhKSxlLnkrbitNYXRoLm1pbigwLHMpLE1hdGguYWJzKGEpLE1hdGguYWJzKHMpXX0oZSk7c3dpdGNoKG4ubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWE/ZVtIb10oKVtwb10ubm9MYXlvdXRGYWlsdXJlPyIiIT09ZS53P01hdGgucm91bmQoci10LndpZHRoKTw9Mjp0LndpZHRoPjI6ISgiIiE9PWUuaCYmTWF0aC5yb3VuZChpLXQuaGVpZ2h0KT4yKSYmKCIiIT09ZS53P01hdGgucm91bmQoci10LndpZHRoKTw9Mnx8MD09PW5bcG9dLm51bWJlckluTGluZSYmdC5oZWlnaHQ+Mjp0LndpZHRoPjIpOiEhZVtIb10oKVtwb10ubm9MYXlvdXRGYWlsdXJlfHwhKCIiIT09ZS5oJiZNYXRoLnJvdW5kKGktdC5oZWlnaHQpPjIpJiYoKCIiPT09ZS53fHxNYXRoLnJvdW5kKHItdC53aWR0aCk8PTJ8fCFuW1hvXSgpKSYmdC5oZWlnaHQ+Mik7Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJuISFlW0hvXSgpW3BvXS5ub0xheW91dEZhaWx1cmV8fCgiIj09PWUuaHx8ZVtXb10oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQoci10LndpZHRoKTw9Mnx8IW5bWG9dKCkpJiZ0LmhlaWdodD4yOk1hdGgucm91bmQoaS10LmhlaWdodCk8PTIpO2Nhc2UicG9zaXRpb24iOmlmKGVbSG9dKClbcG9dLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChpK3MtdC5oZWlnaHQpPD0yKXJldHVybiEwO3JldHVybiBpK3M+ZVtIb10oKVtwb10uY3VycmVudENvbnRlbnRBcmVhLmg7Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm4hIWVbSG9dKClbcG9dLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxNYXRoLnJvdW5kKGktdC5oZWlnaHQpPD0yKTtkZWZhdWx0OnJldHVybiEwfX1jb25zdCBabD1qbC50ZW1wbGF0ZS5pZCxlZj0vXkgoXGQrKSQvLHRmPW5ldyBTZXQoWyJpbWFnZS9naWYiLCJpbWFnZS9qcGVnIiwiaW1hZ2UvanBnIiwiaW1hZ2UvcGpwZWciLCJpbWFnZS9wbmciLCJpbWFnZS9hcG5nIiwiaW1hZ2UveC1wbmciLCJpbWFnZS9ibXAiLCJpbWFnZS94LW1zLWJtcCIsImltYWdlL3RpZmYiLCJpbWFnZS90aWYiLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSksbmY9W1tbNjYsNzddLCJpbWFnZS9ibXAiXSxbWzI1NSwyMTYsMjU1XSwiaW1hZ2UvanBlZyJdLFtbNzMsNzMsNDIsMF0sImltYWdlL3RpZmYiXSxbWzc3LDc3LDAsNDJdLCJpbWFnZS90aWZmIl0sW1s3MSw3Myw3MCw1Niw1Nyw5N10sImltYWdlL2dpZiJdLFtbMTM3LDgwLDc4LDcxLDEzLDEwLDI2LDEwXSwiaW1hZ2UvcG5nIl1dO2Z1bmN0aW9uIGdldEJvcmRlckRpbXMoZSl7aWYoIWV8fCFlLmJvcmRlcilyZXR1cm57dzowLGg6MH07Y29uc3QgdD1lLmJvcmRlcltBb10oKTtyZXR1cm4gdD97dzp0LndpZHRoc1swXSt0LndpZHRoc1syXSt0Lmluc2V0c1swXSt0Lmluc2V0c1syXSxoOnQud2lkdGhzWzFdK3Qud2lkdGhzWzNdK3QuaW5zZXRzWzFdK3QuaW5zZXRzWzNdfTp7dzowLGg6MH19ZnVuY3Rpb24gaGFzTWFyZ2luKGUpe3JldHVybiBlLm1hcmdpbiYmKGUubWFyZ2luLnRvcEluc2V0fHxlLm1hcmdpbi5yaWdodEluc2V0fHxlLm1hcmdpbi5ib3R0b21JbnNldHx8ZS5tYXJnaW4ubGVmdEluc2V0KX1mdW5jdGlvbiBfc2V0VmFsdWUoZSx0KXtpZighZS52YWx1ZSl7Y29uc3QgdD1uZXcgVmFsdWUoe30pO2Vbc29dKHQpO2UudmFsdWU9dH1lLnZhbHVlW2NsXSh0KX1mdW5jdGlvbipnZXRDb250YWluZWRDaGlsZHJlbihlKXtmb3IoY29uc3QgdCBvZiBlW0NvXSgpKXQgaW5zdGFuY2VvZiBTdWJmb3JtU2V0P3lpZWxkKnRbSW9dKCk6eWllbGQgdH1mdW5jdGlvbiBpc1JlcXVpcmVkKGUpe3JldHVybiJlcnJvciI9PT1lLnZhbGlkYXRlPy5udWxsVGVzdH1mdW5jdGlvbiBzZXRUYWJJbmRleChlKXtmb3IoO2U7KXtpZighZS50cmF2ZXJzYWwpe2VbaGxdPWVbT29dKClbaGxdO3JldHVybn1pZihlW2hsXSlyZXR1cm47bGV0IHQ9bnVsbDtmb3IoY29uc3QgbiBvZiBlLnRyYXZlcnNhbFtDb10oKSlpZigibmV4dCI9PT1uLm9wZXJhdGlvbil7dD1uO2JyZWFrfWlmKCF0fHwhdC5yZWYpe2VbaGxdPWVbT29dKClbaGxdO3JldHVybn1jb25zdCBuPWVbSG9dKCk7ZVtobF09KytuW2hsXTtjb25zdCBhPW5bb2xdKHQucmVmLGUpO2lmKCFhKXJldHVybjtlPWFbMF19fWZ1bmN0aW9uIGFwcGx5QXNzaXN0KGUsdCl7Y29uc3Qgbj1lLmFzc2lzdDtpZihuKXtjb25zdCBlPW5bcGxdKCk7ZSYmKHQudGl0bGU9ZSk7Y29uc3QgYT1uLnJvbGUubWF0Y2goZWYpO2lmKGEpe2NvbnN0IGU9ImhlYWRpbmciLG49YVsxXTt0LnJvbGU9ZTt0WyJhcmlhLWxldmVsIl09bn19aWYoInRhYmxlIj09PWUubGF5b3V0KXQucm9sZT0idGFibGUiO2Vsc2UgaWYoInJvdyI9PT1lLmxheW91dCl0LnJvbGU9InJvdyI7ZWxzZXtjb25zdCBuPWVbT29dKCk7InJvdyI9PT1uLmxheW91dCYmKHQucm9sZT0iVEgiPT09bi5hc3Npc3Q/LnJvbGU/ImNvbHVtbmhlYWRlciI6ImNlbGwiKX19ZnVuY3Rpb24gYXJpYUxhYmVsKGUpe2lmKCFlLmFzc2lzdClyZXR1cm4gbnVsbDtjb25zdCB0PWUuYXNzaXN0O3JldHVybiB0LnNwZWFrJiYiIiE9PXQuc3BlYWtbaG9dP3Quc3BlYWtbaG9dOnQudG9vbFRpcD90LnRvb2xUaXBbaG9dOm51bGx9ZnVuY3Rpb24gdmFsdWVUb0h0bWwoZSl7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSxjaGlsZHJlbjpbe25hbWU6InNwYW4iLGF0dHJpYnV0ZXM6e3N0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LHZhbHVlOmV9XX0pfWZ1bmN0aW9uIHNldEZpcnN0VW5zcGxpdHRhYmxlKGUpe2NvbnN0IHQ9ZVtIb10oKTtpZihudWxsPT09dFtwb10uZmlyc3RVbnNwbGl0dGFibGUpe3RbcG9dLmZpcnN0VW5zcGxpdHRhYmxlPWU7dFtwb10ubm9MYXlvdXRGYWlsdXJlPSEwfX1mdW5jdGlvbiB1bnNldEZpcnN0VW5zcGxpdHRhYmxlKGUpe2NvbnN0IHQ9ZVtIb10oKTt0W3BvXS5maXJzdFVuc3BsaXR0YWJsZT09PWUmJih0W3BvXS5ub0xheW91dEZhaWx1cmU9ITEpfWZ1bmN0aW9uIGhhbmRsZUJyZWFrKGUpe2lmKGVbcG9dKXJldHVybiExO2VbcG9dPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoImF1dG8iPT09ZS50YXJnZXRUeXBlKXJldHVybiExO2NvbnN0IHQ9ZVtIb10oKTtsZXQgbj1udWxsO2lmKGUudGFyZ2V0KXtuPXRbb2xdKGUudGFyZ2V0LGVbT29dKCkpO2lmKCFuKXJldHVybiExO249blswXX1jb25zdHtjdXJyZW50UGFnZUFyZWE6YSxjdXJyZW50Q29udGVudEFyZWE6c309dFtwb107aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSl7biBpbnN0YW5jZW9mIFBhZ2VBcmVhfHwobj1udWxsKTtpZihlLnN0YXJ0TmV3KXtlW3BvXS50YXJnZXQ9bnx8YTtyZXR1cm4hMH1pZihuJiZuIT09YSl7ZVtwb10udGFyZ2V0PW47cmV0dXJuITB9cmV0dXJuITF9biBpbnN0YW5jZW9mIENvbnRlbnRBcmVhfHwobj1udWxsKTtjb25zdCByPW4mJm5bT29dKCk7bGV0IGksbz1yO2lmKGUuc3RhcnROZXcpaWYobil7Y29uc3QgZT1yLmNvbnRlbnRBcmVhLmNoaWxkcmVuLHQ9ZS5pbmRleE9mKHMpLGE9ZS5pbmRleE9mKG4pOy0xIT09dCYmdDxhJiYobz1udWxsKTtpPWEtMX1lbHNlIGk9YS5jb250ZW50QXJlYS5jaGlsZHJlbi5pbmRleE9mKHMpO2Vsc2V7aWYoIW58fG49PT1zKXJldHVybiExO2k9ci5jb250ZW50QXJlYS5jaGlsZHJlbi5pbmRleE9mKG4pLTE7bz1yPT09YT9udWxsOnJ9ZVtwb10udGFyZ2V0PW87ZVtwb10uaW5kZXg9aTtyZXR1cm4hMH1mdW5jdGlvbiBoYW5kbGVPdmVyZmxvdyhlLHQsbil7Y29uc3QgYT1lW0hvXSgpLHM9YVtwb10ubm9MYXlvdXRGYWlsdXJlLHI9dFtSb107dFtSb109KCk9PmU7YVtwb10ubm9MYXlvdXRGYWlsdXJlPSEwO2NvbnN0IGk9dFtwbF0obik7ZVthb10oaS5odG1sLGkuYmJveCk7YVtwb10ubm9MYXlvdXRGYWlsdXJlPXM7dFtSb109cn1jbGFzcyBBcHBlYXJhbmNlRmlsdGVyIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJhcHBlYXJhbmNlRmlsdGVyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBBcmMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImFyYyIsITApO3RoaXMuY2lyY3VsYXI9Z2V0SW50ZWdlcih7ZGF0YTplLmNpcmN1bGFyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5zdGFydEFuZ2xlPWdldEZsb2F0KHtkYXRhOmUuc3RhcnRBbmdsZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4hMH0pO3RoaXMuc3dlZXBBbmdsZT1nZXRGbG9hdCh7ZGF0YTplLnN3ZWVwQW5nbGUsZGVmYXVsdFZhbHVlOjM2MCx2YWxpZGF0ZTplPT4hMH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVkZ2U9bnVsbDt0aGlzLmZpbGw9bnVsbH1bcGxdKCl7Y29uc3QgZT10aGlzLmVkZ2V8fG5ldyBFZGdlKHt9KSx0PWVbZ2xdKCksbj1PYmplY3QuY3JlYXRlKG51bGwpOyJ2aXNpYmxlIj09PXRoaXMuZmlsbD8ucHJlc2VuY2U/T2JqZWN0LmFzc2lnbihuLHRoaXMuZmlsbFtnbF0oKSk6bi5maWxsPSJ0cmFuc3BhcmVudCI7bi5zdHJva2VXaWR0aD1tZWFzdXJlVG9TdHJpbmcoInZpc2libGUiPT09ZS5wcmVzZW5jZT9lLnRoaWNrbmVzczowKTtuLnN0cm9rZT10LmNvbG9yO2xldCBhO2NvbnN0IHM9e3htbG5zOnIsc3R5bGU6e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG92ZXJmbG93OiJ2aXNpYmxlIn19O2lmKDM2MD09PXRoaXMuc3dlZXBBbmdsZSlhPXtuYW1lOiJlbGxpcHNlIixhdHRyaWJ1dGVzOnt4bWxuczpyLGN4OiI1MCUiLGN5OiI1MCUiLHJ4OiI1MCUiLHJ5OiI1MCUiLHN0eWxlOm59fTtlbHNle2NvbnN0IGU9dGhpcy5zdGFydEFuZ2xlKk1hdGguUEkvMTgwLHQ9dGhpcy5zd2VlcEFuZ2xlKk1hdGguUEkvMTgwLGk9dGhpcy5zd2VlcEFuZ2xlPjE4MD8xOjAsW28sbCxmLGNdPVs1MCooMStNYXRoLmNvcyhlKSksNTAqKDEtTWF0aC5zaW4oZSkpLDUwKigxK01hdGguY29zKGUrdCkpLDUwKigxLU1hdGguc2luKGUrdCkpXTthPXtuYW1lOiJwYXRoIixhdHRyaWJ1dGVzOnt4bWxuczpyLGQ6YE0gJHtvfSAke2x9IEEgNTAgNTAgMCAke2l9IDAgJHtmfSAke2N9YCx2ZWN0b3JFZmZlY3Q6Im5vbi1zY2FsaW5nLXN0cm9rZSIsc3R5bGU6bn19O09iamVjdC5hc3NpZ24ocyx7dmlld0JveDoiMCAwIDEwMCAxMDAiLHByZXNlcnZlQXNwZWN0UmF0aW86Im5vbmUifSl9Y29uc3QgaT17bmFtZToic3ZnIixjaGlsZHJlbjpbYV0sYXR0cmlidXRlczpzfTtpZihoYXNNYXJnaW4odGhpc1tPb10oKVtPb10oKSkpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTp7ZGlzcGxheToiaW5saW5lIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19LGNoaWxkcmVuOltpXX0pO2kuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoaSl9fWNsYXNzIEFyZWEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImFyZWEiLCEwKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5fSpbSW9dKCl7eWllbGQqZ2V0Q29udGFpbmVkQ2hpbGRyZW4odGhpcyl9W0tvXSgpe3JldHVybiEwfVtfb10oKXtyZXR1cm4hMH1bYW9dKGUsdCl7Y29uc3RbbixhLHMscl09dDt0aGlzW3BvXS53aWR0aD1NYXRoLm1heCh0aGlzW3BvXS53aWR0aCxuK3MpO3RoaXNbcG9dLmhlaWdodD1NYXRoLm1heCh0aGlzW3BvXS5oZWlnaHQsYStyKTt0aGlzW3BvXS5jaGlsZHJlbi5wdXNoKGUpfVtrb10oKXtyZXR1cm4gdGhpc1twb10uYXZhaWxhYmxlU3BhY2V9W3BsXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywicG9zaXRpb24iKSxuPXtzdHlsZTp0LGlkOnRoaXNbYmxdLGNsYXNzOlsieGZhQXJlYSJdfTtpc1ByaW50T25seSh0aGlzKSYmbi5jbGFzcy5wdXNoKCJ4ZmFQcmludE9ubHkiKTt0aGlzLm5hbWUmJihuLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBhPVtdO3RoaXNbcG9dPXtjaGlsZHJlbjphLHdpZHRoOjAsaGVpZ2h0OjAsYXZhaWxhYmxlU3BhY2U6ZX07Y29uc3Qgcz10aGlzW3JvXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwiZXhjbEdyb3VwIiwic3ViZm9ybSIsInN1YmZvcm1TZXQiXSksaW5jbHVkZTohMH0pO2lmKCFzLnN1Y2Nlc3Mpe2lmKHMuaXNCcmVhaygpKXJldHVybiBzO2RlbGV0ZSB0aGlzW3BvXTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXQud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHRoaXNbcG9dLndpZHRoKTt0LmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpc1twb10uaGVpZ2h0KTtjb25zdCByPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6bixjaGlsZHJlbjphfSxpPVt0aGlzLngsdGhpcy55LHRoaXNbcG9dLndpZHRoLHRoaXNbcG9dLmhlaWdodF07ZGVsZXRlIHRoaXNbcG9dO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MocixpKX19Y2xhc3MgQXNzaXN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJhc3Npc3QiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucm9sZT1lLnJvbGV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNwZWFrPW51bGw7dGhpcy50b29sVGlwPW51bGx9W3BsXSgpe3JldHVybiB0aGlzLnRvb2xUaXA/Lltob118fG51bGx9fWNsYXNzIEJhcmNvZGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImJhcmNvZGUiLCEwKTt0aGlzLmNoYXJFbmNvZGluZz1nZXRLZXl3b3JkKHtkYXRhOmUuY2hhckVuY29kaW5nP2UuY2hhckVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLmNoZWNrc3VtPWdldFN0cmluZ09wdGlvbihlLmNoZWNrc3VtLFsibm9uZSIsIjFtb2QxMCIsIjFtb2QxMF8xbW9kMTEiLCIybW9kMTAiLCJhdXRvIl0pO3RoaXMuZGF0YUNvbHVtbkNvdW50PWdldEludGVnZXIoe2RhdGE6ZS5kYXRhQ29sdW1uQ291bnQsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFMZW5ndGg9Z2V0SW50ZWdlcih7ZGF0YTplLmRhdGFMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFQcmVwPWdldFN0cmluZ09wdGlvbihlLmRhdGFQcmVwLFsibm9uZSIsImZsYXRlQ29tcHJlc3MiXSk7dGhpcy5kYXRhUm93Q291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLmRhdGFSb3dDb3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZW5kQ2hhcj1lLmVuZENoYXJ8fCIiO3RoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWw9Z2V0SW50ZWdlcih7ZGF0YTplLmVycm9yQ29ycmVjdGlvbkxldmVsLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wJiZlPD04fSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1vZHVsZUhlaWdodD1nZXRNZWFzdXJlbWVudChlLm1vZHVsZUhlaWdodCwiNW1tIik7dGhpcy5tb2R1bGVXaWR0aD1nZXRNZWFzdXJlbWVudChlLm1vZHVsZVdpZHRoLCIwLjI1bW0iKTt0aGlzLnByaW50Q2hlY2tEaWdpdD1nZXRJbnRlZ2VyKHtkYXRhOmUucHJpbnRDaGVja0RpZ2l0LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yb3dDb2x1bW5SYXRpbz1nZXRSYXRpbyhlLnJvd0NvbHVtblJhdGlvKTt0aGlzLnN0YXJ0Q2hhcj1lLnN0YXJ0Q2hhcnx8IiI7dGhpcy50ZXh0TG9jYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUudGV4dExvY2F0aW9uLFsiYmVsb3ciLCJhYm92ZSIsImFib3ZlRW1iZWRkZWQiLCJiZWxvd0VtYmVkZGVkIiwibm9uZSJdKTt0aGlzLnRydW5jYXRlPWdldEludGVnZXIoe2RhdGE6ZS50cnVuY2F0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlP2UudHlwZS50b0xvd2VyQ2FzZSgpOiIiLFsiYXp0ZWMiLCJjb2RhYmFyIiwiY29kZTJvZjVpbmR1c3RyaWFsIiwiY29kZTJvZjVpbnRlcmxlYXZlZCIsImNvZGUyb2Y1bWF0cml4IiwiY29kZTJvZjVzdGFuZGFyZCIsImNvZGUzb2Y5IiwiY29kZTNvZjlleHRlbmRlZCIsImNvZGUxMSIsImNvZGU0OSIsImNvZGU5MyIsImNvZGUxMjgiLCJjb2RlMTI4YSIsImNvZGUxMjhiIiwiY29kZTEyOGMiLCJjb2RlMTI4c3NjYyIsImRhdGFtYXRyaXgiLCJlYW44IiwiZWFuOGFkZDIiLCJlYW44YWRkNSIsImVhbjEzIiwiZWFuMTNhZGQyIiwiZWFuMTNhZGQ1IiwiZWFuMTNwd2NkIiwiZmltIiwibG9nbWFycyIsIm1heGljb2RlIiwibXNpIiwicGRmNDE3IiwicGRmNDE3bWFjcm8iLCJwbGVzc2V5IiwicG9zdGF1c2N1c3QyIiwicG9zdGF1c2N1c3QzIiwicG9zdGF1c3JlcGx5cGFpZCIsInBvc3RhdXNzdGFuZGFyZCIsInBvc3R1a3JtNHNjYyIsInBvc3R1c2RwYmMiLCJwb3N0dXNpbWIiLCJwb3N0dXNzdGFuZGFyZCIsInBvc3R1czV6aXAiLCJxcmNvZGUiLCJyZmlkIiwicnNzMTQiLCJyc3MxNGV4cGFuZGVkIiwicnNzMTRsaW1pdGVkIiwicnNzMTRzdGFja2VkIiwicnNzMTRzdGFja2Vkb21uaSIsInJzczE0dHJ1bmNhdGVkIiwidGVsZXBlbiIsInVjYzEyOCIsInVjYzEyOHJhbmRvbSIsInVjYzEyOHNzY2MiLCJ1cGNhIiwidXBjYWFkZDIiLCJ1cGNhYWRkNSIsInVwY2Fwd2NkIiwidXBjZSIsInVwY2VhZGQyIiwidXBjZWFkZDUiLCJ1cGNlYW4yIiwidXBjZWFuNSIsInVwc21heGljb2RlIl0pO3RoaXMudXBzTW9kZT1nZXRTdHJpbmdPcHRpb24oZS51cHNNb2RlLFsidXNDYXJyaWVyIiwiaW50ZXJuYXRpb25hbENhcnJpZXIiLCJzZWN1cmVTeW1ib2wiLCJzdGFuZGFyZFN5bWJvbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53aWRlTmFycm93UmF0aW89Z2V0UmF0aW8oZS53aWRlTmFycm93UmF0aW8pO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEJpbmQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImJpbmQiLCEwKTt0aGlzLm1hdGNoPWdldFN0cmluZ09wdGlvbihlLm1hdGNoLFsib25jZSIsImRhdGFSZWYiLCJnbG9iYWwiLCJub25lIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnBpY3R1cmU9bnVsbH19Y2xhc3MgQmluZEl0ZW1zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJiaW5kSXRlbXMiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmxhYmVsUmVmPWUubGFiZWxSZWZ8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnZhbHVlUmVmPWUudmFsdWVSZWZ8fCIifX1jbGFzcyBCb29rZW5kIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJib29rZW5kIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy50cmFpbGVyPWUudHJhaWxlcnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBCb29sZWFuRWxlbWVudCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJib29sZWFuIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3BsXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwoMT09PXRoaXNbaG9dPyIxIjoiMCIpfX1jbGFzcyBCb3JkZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImJvcmRlciIsITApO3RoaXMuYnJlYWs9Z2V0U3RyaW5nT3B0aW9uKGUuYnJlYWssWyJjbG9zZSIsIm9wZW4iXSk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5lZGdlPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsbD1udWxsO3RoaXMubWFyZ2luPW51bGx9W0FvXSgpe2lmKCF0aGlzW3BvXSl7Y29uc3QgZT10aGlzLmVkZ2UuY2hpbGRyZW4uc2xpY2UoKTtpZihlLmxlbmd0aDw0KXtjb25zdCB0PWUuYXQoLTEpfHxuZXcgRWRnZSh7fSk7Zm9yKGxldCBuPWUubGVuZ3RoO248NDtuKyspZS5wdXNoKHQpfWNvbnN0IHQ9ZS5tYXAoZT0+ZS50aGlja25lc3MpLG49WzAsMCwwLDBdO2lmKHRoaXMubWFyZ2luKXtuWzBdPXRoaXMubWFyZ2luLnRvcEluc2V0O25bMV09dGhpcy5tYXJnaW4ucmlnaHRJbnNldDtuWzJdPXRoaXMubWFyZ2luLmJvdHRvbUluc2V0O25bM109dGhpcy5tYXJnaW4ubGVmdEluc2V0fXRoaXNbcG9dPXt3aWR0aHM6dCxpbnNldHM6bixlZGdlczplfX1yZXR1cm4gdGhpc1twb119W2dsXSgpe2NvbnN0e2VkZ2VzOmV9PXRoaXNbQW9dKCksdD1lLm1hcChlPT57Y29uc3QgdD1lW2dsXSgpO3QuY29sb3J8fD0iIzAwMDAwMCI7cmV0dXJuIHR9KSxuPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5tYXJnaW4mJk9iamVjdC5hc3NpZ24obix0aGlzLm1hcmdpbltnbF0oKSk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZSYmT2JqZWN0LmFzc2lnbihuLHRoaXMuZmlsbFtnbF0oKSk7aWYodGhpcy5jb3JuZXIuY2hpbGRyZW4uc29tZShlPT4wIT09ZS5yYWRpdXMpKXtjb25zdCBlPXRoaXMuY29ybmVyLmNoaWxkcmVuLm1hcChlPT5lW2dsXSgpKTtpZigyPT09ZS5sZW5ndGh8fDM9PT1lLmxlbmd0aCl7Y29uc3QgdD1lLmF0KC0xKTtmb3IobGV0IG49ZS5sZW5ndGg7bjw0O24rKyllLnB1c2godCl9bi5ib3JkZXJSYWRpdXM9ZS5tYXAoZT0+ZS5yYWRpdXMpLmpvaW4oIiAiKX1zd2l0Y2godGhpcy5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOmNhc2UiaGlkZGVuIjpuLmJvcmRlclN0eWxlPSIiO2JyZWFrO2Nhc2UiaW5hY3RpdmUiOm4uYm9yZGVyU3R5bGU9Im5vbmUiO2JyZWFrO2RlZmF1bHQ6bi5ib3JkZXJTdHlsZT10Lm1hcChlPT5lLnN0eWxlKS5qb2luKCIgIil9bi5ib3JkZXJXaWR0aD10Lm1hcChlPT5lLndpZHRoKS5qb2luKCIgIik7bi5ib3JkZXJDb2xvcj10Lm1hcChlPT5lLmNvbG9yKS5qb2luKCIgIik7cmV0dXJuIG59fWNsYXNzIEJyZWFrIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJicmVhayIsITApO3RoaXMuYWZ0ZXI9Z2V0U3RyaW5nT3B0aW9uKGUuYWZ0ZXIsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmFmdGVyVGFyZ2V0PWUuYWZ0ZXJUYXJnZXR8fCIiO3RoaXMuYmVmb3JlPWdldFN0cmluZ09wdGlvbihlLmJlZm9yZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYmVmb3JlVGFyZ2V0PWUuYmVmb3JlVGFyZ2V0fHwiIjt0aGlzLmJvb2tlbmRMZWFkZXI9ZS5ib29rZW5kTGVhZGVyfHwiIjt0aGlzLmJvb2tlbmRUcmFpbGVyPWUuYm9va2VuZFRyYWlsZXJ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVyZmxvd0xlYWRlcj1lLm92ZXJmbG93TGVhZGVyfHwiIjt0aGlzLm92ZXJmbG93VGFyZ2V0PWUub3ZlcmZsb3dUYXJnZXR8fCIiO3RoaXMub3ZlcmZsb3dUcmFpbGVyPWUub3ZlcmZsb3dUcmFpbGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBCcmVha0FmdGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJicmVha0FmdGVyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgQnJlYWtCZWZvcmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImJyZWFrQmVmb3JlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH1bcGxdKGUpe3RoaXNbcG9dPXt9O3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9fWNsYXNzIEJ1dHRvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwiYnV0dG9uIiwhMCk7dGhpcy5oaWdobGlnaHQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGlnaGxpZ2h0LFsiaW52ZXJ0ZWQiLCJub25lIiwib3V0bGluZSIsInB1c2giXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bcGxdKGUpe2NvbnN0IHQ9dGhpc1tPb10oKVtPb10oKSxuPXtuYW1lOiJidXR0b24iLGF0dHJpYnV0ZXM6e2lkOnRoaXNbYmxdLGNsYXNzOlsieGZhQnV0dG9uIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfTtmb3IoY29uc3QgZSBvZiB0LmV2ZW50LmNoaWxkcmVuKXtpZigiY2xpY2siIT09ZS5hY3Rpdml0eXx8IWUuc2NyaXB0KWNvbnRpbnVlO2NvbnN0IHQ9cmVjb3ZlckpzVVJMKGUuc2NyaXB0W2hvXSk7aWYoIXQpY29udGludWU7Y29uc3QgYT1maXhVUkwodC51cmwpO2EmJm4uY2hpbGRyZW4ucHVzaCh7bmFtZToiYSIsYXR0cmlidXRlczp7aWQ6ImxpbmsiK3RoaXNbYmxdLGhyZWY6YSxuZXdXaW5kb3c6dC5uZXdXaW5kb3csY2xhc3M6WyJ4ZmFMaW5rIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhuKX19Y2xhc3MgQ2FsY3VsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJjYWxjdWxhdGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9Z2V0U3RyaW5nT3B0aW9uKGUub3ZlcnJpZGUsWyJkaXNhYmxlZCIsImVycm9yIiwiaWdub3JlIiwid2FybmluZyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lc3NhZ2U9bnVsbDt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBDYXB0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJjYXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBsYWNlbWVudD1nZXRTdHJpbmdPcHRpb24oZS5wbGFjZW1lbnQsWyJsZWZ0IiwiYm90dG9tIiwiaW5saW5lIiwicmlnaHQiLCJ0b3AiXSk7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlc2VydmU9TWF0aC5jZWlsKGdldE1lYXN1cmVtZW50KGUucmVzZXJ2ZSkpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy52YWx1ZT1udWxsfVtjbF0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W0FvXShlKXtpZighdGhpc1twb10pe2xldHt3aWR0aDp0LGhlaWdodDpufT1lO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dD10aGlzLnJlc2VydmU8PTA/dDp0aGlzLnJlc2VydmU7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjpuPXRoaXMucmVzZXJ2ZTw9MD9uOnRoaXMucmVzZXJ2ZX10aGlzW3BvXT1sYXlvdXROb2RlKHRoaXMse3dpZHRoOnQsaGVpZ2h0Om59KX1yZXR1cm4gdGhpc1twb119W3BsXShlKXtpZighdGhpcy52YWx1ZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTt0aGlzW2FsXSgpO2NvbnN0IHQ9dGhpcy52YWx1ZVtwbF0oZSkuaHRtbDtpZighdCl7dGhpc1tubF0oKTtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX1jb25zdCBuPXRoaXMucmVzZXJ2ZTtpZih0aGlzLnJlc2VydmU8PTApe2NvbnN0e3c6dCxoOm59PXRoaXNbQW9dKGUpO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dGhpcy5yZXNlcnZlPXQ7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjp0aGlzLnJlc2VydmU9bn19Y29uc3QgYT1bXTsic3RyaW5nIj09dHlwZW9mIHQ/YS5wdXNoKHtuYW1lOiIjdGV4dCIsdmFsdWU6dH0pOmEucHVzaCh0KTtjb25zdCBzPXRvU3R5bGUodGhpcywiZm9udCIsIm1hcmdpbiIsInZpc2liaWxpdHkiKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6dGhpcy5yZXNlcnZlPjAmJihzLndpZHRoPW1lYXN1cmVUb1N0cmluZyh0aGlzLnJlc2VydmUpKTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT4wJiYocy5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMucmVzZXJ2ZSkpfXNldFBhcmEodGhpcyxudWxsLHQpO3RoaXNbbmxdKCk7dGhpcy5yZXNlcnZlPW47cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTpzLGNsYXNzOlsieGZhQ2FwdGlvbiJdfSxjaGlsZHJlbjphfSl9fWNsYXNzIENlcnRpZmljYXRlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJjZXJ0aWZpY2F0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDZXJ0aWZpY2F0ZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImNlcnRpZmljYXRlcyIsITApO3RoaXMuY3JlZGVudGlhbFNlcnZlclBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5jcmVkZW50aWFsU2VydmVyUG9saWN5LFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXJsPWUudXJsfHwiIjt0aGlzLnVybFBvbGljeT1lLnVybFBvbGljeXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuaXNzdWVycz1udWxsO3RoaXMua2V5VXNhZ2U9bnVsbDt0aGlzLm9pZHM9bnVsbDt0aGlzLnNpZ25pbmc9bnVsbDt0aGlzLnN1YmplY3RETnM9bnVsbH19Y2xhc3MgQ2hlY2tCdXR0b24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImNoZWNrQnV0dG9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1hcms9Z2V0U3RyaW5nT3B0aW9uKGUubWFyayxbImRlZmF1bHQiLCJjaGVjayIsImNpcmNsZSIsImNyb3NzIiwiZGlhbW9uZCIsInNxdWFyZSIsInN0YXIiXSk7dGhpcy5zaGFwZT1nZXRTdHJpbmdPcHRpb24oZS5zaGFwZSxbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMuc2l6ZT1nZXRNZWFzdXJlbWVudChlLnNpemUsIjEwcHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3BsXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywibWFyZ2luIiksbj1tZWFzdXJlVG9TdHJpbmcodGhpcy5zaXplKTt0LndpZHRoPXQuaGVpZ2h0PW47bGV0IGEscyxyO2NvbnN0IGk9dGhpc1tPb10oKVtPb10oKSxvPWkuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoJiZpLml0ZW1zLmNoaWxkcmVuWzBdW3BsXSgpLmh0bWx8fFtdLGw9e29uOih2b2lkIDAhPT1vWzBdP29bMF06Im9uIikudG9TdHJpbmcoKSxvZmY6KHZvaWQgMCE9PW9bMV0/b1sxXToib2ZmIikudG9TdHJpbmcoKX0sZj0oaS52YWx1ZT8uW3VsXSgpfHwib2ZmIik9PT1sLm9ufHx2b2lkIDAsYz1pW1JvXSgpLGg9aVtibF07bGV0IHU7aWYoYyBpbnN0YW5jZW9mIEV4Y2xHcm91cCl7cj1jW2JsXTthPSJyYWRpbyI7cz0ieGZhUmFkaW8iO3U9Y1t1b10/LltibF18fGNbYmxdfWVsc2V7YT0iY2hlY2tib3giO3M9InhmYUNoZWNrYm94Ijt1PWlbdW9dPy5bYmxdfHxpW2JsXX1jb25zdCBtPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7Y2xhc3M6W3NdLHN0eWxlOnQsZmllbGRJZDpoLGRhdGFJZDp1LHR5cGU6YSxjaGVja2VkOmYseGZhT246bC5vbix4ZmFPZmY6bC5vZmYsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChpKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtyJiYobS5hdHRyaWJ1dGVzLm5hbWU9cik7aWYoaXNSZXF1aXJlZChpKSl7bS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7bS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlttXX0pfX1jbGFzcyBDaG9pY2VMaXN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJjaG9pY2VMaXN0IiwhMCk7dGhpcy5jb21taXRPbj1nZXRTdHJpbmdPcHRpb24oZS5jb21taXRPbixbInNlbGVjdCIsImV4aXQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZW49Z2V0U3RyaW5nT3B0aW9uKGUub3BlbixbInVzZXJDb250cm9sIiwiYWx3YXlzIiwibXVsdGlTZWxlY3QiLCJvbkVudHJ5Il0pO3RoaXMudGV4dEVudHJ5PWdldEludGVnZXIoe2RhdGE6ZS50ZXh0RW50cnksZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3BsXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwibWFyZ2luIiksbj10aGlzW09vXSgpW09vXSgpLGE9e2ZvbnRTaXplOmBjYWxjKCR7bi5mb250Py5zaXplfHwxMH1weCAqIHZhcigtLXRvdGFsLXNjYWxlLWZhY3RvcikpYH0scz1bXTtpZihuLml0ZW1zLmNoaWxkcmVuLmxlbmd0aD4wKXtjb25zdCBlPW4uaXRlbXM7bGV0IHQ9MCxyPTA7aWYoMj09PWUuY2hpbGRyZW4ubGVuZ3RoKXt0PWUuY2hpbGRyZW5bMF0uc2F2ZTtyPTEtdH1jb25zdCBpPWUuY2hpbGRyZW5bdF1bcGxdKCkuaHRtbCxvPWUuY2hpbGRyZW5bcl1bcGxdKCkuaHRtbDtsZXQgbD0hMTtjb25zdCBmPW4udmFsdWU/Llt1bF0oKXx8IiI7Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e3ZhbHVlOm9bZV18fGlbZV0sc3R5bGU6YX0sdmFsdWU6aVtlXX07b1tlXT09PWYmJih0LmF0dHJpYnV0ZXMuc2VsZWN0ZWQ9bD0hMCk7cy5wdXNoKHQpfWx8fHMuc3BsaWNlKDAsMCx7bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOntoaWRkZW46ITAsc2VsZWN0ZWQ6ITB9LHZhbHVlOiIgIn0pfWNvbnN0IHI9e2NsYXNzOlsieGZhU2VsZWN0Il0sZmllbGRJZDpuW2JsXSxkYXRhSWQ6blt1b10/LltibF18fG5bYmxdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChuKSwiYXJpYS1yZXF1aXJlZCI6ITF9O2lmKGlzUmVxdWlyZWQobikpe3JbImFyaWEtcmVxdWlyZWQiXT0hMDtyLnJlcXVpcmVkPSEwfSJtdWx0aVNlbGVjdCI9PT10aGlzLm9wZW4mJihyLm11bHRpcGxlPSEwKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbe25hbWU6InNlbGVjdCIsY2hpbGRyZW46cyxhdHRyaWJ1dGVzOnJ9XX0pfX1jbGFzcyBDb2xvciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwiY29sb3IiLCEwKTt0aGlzLmNTcGFjZT1nZXRTdHJpbmdPcHRpb24oZS5jU3BhY2UsWyJTUkdCIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmFsdWU9ZS52YWx1ZT9mdW5jdGlvbiBnZXRDb2xvcihlLHQ9WzAsMCwwXSl7bGV0W24sYSxzXT10O2lmKCFlKXJldHVybntyOm4sZzphLGI6c307Y29uc3Qgcj1lLnNwbGl0KCIsIiwzKS5tYXAoZT0+TWF0aENsYW1wKHBhcnNlSW50KGUudHJpbSgpLDEwKSwwLDI1NSkpLm1hcChlPT5pc05hTihlKT8wOmUpO2lmKHIubGVuZ3RoPDMpcmV0dXJue3I6bixnOmEsYjpzfTtbbixhLHNdPXI7cmV0dXJue3I6bixnOmEsYjpzfX0oZS52YWx1ZSk6IiI7dGhpcy5leHRyYXM9bnVsbH1bRG9dKCl7cmV0dXJuITF9W2dsXSgpe3JldHVybiB0aGlzLnZhbHVlP1V0aWwubWFrZUhleENvbG9yKHRoaXMudmFsdWUucix0aGlzLnZhbHVlLmcsdGhpcy52YWx1ZS5iKTpudWxsfX1jbGFzcyBDb21iIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJjb21iIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm51bWJlck9mQ2VsbHM9Z2V0SW50ZWdlcih7ZGF0YTplLm51bWJlck9mQ2VsbHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQ29ubmVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwiY29ubmVjdCIsITApO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudXNhZ2U9Z2V0U3RyaW5nT3B0aW9uKGUudXNhZ2UsWyJleHBvcnRBbmRJbXBvcnQiLCJleHBvcnRPbmx5IiwiaW1wb3J0T25seSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIENvbnRlbnRBcmVhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJjb250ZW50QXJlYSIsITApO3RoaXMuaD1nZXRNZWFzdXJlbWVudChlLmgpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWdldE1lYXN1cmVtZW50KGUudyk7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bcGxdKGUpe2NvbnN0IHQ9e2xlZnQ6bWVhc3VyZVRvU3RyaW5nKHRoaXMueCksdG9wOm1lYXN1cmVUb1N0cmluZyh0aGlzLnkpLHdpZHRoOm1lYXN1cmVUb1N0cmluZyh0aGlzLncpLGhlaWdodDptZWFzdXJlVG9TdHJpbmcodGhpcy5oKX0sbj1bInhmYUNvbnRlbnRhcmVhIl07aXNQcmludE9ubHkodGhpcykmJm4ucHVzaCgieGZhUHJpbnRPbmx5Iik7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOntzdHlsZTp0LGNsYXNzOm4saWQ6dGhpc1tibF19fSl9fWNsYXNzIENvcm5lciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwiY29ybmVyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmludmVydGVkPWdldEludGVnZXIoe2RhdGE6ZS5pbnZlcnRlZCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuam9pbj1nZXRTdHJpbmdPcHRpb24oZS5qb2luLFsic3F1YXJlIiwicm91bmQiXSk7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJhZGl1cz1nZXRNZWFzdXJlbWVudChlLnJhZGl1cyk7dGhpcy5zdHJva2U9Z2V0U3RyaW5nT3B0aW9uKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz1nZXRNZWFzdXJlbWVudChlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W2dsXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJ2aXNpYmlsaXR5Iik7ZS5yYWRpdXM9bWVhc3VyZVRvU3RyaW5nKCJzcXVhcmUiPT09dGhpcy5qb2luPzA6dGhpcy5yYWRpdXMpO3JldHVybiBlfX1jbGFzcyBEYXRlRWxlbWVudCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImRhdGUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bZ29dKCl7Y29uc3QgZT10aGlzW2hvXS50cmltKCk7dGhpc1tob109ZT9uZXcgRGF0ZShlKTpudWxsfVtwbF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbaG9dP3RoaXNbaG9dLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBEYXRlVGltZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImRhdGVUaW1lIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W2dvXSgpe2NvbnN0IGU9dGhpc1tob10udHJpbSgpO3RoaXNbaG9dPWU/bmV3IERhdGUoZSk6bnVsbH1bcGxdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW2hvXT90aGlzW2hvXS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWVFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJkYXRlVGltZUVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGlja2VyPWdldFN0cmluZ09wdGlvbihlLnBpY2tlcixbImhvc3QiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bcGxdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIiksbj10aGlzW09vXSgpW09vXSgpLGE9e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixmaWVsZElkOm5bYmxdLGRhdGFJZDpuW3VvXT8uW2JsXXx8bltibF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChuKSl7YS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7YS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlthXX0pfX1jbGFzcyBEZWNpbWFsIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwiZGVjaW1hbCIpO3RoaXMuZnJhY0RpZ2l0cz1nZXRJbnRlZ2VyKHtkYXRhOmUuZnJhY0RpZ2l0cyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4hMH0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkRGlnaXRzPWdldEludGVnZXIoe2RhdGE6ZS5sZWFkRGlnaXRzLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bZ29dKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbaG9dLnRyaW0oKSk7dGhpc1tob109aXNOYU4oZSk/bnVsbDplfVtwbF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW2hvXT90aGlzW2hvXS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGVmYXVsdFVpIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJkZWZhdWx0VWkiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBEZXNjIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJkZXNjIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBEaWdlc3RNZXRob2QgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImRpZ2VzdE1ldGhvZCIsWyIiLCJTSEExIiwiU0hBMjU2IiwiU0hBNTEyIiwiUklQRU1EMTYwIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBEaWdlc3RNZXRob2RzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJkaWdlc3RNZXRob2RzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGlnZXN0TWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRHJhdyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwiZHJhdyIsITApO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9Z2V0TWVhc3VyZW1lbnQoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9Z2V0TWVhc3VyZW1lbnQoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9Z2V0TWVhc3VyZW1lbnQoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9Z2V0TWVhc3VyZW1lbnQoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy5yb3RhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnJvdGF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lJTkwPT0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/Z2V0TWVhc3VyZW1lbnQoZS53KToiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy51aT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheX1bY2xdKGUpe19zZXRWYWx1ZSh0aGlzLGUpfVtwbF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtmaXhEaW1lbnNpb25zKHRoaXMpO3RoaXNbYWxdKCk7Y29uc3QgdD10aGlzLncsbj10aGlzLmgse3c6YSxoOnMsaXNCcm9rZW46cn09bGF5b3V0Tm9kZSh0aGlzLGUpO2lmKGEmJiIiPT09dGhpcy53KXtpZihyJiZ0aGlzW1JvXSgpW1hvXSgpKXt0aGlzW25sXSgpO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dGhpcy53PWF9cyYmIiI9PT10aGlzLmgmJih0aGlzLmg9cyk7c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoIWNoZWNrRGltZW5zaW9ucyh0aGlzLGUpKXt0aGlzLnc9dDt0aGlzLmg9bjt0aGlzW25sXSgpO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtjb25zdCBpPXRvU3R5bGUodGhpcywiZm9udCIsImhBbGlnbiIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwicm90YXRlIiwiYW5jaG9yVHlwZSIsImJvcmRlciIsIm1hcmdpbiIpO3NldE1pbk1heERpbWVuc2lvbnModGhpcyxpKTtpZihpLm1hcmdpbil7aS5wYWRkaW5nPWkubWFyZ2luO2RlbGV0ZSBpLm1hcmdpbn1jb25zdCBvPVsieGZhRHJhdyJdO3RoaXMuZm9udCYmby5wdXNoKCJ4ZmFGb250Iik7aXNQcmludE9ubHkodGhpcykmJm8ucHVzaCgieGZhUHJpbnRPbmx5Iik7Y29uc3QgbD17c3R5bGU6aSxpZDp0aGlzW2JsXSxjbGFzczpvfTt0aGlzLm5hbWUmJihsLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBmPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6bCxjaGlsZHJlbjpbXX07YXBwbHlBc3Npc3QodGhpcyxsKTtjb25zdCBjPWNvbXB1dGVCYm94KHRoaXMsZixlKSxoPXRoaXMudmFsdWU/dGhpcy52YWx1ZVtwbF0oZSkuaHRtbDpudWxsO2lmKG51bGw9PT1oKXt0aGlzLnc9dDt0aGlzLmg9bjt0aGlzW25sXSgpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLGYpLGMpfWYuY2hpbGRyZW4ucHVzaChoKTtzZXRQYXJhKHRoaXMsaSxoKTt0aGlzLnc9dDt0aGlzLmg9bjt0aGlzW25sXSgpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLGYpLGMpfX1jbGFzcyBFZGdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJlZGdlIiwhMCk7dGhpcy5jYXA9Z2V0U3RyaW5nT3B0aW9uKGUuY2FwLFsic3F1YXJlIiwiYnV0dCIsInJvdW5kIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnN0cm9rZT1nZXRTdHJpbmdPcHRpb24oZS5zdHJva2UsWyJzb2xpZCIsImRhc2hEb3QiLCJkYXNoRG90RG90IiwiZGFzaGVkIiwiZG90dGVkIiwiZW1ib3NzZWQiLCJldGNoZWQiLCJsb3dlcmVkIiwicmFpc2VkIl0pO3RoaXMudGhpY2tuZXNzPWdldE1lYXN1cmVtZW50KGUudGhpY2tuZXNzLCIwLjVwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bZ2xdKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsInZpc2liaWxpdHkiKTtPYmplY3QuYXNzaWduKGUse2xpbmVjYXA6dGhpcy5jYXAsd2lkdGg6bWVhc3VyZVRvU3RyaW5nKHRoaXMudGhpY2tuZXNzKSxjb2xvcjp0aGlzLmNvbG9yP3RoaXMuY29sb3JbZ2xdKCk6IiMwMDAwMDAiLHN0eWxlOiIifSk7aWYoInZpc2libGUiIT09dGhpcy5wcmVzZW5jZSllLnN0eWxlPSJub25lIjtlbHNlIHN3aXRjaCh0aGlzLnN0cm9rZSl7Y2FzZSJzb2xpZCI6ZS5zdHlsZT0ic29saWQiO2JyZWFrO2Nhc2UiZGFzaERvdCI6Y2FzZSJkYXNoRG90RG90IjpjYXNlImRhc2hlZCI6ZS5zdHlsZT0iZGFzaGVkIjticmVhaztjYXNlImRvdHRlZCI6ZS5zdHlsZT0iZG90dGVkIjticmVhaztjYXNlImVtYm9zc2VkIjplLnN0eWxlPSJyaWRnZSI7YnJlYWs7Y2FzZSJldGNoZWQiOmUuc3R5bGU9Imdyb292ZSI7YnJlYWs7Y2FzZSJsb3dlcmVkIjplLnN0eWxlPSJpbnNldCI7YnJlYWs7Y2FzZSJyYWlzZWQiOmUuc3R5bGU9Im91dHNldCJ9cmV0dXJuIGV9fWNsYXNzIEVuY29kaW5nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJlbmNvZGluZyIsWyJhZGJlLng1MDkucnNhX3NoYTEiLCJhZGJlLnBrY3M3LmRldGFjaGVkIiwiYWRiZS5wa2NzNy5zaGExIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNvZGluZ3MgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImVuY29kaW5ncyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVuY29kaW5nPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwiZW5jcnlwdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bnVsbH19Y2xhc3MgRW5jcnlwdERhdGEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImVuY3J5cHREYXRhIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZXJhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVyYXRpb24sWyJlbmNyeXB0IiwiZGVjcnlwdCJdKTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsfX1jbGFzcyBFbmNyeXB0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJlbmNyeXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBFbmNyeXB0aW9uTWV0aG9kIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJlbmNyeXB0aW9uTWV0aG9kIixbIiIsIkFFUzI1Ni1DQkMiLCJUUklQTEVERVMtQ0JDIiwiQUVTMTI4LUNCQyIsIkFFUzE5Mi1DQkMiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVuY3J5cHRpb25NZXRob2RzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJlbmNyeXB0aW9uTWV0aG9kcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVuY3J5cHRpb25NZXRob2Q9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBFdmVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwiZXZlbnQiLCEwKTt0aGlzLmFjdGl2aXR5PWdldFN0cmluZ09wdGlvbihlLmFjdGl2aXR5LFsiY2xpY2siLCJjaGFuZ2UiLCJkb2NDbG9zZSIsImRvY1JlYWR5IiwiZW50ZXIiLCJleGl0IiwiZnVsbCIsImluZGV4Q2hhbmdlIiwiaW5pdGlhbGl6ZSIsIm1vdXNlRG93biIsIm1vdXNlRW50ZXIiLCJtb3VzZUV4aXQiLCJtb3VzZVVwIiwicG9zdEV4ZWN1dGUiLCJwb3N0T3BlbiIsInBvc3RQcmludCIsInBvc3RTYXZlIiwicG9zdFNpZ24iLCJwb3N0U3VibWl0IiwicHJlRXhlY3V0ZSIsInByZU9wZW4iLCJwcmVQcmludCIsInByZVNhdmUiLCJwcmVTaWduIiwicHJlU3VibWl0IiwicmVhZHkiLCJ2YWxpZGF0aW9uU3RhdGUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxpc3Rlbj1nZXRTdHJpbmdPcHRpb24oZS5saXN0ZW4sWyJyZWZPbmx5IiwicmVmQW5kRGVzY2VuZGVudHMiXSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZW5jcnlwdERhdGE9bnVsbDt0aGlzLmV4ZWN1dGU9bnVsbDt0aGlzLnNjcmlwdD1udWxsO3RoaXMuc2lnbkRhdGE9bnVsbDt0aGlzLnN1Ym1pdD1udWxsfX1jbGFzcyBFeERhdGEgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJleERhdGEiKTt0aGlzLmNvbnRlbnRUeXBlPWUuY29udGVudFR5cGV8fCIiO3RoaXMuaHJlZj1lLmhyZWZ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tYXhMZW5ndGg9Z2V0SW50ZWdlcih7ZGF0YTplLm1heExlbmd0aCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49LTF9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy50cmFuc2ZlckVuY29kaW5nPWdldFN0cmluZ09wdGlvbihlLnRyYW5zZmVyRW5jb2RpbmcsWyJub25lIiwiYmFzZTY0IiwicGFja2FnZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W0VvXSgpe3JldHVybiJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZX1bUW9dKGUpe2lmKCJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZSYmZVskb109PT1qbC54aHRtbC5pZCl7dGhpc1tob109ZTtyZXR1cm4hMH1pZigidGV4dC94bWwiPT09dGhpcy5jb250ZW50VHlwZSl7dGhpc1tob109ZTtyZXR1cm4hMH1yZXR1cm4hMX1bcGxdKGUpe3JldHVybiJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZSYmdGhpc1tob10/dGhpc1tob11bcGxdKGUpOkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIEV4T2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJleE9iamVjdCIsITApO3RoaXMuYXJjaGl2ZT1lLmFyY2hpdmV8fCIiO3RoaXMuY2xhc3NJZD1lLmNsYXNzSWR8fCIiO3RoaXMuY29kZUJhc2U9ZS5jb2RlQmFzZXx8IiI7dGhpcy5jb2RlVHlwZT1lLmNvZGVUeXBlfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRXhjbEdyb3VwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJleGNsR3JvdXAiLCEwKTt0aGlzLmFjY2Vzcz1nZXRTdHJpbmdPcHRpb24oZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPWdldFN0cmluZ09wdGlvbihlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/Z2V0TWVhc3VyZW1lbnQoZS5oKToiIjt0aGlzLmhBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sYXlvdXQ9Z2V0U3RyaW5nT3B0aW9uKGUubGF5b3V0LFsicG9zaXRpb24iLCJsci10YiIsInJsLXJvdyIsInJsLXRiIiwicm93IiwidGFibGUiLCJ0YiJdKTt0aGlzLm1heEg9Z2V0TWVhc3VyZW1lbnQoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9Z2V0TWVhc3VyZW1lbnQoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9Z2V0TWVhc3VyZW1lbnQoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9Z2V0TWVhc3VyZW1lbnQoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/Z2V0TWVhc3VyZW1lbnQoZS53KToiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYWxjdWxhdGU9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheX1bX29dKCl7cmV0dXJuITB9W0RvXSgpe3JldHVybiEwfVtjbF0oZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5maWVsZC5jaGlsZHJlbil7aWYoIXQudmFsdWUpe2NvbnN0IGU9bmV3IFZhbHVlKHt9KTt0W3NvXShlKTt0LnZhbHVlPWV9dC52YWx1ZVtjbF0oZSl9fVtYb10oKXtyZXR1cm4gdGhpcy5sYXlvdXQuZW5kc1dpdGgoIi10YiIpJiYwPT09dGhpc1twb10uYXR0ZW1wdCYmdGhpc1twb10ubnVtYmVySW5MaW5lPjB8fHRoaXNbT29dKClbWG9dKCl9W1dvXSgpe2NvbnN0IGU9dGhpc1tSb10oKTtpZighZVtXb10oKSlyZXR1cm4hMTtpZih2b2lkIDAhPT10aGlzW3BvXS5faXNTcGxpdHRhYmxlKXJldHVybiB0aGlzW3BvXS5faXNTcGxpdHRhYmxlO2lmKCJwb3NpdGlvbiI9PT10aGlzLmxheW91dHx8dGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt0aGlzW3BvXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0Py5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW3BvXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1twb10uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bYm9dKCl7cmV0dXJuIGZsdXNoSFRNTCh0aGlzKX1bYW9dKGUsdCl7YWRkSFRNTCh0aGlzLGUsdCl9W2tvXSgpe3JldHVybiBnZXRBdmFpbGFibGVTcGFjZSh0aGlzKX1bcGxdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Zml4RGltZW5zaW9ucyh0aGlzKTtjb25zdCB0PVtdLG49e2lkOnRoaXNbYmxdLGNsYXNzOltdfTtzZXRBY2Nlc3ModGhpcyxuLmNsYXNzKTt0aGlzW3BvXXx8PU9iamVjdC5jcmVhdGUobnVsbCk7T2JqZWN0LmFzc2lnbih0aGlzW3BvXSx7Y2hpbGRyZW46dCxhdHRyaWJ1dGVzOm4sYXR0ZW1wdDowLGxpbmU6bnVsbCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCBhPXRoaXNbV29dKCk7YXx8c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoIWNoZWNrRGltZW5zaW9ucyh0aGlzLGUpKXJldHVybiBIVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3Qgcz1uZXcgU2V0KFsiZmllbGQiXSk7aWYodGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXtjb25zdCBlPXRoaXNbUm9dKCkuY29sdW1uV2lkdGhzO2lmKEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPjApe3RoaXNbcG9dLmNvbHVtbldpZHRocz1lO3RoaXNbcG9dLmN1cnJlbnRDb2x1bW49MH19Y29uc3Qgcj10b1N0eWxlKHRoaXMsImFuY2hvclR5cGUiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsImJvcmRlciIsIm1hcmdpbiIsImhBbGlnbiIpLGk9WyJ4ZmFFeGNsZ3JvdXAiXSxvPWxheW91dENsYXNzKHRoaXMpO28mJmkucHVzaChvKTtpc1ByaW50T25seSh0aGlzKSYmaS5wdXNoKCJ4ZmFQcmludE9ubHkiKTtuLnN0eWxlPXI7bi5jbGFzcz1pO3RoaXMubmFtZSYmKG4ueGZhTmFtZT10aGlzLm5hbWUpO3RoaXNbYWxdKCk7Y29uc3QgbD0ibHItdGIiPT09dGhpcy5sYXlvdXR8fCJybC10YiI9PT10aGlzLmxheW91dCxmPWw/MjoxO2Zvcig7dGhpc1twb10uYXR0ZW1wdDxmO3RoaXNbcG9dLmF0dGVtcHQrKyl7bCYmMT09PXRoaXNbcG9dLmF0dGVtcHQmJih0aGlzW3BvXS5udW1iZXJJbkxpbmU9MCk7Y29uc3QgZT10aGlzW3JvXSh7ZmlsdGVyOnMsaW5jbHVkZTohMH0pO2lmKGUuc3VjY2VzcylicmVhaztpZihlLmlzQnJlYWsoKSl7dGhpc1tubF0oKTtyZXR1cm4gZX1pZihsJiYwPT09dGhpc1twb10uYXR0ZW1wdCYmMD09PXRoaXNbcG9dLm51bWJlckluTGluZSYmIXRoaXNbSG9dKClbcG9dLm5vTGF5b3V0RmFpbHVyZSl7dGhpc1twb10uYXR0ZW1wdD1mO2JyZWFrfX10aGlzW25sXSgpO2F8fHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYodGhpc1twb10uYXR0ZW1wdD09PWYpe2F8fGRlbGV0ZSB0aGlzW3BvXTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfWxldCBjPTAsaD0wO2lmKHRoaXMubWFyZ2luKXtjPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O2g9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3QgdT1NYXRoLm1heCh0aGlzW3BvXS53aWR0aCtjLHRoaXMud3x8MCksbT1NYXRoLm1heCh0aGlzW3BvXS5oZWlnaHQraCx0aGlzLmh8fDApLHA9W3RoaXMueCx0aGlzLnksdSxtXTsiIj09PXRoaXMudyYmKHIud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHUpKTsiIj09PXRoaXMuaCYmKHIuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhtKSk7Y29uc3QgZD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOm4sY2hpbGRyZW46dH07YXBwbHlBc3Npc3QodGhpcyxuKTtkZWxldGUgdGhpc1twb107cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsZCkscCl9fWNsYXNzIEV4ZWN1dGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImV4ZWN1dGUiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmV4ZWN1dGVUeXBlPWdldFN0cmluZ09wdGlvbihlLmV4ZWN1dGVUeXBlLFsiaW1wb3J0IiwicmVtZXJnZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucnVuQXQ9Z2V0U3RyaW5nT3B0aW9uKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRXh0cmFzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJleHRyYXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leHRyYXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBGaWVsZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwiZmllbGQiLCEwKTt0aGlzLmFjY2Vzcz1nZXRTdHJpbmdPcHRpb24oZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPWdldFN0cmluZ09wdGlvbihlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/Z2V0TWVhc3VyZW1lbnQoZS5oKToiIjt0aGlzLmhBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD1nZXRNZWFzdXJlbWVudChlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz1nZXRNZWFzdXJlbWVudChlLm1heFcsIjBwdCIpO3RoaXMubWluSD1nZXRNZWFzdXJlbWVudChlLm1pbkgsIjBwdCIpO3RoaXMubWluVz1nZXRNZWFzdXJlbWVudChlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnJvdGF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUucm90YXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmUlOTA9PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz9nZXRNZWFzdXJlbWVudChlLncpOiIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5mb3JtYXQ9bnVsbDt0aGlzLml0ZW1zPW5ldyBYRkFPYmplY3RBcnJheSgyKTt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy51aT1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnZhbHVlPW51bGw7dGhpcy5iaW5kSXRlbXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W19vXSgpe3JldHVybiEwfVtjbF0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3BsXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZighdGhpcy51aSl7dGhpcy51aT1uZXcgVWkoe30pO3RoaXMudWlbQm9dPXRoaXNbQm9dO3RoaXNbc29dKHRoaXMudWkpO2xldCBlO3N3aXRjaCh0aGlzLml0ZW1zLmNoaWxkcmVuLmxlbmd0aCl7Y2FzZSAwOmU9bmV3IFRleHRFZGl0KHt9KTt0aGlzLnVpLnRleHRFZGl0PWU7YnJlYWs7Y2FzZSAxOmU9bmV3IENoZWNrQnV0dG9uKHt9KTt0aGlzLnVpLmNoZWNrQnV0dG9uPWU7YnJlYWs7Y2FzZSAyOmU9bmV3IENob2ljZUxpc3Qoe30pO3RoaXMudWkuY2hvaWNlTGlzdD1lfXRoaXMudWlbc29dKGUpfWlmKCF0aGlzLnVpfHwiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlfHwwPT09dGhpcy5ofHwwPT09dGhpcy53KXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO3RoaXMuY2FwdGlvbiYmZGVsZXRlIHRoaXMuY2FwdGlvbltwb107dGhpc1thbF0oKTtjb25zdCB0PXRoaXMuY2FwdGlvbj90aGlzLmNhcHRpb25bcGxdKGUpLmh0bWw6bnVsbCxuPXRoaXMudyxhPXRoaXMuaDtsZXQgcz0wLHI9MDtpZih0aGlzLm1hcmdpbil7cz10aGlzLm1hcmdpbi5sZWZ0SW5zZXQrdGhpcy5tYXJnaW4ucmlnaHRJbnNldDtyPXRoaXMubWFyZ2luLnRvcEluc2V0K3RoaXMubWFyZ2luLmJvdHRvbUluc2V0fWxldCBpPW51bGw7aWYoIiI9PT10aGlzLnd8fCIiPT09dGhpcy5oKXtsZXQgdD1udWxsLG49bnVsbCxhPTAsbz0wO2lmKHRoaXMudWkuY2hlY2tCdXR0b24pYT1vPXRoaXMudWkuY2hlY2tCdXR0b24uc2l6ZTtlbHNle2NvbnN0e3c6dCxoOm59PWxheW91dE5vZGUodGhpcyxlKTtpZihudWxsIT09dCl7YT10O289bn1lbHNlIG89ZnVuY3Rpb24gZm9udHNfZ2V0TWV0cmljcyhlLHQ9ITEpe2xldCBuPW51bGw7aWYoZSl7Y29uc3QgdD1zdHJpcFF1b3RlcyhlLnR5cGVmYWNlKSxhPWVbQm9dLmZvbnRGaW5kZXIuZmluZCh0KTtuPXNlbGVjdEZvbnQoZSxhKX1pZighbilyZXR1cm57bGluZUhlaWdodDoxMixsaW5lR2FwOjIsbGluZU5vR2FwOjEwfTtjb25zdCBhPWUuc2l6ZXx8MTAscz1uLmxpbmVIZWlnaHQ/TWF0aC5tYXgodD8wOjEuMixuLmxpbmVIZWlnaHQpOjEuMixyPXZvaWQgMD09PW4ubGluZUdhcD8uMjpuLmxpbmVHYXA7cmV0dXJue2xpbmVIZWlnaHQ6cyphLGxpbmVHYXA6ciphLGxpbmVOb0dhcDpNYXRoLm1heCgxLHMtcikqYX19KHRoaXMuZm9udCwhMCkubGluZU5vR2FwfWk9Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW0FvXSgpKTthKz1pLnc7bys9aS5oO2lmKHRoaXMuY2FwdGlvbil7Y29uc3R7dzpzLGg6cixpc0Jyb2tlbjppfT10aGlzLmNhcHRpb25bQW9dKGUpO2lmKGkmJnRoaXNbUm9dKClbWG9dKCkpe3RoaXNbbmxdKCk7cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX10PXM7bj1yO3N3aXRjaCh0aGlzLmNhcHRpb24ucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0Kz1hO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6bis9b319ZWxzZXt0PWE7bj1vfWlmKHQmJiIiPT09dGhpcy53KXt0Kz1zO3RoaXMudz1NYXRoLm1pbih0aGlzLm1heFc8PTA/MS8wOnRoaXMubWF4Vyx0aGlzLm1pblcrMTx0P3Q6dGhpcy5taW5XKX1pZihuJiYiIj09PXRoaXMuaCl7bis9cjt0aGlzLmg9TWF0aC5taW4odGhpcy5tYXhIPD0wPzEvMDp0aGlzLm1heEgsdGhpcy5taW5IKzE8bj9uOnRoaXMubWluSCl9fXRoaXNbbmxdKCk7Zml4RGltZW5zaW9ucyh0aGlzKTtzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpe3RoaXMudz1uO3RoaXMuaD1hO3RoaXNbbmxdKCk7cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX11bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2NvbnN0IG89dG9TdHlsZSh0aGlzLCJmb250IiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicm90YXRlIiwiYW5jaG9yVHlwZSIsInByZXNlbmNlIiwibWFyZ2luIiwiaEFsaWduIik7c2V0TWluTWF4RGltZW5zaW9ucyh0aGlzLG8pO2NvbnN0IGw9WyJ4ZmFGaWVsZCJdO3RoaXMuZm9udCYmbC5wdXNoKCJ4ZmFGb250Iik7aXNQcmludE9ubHkodGhpcykmJmwucHVzaCgieGZhUHJpbnRPbmx5Iik7Y29uc3QgZj17c3R5bGU6byxpZDp0aGlzW2JsXSxjbGFzczpsfTtpZihvLm1hcmdpbil7by5wYWRkaW5nPW8ubWFyZ2luO2RlbGV0ZSBvLm1hcmdpbn1zZXRBY2Nlc3ModGhpcyxsKTt0aGlzLm5hbWUmJihmLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBjPVtdLGg9e25hbWU6ImRpdiIsYXR0cmlidXRlczpmLGNoaWxkcmVuOmN9O2FwcGx5QXNzaXN0KHRoaXMsZik7Y29uc3QgdT10aGlzLmJvcmRlcj90aGlzLmJvcmRlcltnbF0oKTpudWxsLG09Y29tcHV0ZUJib3godGhpcyxoLGUpLHA9dGhpcy51aVtwbF0oKS5odG1sO2lmKCFwKXtPYmplY3QuYXNzaWduKG8sdSk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsaCksbSl9dGhpc1tobF0mJihwLmNoaWxkcmVuPy5bMF0/cC5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbaGxdOnAuYXR0cmlidXRlcy50YWJpbmRleD10aGlzW2hsXSk7cC5hdHRyaWJ1dGVzLnN0eWxlfHw9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgZD1udWxsO2lmKHRoaXMudWkuYnV0dG9uKXsxPT09cC5jaGlsZHJlbi5sZW5ndGgmJihbZF09cC5jaGlsZHJlbi5zcGxpY2UoMCwxKSk7T2JqZWN0LmFzc2lnbihwLmF0dHJpYnV0ZXMuc3R5bGUsdSl9ZWxzZSBPYmplY3QuYXNzaWduKG8sdSk7Yy5wdXNoKHApO2lmKHRoaXMudmFsdWUpaWYodGhpcy51aS5pbWFnZUVkaXQpcC5jaGlsZHJlbi5wdXNoKHRoaXMudmFsdWVbcGxdKCkuaHRtbCk7ZWxzZSBpZighdGhpcy51aS5idXR0b24pe2xldCBlPSIiO2lmKHRoaXMudmFsdWUuZXhEYXRhKWU9dGhpcy52YWx1ZS5leERhdGFbdWxdKCk7ZWxzZSBpZih0aGlzLnZhbHVlLnRleHQpZT10aGlzLnZhbHVlLnRleHRbQW9dKCk7ZWxzZXtjb25zdCB0PXRoaXMudmFsdWVbcGxdKCkuaHRtbDtudWxsIT09dCYmKGU9dC5jaGlsZHJlblswXS52YWx1ZSl9dGhpcy51aS50ZXh0RWRpdCYmdGhpcy52YWx1ZS50ZXh0Py5tYXhDaGFycyYmKHAuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5tYXhMZW5ndGg9dGhpcy52YWx1ZS50ZXh0Lm1heENoYXJzKTtpZihlKXtpZih0aGlzLnVpLm51bWVyaWNFZGl0KXtlPXBhcnNlRmxvYXQoZSk7ZT1pc05hTihlKT8iIjplLnRvU3RyaW5nKCl9InRleHRhcmVhIj09PXAuY2hpbGRyZW5bMF0ubmFtZT9wLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudGV4dENvbnRlbnQ9ZTpwLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudmFsdWU9ZX19aWYoIXRoaXMudWkuaW1hZ2VFZGl0JiZwLmNoaWxkcmVuPy5bMF0mJnRoaXMuaCl7aXx8PWdldEJvcmRlckRpbXModGhpcy51aVtBb10oKSk7bGV0IHQ9MDtpZih0aGlzLmNhcHRpb24mJlsidG9wIiwiYm90dG9tIl0uaW5jbHVkZXModGhpcy5jYXB0aW9uLnBsYWNlbWVudCkpe3Q9dGhpcy5jYXB0aW9uLnJlc2VydmU7dDw9MCYmKHQ9dGhpcy5jYXB0aW9uW0FvXShlKS5oKTtjb25zdCBuPXRoaXMuaC10LXItaS5oO3AuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKG4pfWVsc2UgcC5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD0iMTAwJSJ9ZCYmcC5jaGlsZHJlbi5wdXNoKGQpO2lmKCF0KXtwLmF0dHJpYnV0ZXMuY2xhc3MmJnAuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0Iik7dGhpcy53PW47dGhpcy5oPWE7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsaCksbSl9aWYodGhpcy51aS5idXR0b24pe28ucGFkZGluZyYmZGVsZXRlIG8ucGFkZGluZzsiZGl2Ij09PXQubmFtZSYmKHQubmFtZT0ic3BhbiIpO3AuY2hpbGRyZW4ucHVzaCh0KTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGgsbSl9dGhpcy51aS5jaGVja0J1dHRvbiYmKHQuYXR0cmlidXRlcy5jbGFzc1swXT0ieGZhQ2FwdGlvbkZvckNoZWNrQnV0dG9uIik7cC5hdHRyaWJ1dGVzLmNsYXNzfHw9W107cC5jaGlsZHJlbi5zcGxpY2UoMCwwLHQpO3N3aXRjaCh0aGlzLmNhcHRpb24ucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UiaW5saW5lIjpwLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhTGVmdCIpO2JyZWFrO2Nhc2UicmlnaHQiOnAuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFSaWdodCIpO2JyZWFrO2Nhc2UidG9wIjpwLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhVG9wIik7YnJlYWs7Y2FzZSJib3R0b20iOnAuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFCb3R0b20iKX10aGlzLnc9bjt0aGlzLmg9YTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxtKX19Y2xhc3MgRmlsbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwiZmlsbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5saW5lYXI9bnVsbDt0aGlzLnBhdHRlcm49bnVsbDt0aGlzLnJhZGlhbD1udWxsO3RoaXMuc29saWQ9bnVsbDt0aGlzLnN0aXBwbGU9bnVsbH1bZ2xdKCl7Y29uc3QgZT10aGlzW09vXSgpLHQ9ZVtPb10oKVtPb10oKSxuPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGE9ImNvbG9yIixzPWE7aWYoZSBpbnN0YW5jZW9mIEJvcmRlcil7YT0iYmFja2dyb3VuZC1jb2xvciI7cz0iYmFja2dyb3VuZCI7dCBpbnN0YW5jZW9mIFVpJiYobi5iYWNrZ3JvdW5kQ29sb3I9IndoaXRlIil9aWYoZSBpbnN0YW5jZW9mIFJlY3RhbmdsZXx8ZSBpbnN0YW5jZW9mIEFyYyl7YT1zPSJmaWxsIjtuLmZpbGw9IndoaXRlIn1mb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImV4dHJhcyI9PT1lfHwiY29sb3IiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYoISh0IGluc3RhbmNlb2YgWEZBT2JqZWN0KSljb250aW51ZTtjb25zdCByPXRbZ2xdKHRoaXMuY29sb3IpO3ImJihuW3Iuc3RhcnRzV2l0aCgiIyIpP2E6c109cik7cmV0dXJuIG59aWYodGhpcy5jb2xvcj8udmFsdWUpe2NvbnN0IGU9dGhpcy5jb2xvcltnbF0oKTtuW2Uuc3RhcnRzV2l0aCgiIyIpP2E6c109ZX1yZXR1cm4gbn19Y2xhc3MgRmlsdGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJmaWx0ZXIiLCEwKTt0aGlzLmFkZFJldm9jYXRpb25JbmZvPWdldFN0cmluZ09wdGlvbihlLmFkZFJldm9jYXRpb25JbmZvLFsiIiwicmVxdWlyZWQiLCJvcHRpb25hbCIsIm5vbmUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52ZXJzaW9uPWdldEludGVnZXIoe2RhdGE6dGhpcy52ZXJzaW9uLGRlZmF1bHRWYWx1ZTo1LHZhbGlkYXRlOmU9PmU+PTEmJmU8PTV9KTt0aGlzLmFwcGVhcmFuY2VGaWx0ZXI9bnVsbDt0aGlzLmNlcnRpZmljYXRlcz1udWxsO3RoaXMuZGlnZXN0TWV0aG9kcz1udWxsO3RoaXMuZW5jb2RpbmdzPW51bGw7dGhpcy5lbmNyeXB0aW9uTWV0aG9kcz1udWxsO3RoaXMuaGFuZGxlcj1udWxsO3RoaXMubG9ja0RvY3VtZW50PW51bGw7dGhpcy5tZHA9bnVsbDt0aGlzLnJlYXNvbnM9bnVsbDt0aGlzLnRpbWVTdGFtcD1udWxsfX1jbGFzcyBGbG9hdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImZsb2F0Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W2dvXSgpe2NvbnN0IGU9cGFyc2VGbG9hdCh0aGlzW2hvXS50cmltKCkpO3RoaXNbaG9dPWlzTmFOKGUpP251bGw6ZX1bcGxdKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tob10/dGhpc1tob10udG9TdHJpbmcoKToiIil9fWNsYXNzIHRlbXBsYXRlX0ZvbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImZvbnQiLCEwKTt0aGlzLmJhc2VsaW5lU2hpZnQ9Z2V0TWVhc3VyZW1lbnQoZS5iYXNlbGluZVNoaWZ0KTt0aGlzLmZvbnRIb3Jpem9udGFsU2NhbGU9Z2V0RmxvYXQoe2RhdGE6ZS5mb250SG9yaXpvbnRhbFNjYWxlLGRlZmF1bHRWYWx1ZToxMDAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZm9udFZlcnRpY2FsU2NhbGU9Z2V0RmxvYXQoe2RhdGE6ZS5mb250VmVydGljYWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2VybmluZ01vZGU9Z2V0U3RyaW5nT3B0aW9uKGUua2VybmluZ01vZGUsWyJub25lIiwicGFpciJdKTt0aGlzLmxldHRlclNwYWNpbmc9Z2V0TWVhc3VyZW1lbnQoZS5sZXR0ZXJTcGFjaW5nLCIwIik7dGhpcy5saW5lVGhyb3VnaD1nZXRJbnRlZ2VyKHtkYXRhOmUubGluZVRocm91Z2gsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5saW5lVGhyb3VnaFBlcmlvZD1nZXRTdHJpbmdPcHRpb24oZS5saW5lVGhyb3VnaFBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5vdmVybGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUub3ZlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5vdmVybGluZVBlcmlvZD1nZXRTdHJpbmdPcHRpb24oZS5vdmVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5wb3N0dXJlPWdldFN0cmluZ09wdGlvbihlLnBvc3R1cmUsWyJub3JtYWwiLCJpdGFsaWMiXSk7dGhpcy5zaXplPWdldE1lYXN1cmVtZW50KGUuc2l6ZSwiMTBwdCIpO3RoaXMudHlwZWZhY2U9ZS50eXBlZmFjZXx8IkNvdXJpZXIiO3RoaXMudW5kZXJsaW5lPWdldEludGVnZXIoe2RhdGE6ZS51bmRlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy51bmRlcmxpbmVQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUudW5kZXJsaW5lUGVyaW9kLFsiYWxsIiwid29yZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53ZWlnaHQ9Z2V0U3RyaW5nT3B0aW9uKGUud2VpZ2h0LFsibm9ybWFsIiwiYm9sZCJdKTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsbD1udWxsfVtpb10oZSl7c3VwZXJbaW9dKGUpO3RoaXNbQm9dLnVzZWRUeXBlZmFjZXMuYWRkKHRoaXMudHlwZWZhY2UpfVtnbF0oKXtjb25zdCBlPXRvU3R5bGUodGhpcywiZmlsbCIpLHQ9ZS5jb2xvcjtpZih0KWlmKCIjMDAwMDAwIj09PXQpZGVsZXRlIGUuY29sb3I7ZWxzZSBpZighdC5zdGFydHNXaXRoKCIjIikpe2UuYmFja2dyb3VuZD10O2UuYmFja2dyb3VuZENsaXA9InRleHQiO2UuY29sb3I9InRyYW5zcGFyZW50In10aGlzLmJhc2VsaW5lU2hpZnQmJihlLnZlcnRpY2FsQWxpZ249bWVhc3VyZVRvU3RyaW5nKHRoaXMuYmFzZWxpbmVTaGlmdCkpO2UuZm9udEtlcm5pbmc9Im5vbmUiPT09dGhpcy5rZXJuaW5nTW9kZT8ibm9uZSI6Im5vcm1hbCI7ZS5sZXR0ZXJTcGFjaW5nPW1lYXN1cmVUb1N0cmluZyh0aGlzLmxldHRlclNwYWNpbmcpO2lmKDAhPT10aGlzLmxpbmVUaHJvdWdoKXtlLnRleHREZWNvcmF0aW9uPSJsaW5lLXRocm91Z2giOzI9PT10aGlzLmxpbmVUaHJvdWdoJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1pZigwIT09dGhpcy5vdmVybGluZSl7ZS50ZXh0RGVjb3JhdGlvbj0ib3ZlcmxpbmUiOzI9PT10aGlzLm92ZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1lLmZvbnRTdHlsZT10aGlzLnBvc3R1cmU7ZS5mb250U2l6ZT1tZWFzdXJlVG9TdHJpbmcoLjk5KnRoaXMuc2l6ZSk7c2V0Rm9udEZhbWlseSh0aGlzLHRoaXMsdGhpc1tCb10uZm9udEZpbmRlcixlKTtpZigwIT09dGhpcy51bmRlcmxpbmUpe2UudGV4dERlY29yYXRpb249InVuZGVybGluZSI7Mj09PXRoaXMudW5kZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1lLmZvbnRXZWlnaHQ9dGhpcy53ZWlnaHQ7cmV0dXJuIGV9fWNsYXNzIEZvcm1hdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwiZm9ybWF0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbH19Y2xhc3MgSGFuZGxlciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwiaGFuZGxlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgSHlwaGVuYXRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImh5cGhlbmF0aW9uIik7dGhpcy5leGNsdWRlQWxsQ2Fwcz1nZXRJbnRlZ2VyKHtkYXRhOmUuZXhjbHVkZUFsbENhcHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmV4Y2x1ZGVJbml0aWFsQ2FwPWdldEludGVnZXIoe2RhdGE6ZS5leGNsdWRlSW5pdGlhbENhcCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaHlwaGVuYXRlPWdldEludGVnZXIoe2RhdGE6ZS5oeXBoZW5hdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHVzaENoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS5wdXNoQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjMsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucmVtYWluQ2hhcmFjdGVyQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLnJlbWFpbkNoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53b3JkQ2hhcmFjdGVyQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLndvcmRDaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Nyx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIEltYWdlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJpbWFnZSIpO3RoaXMuYXNwZWN0PWdldFN0cmluZ09wdGlvbihlLmFzcGVjdCxbImZpdCIsImFjdHVhbCIsImhlaWdodCIsIm5vbmUiLCJ3aWR0aCJdKTt0aGlzLmNvbnRlbnRUeXBlPWUuY29udGVudFR5cGV8fCIiO3RoaXMuaHJlZj1lLmhyZWZ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy50cmFuc2ZlckVuY29kaW5nPWdldFN0cmluZ09wdGlvbihlLnRyYW5zZmVyRW5jb2RpbmcsWyJiYXNlNjQiLCJub25lIiwicGFja2FnZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3BsXSgpe2lmKHRoaXMuY29udGVudFR5cGUmJiF0Zi5oYXModGhpcy5jb250ZW50VHlwZS50b0xvd2VyQ2FzZSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtsZXQgZT10aGlzW0JvXS5pbWFnZXM/LmdldCh0aGlzLmhyZWYpO2lmKCFlJiYodGhpcy5ocmVmfHwhdGhpc1tob10pKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2V8fCJiYXNlNjQiIT09dGhpcy50cmFuc2ZlckVuY29kaW5nfHwoZT1VaW50OEFycmF5LmZyb21CYXNlNjQodGhpc1tob10pKTtpZighZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtpZighdGhpcy5jb250ZW50VHlwZSl7Zm9yKGNvbnN0W3Qsbl1vZiBuZilpZihlLmxlbmd0aD50Lmxlbmd0aCYmdC5ldmVyeSgodCxuKT0+dD09PWVbbl0pKXt0aGlzLmNvbnRlbnRUeXBlPW47YnJlYWt9aWYoIXRoaXMuY29udGVudFR5cGUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgdD1uZXcgQmxvYihbZV0se3R5cGU6dGhpcy5jb250ZW50VHlwZX0pO2xldCBuO3N3aXRjaCh0aGlzLmFzcGVjdCl7Y2FzZSJmaXQiOmNhc2UiYWN0dWFsIjpicmVhaztjYXNlImhlaWdodCI6bj17aGVpZ2h0OiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifTticmVhaztjYXNlIm5vbmUiOm49e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uid2lkdGgiOm49e3dpZHRoOiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifX1jb25zdCBhPXRoaXNbT29dKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiaW1nIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUltYWdlIl0sc3R5bGU6bixzcmM6VVJMLmNyZWF0ZU9iamVjdFVSTCh0KSxhbHQ6YT9hcmlhTGFiZWwoYVtPb10oKSk6bnVsbH19KX19Y2xhc3MgSW1hZ2VFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJpbWFnZUVkaXQiLCEwKTt0aGlzLmRhdGE9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YSxbImxpbmsiLCJlbWJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bcGxdKGUpe3JldHVybiJlbWJlZCI9PT10aGlzLmRhdGE/SFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e319KTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBJbnRlZ2VyIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwiaW50ZWdlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtnb10oKXtjb25zdCBlPXBhcnNlSW50KHRoaXNbaG9dLnRyaW0oKSwxMCk7dGhpc1tob109aXNOYU4oZSk/bnVsbDplfVtwbF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW2hvXT90aGlzW2hvXS50b1N0cmluZygpOiIiKX19Y2xhc3MgSXNzdWVycyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwiaXNzdWVycyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsIml0ZW1zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnNhdmU9Z2V0SW50ZWdlcih7ZGF0YTplLnNhdmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fVtwbF0oKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXNbQ29dKCkpZS5wdXNoKHRbdWxdKCkpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9fWNsYXNzIEtlZXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsImtlZXAiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO2NvbnN0IHQ9WyJub25lIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdO3RoaXMuaW50YWN0PWdldFN0cmluZ09wdGlvbihlLmludGFjdCx0KTt0aGlzLm5leHQ9Z2V0U3RyaW5nT3B0aW9uKGUubmV4dCx0KTt0aGlzLnByZXZpb3VzPWdldFN0cmluZ09wdGlvbihlLnByZXZpb3VzLHQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBLZXlVc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwia2V5VXNhZ2UiKTtjb25zdCB0PVsiIiwieWVzIiwibm8iXTt0aGlzLmNybFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUuY3JsU2lnbix0KTt0aGlzLmRhdGFFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YUVuY2lwaGVybWVudCx0KTt0aGlzLmRlY2lwaGVyT25seT1nZXRTdHJpbmdPcHRpb24oZS5kZWNpcGhlck9ubHksdCk7dGhpcy5kaWdpdGFsU2lnbmF0dXJlPWdldFN0cmluZ09wdGlvbihlLmRpZ2l0YWxTaWduYXR1cmUsdCk7dGhpcy5lbmNpcGhlck9ubHk9Z2V0U3RyaW5nT3B0aW9uKGUuZW5jaXBoZXJPbmx5LHQpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5rZXlBZ3JlZW1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5QWdyZWVtZW50LHQpO3RoaXMua2V5Q2VydFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUua2V5Q2VydFNpZ24sdCk7dGhpcy5rZXlFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5RW5jaXBoZXJtZW50LHQpO3RoaXMubm9uUmVwdWRpYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUubm9uUmVwdWRpYXRpb24sdCk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTGluZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwibGluZSIsITApO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2xvcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2xvcGUsWyJcXCIsIi8iXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsfVtwbF0oKXtjb25zdCBlPXRoaXNbT29dKClbT29dKCksdD10aGlzLmVkZ2V8fG5ldyBFZGdlKHt9KSxuPXRbZ2xdKCksYT1PYmplY3QuY3JlYXRlKG51bGwpLHM9InZpc2libGUiPT09dC5wcmVzZW5jZT90LnRoaWNrbmVzczowO2Euc3Ryb2tlV2lkdGg9bWVhc3VyZVRvU3RyaW5nKHMpO2Euc3Ryb2tlPW4uY29sb3I7bGV0IGksbyxsLGYsYz0iMTAwJSIsaD0iMTAwJSI7aWYoZS53PD1zKXtbaSxvLGwsZl09WyI1MCUiLDAsIjUwJSIsIjEwMCUiXTtjPWEuc3Ryb2tlV2lkdGh9ZWxzZSBpZihlLmg8PXMpe1tpLG8sbCxmXT1bMCwiNTAlIiwiMTAwJSIsIjUwJSJdO2g9YS5zdHJva2VXaWR0aH1lbHNlIlxcIj09PXRoaXMuc2xvcGU/W2ksbyxsLGZdPVswLDAsIjEwMCUiLCIxMDAlIl06W2ksbyxsLGZdPVswLCIxMDAlIiwiMTAwJSIsMF07Y29uc3QgdT17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6ImxpbmUiLGF0dHJpYnV0ZXM6e3htbG5zOnIseDE6aSx5MTpvLHgyOmwseTI6ZixzdHlsZTphfX1dLGF0dHJpYnV0ZXM6e3htbG5zOnIsd2lkdGg6YyxoZWlnaHQ6aCxzdHlsZTp7b3ZlcmZsb3c6InZpc2libGUifX19O2lmKGhhc01hcmdpbihlKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3VdfSk7dS5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh1KX19Y2xhc3MgTGluZWFyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJsaW5lYXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsidG9SaWdodCIsInRvQm90dG9tIiwidG9MZWZ0IiwidG9Ub3AiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtnbF0oZSl7ZT1lP2VbZ2xdKCk6IiNGRkZGRkYiO3JldHVybmBsaW5lYXItZ3JhZGllbnQoJHt0aGlzLnR5cGUucmVwbGFjZSgvKFtSQkxUXSkvLCIgJDEiKS50b0xvd2VyQ2FzZSgpfSwgJHtlfSwgJHt0aGlzLmNvbG9yP3RoaXMuY29sb3JbZ2xdKCk6IiMwMDAwMDAifSlgfX1jbGFzcyBMb2NrRG9jdW1lbnQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJsb2NrRG9jdW1lbnQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W2dvXSgpe3RoaXNbaG9dPWdldFN0cmluZ09wdGlvbih0aGlzW2hvXSxbImF1dG8iLCIwIiwiMSJdKX19Y2xhc3MgTWFuaWZlc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsIm1hbmlmZXN0IiwhMCk7dGhpcy5hY3Rpb249Z2V0U3RyaW5nT3B0aW9uKGUuYWN0aW9uLFsiaW5jbHVkZSIsImFsbCIsImV4Y2x1ZGUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnJlZj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1hcmdpbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwibWFyZ2luIiwhMCk7dGhpcy5ib3R0b21JbnNldD1nZXRNZWFzdXJlbWVudChlLmJvdHRvbUluc2V0LCIwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlZnRJbnNldD1nZXRNZWFzdXJlbWVudChlLmxlZnRJbnNldCwiMCIpO3RoaXMucmlnaHRJbnNldD1nZXRNZWFzdXJlbWVudChlLnJpZ2h0SW5zZXQsIjAiKTt0aGlzLnRvcEluc2V0PWdldE1lYXN1cmVtZW50KGUudG9wSW5zZXQsIjAiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bZ2xdKCl7cmV0dXJue21hcmdpbjptZWFzdXJlVG9TdHJpbmcodGhpcy50b3BJbnNldCkrIiAiK21lYXN1cmVUb1N0cmluZyh0aGlzLnJpZ2h0SW5zZXQpKyIgIittZWFzdXJlVG9TdHJpbmcodGhpcy5ib3R0b21JbnNldCkrIiAiK21lYXN1cmVUb1N0cmluZyh0aGlzLmxlZnRJbnNldCl9fX1jbGFzcyBNZHAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsIm1kcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wZXJtaXNzaW9ucz1nZXRJbnRlZ2VyKHtkYXRhOmUucGVybWlzc2lvbnMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+MT09PWV8fDM9PT1lfSk7dGhpcy5zaWduYXR1cmVUeXBlPWdldFN0cmluZ09wdGlvbihlLnNpZ25hdHVyZVR5cGUsWyJmaWxsZXIiLCJhdXRob3IiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZWRpdW0gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsIm1lZGl1bSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbWFnaW5nQkJveD1mdW5jdGlvbiBnZXRCQm94KGUpe2NvbnN0IHQ9LTE7aWYoIWUpcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3Qgbj1lLnNwbGl0KCIsIiw0KS5tYXAoZT0+Z2V0TWVhc3VyZW1lbnQoZS50cmltKCksIi0xIikpO2lmKG4ubGVuZ3RoPDR8fG5bMl08MHx8blszXTwwKXJldHVybnt4OnQseTp0LHdpZHRoOnQsaGVpZ2h0OnR9O2NvbnN0W2EscyxyLGldPW47cmV0dXJue3g6YSx5OnMsd2lkdGg6cixoZWlnaHQ6aX19KGUuaW1hZ2luZ0JCb3gpO3RoaXMubG9uZz1nZXRNZWFzdXJlbWVudChlLmxvbmcpO3RoaXMub3JpZW50YXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3JpZW50YXRpb24sWyJwb3J0cmFpdCIsImxhbmRzY2FwZSJdKTt0aGlzLnNob3J0PWdldE1lYXN1cmVtZW50KGUuc2hvcnQpO3RoaXMuc3RvY2s9ZS5zdG9ja3x8IiI7dGhpcy50cmF5SW49Z2V0U3RyaW5nT3B0aW9uKGUudHJheUluLFsiYXV0byIsImRlbGVnYXRlIiwicGFnZUZyb250Il0pO3RoaXMudHJheU91dD1nZXRTdHJpbmdPcHRpb24oZS50cmF5T3V0LFsiYXV0byIsImRlbGVnYXRlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTWVzc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwibWVzc2FnZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE51bWVyaWNFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJudW1lcmljRWRpdCIsITApO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtwbF0oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKSxuPXRoaXNbT29dKClbT29dKCksYT17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGZpZWxkSWQ6bltibF0sZGF0YUlkOm5bdW9dPy5bYmxdfHxuW2JsXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChuKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtpZihpc1JlcXVpcmVkKG4pKXthLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDthLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W2FdfSl9fWNsYXNzIE9jY3VyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJvY2N1ciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsPSIiIT09ZS5pbml0aWFsP2dldEludGVnZXIoe2RhdGE6ZS5pbml0aWFsLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTplPT4hMH0pOiIiO3RoaXMubWF4PSIiIT09ZS5tYXg/Z2V0SW50ZWdlcih7ZGF0YTplLm1heCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLm1pbj0iIiE9PWUubWluP2dldEludGVnZXIoe2RhdGE6ZS5taW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1baW9dKCl7Y29uc3QgZT10aGlzW09vXSgpLHQ9dGhpcy5taW47IiI9PT10aGlzLm1pbiYmKHRoaXMubWluPWUgaW5zdGFuY2VvZiBQYWdlQXJlYXx8ZSBpbnN0YW5jZW9mIFBhZ2VTZXQ/MDoxKTsiIj09PXRoaXMubWF4JiYodGhpcy5tYXg9IiI9PT10P2UgaW5zdGFuY2VvZiBQYWdlQXJlYXx8ZSBpbnN0YW5jZW9mIFBhZ2VTZXQ/LTE6MTp0aGlzLm1pbik7LTEhPT10aGlzLm1heCYmdGhpcy5tYXg8dGhpcy5taW4mJih0aGlzLm1heD10aGlzLm1pbik7IiI9PT10aGlzLmluaXRpYWwmJih0aGlzLmluaXRpYWw9ZSBpbnN0YW5jZW9mIFRlbXBsYXRlPzE6dGhpcy5taW4pfX1jbGFzcyBPaWQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsIm9pZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPaWRzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJvaWRzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMub2lkPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgT3ZlcmZsb3cgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsIm92ZXJmbG93Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bQW9dKCl7aWYoIXRoaXNbcG9dKXtjb25zdCBlPXRoaXNbT29dKCksdD10aGlzW0hvXSgpLG49dFtvbF0odGhpcy50YXJnZXQsZSksYT10W29sXSh0aGlzLmxlYWRlcixlKSxzPXRbb2xdKHRoaXMudHJhaWxlcixlKTt0aGlzW3BvXT17dGFyZ2V0Om4/LlswXXx8bnVsbCxsZWFkZXI6YT8uWzBdfHxudWxsLHRyYWlsZXI6cz8uWzBdfHxudWxsLGFkZExlYWRlcjohMSxhZGRUcmFpbGVyOiExfX1yZXR1cm4gdGhpc1twb119fWNsYXNzIFBhZ2VBcmVhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJwYWdlQXJlYSIsITApO3RoaXMuYmxhbmtPck5vdEJsYW5rPWdldFN0cmluZ09wdGlvbihlLmJsYW5rT3JOb3RCbGFuayxbImFueSIsImJsYW5rIiwibm90QmxhbmsiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWxOdW1iZXI9Z2V0SW50ZWdlcih7ZGF0YTplLmluaXRpYWxOdW1iZXIsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLm51bWJlcmVkPWdldEludGVnZXIoe2RhdGE6ZS5udW1iZXJlZCxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMub2RkT3JFdmVuPWdldFN0cmluZ09wdGlvbihlLm9kZE9yRXZlbixbImFueSIsImV2ZW4iLCJvZGQiXSk7dGhpcy5wYWdlUG9zaXRpb249Z2V0U3RyaW5nT3B0aW9uKGUucGFnZVBvc2l0aW9uLFsiYW55IiwiZmlyc3QiLCJsYXN0Iiwib25seSIsInJlc3QiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lZGl1bT1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGNsR3JvdXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXl9W0dvXSgpe2lmKCF0aGlzW3BvXSl7dGhpc1twb109e251bWJlck9mVXNlOjB9O3JldHVybiEwfXJldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW3BvXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1bb29dKCl7ZGVsZXRlIHRoaXNbcG9dfVtGb10oKXt0aGlzW3BvXXx8PXtudW1iZXJPZlVzZTowfTtjb25zdCBlPXRoaXNbT29dKCk7aWYoIm9yZGVyZWRPY2N1cnJlbmNlIj09PWUucmVsYXRpb24mJnRoaXNbR29dKCkpe3RoaXNbcG9dLm51bWJlck9mVXNlKz0xO3JldHVybiB0aGlzfXJldHVybiBlW0ZvXSgpfVtrb10oKXtyZXR1cm4gdGhpc1twb10uc3BhY2V8fHt3aWR0aDowLGhlaWdodDowfX1bcGxdKCl7dGhpc1twb118fD17bnVtYmVyT2ZVc2U6MX07Y29uc3QgZT1bXTt0aGlzW3BvXS5jaGlsZHJlbj1lO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLm1lZGl1bSYmdGhpcy5tZWRpdW0uc2hvcnQmJnRoaXMubWVkaXVtLmxvbmcpe3Qud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWVkaXVtLnNob3J0KTt0LmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tZWRpdW0ubG9uZyk7dGhpc1twb10uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLnNob3J0LGhlaWdodDp0aGlzLm1lZGl1bS5sb25nfTtpZigibGFuZHNjYXBlIj09PXRoaXMubWVkaXVtLm9yaWVudGF0aW9uKXtjb25zdCBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodDt0LmhlaWdodD1lO3RoaXNbcG9dLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2Ugd2FybigiWEZBIC0gTm8gbWVkaXVtIHNwZWNpZmllZCBpbiBwYWdlQXJlYTogcGxlYXNlIGZpbGUgYSBidWcuIik7dGhpc1tyb10oe2ZpbHRlcjpuZXcgU2V0KFsiYXJlYSIsImRyYXciLCJmaWVsZCIsInN1YmZvcm0iXSksaW5jbHVkZTohMH0pO3RoaXNbcm9dKHtmaWx0ZXI6bmV3IFNldChbImNvbnRlbnRBcmVhIl0pLGluY2x1ZGU6ITB9KTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOmUsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFQYWdlIl0saWQ6dGhpc1tibF0sc3R5bGU6dCx4ZmFOYW1lOnRoaXMubmFtZX19KX19Y2xhc3MgUGFnZVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwicGFnZVNldCIsITApO3RoaXMuZHVwbGV4SW1wb3NpdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPWdldFN0cmluZ09wdGlvbihlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMucGFnZUFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9W29vXSgpe2Zvcihjb25zdCBlIG9mIHRoaXMucGFnZUFyZWEuY2hpbGRyZW4pZVtvb10oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVtvb10oKX1bR29dKCl7cmV0dXJuIXRoaXMub2NjdXJ8fC0xPT09dGhpcy5vY2N1ci5tYXh8fHRoaXNbcG9dLm51bWJlck9mVXNlPHRoaXMub2NjdXIubWF4fVtGb10oKXt0aGlzW3BvXXx8PXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDotMSxwYWdlU2V0SW5kZXg6LTF9O2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT10aGlzLnJlbGF0aW9uKXtpZih0aGlzW3BvXS5wYWdlSW5kZXgrMTx0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmxlbmd0aCl7dGhpc1twb10ucGFnZUluZGV4Kz0xO3JldHVybiB0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuW3RoaXNbcG9dLnBhZ2VJbmRleF1bRm9dKCl9aWYodGhpc1twb10ucGFnZVNldEluZGV4KzE8dGhpcy5wYWdlU2V0LmNoaWxkcmVuLmxlbmd0aCl7dGhpc1twb10ucGFnZVNldEluZGV4Kz0xO3JldHVybiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW5bdGhpc1twb10ucGFnZVNldEluZGV4XVtGb10oKX1pZih0aGlzW0dvXSgpKXt0aGlzW3BvXS5udW1iZXJPZlVzZSs9MTt0aGlzW3BvXS5wYWdlSW5kZXg9LTE7dGhpc1twb10ucGFnZVNldEluZGV4PS0xO3JldHVybiB0aGlzW0ZvXSgpfWNvbnN0IGU9dGhpc1tPb10oKTtpZihlIGluc3RhbmNlb2YgUGFnZVNldClyZXR1cm4gZVtGb10oKTt0aGlzW29vXSgpO3JldHVybiB0aGlzW0ZvXSgpfWNvbnN0IGU9dGhpc1tIb10oKVtwb10ucGFnZU51bWJlcix0PWUlMj09MD8iZXZlbiI6Im9kZCIsbj0wPT09ZT8iZmlyc3QiOiJyZXN0IjtsZXQgYT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoZT0+ZS5vZGRPckV2ZW49PT10JiZlLnBhZ2VQb3NpdGlvbj09PW4pO2lmKGEpcmV0dXJuIGE7YT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoZT0+ImFueSI9PT1lLm9kZE9yRXZlbiYmZS5wYWdlUG9zaXRpb249PT1uKTtpZihhKXJldHVybiBhO2E9dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKGU9PiJhbnkiPT09ZS5vZGRPckV2ZW4mJiJhbnkiPT09ZS5wYWdlUG9zaXRpb24pO3JldHVybiBhfHx0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuWzBdfX1jbGFzcyBQYXJhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJwYXJhIiwhMCk7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGluZUhlaWdodD1lLmxpbmVIZWlnaHQ/Z2V0TWVhc3VyZW1lbnQoZS5saW5lSGVpZ2h0LCIwcHQiKToiIjt0aGlzLm1hcmdpbkxlZnQ9ZS5tYXJnaW5MZWZ0P2dldE1lYXN1cmVtZW50KGUubWFyZ2luTGVmdCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5SaWdodD1lLm1hcmdpblJpZ2h0P2dldE1lYXN1cmVtZW50KGUubWFyZ2luUmlnaHQsIjBwdCIpOiIiO3RoaXMub3JwaGFucz1nZXRJbnRlZ2VyKHtkYXRhOmUub3JwaGFucyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5wcmVzZXJ2ZT1lLnByZXNlcnZlfHwiIjt0aGlzLnJhZGl4T2Zmc2V0PWUucmFkaXhPZmZzZXQ/Z2V0TWVhc3VyZW1lbnQoZS5yYWRpeE9mZnNldCwiMHB0Iik6IiI7dGhpcy5zcGFjZUFib3ZlPWUuc3BhY2VBYm92ZT9nZXRNZWFzdXJlbWVudChlLnNwYWNlQWJvdmUsIjBwdCIpOiIiO3RoaXMuc3BhY2VCZWxvdz1lLnNwYWNlQmVsb3c/Z2V0TWVhc3VyZW1lbnQoZS5zcGFjZUJlbG93LCIwcHQiKToiIjt0aGlzLnRhYkRlZmF1bHQ9ZS50YWJEZWZhdWx0P2dldE1lYXN1cmVtZW50KHRoaXMudGFiRGVmYXVsdCk6IiI7dGhpcy50YWJTdG9wcz0oZS50YWJTdG9wc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlLHQpPT50JTI9PTE/Z2V0TWVhc3VyZW1lbnQoZSk6ZSk7dGhpcy50ZXh0SW5kZW50PWUudGV4dEluZGVudD9nZXRNZWFzdXJlbWVudChlLnRleHRJbmRlbnQsIjBwdCIpOiIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS52QWxpZ24sWyJ0b3AiLCJib3R0b20iLCJtaWRkbGUiXSk7dGhpcy53aWRvd3M9Z2V0SW50ZWdlcih7ZGF0YTplLndpZG93cyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5oeXBoZW5hdGlvbj1udWxsfVtnbF0oKXtjb25zdCBlPXRvU3R5bGUodGhpcywiaEFsaWduIik7IiIhPT10aGlzLm1hcmdpbkxlZnQmJihlLnBhZGRpbmdMZWZ0PW1lYXN1cmVUb1N0cmluZyh0aGlzLm1hcmdpbkxlZnQpKTsiIiE9PXRoaXMubWFyZ2luUmlnaHQmJihlLnBhZGRpbmdSaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tYXJnaW5SaWdodCkpOyIiIT09dGhpcy5zcGFjZUFib3ZlJiYoZS5wYWRkaW5nVG9wPW1lYXN1cmVUb1N0cmluZyh0aGlzLnNwYWNlQWJvdmUpKTsiIiE9PXRoaXMuc3BhY2VCZWxvdyYmKGUucGFkZGluZ0JvdHRvbT1tZWFzdXJlVG9TdHJpbmcodGhpcy5zcGFjZUJlbG93KSk7aWYoIiIhPT10aGlzLnRleHRJbmRlbnQpe2UudGV4dEluZGVudD1tZWFzdXJlVG9TdHJpbmcodGhpcy50ZXh0SW5kZW50KTtmaXhUZXh0SW5kZW50KGUpfXRoaXMubGluZUhlaWdodD4wJiYoZS5saW5lSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzLmxpbmVIZWlnaHQpKTsiIiE9PXRoaXMudGFiRGVmYXVsdCYmKGUudGFiU2l6ZT1tZWFzdXJlVG9TdHJpbmcodGhpcy50YWJEZWZhdWx0KSk7dGhpcy50YWJTdG9wcy5sZW5ndGg7dGhpcy5oeXBoZW5hdGF0aW9uJiZPYmplY3QuYXNzaWduKGUsdGhpcy5oeXBoZW5hdGF0aW9uW2dsXSgpKTtyZXR1cm4gZX19Y2xhc3MgUGFzc3dvcmRFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJwYXNzd29yZEVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyB0ZW1wbGF0ZV9QYXR0ZXJuIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJwYXR0ZXJuIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbImNyb3NzSGF0Y2giLCJjcm9zc0RpYWdvbmFsIiwiZGlhZ29uYWxMZWZ0IiwiZGlhZ29uYWxSaWdodCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W2dsXShlKXtlPWU/ZVtnbF0oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3JbZ2xdKCk6IiMwMDAwMDAiLG49InJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQiLGE9YCR7ZX0sJHtlfSA1cHgsJHt0fSA1cHgsJHt0fSAxMHB4YDtzd2l0Y2godGhpcy50eXBlKXtjYXNlImNyb3NzSGF0Y2giOnJldHVybmAke259KHRvIHRvcCwke2F9KSAke259KHRvIHJpZ2h0LCR7YX0pYDtjYXNlImNyb3NzRGlhZ29uYWwiOnJldHVybmAke259KDQ1ZGVnLCR7YX0pICR7bn0oLTQ1ZGVnLCR7YX0pYDtjYXNlImRpYWdvbmFsTGVmdCI6cmV0dXJuYCR7bn0oNDVkZWcsJHthfSlgO2Nhc2UiZGlhZ29uYWxSaWdodCI6cmV0dXJuYCR7bn0oLTQ1ZGVnLCR7YX0pYDtjYXNlImhvcml6b250YWwiOnJldHVybmAke259KHRvIHRvcCwke2F9KWA7Y2FzZSJ2ZXJ0aWNhbCI6cmV0dXJuYCR7bn0odG8gcmlnaHQsJHthfSlgfXJldHVybiIifX1jbGFzcyBQaWN0dXJlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJwaWN0dXJlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFByb3RvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJwcm90byIsITApO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hcmM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hc3Npc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYmFyY29kZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5iaW5kSXRlbXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYm9va2VuZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJvcmRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVhaz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJ1dHRvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jYWxjdWxhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2FwdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2hlY2tCdXR0b249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2hvaWNlTGlzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb2xvcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb21iPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWVFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFVpPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlc2M9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRpZ2VzdE1ldGhvZHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lZGdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY29kaW5nPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY29kaW5ncz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHREYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uTWV0aG9kcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4ZWN1dGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXh0cmFzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpbGw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmlsdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZvbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZm9ybWF0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmhhbmRsZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaHlwaGVuYXRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2VFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaXNzdWVycz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5rZWVwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmtleVVzYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxpbmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubGluZWFyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxvY2tEb2N1bWVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYW5pZmVzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYXJnaW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWRwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1lZGl1bT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tZXNzYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm51bWVyaWNFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9jY3VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9pZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vaWRzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm92ZXJmbG93PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VTZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFyYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXNzd29yZEVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5waWN0dXJlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJhZGlhbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWFzb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVhc29ucz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWN0YW5nbGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVmPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNjcmlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduRGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduYXR1cmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmluZz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zb2xpZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zcGVhaz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdGlwcGxlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViamVjdEROcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0RWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWVTdGFtcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50b29sVGlwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRyYXZlcnNhbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy51aT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YWxpZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YWx1ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YXJpYWJsZXM9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBSYWRpYWwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsInJhZGlhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJ0b0VkZ2UiLCJ0b0NlbnRlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W2dsXShlKXtlPWU/ZVtnbF0oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3JbZ2xdKCk6IiMwMDAwMDAiO3JldHVybmByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IGNlbnRlciwgJHsidG9FZGdlIj09PXRoaXMudHlwZT9gJHtlfSwke3R9YDpgJHt0fSwke2V9YH0pYH19Y2xhc3MgUmVhc29uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJyZWFzb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUmVhc29ucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwicmVhc29ucyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnJlYXNvbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJlY3RhbmdsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwicmVjdGFuZ2xlIiwhMCk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZmlsbD1udWxsfVtwbF0oKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5sZW5ndGg/dGhpcy5lZGdlLmNoaWxkcmVuWzBdOm5ldyBFZGdlKHt9KSx0PWVbZ2xdKCksbj1PYmplY3QuY3JlYXRlKG51bGwpOyJ2aXNpYmxlIj09PXRoaXMuZmlsbD8ucHJlc2VuY2U/T2JqZWN0LmFzc2lnbihuLHRoaXMuZmlsbFtnbF0oKSk6bi5maWxsPSJ0cmFuc3BhcmVudCI7bi5zdHJva2VXaWR0aD1tZWFzdXJlVG9TdHJpbmcoInZpc2libGUiPT09ZS5wcmVzZW5jZT9lLnRoaWNrbmVzczowKTtuLnN0cm9rZT10LmNvbG9yO2NvbnN0IGE9KHRoaXMuY29ybmVyLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNvcm5lci5jaGlsZHJlblswXTpuZXcgQ29ybmVyKHt9KSlbZ2xdKCkscz17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6InJlY3QiLGF0dHJpYnV0ZXM6e3htbG5zOnIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIseDowLHk6MCxyeDphLnJhZGl1cyxyeTphLnJhZGl1cyxzdHlsZTpufX1dLGF0dHJpYnV0ZXM6e3htbG5zOnIsc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn0sd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fTtpZihoYXNNYXJnaW4odGhpc1tPb10oKVtPb10oKSkpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTp7ZGlzcGxheToiaW5saW5lIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19LGNoaWxkcmVuOltzXX0pO3MuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Mocyl9fWNsYXNzIFJlZkVsZW1lbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsInJlZiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTY3JpcHQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsInNjcmlwdCIpO3RoaXMuYmluZGluZz1lLmJpbmRpbmd8fCIiO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJ1bkF0PWdldFN0cmluZ09wdGlvbihlLnJ1bkF0LFsiY2xpZW50IiwiYm90aCIsInNlcnZlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNldFByb3BlcnR5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJzZXRQcm9wZXJ0eSIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiJ9fWNsYXNzIFNpZ25EYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJzaWduRGF0YSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsic2lnbiIsImNsZWFyIiwidmVyaWZ5Il0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsfX1jbGFzcyBTaWduYXR1cmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsInNpZ25hdHVyZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJQREYxLjMiLCJQREYxLjYiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyBTaWduaW5nIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJzaWduaW5nIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBTb2xpZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwic29saWQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtnbF0oZSl7cmV0dXJuIGU/ZVtnbF0oKToiI0ZGRkZGRiJ9fWNsYXNzIFNwZWFrIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJzcGVhayIpO3RoaXMuZGlzYWJsZT1nZXRJbnRlZ2VyKHtkYXRhOmUuZGlzYWJsZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmlvcml0eT1nZXRTdHJpbmdPcHRpb24oZS5wcmlvcml0eSxbImN1c3RvbSIsImNhcHRpb24iLCJuYW1lIiwidG9vbFRpcCJdKTt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTdGlwcGxlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJzdGlwcGxlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnJhdGUsZGVmYXVsdFZhbHVlOjUwLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTEwMH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bZ2xdKGUpe2NvbnN0IHQ9dGhpcy5yYXRlLzEwMDtyZXR1cm4gVXRpbC5tYWtlSGV4Q29sb3IoTWF0aC5yb3VuZChlLnZhbHVlLnIqKDEtdCkrdGhpcy52YWx1ZS5yKnQpLE1hdGgucm91bmQoZS52YWx1ZS5nKigxLXQpK3RoaXMudmFsdWUuZyp0KSxNYXRoLnJvdW5kKGUudmFsdWUuYiooMS10KSt0aGlzLnZhbHVlLmIqdCkpfX1jbGFzcyBTdWJmb3JtIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJzdWJmb3JtIiwhMCk7dGhpcy5hY2Nlc3M9Z2V0U3RyaW5nT3B0aW9uKGUuYWNjZXNzLFsib3BlbiIsIm5vbkludGVyYWN0aXZlIiwicHJvdGVjdGVkIiwicmVhZE9ubHkiXSk7dGhpcy5hbGxvd01hY3JvPWdldEludGVnZXIoe2RhdGE6ZS5hbGxvd01hY3JvLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5hbmNob3JUeXBlPWdldFN0cmluZ09wdGlvbihlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuY29sdW1uV2lkdGhzPShlLmNvbHVtbldpZHRoc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKGU9PiItMSI9PT1lPy0xOmdldE1lYXN1cmVtZW50KGUpKTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGF5b3V0PWdldFN0cmluZ09wdGlvbihlLmxheW91dCxbInBvc2l0aW9uIiwibHItdGIiLCJybC1yb3ciLCJybC10YiIsInJvdyIsInRhYmxlIiwidGIiXSk7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD1nZXRNZWFzdXJlbWVudChlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz1nZXRNZWFzdXJlbWVudChlLm1heFcsIjBwdCIpO3RoaXMubWVyZ2VNb2RlPWdldFN0cmluZ09wdGlvbihlLm1lcmdlTW9kZSxbImNvbnN1bWVEYXRhIiwibWF0Y2hUZW1wbGF0ZSJdKTt0aGlzLm1pbkg9Z2V0TWVhc3VyZW1lbnQoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9Z2V0TWVhc3VyZW1lbnQoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy5yZXN0b3JlU3RhdGU9Z2V0U3RyaW5nT3B0aW9uKGUucmVzdG9yZVN0YXRlLFsibWFudWFsIiwiYXV0byJdKTt0aGlzLnNjb3BlPWdldFN0cmluZ09wdGlvbihlLnNjb3BlLFsibmFtZSIsIm5vbmUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/Z2V0TWVhc3VyZW1lbnQoZS53KToiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9va2VuZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5icmVhaz1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLm92ZXJmbG93PW51bGw7dGhpcy5wYWdlU2V0PW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy52YXJpYWJsZXM9bnVsbDt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtBZnRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnByb3RvPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9W1JvXSgpe2NvbnN0IGU9dGhpc1tPb10oKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/ZVtSb10oKTplfVtfb10oKXtyZXR1cm4hMH1bWG9dKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbcG9dLmF0dGVtcHQmJnRoaXNbcG9dLm51bWJlckluTGluZT4wfHx0aGlzW09vXSgpW1hvXSgpfSpbSW9dKCl7eWllbGQqZ2V0Q29udGFpbmVkQ2hpbGRyZW4odGhpcyl9W2JvXSgpe3JldHVybiBmbHVzaEhUTUwodGhpcyl9W2FvXShlLHQpe2FkZEhUTUwodGhpcyxlLHQpfVtrb10oKXtyZXR1cm4gZ2V0QXZhaWxhYmxlU3BhY2UodGhpcyl9W1dvXSgpe2NvbnN0IGU9dGhpc1tSb10oKTtpZighZVtXb10oKSlyZXR1cm4hMTtpZih2b2lkIDAhPT10aGlzW3BvXS5faXNTcGxpdHRhYmxlKXJldHVybiB0aGlzW3BvXS5faXNTcGxpdHRhYmxlO2lmKCJwb3NpdGlvbiI9PT10aGlzLmxheW91dHx8dGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt0aGlzW3BvXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKHRoaXMua2VlcCYmIm5vbmUiIT09dGhpcy5rZWVwLmludGFjdCl7dGhpc1twb10uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZihlLmxheW91dD8uZW5kc1dpdGgoIi10YiIpJiYwIT09ZVtwb10ubnVtYmVySW5MaW5lKXJldHVybiExO3RoaXNbcG9dLl9pc1NwbGl0dGFibGU9ITA7cmV0dXJuITB9W3BsXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZih0aGlzLmJyZWFrKXtpZigiYXV0byIhPT10aGlzLmJyZWFrLmFmdGVyfHwiIiE9PXRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQWZ0ZXIoe3RhcmdldFR5cGU6dGhpcy5icmVhay5hZnRlcix0YXJnZXQ6dGhpcy5icmVhay5hZnRlclRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW0JvXT10aGlzW0JvXTt0aGlzW3NvXShlKTt0aGlzLmJyZWFrQWZ0ZXIucHVzaChlKX1pZigiYXV0byIhPT10aGlzLmJyZWFrLmJlZm9yZXx8IiIhPT10aGlzLmJyZWFrLmJlZm9yZVRhcmdldCl7Y29uc3QgZT1uZXcgQnJlYWtCZWZvcmUoe3RhcmdldFR5cGU6dGhpcy5icmVhay5iZWZvcmUsdGFyZ2V0OnRoaXMuYnJlYWsuYmVmb3JlVGFyZ2V0LHN0YXJ0TmV3OnRoaXMuYnJlYWsuc3RhcnROZXcudG9TdHJpbmcoKX0pO2VbQm9dPXRoaXNbQm9dO3RoaXNbc29dKGUpO3RoaXMuYnJlYWtCZWZvcmUucHVzaChlKX1pZigiIiE9PXRoaXMuYnJlYWsub3ZlcmZsb3dUYXJnZXQpe2NvbnN0IGU9bmV3IE92ZXJmbG93KHt0YXJnZXQ6dGhpcy5icmVhay5vdmVyZmxvd1RhcmdldCxsZWFkZXI6dGhpcy5icmVhay5vdmVyZmxvd0xlYWRlcix0cmFpbGVyOnRoaXMuYnJlYWsub3ZlcmZsb3dUcmFpbGVyfSk7ZVtCb109dGhpc1tCb107dGhpc1tzb10oZSk7dGhpcy5vdmVyZmxvdy5wdXNoKGUpfXRoaXNbc2xdKHRoaXMuYnJlYWspO3RoaXMuYnJlYWs9bnVsbH1pZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZOyh0aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD4xfHx0aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW4ubGVuZ3RoPjEpJiZ3YXJuKCJYRkEgLSBTZXZlcmFsIGJyZWFrQmVmb3JlIG9yIGJyZWFrQWZ0ZXIgaW4gc3ViZm9ybXM6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO2lmKHRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtjb25zdCBlPXRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07aWYoaGFuZGxlQnJlYWsoZSkpcmV0dXJuIEhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfWlmKHRoaXNbcG9dPy5hZnRlckJyZWFrQWZ0ZXIpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Zml4RGltZW5zaW9ucyh0aGlzKTtjb25zdCB0PVtdLG49e2lkOnRoaXNbYmxdLGNsYXNzOltdfTtzZXRBY2Nlc3ModGhpcyxuLmNsYXNzKTt0aGlzW3BvXXx8PU9iamVjdC5jcmVhdGUobnVsbCk7T2JqZWN0LmFzc2lnbih0aGlzW3BvXSx7Y2hpbGRyZW46dCxsaW5lOm51bGwsYXR0cmlidXRlczpuLGF0dGVtcHQ6MCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCBhPXRoaXNbSG9dKCkscz1hW3BvXS5ub0xheW91dEZhaWx1cmUscj10aGlzW1dvXSgpO3J8fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSlyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFO2NvbnN0IGk9bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZXhjbEdyb3VwIiwiZmllbGQiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tSb10oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1twb10uY29sdW1uV2lkdGhzPWU7dGhpc1twb10uY3VycmVudENvbHVtbj0wfX1jb25zdCBvPXRvU3R5bGUodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksbD1bInhmYVN1YmZvcm0iXSxmPWxheW91dENsYXNzKHRoaXMpO2YmJmwucHVzaChmKTtuLnN0eWxlPW87bi5jbGFzcz1sO3RoaXMubmFtZSYmKG4ueGZhTmFtZT10aGlzLm5hbWUpO2lmKHRoaXMub3ZlcmZsb3cpe2NvbnN0IHQ9dGhpcy5vdmVyZmxvd1tBb10oKTtpZih0LmFkZExlYWRlcil7dC5hZGRMZWFkZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LmxlYWRlcixlKX19dGhpc1thbF0oKTtjb25zdCBjPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGg9Yz8yOjE7Zm9yKDt0aGlzW3BvXS5hdHRlbXB0PGg7dGhpc1twb10uYXR0ZW1wdCsrKXtjJiYxPT09dGhpc1twb10uYXR0ZW1wdCYmKHRoaXNbcG9dLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbcm9dKHtmaWx0ZXI6aSxpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW25sXSgpO3JldHVybiBlfWlmKGMmJjA9PT10aGlzW3BvXS5hdHRlbXB0JiYwPT09dGhpc1twb10ubnVtYmVySW5MaW5lJiYhYVtwb10ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW3BvXS5hdHRlbXB0PWg7YnJlYWt9fXRoaXNbbmxdKCk7cnx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTthW3BvXS5ub0xheW91dEZhaWx1cmU9cztpZih0aGlzW3BvXS5hdHRlbXB0PT09aCl7dGhpcy5vdmVyZmxvdyYmKHRoaXNbSG9dKClbcG9dLm92ZXJmbG93Tm9kZT10aGlzLm92ZXJmbG93KTtyfHxkZWxldGUgdGhpc1twb107cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX1pZih0aGlzLm92ZXJmbG93KXtjb25zdCB0PXRoaXMub3ZlcmZsb3dbQW9dKCk7aWYodC5hZGRUcmFpbGVyKXt0LmFkZFRyYWlsZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LnRyYWlsZXIsZSl9fWxldCB1PTAsbT0wO2lmKHRoaXMubWFyZ2luKXt1PXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O209dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3QgcD1NYXRoLm1heCh0aGlzW3BvXS53aWR0aCt1LHRoaXMud3x8MCksZD1NYXRoLm1heCh0aGlzW3BvXS5oZWlnaHQrbSx0aGlzLmh8fDApLGc9W3RoaXMueCx0aGlzLnkscCxkXTsiIj09PXRoaXMudyYmKG8ud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHApKTsiIj09PXRoaXMuaCYmKG8uaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhkKSk7aWYoKCIwcHgiPT09by53aWR0aHx8IjBweCI9PT1vLmhlaWdodCkmJjA9PT10Lmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtjb25zdCBiPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6bixjaGlsZHJlbjp0fTthcHBseUFzc2lzdCh0aGlzLG4pO2NvbnN0IHc9SFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxiKSxnKTtpZih0aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW4ubGVuZ3RoPj0xKXtjb25zdCBlPXRoaXMuYnJlYWtBZnRlci5jaGlsZHJlblswXTtpZihoYW5kbGVCcmVhayhlKSl7dGhpc1twb10uYWZ0ZXJCcmVha0FmdGVyPXc7cmV0dXJuIEhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfX1kZWxldGUgdGhpc1twb107cmV0dXJuIHd9fWNsYXNzIFN1YmZvcm1TZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsInN1YmZvcm1TZXQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUucmVsYXRpb24sWyJvcmRlcmVkIiwiY2hvaWNlIiwidW5vcmRlcmVkIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9va2VuZD1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLm92ZXJmbG93PW51bGw7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9KltJb10oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bUm9dKCl7bGV0IGU9dGhpc1tPb10oKTtmb3IoOyEoZSBpbnN0YW5jZW9mIFN1YmZvcm0pOyllPWVbT29dKCk7cmV0dXJuIGV9W19vXSgpe3JldHVybiEwfX1jbGFzcyBTdWJqZWN0RE4gZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJzdWJqZWN0RE4iKTt0aGlzLmRlbGltaXRlcj1lLmRlbGltaXRlcnx8IiwiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtnb10oKXt0aGlzW2hvXT1uZXcgTWFwKHRoaXNbaG9dLnNwbGl0KHRoaXMuZGVsaW1pdGVyKS5tYXAoZT0+eyhlPWUuc3BsaXQoIj0iLDIpKVswXT1lWzBdLnRyaW0oKTtyZXR1cm4gZX0pKX19Y2xhc3MgU3ViamVjdEROcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwic3ViamVjdEROcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnN1YmplY3RETj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFN1Ym1pdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwic3VibWl0IiwhMCk7dGhpcy5lbWJlZFBERj1nZXRJbnRlZ2VyKHtkYXRhOmUuZW1iZWRQREYsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmZvcm1hdD1nZXRTdHJpbmdPcHRpb24oZS5mb3JtYXQsWyJ4ZHAiLCJmb3JtZGF0YSIsInBkZiIsInVybGVuY29kZWQiLCJ4ZmQiLCJ4bWwiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50ZXh0RW5jb2Rpbmc9Z2V0S2V5d29yZCh7ZGF0YTplLnRleHRFbmNvZGluZz9lLnRleHRFbmNvZGluZy50b0xvd2VyQ2FzZSgpOiIiLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTplPT5bInV0Zi04IiwiYmlnLWZpdmUiLCJmb250c3BlY2lmaWMiLCJnYmsiLCJnYi0xODAzMCIsImdiLTIzMTIiLCJrc2MtNTYwMSIsIm5vbmUiLCJzaGlmdC1qaXMiLCJ1Y3MtMiIsInV0Zi0xNiJdLmluY2x1ZGVzKGUpfHxlLm1hdGNoKC9pc28tODg1OS1cZHsyfS8pfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueGRwQ29udGVudD1lLnhkcENvbnRlbnR8fCIiO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZW5jcnlwdERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbkRhdGE9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBUZW1wbGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwidGVtcGxhdGUiLCEwKTt0aGlzLmJhc2VQcm9maWxlPWdldFN0cmluZ09wdGlvbihlLmJhc2VQcm9maWxlLFsiZnVsbCIsImludGVyYWN0aXZlRm9ybXMiXSk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5fVtnb10oKXswPT09dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aCYmd2FybigiWEZBIC0gTm8gc3ViZm9ybXMgaW4gdGVtcGxhdGUgbm9kZS4iKTt0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0yJiZ3YXJuKCJYRkEgLSBTZXZlcmFsIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGU6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3RoaXNbaGxdPTVlM31bV29dKCl7cmV0dXJuITB9W29sXShlLHQpe3JldHVybiBlLnN0YXJ0c1dpdGgoIiMiKT9bdGhpc1tNb10uZ2V0KGUuc2xpY2UoMSkpXTpzZWFyY2hOb2RlKHRoaXMsdCxlLCEwLCEwKX0qW21sXSgpe2lmKCF0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W119KTt0aGlzW3BvXT17b3ZlcmZsb3dOb2RlOm51bGwsZmlyc3RVbnNwbGl0dGFibGU6bnVsbCxjdXJyZW50Q29udGVudEFyZWE6bnVsbCxjdXJyZW50UGFnZUFyZWE6bnVsbCxub0xheW91dEZhaWx1cmU6ITEscGFnZU51bWJlcjoxLHBhZ2VQb3NpdGlvbjoiZmlyc3QiLG9kZE9yRXZlbjoib2RkIixibGFua09yTm90Qmxhbms6Im5vbkJsYW5rIixwYXJhU3RhY2s6W119O2NvbnN0IGU9dGhpcy5zdWJmb3JtLmNoaWxkcmVuWzBdO2UucGFnZVNldFtvb10oKTtjb25zdCB0PWUucGFnZVNldC5wYWdlQXJlYS5jaGlsZHJlbixuPXtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfTtsZXQgYT1udWxsLHM9bnVsbCxyPW51bGw7aWYoZS5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe3M9ZS5icmVha0JlZm9yZS5jaGlsZHJlblswXTtyPXMudGFyZ2V0fWVsc2UgaWYoZS5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7cz1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07cj1zLnRhcmdldH1lbHNlIGlmKGUuYnJlYWs/LmJlZm9yZVRhcmdldCl7cz1lLmJyZWFrO3I9cy5iZWZvcmVUYXJnZXR9ZWxzZSBpZihlLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0xJiZlLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWs/LmJlZm9yZVRhcmdldCl7cz1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWs7cj1zLmJlZm9yZVRhcmdldH1pZihzKXtjb25zdCBlPXRoaXNbb2xdKHIsc1tPb10oKSk7aWYoZSBpbnN0YW5jZW9mIFBhZ2VBcmVhKXthPWU7c1twb109e319fWF8fD10WzBdO2FbcG9dPXtudW1iZXJPZlVzZToxfTtjb25zdCBpPWFbT29dKCk7aVtwb109e251bWJlck9mVXNlOjEscGFnZUluZGV4OmkucGFnZUFyZWEuY2hpbGRyZW4uaW5kZXhPZihhKSxwYWdlU2V0SW5kZXg6MH07bGV0IG8sbD1udWxsLGY9bnVsbCxjPSEwLGg9MCx1PTA7Zm9yKDs7KXtpZihjKWg9MDtlbHNle24uY2hpbGRyZW4ucG9wKCk7aWYoMz09PSsraCl7d2FybigiWEZBIC0gU29tZXRoaW5nIGdvZXMgd3Jvbmc6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3JldHVybiBufX1vPW51bGw7dGhpc1twb10uY3VycmVudFBhZ2VBcmVhPWE7Y29uc3QgdD1hW3BsXSgpLmh0bWw7bi5jaGlsZHJlbi5wdXNoKHQpO2lmKGwpe3RoaXNbcG9dLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2gobFtwbF0oYVtwb10uc3BhY2UpLmh0bWwpO2w9bnVsbH1pZihmKXt0aGlzW3BvXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKGZbcGxdKGFbcG9dLnNwYWNlKS5odG1sKTtmPW51bGx9Y29uc3Qgcz1hLmNvbnRlbnRBcmVhLmNoaWxkcmVuLHI9dC5jaGlsZHJlbi5maWx0ZXIoZT0+ZS5hdHRyaWJ1dGVzLmNsYXNzLmluY2x1ZGVzKCJ4ZmFDb250ZW50YXJlYSIpKTtjPSExO3RoaXNbcG9dLmZpcnN0VW5zcGxpdHRhYmxlPW51bGw7dGhpc1twb10ubm9MYXlvdXRGYWlsdXJlPSExO2NvbnN0IGZsdXNoPXQ9Pntjb25zdCBuPWVbYm9dKCk7aWYobil7Y3x8PW4uY2hpbGRyZW4/Lmxlbmd0aD4wO3JbdF0uY2hpbGRyZW4ucHVzaChuKX19O2ZvcihsZXQgdD11LGE9cy5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgYT10aGlzW3BvXS5jdXJyZW50Q29udGVudEFyZWE9c1t0XSxpPXt3aWR0aDphLncsaGVpZ2h0OmEuaH07dT0wO2lmKGwpe3JbdF0uY2hpbGRyZW4ucHVzaChsW3BsXShpKS5odG1sKTtsPW51bGx9aWYoZil7clt0XS5jaGlsZHJlbi5wdXNoKGZbcGxdKGkpLmh0bWwpO2Y9bnVsbH1jb25zdCBoPWVbcGxdKGkpO2lmKGguc3VjY2Vzcyl7aWYoaC5odG1sKXtjfHw9aC5odG1sLmNoaWxkcmVuPy5sZW5ndGg+MDtyW3RdLmNoaWxkcmVuLnB1c2goaC5odG1sKX1lbHNlIWMmJm4uY2hpbGRyZW4ubGVuZ3RoPjEmJm4uY2hpbGRyZW4ucG9wKCk7cmV0dXJuIG59aWYoaC5pc0JyZWFrKCkpe2NvbnN0IGU9aC5icmVha05vZGU7Zmx1c2godCk7aWYoImF1dG8iPT09ZS50YXJnZXRUeXBlKWNvbnRpbnVlO2lmKGUubGVhZGVyKXtsPXRoaXNbb2xdKGUubGVhZGVyLGVbT29dKCkpO2w9bD9sWzBdOm51bGx9aWYoZS50cmFpbGVyKXtmPXRoaXNbb2xdKGUudHJhaWxlcixlW09vXSgpKTtmPWY/ZlswXTpudWxsfWlmKCJwYWdlQXJlYSI9PT1lLnRhcmdldFR5cGUpe289ZVtwb10udGFyZ2V0O3Q9MS8wfWVsc2UgaWYoZVtwb10udGFyZ2V0KXtvPWVbcG9dLnRhcmdldDt1PWVbcG9dLmluZGV4KzE7dD0xLzB9ZWxzZSB0PWVbcG9dLmluZGV4O2NvbnRpbnVlfWlmKHRoaXNbcG9dLm92ZXJmbG93Tm9kZSl7Y29uc3QgZT10aGlzW3BvXS5vdmVyZmxvd05vZGU7dGhpc1twb10ub3ZlcmZsb3dOb2RlPW51bGw7Y29uc3Qgbj1lW0FvXSgpLGE9bi50YXJnZXQ7bi5hZGRMZWFkZXI9bnVsbCE9PW4ubGVhZGVyO24uYWRkVHJhaWxlcj1udWxsIT09bi50cmFpbGVyO2ZsdXNoKHQpO2NvbnN0IHI9dDt0PTEvMDtpZihhIGluc3RhbmNlb2YgUGFnZUFyZWEpbz1hO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIENvbnRlbnRBcmVhKXtjb25zdCBlPXMuaW5kZXhPZihhKTtpZigtMSE9PWUpZT5yP3Q9ZS0xOnU9ZTtlbHNle289YVtPb10oKTt1PW8uY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihhKX19Y29udGludWV9Zmx1c2godCl9dGhpc1twb10ucGFnZU51bWJlcis9MTtvJiYob1tHb10oKT9vW3BvXS5udW1iZXJPZlVzZSs9MTpvPW51bGwpO2E9b3x8YVtGb10oKTt5aWVsZCBudWxsfX19Y2xhc3MgVGV4dCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsInRleHQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4Q2hhcnM9Z2V0SW50ZWdlcih7ZGF0YTplLm1heENoYXJzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtub10oKXtyZXR1cm4hMH1bUW9dKGUpe2lmKGVbJG9dPT09amwueGh0bWwuaWQpe3RoaXNbaG9dPWU7cmV0dXJuITB9d2FybihgWEZBIC0gSW52YWxpZCBjb250ZW50IGluIFRleHQ6ICR7ZVtZb119LmApO3JldHVybiExfVtlbF0oZSl7dGhpc1tob11pbnN0YW5jZW9mIFhGQU9iamVjdHx8c3VwZXJbZWxdKGUpfVtnb10oKXsic3RyaW5nIj09dHlwZW9mIHRoaXNbaG9dJiYodGhpc1tob109dGhpc1tob10ucmVwbGFjZUFsbCgiXHJcbiIsIlxuIikpfVtBb10oKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRoaXNbaG9dP3RoaXNbaG9dLnNwbGl0KC9bXHUyMDI5XHUyMDI4XG5dLykuZmlsdGVyKGU9PiEhZSkuam9pbigiXG4iKTp0aGlzW2hvXVt1bF0oKX1bcGxdKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdGhpc1tob10pe2NvbnN0IGU9dmFsdWVUb0h0bWwodGhpc1tob10pLmh0bWw7aWYodGhpc1tob10uaW5jbHVkZXMoIlx1MjAyOSIpKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW2hvXS5zcGxpdCgiXHUyMDI5IikubWFwKGU9PmUuc3BsaXQoL1tcdTIwMjhcbl0vKS5mbGF0TWFwKGU9Plt7bmFtZToic3BhbiIsdmFsdWU6ZX0se25hbWU6ImJyIn1dKSkuZm9yRWFjaCh0PT57ZS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJwIixjaGlsZHJlbjp0fSl9KX1lbHNlIGlmKC9bXHUyMDI4XG5dLy50ZXN0KHRoaXNbaG9dKSl7ZS5uYW1lPSJkaXYiO2UuY2hpbGRyZW49W107dGhpc1tob10uc3BsaXQoL1tcdTIwMjhcbl0vKS5mb3JFYWNoKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InNwYW4iLHZhbHVlOnR9LHtuYW1lOiJiciJ9KX0pfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIHRoaXNbaG9dW3BsXShlKX19Y2xhc3MgVGV4dEVkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsInRleHRFZGl0IiwhMCk7dGhpcy5hbGxvd1JpY2hUZXh0PWdldEludGVnZXIoe2RhdGE6ZS5hbGxvd1JpY2hUZXh0LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm11bHRpTGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUubXVsdGlMaW5lLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTplPT4wPT09ZXx8MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52U2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLnZTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3BsXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpO2xldCBuO2NvbnN0IGE9dGhpc1tPb10oKVtPb10oKTsiIj09PXRoaXMubXVsdGlMaW5lJiYodGhpcy5tdWx0aUxpbmU9YSBpbnN0YW5jZW9mIERyYXc/MTowKTtuPTE9PT10aGlzLm11bHRpTGluZT97bmFtZToidGV4dGFyZWEiLGF0dHJpYnV0ZXM6e2RhdGFJZDphW3VvXT8uW2JsXXx8YVtibF0sZmllbGRJZDphW2JsXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChhKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTp7bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGRhdGFJZDphW3VvXT8uW2JsXXx8YVtibF0sZmllbGRJZDphW2JsXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChhKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtpZihpc1JlcXVpcmVkKGEpKXtuLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDtuLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W25dfSl9fWNsYXNzIFRpbWUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsInRpbWUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bZ29dKCl7Y29uc3QgZT10aGlzW2hvXS50cmltKCk7dGhpc1tob109ZT9uZXcgRGF0ZShlKTpudWxsfVtwbF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbaG9dP3RoaXNbaG9dLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBUaW1lU3RhbXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsInRpbWVTdGFtcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5zZXJ2ZXI9ZS5zZXJ2ZXJ8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFRvb2xUaXAgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsInRvb2xUaXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFRyYXZlcnNhbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwidHJhdmVyc2FsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnRyYXZlcnNlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVHJhdmVyc2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsInRyYXZlcnNlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZXJhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVyYXRpb24sWyJuZXh0IiwiYmFjayIsImRvd24iLCJmaXJzdCIsImxlZnQiLCJyaWdodCIsInVwIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnNjcmlwdD1udWxsfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMub3BlcmF0aW9ufVtLb10oKXtyZXR1cm4hMX19Y2xhc3MgVWkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsInVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLmJhcmNvZGU9bnVsbDt0aGlzLmJ1dHRvbj1udWxsO3RoaXMuY2hlY2tCdXR0b249bnVsbDt0aGlzLmNob2ljZUxpc3Q9bnVsbDt0aGlzLmRhdGVUaW1lRWRpdD1udWxsO3RoaXMuZGVmYXVsdFVpPW51bGw7dGhpcy5pbWFnZUVkaXQ9bnVsbDt0aGlzLm51bWVyaWNFZGl0PW51bGw7dGhpcy5wYXNzd29yZEVkaXQ9bnVsbDt0aGlzLnNpZ25hdHVyZT1udWxsO3RoaXMudGV4dEVkaXQ9bnVsbH1bQW9dKCl7aWYodm9pZCAwPT09dGhpc1twb10pe2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiZXh0cmFzIj09PWV8fCJwaWN0dXJlIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe3RoaXNbcG9dPXQ7cmV0dXJuIHR9fXRoaXNbcG9dPW51bGx9cmV0dXJuIHRoaXNbcG9dfVtwbF0oZSl7Y29uc3QgdD10aGlzW0FvXSgpO3JldHVybiB0P3RbcGxdKGUpOkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIFZhbGlkYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpsLCJ2YWxpZGF0ZSIsITApO3RoaXMuZm9ybWF0VGVzdD1nZXRTdHJpbmdPcHRpb24oZS5mb3JtYXRUZXN0LFsid2FybmluZyIsImRpc2FibGVkIiwiZXJyb3IiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm51bGxUZXN0PWdldFN0cmluZ09wdGlvbihlLm51bGxUZXN0LFsiZGlzYWJsZWQiLCJlcnJvciIsIndhcm5pbmciXSk7dGhpcy5zY3JpcHRUZXN0PWdldFN0cmluZ09wdGlvbihlLnNjcmlwdFRlc3QsWyJlcnJvciIsImRpc2FibGVkIiwid2FybmluZyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lc3NhZ2U9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBWYWx1ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabCwidmFsdWUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9Z2V0SW50ZWdlcih7ZGF0YTplLm92ZXJyaWRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5hcmM9bnVsbDt0aGlzLmJvb2xlYW49bnVsbDt0aGlzLmRhdGU9bnVsbDt0aGlzLmRhdGVUaW1lPW51bGw7dGhpcy5kZWNpbWFsPW51bGw7dGhpcy5leERhdGE9bnVsbDt0aGlzLmZsb2F0PW51bGw7dGhpcy5pbWFnZT1udWxsO3RoaXMuaW50ZWdlcj1udWxsO3RoaXMubGluZT1udWxsO3RoaXMucmVjdGFuZ2xlPW51bGw7dGhpcy50ZXh0PW51bGw7dGhpcy50aW1lPW51bGx9W2NsXShlKXtjb25zdCB0PXRoaXNbT29dKCk7aWYodCBpbnN0YW5jZW9mIEZpZWxkJiZ0LnVpPy5pbWFnZUVkaXQpe2lmKCF0aGlzLmltYWdlKXt0aGlzLmltYWdlPW5ldyBJbWFnZSh7fSk7dGhpc1tzb10odGhpcy5pbWFnZSl9dGhpcy5pbWFnZVtob109ZVtob107cmV0dXJufWNvbnN0IG49ZVtZb107aWYobnVsbD09PXRoaXNbbl0pe2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIFhGQU9iamVjdCl7dGhpc1tlXT1udWxsO3RoaXNbc2xdKHQpfX10aGlzW2VbWW9dXT1lO3RoaXNbc29dKGUpfWVsc2UgdGhpc1tuXVtob109ZVtob119W3VsXSgpe2lmKHRoaXMuZXhEYXRhKXJldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5leERhdGFbaG9dP3RoaXMuZXhEYXRhW2hvXS50cmltKCk6dGhpcy5leERhdGFbaG9dW3VsXSgpLnRyaW0oKTtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImltYWdlIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3QpcmV0dXJuKHRbaG9dfHwiIikudG9TdHJpbmcoKS50cmltKCl9cmV0dXJuIG51bGx9W3BsXShlKXtmb3IoY29uc3QgdCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3Qgbj10aGlzW3RdO2lmKG4gaW5zdGFuY2VvZiBYRkFPYmplY3QpcmV0dXJuIG5bcGxdKGUpfXJldHVybiBIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBWYXJpYWJsZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWmwsInZhcmlhYmxlcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWFuaWZlc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2NyaXB0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9W0tvXSgpe3JldHVybiEwfX1jbGFzcyBUZW1wbGF0ZU5hbWVzcGFjZXtzdGF0aWNbd2xdKGUsdCl7aWYoT2JqZWN0Lmhhc093bihUZW1wbGF0ZU5hbWVzcGFjZSxlKSl7Y29uc3Qgbj1UZW1wbGF0ZU5hbWVzcGFjZVtlXSh0KTtuW2ZsXSh0KTtyZXR1cm4gbn19c3RhdGljIGFwcGVhcmFuY2VGaWx0ZXIoZSl7cmV0dXJuIG5ldyBBcHBlYXJhbmNlRmlsdGVyKGUpfXN0YXRpYyBhcmMoZSl7cmV0dXJuIG5ldyBBcmMoZSl9c3RhdGljIGFyZWEoZSl7cmV0dXJuIG5ldyBBcmVhKGUpfXN0YXRpYyBhc3Npc3QoZSl7cmV0dXJuIG5ldyBBc3Npc3QoZSl9c3RhdGljIGJhcmNvZGUoZSl7cmV0dXJuIG5ldyBCYXJjb2RlKGUpfXN0YXRpYyBiaW5kKGUpe3JldHVybiBuZXcgQmluZChlKX1zdGF0aWMgYmluZEl0ZW1zKGUpe3JldHVybiBuZXcgQmluZEl0ZW1zKGUpfXN0YXRpYyBib29rZW5kKGUpe3JldHVybiBuZXcgQm9va2VuZChlKX1zdGF0aWMgYm9vbGVhbihlKXtyZXR1cm4gbmV3IEJvb2xlYW5FbGVtZW50KGUpfXN0YXRpYyBib3JkZXIoZSl7cmV0dXJuIG5ldyBCb3JkZXIoZSl9c3RhdGljIGJyZWFrKGUpe3JldHVybiBuZXcgQnJlYWsoZSl9c3RhdGljIGJyZWFrQWZ0ZXIoZSl7cmV0dXJuIG5ldyBCcmVha0FmdGVyKGUpfXN0YXRpYyBicmVha0JlZm9yZShlKXtyZXR1cm4gbmV3IEJyZWFrQmVmb3JlKGUpfXN0YXRpYyBidXR0b24oZSl7cmV0dXJuIG5ldyBCdXR0b24oZSl9c3RhdGljIGNhbGN1bGF0ZShlKXtyZXR1cm4gbmV3IENhbGN1bGF0ZShlKX1zdGF0aWMgY2FwdGlvbihlKXtyZXR1cm4gbmV3IENhcHRpb24oZSl9c3RhdGljIGNlcnRpZmljYXRlKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGUoZSl9c3RhdGljIGNlcnRpZmljYXRlcyhlKXtyZXR1cm4gbmV3IENlcnRpZmljYXRlcyhlKX1zdGF0aWMgY2hlY2tCdXR0b24oZSl7cmV0dXJuIG5ldyBDaGVja0J1dHRvbihlKX1zdGF0aWMgY2hvaWNlTGlzdChlKXtyZXR1cm4gbmV3IENob2ljZUxpc3QoZSl9c3RhdGljIGNvbG9yKGUpe3JldHVybiBuZXcgQ29sb3IoZSl9c3RhdGljIGNvbWIoZSl7cmV0dXJuIG5ldyBDb21iKGUpfXN0YXRpYyBjb25uZWN0KGUpe3JldHVybiBuZXcgQ29ubmVjdChlKX1zdGF0aWMgY29udGVudEFyZWEoZSl7cmV0dXJuIG5ldyBDb250ZW50QXJlYShlKX1zdGF0aWMgY29ybmVyKGUpe3JldHVybiBuZXcgQ29ybmVyKGUpfXN0YXRpYyBkYXRlKGUpe3JldHVybiBuZXcgRGF0ZUVsZW1lbnQoZSl9c3RhdGljIGRhdGVUaW1lKGUpe3JldHVybiBuZXcgRGF0ZVRpbWUoZSl9c3RhdGljIGRhdGVUaW1lRWRpdChlKXtyZXR1cm4gbmV3IERhdGVUaW1lRWRpdChlKX1zdGF0aWMgZGVjaW1hbChlKXtyZXR1cm4gbmV3IERlY2ltYWwoZSl9c3RhdGljIGRlZmF1bHRVaShlKXtyZXR1cm4gbmV3IERlZmF1bHRVaShlKX1zdGF0aWMgZGVzYyhlKXtyZXR1cm4gbmV3IERlc2MoZSl9c3RhdGljIGRpZ2VzdE1ldGhvZChlKXtyZXR1cm4gbmV3IERpZ2VzdE1ldGhvZChlKX1zdGF0aWMgZGlnZXN0TWV0aG9kcyhlKXtyZXR1cm4gbmV3IERpZ2VzdE1ldGhvZHMoZSl9c3RhdGljIGRyYXcoZSl7cmV0dXJuIG5ldyBEcmF3KGUpfXN0YXRpYyBlZGdlKGUpe3JldHVybiBuZXcgRWRnZShlKX1zdGF0aWMgZW5jb2RpbmcoZSl7cmV0dXJuIG5ldyBFbmNvZGluZyhlKX1zdGF0aWMgZW5jb2RpbmdzKGUpe3JldHVybiBuZXcgRW5jb2RpbmdzKGUpfXN0YXRpYyBlbmNyeXB0KGUpe3JldHVybiBuZXcgRW5jcnlwdChlKX1zdGF0aWMgZW5jcnlwdERhdGEoZSl7cmV0dXJuIG5ldyBFbmNyeXB0RGF0YShlKX1zdGF0aWMgZW5jcnlwdGlvbihlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb24oZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2QoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTWV0aG9kKGUpfXN0YXRpYyBlbmNyeXB0aW9uTWV0aG9kcyhlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2RzKGUpfXN0YXRpYyBldmVudChlKXtyZXR1cm4gbmV3IEV2ZW50KGUpfXN0YXRpYyBleERhdGEoZSl7cmV0dXJuIG5ldyBFeERhdGEoZSl9c3RhdGljIGV4T2JqZWN0KGUpe3JldHVybiBuZXcgRXhPYmplY3QoZSl9c3RhdGljIGV4Y2xHcm91cChlKXtyZXR1cm4gbmV3IEV4Y2xHcm91cChlKX1zdGF0aWMgZXhlY3V0ZShlKXtyZXR1cm4gbmV3IEV4ZWN1dGUoZSl9c3RhdGljIGV4dHJhcyhlKXtyZXR1cm4gbmV3IEV4dHJhcyhlKX1zdGF0aWMgZmllbGQoZSl7cmV0dXJuIG5ldyBGaWVsZChlKX1zdGF0aWMgZmlsbChlKXtyZXR1cm4gbmV3IEZpbGwoZSl9c3RhdGljIGZpbHRlcihlKXtyZXR1cm4gbmV3IEZpbHRlcihlKX1zdGF0aWMgZmxvYXQoZSl7cmV0dXJuIG5ldyBGbG9hdChlKX1zdGF0aWMgZm9udChlKXtyZXR1cm4gbmV3IHRlbXBsYXRlX0ZvbnQoZSl9c3RhdGljIGZvcm1hdChlKXtyZXR1cm4gbmV3IEZvcm1hdChlKX1zdGF0aWMgaGFuZGxlcihlKXtyZXR1cm4gbmV3IEhhbmRsZXIoZSl9c3RhdGljIGh5cGhlbmF0aW9uKGUpe3JldHVybiBuZXcgSHlwaGVuYXRpb24oZSl9c3RhdGljIGltYWdlKGUpe3JldHVybiBuZXcgSW1hZ2UoZSl9c3RhdGljIGltYWdlRWRpdChlKXtyZXR1cm4gbmV3IEltYWdlRWRpdChlKX1zdGF0aWMgaW50ZWdlcihlKXtyZXR1cm4gbmV3IEludGVnZXIoZSl9c3RhdGljIGlzc3VlcnMoZSl7cmV0dXJuIG5ldyBJc3N1ZXJzKGUpfXN0YXRpYyBpdGVtcyhlKXtyZXR1cm4gbmV3IEl0ZW1zKGUpfXN0YXRpYyBrZWVwKGUpe3JldHVybiBuZXcgS2VlcChlKX1zdGF0aWMga2V5VXNhZ2UoZSl7cmV0dXJuIG5ldyBLZXlVc2FnZShlKX1zdGF0aWMgbGluZShlKXtyZXR1cm4gbmV3IExpbmUoZSl9c3RhdGljIGxpbmVhcihlKXtyZXR1cm4gbmV3IExpbmVhcihlKX1zdGF0aWMgbG9ja0RvY3VtZW50KGUpe3JldHVybiBuZXcgTG9ja0RvY3VtZW50KGUpfXN0YXRpYyBtYW5pZmVzdChlKXtyZXR1cm4gbmV3IE1hbmlmZXN0KGUpfXN0YXRpYyBtYXJnaW4oZSl7cmV0dXJuIG5ldyBNYXJnaW4oZSl9c3RhdGljIG1kcChlKXtyZXR1cm4gbmV3IE1kcChlKX1zdGF0aWMgbWVkaXVtKGUpe3JldHVybiBuZXcgTWVkaXVtKGUpfXN0YXRpYyBtZXNzYWdlKGUpe3JldHVybiBuZXcgTWVzc2FnZShlKX1zdGF0aWMgbnVtZXJpY0VkaXQoZSl7cmV0dXJuIG5ldyBOdW1lcmljRWRpdChlKX1zdGF0aWMgb2NjdXIoZSl7cmV0dXJuIG5ldyBPY2N1cihlKX1zdGF0aWMgb2lkKGUpe3JldHVybiBuZXcgT2lkKGUpfXN0YXRpYyBvaWRzKGUpe3JldHVybiBuZXcgT2lkcyhlKX1zdGF0aWMgb3ZlcmZsb3coZSl7cmV0dXJuIG5ldyBPdmVyZmxvdyhlKX1zdGF0aWMgcGFnZUFyZWEoZSl7cmV0dXJuIG5ldyBQYWdlQXJlYShlKX1zdGF0aWMgcGFnZVNldChlKXtyZXR1cm4gbmV3IFBhZ2VTZXQoZSl9c3RhdGljIHBhcmEoZSl7cmV0dXJuIG5ldyBQYXJhKGUpfXN0YXRpYyBwYXNzd29yZEVkaXQoZSl7cmV0dXJuIG5ldyBQYXNzd29yZEVkaXQoZSl9c3RhdGljIHBhdHRlcm4oZSl7cmV0dXJuIG5ldyB0ZW1wbGF0ZV9QYXR0ZXJuKGUpfXN0YXRpYyBwaWN0dXJlKGUpe3JldHVybiBuZXcgUGljdHVyZShlKX1zdGF0aWMgcHJvdG8oZSl7cmV0dXJuIG5ldyBQcm90byhlKX1zdGF0aWMgcmFkaWFsKGUpe3JldHVybiBuZXcgUmFkaWFsKGUpfXN0YXRpYyByZWFzb24oZSl7cmV0dXJuIG5ldyBSZWFzb24oZSl9c3RhdGljIHJlYXNvbnMoZSl7cmV0dXJuIG5ldyBSZWFzb25zKGUpfXN0YXRpYyByZWN0YW5nbGUoZSl7cmV0dXJuIG5ldyBSZWN0YW5nbGUoZSl9c3RhdGljIHJlZihlKXtyZXR1cm4gbmV3IFJlZkVsZW1lbnQoZSl9c3RhdGljIHNjcmlwdChlKXtyZXR1cm4gbmV3IFNjcmlwdChlKX1zdGF0aWMgc2V0UHJvcGVydHkoZSl7cmV0dXJuIG5ldyBTZXRQcm9wZXJ0eShlKX1zdGF0aWMgc2lnbkRhdGEoZSl7cmV0dXJuIG5ldyBTaWduRGF0YShlKX1zdGF0aWMgc2lnbmF0dXJlKGUpe3JldHVybiBuZXcgU2lnbmF0dXJlKGUpfXN0YXRpYyBzaWduaW5nKGUpe3JldHVybiBuZXcgU2lnbmluZyhlKX1zdGF0aWMgc29saWQoZSl7cmV0dXJuIG5ldyBTb2xpZChlKX1zdGF0aWMgc3BlYWsoZSl7cmV0dXJuIG5ldyBTcGVhayhlKX1zdGF0aWMgc3RpcHBsZShlKXtyZXR1cm4gbmV3IFN0aXBwbGUoZSl9c3RhdGljIHN1YmZvcm0oZSl7cmV0dXJuIG5ldyBTdWJmb3JtKGUpfXN0YXRpYyBzdWJmb3JtU2V0KGUpe3JldHVybiBuZXcgU3ViZm9ybVNldChlKX1zdGF0aWMgc3ViamVjdEROKGUpe3JldHVybiBuZXcgU3ViamVjdEROKGUpfXN0YXRpYyBzdWJqZWN0RE5zKGUpe3JldHVybiBuZXcgU3ViamVjdEROcyhlKX1zdGF0aWMgc3VibWl0KGUpe3JldHVybiBuZXcgU3VibWl0KGUpfXN0YXRpYyB0ZW1wbGF0ZShlKXtyZXR1cm4gbmV3IFRlbXBsYXRlKGUpfXN0YXRpYyB0ZXh0KGUpe3JldHVybiBuZXcgVGV4dChlKX1zdGF0aWMgdGV4dEVkaXQoZSl7cmV0dXJuIG5ldyBUZXh0RWRpdChlKX1zdGF0aWMgdGltZShlKXtyZXR1cm4gbmV3IFRpbWUoZSl9c3RhdGljIHRpbWVTdGFtcChlKXtyZXR1cm4gbmV3IFRpbWVTdGFtcChlKX1zdGF0aWMgdG9vbFRpcChlKXtyZXR1cm4gbmV3IFRvb2xUaXAoZSl9c3RhdGljIHRyYXZlcnNhbChlKXtyZXR1cm4gbmV3IFRyYXZlcnNhbChlKX1zdGF0aWMgdHJhdmVyc2UoZSl7cmV0dXJuIG5ldyBUcmF2ZXJzZShlKX1zdGF0aWMgdWkoZSl7cmV0dXJuIG5ldyBVaShlKX1zdGF0aWMgdmFsaWRhdGUoZSl7cmV0dXJuIG5ldyBWYWxpZGF0ZShlKX1zdGF0aWMgdmFsdWUoZSl7cmV0dXJuIG5ldyBWYWx1ZShlKX1zdGF0aWMgdmFyaWFibGVzKGUpe3JldHVybiBuZXcgVmFyaWFibGVzKGUpfX1jb25zdCBhZj1qbC5kYXRhc2V0cy5pZDtmdW5jdGlvbiBjcmVhdGVUZXh0KGUpe2NvbnN0IHQ9bmV3IFRleHQoe30pO3RbaG9dPWU7cmV0dXJuIHR9Y2xhc3MgQmluZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMucm9vdD1lO3RoaXMuZGF0YXNldHM9ZS5kYXRhc2V0czt0aGlzLmRhdGE9ZS5kYXRhc2V0cz8uZGF0YXx8bmV3IFhtbE9iamVjdChhZiwiZGF0YSIpO3RoaXMuZW1wdHlNZXJnZT0wPT09dGhpcy5kYXRhW0NvXSgpLmxlbmd0aDt0aGlzLnJvb3QuZm9ybT10aGlzLmZvcm09ZS50ZW1wbGF0ZVtmb10oKX1faXNDb25zdW1lRGF0YSgpe3JldHVybiF0aGlzLmVtcHR5TWVyZ2UmJnRoaXMuX21lcmdlTW9kZX1faXNNYXRjaFRlbXBsYXRlKCl7cmV0dXJuIXRoaXMuX2lzQ29uc3VtZURhdGEoKX1iaW5kKCl7dGhpcy5fYmluZEVsZW1lbnQodGhpcy5mb3JtLHRoaXMuZGF0YSk7cmV0dXJuIHRoaXMuZm9ybX1nZXREYXRhKCl7cmV0dXJuIHRoaXMuZGF0YX1fYmluZFZhbHVlKGUsdCxuKXtlW3VvXT10O2lmKGVbRG9dKCkpaWYodFt6b10oKSl7Y29uc3Qgbj10W1NvXSgpO2VbY2xdKGNyZWF0ZVRleHQobikpfWVsc2UgaWYoZSBpbnN0YW5jZW9mIEZpZWxkJiYibXVsdGlTZWxlY3QiPT09ZS51aT8uY2hvaWNlTGlzdD8ub3Blbil7Y29uc3Qgbj10W0NvXSgpLm1hcChlPT5lW2hvXS50cmltKCkpLmpvaW4oIlxuIik7ZVtjbF0oY3JlYXRlVGV4dChuKSl9ZWxzZSB0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJndhcm4oIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKTtlbHNlIXRbem9dKCl8fHRoaXMuX2lzTWF0Y2hUZW1wbGF0ZSgpP3RoaXMuX2JpbmRFbGVtZW50KGUsdCk6d2FybigiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpfV9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShlLHQsbixhKXtpZighZSlyZXR1cm4gbnVsbDtsZXQgcyxyO2ZvcihsZXQgYT0wO2E8MzthKyspe3M9blt4b10oZSwhMSwhMCk7Zm9yKDs7KXtyPXMubmV4dCgpLnZhbHVlO2lmKCFyKWJyZWFrO2lmKHQ9PT1yW3pvXSgpKXJldHVybiByfWlmKG5bJG9dPT09YWYmJiJkYXRhIj09PW5bWW9dKWJyZWFrO249bltPb10oKX1pZighYSlyZXR1cm4gbnVsbDtzPXRoaXMuZGF0YVt4b10oZSwhMCwhMSk7cj1zLm5leHQoKS52YWx1ZTtpZihyKXJldHVybiByO3M9dGhpcy5kYXRhW3dvXShlLCEwKTtyPXMubmV4dCgpLnZhbHVlO3JldHVybiByPy5bem9dKCk/cjpudWxsfV9zZXRQcm9wZXJ0aWVzKGUsdCl7aWYoT2JqZWN0Lmhhc093bihlLCJzZXRQcm9wZXJ0eSIpKWZvcihjb25zdHtyZWY6bix0YXJnZXQ6YSxjb25uZWN0aW9uOnN9b2YgZS5zZXRQcm9wZXJ0eS5jaGlsZHJlbil7aWYocyljb250aW51ZTtpZighbiljb250aW51ZTtjb25zdCByPXNlYXJjaE5vZGUodGhpcy5yb290LHQsbiwhMSwhMSk7aWYoIXIpe3dhcm4oYFhGQSAtIEludmFsaWQgcmVmZXJlbmNlOiAke259LmApO2NvbnRpbnVlfWNvbnN0W2ldPXI7aWYoIWlbTG9dKHRoaXMuZGF0YSkpe3dhcm4oIlhGQSAtIEludmFsaWQgbm9kZTogbXVzdCBiZSBhIGRhdGEgbm9kZS4iKTtjb250aW51ZX1jb25zdCBvPXNlYXJjaE5vZGUodGhpcy5yb290LGUsYSwhMSwhMSk7aWYoIW8pe3dhcm4oYFhGQSAtIEludmFsaWQgdGFyZ2V0OiAke2F9LmApO2NvbnRpbnVlfWNvbnN0W2xdPW87aWYoIWxbTG9dKGUpKXt3YXJuKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogbXVzdCBiZSBhIHByb3BlcnR5IG9yIHN1YnByb3BlcnR5LiIpO2NvbnRpbnVlfWNvbnN0IGY9bFtPb10oKTtpZihsIGluc3RhbmNlb2YgU2V0UHJvcGVydHl8fGYgaW5zdGFuY2VvZiBTZXRQcm9wZXJ0eSl7d2FybigiWEZBIC0gSW52YWxpZCB0YXJnZXQ6IGNhbm5vdCBiZSBhIHNldFByb3BlcnR5IG9yIG9uZSBvZiBpdHMgcHJvcGVydGllcy4iKTtjb250aW51ZX1pZihsIGluc3RhbmNlb2YgQmluZEl0ZW1zfHxmIGluc3RhbmNlb2YgQmluZEl0ZW1zKXt3YXJuKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogY2Fubm90IGJlIGEgYmluZEl0ZW1zIG9yIG9uZSBvZiBpdHMgcHJvcGVydGllcy4iKTtjb250aW51ZX1jb25zdCBjPWlbdWxdKCksaD1sW1lvXTtpZihsIGluc3RhbmNlb2YgWEZBQXR0cmlidXRlKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZVtoXT1jO2NvbnN0IHQ9UmVmbGVjdC5jb25zdHJ1Y3QoT2JqZWN0LmdldFByb3RvdHlwZU9mKGYpLmNvbnN0cnVjdG9yLFtlXSk7ZltoXT10W2hdO2NvbnRpbnVlfWlmKE9iamVjdC5oYXNPd24obCxobykpe2xbdW9dPWk7bFtob109YztsW2dvXSgpfWVsc2Ugd2FybigiWEZBIC0gSW52YWxpZCBub2RlIHRvIHVzZSBpbiBzZXRQcm9wZXJ0eSIpfX1fYmluZEl0ZW1zKGUsdCl7aWYoIU9iamVjdC5oYXNPd24oZSwiaXRlbXMiKXx8IU9iamVjdC5oYXNPd24oZSwiYmluZEl0ZW1zIil8fGUuYmluZEl0ZW1zLmlzRW1wdHkoKSlyZXR1cm47Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcy5jaGlsZHJlbillW3NsXSh0KTtlLml0ZW1zLmNsZWFyKCk7Y29uc3Qgbj1uZXcgSXRlbXMoe30pLGE9bmV3IEl0ZW1zKHt9KTtlW3NvXShuKTtlLml0ZW1zLnB1c2gobik7ZVtzb10oYSk7ZS5pdGVtcy5wdXNoKGEpO2Zvcihjb25zdHtyZWY6cyxsYWJlbFJlZjpyLHZhbHVlUmVmOmksY29ubmVjdGlvbjpvfW9mIGUuYmluZEl0ZW1zLmNoaWxkcmVuKXtpZihvKWNvbnRpbnVlO2lmKCFzKWNvbnRpbnVlO2NvbnN0IGU9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxzLCExLCExKTtpZihlKWZvcihjb25zdCB0IG9mIGUpe2lmKCF0W0xvXSh0aGlzLmRhdGFzZXRzKSl7d2FybihgWEZBIC0gSW52YWxpZCByZWYgKCR7c30pOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuYCk7Y29udGludWV9Y29uc3QgZT1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LHIsITAsITEpO2lmKCFlKXt3YXJuKGBYRkEgLSBJbnZhbGlkIGxhYmVsOiAke3J9LmApO2NvbnRpbnVlfWNvbnN0W29dPWU7aWYoIW9bTG9dKHRoaXMuZGF0YXNldHMpKXt3YXJuKCJYRkEgLSBJbnZhbGlkIGxhYmVsOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuIik7Y29udGludWV9Y29uc3QgbD1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LGksITAsITEpO2lmKCFsKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHZhbHVlOiAke2l9LmApO2NvbnRpbnVlfWNvbnN0W2ZdPWw7aWYoIWZbTG9dKHRoaXMuZGF0YXNldHMpKXt3YXJuKCJYRkEgLSBJbnZhbGlkIHZhbHVlOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuIik7Y29udGludWV9Y29uc3QgYz1jcmVhdGVUZXh0KG9bdWxdKCkpLGg9Y3JlYXRlVGV4dChmW3VsXSgpKTtuW3NvXShjKTtuLnRleHQucHVzaChjKTthW3NvXShoKTthLnRleHQucHVzaChoKX1lbHNlIHdhcm4oYFhGQSAtIEludmFsaWQgcmVmZXJlbmNlOiAke3N9LmApfX1fYmluZE9jY3VycmVuY2VzKGUsdCxuKXtsZXQgYTtpZih0Lmxlbmd0aD4xKXthPWVbZm9dKCk7YVtzbF0oYS5vY2N1cik7YS5vY2N1cj1udWxsfXRoaXMuX2JpbmRWYWx1ZShlLHRbMF0sbik7dGhpcy5fc2V0UHJvcGVydGllcyhlLHRbMF0pO3RoaXMuX2JpbmRJdGVtcyhlLHRbMF0pO2lmKDE9PT10Lmxlbmd0aClyZXR1cm47Y29uc3Qgcz1lW09vXSgpLHI9ZVtZb10saT1zW05vXShlKTtmb3IobGV0IGU9MSxvPXQubGVuZ3RoO2U8bztlKyspe2NvbnN0IG89dFtlXSxsPWFbZm9dKCk7c1tyXS5wdXNoKGwpO3NbUG9dKGkrZSxsKTt0aGlzLl9iaW5kVmFsdWUobCxvLG4pO3RoaXMuX3NldFByb3BlcnRpZXMobCxvKTt0aGlzLl9iaW5kSXRlbXMobCxvKX19X2NyZWF0ZU9jY3VycmVuY2VzKGUpe2lmKCF0aGlzLmVtcHR5TWVyZ2UpcmV0dXJuO2NvbnN0e29jY3VyOnR9PWU7aWYoIXR8fHQuaW5pdGlhbDw9MSlyZXR1cm47Y29uc3Qgbj1lW09vXSgpLGE9ZVtZb107aWYoIShuW2FdaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSkpcmV0dXJuO2xldCBzO3M9ZS5uYW1lP25bYV0uY2hpbGRyZW4uZmlsdGVyKHQ9PnQubmFtZT09PWUubmFtZSkubGVuZ3RoOm5bYV0uY2hpbGRyZW4ubGVuZ3RoO2NvbnN0IHI9bltOb10oZSkrMSxpPXQuaW5pdGlhbC1zO2lmKGkpe2NvbnN0IHQ9ZVtmb10oKTt0W3NsXSh0Lm9jY3VyKTt0Lm9jY3VyPW51bGw7blthXS5wdXNoKHQpO25bUG9dKHIsdCk7Zm9yKGxldCBlPTE7ZTxpO2UrKyl7Y29uc3Qgcz10W2ZvXSgpO25bYV0ucHVzaChzKTtuW1BvXShyK2Uscyl9fX1fZ2V0T2NjdXJJbmZvKGUpe2NvbnN0e25hbWU6dCxvY2N1cjpufT1lO2lmKCFufHwhdClyZXR1cm5bMSwxXTtjb25zdCBhPS0xPT09bi5tYXg/MS8wOm4ubWF4O3JldHVybltuLm1pbixhXX1fc2V0QW5kQmluZChlLHQpe3RoaXMuX3NldFByb3BlcnRpZXMoZSx0KTt0aGlzLl9iaW5kSXRlbXMoZSx0KTt0aGlzLl9iaW5kRWxlbWVudChlLHQpfV9iaW5kRWxlbWVudChlLHQpe2NvbnN0IG49W107dGhpcy5fY3JlYXRlT2NjdXJyZW5jZXMoZSk7Zm9yKGNvbnN0IGEgb2YgZVtDb10oKSl7aWYoYVt1b10pY29udGludWU7aWYodm9pZCAwPT09dGhpcy5fbWVyZ2VNb2RlJiYic3ViZm9ybSI9PT1hW1lvXSl7dGhpcy5fbWVyZ2VNb2RlPSJjb25zdW1lRGF0YSI9PT1hLm1lcmdlTW9kZTtjb25zdCBlPXRbQ29dKCk7aWYoZS5sZW5ndGg+MCl0aGlzLl9iaW5kT2NjdXJyZW5jZXMoYSxbZVswXV0sbnVsbCk7ZWxzZSBpZih0aGlzLmVtcHR5TWVyZ2Upe2NvbnN0IGU9dFskb109PT1hZj8tMTp0WyRvXSxuPWFbdW9dPW5ldyBYbWxPYmplY3QoZSxhLm5hbWV8fCJyb290Iik7dFtzb10obik7dGhpcy5fYmluZEVsZW1lbnQoYSxuKX1jb250aW51ZX1pZighYVtfb10oKSljb250aW51ZTtsZXQgZT0hMSxzPW51bGwscj1udWxsLGk9bnVsbDtpZihhLmJpbmQpe3N3aXRjaChhLmJpbmQubWF0Y2gpe2Nhc2Uibm9uZSI6dGhpcy5fc2V0QW5kQmluZChhLHQpO2NvbnRpbnVlO2Nhc2UiZ2xvYmFsIjplPSEwO2JyZWFrO2Nhc2UiZGF0YVJlZiI6aWYoIWEuYmluZC5yZWYpe3dhcm4oYFhGQSAtIHJlZiBpcyBlbXB0eSBpbiBub2RlICR7YVtZb119LmApO3RoaXMuX3NldEFuZEJpbmQoYSx0KTtjb250aW51ZX1yPWEuYmluZC5yZWZ9YS5iaW5kLnBpY3R1cmUmJihzPWEuYmluZC5waWN0dXJlW2hvXSl9Y29uc3RbbyxsXT10aGlzLl9nZXRPY2N1ckluZm8oYSk7aWYocil7aT1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LHIsITAsITEpO2lmKG51bGw9PT1pKXtpPWNyZWF0ZURhdGFOb2RlKHRoaXMuZGF0YSx0LHIpO2lmKCFpKWNvbnRpbnVlO3RoaXMuX2lzQ29uc3VtZURhdGEoKSYmKGlbY29dPSEwKTt0aGlzLl9zZXRBbmRCaW5kKGEsaSk7Y29udGludWV9dGhpcy5faXNDb25zdW1lRGF0YSgpJiYoaT1pLmZpbHRlcihlPT4hZVtjb10pKTtpLmxlbmd0aD5sP2k9aS5zbGljZSgwLGwpOjA9PT1pLmxlbmd0aCYmKGk9bnVsbCk7aSYmdGhpcy5faXNDb25zdW1lRGF0YSgpJiZpLmZvckVhY2goZT0+e2VbY29dPSEwfSl9ZWxzZXtpZighYS5uYW1lKXt0aGlzLl9zZXRBbmRCaW5kKGEsdCk7Y29udGludWV9aWYodGhpcy5faXNDb25zdW1lRGF0YSgpKXtjb25zdCBuPVtdO2Zvcig7bi5sZW5ndGg8bDspe2NvbnN0IHM9dGhpcy5fZmluZERhdGFCeU5hbWVUb0NvbnN1bWUoYS5uYW1lLGFbRG9dKCksdCxlKTtpZighcylicmVhaztzW2NvXT0hMDtuLnB1c2gocyl9aT1uLmxlbmd0aD4wP246bnVsbH1lbHNle2k9dFt4b10oYS5uYW1lLCExLHRoaXMuZW1wdHlNZXJnZSkubmV4dCgpLnZhbHVlO2lmKCFpKXtpZigwPT09byl7bi5wdXNoKGEpO2NvbnRpbnVlfWNvbnN0IGU9dFskb109PT1hZj8tMTp0WyRvXTtpPWFbdW9dPW5ldyBYbWxPYmplY3QoZSxhLm5hbWUpO3RoaXMuZW1wdHlNZXJnZSYmKGlbY29dPSEwKTt0W3NvXShpKTt0aGlzLl9zZXRBbmRCaW5kKGEsaSk7Y29udGludWV9dGhpcy5lbXB0eU1lcmdlJiYoaVtjb109ITApO2k9W2ldfX1pP3RoaXMuX2JpbmRPY2N1cnJlbmNlcyhhLGkscyk6bz4wP3RoaXMuX3NldEFuZEJpbmQoYSx0KTpuLnB1c2goYSl9bi5mb3JFYWNoKGU9PmVbT29dKClbc2xdKGUpKX19Y2xhc3MgRGF0YUhhbmRsZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRhdGE9dDt0aGlzLmRhdGFzZXQ9ZS5kYXRhc2V0c3x8bnVsbH1zZXJpYWxpemUoZSl7Y29uc3QgdD1bWy0xLHRoaXMuZGF0YVtDb10oKV1dO2Zvcig7dC5sZW5ndGg+MDspe2NvbnN0IG49dC5hdCgtMSksW2Esc109bjtpZihhKzE9PT1zLmxlbmd0aCl7dC5wb3AoKTtjb250aW51ZX1jb25zdCByPXNbKytuWzBdXSxpPWUuZ2V0KHJbYmxdKTtpZihpKXJbY2xdKGkpO2Vsc2V7Y29uc3QgdD1yW2pvXSgpO2Zvcihjb25zdCBuIG9mIHQudmFsdWVzKCkpe2NvbnN0IHQ9ZS5nZXQobltibF0pO2lmKHQpe25bY2xdKHQpO2JyZWFrfX19Y29uc3Qgbz1yW0NvXSgpO28ubGVuZ3RoPjAmJnQucHVzaChbLTEsb10pfWNvbnN0IG49Wyc8eGZhOmRhdGFzZXRzIHhtbG5zOnhmYT0iaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8xLjAvIj4nXTtpZih0aGlzLmRhdGFzZXQpZm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhc2V0W0NvXSgpKSJkYXRhIiE9PWVbWW9dJiZlW2RsXShuKTt0aGlzLmRhdGFbZGxdKG4pO24ucHVzaCgiPC94ZmE6ZGF0YXNldHM+Iik7cmV0dXJuIG4uam9pbigiIil9fWNvbnN0IHNmPWpsLmNvbmZpZy5pZDtjbGFzcyBBY3JvYmF0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJhY3JvYmF0IiwhMCk7dGhpcy5hY3JvYmF0Nz1udWxsO3RoaXMuYXV0b1NhdmU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzPW51bGw7dGhpcy5zdWJtaXRVcmw9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBBY3JvYmF0NyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwiYWNyb2JhdDciLCEwKTt0aGlzLmR5bmFtaWNSZW5kZXI9bnVsbH19Y2xhc3MgQURCRV9KU0NvbnNvbGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsIkFEQkVfSlNDb25zb2xlIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQURCRV9KU0RlYnVnZ2VyIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJBREJFX0pTRGVidWdnZXIiLFsiZGVsZWdhdGUiLCJFbmFibGUiLCJEaXNhYmxlIl0pfX1jbGFzcyBBZGRTaWxlbnRQcmludCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJhZGRTaWxlbnRQcmludCIpfX1jbGFzcyBBZGRWaWV3ZXJQcmVmZXJlbmNlcyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJhZGRWaWV3ZXJQcmVmZXJlbmNlcyIpfX1jbGFzcyBBZGp1c3REYXRhIGV4dGVuZHMgT3B0aW9uMTB7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImFkanVzdERhdGEiKX19Y2xhc3MgQWRvYmVFeHRlbnNpb25MZXZlbCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImFkb2JlRXh0ZW5zaW9uTGV2ZWwiLDAsZT0+ZT49MSYmZTw9OCl9fWNsYXNzIEFnZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJhZ2VudCIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmNvbW1vbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEFsd2F5c0VtYmVkIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwiYWx3YXlzRW1iZWQiKX19Y2xhc3MgQW1kIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJhbWQiKX19Y2xhc3MgY29uZmlnX0FyZWEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImFyZWEiKTt0aGlzLmxldmVsPWdldEludGVnZXIoe2RhdGE6ZS5sZXZlbCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0xJiZlPD0zfSk7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyIiLCJiYXJjb2RlIiwiY29yZWluaXQiLCJkZXZpY2VEcml2ZXIiLCJmb250IiwiZ2VuZXJhbCIsImxheW91dCIsIm1lcmdlIiwic2NyaXB0Iiwic2lnbmF0dXJlIiwic291cmNlU2V0IiwidGVtcGxhdGVDYWNoZSJdKX19Y2xhc3MgQXR0cmlidXRlcyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwiYXR0cmlidXRlcyIsWyJwcmVzZXJ2ZSIsImRlbGVnYXRlIiwiaWdub3JlIl0pfX1jbGFzcyBBdXRvU2F2ZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwiYXV0b1NhdmUiLFsiZGlzYWJsZWQiLCJlbmFibGVkIl0pfX1jbGFzcyBCYXNlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJiYXNlIil9fWNsYXNzIEJhdGNoT3V0cHV0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJiYXRjaE91dHB1dCIpO3RoaXMuZm9ybWF0PWdldFN0cmluZ09wdGlvbihlLmZvcm1hdCxbIm5vbmUiLCJjb25jYXQiLCJ6aXAiLCJ6aXBDb21wcmVzcyJdKX19Y2xhc3MgQmVoYXZpb3JPdmVycmlkZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImJlaGF2aW9yT3ZlcnJpZGUiKX1bZ29dKCl7dGhpc1tob109bmV3IE1hcCh0aGlzW2hvXS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcihlPT5lLmluY2x1ZGVzKCI6IikpLm1hcChlPT5lLnNwbGl0KCI6IiwyKSkpfX1jbGFzcyBDYWNoZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwiY2FjaGUiLCEwKTt0aGlzLnRlbXBsYXRlQ2FjaGU9bnVsbH19Y2xhc3MgQ2hhbmdlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImNoYW5nZSIpfX1jbGFzcyBDb21tb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImNvbW1vbiIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMubG9jYWxlPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLm1lc3NhZ2luZz1udWxsO3RoaXMuc3VwcHJlc3NCYW5uZXI9bnVsbDt0aGlzLnRlbXBsYXRlPW51bGw7dGhpcy52YWxpZGF0aW9uTWVzc2FnaW5nPW51bGw7dGhpcy52ZXJzaW9uQ29udHJvbD1udWxsO3RoaXMubG9nPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQ29tcHJlc3MgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImNvbXByZXNzIik7dGhpcy5zY29wZT1nZXRTdHJpbmdPcHRpb24oZS5zY29wZSxbImltYWdlT25seSIsImRvY3VtZW50Il0pfX1jbGFzcyBDb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwiY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIil9fWNsYXNzIENvbXByZXNzT2JqZWN0U3RyZWFtIGV4dGVuZHMgT3B0aW9uMTB7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImNvbXByZXNzT2JqZWN0U3RyZWFtIil9fWNsYXNzIENvbXByZXNzaW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJjb21wcmVzc2lvbiIsITApO3RoaXMuY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlPW51bGw7dGhpcy5jb21wcmVzc09iamVjdFN0cmVhbT1udWxsO3RoaXMubGV2ZWw9bnVsbDt0aGlzLnR5cGU9bnVsbH19Y2xhc3MgQ29uZmlnIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJjb25maWciLCEwKTt0aGlzLmFjcm9iYXQ9bnVsbDt0aGlzLnByZXNlbnQ9bnVsbDt0aGlzLnRyYWNlPW51bGw7dGhpcy5hZ2VudD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIENvbmZvcm1hbmNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJjb25mb3JtYW5jZSIsWyJBIiwiQiJdKX19Y2xhc3MgQ29udGVudENvcHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwiY29udGVudENvcHkiKX19Y2xhc3MgQ29waWVzIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwiY29waWVzIiwxLGU9PmU+PTEpfX1jbGFzcyBDcmVhdG9yIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJjcmVhdG9yIil9fWNsYXNzIEN1cnJlbnRQYWdlIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwiY3VycmVudFBhZ2UiLDAsZT0+ZT49MCl9fWNsYXNzIERhdGEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImRhdGEiLCEwKTt0aGlzLmFkanVzdERhdGE9bnVsbDt0aGlzLmF0dHJpYnV0ZXM9bnVsbDt0aGlzLmluY3JlbWVudGFsTG9hZD1udWxsO3RoaXMub3V0cHV0WFNMPW51bGw7dGhpcy5yYW5nZT1udWxsO3RoaXMucmVjb3JkPW51bGw7dGhpcy5zdGFydE5vZGU9bnVsbDt0aGlzLnVyaT1udWxsO3RoaXMud2luZG93PW51bGw7dGhpcy54c2w9bnVsbDt0aGlzLmV4Y2x1ZGVOUz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50cmFuc2Zvcm09bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBEZWJ1ZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwiZGVidWciLCEwKTt0aGlzLnVyaT1udWxsfX1jbGFzcyBEZWZhdWx0VHlwZWZhY2UgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJkZWZhdWx0VHlwZWZhY2UiKTt0aGlzLndyaXRpbmdTY3JpcHQ9Z2V0U3RyaW5nT3B0aW9uKGUud3JpdGluZ1NjcmlwdCxbIioiLCJBcmFiaWMiLCJDeXJpbGxpYyIsIkVhc3RFdXJvcGVhblJvbWFuIiwiR3JlZWsiLCJIZWJyZXciLCJKYXBhbmVzZSIsIktvcmVhbiIsIlJvbWFuIiwiU2ltcGxpZmllZENoaW5lc2UiLCJUaGFpIiwiVHJhZGl0aW9uYWxDaGluZXNlIiwiVmlldG5hbWVzZSJdKX19Y2xhc3MgRGVzdGluYXRpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImRlc3RpbmF0aW9uIixbInBkZiIsInBjbCIsInBzIiwid2ViQ2xpZW50IiwienBsIl0pfX1jbGFzcyBEb2N1bWVudEFzc2VtYmx5IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImRvY3VtZW50QXNzZW1ibHkiKX19Y2xhc3MgRHJpdmVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJkcml2ZXIiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIER1cGxleE9wdGlvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwiZHVwbGV4T3B0aW9uIixbInNpbXBsZXgiLCJkdXBsZXhGbGlwTG9uZ0VkZ2UiLCJkdXBsZXhGbGlwU2hvcnRFZGdlIl0pfX1jbGFzcyBEeW5hbWljUmVuZGVyIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJkeW5hbWljUmVuZGVyIixbImZvcmJpZGRlbiIsInJlcXVpcmVkIl0pfX1jbGFzcyBFbWJlZCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJlbWJlZCIpfX1jbGFzcyBjb25maWdfRW5jcnlwdCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJlbmNyeXB0Iil9fWNsYXNzIGNvbmZpZ19FbmNyeXB0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJlbmNyeXB0aW9uIiwhMCk7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5lbmNyeXB0aW9uTGV2ZWw9bnVsbDt0aGlzLnBlcm1pc3Npb25zPW51bGx9fWNsYXNzIEVuY3J5cHRpb25MZXZlbCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwiZW5jcnlwdGlvbkxldmVsIixbIjQwYml0IiwiMTI4Yml0Il0pfX1jbGFzcyBFbmZvcmNlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJlbmZvcmNlIil9fWNsYXNzIEVxdWF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwiZXF1YXRlIik7dGhpcy5mb3JjZT1nZXRJbnRlZ2VyKHtkYXRhOmUuZm9yY2UsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+MD09PWV9KTt0aGlzLmZyb209ZS5mcm9tfHwiIjt0aGlzLnRvPWUudG98fCIifX1jbGFzcyBFcXVhdGVSYW5nZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwiZXF1YXRlUmFuZ2UiKTt0aGlzLmZyb209ZS5mcm9tfHwiIjt0aGlzLnRvPWUudG98fCIiO3RoaXMuX3VuaWNvZGVSYW5nZT1lLnVuaWNvZGVSYW5nZXx8IiJ9Z2V0IHVuaWNvZGVSYW5nZSgpe2NvbnN0IGU9W10sdD0vVVwrKFswLTlhLWZBLUZdKykvLG49dGhpcy5fdW5pY29kZVJhbmdlO2ZvcihsZXQgYSBvZiBuLnNwbGl0KCIsIikubWFwKGU9PmUudHJpbSgpKS5maWx0ZXIoZT0+ISFlKSl7YT1hLnNwbGl0KCItIiwyKS5tYXAoZT0+e2NvbnN0IG49ZS5tYXRjaCh0KTtyZXR1cm4gbj9wYXJzZUludChuWzFdLDE2KTowfSk7MT09PWEubGVuZ3RoJiZhLnB1c2goYVswXSk7ZS5wdXNoKGEpfXJldHVybiBzaGFkb3codGhpcywidW5pY29kZVJhbmdlIixlKX19Y2xhc3MgRXhjbHVkZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImV4Y2x1ZGUiKX1bZ29dKCl7dGhpc1tob109dGhpc1tob10udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoZT0+ZSYmWyJjYWxjdWxhdGUiLCJjbG9zZSIsImVudGVyIiwiZXhpdCIsImluaXRpYWxpemUiLCJyZWFkeSIsInZhbGlkYXRlIl0uaW5jbHVkZXMoZSkpfX1jbGFzcyBFeGNsdWRlTlMgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImV4Y2x1ZGVOUyIpfX1jbGFzcyBGbGlwTGFiZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImZsaXBMYWJlbCIsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBjb25maWdfRm9udEluZm8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImZvbnRJbmZvIiwhMCk7dGhpcy5lbWJlZD1udWxsO3RoaXMubWFwPW51bGw7dGhpcy5zdWJzZXRCZWxvdz1udWxsO3RoaXMuYWx3YXlzRW1iZWQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFR5cGVmYWNlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm5ldmVyRW1iZWQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBGb3JtRmllbGRGaWxsaW5nIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImZvcm1GaWVsZEZpbGxpbmciKX19Y2xhc3MgR3JvdXBQYXJlbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImdyb3VwUGFyZW50Iil9fWNsYXNzIElmRW1wdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImlmRW1wdHkiLFsiZGF0YVZhbHVlIiwiZGF0YUdyb3VwIiwiaWdub3JlIiwicmVtb3ZlIl0pfX1jbGFzcyBJbmNsdWRlWERQQ29udGVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwiaW5jbHVkZVhEUENvbnRlbnQiKX19Y2xhc3MgSW5jcmVtZW50YWxMb2FkIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJpbmNyZW1lbnRhbExvYWQiLFsibm9uZSIsImZvcndhcmRPbmx5Il0pfX1jbGFzcyBJbmNyZW1lbnRhbE1lcmdlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsImluY3JlbWVudGFsTWVyZ2UiKX19Y2xhc3MgSW50ZXJhY3RpdmUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwiaW50ZXJhY3RpdmUiKX19Y2xhc3MgSm9nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJqb2ciLFsidXNlUHJpbnRlclNldHRpbmciLCJub25lIiwicGFnZVNldCJdKX19Y2xhc3MgTGFiZWxQcmludGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJsYWJlbFByaW50ZXIiLCEwKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbInpwbCIsImRwbCIsImlwbCIsInRjcGwiXSk7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZmxpcExhYmVsPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIExheW91dCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwibGF5b3V0IixbInBhZ2luYXRlIiwicGFuZWwiXSl9fWNsYXNzIExldmVsIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwibGV2ZWwiLDAsZT0+ZT4wKX19Y2xhc3MgTGluZWFyaXplZCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJsaW5lYXJpemVkIil9fWNsYXNzIExvY2FsZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwibG9jYWxlIil9fWNsYXNzIExvY2FsZVNldCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwibG9jYWxlU2V0Iil9fWNsYXNzIExvZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwibG9nIiwhMCk7dGhpcy5tb2RlPW51bGw7dGhpcy50aHJlc2hvbGQ9bnVsbDt0aGlzLnRvPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgTWFwRWxlbWVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwibWFwIiwhMCk7dGhpcy5lcXVhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXF1YXRlUmFuZ2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNZWRpdW1JbmZvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJtZWRpdW1JbmZvIiwhMCk7dGhpcy5tYXA9bnVsbH19Y2xhc3MgY29uZmlnX01lc3NhZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsIm1lc3NhZ2UiLCEwKTt0aGlzLm1zZ0lkPW51bGw7dGhpcy5zZXZlcml0eT1udWxsfX1jbGFzcyBNZXNzYWdpbmcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsIm1lc3NhZ2luZyIsITApO3RoaXMubWVzc2FnZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1vZGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsIm1vZGUiLFsiYXBwZW5kIiwib3ZlcndyaXRlIl0pfX1jbGFzcyBNb2RpZnlBbm5vdHMgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwibW9kaWZ5QW5ub3RzIil9fWNsYXNzIE1zZ0lkIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwibXNnSWQiLDEsZT0+ZT49MSl9fWNsYXNzIE5hbWVBdHRyIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJuYW1lQXR0ciIpfX1jbGFzcyBOZXZlckVtYmVkIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwibmV2ZXJFbWJlZCIpfX1jbGFzcyBOdW1iZXJPZkNvcGllcyBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsIm51bWJlck9mQ29waWVzIixudWxsLGU9PmU+PTImJmU8PTUpfX1jbGFzcyBPcGVuQWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJvcGVuQWN0aW9uIiwhMCk7dGhpcy5kZXN0aW5hdGlvbj1udWxsfX1jbGFzcyBPdXRwdXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsIm91dHB1dCIsITApO3RoaXMudG89bnVsbDt0aGlzLnR5cGU9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBPdXRwdXRCaW4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsIm91dHB1dEJpbiIpfX1jbGFzcyBPdXRwdXRYU0wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsIm91dHB1dFhTTCIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIE92ZXJwcmludCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwib3ZlcnByaW50IixbIm5vbmUiLCJib3RoIiwiZHJhdyIsImZpZWxkIl0pfX1jbGFzcyBQYWNrZXRzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJwYWNrZXRzIil9W2dvXSgpeyIqIiE9PXRoaXNbaG9dJiYodGhpc1tob109dGhpc1tob10udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoZT0+WyJjb25maWciLCJkYXRhc2V0cyIsInRlbXBsYXRlIiwieGZkZiIsInhzbHQiXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBQYWdlT2Zmc2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJwYWdlT2Zmc2V0Iik7dGhpcy54PWdldEludGVnZXIoe2RhdGE6ZS54LGRlZmF1bHRWYWx1ZToidXNlWERDU2V0dGluZyIsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnk9Z2V0SW50ZWdlcih7ZGF0YTplLnksZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pfX1jbGFzcyBQYWdlUmFuZ2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInBhZ2VSYW5nZSIpfVtnb10oKXtjb25zdCBlPXRoaXNbaG9dLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKGU9PnBhcnNlSW50KGUsMTApKSx0PVtdO2ZvcihsZXQgbj0wLGE9ZS5sZW5ndGg7bjxhO24rPTIpdC5wdXNoKGUuc2xpY2UobixuKzIpKTt0aGlzW2hvXT10fX1jbGFzcyBQYWdpbmF0aW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJwYWdpbmF0aW9uIixbInNpbXBsZXgiLCJkdXBsZXhTaG9ydEVkZ2UiLCJkdXBsZXhMb25nRWRnZSJdKX19Y2xhc3MgUGFnaW5hdGlvbk92ZXJyaWRlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJwYWdpbmF0aW9uT3ZlcnJpZGUiLFsibm9uZSIsImZvcmNlRHVwbGV4IiwiZm9yY2VEdXBsZXhMb25nRWRnZSIsImZvcmNlRHVwbGV4U2hvcnRFZGdlIiwiZm9yY2VTaW1wbGV4Il0pfX1jbGFzcyBQYXJ0IGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwicGFydCIsMSxlPT4hMSl9fWNsYXNzIFBjbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwicGNsIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5wYWdlT2Zmc2V0PW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGYgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInBkZiIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYWRvYmVFeHRlbnNpb25MZXZlbD1udWxsO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmNvbXByZXNzaW9uPW51bGw7dGhpcy5jcmVhdG9yPW51bGw7dGhpcy5lbmNyeXB0aW9uPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuaW50ZXJhY3RpdmU9bnVsbDt0aGlzLmxpbmVhcml6ZWQ9bnVsbDt0aGlzLm9wZW5BY3Rpb249bnVsbDt0aGlzLnBkZmE9bnVsbDt0aGlzLnByb2R1Y2VyPW51bGw7dGhpcy5yZW5kZXJQb2xpY3k9bnVsbDt0aGlzLnNjcmlwdE1vZGVsPW51bGw7dGhpcy5zaWxlbnRQcmludD1udWxsO3RoaXMuc3VibWl0Rm9ybWF0PW51bGw7dGhpcy50YWdnZWQ9bnVsbDt0aGlzLnZlcnNpb249bnVsbDt0aGlzLnZpZXdlclByZWZlcmVuY2VzPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUGRmYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwicGRmYSIsITApO3RoaXMuYW1kPW51bGw7dGhpcy5jb25mb3JtYW5jZT1udWxsO3RoaXMuaW5jbHVkZVhEUENvbnRlbnQ9bnVsbDt0aGlzLnBhcnQ9bnVsbH19Y2xhc3MgUGVybWlzc2lvbnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInBlcm1pc3Npb25zIiwhMCk7dGhpcy5hY2Nlc3NpYmxlQ29udGVudD1udWxsO3RoaXMuY2hhbmdlPW51bGw7dGhpcy5jb250ZW50Q29weT1udWxsO3RoaXMuZG9jdW1lbnRBc3NlbWJseT1udWxsO3RoaXMuZm9ybUZpZWxkRmlsbGluZz1udWxsO3RoaXMubW9kaWZ5QW5ub3RzPW51bGw7dGhpcy5wbGFpbnRleHRNZXRhZGF0YT1udWxsO3RoaXMucHJpbnQ9bnVsbDt0aGlzLnByaW50SGlnaFF1YWxpdHk9bnVsbH19Y2xhc3MgUGlja1RyYXlCeVBERlNpemUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwicGlja1RyYXlCeVBERlNpemUiKX19Y2xhc3MgY29uZmlnX1BpY3R1cmUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInBpY3R1cmUiKX19Y2xhc3MgUGxhaW50ZXh0TWV0YWRhdGEgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwicGxhaW50ZXh0TWV0YWRhdGEiKX19Y2xhc3MgUHJlc2VuY2UgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInByZXNlbmNlIixbInByZXNlcnZlIiwiZGlzc29sdmUiLCJkaXNzb2x2ZVN0cnVjdHVyZSIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgUHJlc2VudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwicHJlc2VudCIsITApO3RoaXMuYmVoYXZpb3JPdmVycmlkZT1udWxsO3RoaXMuY2FjaGU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMuY29waWVzPW51bGw7dGhpcy5kZXN0aW5hdGlvbj1udWxsO3RoaXMuaW5jcmVtZW50YWxNZXJnZT1udWxsO3RoaXMubGF5b3V0PW51bGw7dGhpcy5vdXRwdXQ9bnVsbDt0aGlzLm92ZXJwcmludD1udWxsO3RoaXMucGFnaW5hdGlvbj1udWxsO3RoaXMucGFnaW5hdGlvbk92ZXJyaWRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy54ZHA9bnVsbDt0aGlzLmRyaXZlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5sYWJlbFByaW50ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGNsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBkZj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXRVcmw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMud2ViQ2xpZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnpwbD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFByaW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInByaW50Iil9fWNsYXNzIFByaW50SGlnaFF1YWxpdHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwicHJpbnRIaWdoUXVhbGl0eSIpfX1jbGFzcyBQcmludFNjYWxpbmcgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInByaW50U2NhbGluZyIsWyJhcHBkZWZhdWx0Iiwibm9TY2FsaW5nIl0pfX1jbGFzcyBQcmludGVyTmFtZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwicHJpbnRlck5hbWUiKX19Y2xhc3MgUHJvZHVjZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInByb2R1Y2VyIil9fWNsYXNzIFBzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJwcyIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5qb2c9bnVsbDt0aGlzLm1lZGl1bUluZm89bnVsbDt0aGlzLm91dHB1dEJpbj1udWxsO3RoaXMuc3RhcGxlPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUmFuZ2UgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJyYW5nZSIpfVtnb10oKXt0aGlzW2hvXT10aGlzW2hvXS5zcGxpdCgiLCIsMikubWFwKGU9PmUuc3BsaXQoIi0iKS5tYXAoZT0+cGFyc2VJbnQoZS50cmltKCksMTApKSkuZmlsdGVyKGU9PmUuZXZlcnkoZT0+IWlzTmFOKGUpKSkubWFwKGU9PnsxPT09ZS5sZW5ndGgmJmUucHVzaChlWzBdKTtyZXR1cm4gZX0pfX1jbGFzcyBSZWNvcmQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJyZWNvcmQiKX1bZ29dKCl7dGhpc1tob109dGhpc1tob10udHJpbSgpO2NvbnN0IGU9cGFyc2VJbnQodGhpc1tob10sMTApOyFpc05hTihlKSYmZT49MCYmKHRoaXNbaG9dPWUpfX1jbGFzcyBSZWxldmFudCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInJlbGV2YW50Iil9W2dvXSgpe3RoaXNbaG9dPXRoaXNbaG9dLnRyaW0oKS5zcGxpdCgvXHMrLyl9fWNsYXNzIFJlbmFtZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInJlbmFtZSIpfVtnb10oKXt0aGlzW2hvXT10aGlzW2hvXS50cmltKCk7KHRoaXNbaG9dLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgieG1sIil8fC9bXHB7TH1fXVtccHtMfVxkLl9ccHtNfS1dKi91LnRlc3QodGhpc1tob10pKSYmd2FybigiWEZBIC0gUmVuYW1lOiBpbnZhbGlkIFhGQSBuYW1lIil9fWNsYXNzIFJlbmRlclBvbGljeSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwicmVuZGVyUG9saWN5IixbInNlcnZlciIsImNsaWVudCJdKX19Y2xhc3MgUnVuU2NyaXB0cyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwicnVuU2NyaXB0cyIsWyJib3RoIiwiY2xpZW50Iiwibm9uZSIsInNlcnZlciJdKX19Y2xhc3MgY29uZmlnX1NjcmlwdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwic2NyaXB0IiwhMCk7dGhpcy5jdXJyZW50UGFnZT1udWxsO3RoaXMuZXhjbHVkZT1udWxsO3RoaXMucnVuU2NyaXB0cz1udWxsfX1jbGFzcyBTY3JpcHRNb2RlbCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwic2NyaXB0TW9kZWwiLFsiWEZBIiwibm9uZSJdKX19Y2xhc3MgU2V2ZXJpdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInNldmVyaXR5IixbImlnbm9yZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ0cmFjZSIsIndhcm5pbmciXSl9fWNsYXNzIFNpbGVudFByaW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJzaWxlbnRQcmludCIsITApO3RoaXMuYWRkU2lsZW50UHJpbnQ9bnVsbDt0aGlzLnByaW50ZXJOYW1lPW51bGx9fWNsYXNzIFN0YXBsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwic3RhcGxlIik7dGhpcy5tb2RlPWdldFN0cmluZ09wdGlvbihlLm1vZGUsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBTdGFydE5vZGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInN0YXJ0Tm9kZSIpfX1jbGFzcyBTdGFydFBhZ2UgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJzdGFydFBhZ2UiLDAsZT0+ITApfX1jbGFzcyBTdWJtaXRGb3JtYXQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInN1Ym1pdEZvcm1hdCIsWyJodG1sIiwiZGVsZWdhdGUiLCJmZGYiLCJ4bWwiLCJwZGYiXSl9fWNsYXNzIFN1Ym1pdFVybCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwic3VibWl0VXJsIil9fWNsYXNzIFN1YnNldEJlbG93IGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwic3Vic2V0QmVsb3ciLDEwMCxlPT5lPj0wJiZlPD0xMDApfX1jbGFzcyBTdXBwcmVzc0Jhbm5lciBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJzdXBwcmVzc0Jhbm5lciIpfX1jbGFzcyBUYWdnZWQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwidGFnZ2VkIil9fWNsYXNzIGNvbmZpZ19UZW1wbGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwidGVtcGxhdGUiLCEwKTt0aGlzLmJhc2U9bnVsbDt0aGlzLnJlbGV2YW50PW51bGw7dGhpcy5zdGFydFBhZ2U9bnVsbDt0aGlzLnVyaT1udWxsO3RoaXMueHNsPW51bGx9fWNsYXNzIFRocmVzaG9sZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwidGhyZXNob2xkIixbInRyYWNlIiwiZXJyb3IiLCJpbmZvcm1hdGlvbiIsIndhcm5pbmciXSl9fWNsYXNzIFRvIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJ0byIsWyJudWxsIiwibWVtb3J5Iiwic3RkZXJyIiwic3Rkb3V0Iiwic3lzdGVtIiwidXJpIl0pfX1jbGFzcyBUZW1wbGF0ZUNhY2hlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJ0ZW1wbGF0ZUNhY2hlIik7dGhpcy5tYXhFbnRyaWVzPWdldEludGVnZXIoe2RhdGE6ZS5tYXhFbnRyaWVzLGRlZmF1bHRWYWx1ZTo1LHZhbGlkYXRlOmU9PmU+PTB9KX19Y2xhc3MgVHJhY2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInRyYWNlIiwhMCk7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVHJhbnNmb3JtIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJ0cmFuc2Zvcm0iLCEwKTt0aGlzLmdyb3VwUGFyZW50PW51bGw7dGhpcy5pZkVtcHR5PW51bGw7dGhpcy5uYW1lQXR0cj1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMucHJlc2VuY2U9bnVsbDt0aGlzLnJlbmFtZT1udWxsO3RoaXMud2hpdGVzcGFjZT1udWxsfX1jbGFzcyBUeXBlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJ0eXBlIixbIm5vbmUiLCJhc2NpaTg1IiwiYXNjaWlIZXgiLCJjY2l0dGZheCIsImZsYXRlIiwibHp3IiwicnVuTGVuZ3RoIiwibmF0aXZlIiwieGRwIiwibWVyZ2VkWERQIl0pfX1jbGFzcyBVcmkgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInVyaSIpfX1jbGFzcyBjb25maWdfVmFsaWRhdGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInZhbGlkYXRlIixbInByZVN1Ym1pdCIsInByZVByaW50IiwicHJlRXhlY3V0ZSIsInByZVNhdmUiXSl9fWNsYXNzIFZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwidmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMiKX1bZ29dKCl7dGhpc1tob109dGhpc1tob10udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoZT0+WyJkb2NSZWFkeSIsInBvc3RTaWduIl0uaW5jbHVkZXMoZSkpfX1jbGFzcyBWYWxpZGF0aW9uTWVzc2FnaW5nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJ2YWxpZGF0aW9uTWVzc2FnaW5nIixbImFsbE1lc3NhZ2VzSW5kaXZpZHVhbGx5IiwiYWxsTWVzc2FnZXNUb2dldGhlciIsImZpcnN0TWVzc2FnZU9ubHkiLCJub01lc3NhZ2VzIl0pfX1jbGFzcyBWZXJzaW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJ2ZXJzaW9uIixbIjEuNyIsIjEuNiIsIjEuNSIsIjEuNCIsIjEuMyIsIjEuMiJdKX19Y2xhc3MgVmVyc2lvbkNvbnRyb2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsIlZlcnNpb25Db250cm9sIik7dGhpcy5vdXRwdXRCZWxvdz1nZXRTdHJpbmdPcHRpb24oZS5vdXRwdXRCZWxvdyxbIndhcm4iLCJlcnJvciIsInVwZGF0ZSJdKTt0aGlzLnNvdXJjZUFib3ZlPWdldFN0cmluZ09wdGlvbihlLnNvdXJjZUFib3ZlLFsid2FybiIsImVycm9yIl0pO3RoaXMuc291cmNlQmVsb3c9Z2V0U3RyaW5nT3B0aW9uKGUuc291cmNlQmVsb3csWyJ1cGRhdGUiLCJtYWludGFpbiJdKX19Y2xhc3MgVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsInZpZXdlclByZWZlcmVuY2VzIiwhMCk7dGhpcy5BREJFX0pTQ29uc29sZT1udWxsO3RoaXMuQURCRV9KU0RlYnVnZ2VyPW51bGw7dGhpcy5hZGRWaWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMuZHVwbGV4T3B0aW9uPW51bGw7dGhpcy5lbmZvcmNlPW51bGw7dGhpcy5udW1iZXJPZkNvcGllcz1udWxsO3RoaXMucGFnZVJhbmdlPW51bGw7dGhpcy5waWNrVHJheUJ5UERGU2l6ZT1udWxsO3RoaXMucHJpbnRTY2FsaW5nPW51bGx9fWNsYXNzIFdlYkNsaWVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwid2ViQ2xpZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBXaGl0ZXNwYWNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJ3aGl0ZXNwYWNlIixbInByZXNlcnZlIiwibHRyaW0iLCJub3JtYWxpemUiLCJydHJpbSIsInRyaW0iXSl9fWNsYXNzIFdpbmRvdyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoc2YsIndpbmRvdyIpfVtnb10oKXtjb25zdCBlPXRoaXNbaG9dLnNwbGl0KCIsIiwyKS5tYXAoZT0+cGFyc2VJbnQoZS50cmltKCksMTApKTtpZihlLnNvbWUoZT0+aXNOYU4oZSkpKXRoaXNbaG9dPVswLDBdO2Vsc2V7MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7dGhpc1tob109ZX19fWNsYXNzIFhkYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzZiwieGRjIiwhMCk7dGhpcy51cmk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMueHNsPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgWGRwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJ4ZHAiLCEwKTt0aGlzLnBhY2tldHM9bnVsbH19Y2xhc3MgWHNsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJ4c2wiLCEwKTt0aGlzLmRlYnVnPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgWnBsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHNmLCJ6cGwiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZmxpcExhYmVsPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIENvbmZpZ05hbWVzcGFjZXtzdGF0aWNbd2xdKGUsdCl7aWYoT2JqZWN0Lmhhc093bihDb25maWdOYW1lc3BhY2UsZSkpcmV0dXJuIENvbmZpZ05hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYWNyb2JhdChlKXtyZXR1cm4gbmV3IEFjcm9iYXQoZSl9c3RhdGljIGFjcm9iYXQ3KGUpe3JldHVybiBuZXcgQWNyb2JhdDcoZSl9c3RhdGljIEFEQkVfSlNDb25zb2xlKGUpe3JldHVybiBuZXcgQURCRV9KU0NvbnNvbGUoZSl9c3RhdGljIEFEQkVfSlNEZWJ1Z2dlcihlKXtyZXR1cm4gbmV3IEFEQkVfSlNEZWJ1Z2dlcihlKX1zdGF0aWMgYWRkU2lsZW50UHJpbnQoZSl7cmV0dXJuIG5ldyBBZGRTaWxlbnRQcmludChlKX1zdGF0aWMgYWRkVmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBBZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgYWRqdXN0RGF0YShlKXtyZXR1cm4gbmV3IEFkanVzdERhdGEoZSl9c3RhdGljIGFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBBZG9iZUV4dGVuc2lvbkxldmVsKGUpfXN0YXRpYyBhZ2VudChlKXtyZXR1cm4gbmV3IEFnZW50KGUpfXN0YXRpYyBhbHdheXNFbWJlZChlKXtyZXR1cm4gbmV3IEFsd2F5c0VtYmVkKGUpfXN0YXRpYyBhbWQoZSl7cmV0dXJuIG5ldyBBbWQoZSl9c3RhdGljIGFyZWEoZSl7cmV0dXJuIG5ldyBjb25maWdfQXJlYShlKX1zdGF0aWMgYXR0cmlidXRlcyhlKXtyZXR1cm4gbmV3IEF0dHJpYnV0ZXMoZSl9c3RhdGljIGF1dG9TYXZlKGUpe3JldHVybiBuZXcgQXV0b1NhdmUoZSl9c3RhdGljIGJhc2UoZSl7cmV0dXJuIG5ldyBCYXNlKGUpfXN0YXRpYyBiYXRjaE91dHB1dChlKXtyZXR1cm4gbmV3IEJhdGNoT3V0cHV0KGUpfXN0YXRpYyBiZWhhdmlvck92ZXJyaWRlKGUpe3JldHVybiBuZXcgQmVoYXZpb3JPdmVycmlkZShlKX1zdGF0aWMgY2FjaGUoZSl7cmV0dXJuIG5ldyBDYWNoZShlKX1zdGF0aWMgY2hhbmdlKGUpe3JldHVybiBuZXcgQ2hhbmdlKGUpfXN0YXRpYyBjb21tb24oZSl7cmV0dXJuIG5ldyBDb21tb24oZSl9c3RhdGljIGNvbXByZXNzKGUpe3JldHVybiBuZXcgQ29tcHJlc3MoZSl9c3RhdGljIGNvbXByZXNzTG9naWNhbFN0cnVjdHVyZShlKXtyZXR1cm4gbmV3IENvbXByZXNzTG9naWNhbFN0cnVjdHVyZShlKX1zdGF0aWMgY29tcHJlc3NPYmplY3RTdHJlYW0oZSl7cmV0dXJuIG5ldyBDb21wcmVzc09iamVjdFN0cmVhbShlKX1zdGF0aWMgY29tcHJlc3Npb24oZSl7cmV0dXJuIG5ldyBDb21wcmVzc2lvbihlKX1zdGF0aWMgY29uZmlnKGUpe3JldHVybiBuZXcgQ29uZmlnKGUpfXN0YXRpYyBjb25mb3JtYW5jZShlKXtyZXR1cm4gbmV3IENvbmZvcm1hbmNlKGUpfXN0YXRpYyBjb250ZW50Q29weShlKXtyZXR1cm4gbmV3IENvbnRlbnRDb3B5KGUpfXN0YXRpYyBjb3BpZXMoZSl7cmV0dXJuIG5ldyBDb3BpZXMoZSl9c3RhdGljIGNyZWF0b3IoZSl7cmV0dXJuIG5ldyBDcmVhdG9yKGUpfXN0YXRpYyBjdXJyZW50UGFnZShlKXtyZXR1cm4gbmV3IEN1cnJlbnRQYWdlKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgRGF0YShlKX1zdGF0aWMgZGVidWcoZSl7cmV0dXJuIG5ldyBEZWJ1ZyhlKX1zdGF0aWMgZGVmYXVsdFR5cGVmYWNlKGUpe3JldHVybiBuZXcgRGVmYXVsdFR5cGVmYWNlKGUpfXN0YXRpYyBkZXN0aW5hdGlvbihlKXtyZXR1cm4gbmV3IERlc3RpbmF0aW9uKGUpfXN0YXRpYyBkb2N1bWVudEFzc2VtYmx5KGUpe3JldHVybiBuZXcgRG9jdW1lbnRBc3NlbWJseShlKX1zdGF0aWMgZHJpdmVyKGUpe3JldHVybiBuZXcgRHJpdmVyKGUpfXN0YXRpYyBkdXBsZXhPcHRpb24oZSl7cmV0dXJuIG5ldyBEdXBsZXhPcHRpb24oZSl9c3RhdGljIGR5bmFtaWNSZW5kZXIoZSl7cmV0dXJuIG5ldyBEeW5hbWljUmVuZGVyKGUpfXN0YXRpYyBlbWJlZChlKXtyZXR1cm4gbmV3IEVtYmVkKGUpfXN0YXRpYyBlbmNyeXB0KGUpe3JldHVybiBuZXcgY29uZmlnX0VuY3J5cHQoZSl9c3RhdGljIGVuY3J5cHRpb24oZSl7cmV0dXJuIG5ldyBjb25maWdfRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbkxldmVsKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbkxldmVsKGUpfXN0YXRpYyBlbmZvcmNlKGUpe3JldHVybiBuZXcgRW5mb3JjZShlKX1zdGF0aWMgZXF1YXRlKGUpe3JldHVybiBuZXcgRXF1YXRlKGUpfXN0YXRpYyBlcXVhdGVSYW5nZShlKXtyZXR1cm4gbmV3IEVxdWF0ZVJhbmdlKGUpfXN0YXRpYyBleGNsdWRlKGUpe3JldHVybiBuZXcgRXhjbHVkZShlKX1zdGF0aWMgZXhjbHVkZU5TKGUpe3JldHVybiBuZXcgRXhjbHVkZU5TKGUpfXN0YXRpYyBmbGlwTGFiZWwoZSl7cmV0dXJuIG5ldyBGbGlwTGFiZWwoZSl9c3RhdGljIGZvbnRJbmZvKGUpe3JldHVybiBuZXcgY29uZmlnX0ZvbnRJbmZvKGUpfXN0YXRpYyBmb3JtRmllbGRGaWxsaW5nKGUpe3JldHVybiBuZXcgRm9ybUZpZWxkRmlsbGluZyhlKX1zdGF0aWMgZ3JvdXBQYXJlbnQoZSl7cmV0dXJuIG5ldyBHcm91cFBhcmVudChlKX1zdGF0aWMgaWZFbXB0eShlKXtyZXR1cm4gbmV3IElmRW1wdHkoZSl9c3RhdGljIGluY2x1ZGVYRFBDb250ZW50KGUpe3JldHVybiBuZXcgSW5jbHVkZVhEUENvbnRlbnQoZSl9c3RhdGljIGluY3JlbWVudGFsTG9hZChlKXtyZXR1cm4gbmV3IEluY3JlbWVudGFsTG9hZChlKX1zdGF0aWMgaW5jcmVtZW50YWxNZXJnZShlKXtyZXR1cm4gbmV3IEluY3JlbWVudGFsTWVyZ2UoZSl9c3RhdGljIGludGVyYWN0aXZlKGUpe3JldHVybiBuZXcgSW50ZXJhY3RpdmUoZSl9c3RhdGljIGpvZyhlKXtyZXR1cm4gbmV3IEpvZyhlKX1zdGF0aWMgbGFiZWxQcmludGVyKGUpe3JldHVybiBuZXcgTGFiZWxQcmludGVyKGUpfXN0YXRpYyBsYXlvdXQoZSl7cmV0dXJuIG5ldyBMYXlvdXQoZSl9c3RhdGljIGxldmVsKGUpe3JldHVybiBuZXcgTGV2ZWwoZSl9c3RhdGljIGxpbmVhcml6ZWQoZSl7cmV0dXJuIG5ldyBMaW5lYXJpemVkKGUpfXN0YXRpYyBsb2NhbGUoZSl7cmV0dXJuIG5ldyBMb2NhbGUoZSl9c3RhdGljIGxvY2FsZVNldChlKXtyZXR1cm4gbmV3IExvY2FsZVNldChlKX1zdGF0aWMgbG9nKGUpe3JldHVybiBuZXcgTG9nKGUpfXN0YXRpYyBtYXAoZSl7cmV0dXJuIG5ldyBNYXBFbGVtZW50KGUpfXN0YXRpYyBtZWRpdW1JbmZvKGUpe3JldHVybiBuZXcgTWVkaXVtSW5mbyhlKX1zdGF0aWMgbWVzc2FnZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19NZXNzYWdlKGUpfXN0YXRpYyBtZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBNZXNzYWdpbmcoZSl9c3RhdGljIG1vZGUoZSl7cmV0dXJuIG5ldyBNb2RlKGUpfXN0YXRpYyBtb2RpZnlBbm5vdHMoZSl7cmV0dXJuIG5ldyBNb2RpZnlBbm5vdHMoZSl9c3RhdGljIG1zZ0lkKGUpe3JldHVybiBuZXcgTXNnSWQoZSl9c3RhdGljIG5hbWVBdHRyKGUpe3JldHVybiBuZXcgTmFtZUF0dHIoZSl9c3RhdGljIG5ldmVyRW1iZWQoZSl7cmV0dXJuIG5ldyBOZXZlckVtYmVkKGUpfXN0YXRpYyBudW1iZXJPZkNvcGllcyhlKXtyZXR1cm4gbmV3IE51bWJlck9mQ29waWVzKGUpfXN0YXRpYyBvcGVuQWN0aW9uKGUpe3JldHVybiBuZXcgT3BlbkFjdGlvbihlKX1zdGF0aWMgb3V0cHV0KGUpe3JldHVybiBuZXcgT3V0cHV0KGUpfXN0YXRpYyBvdXRwdXRCaW4oZSl7cmV0dXJuIG5ldyBPdXRwdXRCaW4oZSl9c3RhdGljIG91dHB1dFhTTChlKXtyZXR1cm4gbmV3IE91dHB1dFhTTChlKX1zdGF0aWMgb3ZlcnByaW50KGUpe3JldHVybiBuZXcgT3ZlcnByaW50KGUpfXN0YXRpYyBwYWNrZXRzKGUpe3JldHVybiBuZXcgUGFja2V0cyhlKX1zdGF0aWMgcGFnZU9mZnNldChlKXtyZXR1cm4gbmV3IFBhZ2VPZmZzZXQoZSl9c3RhdGljIHBhZ2VSYW5nZShlKXtyZXR1cm4gbmV3IFBhZ2VSYW5nZShlKX1zdGF0aWMgcGFnaW5hdGlvbihlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb24oZSl9c3RhdGljIHBhZ2luYXRpb25PdmVycmlkZShlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb25PdmVycmlkZShlKX1zdGF0aWMgcGFydChlKXtyZXR1cm4gbmV3IFBhcnQoZSl9c3RhdGljIHBjbChlKXtyZXR1cm4gbmV3IFBjbChlKX1zdGF0aWMgcGRmKGUpe3JldHVybiBuZXcgUGRmKGUpfXN0YXRpYyBwZGZhKGUpe3JldHVybiBuZXcgUGRmYShlKX1zdGF0aWMgcGVybWlzc2lvbnMoZSl7cmV0dXJuIG5ldyBQZXJtaXNzaW9ucyhlKX1zdGF0aWMgcGlja1RyYXlCeVBERlNpemUoZSl7cmV0dXJuIG5ldyBQaWNrVHJheUJ5UERGU2l6ZShlKX1zdGF0aWMgcGljdHVyZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19QaWN0dXJlKGUpfXN0YXRpYyBwbGFpbnRleHRNZXRhZGF0YShlKXtyZXR1cm4gbmV3IFBsYWludGV4dE1ldGFkYXRhKGUpfXN0YXRpYyBwcmVzZW5jZShlKXtyZXR1cm4gbmV3IFByZXNlbmNlKGUpfXN0YXRpYyBwcmVzZW50KGUpe3JldHVybiBuZXcgUHJlc2VudChlKX1zdGF0aWMgcHJpbnQoZSl7cmV0dXJuIG5ldyBQcmludChlKX1zdGF0aWMgcHJpbnRIaWdoUXVhbGl0eShlKXtyZXR1cm4gbmV3IFByaW50SGlnaFF1YWxpdHkoZSl9c3RhdGljIHByaW50U2NhbGluZyhlKXtyZXR1cm4gbmV3IFByaW50U2NhbGluZyhlKX1zdGF0aWMgcHJpbnRlck5hbWUoZSl7cmV0dXJuIG5ldyBQcmludGVyTmFtZShlKX1zdGF0aWMgcHJvZHVjZXIoZSl7cmV0dXJuIG5ldyBQcm9kdWNlcihlKX1zdGF0aWMgcHMoZSl7cmV0dXJuIG5ldyBQcyhlKX1zdGF0aWMgcmFuZ2UoZSl7cmV0dXJuIG5ldyBSYW5nZShlKX1zdGF0aWMgcmVjb3JkKGUpe3JldHVybiBuZXcgUmVjb3JkKGUpfXN0YXRpYyByZWxldmFudChlKXtyZXR1cm4gbmV3IFJlbGV2YW50KGUpfXN0YXRpYyByZW5hbWUoZSl7cmV0dXJuIG5ldyBSZW5hbWUoZSl9c3RhdGljIHJlbmRlclBvbGljeShlKXtyZXR1cm4gbmV3IFJlbmRlclBvbGljeShlKX1zdGF0aWMgcnVuU2NyaXB0cyhlKXtyZXR1cm4gbmV3IFJ1blNjcmlwdHMoZSl9c3RhdGljIHNjcmlwdChlKXtyZXR1cm4gbmV3IGNvbmZpZ19TY3JpcHQoZSl9c3RhdGljIHNjcmlwdE1vZGVsKGUpe3JldHVybiBuZXcgU2NyaXB0TW9kZWwoZSl9c3RhdGljIHNldmVyaXR5KGUpe3JldHVybiBuZXcgU2V2ZXJpdHkoZSl9c3RhdGljIHNpbGVudFByaW50KGUpe3JldHVybiBuZXcgU2lsZW50UHJpbnQoZSl9c3RhdGljIHN0YXBsZShlKXtyZXR1cm4gbmV3IFN0YXBsZShlKX1zdGF0aWMgc3RhcnROb2RlKGUpe3JldHVybiBuZXcgU3RhcnROb2RlKGUpfXN0YXRpYyBzdGFydFBhZ2UoZSl7cmV0dXJuIG5ldyBTdGFydFBhZ2UoZSl9c3RhdGljIHN1Ym1pdEZvcm1hdChlKXtyZXR1cm4gbmV3IFN1Ym1pdEZvcm1hdChlKX1zdGF0aWMgc3VibWl0VXJsKGUpe3JldHVybiBuZXcgU3VibWl0VXJsKGUpfXN0YXRpYyBzdWJzZXRCZWxvdyhlKXtyZXR1cm4gbmV3IFN1YnNldEJlbG93KGUpfXN0YXRpYyBzdXBwcmVzc0Jhbm5lcihlKXtyZXR1cm4gbmV3IFN1cHByZXNzQmFubmVyKGUpfXN0YXRpYyB0YWdnZWQoZSl7cmV0dXJuIG5ldyBUYWdnZWQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgY29uZmlnX1RlbXBsYXRlKGUpfXN0YXRpYyB0ZW1wbGF0ZUNhY2hlKGUpe3JldHVybiBuZXcgVGVtcGxhdGVDYWNoZShlKX1zdGF0aWMgdGhyZXNob2xkKGUpe3JldHVybiBuZXcgVGhyZXNob2xkKGUpfXN0YXRpYyB0byhlKXtyZXR1cm4gbmV3IFRvKGUpfXN0YXRpYyB0cmFjZShlKXtyZXR1cm4gbmV3IFRyYWNlKGUpfXN0YXRpYyB0cmFuc2Zvcm0oZSl7cmV0dXJuIG5ldyBUcmFuc2Zvcm0oZSl9c3RhdGljIHR5cGUoZSl7cmV0dXJuIG5ldyBUeXBlKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBVcmkoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgY29uZmlnX1ZhbGlkYXRlKGUpfXN0YXRpYyB2YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyhlKXtyZXR1cm4gbmV3IFZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpfXN0YXRpYyB2YWxpZGF0aW9uTWVzc2FnaW5nKGUpe3JldHVybiBuZXcgVmFsaWRhdGlvbk1lc3NhZ2luZyhlKX1zdGF0aWMgdmVyc2lvbihlKXtyZXR1cm4gbmV3IFZlcnNpb24oZSl9c3RhdGljIHZlcnNpb25Db250cm9sKGUpe3JldHVybiBuZXcgVmVyc2lvbkNvbnRyb2woZSl9c3RhdGljIHZpZXdlclByZWZlcmVuY2VzKGUpe3JldHVybiBuZXcgVmlld2VyUHJlZmVyZW5jZXMoZSl9c3RhdGljIHdlYkNsaWVudChlKXtyZXR1cm4gbmV3IFdlYkNsaWVudChlKX1zdGF0aWMgd2hpdGVzcGFjZShlKXtyZXR1cm4gbmV3IFdoaXRlc3BhY2UoZSl9c3RhdGljIHdpbmRvdyhlKXtyZXR1cm4gbmV3IFdpbmRvdyhlKX1zdGF0aWMgeGRjKGUpe3JldHVybiBuZXcgWGRjKGUpfXN0YXRpYyB4ZHAoZSl7cmV0dXJuIG5ldyBYZHAoZSl9c3RhdGljIHhzbChlKXtyZXR1cm4gbmV3IFhzbChlKX1zdGF0aWMgenBsKGUpe3JldHVybiBuZXcgWnBsKGUpfX1jb25zdCByZj1qbC5jb25uZWN0aW9uU2V0LmlkO2NsYXNzIENvbm5lY3Rpb25TZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocmYsImNvbm5lY3Rpb25TZXQiLCEwKTt0aGlzLndzZGxDb25uZWN0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnhtbENvbm5lY3Rpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMueHNkQ29ubmVjdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVmZmVjdGl2ZUlucHV0UG9saWN5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHJmLCJlZmZlY3RpdmVJbnB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFZmZlY3RpdmVPdXRwdXRQb2xpY3kgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocmYsImVmZmVjdGl2ZU91dHB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPcGVyYXRpb24gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocmYsIm9wZXJhdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnB1dD1lLmlucHV0fHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLm91dHB1dD1lLm91dHB1dHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBSb290RWxlbWVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihyZiwicm9vdEVsZW1lbnQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU29hcEFjdGlvbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihyZiwic29hcEFjdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWRkcmVzcyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihyZiwic29hcEFkZHJlc3MiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgY29ubmVjdGlvbl9zZXRfVXJpIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHJmLCJ1cmkiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgV3NkbEFkZHJlc3MgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocmYsIndzZGxBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFdzZGxDb25uZWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHJmLCJ3c2RsQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmVmZmVjdGl2ZUlucHV0UG9saWN5PW51bGw7dGhpcy5lZmZlY3RpdmVPdXRwdXRQb2xpY3k9bnVsbDt0aGlzLm9wZXJhdGlvbj1udWxsO3RoaXMuc29hcEFjdGlvbj1udWxsO3RoaXMuc29hcEFkZHJlc3M9bnVsbDt0aGlzLndzZGxBZGRyZXNzPW51bGx9fWNsYXNzIFhtbENvbm5lY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocmYsInhtbENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51cmk9bnVsbH19Y2xhc3MgWHNkQ29ubmVjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihyZiwieHNkQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJvb3RFbGVtZW50PW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgQ29ubmVjdGlvblNldE5hbWVzcGFjZXtzdGF0aWNbd2xdKGUsdCl7aWYoT2JqZWN0Lmhhc093bihDb25uZWN0aW9uU2V0TmFtZXNwYWNlLGUpKXJldHVybiBDb25uZWN0aW9uU2V0TmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBjb25uZWN0aW9uU2V0KGUpe3JldHVybiBuZXcgQ29ubmVjdGlvblNldChlKX1zdGF0aWMgZWZmZWN0aXZlSW5wdXRQb2xpY3koZSl7cmV0dXJuIG5ldyBFZmZlY3RpdmVJbnB1dFBvbGljeShlKX1zdGF0aWMgZWZmZWN0aXZlT3V0cHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlT3V0cHV0UG9saWN5KGUpfXN0YXRpYyBvcGVyYXRpb24oZSl7cmV0dXJuIG5ldyBPcGVyYXRpb24oZSl9c3RhdGljIHJvb3RFbGVtZW50KGUpe3JldHVybiBuZXcgUm9vdEVsZW1lbnQoZSl9c3RhdGljIHNvYXBBY3Rpb24oZSl7cmV0dXJuIG5ldyBTb2FwQWN0aW9uKGUpfXN0YXRpYyBzb2FwQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFNvYXBBZGRyZXNzKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBjb25uZWN0aW9uX3NldF9VcmkoZSl9c3RhdGljIHdzZGxBZGRyZXNzKGUpe3JldHVybiBuZXcgV3NkbEFkZHJlc3MoZSl9c3RhdGljIHdzZGxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgV3NkbENvbm5lY3Rpb24oZSl9c3RhdGljIHhtbENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBYbWxDb25uZWN0aW9uKGUpfXN0YXRpYyB4c2RDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWHNkQ29ubmVjdGlvbihlKX19Y29uc3Qgb2Y9amwuZGF0YXNldHMuaWQ7Y2xhc3MgZGF0YXNldHNfRGF0YSBleHRlbmRzIFhtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvZiwiZGF0YSIsZSl9W1VvXSgpe3JldHVybiEwfX1jbGFzcyBEYXRhc2V0cyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvZiwiZGF0YXNldHMiLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLlNpZ25hdHVyZT1udWxsfVtRb10oZSl7Y29uc3QgdD1lW1lvXTsoImRhdGEiPT09dCYmZVskb109PT1vZnx8IlNpZ25hdHVyZSI9PT10JiZlWyRvXT09PWpsLnNpZ25hdHVyZS5pZCkmJih0aGlzW3RdPWUpO3RoaXNbc29dKGUpfX1jbGFzcyBEYXRhc2V0c05hbWVzcGFjZXtzdGF0aWNbd2xdKGUsdCl7aWYoT2JqZWN0Lmhhc093bihEYXRhc2V0c05hbWVzcGFjZSxlKSlyZXR1cm4gRGF0YXNldHNOYW1lc3BhY2VbZV0odCl9c3RhdGljIGRhdGFzZXRzKGUpe3JldHVybiBuZXcgRGF0YXNldHMoZSl9c3RhdGljIGRhdGEoZSl7cmV0dXJuIG5ldyBkYXRhc2V0c19EYXRhKGUpfX1jb25zdCBsZj1qbC5sb2NhbGVTZXQuaWQ7Y2xhc3MgQ2FsZW5kYXJTeW1ib2xzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGxmLCJjYWxlbmRhclN5bWJvbHMiLCEwKTt0aGlzLm5hbWU9ImdyZWdvcmlhbiI7dGhpcy5kYXlOYW1lcz1uZXcgWEZBT2JqZWN0QXJyYXkoMik7dGhpcy5lcmFOYW1lcz1udWxsO3RoaXMubWVyaWRpZW1OYW1lcz1udWxsO3RoaXMubW9udGhOYW1lcz1uZXcgWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIEN1cnJlbmN5U3ltYm9sIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGxmLCJjdXJyZW5jeVN5bWJvbCIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsic3ltYm9sIiwiaXNvbmFtZSIsImRlY2ltYWwiXSl9fWNsYXNzIEN1cnJlbmN5U3ltYm9scyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihsZiwiY3VycmVuY3lTeW1ib2xzIiwhMCk7dGhpcy5jdXJyZW5jeVN5bWJvbD1uZXcgWEZBT2JqZWN0QXJyYXkoMyl9fWNsYXNzIERhdGVQYXR0ZXJuIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGxmLCJkYXRlUGF0dGVybiIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgRGF0ZVBhdHRlcm5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGxmLCJkYXRlUGF0dGVybnMiLCEwKTt0aGlzLmRhdGVQYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgRGF0ZVRpbWVTeW1ib2xzIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihsZiwiZGF0ZVRpbWVTeW1ib2xzIil9fWNsYXNzIERheSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihsZiwiZGF5Iil9fWNsYXNzIERheU5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGxmLCJkYXlOYW1lcyIsITApO3RoaXMuYWJicj1nZXRJbnRlZ2VyKHtkYXRhOmUuYWJicixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZGF5PW5ldyBYRkFPYmplY3RBcnJheSg3KX19Y2xhc3MgRXJhIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGxmLCJlcmEiKX19Y2xhc3MgRXJhTmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobGYsImVyYU5hbWVzIiwhMCk7dGhpcy5lcmE9bmV3IFhGQU9iamVjdEFycmF5KDIpfX1jbGFzcyBsb2NhbGVfc2V0X0xvY2FsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihsZiwibG9jYWxlIiwhMCk7dGhpcy5kZXNjPWUuZGVzY3x8IiI7dGhpcy5uYW1lPSJpc29uYW1lIjt0aGlzLmNhbGVuZGFyU3ltYm9scz1udWxsO3RoaXMuY3VycmVuY3lTeW1ib2xzPW51bGw7dGhpcy5kYXRlUGF0dGVybnM9bnVsbDt0aGlzLmRhdGVUaW1lU3ltYm9scz1udWxsO3RoaXMubnVtYmVyUGF0dGVybnM9bnVsbDt0aGlzLm51bWJlclN5bWJvbHM9bnVsbDt0aGlzLnRpbWVQYXR0ZXJucz1udWxsO3RoaXMudHlwZUZhY2VzPW51bGx9fWNsYXNzIGxvY2FsZV9zZXRfTG9jYWxlU2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGxmLCJsb2NhbGVTZXQiLCEwKTt0aGlzLmxvY2FsZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1lcmlkaWVtIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGxmLCJtZXJpZGllbSIpfX1jbGFzcyBNZXJpZGllbU5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGxmLCJtZXJpZGllbU5hbWVzIiwhMCk7dGhpcy5tZXJpZGllbT1uZXcgWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIE1vbnRoIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGxmLCJtb250aCIpfX1jbGFzcyBNb250aE5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGxmLCJtb250aE5hbWVzIiwhMCk7dGhpcy5hYmJyPWdldEludGVnZXIoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5tb250aD1uZXcgWEZBT2JqZWN0QXJyYXkoMTIpfX1jbGFzcyBOdW1iZXJQYXR0ZXJuIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGxmLCJudW1iZXJQYXR0ZXJuIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBOdW1iZXJQYXR0ZXJucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihsZiwibnVtYmVyUGF0dGVybnMiLCEwKTt0aGlzLm51bWJlclBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBOdW1iZXJTeW1ib2wgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobGYsIm51bWJlclN5bWJvbCIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZGVjaW1hbCIsImdyb3VwaW5nIiwicGVyY2VudCIsIm1pbnVzIiwiemVybyJdKX19Y2xhc3MgTnVtYmVyU3ltYm9scyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihsZiwibnVtYmVyU3ltYm9scyIsITApO3RoaXMubnVtYmVyU3ltYm9sPW5ldyBYRkFPYmplY3RBcnJheSg1KX19Y2xhc3MgVGltZVBhdHRlcm4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobGYsInRpbWVQYXR0ZXJuIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBUaW1lUGF0dGVybnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobGYsInRpbWVQYXR0ZXJucyIsITApO3RoaXMudGltZVBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBUeXBlRmFjZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihsZiwidHlwZUZhY2UiLCEwKTt0aGlzLm5hbWU9IiJ8ZS5uYW1lfX1jbGFzcyBUeXBlRmFjZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobGYsInR5cGVGYWNlcyIsITApO3RoaXMudHlwZUZhY2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBMb2NhbGVTZXROYW1lc3BhY2V7c3RhdGljW3dsXShlLHQpe2lmKE9iamVjdC5oYXNPd24oTG9jYWxlU2V0TmFtZXNwYWNlLGUpKXJldHVybiBMb2NhbGVTZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIGNhbGVuZGFyU3ltYm9scyhlKXtyZXR1cm4gbmV3IENhbGVuZGFyU3ltYm9scyhlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2woZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbChlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2xzKGUpe3JldHVybiBuZXcgQ3VycmVuY3lTeW1ib2xzKGUpfXN0YXRpYyBkYXRlUGF0dGVybihlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJuKGUpfXN0YXRpYyBkYXRlUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBEYXRlUGF0dGVybnMoZSl9c3RhdGljIGRhdGVUaW1lU3ltYm9scyhlKXtyZXR1cm4gbmV3IERhdGVUaW1lU3ltYm9scyhlKX1zdGF0aWMgZGF5KGUpe3JldHVybiBuZXcgRGF5KGUpfXN0YXRpYyBkYXlOYW1lcyhlKXtyZXR1cm4gbmV3IERheU5hbWVzKGUpfXN0YXRpYyBlcmEoZSl7cmV0dXJuIG5ldyBFcmEoZSl9c3RhdGljIGVyYU5hbWVzKGUpe3JldHVybiBuZXcgRXJhTmFtZXMoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IGxvY2FsZV9zZXRfTG9jYWxlKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBsb2NhbGVfc2V0X0xvY2FsZVNldChlKX1zdGF0aWMgbWVyaWRpZW0oZSl7cmV0dXJuIG5ldyBNZXJpZGllbShlKX1zdGF0aWMgbWVyaWRpZW1OYW1lcyhlKXtyZXR1cm4gbmV3IE1lcmlkaWVtTmFtZXMoZSl9c3RhdGljIG1vbnRoKGUpe3JldHVybiBuZXcgTW9udGgoZSl9c3RhdGljIG1vbnRoTmFtZXMoZSl7cmV0dXJuIG5ldyBNb250aE5hbWVzKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJuKGUpe3JldHVybiBuZXcgTnVtYmVyUGF0dGVybihlKX1zdGF0aWMgbnVtYmVyUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJucyhlKX1zdGF0aWMgbnVtYmVyU3ltYm9sKGUpe3JldHVybiBuZXcgTnVtYmVyU3ltYm9sKGUpfXN0YXRpYyBudW1iZXJTeW1ib2xzKGUpe3JldHVybiBuZXcgTnVtYmVyU3ltYm9scyhlKX1zdGF0aWMgdGltZVBhdHRlcm4oZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybihlKX1zdGF0aWMgdGltZVBhdHRlcm5zKGUpe3JldHVybiBuZXcgVGltZVBhdHRlcm5zKGUpfXN0YXRpYyB0eXBlRmFjZShlKXtyZXR1cm4gbmV3IFR5cGVGYWNlKGUpfXN0YXRpYyB0eXBlRmFjZXMoZSl7cmV0dXJuIG5ldyBUeXBlRmFjZXMoZSl9fWNvbnN0IGZmPWpsLnNpZ25hdHVyZS5pZDtjbGFzcyBzaWduYXR1cmVfU2lnbmF0dXJlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJzaWduYXR1cmUiLCEwKX19Y2xhc3MgU2lnbmF0dXJlTmFtZXNwYWNle3N0YXRpY1t3bF0oZSx0KXtpZihPYmplY3QuaGFzT3duKFNpZ25hdHVyZU5hbWVzcGFjZSxlKSlyZXR1cm4gU2lnbmF0dXJlTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBzaWduYXR1cmVfU2lnbmF0dXJlKGUpfX1jb25zdCBjZj1qbC5zdHlsZXNoZWV0LmlkO2NsYXNzIFN0eWxlc2hlZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoY2YsInN0eWxlc2hlZXQiLCEwKX19Y2xhc3MgU3R5bGVzaGVldE5hbWVzcGFjZXtzdGF0aWNbd2xdKGUsdCl7aWYoT2JqZWN0Lmhhc093bihTdHlsZXNoZWV0TmFtZXNwYWNlLGUpKXJldHVybiBTdHlsZXNoZWV0TmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBzdHlsZXNoZWV0KGUpe3JldHVybiBuZXcgU3R5bGVzaGVldChlKX19Y29uc3QgaGY9amwueGRwLmlkO2NsYXNzIHhkcF9YZHAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaGYsInhkcCIsITApO3RoaXMudXVpZD1lLnV1aWR8fCIiO3RoaXMudGltZVN0YW1wPWUudGltZVN0YW1wfHwiIjt0aGlzLmNvbmZpZz1udWxsO3RoaXMuY29ubmVjdGlvblNldD1udWxsO3RoaXMuZGF0YXNldHM9bnVsbDt0aGlzLmxvY2FsZVNldD1udWxsO3RoaXMuc3R5bGVzaGVldD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZW1wbGF0ZT1udWxsfVtab10oZSl7Y29uc3QgdD1qbFtlW1lvXV07cmV0dXJuIHQmJmVbJG9dPT09dC5pZH19Y2xhc3MgWGRwTmFtZXNwYWNle3N0YXRpY1t3bF0oZSx0KXtpZihPYmplY3QuaGFzT3duKFhkcE5hbWVzcGFjZSxlKSlyZXR1cm4gWGRwTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyB4ZHAoZSl7cmV0dXJuIG5ldyB4ZHBfWGRwKGUpfX1jb25zdCB1Zj1qbC54aHRtbC5pZCxtZj1TeW1ib2woKSxwZj1uZXcgU2V0KFsiY29sb3IiLCJmb250IiwiZm9udC1mYW1pbHkiLCJmb250LXNpemUiLCJmb250LXN0cmV0Y2giLCJmb250LXN0eWxlIiwiZm9udC13ZWlnaHQiLCJtYXJnaW4iLCJtYXJnaW4tYm90dG9tIiwibWFyZ2luLWxlZnQiLCJtYXJnaW4tcmlnaHQiLCJtYXJnaW4tdG9wIiwibGV0dGVyLXNwYWNpbmciLCJsaW5lLWhlaWdodCIsIm9ycGhhbnMiLCJwYWdlLWJyZWFrLWFmdGVyIiwicGFnZS1icmVhay1iZWZvcmUiLCJwYWdlLWJyZWFrLWluc2lkZSIsInRhYi1pbnRlcnZhbCIsInRhYi1zdG9wIiwidGV4dC1hbGlnbiIsInRleHQtZGVjb3JhdGlvbiIsInRleHQtaW5kZW50IiwidmVydGljYWwtYWxpZ24iLCJ3aWRvd3MiLCJrZXJuaW5nLW1vZGUiLCJ4ZmEtZm9udC1ob3Jpem9udGFsLXNjYWxlIiwieGZhLWZvbnQtdmVydGljYWwtc2NhbGUiLCJ4ZmEtc3BhY2VydW4iLCJ4ZmEtdGFiLXN0b3BzIl0pLGRmPW5ldyBNYXAoW1sicGFnZS1icmVhay1hZnRlciIsImJyZWFrQWZ0ZXIiXSxbInBhZ2UtYnJlYWstYmVmb3JlIiwiYnJlYWtCZWZvcmUiXSxbInBhZ2UtYnJlYWstaW5zaWRlIiwiYnJlYWtJbnNpZGUiXSxbImtlcm5pbmctbW9kZSIsZT0+Im5vbmUiPT09ZT8ibm9uZSI6Im5vcm1hbCJdLFsieGZhLWZvbnQtaG9yaXpvbnRhbC1zY2FsZSIsZT0+YHNjYWxlWCgke01hdGgubWF4KDAscGFyc2VJbnQoZSwxMCkvMTAwKS50b0ZpeGVkKDIpfSlgXSxbInhmYS1mb250LXZlcnRpY2FsLXNjYWxlIixlPT5gc2NhbGVZKCR7TWF0aC5tYXgoMCxwYXJzZUludChlLDEwKS8xMDApLnRvRml4ZWQoMil9KWBdLFsieGZhLXNwYWNlcnVuIiwiIl0sWyJ4ZmEtdGFiLXN0b3BzIiwiIl0sWyJmb250LXNpemUiLChlLHQpPT5tZWFzdXJlVG9TdHJpbmcoLjk5KihlPXQuZm9udFNpemU9TWF0aC5hYnMoZ2V0TWVhc3VyZW1lbnQoZSkpKSldLFsibGV0dGVyLXNwYWNpbmciLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibGluZS1oZWlnaHQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1ib3R0b20iLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luLWxlZnQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luLXJpZ2h0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi10b3AiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsidGV4dC1pbmRlbnQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsiZm9udC1mYW1pbHkiLGU9PmVdLFsidmVydGljYWwtYWxpZ24iLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldXSksZ2Y9L1xzKy9nLGJmPS9bXHJcbl0rL2csd2Y9L1xyXG4/L2c7ZnVuY3Rpb24gbWFwU3R5bGUoZSx0LG4pe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtpZighZSlyZXR1cm4gYTtjb25zdCBzPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W3Qsbl1vZiBlLnNwbGl0KCI7IikubWFwKGU9PmUuc3BsaXQoIjoiLDIpKSl7Y29uc3QgZT1kZi5nZXQodCk7aWYoIiI9PT1lKWNvbnRpbnVlO2xldCByPW47ZSYmKHI9InN0cmluZyI9PXR5cGVvZiBlP2U6ZShuLHMpKTt0LmVuZHNXaXRoKCJzY2FsZSIpP2EudHJhbnNmb3JtPWEudHJhbnNmb3JtP2Ake2FbdF19ICR7cn1gOnI6YVt0LnJlcGxhY2VBbGwoLy0oW2Etel0pL2dpLChlLHQpPT50LnRvVXBwZXJDYXNlKCkpXT1yfWEuZm9udEZhbWlseSYmc2V0Rm9udEZhbWlseSh7dHlwZWZhY2U6YS5mb250RmFtaWx5LHdlaWdodDphLmZvbnRXZWlnaHR8fCJub3JtYWwiLHBvc3R1cmU6YS5mb250U3R5bGV8fCJub3JtYWwiLHNpemU6cy5mb250U2l6ZXx8MH0sdCx0W0JvXS5mb250RmluZGVyLGEpO2lmKG4mJmEudmVydGljYWxBbGlnbiYmIjBweCIhPT1hLnZlcnRpY2FsQWxpZ24mJmEuZm9udFNpemUpe2NvbnN0IGU9LjU4Myx0PS4zMzMsbj1nZXRNZWFzdXJlbWVudChhLmZvbnRTaXplKTthLmZvbnRTaXplPW1lYXN1cmVUb1N0cmluZyhuKmUpO2EudmVydGljYWxBbGlnbj1tZWFzdXJlVG9TdHJpbmcoTWF0aC5zaWduKGdldE1lYXN1cmVtZW50KGEudmVydGljYWxBbGlnbikpKm4qdCl9biYmYS5mb250U2l6ZSYmKGEuZm9udFNpemU9YGNhbGMoJHthLmZvbnRTaXplfSAqIHZhcigtLXRvdGFsLXNjYWxlLWZhY3RvcikpYCk7Zml4VGV4dEluZGVudChhKTtyZXR1cm4gYX1jb25zdCBqZj1uZXcgU2V0KFsiYm9keSIsImh0bWwiXSk7Y2xhc3MgWGh0bWxPYmplY3QgZXh0ZW5kcyBYbWxPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcih1Zix0KTt0aGlzW21mXT0hMTt0aGlzLnN0eWxlPWUuc3R5bGV8fCIifVtpb10oZSl7c3VwZXJbaW9dKGUpO3RoaXMuc3R5bGU9ZnVuY3Rpb24gY2hlY2tTdHlsZShlKXtyZXR1cm4gZS5zdHlsZT9lLnN0eWxlLnNwbGl0KCI7IikuZmlsdGVyKGU9PiEhZS50cmltKCkpLm1hcChlPT5lLnNwbGl0KCI6IiwyKS5tYXAoZT0+ZS50cmltKCkpKS5maWx0ZXIoKFt0LG5dKT0+eyJmb250LWZhbWlseSI9PT10JiZlW0JvXS51c2VkVHlwZWZhY2VzLmFkZChuKTtyZXR1cm4gcGYuaGFzKHQpfSkubWFwKGU9PmUuam9pbigiOiIpKS5qb2luKCI7Iik6IiJ9KHRoaXMpfVtub10oKXtyZXR1cm4hamYuaGFzKHRoaXNbWW9dKX1bZWxdKGUsdD0hMSl7aWYodCl0aGlzW21mXT0hMDtlbHNle2U9ZS5yZXBsYWNlQWxsKGJmLCIiKTt0aGlzLnN0eWxlLmluY2x1ZGVzKCJ4ZmEtc3BhY2VydW46eWVzIil8fChlPWUucmVwbGFjZUFsbChnZiwiICIpKX1lJiYodGhpc1tob10rPWUpfVt0bF0oZSx0PSEwKXtjb25zdCBuPU9iamVjdC5jcmVhdGUobnVsbCksYT17dG9wOk5hTixib3R0b206TmFOLGxlZnQ6TmFOLHJpZ2h0Ok5hTn07bGV0IHM9bnVsbDtmb3IoY29uc3RbZSx0XW9mIHRoaXMuc3R5bGUuc3BsaXQoIjsiKS5tYXAoZT0+ZS5zcGxpdCgiOiIsMikpKXN3aXRjaChlKXtjYXNlImZvbnQtZmFtaWx5IjpuLnR5cGVmYWNlPXN0cmlwUXVvdGVzKHQpO2JyZWFrO2Nhc2UiZm9udC1zaXplIjpuLnNpemU9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJmb250LXdlaWdodCI6bi53ZWlnaHQ9dDticmVhaztjYXNlImZvbnQtc3R5bGUiOm4ucG9zdHVyZT10O2JyZWFrO2Nhc2UibGV0dGVyLXNwYWNpbmciOm4ubGV0dGVyU3BhY2luZz1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbiI6Y29uc3QgZT10LnNwbGl0KC8gXHQvKS5tYXAoZT0+Z2V0TWVhc3VyZW1lbnQoZSkpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAxOmEudG9wPWEuYm90dG9tPWEubGVmdD1hLnJpZ2h0PWVbMF07YnJlYWs7Y2FzZSAyOmEudG9wPWEuYm90dG9tPWVbMF07YS5sZWZ0PWEucmlnaHQ9ZVsxXTticmVhaztjYXNlIDM6YS50b3A9ZVswXTthLmJvdHRvbT1lWzJdO2EubGVmdD1hLnJpZ2h0PWVbMV07YnJlYWs7Y2FzZSA0OmEudG9wPWVbMF07YS5sZWZ0PWVbMV07YS5ib3R0b209ZVsyXTthLnJpZ2h0PWVbM119YnJlYWs7Y2FzZSJtYXJnaW4tdG9wIjphLnRvcD1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbi1ib3R0b20iOmEuYm90dG9tPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLWxlZnQiOmEubGVmdD1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbi1yaWdodCI6YS5yaWdodD1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlImxpbmUtaGVpZ2h0IjpzPWdldE1lYXN1cmVtZW50KHQpfWUucHVzaERhdGEobixhLHMpO2lmKHRoaXNbaG9dKWUuYWRkU3RyaW5nKHRoaXNbaG9dKTtlbHNlIGZvcihjb25zdCB0IG9mIHRoaXNbQ29dKCkpIiN0ZXh0IiE9PXRbWW9dP3RbdGxdKGUpOmUuYWRkU3RyaW5nKHRbaG9dKTt0JiZlLnBvcEZvbnQoKX1bcGxdKGUpe2NvbnN0IHQ9W107dGhpc1twb109e2NoaWxkcmVuOnR9O3RoaXNbcm9dKHt9KTtpZigwPT09dC5sZW5ndGgmJiF0aGlzW2hvXSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtsZXQgbjtuPXRoaXNbbWZdP3RoaXNbaG9dP3RoaXNbaG9dLnJlcGxhY2VBbGwod2YsIlxuIik6dm9pZCAwOnRoaXNbaG9dfHx2b2lkIDA7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZTp0aGlzW1lvXSxhdHRyaWJ1dGVzOntocmVmOnRoaXMuaHJlZixzdHlsZTptYXBTdHlsZSh0aGlzLnN0eWxlLHRoaXMsdGhpc1ttZl0pfSxjaGlsZHJlbjp0LHZhbHVlOm59KX19Y2xhc3MgQSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImEiKTt0aGlzLmhyZWY9Zml4VVJMKGUuaHJlZil8fCIifX1jbGFzcyBCIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYiIpfVt0bF0oZSl7ZS5wdXNoRm9udCh7d2VpZ2h0OiJib2xkIn0pO3N1cGVyW3RsXShlKTtlLnBvcEZvbnQoKX19Y2xhc3MgQm9keSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJvZHkiKX1bcGxdKGUpe2NvbnN0IHQ9c3VwZXJbcGxdKGUpLHtodG1sOm59PXQ7aWYoIW4pcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7bi5uYW1lPSJkaXYiO24uYXR0cmlidXRlcy5jbGFzcz1bInhmYVJpY2giXTtyZXR1cm4gdH19Y2xhc3MgQnIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJiciIpfVt1bF0oKXtyZXR1cm4iXG4ifVt0bF0oZSl7ZS5hZGRTdHJpbmcoIlxuIil9W3BsXShlKXtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJiciJ9KX19Y2xhc3MgSHRtbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImh0bWwiKX1bcGxdKGUpe2NvbnN0IHQ9W107dGhpc1twb109e2NoaWxkcmVuOnR9O3RoaXNbcm9dKHt9KTtpZigwPT09dC5sZW5ndGgpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTp7fX0sdmFsdWU6dGhpc1tob118fCIifSk7aWYoMT09PXQubGVuZ3RoKXtjb25zdCBlPXRbMF07aWYoZS5hdHRyaWJ1dGVzPy5jbGFzcy5pbmNsdWRlcygieGZhUmljaCIpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTp7fX0sY2hpbGRyZW46dH0pfX1jbGFzcyBJIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiaSIpfVt0bF0oZSl7ZS5wdXNoRm9udCh7cG9zdHVyZToiaXRhbGljIn0pO3N1cGVyW3RsXShlKTtlLnBvcEZvbnQoKX19Y2xhc3MgTGkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJsaSIpfX1jbGFzcyBPbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIm9sIil9fWNsYXNzIFAgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJwIil9W3RsXShlKXtzdXBlclt0bF0oZSwhMSk7ZS5hZGRTdHJpbmcoIlxuIik7ZS5hZGRQYXJhKCk7ZS5wb3BGb250KCl9W3VsXSgpe3JldHVybiB0aGlzW09vXSgpW0NvXSgpLmF0KC0xKT09PXRoaXM/c3VwZXJbdWxdKCk6c3VwZXJbdWxdKCkrIlxuIn19Y2xhc3MgU3BhbiBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInNwYW4iKX19Y2xhc3MgU3ViIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3ViIil9fWNsYXNzIFN1cCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInN1cCIpfX1jbGFzcyBVbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInVsIil9fWNsYXNzIFhodG1sTmFtZXNwYWNle3N0YXRpY1t3bF0oZSx0KXtpZihPYmplY3QuaGFzT3duKFhodG1sTmFtZXNwYWNlLGUpKXJldHVybiBYaHRtbE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYShlKXtyZXR1cm4gbmV3IEEoZSl9c3RhdGljIGIoZSl7cmV0dXJuIG5ldyBCKGUpfXN0YXRpYyBib2R5KGUpe3JldHVybiBuZXcgQm9keShlKX1zdGF0aWMgYnIoZSl7cmV0dXJuIG5ldyBCcihlKX1zdGF0aWMgaHRtbChlKXtyZXR1cm4gbmV3IEh0bWwoZSl9c3RhdGljIGkoZSl7cmV0dXJuIG5ldyBJKGUpfXN0YXRpYyBsaShlKXtyZXR1cm4gbmV3IExpKGUpfXN0YXRpYyBvbChlKXtyZXR1cm4gbmV3IE9sKGUpfXN0YXRpYyBwKGUpe3JldHVybiBuZXcgUChlKX1zdGF0aWMgc3BhbihlKXtyZXR1cm4gbmV3IFNwYW4oZSl9c3RhdGljIHN1YihlKXtyZXR1cm4gbmV3IFN1YihlKX1zdGF0aWMgc3VwKGUpe3JldHVybiBuZXcgU3VwKGUpfXN0YXRpYyB1bChlKXtyZXR1cm4gbmV3IFVsKGUpfX1jb25zdCBrZj17Y29uZmlnOkNvbmZpZ05hbWVzcGFjZSxjb25uZWN0aW9uOkNvbm5lY3Rpb25TZXROYW1lc3BhY2UsZGF0YXNldHM6RGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OkxvY2FsZVNldE5hbWVzcGFjZSxzaWduYXR1cmU6U2lnbmF0dXJlTmFtZXNwYWNlLHN0eWxlc2hlZXQ6U3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpUZW1wbGF0ZU5hbWVzcGFjZSx4ZHA6WGRwTmFtZXNwYWNlLHhodG1sOlhodG1sTmFtZXNwYWNlfTtjbGFzcyBVbmtub3duTmFtZXNwYWNle2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZXNwYWNlSWQ9ZX1bd2xdKGUsdCl7cmV0dXJuIG5ldyBYbWxPYmplY3QodGhpcy5uYW1lc3BhY2VJZCxlLHQpfX1jbGFzcyBSb290IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKC0xLCJyb290IixPYmplY3QuY3JlYXRlKG51bGwpKTt0aGlzLmVsZW1lbnQ9bnVsbDt0aGlzW01vXT1lfVtRb10oZSl7dGhpcy5lbGVtZW50PWU7cmV0dXJuITB9W2dvXSgpe3N1cGVyW2dvXSgpO2lmKHRoaXMuZWxlbWVudC50ZW1wbGF0ZSBpbnN0YW5jZW9mIFRlbXBsYXRlKXt0aGlzW01vXS5zZXQocmwsdGhpcy5lbGVtZW50KTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbaWxdKHRoaXNbTW9dKTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbTW9dPXRoaXNbTW9dfX19Y2xhc3MgRW1wdHkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1bUW9dKGUpe3JldHVybiExfX1jbGFzcyBCdWlsZGVye2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbmFtZXNwYWNlU3RhY2s9W107dGhpcy5fbnNBZ25vc3RpY0xldmVsPTA7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXM9bmV3IE1hcDt0aGlzLl9uYW1lc3BhY2VzPW5ldyBNYXA7dGhpcy5fbmV4dE5zSWQ9TWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhqbCkubWFwKCh7aWQ6ZX0pPT5lKSk7dGhpcy5fY3VycmVudE5hbWVzcGFjZT1lfHxuZXcgVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKX1idWlsZFJvb3QoZSl7cmV0dXJuIG5ldyBSb290KGUpfWJ1aWxkKHtuc1ByZWZpeDplLG5hbWU6dCxhdHRyaWJ1dGVzOm4sbmFtZXNwYWNlOmEscHJlZml4ZXM6c30pe2NvbnN0IHI9bnVsbCE9PWE7aWYocil7dGhpcy5fbmFtZXNwYWNlU3RhY2sucHVzaCh0aGlzLl9jdXJyZW50TmFtZXNwYWNlKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPXRoaXMuX3NlYXJjaE5hbWVzcGFjZShhKX1zJiZ0aGlzLl9hZGROYW1lc3BhY2VQcmVmaXgocyk7aWYoT2JqZWN0Lmhhc093bihuLEpvKSl7Y29uc3QgZT1rZi5kYXRhc2V0cyx0PW5bSm9dO2xldCBhPW51bGw7Zm9yKGNvbnN0W24sc11vZiBPYmplY3QuZW50cmllcyh0KSl7aWYodGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2Uobik9PT1lKXthPXt4ZmE6c307YnJlYWt9fWE/bltKb109YTpkZWxldGUgbltKb119Y29uc3QgaT10aGlzLl9nZXROYW1lc3BhY2VUb1VzZShlKSxvPWk/Llt3bF0odCxuKXx8bmV3IEVtcHR5O29bVW9dKCkmJnRoaXMuX25zQWdub3N0aWNMZXZlbCsrOyhyfHxzfHxvW1VvXSgpKSYmKG9bbG9dPXtoYXNOYW1lc3BhY2U6cixwcmVmaXhlczpzLG5zQWdub3N0aWM6b1tVb10oKX0pO3JldHVybiBvfWlzTnNBZ25vc3RpYygpe3JldHVybiB0aGlzLl9uc0Fnbm9zdGljTGV2ZWw+MH1fc2VhcmNoTmFtZXNwYWNlKGUpe2xldCB0PXRoaXMuX25hbWVzcGFjZXMuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Zm9yKGNvbnN0W24se2NoZWNrOmF9XW9mIE9iamVjdC5lbnRyaWVzKGpsKSlpZihhKGUpKXt0PWtmW25dO2lmKHQpe3RoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCk7cmV0dXJuIHR9YnJlYWt9dD1uZXcgVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKTt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fV9hZGROYW1lc3BhY2VQcmVmaXgoZSl7Zm9yKGNvbnN0e3ByZWZpeDp0LHZhbHVlOm59b2YgZSl7Y29uc3QgZT10aGlzLl9zZWFyY2hOYW1lc3BhY2Uobik7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0T3JJbnNlcnRDb21wdXRlZCh0LG1ha2VBcnIpLnB1c2goZSl9fV9nZXROYW1lc3BhY2VUb1VzZShlKXtpZighZSlyZXR1cm4gdGhpcy5fY3VycmVudE5hbWVzcGFjZTtjb25zdCB0PXRoaXMuX25hbWVzcGFjZVByZWZpeGVzLmdldChlKTtpZih0Py5sZW5ndGg+MClyZXR1cm4gdC5hdCgtMSk7d2FybihgVW5rbm93biBuYW1lc3BhY2UgcHJlZml4OiAke2V9LmApO3JldHVybiBudWxsfWNsZWFuKGUpe2NvbnN0e2hhc05hbWVzcGFjZTp0LHByZWZpeGVzOm4sbnNBZ25vc3RpYzphfT1lO3QmJih0aGlzLl9jdXJyZW50TmFtZXNwYWNlPXRoaXMuX25hbWVzcGFjZVN0YWNrLnBvcCgpKTtuJiZuLmZvckVhY2goKHtwcmVmaXg6ZX0pPT57dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpLnBvcCgpfSk7YSYmdGhpcy5fbnNBZ25vc3RpY0xldmVsLS19fWNsYXNzIFhGQVBhcnNlciBleHRlbmRzIFhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3IoZT1udWxsLHQ9ITEpe3N1cGVyKCk7dGhpcy5fYnVpbGRlcj1uZXcgQnVpbGRlcihlKTt0aGlzLl9zdGFjaz1bXTt0aGlzLl9nbG9iYWxEYXRhPXt1c2VkVHlwZWZhY2VzOm5ldyBTZXR9O3RoaXMuX2lkcz1uZXcgTWFwO3RoaXMuX2N1cnJlbnQ9dGhpcy5fYnVpbGRlci5idWlsZFJvb3QodGhpcy5faWRzKTt0aGlzLl9lcnJvckNvZGU9emk7dGhpcy5fd2hpdGVSZWdleD0vXlxzKyQvO3RoaXMuX25ic3BzPS9ceGEwKy9nO3RoaXMuX3JpY2hUZXh0PXR9cGFyc2UoZSl7dGhpcy5wYXJzZVhtbChlKTtpZih0aGlzLl9lcnJvckNvZGU9PT16aSl7dGhpcy5fY3VycmVudFtnb10oKTtyZXR1cm4gdGhpcy5fY3VycmVudC5lbGVtZW50fX1vblRleHQoZSl7ZT1lLnJlcGxhY2UodGhpcy5fbmJzcHMsZT0+ZS5zbGljZSgxKSsiICIpO3RoaXMuX3JpY2hUZXh0fHx0aGlzLl9jdXJyZW50W25vXSgpP3RoaXMuX2N1cnJlbnRbZWxdKGUsdGhpcy5fcmljaFRleHQpOnRoaXMuX3doaXRlUmVnZXgudGVzdChlKXx8dGhpcy5fY3VycmVudFtlbF0oZS50cmltKCkpfW9uQ2RhdGEoZSl7dGhpcy5fY3VycmVudFtlbF0oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBuPW51bGwsYT1udWxsO2NvbnN0IHM9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6cix2YWx1ZTppfW9mIGUpaWYoInhtbG5zIj09PXIpbj93YXJuKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTpuPWk7ZWxzZSBpZihyLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPXIuc3Vic3RyaW5nKDYpO2E/Pz1bXTthLnB1c2goe3ByZWZpeDplLHZhbHVlOml9KX1lbHNle2NvbnN0IGU9ci5pbmRleE9mKCI6Iik7aWYoLTE9PT1lKXNbcl09aTtlbHNle2NvbnN0IHQ9c1tKb10/Pz1PYmplY3QuY3JlYXRlKG51bGwpLFtuLGFdPVtyLnNsaWNlKDAsZSksci5zbGljZShlKzEpXTsodFtuXXx8PU9iamVjdC5jcmVhdGUobnVsbCkpW2FdPWl9fXJldHVybltuLGEsc119X2dldE5hbWVBbmRQcmVmaXgoZSx0KXtjb25zdCBuPWUuaW5kZXhPZigiOiIpO3JldHVybi0xPT09bj9bZSxudWxsXTpbZS5zdWJzdHJpbmcobisxKSx0PyIiOmUuc3Vic3RyaW5nKDAsbildfW9uQmVnaW5FbGVtZW50KGUsdCxuKXtjb25zdFthLHMscl09dGhpcy5fbWtBdHRyaWJ1dGVzKHQsZSksW2ksb109dGhpcy5fZ2V0TmFtZUFuZFByZWZpeChlLHRoaXMuX2J1aWxkZXIuaXNOc0Fnbm9zdGljKCkpLGw9dGhpcy5fYnVpbGRlci5idWlsZCh7bnNQcmVmaXg6byxuYW1lOmksYXR0cmlidXRlczpyLG5hbWVzcGFjZTphLHByZWZpeGVzOnN9KTtsW0JvXT10aGlzLl9nbG9iYWxEYXRhO2lmKG4pe2xbZ29dKCk7dGhpcy5fY3VycmVudFtRb10obCkmJmxbbGxdKHRoaXMuX2lkcyk7bFtpb10odGhpcy5fYnVpbGRlcil9ZWxzZXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnQpO3RoaXMuX2N1cnJlbnQ9bH19b25FbmRFbGVtZW50KGUpe2NvbnN0IHQ9dGhpcy5fY3VycmVudDtpZih0W0VvXSgpJiYic3RyaW5nIj09dHlwZW9mIHRbaG9dKXtjb25zdCBlPW5ldyBYRkFQYXJzZXI7ZS5fZ2xvYmFsRGF0YT10aGlzLl9nbG9iYWxEYXRhO2NvbnN0IG49ZS5wYXJzZSh0W2hvXSk7dFtob109bnVsbDt0W1FvXShuKX10W2dvXSgpO3RoaXMuX2N1cnJlbnQ9dGhpcy5fc3RhY2sucG9wKCk7dGhpcy5fY3VycmVudFtRb10odCkmJnRbbGxdKHRoaXMuX2lkcyk7dFtpb10odGhpcy5fYnVpbGRlcil9b25FcnJvcihlKXt0aGlzLl9lcnJvckNvZGU9ZX19Y2xhc3MgWEZBRmFjdG9yeXtjb25zdHJ1Y3RvcihlKXt0cnl7dGhpcy5yb290PShuZXcgWEZBUGFyc2VyKS5wYXJzZShYRkFGYWN0b3J5Ll9jcmVhdGVEb2N1bWVudChlKSk7Y29uc3QgdD1uZXcgQmluZGVyKHRoaXMucm9vdCk7dGhpcy5mb3JtPXQuYmluZCgpO3RoaXMuZGF0YUhhbmRsZXI9bmV3IERhdGFIYW5kbGVyKHRoaXMucm9vdCx0LmdldERhdGEoKSk7dGhpcy5mb3JtW0JvXS50ZW1wbGF0ZT10aGlzLmZvcm19Y2F0Y2goZSl7d2FybihgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBhcnNpbmcgYW5kIGJpbmRpbmc6ICR7ZX1gKX19aXNWYWxpZCgpe3JldHVybiEoIXRoaXMucm9vdHx8IXRoaXMuZm9ybSl9X2NyZWF0ZVBhZ2VzSGVscGVyKCl7Y29uc3QgZT10aGlzLmZvcm1bbWxdKCk7cmV0dXJuIG5ldyBQcm9taXNlKCh0LG4pPT57Y29uc3QgbmV4dEl0ZXJhdGlvbj0oKT0+e3RyeXtjb25zdCBuPWUubmV4dCgpO24uZG9uZT90KG4udmFsdWUpOnNldFRpbWVvdXQobmV4dEl0ZXJhdGlvbiwwKX1jYXRjaChlKXtuKGUpfX07c2V0VGltZW91dChuZXh0SXRlcmF0aW9uLDApfSl9YXN5bmMgX2NyZWF0ZVBhZ2VzKCl7dHJ5e3RoaXMucGFnZXM9YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXNIZWxwZXIoKTt0aGlzLmRpbXM9dGhpcy5wYWdlcy5jaGlsZHJlbi5tYXAoZT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0Om59PWUuYXR0cmlidXRlcy5zdHlsZTtyZXR1cm5bMCwwLHBhcnNlSW50KHQsMTApLHBhcnNlSW50KG4sMTApXX0pfWNhdGNoKGUpe3dhcm4oYFhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBsYXlvdXQ6ICR7ZX1gKX19Z2V0Qm91bmRpbmdCb3goZSl7cmV0dXJuIHRoaXMuZGltc1tlXX1hc3luYyBnZXROdW1QYWdlcygpe3RoaXMucGFnZXN8fGF3YWl0IHRoaXMuX2NyZWF0ZVBhZ2VzKCk7cmV0dXJuIHRoaXMuZGltcy5sZW5ndGh9c2V0SW1hZ2VzKGUpe3RoaXMuZm9ybVtCb10uaW1hZ2VzPWV9c2V0Rm9udHMoZSl7dGhpcy5mb3JtW0JvXS5mb250RmluZGVyPW5ldyBGb250RmluZGVyKGUpO2NvbnN0IHQ9W107Zm9yKGxldCBlIG9mIHRoaXMuZm9ybVtCb10udXNlZFR5cGVmYWNlcyl7ZT1zdHJpcFF1b3RlcyhlKTt0aGlzLmZvcm1bQm9dLmZvbnRGaW5kZXIuZmluZChlKXx8dC5wdXNoKGUpfXJldHVybiB0Lmxlbmd0aD4wP3Q6bnVsbH1hcHBlbmRGb250cyhlLHQpe3RoaXMuZm9ybVtCb10uZm9udEZpbmRlci5hZGQoZSx0KX1hc3luYyBnZXRQYWdlcygpe3RoaXMucGFnZXN8fGF3YWl0IHRoaXMuX2NyZWF0ZVBhZ2VzKCk7Y29uc3QgZT10aGlzLnBhZ2VzO3RoaXMucGFnZXM9bnVsbDtyZXR1cm4gZX1zZXJpYWxpemVEYXRhKGUpe3JldHVybiB0aGlzLmRhdGFIYW5kbGVyLnNlcmlhbGl6ZShlKX1zdGF0aWMgX2NyZWF0ZURvY3VtZW50KGUpe3JldHVybiBlLmdldCgiL3hkcDp4ZHAiKT9lLnZhbHVlcygpLmpvaW4oIiIpOmUuZ2V0KCJ4ZHA6eGRwIil9c3RhdGljIGdldFJpY2hUZXh0QXNIdG1sKGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e2xldCB0PW5ldyBYRkFQYXJzZXIoWGh0bWxOYW1lc3BhY2UsITApLnBhcnNlKGUpO2lmKCFbImJvZHkiLCJ4aHRtbCJdLmluY2x1ZGVzKHRbWW9dKSl7Y29uc3QgZT1YaHRtbE5hbWVzcGFjZS5ib2R5KHt9KTtlW3NvXSh0KTt0PWV9Y29uc3Qgbj10W3BsXSgpO2lmKCFuLnN1Y2Nlc3MpcmV0dXJuIG51bGw7Y29uc3R7aHRtbDphfT1uLHthdHRyaWJ1dGVzOnN9PWE7aWYocyl7cy5jbGFzcyYmPXMuY2xhc3MuZmlsdGVyKGU9PiFlLnN0YXJ0c1dpdGgoInhmYSIpKTtzLmRpcj0iYXV0byJ9cmV0dXJue2h0bWw6YSxzdHI6dFt1bF0oKX19Y2F0Y2goZSl7d2FybihgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBhcnNpbmcgb2YgcmljaCB0ZXh0OiAke2V9YCl9cmV0dXJuIG51bGx9fWNsYXNzIEFubm90YXRpb25GYWN0b3J5e3N0YXRpYyBjcmVhdGVHbG9iYWxzKGUpe3JldHVybiBQcm9taXNlLmFsbChbZS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpLGUuZW5zdXJlRG9jKCJ4ZmFEYXRhc2V0cyIpLGUuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKSxlLmVuc3VyZUNhdGFsb2coImJhc2VVcmwiKSxlLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIiksZS5lbnN1cmVDYXRhbG9nKCJnbG9iYWxDb2xvclNwYWNlQ2FjaGUiKV0pLnRoZW4oKFt0LG4sYSxzLHIsaV0pPT4oe3BkZk1hbmFnZXI6ZSxjYXRhbG9nOmUucGRmRG9jdW1lbnQuY2F0YWxvZyxhY3JvRm9ybTp0IGluc3RhbmNlb2YgRGljdD90OkRpY3QuZW1wdHkseGZhRGF0YXNldHM6bixzdHJ1Y3RUcmVlUm9vdDphLGJhc2VVcmw6cyxhdHRhY2htZW50czpyLGdsb2JhbENvbG9yU3BhY2VDYWNoZTppfSksZT0+e3dhcm4oYGNyZWF0ZUdsb2JhbHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pfXN0YXRpYyBhc3luYyBjcmVhdGUoZSx0LG4sYSxzLHIsaSxvKXtjb25zdCBsPXM/YXdhaXQgdGhpcy5fZ2V0UGFnZUluZGV4KGUsdCxuLnBkZk1hbmFnZXIpOm51bGw7cmV0dXJuIG4ucGRmTWFuYWdlci5lbnN1cmUodGhpcywiX2NyZWF0ZSIsW2UsdCxuLGEscyxyLGksbCxvXSl9c3RhdGljIF9jcmVhdGUoZSx0LG4sYSxzPSExLHI9bnVsbCxpPW51bGwsbz1udWxsLGw9bnVsbCl7Y29uc3QgZj1lLmZldGNoSWZSZWYodCk7aWYoIShmIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2xldCBjPWYuZ2V0KCJTdWJ0eXBlIik7Yz1jIGluc3RhbmNlb2YgTmFtZT9jLm5hbWU6bnVsbDtpZihpJiYhaS5oYXMoUltjPy50b1VwcGVyQ2FzZSgpXSkpcmV0dXJuIG51bGw7Y29uc3R7YWNyb0Zvcm06aCxwZGZNYW5hZ2VyOnV9PW4sbT10IGluc3RhbmNlb2YgUmVmP3QudG9TdHJpbmcoKTpgYW5ub3RfJHthLmNyZWF0ZU9iaklkKCl9YCxwPXt4cmVmOmUscmVmOnQsZGljdDpmLHN1YnR5cGU6YyxpZDptLGFubm90YXRpb25HbG9iYWxzOm4sY29sbGVjdEZpZWxkczpzLG9ycGhhbkZpZWxkczpyLG5lZWRBcHBlYXJhbmNlczohcyYmITA9PT1oLmdldCgiTmVlZEFwcGVhcmFuY2VzIikscGFnZUluZGV4Om8sZXZhbHVhdG9yT3B0aW9uczp1LmV2YWx1YXRvck9wdGlvbnMscGFnZVJlZjpsfTtzd2l0Y2goYyl7Y2FzZSJMaW5rIjpyZXR1cm4gbmV3IExpbmtBbm5vdGF0aW9uKHApO2Nhc2UiVGV4dCI6cmV0dXJuIG5ldyBUZXh0QW5ub3RhdGlvbihwKTtjYXNlIldpZGdldCI6bGV0IGU9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDpmLGtleToiRlQifSk7ZT1lIGluc3RhbmNlb2YgTmFtZT9lLm5hbWU6bnVsbDtzd2l0Y2goZSl7Y2FzZSJUeCI6cmV0dXJuIG5ldyBUZXh0V2lkZ2V0QW5ub3RhdGlvbihwKTtjYXNlIkJ0biI6cmV0dXJuIG5ldyBCdXR0b25XaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiQ2giOnJldHVybiBuZXcgQ2hvaWNlV2lkZ2V0QW5ub3RhdGlvbihwKTtjYXNlIlNpZyI6cmV0dXJuIG5ldyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uKHApfXdhcm4oYFVuaW1wbGVtZW50ZWQgd2lkZ2V0IGZpZWxkIHR5cGUgIiR7ZX0iLCBmYWxsaW5nIGJhY2sgdG8gYmFzZSBmaWVsZCB0eXBlLmApO3JldHVybiBuZXcgV2lkZ2V0QW5ub3RhdGlvbihwKTtjYXNlIlBvcHVwIjpyZXR1cm4gbmV3IFBvcHVwQW5ub3RhdGlvbihwKTtjYXNlIkZyZWVUZXh0IjpyZXR1cm4gbmV3IEZyZWVUZXh0QW5ub3RhdGlvbihwKTtjYXNlIkxpbmUiOnJldHVybiBuZXcgTGluZUFubm90YXRpb24ocCk7Y2FzZSJTcXVhcmUiOnJldHVybiBuZXcgU3F1YXJlQW5ub3RhdGlvbihwKTtjYXNlIkNpcmNsZSI6cmV0dXJuIG5ldyBDaXJjbGVBbm5vdGF0aW9uKHApO2Nhc2UiUG9seUxpbmUiOnJldHVybiBuZXcgUG9seWxpbmVBbm5vdGF0aW9uKHApO2Nhc2UiUG9seWdvbiI6cmV0dXJuIG5ldyBQb2x5Z29uQW5ub3RhdGlvbihwKTtjYXNlIkNhcmV0IjpyZXR1cm4gbmV3IENhcmV0QW5ub3RhdGlvbihwKTtjYXNlIkluayI6cmV0dXJuIG5ldyBJbmtBbm5vdGF0aW9uKHApO2Nhc2UiSGlnaGxpZ2h0IjpyZXR1cm4gbmV3IEhpZ2hsaWdodEFubm90YXRpb24ocCk7Y2FzZSJVbmRlcmxpbmUiOnJldHVybiBuZXcgVW5kZXJsaW5lQW5ub3RhdGlvbihwKTtjYXNlIlNxdWlnZ2x5IjpyZXR1cm4gbmV3IFNxdWlnZ2x5QW5ub3RhdGlvbihwKTtjYXNlIlN0cmlrZU91dCI6cmV0dXJuIG5ldyBTdHJpa2VPdXRBbm5vdGF0aW9uKHApO2Nhc2UiU3RhbXAiOnJldHVybiBuZXcgU3RhbXBBbm5vdGF0aW9uKHApO2Nhc2UiRmlsZUF0dGFjaG1lbnQiOnJldHVybiBuZXcgRmlsZUF0dGFjaG1lbnRBbm5vdGF0aW9uKHApO2Nhc2UiUmljaE1lZGlhIjpyZXR1cm4gbmV3IFJpY2hNZWRpYUFubm90YXRpb24ocCk7Y2FzZSJTY3JlZW4iOnJldHVybiBuZXcgU2NyZWVuQW5ub3RhdGlvbihwKTtjYXNlIlNvdW5kIjpyZXR1cm4gbmV3IFNvdW5kQW5ub3RhdGlvbihwKTtkZWZhdWx0OnN8fHdhcm4oYz9gVW5pbXBsZW1lbnRlZCBhbm5vdGF0aW9uIHR5cGUgIiR7Y30iLCBmYWxsaW5nIGJhY2sgdG8gYmFzZSBhbm5vdGF0aW9uLmA6IkFubm90YXRpb24gaXMgbWlzc2luZyB0aGUgcmVxdWlyZWQgL1N1YnR5cGUuIik7cmV0dXJuIG5ldyBBbm5vdGF0aW9uKHApfX1zdGF0aWMgYXN5bmMgX2dldFBhZ2VJbmRleChlLHQsbil7dHJ5e2NvbnN0IGE9YXdhaXQgZS5mZXRjaElmUmVmQXN5bmModCk7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuLTE7Y29uc3Qgcz1hLmdldFJhdygiUCIpO2lmKHMgaW5zdGFuY2VvZiBSZWYpdHJ5e3JldHVybiBhd2FpdCBuLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW3NdKX1jYXRjaChlKXtpbmZvKGBfZ2V0UGFnZUluZGV4IC0tIG5vdCBhIHZhbGlkIHBhZ2UgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoYS5oYXMoIktpZHMiKSlyZXR1cm4tMTtjb25zdCByPWF3YWl0IG4uZW5zdXJlRG9jKCJudW1QYWdlcyIpO2ZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IGE9YXdhaXQgbi5nZXRQYWdlKGUpLHM9YXdhaXQgbi5lbnN1cmUoYSwiYW5ub3RhdGlvbnMiKTtmb3IoY29uc3QgbiBvZiBzKWlmKG4gaW5zdGFuY2VvZiBSZWYmJmlzUmVmc0VxdWFsKG4sdCkpcmV0dXJuIGV9fWNhdGNoKGUpe3dhcm4oYF9nZXRQYWdlSW5kZXg6ICIke2V9Ii5gKX1yZXR1cm4tMX1zdGF0aWMgZ2VuZXJhdGVJbWFnZXMoZSx0LG4pe2lmKCFuKXt3YXJuKCJnZW5lcmF0ZUltYWdlczogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGNhbm5vdCBzYXZlIG9yIHByaW50IHNvbWUgYW5ub3RhdGlvbnMgd2l0aCBpbWFnZXMuIik7cmV0dXJuIG51bGx9bGV0IGE7Zm9yKGNvbnN0e2JpdG1hcElkOm4sYml0bWFwOnN9b2YgZSlpZihzKXthfHw9bmV3IE1hcDthLnNldChuLGNyZWF0ZUltYWdlKHMsdCkpfXJldHVybiBhfXN0YXRpYyBhc3luYyBzYXZlTmV3QW5ub3RhdGlvbnMoZSx0LG4sYSxzLHIpe2xldCBpO2NvbnN0IG89W10se2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmx9PWUub3B0aW9ucztmb3IoY29uc3QgZiBvZiBhKWlmKCFmLmRlbGV0ZWQpc3dpdGNoKGYuYW5ub3RhdGlvblR5cGUpe2Nhc2UgZDppZighaSl7Y29uc3QgZT1uZXcgRGljdCh0KTtlLnNldElmTmFtZSgiQmFzZUZvbnQiLCJIZWx2ZXRpY2EiKTtlLnNldElmTmFtZSgiVHlwZSIsIkZvbnQiKTtlLnNldElmTmFtZSgiU3VidHlwZSIsIlR5cGUxIik7ZS5zZXRJZk5hbWUoIkVuY29kaW5nIiwiV2luQW5zaUVuY29kaW5nIik7aT10LmdldE5ld1RlbXBvcmFyeVJlZigpO3IucHV0KGkse2RhdGE6ZX0pfW8ucHVzaChGcmVlVGV4dEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbih0LGYscix7ZXZhbHVhdG9yOmUsdGFzazpuLGJhc2VGb250UmVmOml9KSk7YnJlYWs7Y2FzZSBnOmYucXVhZFBvaW50cz9vLnB1c2goSGlnaGxpZ2h0QW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKHQsZixyKSk6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbih0LGYscikpO2JyZWFrO2Nhc2UgdzpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKHQsZixyKSk7YnJlYWs7Y2FzZSBiOmNvbnN0IGE9bD9hd2FpdChzPy5nZXQoZi5iaXRtYXBJZCkpOm51bGw7aWYoYT8uaW1hZ2VTdHJlYW0pe2NvbnN0e2ltYWdlU3RyZWFtOmUsc21hc2tTdHJlYW06bn09YTtpZihuKXtjb25zdCBhPXQuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7ci5wdXQoYSx7ZGF0YTpufSk7ZS5kaWN0LnNldCgiU01hc2siLGEpfWNvbnN0IHM9YS5pbWFnZVJlZj10LmdldE5ld1RlbXBvcmFyeVJlZigpO3IucHV0KHMse2RhdGE6ZX0pO2EuaW1hZ2VTdHJlYW09bnVsbDthLmltYWdlUmVuZGVyU3RyZWFtPW51bGw7YS5zbWFza1N0cmVhbT1udWxsO2Euc21hc2tSZW5kZXJTdHJlYW09bnVsbH1vLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24odCxmLHIse2ltYWdlOmF9KSk7YnJlYWs7Y2FzZSBqOm8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbih0LGYscix7fSkpfXJldHVybnthbm5vdGF0aW9uczooYXdhaXQgUHJvbWlzZS5hbGwobykpLmZsYXQoKX19c3RhdGljIGFzeW5jIHByaW50TmV3QW5ub3RhdGlvbnMoZSx0LG4sYSxzKXtpZighYSlyZXR1cm4gbnVsbDtjb25zdHtvcHRpb25zOnIseHJlZjppfT10LG89W107Zm9yKGNvbnN0IGwgb2YgYSlpZighbC5kZWxldGVkKXN3aXRjaChsLmFubm90YXRpb25UeXBlKXtjYXNlIGQ6by5wdXNoKEZyZWVUZXh0QW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxpLGwse2V2YWx1YXRvcjp0LHRhc2s6bixldmFsdWF0b3JPcHRpb25zOnJ9KSk7YnJlYWs7Y2FzZSBnOmwucXVhZFBvaW50cz9vLnB1c2goSGlnaGxpZ2h0QW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxpLGwse2V2YWx1YXRvck9wdGlvbnM6cn0pKTpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxpLGwse2V2YWx1YXRvck9wdGlvbnM6cn0pKTticmVhaztjYXNlIHc6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsaSxsLHtldmFsdWF0b3JPcHRpb25zOnJ9KSk7YnJlYWs7Y2FzZSBiOmNvbnN0IGE9ci5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD9hd2FpdChzPy5nZXQobC5iaXRtYXBJZCkpOm51bGw7aWYoYT8uaW1hZ2VTdHJlYW0pe2NvbnN0e2ltYWdlU3RyZWFtOmUsaW1hZ2VSZW5kZXJTdHJlYW06dCxzbWFza1N0cmVhbTpuLHNtYXNrUmVuZGVyU3RyZWFtOnN9PWEscj10fHxuZXcgSnBlZ1N0cmVhbShlLGUubGVuZ3RoKTsobnx8cykmJnIuZGljdC5zZXQoIlNNYXNrIixzfHxuKTthLmltYWdlUmVmPXI7YS5pbWFnZVN0cmVhbT1udWxsO2EuaW1hZ2VSZW5kZXJTdHJlYW09bnVsbDthLnNtYXNrU3RyZWFtPW51bGw7YS5zbWFza1JlbmRlclN0cmVhbT1udWxsfW8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsaSxsLHtpbWFnZTphLGV2YWx1YXRvck9wdGlvbnM6cn0pKTticmVhaztjYXNlIGo6by5wdXNoKFN0YW1wQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxpLGwse2V2YWx1YXRvck9wdGlvbnM6cn0pKX1yZXR1cm4gUHJvbWlzZS5hbGwobyl9fWZ1bmN0aW9uIGdldFJnYkNvbG9yKGUsdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMykpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0O2NvbnN0IG49dHx8bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMTpDb2xvclNwYWNlVXRpbHMuZ3JheS5nZXRSZ2JJdGVtKGUsMCxuLDApO3JldHVybiBuO2Nhc2UgMzpDb2xvclNwYWNlVXRpbHMucmdiLmdldFJnYkl0ZW0oZSwwLG4sMCk7cmV0dXJuIG47Y2FzZSA0OkNvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkl0ZW0oZSwwLG4sMCk7cmV0dXJuIG47ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gZ2V0UGRmQ29sb3JBcnJheShlLHQ9bnVsbCl7cmV0dXJuIGUmJkFycmF5LmZyb20oZSxlPT5lLzI1NSl8fHR9ZnVuY3Rpb24gZ2V0UXVhZFBvaW50cyhlLHQpe2NvbnN0IG49ZS5nZXRBcnJheSgiUXVhZFBvaW50cyIpO2lmKCFpc051bWJlckFycmF5KG4sbnVsbCl8fDA9PT1uLmxlbmd0aHx8bi5sZW5ndGglOD4wKXJldHVybiBudWxsO2NvbnN0IGE9bmV3IEZsb2F0MzJBcnJheShuLmxlbmd0aCk7Zm9yKGxldCBlPTAscz1uLmxlbmd0aDtlPHM7ZSs9OCl7Y29uc3RbcyxyLGksbyxsLGYsYyxoXT1uLnNsaWNlKGUsZSs4KSx1PU1hdGgubWluKHMsaSxsLGMpLG09TWF0aC5tYXgocyxpLGwsYykscD1NYXRoLm1pbihyLG8sZixoKSxkPU1hdGgubWF4KHIsbyxmLGgpO2lmKG51bGwhPT10JiYodTx0WzBdfHxtPnRbMl18fHA8dFsxXXx8ZD50WzNdKSlyZXR1cm4gbnVsbDthLnNldChbdSxkLG0sZCx1LHAsbSxwXSxlKX1yZXR1cm4gYX1mdW5jdGlvbiBnZXRUcmFuc2Zvcm1NYXRyaXgoZSx0LGEpe2NvbnN0IHM9bi5zbGljZSgpO1V0aWwuYXhpYWxBbGlnbmVkQm91bmRpbmdCb3godCxhLHMpO2NvbnN0W3IsaSxvLGxdPXM7aWYocj09PW98fGk9PT1sKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3QgZj0oZVsyXS1lWzBdKS8oby1yKSxjPShlWzNdLWVbMV0pLyhsLWkpO3JldHVybltmLDAsMCxjLGVbMF0tcipmLGVbMV0taSpjXX1jbGFzcyBBbm5vdGF0aW9ue2FwcGVhcmFuY2U9bnVsbDtfb2M9dm9pZCAwO2NvbnN0cnVjdG9yKGUpe2NvbnN0e2Fubm90YXRpb25HbG9iYWxzOnQsZGljdDpuLG9ycGhhbkZpZWxkczphLHJlZjpzLHN1YnR5cGU6cix4cmVmOml9PWUsbz1hPy5nZXQocyk7byYmbi5zZXQoIlBhcmVudCIsbyk7dGhpcy5zZXRUaXRsZShuLmdldCgiVCIpKTt0aGlzLnNldENvbnRlbnRzKG4uZ2V0KCJDb250ZW50cyIpKTt0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUobi5nZXQoIk0iKSk7dGhpcy5zZXRGbGFncyhuLmdldCgiRiIpKTt0aGlzLnNldFJlY3RhbmdsZShuLmdldEFycmF5KCJSZWN0IikpO3RoaXMuc2V0Q29sb3Iobi5nZXRBcnJheSgiQyIpKTt0aGlzLnNldEJvcmRlclN0eWxlKG4pO3RoaXMuc2V0QXBwZWFyYW5jZShuKTt0aGlzLiN2dChpLG4pO2NvbnN0IGw9bi5nZXQoIk1LIik7dGhpcy5zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKGwpO3RoaXMuc2V0Um90YXRpb24obCxuKTt0aGlzLnJlZj1lLnJlZiBpbnN0YW5jZW9mIFJlZj9lLnJlZjpudWxsO3RoaXMuX3N0cmVhbXM9W107dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKTtjb25zdCBmPSEhKHRoaXMuZmxhZ3MmVSksYz0hISh0aGlzLmZsYWdzJlcpO3RoaXMuZGF0YT17YW5ub3RhdGlvblR5cGU6UltyPy50b1VwcGVyQ2FzZSgpXSxhbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUsb2M6dGhpcy5fb2MscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOnIsaGFzT3duQ2FudmFzOiExLG5vUm90YXRlOiEhKHRoaXMuZmxhZ3Mmeiksbm9IVE1MOmYmJmMsaXNFZGl0YWJsZTohMSxzdHJ1Y3RQYXJlbnQ6LTF9O2lmKHQuc3RydWN0VHJlZVJvb3Qpe2xldCBhPW4uZ2V0KCJTdHJ1Y3RQYXJlbnQiKTt0aGlzLmRhdGEuc3RydWN0UGFyZW50PWE9TnVtYmVyLmlzSW50ZWdlcihhKSYmYT49MD9hOi0xO3Quc3RydWN0VHJlZVJvb3QuYWRkQW5ub3RhdGlvbklkVG9QYWdlKGUucGFnZVJlZixhKX1pZihlLmNvbGxlY3RGaWVsZHMpe2NvbnN0IHQ9bi5nZXQoIktpZHMiKTtpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBlPVtdO2Zvcihjb25zdCBuIG9mIHQpbiBpbnN0YW5jZW9mIFJlZiYmZS5wdXNoKG4udG9TdHJpbmcoKSk7MCE9PWUubGVuZ3RoJiYodGhpcy5kYXRhLmtpZElkcz1lKX10aGlzLmRhdGEuYWN0aW9ucz1jb2xsZWN0QWN0aW9ucyhpLG4sb2UpO3RoaXMuZGF0YS5maWVsZE5hbWU9dGhpcy5fY29uc3RydWN0RmllbGROYW1lKG4pO3RoaXMuZGF0YS5wYWdlSW5kZXg9ZS5wYWdlSW5kZXh9Y29uc3QgaD1uLmdldCgiSVQiKTtoIGluc3RhbmNlb2YgTmFtZSYmKHRoaXMuZGF0YS5pdD1oLm5hbWUpO3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWUuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PW51bGw7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPSExfV9nZXRPcGVyYXRvckxpc3ROb0FwcGVhcmFuY2UoKXtyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX1faGFzRmxhZyhlLHQpe3JldHVybiEhKGUmdCl9X2J1aWxkRmxhZ3MoZSx0KXtsZXR7ZmxhZ3M6bn09dGhpcztpZih2b2lkIDA9PT1lKXtpZih2b2lkIDA9PT10KXJldHVybjtyZXR1cm4gdD9uJn5fOm4mfkV8X31pZihlKXtufD1fO3JldHVybiB0P24mfkx8RTpuJn5FfEx9biY9fihFfEwpO3JldHVybiB0P24mfl86bnxffV9pc1ZpZXdhYmxlKGUpe3JldHVybiF0aGlzLl9oYXNGbGFnKGUsTikmJiF0aGlzLl9oYXNGbGFnKGUsTCl9X2lzUHJpbnRhYmxlKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKGUsXykmJiF0aGlzLl9oYXNGbGFnKGUsRSkmJiF0aGlzLl9oYXNGbGFnKGUsTil9bXVzdEJlVmlld2VkKGUsdCl7Y29uc3Qgbj1lPy5nZXQodGhpcy5kYXRhLmlkKT8ubm9WaWV3O3JldHVybiB2b2lkIDAhPT1uPyFuOnRoaXMudmlld2FibGUmJiF0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsRSl9bXVzdEJlUHJpbnRlZChlKXtjb25zdCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5ub1ByaW50O3JldHVybiB2b2lkIDAhPT10PyF0OnRoaXMucHJpbnRhYmxlfW11c3RCZVZpZXdlZFdoZW5FZGl0aW5nKGUsdD1udWxsKXtyZXR1cm4gZT8hdGhpcy5kYXRhLmlzRWRpdGFibGU6IXQ/Lmhhcyh0aGlzLmRhdGEuaWQpfWdldCB2aWV3YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwPT09dGhpcy5mbGFnc3x8dGhpcy5faXNWaWV3YWJsZSh0aGlzLmZsYWdzKSl9Z2V0IHByaW50YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwIT09dGhpcy5mbGFncyYmdGhpcy5faXNQcmludGFibGUodGhpcy5mbGFncykpfV9wYXJzZVN0cmluZ0hlbHBlcihlKXtjb25zdCB0PSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKToiIjtyZXR1cm57c3RyOnQsZGlyOnQmJiJydGwiPT09YmlkaSh0KS5kaXI/InJ0bCI6Imx0ciJ9fXNldERlZmF1bHRBcHBlYXJhbmNlKGUpe2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczpufT1lLGE9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiREEifSl8fG4uYWNyb0Zvcm0uZ2V0KCJEQSIpO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSJzdHJpbmciPT10eXBlb2YgYT9hOiIiO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSl9c2V0VGl0bGUoZSl7dGhpcy5fdGl0bGU9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0Q29udGVudHMoZSl7dGhpcy5fY29udGVudHM9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0TW9kaWZpY2F0aW9uRGF0ZShlKXt0aGlzLm1vZGlmaWNhdGlvbkRhdGU9InN0cmluZyI9PXR5cGVvZiBlP2U6bnVsbH1zZXRGbGFncyhlKXt0aGlzLmZsYWdzPU51bWJlci5pc0ludGVnZXIoZSkmJmU+MD9lOjA7dGhpcy5mbGFncyZOJiYiQW5ub3RhdGlvbiIhPT10aGlzLmNvbnN0cnVjdG9yLm5hbWUmJih0aGlzLmZsYWdzXj1OKX1oYXNGbGFnKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsZSl9c2V0UmVjdGFuZ2xlKGUpe3RoaXMucmVjdGFuZ2xlPWxvb2t1cE5vcm1hbFJlY3QoZSxbMCwwLDAsMF0pfXNldENvbG9yKGUpe3RoaXMuY29sb3I9Z2V0UmdiQ29sb3IoZSl9c2V0TGluZUVuZGluZ3MoZSl7dGhpcy5saW5lRW5kaW5ncz1bIk5vbmUiLCJOb25lIl07aWYoQXJyYXkuaXNBcnJheShlKSYmMj09PWUubGVuZ3RoKWZvcihsZXQgdD0wO3Q8Mjt0Kyspe2NvbnN0IG49ZVt0XTtpZihuIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2gobi5uYW1lKXtjYXNlIk5vbmUiOmNvbnRpbnVlO2Nhc2UiU3F1YXJlIjpjYXNlIkNpcmNsZSI6Y2FzZSJEaWFtb25kIjpjYXNlIk9wZW5BcnJvdyI6Y2FzZSJDbG9zZWRBcnJvdyI6Y2FzZSJCdXR0IjpjYXNlIlJPcGVuQXJyb3ciOmNhc2UiUkNsb3NlZEFycm93IjpjYXNlIlNsYXNoIjp0aGlzLmxpbmVFbmRpbmdzW3RdPW4ubmFtZTtjb250aW51ZX13YXJuKGBJZ25vcmluZyBpbnZhbGlkIGxpbmVFbmRpbmc6ICR7bn1gKX19c2V0Um90YXRpb24oZSx0KXt0aGlzLnJvdGF0aW9uPTA7bGV0IG49ZSBpbnN0YW5jZW9mIERpY3Q/ZS5nZXQoIlIiKXx8MDp0LmdldCgiUm90YXRlIil8fDA7aWYoTnVtYmVyLmlzSW50ZWdlcihuKSYmMCE9PW4pe24lPTM2MDtuPDAmJihuKz0zNjApO24lOTA9PTAmJih0aGlzLnJvdGF0aW9uPW4pfX1zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKGUpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KXt0aGlzLmJvcmRlckNvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJDIiksbnVsbCk7dGhpcy5iYWNrZ3JvdW5kQ29sb3I9Z2V0UmdiQ29sb3IoZS5nZXRBcnJheSgiQkciKSxudWxsKX1lbHNlIHRoaXMuYm9yZGVyQ29sb3I9dGhpcy5iYWNrZ3JvdW5kQ29sb3I9bnVsbH1zZXRCb3JkZXJTdHlsZShlKXt0aGlzLmJvcmRlclN0eWxlPW5ldyBBbm5vdGF0aW9uQm9yZGVyU3R5bGU7aWYoZSBpbnN0YW5jZW9mIERpY3QpaWYoZS5oYXMoIkJTIikpe2NvbnN0IHQ9ZS5nZXQoIkJTIik7aWYodCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dC5nZXQoIlR5cGUiKTtpZighZXx8aXNOYW1lKGUsIkJvcmRlciIpKXt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHQuZ2V0KCJXIiksdGhpcy5yZWN0YW5nbGUpO3RoaXMuYm9yZGVyU3R5bGUuc2V0U3R5bGUodC5nZXQoIlMiKSk7dGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodC5nZXRBcnJheSgiRCIpKX19fWVsc2UgaWYoZS5oYXMoIkJvcmRlciIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkJvcmRlciIpO2lmKEFycmF5LmlzQXJyYXkodCkpaWYodC5sZW5ndGg+PTMpe3RoaXMuYm9yZGVyU3R5bGUuc2V0SG9yaXpvbnRhbENvcm5lclJhZGl1cyh0WzBdKTt0aGlzLmJvcmRlclN0eWxlLnNldFZlcnRpY2FsQ29ybmVyUmFkaXVzKHRbMV0pO3RoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgodFsyXSx0aGlzLnJlY3RhbmdsZSk7ND09PXQubGVuZ3RoJiZ0aGlzLmJvcmRlclN0eWxlLnNldERhc2hBcnJheSh0WzNdLCEwKX1lbHNlIDA9PT10Lmxlbmd0aCYmdGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCgwKX1lbHNlIHRoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgoMCl9c2V0QXBwZWFyYW5jZShlKXtjb25zdCB0PWUuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBuPXQuZ2V0KCJOIik7aWYobiBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe3RoaXMuYXBwZWFyYW5jZT1uO3JldHVybn1pZighKG4gaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3QgYT1lLmdldCgiQVMiKTtpZighKGEgaW5zdGFuY2VvZiBOYW1lKSlyZXR1cm47Y29uc3Qgcz1uLmdldChhLm5hbWUpO3MgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYodGhpcy5hcHBlYXJhbmNlPXMpfSN2dChlLHQpe2lmKHQuaGFzKCJPQyIpKXRyeXt0aGlzLl9vYz1wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhlLHQuZ2V0KCJPQyIpLG51bGwpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYCNzZXRPcHRpb25hbENvbnRlbnQ6ICR7ZX1gKX19YXN5bmMgbG9hZFJlc291cmNlcyhlLHQpe2NvbnN0IG49YXdhaXQgdC5kaWN0LmdldEFzeW5jKCJSZXNvdXJjZXMiKTtuJiZhd2FpdCBPYmplY3RMb2FkZXIubG9hZChuLGUsbi54cmVmKTtyZXR1cm4gbn1nZXQgX293bkNhbnZhc1JlcXVpcmVzRm9ybXMoKXtyZXR1cm4hMX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LG4sYSl7Y29uc3R7aGFzT3duQ2FudmFzOnMsaWQ6cixyZWN0Oml9PXRoaXMuZGF0YTtsZXQgbD10aGlzLmFwcGVhcmFuY2U7Y29uc3QgZj0hIShzJiZuJm8mJighdGhpcy5fb3duQ2FudmFzUmVxdWlyZXNGb3Jtc3x8biZjKSk7aWYoZiYmKDA9PT10aGlzLndpZHRofHwwPT09dGhpcy5oZWlnaHQpKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSExO3JldHVybiB0aGlzLl9nZXRPcGVyYXRvckxpc3ROb0FwcGVhcmFuY2UoKX1pZighbCl7aWYoIWYpcmV0dXJuIHRoaXMuX2dldE9wZXJhdG9yTGlzdE5vQXBwZWFyYW5jZSgpO2w9bmV3IFN0cmluZ1N0cmVhbSgiIixuZXcgRGljdCl9Y29uc3QgaD1sLmRpY3QsdT1hd2FpdCB0aGlzLmxvYWRSZXNvdXJjZXMoYm4sbCksbT1sb29rdXBSZWN0KGguZ2V0QXJyYXkoIkJCb3giKSxbMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHRdKSxwPWxvb2t1cE1hdHJpeChoLmdldEFycmF5KCJNYXRyaXgiKSxnbiksZD1nZXRUcmFuc2Zvcm1NYXRyaXgoaSxtLHApLGc9bmV3IE9wZXJhdG9yTGlzdCxiPXRoaXMuX29jO3ZvaWQgMCE9PWImJmcuYWRkT3AoQ3QsWyJPQyIsYl0pO2cuYWRkT3AoRHQsW3IsaSxkLHAsZl0pO2F3YWl0IGUuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06bCx0YXNrOnQscmVzb3VyY2VzOnUsb3BlcmF0b3JMaXN0OmcsZmFsbGJhY2tGb250RGljdDp0aGlzLl9mYWxsYmFja0ZvbnREaWN0fSk7Zy5hZGRPcChNdCxbXSk7dm9pZCAwIT09YiYmZy5hZGRPcChJdCxbXSk7dGhpcy5yZXNldCgpO3JldHVybntvcExpc3Q6ZyxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6Zn19YXN5bmMgc2F2ZShlLHQsbixhKXtyZXR1cm4gbnVsbH1nZXQgb3ZlcmxheXNUZXh0Q29udGVudCgpe3JldHVybiExfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiExfWFzeW5jIGV4dHJhY3RUZXh0Q29udGVudChlLHQsbil7aWYoIXRoaXMuYXBwZWFyYW5jZSlyZXR1cm47Y29uc3QgYT1hd2FpdCB0aGlzLmxvYWRSZXNvdXJjZXMod24sdGhpcy5hcHBlYXJhbmNlKSxzPVtdLHI9W107bGV0IGk9MS8wLG89MS8wLGw9bnVsbDtjb25zdCBmPXtkZXNpcmVkU2l6ZTpNYXRoLkluZmluaXR5LHJlYWR5OiEwLGVucXVldWUoZSx0KXtmb3IoY29uc3QgdCBvZiBlLml0ZW1zKWlmKHZvaWQgMCE9PXQuc3RyKXtpPU1hdGgubWluKGksdC50cmFuc2Zvcm1bNF0pO289TWF0aC5taW4obyx0LnRyYW5zZm9ybVs1XSk7ci5wdXNoKHQuc3RyKTtpZih0Lmhhc0VPTCl7cy5wdXNoKHIuam9pbigiIikudHJpbUVuZCgpKTtyLmxlbmd0aD0wfX19fTthd2FpdCBlLmdldFRleHRDb250ZW50KHtzdHJlYW06dGhpcy5hcHBlYXJhbmNlLHRhc2s6dCxyZXNvdXJjZXM6YSxpbmNsdWRlTWFya2VkQ29udGVudDohMCxrZWVwV2hpdGVTcGFjZTohMCxzaW5rOmYsdmlld0JveDpufSk7dGhpcy5yZXNldCgpO2khPT0xLzAmJihsPVtpLG9dKTtyLmxlbmd0aCYmcy5wdXNoKHIuam9pbigiIikudHJpbUVuZCgpKTtpZihzLmxlbmd0aD4xfHxzWzBdKXtjb25zdCBlPXRoaXMuYXBwZWFyYW5jZS5kaWN0LHQ9bG9va3VwUmVjdChlLmdldEFycmF5KCJCQm94IiksbnVsbCksbj1sb29rdXBNYXRyaXgoZS5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7dGhpcy5kYXRhLnRleHRQb3NpdGlvbj10aGlzLl90cmFuc2Zvcm1Qb2ludChsLHQsbik7dGhpcy5kYXRhLnRleHRDb250ZW50PXN9fV90cmFuc2Zvcm1Qb2ludChlLHQsbil7Y29uc3R7cmVjdDphfT10aGlzLmRhdGE7dHx8PVswLDAsMSwxXTtufHw9WzEsMCwwLDEsMCwwXTtjb25zdCBzPWdldFRyYW5zZm9ybU1hdHJpeChhLHQsbik7c1s0XS09YVswXTtzWzVdLT1hWzFdO2NvbnN0IHI9ZS5zbGljZSgpO1V0aWwuYXBwbHlUcmFuc2Zvcm0ocixzKTtVdGlsLmFwcGx5VHJhbnNmb3JtKHIsbik7cmV0dXJuIHJ9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gdGhpcy5kYXRhLmtpZElkcz97aWQ6dGhpcy5kYXRhLmlkLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcix0eXBlOiIiLGtpZElkczp0aGlzLmRhdGEua2lkSWRzLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxyb3RhdGlvbjp0aGlzLnJvdGF0aW9ufTpudWxsfXJlc2V0KCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fc3RyZWFtcyllLnJlc2V0KCl9X2NvbnN0cnVjdEZpZWxkTmFtZShlKXtpZighZS5oYXMoIlQiKSYmIWUuaGFzKCJQYXJlbnQiKSl7d2FybigiVW5rbm93biBmaWVsZCBuYW1lLCBmYWxsaW5nIGJhY2sgdG8gZW1wdHkgZmllbGQgbmFtZS4iKTtyZXR1cm4iIn1pZighZS5oYXMoIlBhcmVudCIpKXJldHVybiBzdHJpbmdUb1BERlN0cmluZyhlLmdldCgiVCIpKTtjb25zdCB0PVtdO2UuaGFzKCJUIikmJnQudW5zaGlmdChzdHJpbmdUb1BERlN0cmluZyhlLmdldCgiVCIpKSk7bGV0IG49ZTtjb25zdCBhPW5ldyBSZWZTZXQ7ZS5vYmpJZCYmYS5wdXQoZS5vYmpJZCk7Zm9yKDtuLmhhcygiUGFyZW50Iik7KXtuPW4uZ2V0KCJQYXJlbnQiKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KXx8bi5vYmpJZCYmYS5oYXMobi5vYmpJZCkpYnJlYWs7bi5vYmpJZCYmYS5wdXQobi5vYmpJZCk7bi5oYXMoIlQiKSYmdC51bnNoaWZ0KHN0cmluZ1RvUERGU3RyaW5nKG4uZ2V0KCJUIikpKX1yZXR1cm4gdC5qb2luKCIuIil9X2dldEF0dGFjaG1lbnRJZChlLHQsbixhPSExKXtpZihlIGluc3RhbmNlb2YgRGljdCl7dCBpbnN0YW5jZW9mIFJlZnx8KHQ9RmlsZVNwZWMucGlja1BsYXRmb3JtSXRlbShlLmdldCgiRUYiKSwhMCkpO3JldHVybiB0IGluc3RhbmNlb2YgUmVmP24uY2F0YWxvZy5nZXRBdHRhY2htZW50SWRGb3JBbm5vdGF0aW9uKHQsYSk6dm9pZCAwfX1nZXQgd2lkdGgoKXtyZXR1cm4gdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF19Z2V0IGhlaWdodCgpe3JldHVybiB0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXX19Y2xhc3MgQW5ub3RhdGlvbkJvcmRlclN0eWxle3dpZHRoPTE7cmF3V2lkdGg9MTtzdHlsZT1uZTtkYXNoQXJyYXk9WzNdO2hvcml6b250YWxDb3JuZXJSYWRpdXM9MDt2ZXJ0aWNhbENvcm5lclJhZGl1cz0wO3NldFdpZHRoKGUsdD1bMCwwLDAsMF0pe2lmKGUgaW5zdGFuY2VvZiBOYW1lKXRoaXMud2lkdGg9MDtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoZT4wKXt0aGlzLnJhd1dpZHRoPWU7Y29uc3Qgbj0odFsyXS10WzBdKS8yLGE9KHRbM10tdFsxXSkvMjtpZihuPjAmJmE+MCYmKGU+bnx8ZT5hKSl7d2FybihgQW5ub3RhdGlvbkJvcmRlclN0eWxlLnNldFdpZHRoIC0gaWdub3Jpbmcgd2lkdGg6ICR7ZX1gKTtlPTF9fXRoaXMud2lkdGg9ZX19c2V0U3R5bGUoZSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTIjp0aGlzLnN0eWxlPW5lO2JyZWFrO2Nhc2UiRCI6dGhpcy5zdHlsZT1hZTticmVhaztjYXNlIkIiOnRoaXMuc3R5bGU9c2U7YnJlYWs7Y2FzZSJJIjp0aGlzLnN0eWxlPXJlO2JyZWFrO2Nhc2UiVSI6dGhpcy5zdHlsZT1pZX19c2V0RGFzaEFycmF5KGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7bGV0IG49ITAsYT0hMDtmb3IoY29uc3QgdCBvZiBlKXtpZighKCt0Pj0wKSl7bj0hMTticmVha310PjAmJihhPSExKX1pZigwPT09ZS5sZW5ndGh8fG4mJiFhKXt0aGlzLmRhc2hBcnJheT1lO3QmJnRoaXMuc2V0U3R5bGUoTmFtZS5nZXQoIkQiKSl9ZWxzZSB0aGlzLndpZHRoPTB9ZWxzZSBlJiYodGhpcy53aWR0aD0wKX1zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9ZSl9c2V0VmVydGljYWxDb3JuZXJSYWRpdXMoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9ZSl9fWNsYXNzIE1hcmt1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTtpZih0LmhhcygiSVJUIikpe2NvbnN0IGU9dC5nZXRSYXcoIklSVCIpO3RoaXMuZGF0YS5pblJlcGx5VG89ZSBpbnN0YW5jZW9mIFJlZj9lLnRvU3RyaW5nKCk6bnVsbDtjb25zdCBuPXQuZ2V0KCJSVCIpO3RoaXMuZGF0YS5yZXBseVR5cGU9biBpbnN0YW5jZW9mIE5hbWU/bi5uYW1lOkh9bGV0IG49bnVsbDtpZih0aGlzLmRhdGEucmVwbHlUeXBlPT09Tyl7Y29uc3QgZT10LmdldCgiSVJUIik7dGhpcy5zZXRUaXRsZShlLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhlLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO2lmKGUuaGFzKCJDcmVhdGlvbkRhdGUiKSl7dGhpcy5zZXRDcmVhdGlvbkRhdGUoZS5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT1udWxsO2lmKGUuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZShlLmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO249ZS5nZXRSYXcoIlBvcHVwIik7aWYoZS5oYXMoIkMiKSl7dGhpcy5zZXRDb2xvcihlLmdldEFycmF5KCJDIikpO3RoaXMuZGF0YS5jb2xvcj10aGlzLmNvbG9yfWVsc2UgdGhpcy5kYXRhLmNvbG9yPW51bGx9ZWxzZXt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDcmVhdGlvbkRhdGUodC5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlO249dC5nZXRSYXcoIlBvcHVwIik7dC5oYXMoIkMiKXx8KHRoaXMuZGF0YS5jb2xvcj1udWxsKX10aGlzLmRhdGEucG9wdXBSZWY9biBpbnN0YW5jZW9mIFJlZj9uLnRvU3RyaW5nKCk6bnVsbDt0LmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9c2V0Q3JlYXRpb25EYXRlKGUpe3RoaXMuY3JlYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9X3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmUsZXh0cmE6bixzdHJva2VDb2xvcjphLGZpbGxDb2xvcjpzLGJsZW5kTW9kZTpyLHN0cm9rZUFscGhhOmksZmlsbEFscGhhOm8scG9pbnRzQ2FsbGJhY2s6bH0pe2NvbnN0IGY9dGhpcy5kYXRhLnJlY3Q9dC5zbGljZSgpLGM9WyJxIl07biYmYy5wdXNoKG4pO2EmJmMucHVzaChgJHthWzBdfSAke2FbMV19ICR7YVsyXX0gUkdgKTtzJiZjLnB1c2goYCR7c1swXX0gJHtzWzFdfSAke3NbMl19IHJnYCk7Y29uc3QgaD10aGlzLmRhdGEucXVhZFBvaW50c3x8RmxvYXQzMkFycmF5LmZyb20oW3RoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzFdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzFdXSk7Zm9yKGxldCBlPTAsdD1oLmxlbmd0aDtlPHQ7ZSs9OCl7Y29uc3QgdD1sKGMsaC5zdWJhcnJheShlLGUrOCkpO1V0aWwucmVjdEJvdW5kaW5nQm94KC4uLnQsZil9Yy5wdXNoKCJRIik7Y29uc3QgdT1uZXcgRGljdChlKSxtPW5ldyBEaWN0KGUpO20uc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2NvbnN0IHA9bmV3IFN0cmluZ1N0cmVhbShjLmpvaW4oIiAiKSxtKTt1LnNldCgiRm0wIixwKTtjb25zdCBkPW5ldyBEaWN0KGUpO3ImJmQuc2V0SWZOYW1lKCJCTSIscik7ZC5zZXRJZk51bWJlcigiQ0EiLGkpO2Quc2V0SWZOdW1iZXIoImNhIixvKTtjb25zdCBnPW5ldyBEaWN0KGUpO2cuc2V0KCJHUzAiLGQpO2NvbnN0IGI9bmV3IERpY3QoZSk7Yi5zZXQoIkV4dEdTdGF0ZSIsZyk7Yi5zZXQoIlhPYmplY3QiLHUpO2NvbnN0IHc9bmV3IERpY3QoZSk7dy5zZXQoIlJlc291cmNlcyIsYik7dy5zZXQoIkJCb3giLGYpO3RoaXMuYXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKCIvR1MwIGdzIC9GbTAgRG8iLHcpO3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UscCl9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0Fubm90YXRpb24oZSx0LG4sYSl7Y29uc3Qgcz10LnJlZnx8PWUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCkscj1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0odCxlLGEpO2xldCBpO2lmKHIpe2NvbnN0IGE9ZS5nZXROZXdUZW1wb3JhcnlSZWYoKTtpPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwUmVmOmF9KTtuLnB1dChhLHtkYXRhOnJ9KX1lbHNlIGk9dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7fSk7TnVtYmVyLmlzSW50ZWdlcih0LnBhcmVudFRyZWVJZCkmJmkuc2V0KCJTdHJ1Y3RQYXJlbnQiLHQucGFyZW50VHJlZUlkKTtuLnB1dChzLHtkYXRhOml9KTtjb25zdCBvPXtyZWY6c30se3BvcHVwOmx9PXQ7aWYobCl7aWYobC5kZWxldGVkKXtpLmRlbGV0ZSgiUG9wdXAiKTtpLmRlbGV0ZSgiQ29udGVudHMiKTtpLmRlbGV0ZSgiUkMiKTtyZXR1cm4gb31jb25zdCB0PWwucmVmfHw9ZS5nZXROZXdUZW1wb3JhcnlSZWYoKTtsLnBhcmVudD1zO2NvbnN0IGE9UG9wdXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0RpY3QobCxlKTtuLnB1dCh0LHtkYXRhOmF9KTtpLnNldElmRGVmaW5lZCgiQ29udGVudHMiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUobC5jb250ZW50cykpO2kuc2V0KCJQb3B1cCIsdCk7cmV0dXJuW28se3JlZjp0fV19cmV0dXJuIG99c3RhdGljIGFzeW5jIGNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLHQsbixhKXtjb25zdCBzPWF3YWl0IHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShuLHQsYSkscj10aGlzLmNyZWF0ZU5ld0RpY3Qobix0LHM/e2FwOnN9Ont9KSxpPW5ldyB0aGlzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcih7ZGljdDpyLHhyZWY6dCxhbm5vdGF0aW9uR2xvYmFsczplLGV2YWx1YXRvck9wdGlvbnM6YS5ldmFsdWF0b3JPcHRpb25zfSk7bi5yZWYmJihpLnJlZj1pLnJlZlRvUmVwbGFjZT1uLnJlZik7cmV0dXJuIGl9fWNsYXNzIFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOm4sYW5ub3RhdGlvbkdsb2JhbHM6YX09ZSxzPXRoaXMuZGF0YTt0aGlzLl9uZWVkQXBwZWFyYW5jZXM9ZS5uZWVkQXBwZWFyYW5jZXM7dm9pZCAwPT09cy5maWVsZE5hbWUmJihzLmZpZWxkTmFtZT10aGlzLl9jb25zdHJ1Y3RGaWVsZE5hbWUodCkpO3ZvaWQgMD09PXMuYWN0aW9ucyYmKHMuYWN0aW9ucz1jb2xsZWN0QWN0aW9ucyhuLHQsb2UpKTtsZXQgcj1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJWIixnZXRBcnJheTohMH0pO3MuZmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUocik7Y29uc3QgaT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJEViIsZ2V0QXJyYXk6ITB9KTtzLmRlZmF1bHRGaWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShpKTtpZih2b2lkIDA9PT1yJiZhLnhmYURhdGFzZXRzKXtjb25zdCBlPXRoaXMuX3RpdGxlLnN0cjtpZihlKXt0aGlzLl9oYXNWYWx1ZUZyb21YRkE9ITA7cy5maWVsZFZhbHVlPXI9YS54ZmFEYXRhc2V0cy5nZXRWYWx1ZShlKX19dm9pZCAwPT09ciYmbnVsbCE9PXMuZGVmYXVsdEZpZWxkVmFsdWUmJihzLmZpZWxkVmFsdWU9cy5kZWZhdWx0RmllbGRWYWx1ZSk7cy5hbHRlcm5hdGl2ZVRleHQ9c3RyaW5nVG9QREZTdHJpbmcodC5nZXQoIlRVIil8fCIiKTt0aGlzLnNldERlZmF1bHRBcHBlYXJhbmNlKGUpO3MuaGFzQXBwZWFyYW5jZXx8PXRoaXMuX25lZWRBcHBlYXJhbmNlcyYmdm9pZCAwIT09cy5maWVsZFZhbHVlJiZudWxsIT09cy5maWVsZFZhbHVlO2NvbnN0IG89Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRlQifSk7cy5maWVsZFR5cGU9byBpbnN0YW5jZW9mIE5hbWU/by5uYW1lOm51bGw7Y29uc3QgbD1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJEUiJ9KSxmPWEuYWNyb0Zvcm0uZ2V0KCJEUiIpLGM9dGhpcy5hcHBlYXJhbmNlPy5kaWN0LmdldCgiUmVzb3VyY2VzIik7dGhpcy5fZmllbGRSZXNvdXJjZXM9e2xvY2FsUmVzb3VyY2VzOmwsYWNyb0Zvcm1SZXNvdXJjZXM6ZixhcHBlYXJhbmNlUmVzb3VyY2VzOmMsbWVyZ2VkUmVzb3VyY2VzOkRpY3QubWVyZ2Uoe3hyZWY6bixkaWN0QXJyYXk6W2wsYyxmXSxtZXJnZVN1YkRpY3RzOiEwfSl9O3MuZmllbGRGbGFncz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJGZiJ9KTsoIU51bWJlci5pc0ludGVnZXIocy5maWVsZEZsYWdzKXx8cy5maWVsZEZsYWdzPDApJiYocy5maWVsZEZsYWdzPTApO3MucGFzc3dvcmQ9dGhpcy5oYXNGaWVsZEZsYWcoVik7cy5yZWFkT25seT10aGlzLmhhc0ZpZWxkRmxhZyhYKTtzLnJlcXVpcmVkPXRoaXMuaGFzRmllbGRGbGFnKEspO3MuaGlkZGVuPXRoaXMuX2hhc0ZsYWcocy5hbm5vdGF0aW9uRmxhZ3MsRSl8fHRoaXMuX2hhc0ZsYWcocy5hbm5vdGF0aW9uRmxhZ3MsTCl9X2RlY29kZUZvcm1WYWx1ZShlKXtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubWFwKGU9PnRoaXMuX2RlY29kZUZvcm1WYWx1ZShlKSkuZmlsdGVyKGU9Pm51bGwhPT1lKTtyZXR1cm4gdC5sZW5ndGg+MD90Om51bGx9cmV0dXJuIGUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZToic3RyaW5nIj09dHlwZW9mIGU/c3RyaW5nVG9QREZTdHJpbmcoZSk6bnVsbH1oYXNGaWVsZEZsYWcoZSl7cmV0dXJuISEodGhpcy5kYXRhLmZpZWxkRmxhZ3MmZSl9X2lzVmlld2FibGUoZSl7cmV0dXJuITB9bXVzdEJlVmlld2VkKGUsdCl7cmV0dXJuIHQ/dGhpcy52aWV3YWJsZTpzdXBlci5tdXN0QmVWaWV3ZWQoZSx0KSYmIXRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxMKX1nZXRSb3RhdGlvbk1hdHJpeChlKXtsZXQgdD1lPy5nZXQodGhpcy5kYXRhLmlkKT8ucm90YXRpb247dm9pZCAwPT09dCYmKHQ9dGhpcy5yb3RhdGlvbik7cmV0dXJuIDA9PT10P2duOmdldFJvdGF0aW9uTWF0cml4KHQsdGhpcy53aWR0aCx0aGlzLmhlaWdodCl9Z2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZighdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IG49MD09PXR8fDE4MD09PXQ/YDAgMCAke3RoaXMud2lkdGh9ICR7dGhpcy5oZWlnaHR9IHJlYDpgMCAwICR7dGhpcy5oZWlnaHR9ICR7dGhpcy53aWR0aH0gcmVgO2xldCBhPSIiO3RoaXMuYmFja2dyb3VuZENvbG9yJiYoYT1gJHtnZXRQZGZDb2xvcih0aGlzLmJhY2tncm91bmRDb2xvciwhMCl9ICR7bn0gZiBgKTtpZih0aGlzLmJvcmRlckNvbG9yKXthKz1gJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofHwxfSB3ICR7Z2V0UGRmQ29sb3IodGhpcy5ib3JkZXJDb2xvciwhMSl9ICR7bn0gUyBgfXJldHVybiBhfWFzeW5jIGdldE9wZXJhdG9yTGlzdChlLHQsbixhKXtpZihuJmMmJiEodGhpcyBpbnN0YW5jZW9mIFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24pJiYhdGhpcy5kYXRhLm5vSFRNTCYmIXRoaXMuZGF0YS5oYXNPd25DYW52YXMpe2NvbnN0IGU9dGhpcy5fZ2V0T3BlcmF0b3JMaXN0Tm9BcHBlYXJhbmNlKCk7ZS5zZXBhcmF0ZUZvcm09ITA7cmV0dXJuIGV9aWYoIXRoaXMuX2hhc1RleHQpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsbixhKTtjb25zdCBzPWF3YWl0IHRoaXMuX2dldEFwcGVhcmFuY2UoZSx0LG4sYSk7aWYodGhpcy5hcHBlYXJhbmNlJiZudWxsPT09cylyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxuLGEpO2NvbnN0IHI9bmV3IE9wZXJhdG9yTGlzdDtpZighdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fG51bGw9PT1zKXJldHVybntvcExpc3Q6cixzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2NvbnN0IGk9ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmbiZvKSxsPVswLDAsdGhpcy53aWR0aCx0aGlzLmhlaWdodF0sZj1nZXRUcmFuc2Zvcm1NYXRyaXgodGhpcy5kYXRhLnJlY3QsbCxbMSwwLDAsMSwwLDBdKSxoPXRoaXMuX29jO3ZvaWQgMCE9PWgmJnIuYWRkT3AoQ3QsWyJPQyIsaF0pO3IuYWRkT3AoRHQsW3RoaXMuZGF0YS5pZCx0aGlzLmRhdGEucmVjdCxmLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgoYSksaV0pO2NvbnN0IHU9bmV3IFN0cmluZ1N0cmVhbShzKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnUsdGFzazp0LHJlc291cmNlczp0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMsb3BlcmF0b3JMaXN0OnJ9KTtyLmFkZE9wKE10LFtdKTt2b2lkIDAhPT1oJiZyLmFkZE9wKEl0LFtdKTtyZXR1cm57b3BMaXN0OnIsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOml9fV9nZXRNS0RpY3QoZSl7Y29uc3QgdD1uZXcgRGljdChudWxsKTtlJiZ0LnNldCgiUiIsZSk7dC5zZXRJZkFycmF5KCJCQyIsZ2V0UGRmQ29sb3JBcnJheSh0aGlzLmJvcmRlckNvbG9yKSk7dC5zZXRJZkFycmF5KCJCRyIsZ2V0UGRmQ29sb3JBcnJheSh0aGlzLmJhY2tncm91bmRDb2xvcikpO3JldHVybiB0LnNpemU+MD90Om51bGx9YW1lbmRTYXZlZERpY3QoZSx0KXt9c2V0VmFsdWUoZSx0LG4sYSl7Y29uc3R7ZGljdDpzLHJlZjpyfT1mdW5jdGlvbiBnZXRQYXJlbnRUb1VwZGF0ZShlLHQsbil7Y29uc3QgYT1uZXcgUmVmU2V0LHM9ZSxyPXtkaWN0Om51bGwscmVmOm51bGx9O2Zvcig7ZSBpbnN0YW5jZW9mIERpY3QmJiFhLmhhcyh0KTspe2EucHV0KHQpO2lmKGUuaGFzKCJUIikpYnJlYWs7aWYoISgodD1lLmdldFJhdygiUGFyZW50IikpaW5zdGFuY2VvZiBSZWYpKXJldHVybiByO2U9bi5mZXRjaCh0KX1pZihlIGluc3RhbmNlb2YgRGljdCYmZSE9PXMpe3IuZGljdD1lO3IucmVmPXR9cmV0dXJuIHJ9KGUsdGhpcy5yZWYsbik7aWYocyl7aWYoIWEuaGFzKHIpKXtjb25zdCBlPXMuY2xvbmUoKTtlLnNldCgiViIsdCk7YS5wdXQocix7ZGF0YTplfSk7cmV0dXJuIGV9fWVsc2UgZS5zZXQoIlYiLHQpO3JldHVybiBudWxsfWFzeW5jIHNhdmUoZSx0LG4sYSl7Y29uc3Qgcz1uPy5nZXQodGhpcy5kYXRhLmlkKSxyPXRoaXMuX2J1aWxkRmxhZ3Mocz8ubm9WaWV3LHM/Lm5vUHJpbnQpO2xldCBpPXM/LnZhbHVlLG89cz8ucm90YXRpb247aWYoaT09PXRoaXMuZGF0YS5maWVsZFZhbHVlfHx2b2lkIDA9PT1pKXtpZighdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZ2b2lkIDA9PT1vJiZ2b2lkIDA9PT1yKXJldHVybjtpfHw9dGhpcy5kYXRhLmZpZWxkVmFsdWV9aWYodm9pZCAwPT09byYmIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmQXJyYXkuaXNBcnJheShpKSYmQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJmlzQXJyYXlFcXVhbChpLHRoaXMuZGF0YS5maWVsZFZhbHVlKSYmdm9pZCAwPT09cilyZXR1cm47dm9pZCAwPT09byYmKG89dGhpcy5yb3RhdGlvbik7bGV0IGw9bnVsbDtpZighdGhpcy5fbmVlZEFwcGVhcmFuY2VzKXtsPWF3YWl0IHRoaXMuX2dldEFwcGVhcmFuY2UoZSx0LGYsbik7aWYobnVsbD09PWwmJnZvaWQgMD09PXIpcmV0dXJufWxldCBjPSExO2lmKGw/Lm5lZWRBcHBlYXJhbmNlcyl7Yz0hMDtsPW51bGx9Y29uc3R7eHJlZjpofT1lLHU9aC5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKHUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3QgbT1uZXcgRGljdChoKTtmb3IoY29uc3RbZSx0XW9mIHUuZ2V0UmF3RW50cmllcygpKSJBUCIhPT1lJiZtLnNldChlLHQpO2lmKHZvaWQgMCE9PXIpe20uc2V0KCJGIixyKTtpZihudWxsPT09bCYmIWMpe2NvbnN0IGU9dS5nZXRSYXcoIkFQIik7ZSYmbS5zZXQoIkFQIixlKX19Y29uc3QgcD17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOml9LGQ9dGhpcy5zZXRWYWx1ZShtLEFycmF5LmlzQXJyYXkoaSk/aS5tYXAoc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRSk6c3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShpKSxoLGEpO3RoaXMuYW1lbmRTYXZlZERpY3QobixkfHxtKTtjb25zdCBnPXRoaXMuX2dldE1LRGljdChvKTtnJiZtLnNldCgiTUsiLGcpO2EucHV0KHRoaXMucmVmLHtkYXRhOm0seGZhOnAsbmVlZEFwcGVhcmFuY2VzOmN9KTtpZihudWxsIT09bCl7Y29uc3QgZT1oLmdldE5ld1RlbXBvcmFyeVJlZigpLHQ9bmV3IERpY3QoaCk7bS5zZXQoIkFQIix0KTt0LnNldCgiTiIsZSk7Y29uc3Qgcz10aGlzLl9nZXRTYXZlRmllbGRSZXNvdXJjZXMoaCkscj1uZXcgRGljdChoKTtyLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtyLnNldCgiUmVzb3VyY2VzIixzKTtjb25zdCBpPW8lMTgwPT0wP1swLDAsdGhpcy53aWR0aCx0aGlzLmhlaWdodF06WzAsMCx0aGlzLmhlaWdodCx0aGlzLndpZHRoXTtyLnNldCgiQkJveCIsaSk7Y29uc3QgZj1uZXcgU3RyaW5nU3RyZWFtKGwsciksYz10aGlzLmdldFJvdGF0aW9uTWF0cml4KG4pO2MhPT1nbiYmci5zZXQoIk1hdHJpeCIsYyk7YS5wdXQoZSx7ZGF0YTpmLHhmYTpudWxsLG5lZWRBcHBlYXJhbmNlczohMX0pfW0uc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsbixhKXtpZih0aGlzLmRhdGEucGFzc3dvcmQpcmV0dXJuIG51bGw7Y29uc3Qgcj1hPy5nZXQodGhpcy5kYXRhLmlkKTtsZXQgaSxvO2lmKHIpe2k9ci5mb3JtYXR0ZWRWYWx1ZXx8ci52YWx1ZTtvPXIucm90YXRpb259aWYodm9pZCAwPT09byYmdm9pZCAwPT09aSYmIXRoaXMuX25lZWRBcHBlYXJhbmNlcyYmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkF8fHRoaXMuYXBwZWFyYW5jZSkpcmV0dXJuIG51bGw7Y29uc3QgbD10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhhKTtpZih2b2lkIDA9PT1pKXtpPXRoaXMuZGF0YS5maWVsZFZhbHVlO2lmKCFpKXJldHVybmAvVHggQk1DIHEgJHtsfVEgRU1DYH1BcnJheS5pc0FycmF5KGkpJiYxPT09aS5sZW5ndGgmJihpPWlbMF0pO2Fzc2VydCgic3RyaW5nIj09dHlwZW9mIGksIkV4cGVjdGVkIGB2YWx1ZWAgdG8gYmUgYSBzdHJpbmcuIik7aT1pLnRyaW1FbmQoKTtpZih0aGlzLmRhdGEuY29tYm8pe2NvbnN0IGU9dGhpcy5kYXRhLm9wdGlvbnMuZmluZCgoe2V4cG9ydFZhbHVlOmV9KT0+aT09PWUpO2k9ZT8uZGlzcGxheVZhbHVlfHxpfWlmKCIiPT09aSlyZXR1cm5gL1R4IEJNQyBxICR7bH1RIEVNQ2A7dm9pZCAwPT09byYmKG89dGhpcy5yb3RhdGlvbik7bGV0IGMsaD0tMTtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtjPWkuc3BsaXQoL1xyXG4/fFxuLykubWFwKGU9PmUubm9ybWFsaXplKCJORkMiKSk7aD1jLmxlbmd0aH1lbHNlIGM9W2kucmVwbGFjZSgvXHJcbj98XG4vLCIiKS5ub3JtYWxpemUoIk5GQyIpXTtsZXR7d2lkdGg6dSxoZWlnaHQ6bX09dGhpczs5MCE9PW8mJjI3MCE9PW98fChbdSxtXT1bbSx1XSk7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7bGV0IHAsZCxnLGI9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKTtjb25zdCB3PVtdO2xldCBqPSExO2Zvcihjb25zdCBlIG9mIGMpe2NvbnN0IHQ9Yi5lbmNvZGVTdHJpbmcoZSk7dC5sZW5ndGg+MSYmKGo9ITApO3cucHVzaCh0LmpvaW4oIiIpKX1pZihqJiZuJmYpcmV0dXJue25lZWRBcHBlYXJhbmNlczohMH07aWYoaiYmdGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe2NvbnN0IG49dGhpcy5kYXRhLmNvbWI/Im1vbm9zcGFjZSI6InNhbnMtc2VyaWYiLGE9bmV3IEZha2VVbmljb2RlRm9udChlLnhyZWYsbikscz1hLmNyZWF0ZUZvbnRSZXNvdXJjZXMoYy5qb2luKCIiKSkscj1zLmdldFJhdygiRm9udCIpO2lmKHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5oYXMoIkZvbnQiKSl7Y29uc3QgZT10aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuZ2V0KCJGb250Iik7Zm9yKGNvbnN0W3Qsbl1vZiByLmdldFJhd0VudHJpZXMoKSllLnNldCh0LG4pfWVsc2UgdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLnNldCgiRm9udCIscik7Y29uc3Qgbz1hLmZvbnROYW1lLm5hbWU7Yj1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQse2ZvbnROYW1lOm8sZm9udFNpemU6MH0scyk7Zm9yKGxldCBlPTAsdD13Lmxlbmd0aDtlPHQ7ZSsrKXdbZV09c3RyaW5nVG9VVEYxNlN0cmluZyhjW2VdKTtjb25zdCBsPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhKTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplPTA7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250TmFtZT1vO1twLGQsZ109dGhpcy5fY29tcHV0ZUZvbnRTaXplKG0tMix1LTQsaSxiLGgpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9bH1lbHNle3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfHx3YXJuKCJfZ2V0QXBwZWFyYW5jZTogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGFubm90YXRpb24gbWF5IG5vdCByZW5kZXIgY29ycmVjdGx5LiIpO1twLGQsZ109dGhpcy5fY29tcHV0ZUZvbnRTaXplKG0tMix1LTQsaSxiLGgpfWxldCBrPWIuZGVzY2VudDtrPWlzTmFOKGspP3MqZzpNYXRoLm1heChzKmcsTWF0aC5hYnMoaykqZCk7Y29uc3QgeT1NYXRoLm1pbihNYXRoLmZsb29yKChtLWQpLzIpLDEpLHE9dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQ7aWYodGhpcy5kYXRhLm11bHRpTGluZSlyZXR1cm4gdGhpcy5fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShwLHcsYixkLHUsbSxxLDIseSxrLGcsYSk7aWYodGhpcy5kYXRhLmNvbWIpcmV0dXJuIHRoaXMuX2dldENvbWJBcHBlYXJhbmNlKHAsYix3WzBdLGQsdSxtLHEsInJ0bCI9PT1iaWRpKGNbMF0pLmRpcixhKTtjb25zdCB2PXkraztpZigwPT09cXx8cT4yKXJldHVybmAvVHggQk1DIHEgJHtsfUJUIGArcCtgIDEgMCAwIDEgJHtudW1iZXJUb1N0cmluZygyKX0gJHtudW1iZXJUb1N0cmluZyh2KX0gVG0gKCR7ZXNjYXBlU3RyaW5nKHdbMF0pfSkgVGogRVQgUSBFTUNgO3JldHVybmAvVHggQk1DIHEgJHtsfUJUIGArcCtgIDEgMCAwIDEgMCAwIFRtICR7dGhpcy5fcmVuZGVyVGV4dCh3WzBdLGIsZCx1LHEse3NoaWZ0OjB9LDIsdil9IEVUIFEgRU1DYH1zdGF0aWMgYXN5bmMgX2dldEZvbnREYXRhKGUsdCxuLGEpe2NvbnN0IHM9bmV3IE9wZXJhdG9yTGlzdCxyPXtmb250Om51bGwsY2xvbmUoKXtyZXR1cm4gdGhpc319LHtmb250TmFtZTppLGZvbnRTaXplOm99PW47YXdhaXQgZS5oYW5kbGVTZXRGb250KGEsW2kmJk5hbWUuZ2V0KGkpLG9dLG51bGwscyx0LHIsbnVsbCk7cmV0dXJuIHIuZm9udH1fZ2V0VGV4dFdpZHRoKGUsdCl7cmV0dXJuIE1hdGguc3VtUHJlY2lzZSh0LmNoYXJzVG9HbHlwaHMoZSkubWFwKGU9PmUud2lkdGgpKS8xZTN9X2NvbXB1dGVGb250U2l6ZShlLHQsbixhLHMpe2xldHtmb250U2l6ZTpyfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLGk9MS4zNSoocnx8MTIpLG89TWF0aC5yb3VuZChlL2kpO2lmKCFyKXtjb25zdCByb3VuZFdpdGhUd29EaWdpdHM9ZT0+TWF0aC5mbG9vcigxMDAqZSkvMTAwO2lmKC0xPT09cyl7Y29uc3Qgcz10aGlzLl9nZXRUZXh0V2lkdGgobixhKTtyPXJvdW5kV2l0aFR3b0RpZ2l0cyhNYXRoLm1pbihlLzEuMzUsdC9zKSk7bz0xfWVsc2V7Y29uc3QgbD1uLnNwbGl0KC9cclxuP3xcbi8pLGY9W107Zm9yKGNvbnN0IGUgb2YgbCl7Y29uc3QgdD1hLmVuY29kZVN0cmluZyhlKS5qb2luKCIiKSxuPWEuY2hhcnNUb0dseXBocyh0KSxzPWEuZ2V0Q2hhclBvc2l0aW9ucyh0KTtmLnB1c2goe2xpbmU6dCxnbHlwaHM6bixwb3NpdGlvbnM6c30pfWNvbnN0IGlzVG9vQmlnPW49PntsZXQgcz0wO2Zvcihjb25zdCByIG9mIGYpe3MrPXRoaXMuX3NwbGl0TGluZShudWxsLGEsbix0LHIpLmxlbmd0aCpuO2lmKHM+ZSlyZXR1cm4hMH1yZXR1cm4hMX07bz1NYXRoLm1heChvLHMpO2Zvcig7Oyl7aT1lL287cj1yb3VuZFdpdGhUd29EaWdpdHMoaS8xLjM1KTtpZighaXNUb29CaWcocikpYnJlYWs7bysrfX1jb25zdHtmb250TmFtZTpsLGZvbnRDb2xvcjpmfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlKHtmb250U2l6ZTplLGZvbnROYW1lOnQsZm9udENvbG9yOm59KXtyZXR1cm5gLyR7ZXNjYXBlUERGTmFtZSh0KX0gJHtlfSBUZiAke2dldFBkZkNvbG9yKG4sITApfWB9KHtmb250U2l6ZTpyLGZvbnROYW1lOmwsZm9udENvbG9yOmZ9KX1yZXR1cm5bdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UscixlL29dfV9yZW5kZXJUZXh0KGUsdCxuLGEscyxyLGksbyl7bGV0IGw7aWYoMT09PXMpe2w9KGEtdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqbikvMn1lbHNlIGlmKDI9PT1zKXtsPWEtdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqbi1pfWVsc2UgbD1pO2NvbnN0IGY9bnVtYmVyVG9TdHJpbmcobC1yLnNoaWZ0KTtyLnNoaWZ0PWw7cmV0dXJuYCR7Zn0gJHtvPW51bWJlclRvU3RyaW5nKG8pfSBUZCAoJHtlc2NhcGVTdHJpbmcoZSl9KSBUamB9X2dldFNhdmVGaWVsZFJlc291cmNlcyhlKXtjb25zdHtsb2NhbFJlc291cmNlczp0LGFwcGVhcmFuY2VSZXNvdXJjZXM6bixhY3JvRm9ybVJlc291cmNlczphfT10aGlzLl9maWVsZFJlc291cmNlcyxzPXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE/LmZvbnROYW1lO2lmKCFzKXJldHVybiB0fHxEaWN0LmVtcHR5O2Zvcihjb25zdCBlIG9mW3Qsbl0paWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9ZS5nZXQoIkZvbnQiKTtpZih0IGluc3RhbmNlb2YgRGljdCYmdC5oYXMocykpcmV0dXJuIGV9aWYoYSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IG49YS5nZXQoIkZvbnQiKTtpZihuIGluc3RhbmNlb2YgRGljdCYmbi5oYXMocykpe2NvbnN0IGE9bmV3IERpY3QoZSk7YS5zZXQocyxuLmdldFJhdyhzKSk7Y29uc3Qgcj1uZXcgRGljdChlKTtyLnNldCgiRm9udCIsYSk7cmV0dXJuIERpY3QubWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6W3IsdF0sbWVyZ2VTdWJEaWN0czohMH0pfX1yZXR1cm4gdHx8RGljdC5lbXB0eX1nZXRGaWVsZE9iamVjdCgpe3JldHVybiBudWxsfX1jbGFzcyBUZXh0V2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO2lmKHQuaGFzKCJQTUQiKSl7dGhpcy5mbGFnc3w9RTt0aGlzLmRhdGEuaGlkZGVuPSEwO3dhcm4oIkJhcmNvZGVzIGFyZSBub3Qgc3VwcG9ydGVkIil9dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEucmVhZE9ubHkmJiF0aGlzLmRhdGEubm9IVE1MO3RoaXMuX2hhc1RleHQ9ITA7InN0cmluZyIhPXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPSIiKTtsZXQgbj1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJRIn0pOyghTnVtYmVyLmlzSW50ZWdlcihuKXx8bjwwfHxuPjIpJiYobj1udWxsKTt0aGlzLmRhdGEudGV4dEFsaWdubWVudD1uO2xldCBhPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6Ik1heExlbiJ9KTsoIU51bWJlci5pc0ludGVnZXIoYSl8fGE8MCkmJihhPTApO3RoaXMuZGF0YS5tYXhMZW49YTt0aGlzLmRhdGEubXVsdGlMaW5lPXRoaXMuaGFzRmllbGRGbGFnKEcpO3RoaXMuZGF0YS5jb21iPXRoaXMuaGFzRmllbGRGbGFnKHRlKSYmIXRoaXMuZGF0YS5tdWx0aUxpbmUmJiF0aGlzLmRhdGEucGFzc3dvcmQmJiF0aGlzLmhhc0ZpZWxkRmxhZyhRKSYmMCE9PXRoaXMuZGF0YS5tYXhMZW47dGhpcy5kYXRhLmRvTm90U2Nyb2xsPXRoaXMuaGFzRmllbGRGbGFnKGVlKTtjb25zdHtkYXRhOnthY3Rpb25zOnN9fT10aGlzO2lmKCFzKXJldHVybjtjb25zdCByPS9eQUYoRGF0ZXxUaW1lKV8oPzpLZXlzdHJva2V8Rm9ybWF0KSg/OkV4KT9cKFsnIl0/KFteJyJdKylbJyJdP1wpOyQvO2xldCBpPSExOygxPT09cy5Gb3JtYXQ/Lmxlbmd0aCYmMT09PXMuS2V5c3Ryb2tlPy5sZW5ndGgmJnIudGVzdChzLkZvcm1hdFswXSkmJnIudGVzdChzLktleXN0cm9rZVswXSl8fDA9PT1zLkZvcm1hdD8ubGVuZ3RoJiYxPT09cy5LZXlzdHJva2U/Lmxlbmd0aCYmci50ZXN0KHMuS2V5c3Ryb2tlWzBdKXx8MD09PXMuS2V5c3Ryb2tlPy5sZW5ndGgmJjE9PT1zLkZvcm1hdD8ubGVuZ3RoJiZyLnRlc3Qocy5Gb3JtYXRbMF0pKSYmKGk9ITApO2NvbnN0IG89W107cy5Gb3JtYXQmJm8ucHVzaCguLi5zLkZvcm1hdCk7cy5LZXlzdHJva2UmJm8ucHVzaCguLi5zLktleXN0cm9rZSk7aWYoaSl7ZGVsZXRlIHMuS2V5c3Ryb2tlO3MuRm9ybWF0PW99Zm9yKGNvbnN0IGUgb2Ygbyl7Y29uc3QgdD1lLm1hdGNoKHIpO2lmKCF0KWNvbnRpbnVlO2NvbnN0IG49IkRhdGUiPT09dFsxXTtsZXQgYT10WzJdO2NvbnN0IHM9cGFyc2VJbnQoYSwxMCk7aXNOYU4ocyl8fE1hdGguZmxvb3IoTWF0aC5sb2cxMChzKSkrMSE9PXRbMl0ubGVuZ3RofHwoYT0obj9FaTpfaSlbc10/P2EpO3RoaXMuZGF0YS5kYXRldGltZUZvcm1hdD1hO2lmKCFpKWJyZWFrO2lmKG4pe2lmKC9ISHxNTXxzc3xoLy50ZXN0KGEpKXt0aGlzLmRhdGEuZGF0ZXRpbWVUeXBlPSJkYXRldGltZS1sb2NhbCI7dGhpcy5kYXRhLnRpbWVTdGVwPS9zcy8udGVzdChhKT8xOjYwfWVsc2UgdGhpcy5kYXRhLmRhdGV0aW1lVHlwZT0iZGF0ZSI7YnJlYWt9dGhpcy5kYXRhLmRhdGV0aW1lVHlwZT0idGltZSI7dGhpcy5kYXRhLnRpbWVTdGVwPS9zcy8udGVzdChhKT8xOjYwO2JyZWFrfX1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4hIXRoaXMuYXBwZWFyYW5jZSYmIXRoaXMuX25lZWRBcHBlYXJhbmNlc31fZ2V0Q29tYkFwcGVhcmFuY2UoZSx0LG4sYSxzLHIsaSxvLGwpe2NvbnN0IGY9cy90aGlzLmRhdGEubWF4TGVuLGM9dGhpcy5nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMobCksaD10LmdldENoYXJQb3NpdGlvbnMobikubWFwKChbZSxzXSk9Pntjb25zdCByPW4uc3Vic3RyaW5nKGUscyk7cmV0dXJue2dseXBoOnIsd2lkdGg6dGhpcy5fZ2V0VGV4dFdpZHRoKHIsdCkqYX19KTtvJiZoLnJldmVyc2UoKTtjb25zdCB1PWYqaC5sZW5ndGg7bGV0IG09MDsxPT09aT9tKz1NYXRoLmZsb29yKChzLXUpLygyKmYpKSpmOjI9PT1pJiYobSs9cy11KTtjb25zdCBwPVtdO2xldCBkPTA7Zm9yKGxldCBlPTAsdD1oLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdHtnbHlwaDp0LHdpZHRoOm59PWhbZV0sYT0wPT09ZT8oZi1uKS8yOmYrKGQtbikvMjtwLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoYSl9IDAgVGQgKCR7ZXNjYXBlU3RyaW5nKHQpfSkgVGpgKTtkPW59Y29uc3QgZz1wLmpvaW4oIiAiKSxiPShyLSh0LmNhcEhlaWdodHx8dC5hc2NlbnR8fDEpKmEpLzI7cmV0dXJuYC9UeCBCTUMgcSAke2N9QlQgYCtlK2AgMSAwIDAgMSAke251bWJlclRvU3RyaW5nKG0pfSAke251bWJlclRvU3RyaW5nKGIpfSBUbSAke2d9IEVUIFEgRU1DYH1fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShlLHQsbixhLHMscixpLG8sbCxmLGMsaCl7Y29uc3QgdT1bXSxtPXMtMipvLHA9e3NoaWZ0OjB9O2ZvcihsZXQgZT0wLHI9dC5sZW5ndGg7ZTxyO2UrKyl7Y29uc3Qgcj10W2VdLGg9dGhpcy5fc3BsaXRMaW5lKHIsbixhLG0pO2ZvcihsZXQgdD0wLHI9aC5sZW5ndGg7dDxyO3QrKyl7Y29uc3Qgcj1oW3RdLG09MD09PWUmJjA9PT10Py1sLShjLWYpOi1jO3UucHVzaCh0aGlzLl9yZW5kZXJUZXh0KHIsbixhLHMsaSxwLG8sbSkpfX1jb25zdCBkPXRoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGgpLGc9dS5qb2luKCJcbiIpO3JldHVybmAvVHggQk1DIHEgJHtkfUJUIGArZStgIDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKHIpfSBUbSAke2d9IEVUIFEgRU1DYH1fc3BsaXRMaW5lKGUsdCxuLGEscz17fSl7ZT1zLmxpbmV8fGU7Y29uc3Qgcj1zLmdseXBoc3x8dC5jaGFyc1RvR2x5cGhzKGUpO2lmKHIubGVuZ3RoPD0xKXJldHVybltlXTtjb25zdCBpPXMucG9zaXRpb25zfHx0LmdldENoYXJQb3NpdGlvbnMoZSksbz1uLzFlMyxsPVtdO2xldCBmPS0xLGM9LTEsaD0tMSx1PTAsbT0wO2ZvcihsZXQgdD0wLG49ci5sZW5ndGg7dDxuO3QrKyl7Y29uc3RbbixzXT1pW3RdLHA9clt0XSxkPXAud2lkdGgqbztpZigiICI9PT1wLnVuaWNvZGUpaWYobStkPmEpe2wucHVzaChlLnN1YnN0cmluZyh1LG4pKTt1PW47bT1kO2Y9LTE7aD0tMX1lbHNle20rPWQ7Zj1uO2M9cztoPXR9ZWxzZSBpZihtK2Q+YSlpZigtMSE9PWYpe2wucHVzaChlLnN1YnN0cmluZyh1LGMpKTt1PWM7dD1oKzE7Zj0tMTttPTB9ZWxzZXtsLnB1c2goZS5zdWJzdHJpbmcodSxuKSk7dT1uO209ZH1lbHNlIG0rPWR9dTxlLmxlbmd0aCYmbC5wdXNoKGUuc3Vic3RyaW5nKHUpKTtyZXR1cm4gbH1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoZSx0LG4pe2F3YWl0IHN1cGVyLmV4dHJhY3RUZXh0Q29udGVudChlLHQsbik7Y29uc3QgYT10aGlzLmRhdGEudGV4dENvbnRlbnQ7aWYoIWEpcmV0dXJuO2NvbnN0IHM9YS5qb2luKCJcbiIpO2lmKHM9PT10aGlzLmRhdGEuZmllbGRWYWx1ZSlyZXR1cm47Y29uc3Qgcj1zLnJlcGxhY2VBbGwoLyhbLiorP14ke30oKXxbXF1cXF0pfChccyspL2csKGUsdCk9PnQ/YFxcJHt0fWA6IlxccysiKTtuZXcgUmVnRXhwKGBeXFxzKiR7cn1cXHMqJGApLnRlc3QodGhpcy5kYXRhLmZpZWxkVmFsdWUpJiYodGhpcy5kYXRhLnRleHRDb250ZW50PXRoaXMuZGF0YS5maWVsZFZhbHVlLnNwbGl0KCJcbiIpKX1nZXRGaWVsZE9iamVjdCgpe3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWUsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZXx8IiIsbXVsdGlsaW5lOnRoaXMuZGF0YS5tdWx0aUxpbmUscGFzc3dvcmQ6dGhpcy5kYXRhLnBhc3N3b3JkLGNoYXJMaW1pdDp0aGlzLmRhdGEubWF4TGVuLGNvbWI6dGhpcy5kYXRhLmNvbWIsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixkYXRldGltZUZvcm1hdDp0aGlzLmRhdGEuZGF0ZXRpbWVGb3JtYXQsaGFzRGF0ZXRpbWVIVE1MOiEhdGhpcy5kYXRhLmRhdGV0aW1lVHlwZSx0eXBlOiJ0ZXh0In19fWNsYXNzIEJ1dHRvbldpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U9bnVsbDt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9bnVsbDtjb25zdCB0PXRoaXMuaGFzRmllbGRGbGFnKCQpLG49dGhpcy5oYXNGaWVsZEZsYWcoWSk7dGhpcy5kYXRhLmNoZWNrQm94PSF0JiYhbjt0aGlzLmRhdGEucmFkaW9CdXR0b249dCYmIW47dGhpcy5kYXRhLnB1c2hCdXR0b249bjt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hMTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSEwO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLmNoZWNrQm94P3RoaXMuX3Byb2Nlc3NDaGVja0JveChlKTp0aGlzLmRhdGEucmFkaW9CdXR0b24/dGhpcy5fcHJvY2Vzc1JhZGlvQnV0dG9uKGUpOnRoaXMuZGF0YS5wdXNoQnV0dG9uP3RoaXMuX3Byb2Nlc3NQdXNoQnV0dG9uKGUpOndhcm4oIkludmFsaWQgZmllbGQgZmxhZ3MgZm9yIGJ1dHRvbiB3aWRnZXQgYW5ub3RhdGlvbiIpfWdldCBfb3duQ2FudmFzUmVxdWlyZXNGb3Jtcygpe3JldHVybiB0aGlzLmRhdGEuY2hlY2tCb3h8fHRoaXMuZGF0YS5yYWRpb0J1dHRvbn0jU3QoZSx0LG4sYSxzLHIpe2lmKCFyKXJldHVybiB0aGlzLl9nZXRPcGVyYXRvckxpc3ROb0FwcGVhcmFuY2UoKTtjb25zdCBpPXRoaXMuYXBwZWFyYW5jZSxvPWxvb2t1cE1hdHJpeChyLmRpY3QuZ2V0QXJyYXkoIk1hdHJpeCIpLGduKTtzJiZyLmRpY3Quc2V0KCJNYXRyaXgiLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgoYSkpO3RoaXMuYXBwZWFyYW5jZT1yO2NvbnN0IGw9c3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxuLGEpO3RoaXMuYXBwZWFyYW5jZT1pO3IuZGljdC5zZXQoIk1hdHJpeCIsbyk7cmV0dXJuIGx9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxuLGEpe2lmKHRoaXMuZGF0YS5wdXNoQnV0dG9uKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LG4sITEsYSk7aWYobiZvJiZuJmMmJih0aGlzLmRhdGEuY2hlY2tCb3h8fHRoaXMuZGF0YS5yYWRpb0J1dHRvbikpe2NvbnN0IHNldENhbnZhc05hbWU9KGUsdCk9Pntjb25zdCBuPWUuZm5BcnJheS5pbmRleE9mKER0KTstMSE9PW4mJmUuYXJnc0FycmF5W25dLnB1c2godCl9LHM9YXdhaXQgdGhpcy4jU3QoZSx0LG4sYSxudWxsLHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpO3NldENhbnZhc05hbWUocy5vcExpc3QsImNoZWNrZWQiKTtjb25zdCByPWF3YWl0IHRoaXMuI1N0KGUsdCxuLGEsbnVsbCx0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3NldENhbnZhc05hbWUoci5vcExpc3QsInVuY2hlY2tlZCIpO3Mub3BMaXN0LmFkZE9wTGlzdChyLm9wTGlzdCk7cy5zZXBhcmF0ZUZvcm18fD1yLnNlcGFyYXRlRm9ybTtzLnNlcGFyYXRlQ2FudmFzfHw9ci5zZXBhcmF0ZUNhbnZhcztyZXR1cm4gc31sZXQgcz1udWxsLHI9bnVsbDtpZihhKXtjb25zdCBlPWEuZ2V0KHRoaXMuZGF0YS5pZCk7cz1lP2UudmFsdWU6bnVsbDtyPWU/ZS5yb3RhdGlvbjpudWxsfWlmKG51bGw9PT1zJiZ0aGlzLmFwcGVhcmFuY2UpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsbixhKTtzPz89dGhpcy5kYXRhLmNoZWNrQm94P3RoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlO3JldHVybiB0aGlzLiNTdChlLHQsbixhLHIscz90aGlzLmNoZWNrZWRBcHBlYXJhbmNlOnRoaXMudW5jaGVja2VkQXBwZWFyYW5jZSl9YXN5bmMgc2F2ZShlLHQsbixhKXt0aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5fc2F2ZUNoZWNrYm94KGUsdCxuLGEpOnRoaXMuZGF0YS5yYWRpb0J1dHRvbiYmdGhpcy5fc2F2ZVJhZGlvQnV0dG9uKGUsdCxuLGEpfWFzeW5jIF9zYXZlQ2hlY2tib3goZSx0LG4sYSl7aWYoIW4pcmV0dXJuO2NvbnN0IHM9bi5nZXQodGhpcy5kYXRhLmlkKSxyPXRoaXMuX2J1aWxkRmxhZ3Mocz8ubm9WaWV3LHM/Lm5vUHJpbnQpO2xldCBpPXM/LnJvdGF0aW9uLG89cz8udmFsdWU7aWYodm9pZCAwPT09aSYmdm9pZCAwPT09cil7aWYodm9pZCAwPT09bylyZXR1cm47aWYodGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWU9PT1vKXJldHVybn1sZXQgbD1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShsIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2w9bC5jbG9uZSgpO3ZvaWQgMD09PWkmJihpPXRoaXMucm90YXRpb24pO3ZvaWQgMD09PW8mJihvPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlKTtjb25zdCBmPXtwYXRoOnRoaXMuZGF0YS5maWVsZE5hbWUsdmFsdWU6bz90aGlzLmRhdGEuZXhwb3J0VmFsdWU6IiJ9LGM9TmFtZS5nZXQobz90aGlzLl9vblN0YXRlTmFtZToiT2ZmIik7dGhpcy5zZXRWYWx1ZShsLGMsZS54cmVmLGEpO2wuc2V0KCJBUyIsYyk7bC5zZXQoIk0iLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO3ZvaWQgMCE9PXImJmwuc2V0KCJGIixyKTtjb25zdCBoPXRoaXMuX2dldE1LRGljdChpKTtoJiZsLnNldCgiTUsiLGgpO2EucHV0KHRoaXMucmVmLHtkYXRhOmwseGZhOmYsbmVlZEFwcGVhcmFuY2VzOiExfSl9YXN5bmMgX3NhdmVSYWRpb0J1dHRvbihlLHQsbixhKXtpZighbilyZXR1cm47Y29uc3Qgcz1uLmdldCh0aGlzLmRhdGEuaWQpLHI9dGhpcy5fYnVpbGRGbGFncyhzPy5ub1ZpZXcscz8ubm9QcmludCk7bGV0IGk9cz8ucm90YXRpb24sbz1zPy52YWx1ZTtpZih2b2lkIDA9PT1pJiZ2b2lkIDA9PT1yKXtpZih2b2lkIDA9PT1vKXJldHVybjtpZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZT09PW8pcmV0dXJufWxldCBsPWUueHJlZi5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKGwgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47bD1sLmNsb25lKCk7dm9pZCAwPT09byYmKG89dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuYnV0dG9uVmFsdWUpO3ZvaWQgMD09PWkmJihpPXRoaXMucm90YXRpb24pO2NvbnN0IGY9e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpvP3RoaXMuZGF0YS5idXR0b25WYWx1ZToiIn0sYz1OYW1lLmdldChvP3RoaXMuX29uU3RhdGVOYW1lOiJPZmYiKTtvJiZ0aGlzLnNldFZhbHVlKGwsYyxlLnhyZWYsYSk7bC5zZXQoIkFTIixjKTtsLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7dm9pZCAwIT09ciYmbC5zZXQoIkYiLHIpO2NvbnN0IGg9dGhpcy5fZ2V0TUtEaWN0KGkpO2gmJmwuc2V0KCJNSyIsaCk7YS5wdXQodGhpcy5yZWYse2RhdGE6bCx4ZmE6ZixuZWVkQXBwZWFyYW5jZXM6ITF9KX1fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsdCl7Y29uc3R7d2lkdGg6bixoZWlnaHQ6YX09dGhpcyxzPVswLDAsbixhXSxyPS44Kk1hdGgubWluKG4sYSk7bGV0IGksbztpZigiY2hlY2siPT09dCl7aT17d2lkdGg6Ljc1NSpyLGhlaWdodDouNzA1KnJ9O289IjMifWVsc2UgaWYoImRpc2MiPT09dCl7aT17d2lkdGg6Ljc5MSpyLGhlaWdodDouNzA1KnJ9O289ImwifWVsc2UgdW5yZWFjaGFibGUoYF9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UgLSB1bnN1cHBvcnRlZCB0eXBlOiAke3R9YCk7Y29uc3QgbD1gcSBCVCAvUGRmSnNaYURiICR7cn0gVGYgMCBnICR7bnVtYmVyVG9TdHJpbmcoKG4taS53aWR0aCkvMil9ICR7bnVtYmVyVG9TdHJpbmcoKGEtaS5oZWlnaHQpLzIpfSBUZCAoJHtvfSkgVGogRVQgUWAsZj1uZXcgRGljdChlLnhyZWYpO2Yuc2V0KCJGb3JtVHlwZSIsMSk7Zi5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7Zi5zZXRJZk5hbWUoIlR5cGUiLCJYT2JqZWN0Iik7Zi5zZXQoIkJCb3giLHMpO2Yuc2V0KCJNYXRyaXgiLFsxLDAsMCwxLDAsMF0pO2Yuc2V0KCJMZW5ndGgiLGwubGVuZ3RoKTtjb25zdCBjPW5ldyBEaWN0KGUueHJlZiksaD1uZXcgRGljdChlLnhyZWYpO2guc2V0KCJQZGZKc1phRGIiLHRoaXMuZmFsbGJhY2tGb250RGljdCk7Yy5zZXQoIkZvbnQiLGgpO2Yuc2V0KCJSZXNvdXJjZXMiLGMpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U9bmV3IFN0cmluZ1N0cmVhbShsLGYpO3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKX1fZ2V0T25TdGF0ZU5hbWUoZSl7Y29uc3QgdD1lLmdldCgiQVAiKTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCBuPXQuZ2V0KCJOIik7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7Zm9yKGNvbnN0IGUgb2Ygbi5nZXRLZXlzKCkpaWYoIk9mZiIhPT1lKXJldHVybiBlO3JldHVybiBudWxsfV9nZXRFeHBvcnRWYWx1ZUZvck9wdEluZGV4KGUsdCxuKXtpZihOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj0wJiZlPHQubGVuZ3RoKXtjb25zdCBhPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShuLmZldGNoSWZSZWYodFtlXSkpO2lmKCJzdHJpbmciPT10eXBlb2YgYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH1fZ2V0T3B0SW5mbyhlLHQsbixhKXtpZighQXJyYXkuaXNBcnJheShuKSlyZXR1cm4gbnVsbDtjb25zdCBzPW5ldyBNYXA7bGV0IHI9bnVsbDtjb25zdCBpPWUuZ2V0KCJQYXJlbnQiKSxvPWkgaW5zdGFuY2VvZiBEaWN0P2kuZ2V0KCJLaWRzIik6bnVsbDtpZihBcnJheS5pc0FycmF5KG8pKWZvcihsZXQgdD0wLGk9TWF0aC5taW4oby5sZW5ndGgsbi5sZW5ndGgpO3Q8aTt0Kyspe2NvbnN0IG49b1t0XTtuIGluc3RhbmNlb2YgUmVmJiZpc1JlZnNFcXVhbChuLHRoaXMucmVmKSYmKHI9dCk7Y29uc3QgaT1hLmZldGNoSWZSZWYobik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7aT09PWUmJihyPXQpO2NvbnN0IGw9dGhpcy5fZ2V0T25TdGF0ZU5hbWUoaSk7InN0cmluZyIhPXR5cGVvZiBsfHxzLmhhcyhsKXx8cy5zZXQobCx0KX1lbHNlIGlmKDE9PT1uLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiB0KXtyPTA7cy5zZXQodCwwKX1yZXR1cm57Y3VycmVudEluZGV4OnIsb3B0Om4sc3RhdGVUb0luZGV4OnN9fV9nZXRFeHBvcnRWYWx1ZShlLHQsbil7aWYoIXR8fCJzdHJpbmciIT10eXBlb2YgZXx8Ik9mZiI9PT1lKXJldHVybiBlO2lmKGU9PT10aGlzLl9vblN0YXRlTmFtZSl7Y29uc3QgZT10aGlzLl9nZXRFeHBvcnRWYWx1ZUZvck9wdEluZGV4KHQuY3VycmVudEluZGV4LHQub3B0LG4pO2lmKG51bGwhPT1lKXJldHVybiBlfWlmKHQuc3RhdGVUb0luZGV4LmhhcyhlKSl7Y29uc3QgYT10aGlzLl9nZXRFeHBvcnRWYWx1ZUZvck9wdEluZGV4KHQuc3RhdGVUb0luZGV4LmdldChlKSx0Lm9wdCxuKTtpZihudWxsIT09YSlyZXR1cm4gYX1jb25zdCBhPXBhcnNlSW50KGUsMTApO3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGEpJiZTdHJpbmcoYSk9PT1lJiZ0aGlzLl9nZXRFeHBvcnRWYWx1ZUZvck9wdEluZGV4KGEsdC5vcHQsbil8fGV9X3Byb2Nlc3NDaGVja0JveChlKXtjb25zdCB0PWUuZGljdC5nZXQoIkFQIik7bGV0IG49dCBpbnN0YW5jZW9mIERpY3Q/dC5nZXQoIk4iKTpudWxsO24gaW5zdGFuY2VvZiBEaWN0fHwobj1udWxsKTtjb25zdCBhPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShlLmRpY3QuZ2V0KCJBUyIpKTsic3RyaW5nIj09dHlwZW9mIGEmJih0aGlzLmRhdGEuZmllbGRWYWx1ZT1hKTtjb25zdCBzPW51bGwhPT10aGlzLmRhdGEuZmllbGRWYWx1ZSYmIk9mZiIhPT10aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZToiWWVzIixyPW4/Wy4uLm4uZ2V0S2V5cygpXTpbXTtpZigwPT09ci5sZW5ndGgpci5wdXNoKCJPZmYiLHMpO2Vsc2UgaWYoMT09PXIubGVuZ3RoKSJPZmYiPT09clswXT9yLnB1c2gocyk6ci51bnNoaWZ0KCJPZmYiKTtlbHNlIGlmKHIuaW5jbHVkZXMocykpe3IubGVuZ3RoPTA7ci5wdXNoKCJPZmYiLHMpfWVsc2V7Y29uc3QgZT1yLmZpbmQoZT0+Ik9mZiIhPT1lKTtyLmxlbmd0aD0wO3IucHVzaCgiT2ZmIixlKX1jb25zdCBpPXJbMV07dGhpcy5fb25TdGF0ZU5hbWU9aTtjb25zdCBvPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6ZS5kaWN0LGtleToiT3B0In0pLGw9dGhpcy5fZ2V0T3B0SW5mbyhlLmRpY3QsaSxvLGUueHJlZik7dGhpcy5kYXRhLmV4cG9ydFZhbHVlPXRoaXMuX2dldEV4cG9ydFZhbHVlKGksbCxlLnhyZWYpO3IuaW5jbHVkZXModGhpcy5kYXRhLmZpZWxkVmFsdWUpfHx0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPSJPZmYiKTt0aGlzLmRhdGEuZmllbGRWYWx1ZT10aGlzLl9nZXRFeHBvcnRWYWx1ZSh0aGlzLmRhdGEuZmllbGRWYWx1ZSxsLGUueHJlZik7dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPXRoaXMuX2dldEV4cG9ydFZhbHVlKHRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSxsLGUueHJlZik7Y29uc3QgZj1uPy5nZXQoaSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1mIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9mOm51bGw7Y29uc3QgYz1uPy5nZXQoIk9mZiIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1jIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9jOm51bGw7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT90aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSk6dGhpcy5fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsImNoZWNrIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKTt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PXRoaXMuZmFsbGJhY2tGb250RGljdDtudWxsPT09dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlJiYodGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPSJPZmYiKX1fcHJvY2Vzc1JhZGlvQnV0dG9uKGUpe3RoaXMuZGF0YS5idXR0b25WYWx1ZT1udWxsO2NvbnN0IHQ9ZS5kaWN0LmdldCgiUGFyZW50Iik7aWYodCBpbnN0YW5jZW9mIERpY3Qpe3RoaXMucGFyZW50PWUuZGljdC5nZXRSYXcoIlBhcmVudCIpO2NvbnN0IG49dC5nZXQoIlYiKTtuIGluc3RhbmNlb2YgTmFtZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShuKSl9Y29uc3Qgbj1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEobiBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBhPW4uZ2V0KCJOIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2xldCBzPW51bGw7Zm9yKGNvbnN0IGUgb2YgYS5nZXRLZXlzKCkpaWYoIk9mZiIhPT1lKXtzPWU7YnJlYWt9dGhpcy5fb25TdGF0ZU5hbWU9cztjb25zdCByPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6ZS5kaWN0LGtleToiT3B0In0pLGk9dGhpcy5fZ2V0T3B0SW5mbyhlLmRpY3QscyxyLGUueHJlZik7dGhpcy5kYXRhLmJ1dHRvblZhbHVlPXRoaXMuX2dldEV4cG9ydFZhbHVlKHMsaSxlLnhyZWYpO3RoaXMuZGF0YS5maWVsZFZhbHVlPXRoaXMuX2dldEV4cG9ydFZhbHVlKHRoaXMuZGF0YS5maWVsZFZhbHVlLGksZS54cmVmKTt0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWU9dGhpcy5fZ2V0RXhwb3J0VmFsdWUodGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGksZS54cmVmKTtjb25zdCBvPWEuZ2V0KHMpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U9byBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/bzpudWxsO2NvbnN0IGw9YS5nZXQoIk9mZiIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1sIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9sOm51bGw7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT90aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSk6dGhpcy5fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsImRpc2MiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0O251bGw9PT10aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWU9Ik9mZiIpfV9wcm9jZXNzUHVzaEJ1dHRvbihlKXtjb25zdHtkaWN0OnQsYW5ub3RhdGlvbkdsb2JhbHM6bn09ZTtpZih0LmhhcygiQSIpfHx0LmhhcygiQUEiKXx8dGhpcy5kYXRhLmFsdGVybmF0aXZlVGV4dCl7dGhpcy5kYXRhLmlzVG9vbHRpcE9ubHk9IXQuaGFzKCJBIikmJiF0LmhhcygiQUEiKTtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OnQscmVzdWx0T2JqOnRoaXMuZGF0YSxkb2NCYXNlVXJsOm4uYmFzZVVybCxkb2NBdHRhY2htZW50czpuLmF0dGFjaG1lbnRzfSl9ZWxzZSB3YXJuKCJQdXNoIGJ1dHRvbnMgd2l0aG91dCBhY3Rpb24gZGljdGlvbmFyaWVzIGFyZSBub3Qgc3VwcG9ydGVkIil9Z2V0RmllbGRPYmplY3QoKXtsZXQgZSx0PSJidXR0b24iO2lmKHRoaXMuZGF0YS5jaGVja0JveCl7dD0iY2hlY2tib3giO2U9dGhpcy5kYXRhLmV4cG9ydFZhbHVlfWVsc2UgaWYodGhpcy5kYXRhLnJhZGlvQnV0dG9uKXt0PSJyYWRpb2J1dHRvbiI7ZT10aGlzLmRhdGEuYnV0dG9uVmFsdWV9cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZXx8Ik9mZiIsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSxleHBvcnRWYWx1ZXM6ZSxlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6dH19Z2V0IGZhbGxiYWNrRm9udERpY3QoKXtjb25zdCBlPW5ldyBEaWN0O2Uuc2V0SWZOYW1lKCJCYXNlRm9udCIsIlphcGZEaW5nYmF0cyIpO2Uuc2V0SWZOYW1lKCJUeXBlIiwiRmFsbGJhY2tUeXBlIik7ZS5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGYWxsYmFja1R5cGUiKTtlLnNldElmTmFtZSgiRW5jb2RpbmciLCJaYXBmRGluZ2JhdHNFbmNvZGluZyIpO3JldHVybiBzaGFkb3codGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOm59PWU7dGhpcy5pbmRpY2VzPXQuZ2V0QXJyYXkoIkkiKTt0aGlzLmhhc0luZGljZXM9QXJyYXkuaXNBcnJheSh0aGlzLmluZGljZXMpJiZ0aGlzLmluZGljZXMubGVuZ3RoPjA7dGhpcy5kYXRhLm9wdGlvbnM9W107Y29uc3QgYT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJPcHQifSk7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9bi5mZXRjaElmUmVmKGFbZV0pLHM9QXJyYXkuaXNBcnJheSh0KTt0aGlzLmRhdGEub3B0aW9uc1tlXT17ZXhwb3J0VmFsdWU6dGhpcy5fZGVjb2RlRm9ybVZhbHVlKHM/bi5mZXRjaElmUmVmKHRbMF0pOnQpLGRpc3BsYXlWYWx1ZTp0aGlzLl9kZWNvZGVGb3JtVmFsdWUocz9uLmZldGNoSWZSZWYodFsxXSk6dCl9fWlmKHRoaXMuaGFzSW5kaWNlcyl7dGhpcy5kYXRhLmZpZWxkVmFsdWU9W107Y29uc3QgZT10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGg7Zm9yKGNvbnN0IHQgb2YgdGhpcy5pbmRpY2VzKU51bWJlci5pc0ludGVnZXIodCkmJnQ+PTAmJnQ8ZSYmdGhpcy5kYXRhLmZpZWxkVmFsdWUucHVzaCh0aGlzLmRhdGEub3B0aW9uc1t0XS5leHBvcnRWYWx1ZSl9ZWxzZSJzdHJpbmciPT10eXBlb2YgdGhpcy5kYXRhLmZpZWxkVmFsdWU/dGhpcy5kYXRhLmZpZWxkVmFsdWU9W3RoaXMuZGF0YS5maWVsZFZhbHVlXTp0aGlzLmRhdGEuZmllbGRWYWx1ZXx8PVtdOzA9PT10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgmJnRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aD4wJiYodGhpcy5kYXRhLm9wdGlvbnM9dGhpcy5kYXRhLmZpZWxkVmFsdWUubWFwKGU9Pih7ZXhwb3J0VmFsdWU6ZSxkaXNwbGF5VmFsdWU6ZX0pKSk7dGhpcy5kYXRhLmNvbWJvPXRoaXMuaGFzRmllbGRGbGFnKEopO3RoaXMuZGF0YS5tdWx0aVNlbGVjdD10aGlzLmhhc0ZpZWxkRmxhZyhaKTt0aGlzLl9oYXNUZXh0PSEwfWdldEZpZWxkT2JqZWN0KCl7Y29uc3QgZT10aGlzLmRhdGEuY29tYm8/ImNvbWJvYm94IjoibGlzdGJveCIsdD10aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGg+MD90aGlzLmRhdGEuZmllbGRWYWx1ZVswXTpudWxsO3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dCxkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsbnVtSXRlbXM6dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoLG11bHRpcGxlU2VsZWN0aW9uOnRoaXMuZGF0YS5tdWx0aVNlbGVjdCxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLGl0ZW1zOnRoaXMuZGF0YS5vcHRpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbix0eXBlOmV9fWFtZW5kU2F2ZWREaWN0KGUsdCl7aWYoIXRoaXMuaGFzSW5kaWNlcylyZXR1cm47bGV0IG49ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/LnZhbHVlO0FycmF5LmlzQXJyYXkobil8fChuPVtuXSk7Y29uc3QgYT1bXSx7b3B0aW9uczpzfT10aGlzLmRhdGE7Zm9yKGxldCBlPTAsdD0wLHI9cy5sZW5ndGg7ZTxyO2UrKylpZihzW2VdLmV4cG9ydFZhbHVlPT09blt0XSl7YS5wdXNoKGUpO3QrPTF9dC5zZXQoIkkiLGEpfWFzeW5jIF9nZXRBcHBlYXJhbmNlKGUsdCxuLGEpe2lmKHRoaXMuZGF0YS5jb21ibylyZXR1cm4gc3VwZXIuX2dldEFwcGVhcmFuY2UoZSx0LG4sYSk7bGV0IHMscjtjb25zdCBpPWE/LmdldCh0aGlzLmRhdGEuaWQpO2lmKGkpe3I9aS5yb3RhdGlvbjtzPWkudmFsdWV9aWYodm9pZCAwPT09ciYmdm9pZCAwPT09cyYmIXRoaXMuX25lZWRBcHBlYXJhbmNlcylyZXR1cm4gbnVsbDt2b2lkIDA9PT1zP3M9dGhpcy5kYXRhLmZpZWxkVmFsdWU6QXJyYXkuaXNBcnJheShzKXx8KHM9W3NdKTtsZXR7d2lkdGg6byxoZWlnaHQ6bH09dGhpczs5MCE9PXImJjI3MCE9PXJ8fChbbyxsXT1bbCxvXSk7Y29uc3QgZj10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgsYz1bXTtmb3IobGV0IGU9MDtlPGY7ZSsrKXtjb25zdHtleHBvcnRWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXTtzLmluY2x1ZGVzKHQpJiZjLnB1c2goZSl9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7Y29uc3QgaD1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQsdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSx0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMpO2xldCB1LHtmb250U2l6ZTptfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKG0pdT10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZTtlbHNle2NvbnN0IGU9KGwtMSkvZjtsZXQgdCxuPS0xO2Zvcihjb25zdHtkaXNwbGF5VmFsdWU6ZX1vZiB0aGlzLmRhdGEub3B0aW9ucyl7Y29uc3QgYT10aGlzLl9nZXRUZXh0V2lkdGgoZSxoKTtpZihhPm4pe249YTt0PWV9fVt1LG1dPXRoaXMuX2NvbXB1dGVGb250U2l6ZShlLG8tNCx0LGgsLTEpfWNvbnN0IHA9MS4zNSptLGQ9KHAtbSkvMixnPU1hdGguZmxvb3IobC9wKTtsZXQgYj0wO2lmKGMubGVuZ3RoPjApe2NvbnN0IGU9TWF0aC5taW4oLi4uYyksdD1NYXRoLm1heCguLi5jKTtiPU1hdGgubWF4KDAsdC1nKzEpO2I+ZSYmKGI9ZSl9Y29uc3Qgdz1NYXRoLm1pbihiK2crMSxmKSxqPVsiL1R4IEJNQyBxIixgMSAxICR7b30gJHtsfSByZSBXIG5gXTtpZihjLmxlbmd0aCl7ai5wdXNoKCIwLjYwMDAwNiAwLjc1Njg2NiAwLjg1NDkwNCByZyIpO2Zvcihjb25zdCBlIG9mIGMpYjw9ZSYmZTx3JiZqLnB1c2goYDEgJHtsLShlLWIrMSkqcH0gJHtvfSAke3B9IHJlIGZgKX1qLnB1c2goIkJUIix1LGAxIDAgMCAxIDAgJHtsfSBUbWApO2NvbnN0IGs9e3NoaWZ0OjB9O2ZvcihsZXQgZT1iO2U8dztlKyspe2NvbnN0e2Rpc3BsYXlWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXSxuPWU9PT1iP2Q6MDtqLnB1c2godGhpcy5fcmVuZGVyVGV4dCh0LGgsbSxvLDAsaywyLC1wK24pKX1qLnB1c2goIkVUIFEgRU1DIik7cmV0dXJuIGouam9pbigiXG4iKX19Y2xhc3MgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257X2hhc1ZhbHVlRnJvbVhGQT0hMTtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuZmllbGRWYWx1ZT1udWxsO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9IXRoaXMuZGF0YS5oYXNPd25DYW52YXN9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOm51bGwscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHR5cGU6InNpZ25hdHVyZSJ9fX1jbGFzcyBUZXh0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLm5vUm90YXRlPSEwO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZGljdDp0fT1lO2lmKHRoaXMuZGF0YS5oYXNBcHBlYXJhbmNlKXRoaXMuZGF0YS5uYW1lPSJOb0ljb24iO2Vsc2V7dGhpcy5kYXRhLnJlY3RbMV09dGhpcy5kYXRhLnJlY3RbM10tMjI7dGhpcy5kYXRhLnJlY3RbMl09dGhpcy5kYXRhLnJlY3RbMF0rMjI7dGhpcy5kYXRhLm5hbWU9dC5oYXMoIk5hbWUiKT90LmdldCgiTmFtZSIpLm5hbWU6Ik5vdGUifWlmKHQuaGFzKCJTdGF0ZSIpKXt0aGlzLmRhdGEuc3RhdGU9dC5nZXQoIlN0YXRlIil8fG51bGw7dGhpcy5kYXRhLnN0YXRlTW9kZWw9dC5nZXQoIlN0YXRlTW9kZWwiKXx8bnVsbH1lbHNle3RoaXMuZGF0YS5zdGF0ZT1udWxsO3RoaXMuZGF0YS5zdGF0ZU1vZGVsPW51bGx9fX1jbGFzcyBMaW5rQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LGFubm90YXRpb25HbG9iYWxzOm59PWU7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdCBhPWdldFF1YWRQb2ludHModCx0aGlzLnJlY3RhbmdsZSk7YSYmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWEpO3RoaXMuZGF0YS5ib3JkZXJDb2xvcnx8PXRoaXMuZGF0YS5jb2xvcjtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OnQscmVzdWx0T2JqOnRoaXMuZGF0YSxkb2NCYXNlVXJsOm4uYmFzZVVybCxkb2NBdHRhY2htZW50czpuLmF0dGFjaG1lbnRzfSl9Z2V0IG92ZXJsYXlzVGV4dENvbnRlbnQoKXtyZXR1cm4hMH19Y2xhc3MgUG9wdXBBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnR9PWU7dGhpcy5kYXRhLm5vSFRNTD0hMTswIT09dGhpcy53aWR0aCYmMCE9PXRoaXMuaGVpZ2h0fHwodGhpcy5kYXRhLnJlY3Q9bnVsbCk7bGV0IG49dC5nZXQoIlBhcmVudCIpO2lmKCFuKXt3YXJuKCJQb3B1cCBhbm5vdGF0aW9uIGhhcyBhIG1pc3Npbmcgb3IgaW52YWxpZCBwYXJlbnQgYW5ub3RhdGlvbi4iKTtyZXR1cm59dGhpcy5kYXRhLnBhcmVudFJlY3Q9bG9va3VwTm9ybWFsUmVjdChuLmdldEFycmF5KCJSZWN0IiksbnVsbCk7dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT1uLmdldCgiQ3JlYXRpb25EYXRlIil8fCIiO2lzTmFtZShuLmdldCgiUlQiKSxPKSYmKG49bi5nZXQoIklSVCIpKTtpZihuLmhhcygiTSIpKXt0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUobi5nZXQoIk0iKSk7dGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9dGhpcy5tb2RpZmljYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9bnVsbDtpZihuLmhhcygiQyIpKXt0aGlzLnNldENvbG9yKG4uZ2V0QXJyYXkoIkMiKSk7dGhpcy5kYXRhLmNvbG9yPXRoaXMuY29sb3J9ZWxzZSB0aGlzLmRhdGEuY29sb3I9bnVsbDtpZighdGhpcy52aWV3YWJsZSl7Y29uc3QgZT1uLmdldCgiRiIpO3RoaXMuX2lzVmlld2FibGUoZSkmJnRoaXMuc2V0RmxhZ3MoZSl9dGhpcy5zZXRUaXRsZShuLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhuLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO24uaGFzKCJSQyIpJiYodGhpcy5kYXRhLnJpY2hUZXh0PVhGQUZhY3RvcnkuZ2V0UmljaFRleHRBc0h0bWwobi5nZXQoIlJDIikpKTt0aGlzLmRhdGEub3Blbj0hIXQuZ2V0KCJPcGVuIil9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LG4pe2NvbnN0e29sZEFubm90YXRpb246YSxyZWN0OnMscGFyZW50OnJ9PWUsaT1hfHxuZXcgRGljdCh0KTtpLnNldElmTm90RXhpc3RzKCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7aS5zZXRJZk5vdEV4aXN0cygiU3VidHlwZSIsTmFtZS5nZXQoIlBvcHVwIikpO2kuc2V0SWZOb3RFeGlzdHMoIk9wZW4iLCExKTtpLnNldElmQXJyYXkoIlJlY3QiLHMpO2kuc2V0KCJQYXJlbnQiLHIpO3JldHVybiBpfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxuKXtyZXR1cm4gbnVsbH19Y2xhc3MgRnJlZVRleHRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEuaXNFZGl0YWJsZT0hdGhpcy5kYXRhLm5vSFRNTDt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0e2Fubm90YXRpb25HbG9iYWxzOnQseHJlZjpufT1lO3RoaXMuc2V0RGVmYXVsdEFwcGVhcmFuY2UoZSk7dGhpcy5faGFzQXBwZWFyYW5jZT0hIXRoaXMuYXBwZWFyYW5jZTtpZih0aGlzLl9oYXNBcHBlYXJhbmNlKXtjb25zdHtmb250Q29sb3I6ZSxmb250U2l6ZTphfT1mdW5jdGlvbiBwYXJzZUFwcGVhcmFuY2VTdHJlYW0oZSx0LG4pe3JldHVybiBuZXcgQXBwZWFyYW5jZVN0cmVhbUV2YWx1YXRvcihlLHQsbikucGFyc2UoKX0odGhpcy5hcHBlYXJhbmNlLG4sdC5nbG9iYWxDb2xvclNwYWNlQ2FjaGUpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udENvbG9yPWU7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZT1hfHwxMH1lbHNle3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemV8fD0xMDtjb25zdHtmb250Q29sb3I6dCxmb250U2l6ZTphfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKHRoaXMuX2NvbnRlbnRzLnN0cil7dGhpcy5kYXRhLnRleHRDb250ZW50PXRoaXMuX2NvbnRlbnRzLnN0ci5zcGxpdCgvXHJcbj98XG4vKS5tYXAoZT0+ZS50cmltRW5kKCkpO2NvbnN0e2Nvb3JkczplLGJib3g6dCxtYXRyaXg6bn09RmFrZVVuaWNvZGVGb250LmdldEZpcnN0UG9zaXRpb25JbmZvKHRoaXMucmVjdGFuZ2xlLHRoaXMucm90YXRpb24sYSk7dGhpcy5kYXRhLnRleHRQb3NpdGlvbj10aGlzLl90cmFuc2Zvcm1Qb2ludChlLHQsbil9aWYodGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe2NvbnN0IHM9ZS5kaWN0LmdldCgiQ0EiKSxyPW5ldyBGYWtlVW5pY29kZUZvbnQobiwic2Fucy1zZXJpZiIpO3RoaXMuYXBwZWFyYW5jZT1yLmNyZWF0ZUFwcGVhcmFuY2UodGhpcy5fY29udGVudHMuc3RyLHRoaXMucmVjdGFuZ2xlLHRoaXMucm90YXRpb24sYSx0LHMpO3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UpfWVsc2Ugd2FybigiRnJlZVRleHRBbm5vdGF0aW9uOiBPZmZzY3JlZW5DYW52YXMgaXMgbm90IHN1cHBvcnRlZCwgYW5ub3RhdGlvbiBtYXkgbm90IHJlbmRlciBjb3JyZWN0bHkuIil9fWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiB0aGlzLl9oYXNBcHBlYXJhbmNlfXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6bixhcDphfSl7Y29uc3R7Y29sb3I6cyxkYXRlOnIsZm9udFNpemU6aSxvbGRBbm5vdGF0aW9uOm8scmVjdDpsLHJvdGF0aW9uOmYsdXNlcjpjLHZhbHVlOmh9PWUsdT1vfHxuZXcgRGljdCh0KTt1LnNldElmTm90RXhpc3RzKCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7dS5zZXRJZk5vdEV4aXN0cygiU3VidHlwZSIsTmFtZS5nZXQoIkZyZWVUZXh0IikpO3Uuc2V0KG8/Ik0iOiJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZShyKX1gKTtvJiZ1LmRlbGV0ZSgiUkMiKTt1LnNldElmQXJyYXkoIlJlY3QiLGwpO2NvbnN0IG09YC9IZWx2ICR7aX0gVGYgJHtnZXRQZGZDb2xvcihzLCEwKX1gO3Uuc2V0KCJEQSIsbSk7dS5zZXRJZkRlZmluZWQoIkNvbnRlbnRzIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGgpKTt1LnNldElmTm90RXhpc3RzKCJGIiw0KTt1LnNldElmTm90RXhpc3RzKCJCb3JkZXIiLFswLDAsMF0pO3Uuc2V0SWZOdW1iZXIoIlJvdGF0ZSIsZik7dS5zZXRJZkRlZmluZWQoIlQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUoYykpO2lmKG58fGEpe2NvbnN0IGU9bmV3IERpY3QodCk7dS5zZXQoIkFQIixlKTtlLnNldCgiTiIsbnx8YSl9cmV0dXJuIHV9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LG4pe2NvbnN0e2Jhc2VGb250UmVmOmEsZXZhbHVhdG9yOnMsdGFzazpyfT1uLHtjb2xvcjppLGZvbnRTaXplOm8scmVjdDpsLHJvdGF0aW9uOmYsdmFsdWU6Y309ZTtpZighaSlyZXR1cm4gbnVsbDtjb25zdCBoPW5ldyBEaWN0KHQpLHU9bmV3IERpY3QodCk7aWYoYSl1LnNldCgiSGVsdiIsYSk7ZWxzZXtjb25zdCBlPW5ldyBEaWN0KHQpO2Uuc2V0SWZOYW1lKCJCYXNlRm9udCIsIkhlbHZldGljYSIpO2Uuc2V0SWZOYW1lKCJUeXBlIiwiRm9udCIpO2Uuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiVHlwZTEiKTtlLnNldElmTmFtZSgiRW5jb2RpbmciLCJXaW5BbnNpRW5jb2RpbmciKTt1LnNldCgiSGVsdiIsZSl9aC5zZXQoIkZvbnQiLHUpO2NvbnN0IG09YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEocyxyLHtmb250TmFtZToiSGVsdiIsZm9udFNpemU6b30saCksW3AsZCxnLGJdPWw7bGV0IHc9Zy1wLGo9Yi1kO2YlMTgwIT0wJiYoW3csal09W2osd10pO2NvbnN0IGs9Yy5zcGxpdCgiXG4iKSx5PW8vMWUzO2xldCBxPS0xLzA7Y29uc3Qgdj1bXTtmb3IobGV0IGUgb2Ygayl7Y29uc3QgdD1tLmVuY29kZVN0cmluZyhlKTtpZih0Lmxlbmd0aD4xKXJldHVybiBudWxsO2U9dC5qb2luKCIiKTt2LnB1c2goZSk7bGV0IG49MDtjb25zdCBhPW0uY2hhcnNUb0dseXBocyhlKTtmb3IoY29uc3QgZSBvZiBhKW4rPWUud2lkdGgqeTtxPU1hdGgubWF4KHEsbil9Y29uc3QgUz1xPnc/dy9xOjE7bGV0IHg9MTtjb25zdCBDPTEuMzUqbyxGPTEqbyxUPUMqay5sZW5ndGg7VD5qJiYoeD1qL1QpO2NvbnN0IFI9bypNYXRoLm1pbihTLHgpO2xldCBPLEgsRDtzd2l0Y2goZil7Y2FzZSAwOkQ9WzEsMCwwLDFdO0g9W2xbMF0sbFsxXSx3LGpdO089W2xbMF0sbFszXS1GXTticmVhaztjYXNlIDkwOkQ9WzAsMSwtMSwwXTtIPVtsWzFdLC1sWzJdLHcsal07Tz1bbFsxXSwtbFswXS1GXTticmVhaztjYXNlIDE4MDpEPVstMSwwLDAsLTFdO0g9Wy1sWzJdLC1sWzNdLHcsal07Tz1bLWxbMl0sLWxbMV0tRl07YnJlYWs7Y2FzZSAyNzA6RD1bMCwtMSwxLDBdO0g9Wy1sWzNdLGxbMF0sdyxqXTtPPVstbFszXSxsWzJdLUZdfWNvbnN0IE09WyJxIixgJHtELmpvaW4oIiAiKX0gMCAwIGNtYCxgJHtILmpvaW4oIiAiKX0gcmUgVyBuYCwiQlQiLGAke2dldFBkZkNvbG9yKGksITApfWAsYDAgVGMgL0hlbHYgJHtudW1iZXJUb1N0cmluZyhSKX0gVGZgXTtNLnB1c2goYCR7Ty5qb2luKCIgIil9IFRkICgke2VzY2FwZVN0cmluZyh2WzBdKX0pIFRqYCk7Y29uc3QgTj1udW1iZXJUb1N0cmluZyhDKTtmb3IobGV0IGU9MSx0PXYubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9dltlXTtNLnB1c2goYDAgLSR7Tn0gVGQgKCR7ZXNjYXBlU3RyaW5nKHQpfSkgVGpgKX1NLnB1c2goIkVUIiwiUSIpO2NvbnN0IEU9TS5qb2luKCJcbiIpLF89bmV3IERpY3QodCk7Xy5zZXQoIkZvcm1UeXBlIiwxKTtfLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtfLnNldElmTmFtZSgiVHlwZSIsIlhPYmplY3QiKTtfLnNldCgiQkJveCIsbCk7Xy5zZXQoIlJlc291cmNlcyIsaCk7Xy5zZXQoIk1hdHJpeCIsWzEsMCwwLDEsLWxbMF0sLWxbMV1dKTtyZXR1cm4gbmV3IFN0cmluZ1N0cmVhbShFLF8pfX1jbGFzcyBMaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6bn09ZTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0IGE9bG9va3VwUmVjdCh0LmdldEFycmF5KCJMIiksWzAsMCwwLDBdKTt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzPVV0aWwubm9ybWFsaXplUmVjdChhKTt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLHM9dC5nZXQoIkNBIikscj1nZXRQZGZDb2xvckFycmF5KGdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCkpLGk9cj9zOm51bGwsbz10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLGw9MipvLGY9W3RoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMF0tbCx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzFdLWwsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1syXStsLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbM10rbF07VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsZil8fCh0aGlzLnJlY3RhbmdsZT1mKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjpuLGV4dHJhOmAke299IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnIsc3Ryb2tlQWxwaGE6cyxmaWxsQWxwaGE6aSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHthWzBdfSAke2FbMV19IG1gLGAke2FbMl19ICR7YVszXX0gbGAsIlMiKTtyZXR1cm5bdFswXS1vLHRbN10tbyx0WzJdK28sdFszXStvXX19KX19fWNsYXNzIFNxdWFyZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOm59PWU7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxhPXQuZ2V0KCJDQSIpLHM9Z2V0UGRmQ29sb3JBcnJheShnZXRSZ2JDb2xvcih0LmdldEFycmF5KCJJQyIpLG51bGwpKSxyPXM/YTpudWxsO2lmKDA9PT10aGlzLmJvcmRlclN0eWxlLndpZHRoJiYhcylyZXR1cm47dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6bixleHRyYTpgJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofSB3YCxzdHJva2VDb2xvcjplLGZpbGxDb2xvcjpzLHN0cm9rZUFscGhhOmEsZmlsbEFscGhhOnIscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBuPXRbNF0rdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLGE9dFs1XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIscj10WzZdLXRbNF0tdGhpcy5ib3JkZXJTdHlsZS53aWR0aCxpPXRbM10tdFs3XS10aGlzLmJvcmRlclN0eWxlLndpZHRoO2UucHVzaChgJHtufSAke2F9ICR7cn0gJHtpfSByZWApO3M/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFs3XSx0WzJdLHRbM11dfX0pfX19Y2xhc3MgQ2lyY2xlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6bn09ZTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxhPXQuZ2V0KCJDQSIpLHM9Z2V0UGRmQ29sb3JBcnJheShnZXRSZ2JDb2xvcih0LmdldEFycmF5KCJJQyIpLG51bGwpKSxyPXM/YTpudWxsO2lmKDA9PT10aGlzLmJvcmRlclN0eWxlLndpZHRoJiYhcylyZXR1cm47Y29uc3QgaT00LzMqTWF0aC50YW4oTWF0aC5QSS84KTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjpuLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6YSxmaWxsQWxwaGE6cixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IG49dFswXSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYT10WzFdLXRoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbNl0tdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG89dFs3XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbD1uKyhyLW4pLzIsZj1hKyhvLWEpLzIsYz0oci1uKS8yKmksaD0oby1hKS8yKmk7ZS5wdXNoKGAke2x9ICR7b30gbWAsYCR7bCtjfSAke299ICR7cn0gJHtmK2h9ICR7cn0gJHtmfSBjYCxgJHtyfSAke2YtaH0gJHtsK2N9ICR7YX0gJHtsfSAke2F9IGNgLGAke2wtY30gJHthfSAke259ICR7Zi1ofSAke259ICR7Zn0gY2AsYCR7bn0gJHtmK2h9ICR7bC1jfSAke299ICR7bH0gJHtvfSBjYCwiaCIpO3M/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFs3XSx0WzJdLHRbM11dfX0pfX19Y2xhc3MgUG9seWxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0Om4seHJlZjphfT1lO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLnZlcnRpY2VzPW51bGw7aWYoISh0aGlzIGluc3RhbmNlb2YgUG9seWdvbkFubm90YXRpb24pKXt0aGlzLnNldExpbmVFbmRpbmdzKG4uZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzfWNvbnN0IHM9bi5nZXRBcnJheSgiVmVydGljZXMiKTtpZighaXNOdW1iZXJBcnJheShzLG51bGwpKXJldHVybjtjb25zdCByPXRoaXMuZGF0YS52ZXJ0aWNlcz1GbG9hdDMyQXJyYXkuZnJvbShzKTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxzPW4uZ2V0KCJDQSIpO2xldCBpLG89Z2V0UmdiQ29sb3Iobi5nZXRBcnJheSgiSUMiKSxudWxsKTtvJiY9Z2V0UGRmQ29sb3JBcnJheShvKTtpPW8/dGhpcy5jb2xvcj9vLmV2ZXJ5KCh0LG4pPT50PT09ZVtuXSk/ImYiOiJCIjoiZiI6IlMiO2NvbnN0IGw9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxmPTIqbCxjPXQuc2xpY2UoKTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKz0yKVV0aWwucmVjdEJvdW5kaW5nQm94KHJbZV0tZixyW2UrMV0tZixyW2VdK2YscltlKzFdK2YsYyk7VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsYyl8fCh0aGlzLnJlY3RhbmdsZT1jKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOmAke2x9IHdgLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6cyxmaWxsQ29sb3I6byxmaWxsQWxwaGE6bz9zOm51bGwscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntmb3IobGV0IHQ9MCxuPXIubGVuZ3RoO3Q8bjt0Kz0yKWUucHVzaChgJHtyW3RdfSAke3JbdCsxXX0gJHswPT09dD8ibSI6ImwifWApO2UucHVzaChpKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fX1jbGFzcyBQb2x5Z29uQW5ub3RhdGlvbiBleHRlbmRzIFBvbHlsaW5lQW5ub3RhdGlvbnt9Y2xhc3MgQ2FyZXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbnt9Y2xhc3MgSW5rQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdHtkaWN0Om4seHJlZjphfT1lO3RoaXMuZGF0YS5pbmtMaXN0cz1bXTt0aGlzLmRhdGEuaXNFZGl0YWJsZT0hdGhpcy5kYXRhLm5vSFRNTDt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5vcGFjaXR5PW4uZ2V0KCJDQSIpfHwxO2NvbnN0IHM9bi5nZXRBcnJheSgiSW5rTGlzdCIpO2lmKEFycmF5LmlzQXJyYXkocykpe2Zvcihjb25zdCBlIG9mIHMpe2lmKCFBcnJheS5pc0FycmF5KGUpKWNvbnRpbnVlO2NvbnN0IHQ9bmV3IEZsb2F0MzJBcnJheShlLmxlbmd0aCk7dGhpcy5kYXRhLmlua0xpc3RzLnB1c2godCk7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bis9Mil7Y29uc3Qgcz1hLmZldGNoSWZSZWYoZVtuXSkscj1hLmZldGNoSWZSZWYoZVtuKzFdKTtpZigibnVtYmVyIj09dHlwZW9mIHMmJiJudW1iZXIiPT10eXBlb2Ygcil7dFtuXT1zO3RbbisxXT1yfX19aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT1nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IsWzAsMCwwXSkscz1uLmdldCgiQ0EiKSxyPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEsaT0yKnIsbz10LnNsaWNlKCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhLmlua0xpc3RzKWZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrPTIpVXRpbC5yZWN0Qm91bmRpbmdCb3goZVt0XS1pLGVbdCsxXS1pLGVbdF0raSxlW3QrMV0raSxvKTtVdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxvKXx8KHRoaXMucmVjdGFuZ2xlPW8pO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6YCR7cn0gd2Asc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTpzLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Zm9yKGNvbnN0IHQgb2YgdGhpcy5kYXRhLmlua0xpc3RzKXtmb3IobGV0IG49MCxhPXQubGVuZ3RoO248YTtuKz0yKWUucHVzaChgJHt0W25dfSAke3RbbisxXX0gJHswPT09bj8ibSI6ImwifWApO2UucHVzaCgiUyIpfXJldHVyblt0WzBdLHRbN10sdFsyXSx0WzNdXX19KX19fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6bixhcDphfSl7Y29uc3R7b2xkQW5ub3RhdGlvbjpzLGNvbG9yOnIsZGF0ZTppLG9wYWNpdHk6byxwYXRoczpsLG91dGxpbmVzOmYscmVjdDpjLHJvdGF0aW9uOmgsdGhpY2tuZXNzOnUsdXNlcjptfT1lLHA9c3x8bmV3IERpY3QodCk7cC5zZXRJZk5vdEV4aXN0cygiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO3Auc2V0SWZOb3RFeGlzdHMoIlN1YnR5cGUiLE5hbWUuZ2V0KCJJbmsiKSk7cC5zZXQocz8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKGkpfWApO3Auc2V0SWZBcnJheSgiUmVjdCIsYyk7cC5zZXRJZkFycmF5KCJJbmtMaXN0IixmPy5wb2ludHN8fGw/LnBvaW50cyk7cC5zZXRJZk5vdEV4aXN0cygiRiIsNCk7cC5zZXRJZk51bWJlcigiUm90YXRlIixoKTtwLnNldElmRGVmaW5lZCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShtKSk7ZiYmcC5zZXRJZk5hbWUoIklUIiwiSW5rSGlnaGxpZ2h0Iik7aWYodT4wKXtjb25zdCBlPW5ldyBEaWN0KHQpO3Auc2V0KCJCUyIsZSk7ZS5zZXQoIlciLHUpfXAuc2V0SWZBcnJheSgiQyIsZ2V0UGRmQ29sb3JBcnJheShyKSk7cC5zZXRJZk51bWJlcigiQ0EiLG8pO2lmKGF8fG4pe2NvbnN0IGU9bmV3IERpY3QodCk7cC5zZXQoIkFQIixlKTtlLnNldCgiTiIsbnx8YSl9cmV0dXJuIHB9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LG4pe2lmKGUub3V0bGluZXMpcmV0dXJuIHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbUZvckhpZ2hsaWdodChlLHQsbik7Y29uc3R7Y29sb3I6YSxyZWN0OnMscGF0aHM6cix0aGlja25lc3M6aSxvcGFjaXR5Om99PWU7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3QgbD1bYCR7aX0gdyAxIEogMSBqYCxgJHtnZXRQZGZDb2xvcihhLCExKX1gXTsxIT09byYmbC5wdXNoKCIvUjAgZ3MiKTtmb3IoY29uc3QgZSBvZiByLmxpbmVzKXtsLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVs1XSl9IG1gKTtmb3IobGV0IHQ9NixuPWUubGVuZ3RoO3Q8bjt0Kz02KWlmKGlzTmFOKGVbdF0pKWwucHVzaChgJHtudW1iZXJUb1N0cmluZyhlW3QrNF0pfSAke251bWJlclRvU3RyaW5nKGVbdCs1XSl9IGxgKTtlbHNle2NvbnN0W24sYSxzLHIsaSxvXT1lLnNsaWNlKHQsdCs2KTtsLnB1c2goW24sYSxzLHIsaSxvXS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKSsiIGMiKX02PT09ZS5sZW5ndGgmJmwucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzRdKX0gJHtudW1iZXJUb1N0cmluZyhlWzVdKX0gbGApfWwucHVzaCgiUyIpO2NvbnN0IGY9bC5qb2luKCJcbiIpLGM9bmV3IERpY3QodCk7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtjLnNldElmTmFtZSgiVHlwZSIsIlhPYmplY3QiKTtjLnNldCgiQkJveCIscyk7Yy5zZXQoIkxlbmd0aCIsZi5sZW5ndGgpO2lmKDEhPT1vKXtjb25zdCBlPW5ldyBEaWN0KHQpLG49bmV3IERpY3QodCksYT1uZXcgRGljdCh0KTthLnNldCgiQ0EiLG8pO2Euc2V0SWZOYW1lKCJUeXBlIiwiRXh0R1N0YXRlIik7bi5zZXQoIlIwIixhKTtlLnNldCgiRXh0R1N0YXRlIixuKTtjLnNldCgiUmVzb3VyY2VzIixlKX1yZXR1cm4gbmV3IFN0cmluZ1N0cmVhbShmLGMpfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtRm9ySGlnaGxpZ2h0KGUsdCxuKXtjb25zdHtjb2xvcjphLHJlY3Q6cyxvdXRsaW5lczp7b3V0bGluZTpyfSxvcGFjaXR5Oml9PWU7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3Qgbz1bYCR7Z2V0UGRmQ29sb3IoYSwhMCl9YCwiL1IwIGdzIl07by5wdXNoKGAke251bWJlclRvU3RyaW5nKHJbNF0pfSAke251bWJlclRvU3RyaW5nKHJbNV0pfSBtYCk7Zm9yKGxldCBlPTYsdD1yLmxlbmd0aDtlPHQ7ZSs9NilpZihpc05hTihyW2VdKSlvLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcocltlKzRdKX0gJHtudW1iZXJUb1N0cmluZyhyW2UrNV0pfSBsYCk7ZWxzZXtjb25zdFt0LG4sYSxzLGksbF09ci5zbGljZShlLGUrNik7by5wdXNoKFt0LG4sYSxzLGksbF0ubWFwKG51bWJlclRvU3RyaW5nKS5qb2luKCIgIikrIiBjIil9by5wdXNoKCJoIGYiKTtjb25zdCBsPW8uam9pbigiXG4iKSxmPW5ldyBEaWN0KHQpO2Yuc2V0KCJGb3JtVHlwZSIsMSk7Zi5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7Zi5zZXRJZk5hbWUoIlR5cGUiLCJYT2JqZWN0Iik7Zi5zZXQoIkJCb3giLHMpO2Yuc2V0KCJMZW5ndGgiLGwubGVuZ3RoKTtjb25zdCBjPW5ldyBEaWN0KHQpLGg9bmV3IERpY3QodCk7Yy5zZXQoIkV4dEdTdGF0ZSIsaCk7Zi5zZXQoIlJlc291cmNlcyIsYyk7Y29uc3QgdT1uZXcgRGljdCh0KTtoLnNldCgiUjAiLHUpO3Uuc2V0SWZOYW1lKCJCTSIsIk11bHRpcGx5Iik7aWYoMSE9PWkpe3Uuc2V0KCJjYSIsaSk7dS5zZXRJZk5hbWUoIlR5cGUiLCJFeHRHU3RhdGUiKX1yZXR1cm4gbmV3IFN0cmluZ1N0cmVhbShsLGYpfX1jbGFzcyBIaWdobGlnaHRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjpufT1lO3RoaXMuZGF0YS5pc0VkaXRhYmxlPSF0aGlzLmRhdGEubm9IVE1MO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLm9wYWNpdHk9dC5nZXQoIkNBIil8fDE7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMSwxLDBdKSxhPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOm4sZmlsbENvbG9yOmUsYmxlbmRNb2RlOiJNdWx0aXBseSIsZmlsbEFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7dFswXX0gJHt0WzFdfSBtYCxgJHt0WzJdfSAke3RbM119IGxgLGAke3RbNl19ICR7dFs3XX0gbGAsYCR7dFs0XX0gJHt0WzVdfSBsYCwiZiIpO3JldHVyblt0WzBdLHRbN10sdFsyXSx0WzNdXX19KX19ZWxzZSB0aGlzLmRhdGEucG9wdXBSZWY9bnVsbH1nZXQgb3ZlcmxheXNUZXh0Q29udGVudCgpe3JldHVybiEwfXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6bixhcDphfSl7Y29uc3R7Y29sb3I6cyxkYXRlOnIsb2xkQW5ub3RhdGlvbjppLG9wYWNpdHk6byxyZWN0Omwscm90YXRpb246Zix1c2VyOmMscXVhZFBvaW50czpofT1lLHU9aXx8bmV3IERpY3QodCk7dS5zZXRJZk5vdEV4aXN0cygiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO3Uuc2V0SWZOb3RFeGlzdHMoIlN1YnR5cGUiLE5hbWUuZ2V0KCJIaWdobGlnaHQiKSk7dS5zZXQoaT8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKHIpfWApO3Uuc2V0SWZBcnJheSgiUmVjdCIsbCk7dS5zZXRJZk5vdEV4aXN0cygiRiIsNCk7dS5zZXRJZk5vdEV4aXN0cygiQm9yZGVyIixbMCwwLDBdKTt1LnNldElmTnVtYmVyKCJSb3RhdGUiLGYpO3Uuc2V0SWZBcnJheSgiUXVhZFBvaW50cyIsaCk7dS5zZXRJZkFycmF5KCJDIixnZXRQZGZDb2xvckFycmF5KHMpKTt1LnNldElmTnVtYmVyKCJDQSIsbyk7dS5zZXRJZkRlZmluZWQoIlQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUoYykpO2lmKG58fGEpe2NvbnN0IGU9bmV3IERpY3QodCk7dS5zZXQoIkFQIixlKTtlLnNldCgiTiIsbnx8YSl9cmV0dXJuIHV9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LG4pe2NvbnN0e2NvbG9yOmEscmVjdDpzLG91dGxpbmVzOnIsb3BhY2l0eTppfT1lO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG89W2Ake2dldFBkZkNvbG9yKGEsITApfWAsIi9SMCBncyJdLGw9W107Zm9yKGNvbnN0IGUgb2Ygcil7bC5sZW5ndGg9MDtsLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVswXSl9ICR7bnVtYmVyVG9TdHJpbmcoZVsxXSl9IG1gKTtmb3IobGV0IHQ9MixuPWUubGVuZ3RoO3Q8bjt0Kz0yKWwucHVzaChgJHtudW1iZXJUb1N0cmluZyhlW3RdKX0gJHtudW1iZXJUb1N0cmluZyhlW3QrMV0pfSBsYCk7bC5wdXNoKCJoIik7by5wdXNoKGwuam9pbigiXG4iKSl9by5wdXNoKCJmKiIpO2NvbnN0IGY9by5qb2luKCJcbiIpLGM9bmV3IERpY3QodCk7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtjLnNldElmTmFtZSgiVHlwZSIsIlhPYmplY3QiKTtjLnNldCgiQkJveCIscyk7Yy5zZXQoIkxlbmd0aCIsZi5sZW5ndGgpO2NvbnN0IGg9bmV3IERpY3QodCksdT1uZXcgRGljdCh0KTtoLnNldCgiRXh0R1N0YXRlIix1KTtjLnNldCgiUmVzb3VyY2VzIixoKTtjb25zdCBtPW5ldyBEaWN0KHQpO3Uuc2V0KCJSMCIsbSk7bS5zZXRJZk5hbWUoIkJNIiwiTXVsdGlwbHkiKTtpZigxIT09aSl7bS5zZXQoImNhIixpKTttLnNldElmTmFtZSgiVHlwZSIsIkV4dEdTdGF0ZSIpfXJldHVybiBuZXcgU3RyaW5nU3RyZWFtKGYsYyl9fWNsYXNzIFVuZGVybGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOm59PWU7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxhPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOm4sZXh0cmE6IltdIDAgZCAwLjU3MSB3IixzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7dFs0XX0gJHt0WzVdKzEuM30gbWAsYCR7dFs2XX0gJHt0WzddKzEuM30gbGAsIlMiKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9Z2V0IG92ZXJsYXlzVGV4dENvbnRlbnQoKXtyZXR1cm4hMH19Y2xhc3MgU3F1aWdnbHlBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjpufT1lO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT1nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IsWzAsMCwwXSksYT10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjpuLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBuPSh0WzFdLXRbNV0pLzY7bGV0IGE9bixzPXRbNF07Y29uc3Qgcj10WzVdLGk9dFs2XTtlLnB1c2goYCR7c30gJHtyK2F9IG1gKTtkb3tzKz0yO2E9MD09PWE/bjowO2UucHVzaChgJHtzfSAke3IrYX0gbGApfXdoaWxlKHM8aSk7ZS5wdXNoKCJTIik7cmV0dXJuW3RbNF0sci0yKm4saSxyKzIqbl19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9Z2V0IG92ZXJsYXlzVGV4dENvbnRlbnQoKXtyZXR1cm4hMH19Y2xhc3MgU3RyaWtlT3V0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6bn09ZTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLGE9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6bixleHRyYToiW10gMCBkIDEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKCh0WzBdK3RbNF0pLzIrIiAiKyh0WzFdK3RbNV0pLzIrIiBtIiwodFsyXSt0WzZdKS8yKyIgIisodFszXSt0WzddKS8yKyIgbCIsIlMiKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9Z2V0IG92ZXJsYXlzVGV4dENvbnRlbnQoKXtyZXR1cm4hMH19Y2xhc3MgU3RhbXBBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbnsjQXQ9bnVsbDtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEuaXNFZGl0YWJsZT0hdGhpcy5kYXRhLm5vSFRNTDt0aGlzLmRhdGEubm9IVE1MPSExfW11c3RCZVZpZXdlZFdoZW5FZGl0aW5nKGUsdD1udWxsKXtpZihlKXtpZighdGhpcy5kYXRhLmlzRWRpdGFibGUpcmV0dXJuITA7dGhpcy4jQXQ/Pz10aGlzLmRhdGEuaGFzT3duQ2FudmFzO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9ITA7cmV0dXJuITB9aWYobnVsbCE9PXRoaXMuI0F0KXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuI0F0O3RoaXMuI0F0PW51bGx9cmV0dXJuIXQ/Lmhhcyh0aGlzLmRhdGEuaWQpfXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6bixhcDphfSl7Y29uc3R7ZGF0ZTpzLG9sZEFubm90YXRpb246cixyZWN0Omkscm90YXRpb246byx1c2VyOmx9PWUsZj1yfHxuZXcgRGljdCh0KTtmLnNldElmTm90RXhpc3RzKCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7Zi5zZXRJZk5vdEV4aXN0cygiU3VidHlwZSIsTmFtZS5nZXQoIlN0YW1wIikpO2Yuc2V0KHI/Ik0iOiJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZShzKX1gKTtmLnNldElmQXJyYXkoIlJlY3QiLGkpO2Yuc2V0SWZOb3RFeGlzdHMoIkYiLDQpO2Yuc2V0SWZOb3RFeGlzdHMoIkJvcmRlciIsWzAsMCwwXSk7Zi5zZXRJZk51bWJlcigiUm90YXRlIixvKTtmLnNldElmRGVmaW5lZCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShsKSk7aWYobnx8YSl7Y29uc3QgZT1uZXcgRGljdCh0KTtmLnNldCgiQVAiLGUpO2Uuc2V0KCJOIixufHxhKX1yZXR1cm4gZn1zdGF0aWMgYXN5bmMjeHQoZSx0KXtjb25zdHthcmVDb250b3VyczpuLGNvbG9yOmEscmVjdDpzLGxpbmVzOnIsdGhpY2tuZXNzOml9PWU7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3Qgbz1bYCR7aX0gdyAxIEogMSBqYCxgJHtnZXRQZGZDb2xvcihhLG4pfWBdO2Zvcihjb25zdCBlIG9mIHIpe28ucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzRdKX0gJHtudW1iZXJUb1N0cmluZyhlWzVdKX0gbWApO2ZvcihsZXQgdD02LG49ZS5sZW5ndGg7dDxuO3QrPTYpaWYoaXNOYU4oZVt0XSkpby5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbdCs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVt0KzVdKX0gbGApO2Vsc2V7Y29uc3RbbixhLHMscixpLGxdPWUuc2xpY2UodCx0KzYpO28ucHVzaChbbixhLHMscixpLGxdLm1hcChudW1iZXJUb1N0cmluZykuam9pbigiICIpKyIgYyIpfTY9PT1lLmxlbmd0aCYmby5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbNF0pfSAke251bWJlclRvU3RyaW5nKGVbNV0pfSBsYCl9by5wdXNoKG4/IkYiOiJTIik7Y29uc3QgbD1vLmpvaW4oIlxuIiksZj1uZXcgRGljdCh0KTtmLnNldCgiRm9ybVR5cGUiLDEpO2Yuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2Yuc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO2Yuc2V0KCJCQm94IixzKTtmLnNldCgiTGVuZ3RoIixsLmxlbmd0aCk7cmV0dXJuIG5ldyBTdHJpbmdTdHJlYW0obCxmKX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsbil7aWYoZS5vbGRBbm5vdGF0aW9uKXJldHVybiBudWxsO2lmKGUuaXNTaWduYXR1cmUpcmV0dXJuIHRoaXMuI3h0KGUsdCk7Y29uc3R7cm90YXRpb246YX09ZSx7aW1hZ2VSZWY6cyx3aWR0aDpyLGhlaWdodDppfT1uLmltYWdlLG89bmV3IERpY3QodCksbD1uZXcgRGljdCh0KTtvLnNldCgiWE9iamVjdCIsbCk7bC5zZXQoIkltMCIscyk7Y29uc3QgZj1gcSAke3J9IDAgMCAke2l9IDAgMCBjbSAvSW0wIERvIFFgLGM9bmV3IERpY3QodCk7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtjLnNldElmTmFtZSgiVHlwZSIsIlhPYmplY3QiKTtjLnNldCgiQkJveCIsWzAsMCxyLGldKTtjLnNldCgiUmVzb3VyY2VzIixvKTtpZihhKXtjb25zdCBlPWdldFJvdGF0aW9uTWF0cml4KGEscixpKTtjLnNldCgiTWF0cml4IixlKX1yZXR1cm4gbmV3IFN0cmluZ1N0cmVhbShmLGMpfX1jbGFzcyBGaWxlQXR0YWNobWVudEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2Fubm90YXRpb25HbG9iYWxzOnQsZGljdDpufT1lLGE9bi5nZXQoIkZTIik7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEuZmlsZUlkPXRoaXMuX2dldEF0dGFjaG1lbnRJZChhLG4uZ2V0UmF3KCJGUyIpLHQpO3RoaXMuZGF0YS5maWxlPW5ldyBGaWxlU3BlYyhhKS5zZXJpYWxpemFibGU7Y29uc3Qgcz1uLmdldCgiTmFtZSIpO3RoaXMuZGF0YS5uYW1lPXMgaW5zdGFuY2VvZiBOYW1lP3N0cmluZ1RvUERGU3RyaW5nKHMubmFtZSk6IlB1c2hQaW4iO2NvbnN0IHI9bi5nZXQoImNhIik7dGhpcy5kYXRhLmZpbGxBbHBoYT0ibnVtYmVyIj09dHlwZW9mIHImJnI+PTAmJnI8PTE/cjpudWxsfX1jbGFzcyBNZWRpYUFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue3N0YXRpYyNDdD0vXig/OnZpZGVvfGF1ZGlvKVwvLztjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEubm9IVE1MPSEwfV9zZXRNZWRpYURhdGEoe2Fzc2V0UmVmOmUsYXNzZXREaWN0OnQsZmlsZW5hbWU6bixjb250ZW50VHlwZTphLHdyYXBTb3VuZDpzPSExfSxyKXt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5yaWNoTWVkaWE9e2ZpbGVJZDp0aGlzLl9nZXRBdHRhY2htZW50SWQodCxlLHIscyksZmlsZW5hbWU6bixjb250ZW50VHlwZTphfX1zdGF0aWMgX2dldENvbnRlbnRUeXBlKGUsdCxuPW51bGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbiYmTWVkaWFBbm5vdGF0aW9uLiNDdC50ZXN0KG4pKXJldHVybiBuO2NvbnN0IGE9RmlsZVNwZWMucGlja1BsYXRmb3JtSXRlbShlLmdldCgiRUYiKSkscz1hIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9hLmRpY3Q/LmdldCgiU3VidHlwZSIpOm51bGw7aWYocyBpbnN0YW5jZW9mIE5hbWUmJk1lZGlhQW5ub3RhdGlvbi4jQ3QudGVzdChzLm5hbWUpKXJldHVybiBzLm5hbWU7Y29uc3Qgcj10LnNwbGl0KCIuIikuYXQoLTEpPy50b0xvd2VyQ2FzZSgpO3N3aXRjaChyKXtjYXNlIm1wNCI6Y2FzZSJtNHYiOnJldHVybiJ2aWRlby9tcDQiO2Nhc2Uid2VibSI6cmV0dXJuInZpZGVvL3dlYm0iO2Nhc2Uib2d2IjpyZXR1cm4idmlkZW8vb2dnIjtjYXNlIm1vdiI6cmV0dXJuInZpZGVvL3F1aWNrdGltZSI7Y2FzZSJtcDMiOnJldHVybiJhdWRpby9tcGVnIjtjYXNlIm00YSI6cmV0dXJuImF1ZGlvL21wNCI7Y2FzZSJ3YXYiOnJldHVybiJhdWRpby93YXYiO2Nhc2Uib2dhIjpjYXNlIm9nZyI6cmV0dXJuImF1ZGlvL29nZyI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19fWNsYXNzIFJpY2hNZWRpYUFubm90YXRpb24gZXh0ZW5kcyBNZWRpYUFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6bixhbm5vdGF0aW9uR2xvYmFsczphfT1lLHM9dC5nZXQoIlJpY2hNZWRpYUNvbnRlbnQiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3Qgcj1SaWNoTWVkaWFBbm5vdGF0aW9uLiNJdChzLG4pO3I/dGhpcy5fc2V0TWVkaWFEYXRhKHIsYSk6d2FybigiUmljaE1lZGlhIGFubm90YXRpb24gaGFzIG5vIHBsYXlhYmxlIGFzc2V0LiIpfXN0YXRpYyNJdChlLHQpe2NvbnN0IG49ZS5nZXQoIkNvbmZpZ3VyYXRpb25zIik7aWYoIUFycmF5LmlzQXJyYXkobikpcmV0dXJuIG51bGw7Zm9yKGNvbnN0IGUgb2Ygbil7Y29uc3Qgbj10LmZldGNoSWZSZWYoZSk7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7Y29uc3QgYT1uLmdldCgiSW5zdGFuY2VzIik7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IoY29uc3QgZSBvZiBhKXtjb25zdCBuPXQuZmV0Y2hJZlJlZihlKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtpZihpc05hbWUobi5nZXQoIlN1YnR5cGUiKSwiRmxhc2giKSljb250aW51ZTtjb25zdCBhPW4uZ2V0UmF3KCJBc3NldCIpLHM9dC5mZXRjaElmUmVmKGEpO2lmKCEocyBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKCFGaWxlU3BlYy5oYXNFbWJlZGRlZEZpbGUocykpY29udGludWU7Y29uc3R7ZmlsZW5hbWU6cn09bmV3IEZpbGVTcGVjKHMpLnNlcmlhbGl6YWJsZSxpPU1lZGlhQW5ub3RhdGlvbi5fZ2V0Q29udGVudFR5cGUocyxyKTtpZihpKXJldHVybnthc3NldFJlZjphIGluc3RhbmNlb2YgUmVmP2E6bnVsbCxhc3NldERpY3Q6cyxmaWxlbmFtZTpyLGNvbnRlbnRUeXBlOml9fX1yZXR1cm4gbnVsbH19Y2xhc3MgU2NyZWVuQW5ub3RhdGlvbiBleHRlbmRzIE1lZGlhQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjpuLGFubm90YXRpb25HbG9iYWxzOmF9PWUscz1TY3JlZW5Bbm5vdGF0aW9uLiNJdCh0LG4pO3MmJnRoaXMuX3NldE1lZGlhRGF0YShzLGEpfXN0YXRpYyNJdChlLHQpe2Zvcihjb25zdCBuIG9mIHRoaXMuI0Z0KGUpKXtjb25zdCBlPXRoaXMuI1R0KG4uZ2V0KCJSIiksdCxuZXcgUmVmU2V0KTtpZihlKXJldHVybiBlfXJldHVybiBudWxsfXN0YXRpYyojRnQoZSl7Y29uc3QgdD1lLmdldCgiQSIpO3QgaW5zdGFuY2VvZiBEaWN0JiZpc05hbWUodC5nZXQoIlMiKSwiUmVuZGl0aW9uIikmJnRoaXMuI1J0KHQpJiYoeWllbGQgdCk7Y29uc3Qgbj1lLmdldCgiQUEiKTtpZihuIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3RbLGVdb2YgbillIGluc3RhbmNlb2YgRGljdCYmaXNOYW1lKGUuZ2V0KCJTIiksIlJlbmRpdGlvbiIpJiZ0aGlzLiNSdChlKSYmKHlpZWxkIGUpfXN0YXRpYyNSdChlKXtjb25zdCB0PWUuZ2V0KCJPUCIpO3JldHVybiB2b2lkIDA9PT10fHx0PT09RHx8dD09PU19c3RhdGljI1R0KGUsdCxuKXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCBhPWUuZ2V0KCJTIik7aWYoaXNOYW1lKGEsIk1SIikpcmV0dXJuIHRoaXMuI090KGUuZ2V0KCJDIiksdCk7aWYoaXNOYW1lKGEsIlNSIikpe2NvbnN0IGE9ZS5nZXQoIlIiKTtpZihBcnJheS5pc0FycmF5KGEpKWZvcihjb25zdCBlIG9mIGEpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKG4uaGFzKGUpKWNvbnRpbnVlO24ucHV0KGUpfWNvbnN0IGE9dGhpcy4jVHQodC5mZXRjaElmUmVmKGUpLHQsbik7aWYoYSlyZXR1cm4gYX19cmV0dXJuIG51bGx9c3RhdGljI090KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgRGljdCYmaXNOYW1lKGUuZ2V0KCJTIiksIk1DRCIpKSlyZXR1cm4gbnVsbDtjb25zdCBuPWUuZ2V0UmF3KCJEIiksYT10LmZldGNoSWZSZWYobikscz1lLmdldCgiQ1QiKTtsZXQgcixpLG89InN0cmluZyI9PXR5cGVvZiBzP3M6bnVsbDtpZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7cj1hLmRpY3Q7Y29uc3QgdD1lLmdldCgiTiIpO2k9InN0cmluZyI9PXR5cGVvZiB0P3N0cmluZ1RvUERGU3RyaW5nKHQpOiIiO2lmKCFvKXtjb25zdCBlPWEuZGljdC5nZXQoIlN1YnR5cGUiKTtlIGluc3RhbmNlb2YgTmFtZSYmKG89ZS5uYW1lKX19ZWxzZXtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtpZighRmlsZVNwZWMuaGFzRW1iZWRkZWRGaWxlKGEpKXJldHVybiBudWxsO3I9YTsoe2ZpbGVuYW1lOml9PW5ldyBGaWxlU3BlYyhhKS5zZXJpYWxpemFibGUpfWNvbnN0IGw9TWVkaWFBbm5vdGF0aW9uLl9nZXRDb250ZW50VHlwZShyLGksbyk7cmV0dXJuIGw/e2Fzc2V0UmVmOm4gaW5zdGFuY2VvZiBSZWY/bjpudWxsLGFzc2V0RGljdDpyLGZpbGVuYW1lOmksY29udGVudFR5cGU6bH06bnVsbH19Y2xhc3MgU291bmRBbm5vdGF0aW9uIGV4dGVuZHMgTWVkaWFBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOm4sYW5ub3RhdGlvbkdsb2JhbHM6YX09ZSxzPXQuZ2V0UmF3KCJTb3VuZCIpO2lmKCEocyBpbnN0YW5jZW9mIFJlZikpcmV0dXJuO2xldCByO3RyeXtyPW4uZmV0Y2gocyl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgU291bmRBbm5vdGF0aW9uOiAiJHtlfSIuYCk7cmV0dXJufXIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiZnZXRTb3VuZEZvcm1hdChyLmRpY3QpJiZ0aGlzLl9zZXRNZWRpYURhdGEoe2Fzc2V0UmVmOnMsYXNzZXREaWN0OnIuZGljdCxmaWxlbmFtZToic291bmQud2F2Iixjb250ZW50VHlwZToiYXVkaW8vd2F2Iix3cmFwU291bmQ6ITB9LGEpfX1jb25zdCB5Zj17Z2V0IHIoKXtyZXR1cm4gc2hhZG93KHRoaXMsInIiLG5ldyBVaW50OEFycmF5KFs3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDUsOSwxNCwyMCw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDYsMTAsMTUsMjEsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjFdKSl9LGdldCBrKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJrIixuZXcgSW50MzJBcnJheShbLTY4MDg3NjkzNiwtMzg5NTY0NTg2LDYwNjEwNTgxOSwtMTA0NDUyNTMzMCwtMTc2NDE4ODk3LDEyMDAwODA0MjYsLTE0NzMyMzEzNDEsLTQ1NzA1OTgzLDE3NzAwMzU0MTYsLTE5NTg0MTQ0MTcsLTQyMDYzLC0xOTkwNDA0MTYyLDE4MDQ2MDM2ODIsLTQwMzQxMTAxLC0xNTAyMDAyMjkwLDEyMzY1MzUzMjksLTE2NTc5NjUxMCwtMTA2OTUwMTYzMiw2NDM3MTc3MTMsLTM3Mzg5NzMwMiwtNzAxNTU4NjkxLDM4MDE2MDgzLC02NjA0NzgzMzUsLTQwNTUzNzg0OCw1Njg0NDY0MzgsLTEwMTk4MDM2OTAsLTE4NzM2Mzk2MSwxMTYzNTMxNTAxLC0xNDQ0NjgxNDY3LC01MTQwMzc4NCwxNzM1MzI4NDczLC0xOTI2NjA3NzM0LC0zNzg1NTgsLTIwMjI1NzQ0NjMsMTgzOTAzMDU2MiwtMzUzMDk1NTYsLTE1MzA5OTIwNjAsMTI3Mjg5MzM1MywtMTU1NDk3NjMyLC0xMDk0NzMwNjQwLDY4MTI3OTE3NCwtMzU4NTM3MjIyLC03MjI1MjE5NzksNzYwMjkxODksLTY0MDM2NDQ4NywtNDIxODE1ODM1LDUzMDc0MjUyMCwtOTk1MzM4NjUxLC0xOTg2MzA4NDQsMTEyNjg5MTQxNSwtMTQxNjM1NDkwNSwtNTc0MzQwNTUsMTcwMDQ4NTU3MSwtMTg5NDk4NjYwNiwtMTA1MTUyMywtMjA1NDkyMjc5OSwxODczMzEzMzU5LC0zMDYxMTc0NCwtMTU2MDE5ODM4MCwxMzA5MTUxNjQ5LC0xNDU1MjMwNzAsLTExMjAyMTAzNzksNzE4Nzg3MjU5LC0zNDM0ODU1NTFdKSl9fTtmdW5jdGlvbiBjYWxjdWxhdGVNRDUoZSx0LG4pe2xldCBhPTE3MzI1ODQxOTMscz0tMjcxNzMzODc5LHI9LTE3MzI1ODQxOTQsaT0yNzE3MzM4Nzg7Y29uc3Qgbz1uKzcyJi02NCxsPW5ldyBVaW50OEFycmF5KG8pO2xldCBmLGM7Zm9yKGY9MDtmPG47KytmKWxbZl09ZVt0KytdO2xbZisrXT0xMjg7Y29uc3QgaD1vLTg7ZjxoJiYoZj1oKTtsW2YrK109bjw8MyYyNTU7bFtmKytdPW4+PjUmMjU1O2xbZisrXT1uPj4xMyYyNTU7bFtmKytdPW4+PjIxJjI1NTtsW2YrK109bj4+PjI5JjI1NTtmKz0zO2NvbnN0IHU9bmV3IEludDMyQXJyYXkoMTYpLHtrOm0scjpwfT15Zjtmb3IoZj0wO2Y8bzspe2ZvcihjPTA7YzwxNjsrK2MsZis9NCl1W2NdPWxbZl18bFtmKzFdPDw4fGxbZisyXTw8MTZ8bFtmKzNdPDwyNDtsZXQgZSx0LG49YSxvPXMsaD1yLGQ9aTtmb3IoYz0wO2M8NjQ7KytjKXtpZihjPDE2KXtlPW8maHx+byZkO3Q9Y31lbHNlIGlmKGM8MzIpe2U9ZCZvfH5kJmg7dD01KmMrMSYxNX1lbHNlIGlmKGM8NDgpe2U9b15oXmQ7dD0zKmMrNSYxNX1lbHNle2U9aF4ob3x+ZCk7dD03KmMmMTV9Y29uc3QgYT1kLHM9bitlK21bY10rdVt0XXwwLHI9cFtjXTtkPWg7aD1vO289bysoczw8cnxzPj4+MzItcil8MDtuPWF9YT1hK258MDtzPXMrb3wwO3I9citofDA7aT1pK2R8MH1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzI1NSZhLGE+PjgmMjU1LGE+PjE2JjI1NSxhPj4+MjQmMjU1LDI1NSZzLHM+PjgmMjU1LHM+PjE2JjI1NSxzPj4+MjQmMjU1LDI1NSZyLHI+PjgmMjU1LHI+PjE2JjI1NSxyPj4+MjQmMjU1LDI1NSZpLGk+PjgmMjU1LGk+PjE2JjI1NSxpPj4+MjQmMjU1XSl9ZnVuY3Rpb24gZGVjb2RlU3RyaW5nKGUpe3RyeXtyZXR1cm4gc3RyaW5nVG9VVEY4U3RyaW5nKGUpfWNhdGNoKHQpe3dhcm4oYFVURi04IGRlY29kaW5nIGZhaWxlZDogIiR7dH0iLmApO3JldHVybiBlfX1jbGFzcyBEYXRhc2V0WE1MUGFyc2VyIGV4dGVuZHMgU2ltcGxlWE1MUGFyc2Vye25vZGU9bnVsbDtvbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD1zdXBlci5vbkVuZEVsZW1lbnQoZSk7aWYodCYmInhmYTpkYXRhc2V0cyI9PT1lKXt0aGlzLm5vZGU9dDt0aHJvdyBuZXcgRXJyb3IoIkFib3J0aW5nIERhdGFzZXRYTUxQYXJzZXIuIil9fX1jbGFzcyBEYXRhc2V0UmVhZGVye2NvbnN0cnVjdG9yKGUpe2lmKGUuZGF0YXNldHMpdGhpcy5ub2RlPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZS5kYXRhc2V0cykuZG9jdW1lbnRFbGVtZW50O2Vsc2V7Y29uc3QgdD1uZXcgRGF0YXNldFhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pO3RyeXt0LnBhcnNlRnJvbVN0cmluZyhlWyJ4ZHA6eGRwIl0pfWNhdGNoe310aGlzLm5vZGU9dC5ub2RlfX1nZXRWYWx1ZShlKXtpZighdGhpcy5ub2RlfHwhZSlyZXR1cm4iIjtjb25zdCB0PXRoaXMubm9kZS5zZWFyY2hOb2RlKHBhcnNlWEZBUGF0aChlKSwwKTtpZighdClyZXR1cm4iIjtjb25zdCBuPXQuZmlyc3RDaGlsZDtyZXR1cm4idmFsdWUiPT09bj8ubm9kZU5hbWU/dC5jaGlsZHJlbi5tYXAoZT0+ZGVjb2RlU3RyaW5nKGUudGV4dENvbnRlbnQpKTpkZWNvZGVTdHJpbmcodC50ZXh0Q29udGVudCl9fWNsYXNzIFNpbmdsZUludGVyc2VjdG9yeyNIdDttaW5YPTEvMDttaW5ZPTEvMDttYXhYPS0xLzA7bWF4WT0tMS8wOyNCdD1udWxsOyNEdD1bXTsjTXQ9W107I050PS0xOyNQdD0hMTtjb25zdHJ1Y3RvcihlKXt0aGlzLiNIdD1lO2NvbnN0IHQ9ZS5kYXRhLnF1YWRQb2ludHM7aWYodCl7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSs9OCl7dGhpcy5taW5YPU1hdGgubWluKHRoaXMubWluWCx0W2VdKTt0aGlzLm1heFg9TWF0aC5tYXgodGhpcy5tYXhYLHRbZSsyXSk7dGhpcy5taW5ZPU1hdGgubWluKHRoaXMubWluWSx0W2UrNV0pO3RoaXMubWF4WT1NYXRoLm1heCh0aGlzLm1heFksdFtlKzFdKX10Lmxlbmd0aD44JiYodGhpcy4jQnQ9dCl9ZWxzZVt0aGlzLm1pblgsdGhpcy5taW5ZLHRoaXMubWF4WCx0aGlzLm1heFldPWUuZGF0YS5yZWN0fSNFdChlLHQpe2lmKHRoaXMubWluWD49ZXx8dGhpcy5tYXhYPD1lfHx0aGlzLm1pblk+PXR8fHRoaXMubWF4WTw9dClyZXR1cm4hMTtjb25zdCBuPXRoaXMuI0J0O2lmKCFuKXJldHVybiEwO2lmKHRoaXMuI050Pj0wKXtjb25zdCBhPXRoaXMuI050O2lmKCEoblthXT49ZXx8blthKzJdPD1lfHxuW2ErNV0+PXR8fG5bYSsxXTw9dCkpcmV0dXJuITA7dGhpcy4jTnQ9LTF9Zm9yKGxldCBhPTAscz1uLmxlbmd0aDthPHM7YSs9OClpZighKG5bYV0+PWV8fG5bYSsyXTw9ZXx8blthKzVdPj10fHxuW2ErMV08PXQpKXt0aGlzLiNOdD1hO3JldHVybiEwfXJldHVybiExfWFkZEdseXBoKGUsdCxuKXtpZighdGhpcy4jRXQoZSx0KSl7dGhpcy5kaXNhYmxlRXh0cmFDaGFycygpO3JldHVybiExfWlmKHRoaXMuI010Lmxlbmd0aD4wKXt0aGlzLiNEdC5wdXNoKHRoaXMuI010LmpvaW4oIiIpKTt0aGlzLiNNdC5sZW5ndGg9MH10aGlzLiNEdC5wdXNoKG4pO3RoaXMuI1B0PSEwO3JldHVybiEwfWFkZEV4dHJhQ2hhcihlKXt0aGlzLiNQdCYmdGhpcy4jTXQucHVzaChlKX1kaXNhYmxlRXh0cmFDaGFycygpe2lmKHRoaXMuI1B0KXt0aGlzLiNQdD0hMTt0aGlzLiNNdC5sZW5ndGg9MH19c2V0VGV4dCgpe3RoaXMuI0h0LmRhdGEub3ZlcmxhaWRUZXh0PXRoaXMuI0R0LmpvaW4oIiIpfX1jb25zdCBxZj02NDtjbGFzcyBJbnRlcnNlY3RvcnsjX3Q9W107I3p0PVtdOyNMdDsjVXQ7I1d0OyNYdDsjS3Q7I0d0O2NvbnN0cnVjdG9yKGUpe2xldCB0PTEvMCxuPTEvMCxhPS0xLzAscz0tMS8wO2NvbnN0IHI9dGhpcy4jX3Q7Zm9yKGNvbnN0IGkgb2YgZSl7aWYoIWkuZGF0YS5xdWFkUG9pbnRzJiYhaS5kYXRhLnJlY3QpY29udGludWU7Y29uc3QgZT1uZXcgU2luZ2xlSW50ZXJzZWN0b3IoaSk7ci5wdXNoKGUpO3Q9TWF0aC5taW4odCxlLm1pblgpO249TWF0aC5taW4obixlLm1pblkpO2E9TWF0aC5tYXgoYSxlLm1heFgpO3M9TWF0aC5tYXgocyxlLm1heFkpfXRoaXMuI0x0PXQ7dGhpcy4jV3Q9bjt0aGlzLiNVdD1hO3RoaXMuI1h0PXM7dGhpcy4jS3Q9NjMvKGEtdCk7dGhpcy4jR3Q9NjMvKHMtbik7Zm9yKGNvbnN0IGUgb2Ygcil7Y29uc3QgdD10aGlzLiNWdChlLm1pblgsZS5taW5ZKSxuPXRoaXMuI1Z0KGUubWF4WCxlLm1heFkpLGE9KG4tdCklcWYscz1NYXRoLmZsb29yKChuLXQpL3FmKTtmb3IobGV0IG49dDtuPD10K3MqcWY7bis9cWYpZm9yKGxldCB0PTA7dDw9YTt0KyspKHRoaXMuI3p0W24rdF0/Pz1bXSkucHVzaChlKX19I1Z0KGUsdCl7cmV0dXJuIE1hdGguZmxvb3IoKGUtdGhpcy4jTHQpKnRoaXMuI0t0KStNYXRoLmZsb29yKCh0LXRoaXMuI1d0KSp0aGlzLiNHdCkqcWZ9YWRkR2x5cGgoZSx0LG4sYSl7Y29uc3Qgcz1lWzRdK3QvMixyPWVbNV0rbi8yO2lmKHM8dGhpcy4jTHR8fHI8dGhpcy4jV3R8fHM+dGhpcy4jVXR8fHI+dGhpcy4jWHQpcmV0dXJuO2NvbnN0IGk9dGhpcy4jenRbdGhpcy4jVnQocyxyKV07aWYoaSlmb3IoY29uc3QgZSBvZiBpKWUuYWRkR2x5cGgocyxyLGEpfWFkZEV4dHJhQ2hhcihlKXtmb3IoY29uc3QgdCBvZiB0aGlzLiNfdCl0LmFkZEV4dHJhQ2hhcihlKX1zZXRUZXh0KCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy4jX3QpZS5zZXRUZXh0KCl9fWNsYXNzIFdvcmQ2NHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaGlnaD0wfGU7dGhpcy5sb3c9MHx0fWFuZChlKXt0aGlzLmhpZ2gmPWUuaGlnaDt0aGlzLmxvdyY9ZS5sb3d9eG9yKGUpe3RoaXMuaGlnaF49ZS5oaWdoO3RoaXMubG93Xj1lLmxvd31zaGlmdFJpZ2h0KGUpe2lmKGU+PTMyKXt0aGlzLmxvdz10aGlzLmhpZ2g+Pj5lLTMyfDA7dGhpcy5oaWdoPTB9ZWxzZXt0aGlzLmxvdz10aGlzLmxvdz4+PmV8dGhpcy5oaWdoPDwzMi1lO3RoaXMuaGlnaD10aGlzLmhpZ2g+Pj5lfDB9fXJvdGF0ZVJpZ2h0KGUpe2xldCB0LG47aWYoMzImZSl7bj10aGlzLmxvdzt0PXRoaXMuaGlnaH1lbHNle3Q9dGhpcy5sb3c7bj10aGlzLmhpZ2h9ZSY9MzE7dGhpcy5sb3c9dD4+PmV8bjw8MzItZTt0aGlzLmhpZ2g9bj4+PmV8dDw8MzItZX1ub3QoKXt0aGlzLmhpZ2g9fnRoaXMuaGlnaDt0aGlzLmxvdz1+dGhpcy5sb3d9YWRkKGUpe2NvbnN0IHQ9KHRoaXMubG93Pj4+MCkrKGUubG93Pj4+MCk7bGV0IG49KHRoaXMuaGlnaD4+PjApKyhlLmhpZ2g+Pj4wKTt0PjQyOTQ5NjcyOTUmJihuKz0xKTt0aGlzLmxvdz0wfHQ7dGhpcy5oaWdoPTB8bn1jb3B5VG8oZSx0KXtlW3RdPXRoaXMuaGlnaD4+PjI0JjI1NTtlW3QrMV09dGhpcy5oaWdoPj4xNiYyNTU7ZVt0KzJdPXRoaXMuaGlnaD4+OCYyNTU7ZVt0KzNdPTI1NSZ0aGlzLmhpZ2g7ZVt0KzRdPXRoaXMubG93Pj4+MjQmMjU1O2VbdCs1XT10aGlzLmxvdz4+MTYmMjU1O2VbdCs2XT10aGlzLmxvdz4+OCYyNTU7ZVt0KzddPTI1NSZ0aGlzLmxvd31hc3NpZ24oZSl7dGhpcy5oaWdoPWUuaGlnaDt0aGlzLmxvdz1lLmxvd319Y29uc3QgdmY9e2dldCBrKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJrIixbbmV3IFdvcmQ2NCgxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLG5ldyBXb3JkNjQoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLG5ldyBXb3JkNjQoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxuZXcgV29yZDY0KDM5MjEwMDk1NzMsMjE3MzI5NTU0OCksbmV3IFdvcmQ2NCg5NjE5ODcxNjMsNDA4MTYyODQ3MiksbmV3IFdvcmQ2NCgxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLG5ldyBXb3JkNjQoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxuZXcgV29yZDY0KDI4NzA3NjMyMjEsMzY2NDYwOTU2MCksbmV3IFdvcmQ2NCgzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLG5ldyBXb3JkNjQoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLG5ldyBXb3JkNjQoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLG5ldyBXb3JkNjQoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxuZXcgV29yZDY0KDE5MjUwNzgzODgsNDA2ODE4MjM4MyksbmV3IFdvcmQ2NCgyMTYyMDc4MjA2LDk5MTMzNjExMyksbmV3IFdvcmQ2NCgyNjE0ODg4MTAzLDYzMzgwMzMxNyksbmV3IFdvcmQ2NCgzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLG5ldyBXb3JkNjQoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxuZXcgV29yZDY0KDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxuZXcgV29yZDY0KDI2NDM0NzA3OCwyMzQxMjYyNzczKSxuZXcgV29yZDY0KDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxuZXcgV29yZDY0KDc3MDI1NTk4MywxNDk1OTkwOTAxKSxuZXcgV29yZDY0KDEyNDkxNTAxMjIsMTg1NjQzMTIzNSksbmV3IFdvcmQ2NCgxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLG5ldyBXb3JkNjQoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxuZXcgV29yZDY0KDI1NTQyMjA4ODIsMzk5OTcxOTMzOSksbmV3IFdvcmQ2NCgyODIxODM0MzQ5LDc2Njc4NDAxNiksbmV3IFdvcmQ2NCgyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLG5ldyBXb3JkNjQoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxuZXcgV29yZDY0KDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiksbmV3IFdvcmQ2NCgzNTg0NTI4NzExLDI0NjY5NDg5MDEpLG5ldyBXb3JkNjQoMTEzOTI2OTkzLDM3NTgzMjYzODMpLG5ldyBXb3JkNjQoMzM4MjQxODk1LDE2ODcxNzkzNiksbmV3IFdvcmQ2NCg2NjYzMDcyMDUsMTE4ODE3OTk2NCksbmV3IFdvcmQ2NCg3NzM1Mjk5MTIsMTU0NjA0NTczNCksbmV3IFdvcmQ2NCgxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLG5ldyBXb3JkNjQoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxuZXcgV29yZDY0KDE2OTUxODM3MDAsMjM0MzUyNzM5MCksbmV3IFdvcmQ2NCgxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLG5ldyBXb3JkNjQoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxuZXcgV29yZDY0KDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxuZXcgV29yZDY0KDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCksbmV3IFdvcmQ2NCgyODIwMzAyNDExLDMxNTg0NTQyNzMpLG5ldyBXb3JkNjQoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxuZXcgV29yZDY0KDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxuZXcgV29yZDY0KDM1MTYwNjU4MTcsMzYwNjAwODM0NCksbmV3IFdvcmQ2NCgzNjAwMzUyODA0LDE0MzI3MjU3NzYpLG5ldyBXb3JkNjQoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxuZXcgV29yZDY0KDI3NTQyMzM0NCw4NTExNjk3MjApLG5ldyBXb3JkNjQoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLG5ldyBXb3JkNjQoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLG5ldyBXb3JkNjQoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLG5ldyBXb3JkNjQoODgzOTk3ODc3LDM3ODUwNTAyODApLG5ldyBXb3JkNjQoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLG5ldyBXb3JkNjQoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxuZXcgV29yZDY0KDE1MzcwMDIwNjMsMjAwMzAzNDk5NSksbmV3IFdvcmQ2NCgxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLG5ldyBXb3JkNjQoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxuZXcgV29yZDY0KDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCksbmV3IFdvcmQ2NCgyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLG5ldyBXb3JkNjQoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLG5ldyBXb3JkNjQoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLG5ldyBXb3JkNjQoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxuZXcgV29yZDY0KDMyMDQwMzE0NzksMjk5OTM1MTU3MyksbmV3IFdvcmQ2NCgzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLG5ldyBXb3JkNjQoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxuZXcgV29yZDY0KDM1MTUyNjcyNzEsNTY2MjgwNzExKSxuZXcgV29yZDY0KDM5NDAxODc2MDYsMzQ1NDA2OTUzNCksbmV3IFdvcmQ2NCg0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLG5ldyBXb3JkNjQoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLG5ldyBXb3JkNjQoMTc0MjkyNDIxLDI3MzEwNTUyNzApLG5ldyBXb3JkNjQoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLG5ldyBXb3JkNjQoNDYwMzkzMjY5LDMyMDYyMDMxNSksbmV3IFdvcmQ2NCg2ODU0NzE3MzMsNTg3NDk2ODM2KSxuZXcgV29yZDY0KDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxuZXcgV29yZDY0KDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxuZXcgV29yZDY0KDExMjYwMDA1ODAsMjYxODI5NzY3NiksbmV3IFdvcmQ2NCgxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLG5ldyBXb3JkNjQoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxuZXcgV29yZDY0KDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxuZXcgV29yZDY0KDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldKX19O2Z1bmN0aW9uIGNoKGUsdCxuLGEscyl7ZS5hc3NpZ24odCk7ZS5hbmQobik7cy5hc3NpZ24odCk7cy5ub3QoKTtzLmFuZChhKTtlLnhvcihzKX1mdW5jdGlvbiBtYWooZSx0LG4sYSxzKXtlLmFzc2lnbih0KTtlLmFuZChuKTtzLmFzc2lnbih0KTtzLmFuZChhKTtlLnhvcihzKTtzLmFzc2lnbihuKTtzLmFuZChhKTtlLnhvcihzKX1mdW5jdGlvbiBzaWdtYShlLHQsbil7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgyOCk7bi5hc3NpZ24odCk7bi5yb3RhdGVSaWdodCgzNCk7ZS54b3Iobik7bi5hc3NpZ24odCk7bi5yb3RhdGVSaWdodCgzOSk7ZS54b3Iobil9ZnVuY3Rpb24gc2lnbWFQcmltZShlLHQsbil7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxNCk7bi5hc3NpZ24odCk7bi5yb3RhdGVSaWdodCgxOCk7ZS54b3Iobik7bi5hc3NpZ24odCk7bi5yb3RhdGVSaWdodCg0MSk7ZS54b3Iobil9ZnVuY3Rpb24gbGl0dGxlU2lnbWEoZSx0LG4pe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMSk7bi5hc3NpZ24odCk7bi5yb3RhdGVSaWdodCg4KTtlLnhvcihuKTtuLmFzc2lnbih0KTtuLnNoaWZ0UmlnaHQoNyk7ZS54b3Iobil9ZnVuY3Rpb24gbGl0dGxlU2lnbWFQcmltZShlLHQsbil7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxOSk7bi5hc3NpZ24odCk7bi5yb3RhdGVSaWdodCg2MSk7ZS54b3Iobik7bi5hc3NpZ24odCk7bi5zaGlmdFJpZ2h0KDYpO2UueG9yKG4pfWZ1bmN0aW9uIGNhbGN1bGF0ZVNIQTUxMihlLHQsbixhPSExKXtsZXQgcyxyLGksbyxsLGYsYyxoO2lmKGEpe3M9bmV3IFdvcmQ2NCgzNDE4MDcwMzY1LDMyMzgzNzEwMzIpO3I9bmV3IFdvcmQ2NCgxNjU0MjcwMjUwLDkxNDE1MDY2Myk7aT1uZXcgV29yZDY0KDI0Mzg1MjkzNzAsODEyNzAyOTk5KTtvPW5ldyBXb3JkNjQoMzU1NDYyMzYwLDQxNDQ5MTI2OTcpO2w9bmV3IFdvcmQ2NCgxNzMxNDA1NDE1LDQyOTA3NzU4NTcpO2Y9bmV3IFdvcmQ2NCgyMzk0MTgwMjMxLDE3NTA2MDMwMjUpO2M9bmV3IFdvcmQ2NCgzNjc1MDA4NTI1LDE2OTQwNzY4MzkpO2g9bmV3IFdvcmQ2NCgxMjAzMDYyODEzLDMyMDQwNzU0MjgpfWVsc2V7cz1uZXcgV29yZDY0KDE3NzkwMzM3MDMsNDA4OTIzNTcyMCk7cj1uZXcgV29yZDY0KDMxNDQxMzQyNzcsMjIyNzg3MzU5NSk7aT1uZXcgV29yZDY0KDEwMTM5MDQyNDIsNDI3MTE3NTcyMyk7bz1uZXcgV29yZDY0KDI3NzM0ODA3NjIsMTU5NTc1MDEyOSk7bD1uZXcgV29yZDY0KDEzNTk4OTMxMTksMjkxNzU2NTEzNyk7Zj1uZXcgV29yZDY0KDI2MDA4MjI5MjQsNzI1NTExMTk5KTtjPW5ldyBXb3JkNjQoNTI4NzM0NjM1LDQyMTUzODk1NDcpO2g9bmV3IFdvcmQ2NCgxNTQxNDU5MjI1LDMyNzAzMzIwOSl9Y29uc3QgdT0xMjgqTWF0aC5jZWlsKChuKzE3KS8xMjgpLG09bmV3IFVpbnQ4QXJyYXkodSk7bGV0IHAsZDtmb3IocD0wO3A8bjsrK3ApbVtwXT1lW3QrK107bVtwKytdPTEyODtjb25zdCBnPXUtMTY7cDxnJiYocD1nKTtwKz0xMTttW3ArK109bj4+PjI5JjI1NTttW3ArK109bj4+MjEmMjU1O21bcCsrXT1uPj4xMyYyNTU7bVtwKytdPW4+PjUmMjU1O21bcCsrXT1uPDwzJjI1NTtjb25zdCBiPW5ldyBBcnJheSg4MCk7Zm9yKHA9MDtwPDgwO3ArKyliW3BdPW5ldyBXb3JkNjQoMCwwKTtjb25zdHtrOnd9PXZmO2xldCBqPW5ldyBXb3JkNjQoMCwwKSxrPW5ldyBXb3JkNjQoMCwwKSx5PW5ldyBXb3JkNjQoMCwwKSxxPW5ldyBXb3JkNjQoMCwwKSx2PW5ldyBXb3JkNjQoMCwwKSxTPW5ldyBXb3JkNjQoMCwwKSx4PW5ldyBXb3JkNjQoMCwwKSxDPW5ldyBXb3JkNjQoMCwwKTtjb25zdCBGPW5ldyBXb3JkNjQoMCwwKSxUPW5ldyBXb3JkNjQoMCwwKSxSPW5ldyBXb3JkNjQoMCwwKSxPPW5ldyBXb3JkNjQoMCwwKTtsZXQgSCxEO2ZvcihwPTA7cDx1Oyl7Zm9yKGQ9MDtkPDE2OysrZCl7YltkXS5oaWdoPW1bcF08PDI0fG1bcCsxXTw8MTZ8bVtwKzJdPDw4fG1bcCszXTtiW2RdLmxvdz1tW3ArNF08PDI0fG1bcCs1XTw8MTZ8bVtwKzZdPDw4fG1bcCs3XTtwKz04fWZvcihkPTE2O2Q8ODA7KytkKXtIPWJbZF07bGl0dGxlU2lnbWFQcmltZShILGJbZC0yXSxPKTtILmFkZChiW2QtN10pO2xpdHRsZVNpZ21hKFIsYltkLTE1XSxPKTtILmFkZChSKTtILmFkZChiW2QtMTZdKX1qLmFzc2lnbihzKTtrLmFzc2lnbihyKTt5LmFzc2lnbihpKTtxLmFzc2lnbihvKTt2LmFzc2lnbihsKTtTLmFzc2lnbihmKTt4LmFzc2lnbihjKTtDLmFzc2lnbihoKTtmb3IoZD0wO2Q8ODA7KytkKXtGLmFzc2lnbihDKTtzaWdtYVByaW1lKFIsdixPKTtGLmFkZChSKTtjaChSLHYsUyx4LE8pO0YuYWRkKFIpO0YuYWRkKHdbZF0pO0YuYWRkKGJbZF0pO3NpZ21hKFQsaixPKTttYWooUixqLGsseSxPKTtULmFkZChSKTtIPUM7Qz14O3g9UztTPXY7cS5hZGQoRik7dj1xO3E9eTt5PWs7az1qO0guYXNzaWduKEYpO0guYWRkKFQpO2o9SH1zLmFkZChqKTtyLmFkZChrKTtpLmFkZCh5KTtvLmFkZChxKTtsLmFkZCh2KTtmLmFkZChTKTtjLmFkZCh4KTtoLmFkZChDKX1pZihhKXtEPW5ldyBVaW50OEFycmF5KDQ4KTtzLmNvcHlUbyhELDApO3IuY29weVRvKEQsOCk7aS5jb3B5VG8oRCwxNik7by5jb3B5VG8oRCwyNCk7bC5jb3B5VG8oRCwzMik7Zi5jb3B5VG8oRCw0MCl9ZWxzZXtEPW5ldyBVaW50OEFycmF5KDY0KTtzLmNvcHlUbyhELDApO3IuY29weVRvKEQsOCk7aS5jb3B5VG8oRCwxNik7by5jb3B5VG8oRCwyNCk7bC5jb3B5VG8oRCwzMik7Zi5jb3B5VG8oRCw0MCk7Yy5jb3B5VG8oRCw0OCk7aC5jb3B5VG8oRCw1Nil9cmV0dXJuIER9ZnVuY3Rpb24gY2FsY3VsYXRlU0hBMzg0KGUsdCxuKXtyZXR1cm4gY2FsY3VsYXRlU0hBNTEyKGUsdCxuLCEwKX1jb25zdCBTZj17Z2V0IGsoKXtyZXR1cm4gc2hhZG93KHRoaXMsImsiLFsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdKX19O2Z1bmN0aW9uIHJvdHIoZSx0KXtyZXR1cm4gZT4+PnR8ZTw8MzItdH1mdW5jdGlvbiBjYWxjdWxhdGVfc2hhMjU2X2NoKGUsdCxuKXtyZXR1cm4gZSZ0Xn5lJm59ZnVuY3Rpb24gY2FsY3VsYXRlX3NoYTI1Nl9tYWooZSx0LG4pe3JldHVybiBlJnReZSZuXnQmbn1mdW5jdGlvbiBjYWxjdWxhdGVfc2hhMjU2X3NpZ21hKGUpe3JldHVybiByb3RyKGUsMilecm90cihlLDEzKV5yb3RyKGUsMjIpfWZ1bmN0aW9uIGNhbGN1bGF0ZV9zaGEyNTZfc2lnbWFQcmltZShlKXtyZXR1cm4gcm90cihlLDYpXnJvdHIoZSwxMSlecm90cihlLDI1KX1mdW5jdGlvbiBjYWxjdWxhdGVfc2hhMjU2X2xpdHRsZVNpZ21hKGUpe3JldHVybiByb3RyKGUsNylecm90cihlLDE4KV5lPj4+M31mdW5jdGlvbiBjYWxjdWxhdGVfc2hhMjU2X2xpdHRsZVNpZ21hUHJpbWUoZSl7cmV0dXJuIHJvdHIoZSwxNylecm90cihlLDE5KV5lPj4+MTB9ZnVuY3Rpb24gY2FsY3VsYXRlU0hBMjU2KGUsdCxuKXtsZXQgYT0xNzc5MDMzNzAzLHM9MzE0NDEzNDI3NyxyPTEwMTM5MDQyNDIsaT0yNzczNDgwNzYyLG89MTM1OTg5MzExOSxsPTI2MDA4MjI5MjQsZj01Mjg3MzQ2MzUsYz0xNTQxNDU5MjI1O2NvbnN0IGg9NjQqTWF0aC5jZWlsKChuKzkpLzY0KSx1PW5ldyBVaW50OEFycmF5KGgpO2xldCBtLHA7Zm9yKG09MDttPG47KyttKXVbbV09ZVt0KytdO3VbbSsrXT0xMjg7Y29uc3QgZD1oLTg7bTxkJiYobT1kKTttKz0zO3VbbSsrXT1uPj4+MjkmMjU1O3VbbSsrXT1uPj4yMSYyNTU7dVttKytdPW4+PjEzJjI1NTt1W20rK109bj4+NSYyNTU7dVttKytdPW48PDMmMjU1O2NvbnN0IGc9bmV3IFVpbnQzMkFycmF5KDY0KSx7azpifT1TZjtmb3IobT0wO208aDspe2ZvcihwPTA7cDwxNjsrK3Ape2dbcF09dVttXTw8MjR8dVttKzFdPDwxNnx1W20rMl08PDh8dVttKzNdO20rPTR9Zm9yKHA9MTY7cDw2NDsrK3ApZ1twXT1jYWxjdWxhdGVfc2hhMjU2X2xpdHRsZVNpZ21hUHJpbWUoZ1twLTJdKStnW3AtN10rY2FsY3VsYXRlX3NoYTI1Nl9saXR0bGVTaWdtYShnW3AtMTVdKStnW3AtMTZdfDA7bGV0IGUsdCxuPWEsaD1zLGQ9cix3PWksaj1vLGs9bCx5PWYscT1jO2ZvcihwPTA7cDw2NDsrK3Ape2U9cStjYWxjdWxhdGVfc2hhMjU2X3NpZ21hUHJpbWUoaikrY2FsY3VsYXRlX3NoYTI1Nl9jaChqLGsseSkrYltwXStnW3BdO3Q9Y2FsY3VsYXRlX3NoYTI1Nl9zaWdtYShuKStjYWxjdWxhdGVfc2hhMjU2X21haihuLGgsZCk7cT15O3k9aztrPWo7aj13K2V8MDt3PWQ7ZD1oO2g9bjtuPWUrdHwwfWE9YStufDA7cz1zK2h8MDtyPXIrZHwwO2k9aSt3fDA7bz1vK2p8MDtsPWwra3wwO2Y9Zit5fDA7Yz1jK3F8MH1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW2E+PjI0JjI1NSxhPj4xNiYyNTUsYT4+OCYyNTUsMjU1JmEscz4+MjQmMjU1LHM+PjE2JjI1NSxzPj44JjI1NSwyNTUmcyxyPj4yNCYyNTUscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyLGk+PjI0JjI1NSxpPj4xNiYyNTUsaT4+OCYyNTUsMjU1Jmksbz4+MjQmMjU1LG8+PjE2JjI1NSxvPj44JjI1NSwyNTUmbyxsPj4yNCYyNTUsbD4+MTYmMjU1LGw+PjgmMjU1LDI1NSZsLGY+PjI0JjI1NSxmPj4xNiYyNTUsZj4+OCYyNTUsMjU1JmYsYz4+MjQmMjU1LGM+PjE2JjI1NSxjPj44JjI1NSwyNTUmY10pfWNsYXNzIERlY3J5cHRTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17IyR0PW51bGw7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmRlY3J5cHQ9bn1yZWFkQmxvY2soKXtsZXQgZT10aGlzLiMkdD8/dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoNTEyKTtpZighZT8ubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy4jJHQ9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoNTEyKTtjb25zdCB0PXRoaXMuIyR0Py5sZW5ndGg+MDtlPSgwLHRoaXMuZGVjcnlwdCkoZSwhdCk7Y29uc3Qgbj10aGlzLmJ1ZmZlckxlbmd0aCxhPW4rZS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIoYSkuc2V0KGUsbik7dGhpcy5idWZmZXJMZW5ndGg9YX1nZXRPcmlnaW5hbFN0cmVhbSgpe3JldHVybiB0aGlzfX1jb25zdCBBZj1uZXcgU2V0KFsxNjAsNTc2MCw4MTkyLDgxOTMsODE5NCw4MTk1LDgxOTYsODE5Nyw4MTk4LDgxOTksODIwMCw4MjAxLDgyMDIsODIwMyw4MjM5LDgyODcsMTIyODhdKSx4Zj1uZXcgU2V0KFsxNzMsODQ3LDYxNTAsNjE1NSw2MTU2LDYxNTcsODIwMyw4MjA0LDgyMDUsODI4OCw2NTAyNCw2NTAyNSw2NTAyNiw2NTAyNyw2NTAyOCw2NTAyOSw2NTAzMCw2NTAzMSw2NTAzMiw2NTAzMyw2NTAzNCw2NTAzNSw2NTAzNiw2NTAzNyw2NTAzOCw2NTAzOSw2NTI3OV0pO2NsYXNzIEFSQ0ZvdXJDaXBoZXJ7YT0wO2I9MDtjb25zdHJ1Y3RvcihlKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDI1Niksbj1lLmxlbmd0aDtmb3IobGV0IGU9MDtlPDI1NjsrK2UpdFtlXT1lO2ZvcihsZXQgYT0wLHM9MDthPDI1NjsrK2Epe2NvbnN0IHI9dFthXTtzPXMrcitlW2Elbl0mMjU1O3RbYV09dFtzXTt0W3NdPXJ9dGhpcy5zPXR9ZW5jcnlwdEJsb2NrKGUpe2xldCB0PXRoaXMuYSxuPXRoaXMuYjtjb25zdCBhPXRoaXMucyxzPWUubGVuZ3RoLHI9bmV3IFVpbnQ4QXJyYXkocyk7Zm9yKGxldCBpPTA7aTxzOysraSl7dD10KzEmMjU1O2NvbnN0IHM9YVt0XTtuPW4rcyYyNTU7Y29uc3Qgbz1hW25dO2FbdF09bzthW25dPXM7cltpXT1lW2ldXmFbcytvJjI1NV19dGhpcy5hPXQ7dGhpcy5iPW47cmV0dXJuIHJ9ZGVjcnlwdEJsb2NrKGUpe3JldHVybiB0aGlzLmVuY3J5cHRCbG9jayhlKX1lbmNyeXB0KGUpe3JldHVybiB0aGlzLmVuY3J5cHRCbG9jayhlKX19Y2xhc3MgTnVsbENpcGhlcntkZWNyeXB0QmxvY2soZSl7cmV0dXJuIGV9ZW5jcnlwdChlKXtyZXR1cm4gZX19Y2xhc3MgQUVTQmFzZUNpcGhlcntfcz1uZXcgVWludDhBcnJheShbOTksMTI0LDExOSwxMjMsMjQyLDEwNywxMTEsMTk3LDQ4LDEsMTAzLDQzLDI1NCwyMTUsMTcxLDExOCwyMDIsMTMwLDIwMSwxMjUsMjUwLDg5LDcxLDI0MCwxNzMsMjEyLDE2MiwxNzUsMTU2LDE2NCwxMTQsMTkyLDE4MywyNTMsMTQ3LDM4LDU0LDYzLDI0NywyMDQsNTIsMTY1LDIyOSwyNDEsMTEzLDIxNiw0OSwyMSw0LDE5OSwzNSwxOTUsMjQsMTUwLDUsMTU0LDcsMTgsMTI4LDIyNiwyMzUsMzksMTc4LDExNyw5LDEzMSw0NCwyNiwyNywxMTAsOTAsMTYwLDgyLDU5LDIxNCwxNzksNDEsMjI3LDQ3LDEzMiw4MywyMDksMCwyMzcsMzIsMjUyLDE3Nyw5MSwxMDYsMjAzLDE5MCw1Nyw3NCw3Niw4OCwyMDcsMjA4LDIzOSwxNzAsMjUxLDY3LDc3LDUxLDEzMyw2OSwyNDksMiwxMjcsODAsNjAsMTU5LDE2OCw4MSwxNjMsNjQsMTQzLDE0NiwxNTcsNTYsMjQ1LDE4OCwxODIsMjE4LDMzLDE2LDI1NSwyNDMsMjEwLDIwNSwxMiwxOSwyMzYsOTUsMTUxLDY4LDIzLDE5NiwxNjcsMTI2LDYxLDEwMCw5MywyNSwxMTUsOTYsMTI5LDc5LDIyMCwzNCw0MiwxNDQsMTM2LDcwLDIzOCwxODQsMjAsMjIyLDk0LDExLDIxOSwyMjQsNTAsNTgsMTAsNzMsNiwzNiw5MiwxOTQsMjExLDE3Miw5OCwxNDUsMTQ5LDIyOCwxMjEsMjMxLDIwMCw1NSwxMDksMTQxLDIxMyw3OCwxNjksMTA4LDg2LDI0NCwyMzQsMTAxLDEyMiwxNzQsOCwxODYsMTIwLDM3LDQ2LDI4LDE2NiwxODAsMTk4LDIzMiwyMjEsMTE2LDMxLDc1LDE4OSwxMzksMTM4LDExMiw2MiwxODEsMTAyLDcyLDMsMjQ2LDE0LDk3LDUzLDg3LDE4NSwxMzQsMTkzLDI5LDE1OCwyMjUsMjQ4LDE1MiwxNywxMDUsMjE3LDE0MiwxNDgsMTU1LDMwLDEzNSwyMzMsMjA2LDg1LDQwLDIyMywxNDAsMTYxLDEzNywxMywxOTEsMjMwLDY2LDEwNCw2NSwxNTMsNDUsMTUsMTc2LDg0LDE4NywyMl0pO19pbnZfcz1uZXcgVWludDhBcnJheShbODIsOSwxMDYsMjEzLDQ4LDU0LDE2NSw1NiwxOTEsNjQsMTYzLDE1OCwxMjksMjQzLDIxNSwyNTEsMTI0LDIyNyw1NywxMzAsMTU1LDQ3LDI1NSwxMzUsNTIsMTQyLDY3LDY4LDE5NiwyMjIsMjMzLDIwMyw4NCwxMjMsMTQ4LDUwLDE2NiwxOTQsMzUsNjEsMjM4LDc2LDE0OSwxMSw2NiwyNTAsMTk1LDc4LDgsNDYsMTYxLDEwMiw0MCwyMTcsMzYsMTc4LDExOCw5MSwxNjIsNzMsMTA5LDEzOSwyMDksMzcsMTE0LDI0OCwyNDYsMTAwLDEzNCwxMDQsMTUyLDIyLDIxMiwxNjQsOTIsMjA0LDkzLDEwMSwxODIsMTQ2LDEwOCwxMTIsNzIsODAsMjUzLDIzNywxODUsMjE4LDk0LDIxLDcwLDg3LDE2NywxNDEsMTU3LDEzMiwxNDQsMjE2LDE3MSwwLDE0MCwxODgsMjExLDEwLDI0NywyMjgsODgsNSwxODQsMTc5LDY5LDYsMjA4LDQ0LDMwLDE0MywyMDIsNjMsMTUsMiwxOTMsMTc1LDE4OSwzLDEsMTksMTM4LDEwNyw1OCwxNDUsMTcsNjUsNzksMTAzLDIyMCwyMzQsMTUxLDI0MiwyMDcsMjA2LDI0MCwxODAsMjMwLDExNSwxNTAsMTcyLDExNiwzNCwyMzEsMTczLDUzLDEzMywyMjYsMjQ5LDU1LDIzMiwyOCwxMTcsMjIzLDExMCw3MSwyNDEsMjYsMTEzLDI5LDQxLDE5NywxMzcsMTExLDE4Myw5OCwxNCwxNzAsMjQsMTkwLDI3LDI1Miw4Niw2Miw3NSwxOTgsMjEwLDEyMSwzMiwxNTQsMjE5LDE5MiwyNTQsMTIwLDIwNSw5MCwyNDQsMzEsMjIxLDE2OCw1MSwxMzYsNywxOTksNDksMTc3LDE4LDE2LDg5LDM5LDEyOCwyMzYsOTUsOTYsODEsMTI3LDE2OSwyNSwxODEsNzQsMTMsNDUsMjI5LDEyMiwxNTksMTQ3LDIwMSwxNTYsMjM5LDE2MCwyMjQsNTksNzcsMTc0LDQyLDI0NSwxNzYsMjAwLDIzNSwxODcsNjAsMTMxLDgzLDE1Myw5NywyMyw0Myw0LDEyNiwxODYsMTE5LDIxNCwzOCwyMjUsMTA1LDIwLDk5LDg1LDMzLDEyLDEyNV0pO19taXg9bmV3IFVpbnQzMkFycmF5KFswLDIzNTQ3NDE4Nyw0NzA5NDgzNzQsMzAzNzY1Mjc3LDk0MTg5Njc0OCw5MDg5MzM0MTUsNjA3NTMwNTU0LDcwODc4MDg0OSwxODgzNzkzNDk2LDIxMTgyMTQ5OTUsMTgxNzg2NjgzMCwxNjQ5NjM5MjM3LDEyMTUwNjExMDgsMTE4MTA0NTExOSwxNDE3NTYxNjk4LDE1MTc3Njc1MjksMzc2NzU4Njk5Miw0MDAzMDYxMTc5LDQyMzY0Mjk5OTAsNDA2OTI0Njg5MywzNjM1NzMzNjYwLDM2MDI3NzAzMjcsMzI5OTI3ODQ3NCwzNDAwNTI4NzY5LDI0MzAxMjIyMTYsMjY2NDU0MzcxNSwyMzYyMDkwMjM4LDIxOTM4NjI2NDUsMjgzNTEyMzM5NiwyODAxMTA3NDA3LDMwMzU1MzUwNTgsMzEzNTc0MDg4OSwzNjc4MTI0OTIzLDM1NzY4NzA1MTIsMzM0MTM5NDI4NSwzMzc0MzYxNzAyLDM4MTA0OTYzNDMsMzk3NzY3NTM1Niw0Mjc5MDgwMjU3LDQwNDM2MTAxODYsMjg3NjQ5NDYyNywyNzc2MjkyOTA0LDMwNzY2MzkwMjksMzExMDY1MDk0MiwyNDcyMDExNTM1LDI2NDAyNDMyMDQsMjQwMzcyODY2NSwyMTY5MzAzMDU4LDEwMDEwODk5OTUsODk5ODM1NTg0LDY2NjQ2NDczMyw2OTk0MzIxNTAsNTk3Mjc4NDcsMjI2OTA2ODYwLDUzMDQwMDc1MywyOTQ5MzA2ODIsMTI3MzE2ODc4NywxMTcyOTY3MDY0LDE0NzU0MTg1MDEsMTUwOTQzMDQxNCwxOTQyNDM1Nzc1LDIxMTA2Njc0NDQsMTg3NjI0MTgzMywxNjQxODE2MjI2LDI5MTAyMTk3NjYsMjc0MzAzNDEwOSwyOTc2MTUxNTIwLDMyMTE2MjMxNDcsMjUwNTIwMjEzOCwyNjA2NDUzOTY5LDIzMDI2OTAyNTIsMjI2OTcyODQ1NSwzNzExODI5NDIyLDM1NDM1OTkyNjksMzI0MDg5NDM5MiwzNDc1MzEzMzMxLDM4NDM2OTkwNzQsMzk0MzkwNjQ0MSw0MTc4MDYyMjI4LDQxNDQwNDc3NzUsMTMwNjk2NzM2NiwxMTM5NzgxNzA5LDEzNzQ5ODgxMTIsMTYxMDQ1OTczOSwxOTc1NjgzNDM0LDIwNzY5MzUyNjUsMTc3NTI3NjkyNCwxNzQyMzE1MTI3LDEwMzQ4Njc5OTgsODY2NjM3ODQ1LDU2NjAyMTg5Niw4MDA0NDA4MzUsOTI5ODc2OTgsMTkzMTk1MDY1LDQyOTQ1NjE2NCwzOTU0NDE3MTEsMTk4NDgxMjY4NSwyMDE3Nzc4NTY2LDE3ODQ2NjMxOTUsMTY4MzQwNzI0OCwxMzE1NTYyMTQ1LDEwODAwOTQ2MzQsMTM4Mzg1NjMxMSwxNTUxMDM3ODg0LDEwMTAzOTgyOSwxMzUwNTAyMDYsNDM3NzU3MTIzLDMzNzU1Mzg2NCwxMDQyMzg1NjU3LDgwNzk2MjYxMCw1NzM4MDQ3ODMsNzQyMDM5MDEyLDI1MzEwNjc0NTMsMjU2NDAzMzMzNCwyMzI4ODI4OTcxLDIyMjc1NzMwMjQsMjkzNTU2Njg2NSwyNzAwMDk5MzU0LDMwMDE3NTU2NTUsMzE2ODkzNzIyOCwzODY4NTUyODA1LDM5MDI1NjMxODIsNDIwMzE4MTE3MSw0MTAyOTc3OTEyLDM3MzYxNjQ5MzcsMzUwMTc0MTg5MCwzMjY1NDc4NzUxLDM0MzM3MTI5ODAsMTEwNjA0MTU5MSwxMzQwNDYzMTAwLDE1NzY5NzY2MDksMTQwODc0OTAzNCwyMDQzMjExNDgzLDIwMDkxOTU0NzIsMTcwODg0ODMzMywxODA5MDU0MTUwLDgzMjg3NzIzMSwxMDY4MzUxMzk2LDc2Njk0NTQ2NSw1OTk3NjIzNTQsMTU5NDE3OTg3LDEyNjQ1NDY2NCwzNjE5Mjk4NzcsNDYzMTgwMTkwLDI3MDkyNjA4NzEsMjk0MzY4MjM4MCwzMTc4MTA2OTYxLDMwMDk4NzkzODYsMjU3MjY5NzE5NSwyNTM4NjgxMTg0LDIyMzYyMjg3MzMsMjMzNjQzNDU1MCwzNTA5ODcxMTM1LDM3NDUzNDUzMDAsMzQ0MTg1MDM3NywzMjc0NjY3MjY2LDM5MTAxNjE5NzEsMzg3NzE5ODY0OCw0MTEwNTY4NDg1LDQyMTE4MTg3OTgsMjU5NzgwNjQ3NiwyNDk3NjA0NzQzLDIyNjEwODkxNzgsMjI5NTEwMTA3MywyNzMzODU2MTYwLDI5MDIwODc4NTEsMzIwMjQzNzA0NiwyOTY4MDExNDUzLDM5MzYyOTEyODQsMzgzNTAzNjg5NSw0MTM2NDQwNzcwLDQxNjk0MDgyMDEsMzUzNTQ4NjQ1NiwzNzAyNjY1NDU5LDM0NjcxOTIzMDIsMzIzMTcyMjIxMywyMDUxNTE4NzgwLDE5NTEzMTcwNDcsMTcxNjg5MDQxMCwxNzUwOTAyMzA1LDExMTM4MTgzODQsMTI4MjA1MDA3NSwxNTg0NTA0NTgyLDEzNTAwNzg5ODksMTY4ODEwODUyLDY3NTU2NDYzLDM3MTA0OTMzMCw0MDQwMTY3NjEsODQxNzM5NTkyLDEwMDg5MTg1OTUsNzc1NTUwODE0LDU0MDA4MDcyNSwzOTY5NTYyMzY5LDM4MDEzMzIyMzQsNDAzNTQ4OTA0Nyw0MjY5OTA3OTk2LDM1NjkyNTUyMTMsMzY2OTQ2MjU2NiwzMzY2NzU0NjE5LDMzMzI3NDAxNDQsMjYzMTA2NTQzMywyNDYzODc5NzYyLDIxNjAxMTcwNzEsMjM5NTU4ODY3NiwyNzY3NjQ1NTU3LDI4Njg4OTc0MDYsMzEwMjAxMTc0NywzMDY5MDQ5OTYwLDIwMjAwODQ5NywzMzc3ODM2MiwyNzAwNDA0ODcsNTA0NDU5NDM2LDg3NTQ1MTI5Myw5NzU2NTg2NDYsNjc1MDM5NjI3LDY0MTAyNTE1MiwyMDg0NzA0MjMzLDE5MTc1MTg1NjIsMTYxNTg2MTI0NywxODUxMzMyODUyLDExNDc1NTA2NjEsMTI0ODgwMjUxMCwxNDg0MDA1ODQzLDE0NTEwNDQwNTYsOTMzMzAxMzcwLDk2NzMxMTcyOSw3MzMxNTY5NzIsNjMyOTUzNzAzLDI2MDM4ODk1MCwyNTk2NTkxNywzMjg2NzE4MDgsNDk2OTA2MDU5LDEyMDY0Nzc4NTgsMTIzOTQ0Mzc1MywxNTQzMjA4NTAwLDE0NDE5NTI1NzUsMjE0NDE2MTgwNiwxOTA4Njk0Mjc3LDE2NzU1Nzc4ODAsMTg0Mjc1OTQ0MywzNjEwMzY5MjI2LDM2NDQzNzk1ODUsMzQwODExOTUxNiwzMzA3OTE2MjQ3LDQwMTExOTA1MDIsMzc3Njc2NzQ2OSw0MDc3Mzg0NDMyLDQyNDU2MTg2ODMsMjgwOTc3MTE1NCwyODQyNzM3MDQ5LDMxNDQzOTY0MjAsMzA0MzE0MDQ5NSwyNjczNzA1MTUwLDI0MzgyMzc2MjEsMjIwMzAzMjIzMiwyMzcwMjEzNzk1XSk7X21peENvbD1uZXcgVWludDhBcnJheSgyNTYpLm1hcCgoZSx0KT0+dDwxMjg/dDw8MTp0PDwxXjI3KTtjb25zdHJ1Y3Rvcigpe3RoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDE2KTt0aGlzLmJ1ZmZlclBvc2l0aW9uPTB9X2V4cGFuZEtleShlKXt1bnJlYWNoYWJsZSgiQ2Fubm90IGNhbGwgYF9leHBhbmRLZXlgIG9uIHRoZSBiYXNlIGNsYXNzIil9X2RlY3J5cHQoZSx0KXtsZXQgbixhLHM7Y29uc3Qgcj1uZXcgVWludDhBcnJheSgxNik7ci5zZXQoZSk7Zm9yKGxldCBlPTAsbj10aGlzLl9rZXlTaXplO2U8MTY7KytlLCsrbilyW2VdXj10W25dO2ZvcihsZXQgZT10aGlzLl9jeWNsZXNPZlJlcGV0aXRpb24tMTtlPj0xOy0tZSl7bj1yWzEzXTtyWzEzXT1yWzldO3JbOV09cls1XTtyWzVdPXJbMV07clsxXT1uO249clsxNF07YT1yWzEwXTtyWzE0XT1yWzZdO3JbMTBdPXJbMl07cls2XT1uO3JbMl09YTtuPXJbMTVdO2E9clsxMV07cz1yWzddO3JbMTVdPXJbM107clsxMV09bjtyWzddPWE7clszXT1zO2ZvcihsZXQgZT0wO2U8MTY7KytlKXJbZV09dGhpcy5faW52X3NbcltlXV07Zm9yKGxldCBuPTAsYT0xNiplO248MTY7KytuLCsrYSlyW25dXj10W2FdO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD10aGlzLl9taXhbcltlXV0sYT10aGlzLl9taXhbcltlKzFdXSxzPXRoaXMuX21peFtyW2UrMl1dLGk9dGhpcy5fbWl4W3JbZSszXV07bj10XmE+Pj44XmE8PDI0XnM+Pj4xNl5zPDwxNl5pPj4+MjReaTw8ODtyW2VdPW4+Pj4yNCYyNTU7cltlKzFdPW4+PjE2JjI1NTtyW2UrMl09bj4+OCYyNTU7cltlKzNdPTI1NSZufX1uPXJbMTNdO3JbMTNdPXJbOV07cls5XT1yWzVdO3JbNV09clsxXTtyWzFdPW47bj1yWzE0XTthPXJbMTBdO3JbMTRdPXJbNl07clsxMF09clsyXTtyWzZdPW47clsyXT1hO249clsxNV07YT1yWzExXTtzPXJbN107clsxNV09clszXTtyWzExXT1uO3JbN109YTtyWzNdPXM7Zm9yKGxldCBlPTA7ZTwxNjsrK2Upe3JbZV09dGhpcy5faW52X3NbcltlXV07cltlXV49dFtlXX1yZXR1cm4gcn1fZW5jcnlwdChlLHQpe2NvbnN0IG49dGhpcy5fcztsZXQgYSxzLHI7Y29uc3QgaT1uZXcgVWludDhBcnJheSgxNik7aS5zZXQoZSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpaVtlXV49dFtlXTtmb3IobGV0IGU9MTtlPHRoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbjtlKyspe2ZvcihsZXQgZT0wO2U8MTY7KytlKWlbZV09bltpW2VdXTtyPWlbMV07aVsxXT1pWzVdO2lbNV09aVs5XTtpWzldPWlbMTNdO2lbMTNdPXI7cj1pWzJdO3M9aVs2XTtpWzJdPWlbMTBdO2lbNl09aVsxNF07aVsxMF09cjtpWzE0XT1zO3I9aVszXTtzPWlbN107YT1pWzExXTtpWzNdPWlbMTVdO2lbN109cjtpWzExXT1zO2lbMTVdPWE7Zm9yKGxldCBlPTA7ZTwxNjtlKz00KXtjb25zdCB0PWlbZV0sbj1pW2UrMV0scz1pW2UrMl0scj1pW2UrM107YT10Xm5ec15yO2lbZV1ePWFedGhpcy5fbWl4Q29sW3Rebl07aVtlKzFdXj1hXnRoaXMuX21peENvbFtuXnNdO2lbZSsyXV49YV50aGlzLl9taXhDb2xbc15yXTtpW2UrM11ePWFedGhpcy5fbWl4Q29sW3JedF19Zm9yKGxldCBuPTAsYT0xNiplO248MTY7KytuLCsrYSlpW25dXj10W2FdfWZvcihsZXQgZT0wO2U8MTY7KytlKWlbZV09bltpW2VdXTtyPWlbMV07aVsxXT1pWzVdO2lbNV09aVs5XTtpWzldPWlbMTNdO2lbMTNdPXI7cj1pWzJdO3M9aVs2XTtpWzJdPWlbMTBdO2lbNl09aVsxNF07aVsxMF09cjtpWzE0XT1zO3I9aVszXTtzPWlbN107YT1pWzExXTtpWzNdPWlbMTVdO2lbN109cjtpWzExXT1zO2lbMTVdPWE7Zm9yKGxldCBlPTAsbj10aGlzLl9rZXlTaXplO2U8MTY7KytlLCsrbilpW2VdXj10W25dO3JldHVybiBpfV9kZWNyeXB0QmxvY2syKGUsdCl7Y29uc3Qgbj1lLmxlbmd0aDtsZXQgYT10aGlzLmJ1ZmZlcixzPXRoaXMuYnVmZmVyUG9zaXRpb247Y29uc3Qgcj1bXTtsZXQgaT10aGlzLml2O2ZvcihsZXQgdD0wO3Q8bjsrK3Qpe2Fbc109ZVt0XTsrK3M7aWYoczwxNiljb250aW51ZTtjb25zdCBuPXRoaXMuX2RlY3J5cHQoYSx0aGlzLl9rZXkpO2ZvcihsZXQgZT0wO2U8MTY7KytlKW5bZV1ePWlbZV07aT1hO3IucHVzaChuKTthPW5ldyBVaW50OEFycmF5KDE2KTtzPTB9dGhpcy5idWZmZXI9YTt0aGlzLmJ1ZmZlckxlbmd0aD1zO3RoaXMuaXY9aTtpZigwPT09ci5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2xldCBvPTE2KnIubGVuZ3RoO2lmKHQpe2NvbnN0IGU9ci5hdCgtMSk7bGV0IHQ9ZVsxNV07aWYodDw9MTYpe2ZvcihsZXQgbj0xNSxhPTE2LXQ7bj49YTstLW4paWYoZVtuXSE9PXQpe3Q9MDticmVha31vLT10O3Jbci5sZW5ndGgtMV09ZS5zdWJhcnJheSgwLDE2LXQpfX1jb25zdCBsPW5ldyBVaW50OEFycmF5KG8pO2ZvcihsZXQgZT0wLHQ9MCxuPXIubGVuZ3RoO2U8bjsrK2UsdCs9MTYpbC5zZXQocltlXSx0KTtyZXR1cm4gbH1kZWNyeXB0QmxvY2soZSx0LG49bnVsbCl7Y29uc3QgYT1lLmxlbmd0aCxzPXRoaXMuYnVmZmVyO2xldCByPXRoaXMuYnVmZmVyUG9zaXRpb247aWYobil0aGlzLml2PW47ZWxzZXtmb3IobGV0IHQ9MDtyPDE2JiZ0PGE7Kyt0LCsrcilzW3JdPWVbdF07aWYocjwxNil7dGhpcy5idWZmZXJMZW5ndGg9cjtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCl9dGhpcy5pdj1zO2U9ZS5zdWJhcnJheSgxNil9dGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoMTYpO3RoaXMuYnVmZmVyTGVuZ3RoPTA7dGhpcy5kZWNyeXB0QmxvY2s9dGhpcy5fZGVjcnlwdEJsb2NrMjtyZXR1cm4gdGhpcy5kZWNyeXB0QmxvY2soZSx0KX1lbmNyeXB0KGUsdCl7Y29uc3Qgbj1lLmxlbmd0aDtsZXQgYT10aGlzLmJ1ZmZlcixzPXRoaXMuYnVmZmVyUG9zaXRpb247Y29uc3Qgcj1bXTt0fHw9bmV3IFVpbnQ4QXJyYXkoMTYpO2ZvcihsZXQgaT0wO2k8bjsrK2kpe2Fbc109ZVtpXTsrK3M7aWYoczwxNiljb250aW51ZTtmb3IobGV0IGU9MDtlPDE2OysrZSlhW2VdXj10W2VdO2NvbnN0IG49dGhpcy5fZW5jcnlwdChhLHRoaXMuX2tleSk7dD1uO3IucHVzaChuKTthPW5ldyBVaW50OEFycmF5KDE2KTtzPTB9dGhpcy5idWZmZXI9YTt0aGlzLmJ1ZmZlckxlbmd0aD1zO3RoaXMuaXY9dDtpZigwPT09ci5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2NvbnN0IGk9MTYqci5sZW5ndGgsbz1uZXcgVWludDhBcnJheShpKTtmb3IobGV0IGU9MCx0PTAsbj1yLmxlbmd0aDtlPG47KytlLHQrPTE2KW8uc2V0KHJbZV0sdCk7cmV0dXJuIG99fWNsYXNzIEFFUzEyOENpcGhlciBleHRlbmRzIEFFU0Jhc2VDaXBoZXJ7X3Jjb249bmV3IFVpbnQ4QXJyYXkoWzE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDFdKTtjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMDt0aGlzLl9rZXlTaXplPTE2MDt0aGlzLl9rZXk9dGhpcy5fZXhwYW5kS2V5KGUpfV9leHBhbmRLZXkoZSl7Y29uc3QgdD10aGlzLl9zLG49dGhpcy5fcmNvbixhPW5ldyBVaW50OEFycmF5KDE3Nik7YS5zZXQoZSk7Zm9yKGxldCBlPTE2LHM9MTtlPDE3NjsrK3Mpe2xldCByPWFbZS0zXSxpPWFbZS0yXSxvPWFbZS0xXSxsPWFbZS00XTtyPXRbcl07aT10W2ldO289dFtvXTtsPXRbbF07cl49bltzXTtmb3IobGV0IHQ9MDt0PDQ7Kyt0KXthW2VdPXJePWFbZS0xNl07ZSsrO2FbZV09aV49YVtlLTE2XTtlKys7YVtlXT1vXj1hW2UtMTZdO2UrKzthW2VdPWxePWFbZS0xNl07ZSsrfX1yZXR1cm4gYX19Y2xhc3MgQUVTMjU2Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xNDt0aGlzLl9rZXlTaXplPTIyNDt0aGlzLl9rZXk9dGhpcy5fZXhwYW5kS2V5KGUpfV9leHBhbmRLZXkoZSl7Y29uc3QgdD10aGlzLl9zLG49bmV3IFVpbnQ4QXJyYXkoMjQwKTtuLnNldChlKTtsZXQgYSxzLHIsaSxvPTE7Zm9yKGxldCBlPTMyLGw9MTtlPDI0MDsrK2wpe2lmKGUlMzI9PTE2KXthPXRbYV07cz10W3NdO3I9dFtyXTtpPXRbaV19ZWxzZSBpZihlJTMyPT0wKXthPW5bZS0zXTtzPW5bZS0yXTtyPW5bZS0xXTtpPW5bZS00XTthPXRbYV07cz10W3NdO3I9dFtyXTtpPXRbaV07YV49bzsobzw8PTEpPj0yNTYmJihvPTI1NSYoMjdebykpfWZvcihsZXQgdD0wO3Q8NDsrK3Qpe25bZV09YV49bltlLTMyXTtlKys7bltlXT1zXj1uW2UtMzJdO2UrKztuW2VdPXJePW5bZS0zMl07ZSsrO25bZV09aV49bltlLTMyXTtlKyt9fXJldHVybiBufX1jbGFzcyBQREZCYXNle19oYXNoKGUsdCxuKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBfaGFzaGAgY2FsbGVkIil9Y2hlY2tPd25lclBhc3N3b3JkKGUsdCxuLGEpe2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Muc2V0KGUsMCk7cy5zZXQodCxlLmxlbmd0aCk7cy5zZXQobixlLmxlbmd0aCt0Lmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbCh0aGlzLl9oYXNoKGUscyxuKSxhKX1jaGVja1VzZXJQYXNzd29yZChlLHQsbil7Y29uc3QgYT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTthLnNldChlLDApO2Euc2V0KHQsZS5sZW5ndGgpO3JldHVybiBpc0FycmF5RXF1YWwodGhpcy5faGFzaChlLGEsW10pLG4pfWdldE93bmVyS2V5KGUsdCxuLGEpe2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Muc2V0KGUsMCk7cy5zZXQodCxlLmxlbmd0aCk7cy5zZXQobixlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgcj10aGlzLl9oYXNoKGUscyxuKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihyKS5kZWNyeXB0QmxvY2soYSwhMSxuZXcgVWludDhBcnJheSgxNikpfWdldFVzZXJLZXkoZSx0LG4pe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7YS5zZXQoZSwwKTthLnNldCh0LGUubGVuZ3RoKTtjb25zdCBzPXRoaXMuX2hhc2goZSxhLFtdKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihzKS5kZWNyeXB0QmxvY2sobiwhMSxuZXcgVWludDhBcnJheSgxNikpfX1jbGFzcyBQREYxNyBleHRlbmRzIFBERkJhc2V7X2hhc2goZSx0LG4pe3JldHVybiBjYWxjdWxhdGVTSEEyNTYodCwwLHQubGVuZ3RoKX19Y2xhc3MgUERGMjAgZXh0ZW5kcyBQREZCYXNle19oYXNoKGUsdCxuKXtsZXQgYT1jYWxjdWxhdGVTSEEyNTYodCwwLHQubGVuZ3RoKS5zdWJhcnJheSgwLDMyKSxzPVswXSxyPTA7Zm9yKDtyPDY0fHxzLmF0KC0xKT5yLTMyOyl7Y29uc3QgdD1lLmxlbmd0aCthLmxlbmd0aCtuLmxlbmd0aCxpPW5ldyBVaW50OEFycmF5KHQpO2xldCBvPTA7aS5zZXQoZSxvKTtvKz1lLmxlbmd0aDtpLnNldChhLG8pO28rPWEubGVuZ3RoO2kuc2V0KG4sbyk7Y29uc3QgbD1uZXcgVWludDhBcnJheSg2NCp0KTtmb3IobGV0IGU9MCxuPTA7ZTw2NDtlKyssbis9dClsLnNldChpLG4pO3M9bmV3IEFFUzEyOENpcGhlcihhLnN1YmFycmF5KDAsMTYpKS5lbmNyeXB0KGwsYS5zdWJhcnJheSgxNiwzMikpO2NvbnN0IGY9TWF0aC5zdW1QcmVjaXNlKHMuc2xpY2UoMCwxNikpJTM7MD09PWY/YT1jYWxjdWxhdGVTSEEyNTYocywwLHMubGVuZ3RoKToxPT09Zj9hPWNhbGN1bGF0ZVNIQTM4NChzLDAscy5sZW5ndGgpOjI9PT1mJiYoYT1jYWxjdWxhdGVTSEE1MTIocywwLHMubGVuZ3RoKSk7cisrfXJldHVybiBhLnN1YmFycmF5KDAsMzIpfX1jbGFzcyBDaXBoZXJUcmFuc2Zvcm17I1l0PW5ldyBNYXA7ZW1iZWRkZWRGaWx0ZXJOYW1lPW51bGw7Y29uc3RydWN0b3IoZSx0PW51bGwsbj1udWxsKXt0aGlzLnJlc29sdmVDaXBoZXI9ZTt0aGlzLnN0cmVhbUZpbHRlck5hbWU9bjt0aGlzLnN0cmluZ0ZpbHRlck5hbWU9dH0jSnQoZT1udWxsKXtjb25zdCB0PWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZToiX19kZWZhdWx0X18iO3JldHVybiB0aGlzLiNZdC5nZXRPckluc2VydENvbXB1dGVkKHQsKCk9PnRoaXMucmVzb2x2ZUNpcGhlcihlKSl9Y3JlYXRlU3RyZWFtKGUsdCxuPW51bGwpe2NvbnN0IGE9dGhpcy5lbWJlZGRlZEZpbHRlck5hbWUmJmlzRGljdChlLmRpY3QsIkVtYmVkZGVkRmlsZSIpP3RoaXMuZW1iZWRkZWRGaWx0ZXJOYW1lOnRoaXMuc3RyZWFtRmlsdGVyTmFtZSxzPW5ldyh0aGlzLiNKdChufHxhKSk7cmV0dXJuIG5ldyBEZWNyeXB0U3RyZWFtKGUsdCxmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1EZWNyeXB0U3RyZWFtKGUsdCl7cmV0dXJuIHMuZGVjcnlwdEJsb2NrKGUsdCl9KX1kZWNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3KHRoaXMuI0p0KHRoaXMuc3RyaW5nRmlsdGVyTmFtZSkpO2xldCBuPXN0cmluZ1RvQnl0ZXMoZSk7bj10LmRlY3J5cHRCbG9jayhuLCEwKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhuKX1lbmNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3KHRoaXMuI0p0KHRoaXMuc3RyaW5nRmlsdGVyTmFtZSkpO2lmKHQgaW5zdGFuY2VvZiBBRVNCYXNlQ2lwaGVyKXtjb25zdCBuPTE2LWUubGVuZ3RoJTE2O2UrPVN0cmluZy5mcm9tQ2hhckNvZGUobikucmVwZWF0KG4pO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoMTYpO2NyeXB0by5nZXRSYW5kb21WYWx1ZXMoYSk7bGV0IHM9c3RyaW5nVG9CeXRlcyhlKTtzPXQuZW5jcnlwdChzLGEpO2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoMTYrcy5sZW5ndGgpO3Iuc2V0KGEpO3Iuc2V0KHMsMTYpO3JldHVybiBieXRlc1RvU3RyaW5nKHIpfWxldCBuPXN0cmluZ1RvQnl0ZXMoZSk7bj10LmVuY3J5cHQobik7cmV0dXJuIGJ5dGVzVG9TdHJpbmcobil9fWZ1bmN0aW9uIHV0ZjhQYXNzd29yZFRvQnl0ZXMoZSl7dHJ5e2U9dXRmOFN0cmluZ1RvU3RyaW5nKGUpfWNhdGNoe3dhcm4oIkNpcGhlclRyYW5zZm9ybUZhY3Rvcnk6IFVuYWJsZSB0byBjb252ZXJ0IFVURjggZW5jb2RlZCBwYXNzd29yZC4iKX1yZXR1cm4gc3RyaW5nVG9CeXRlcyhlKX1jbGFzcyBDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5eyNRdDtzdGF0aWMgZ2V0IF9kZWZhdWx0UGFzc3dvcmRCeXRlcygpe3JldHVybiBzaGFkb3codGhpcywiX2RlZmF1bHRQYXNzd29yZEJ5dGVzIixuZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pKX0jWnQoZSx0LG4sYSxzLHIsaSxvLGwsZixjLGgpe2lmKHQpe2NvbnN0IGU9TWF0aC5taW4oMTI3LHQubGVuZ3RoKTt0PXQuc3ViYXJyYXkoMCxlKX1lbHNlIHQ9W107Y29uc3QgdT02PT09ZT9uZXcgUERGMjA6bmV3IFBERjE3O3JldHVybiB1LmNoZWNrVXNlclBhc3N3b3JkKHQsbyxpKT91LmdldFVzZXJLZXkodCxsLGMpOnQubGVuZ3RoJiZ1LmNoZWNrT3duZXJQYXNzd29yZCh0LGEscixuKT91LmdldE93bmVyS2V5KHQscyxyLGYpOm51bGx9I2VuKGUsdCxuLGEscyxyLGksbyl7Y29uc3QgbD00MCtuLmxlbmd0aCtlLmxlbmd0aCxmPW5ldyBVaW50OEFycmF5KGwpO2xldCBjLGgsdT0wO2lmKHQpe2g9TWF0aC5taW4oMzIsdC5sZW5ndGgpO2Zvcig7dTxoOysrdSlmW3VdPXRbdV19Yz0wO2Zvcig7dTwzMjspZlt1KytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzW2MrK107Zi5zZXQobix1KTt1Kz1uLmxlbmd0aDtmW3UrK109MjU1JnM7Zlt1KytdPXM+PjgmMjU1O2ZbdSsrXT1zPj4xNiYyNTU7Zlt1KytdPXM+Pj4yNCYyNTU7Zi5zZXQoZSx1KTt1Kz1lLmxlbmd0aDtpZihyPj00JiYhbyl7Zi5maWxsKDI1NSx1LHUrNCk7dSs9NH1sZXQgbT1jYWxjdWxhdGVNRDUoZiwwLHUpO2NvbnN0IHA9aT4+MztpZihyPj0zKWZvcihjPTA7Yzw1MDsrK2MpbT1jYWxjdWxhdGVNRDUobSwwLHApO2NvbnN0IGQ9bS5zdWJhcnJheSgwLHApO2xldCBnLGI7aWYocj49Myl7dT0wO2Yuc2V0KENpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzLHUpO3UrPTMyO2Yuc2V0KGUsdSk7dSs9ZS5sZW5ndGg7Zz1uZXcgQVJDRm91ckNpcGhlcihkKTtiPWcuZW5jcnlwdEJsb2NrKGNhbGN1bGF0ZU1ENShmLDAsdSkpO2g9ZC5sZW5ndGg7Y29uc3QgdD1uZXcgVWludDhBcnJheShoKTtmb3IoYz0xO2M8PTE5OysrYyl7Zm9yKGxldCBlPTA7ZTxoOysrZSl0W2VdPWRbZV1eYztnPW5ldyBBUkNGb3VyQ2lwaGVyKHQpO2I9Zy5lbmNyeXB0QmxvY2soYil9fWVsc2V7Zz1uZXcgQVJDRm91ckNpcGhlcihkKTtiPWcuZW5jcnlwdEJsb2NrKENpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzKX1yZXR1cm4gYi5ldmVyeSgoZSx0KT0+YVt0XT09PWUpP2Q6bnVsbH0jdG4oZSx0LG4sYSl7Y29uc3Qgcz1uZXcgVWludDhBcnJheSgzMik7bGV0IHI9MDtjb25zdCBpPU1hdGgubWluKDMyLGUubGVuZ3RoKTtmb3IoO3I8aTsrK3Ipc1tyXT1lW3JdO2xldCBvPTA7Zm9yKDtyPDMyOylzW3IrK109Q2lwaGVyVHJhbnNmb3JtRmFjdG9yeS5fZGVmYXVsdFBhc3N3b3JkQnl0ZXNbbysrXTtsZXQgbD1jYWxjdWxhdGVNRDUocywwLHIpO2NvbnN0IGY9YT4+MztpZihuPj0zKWZvcihvPTA7bzw1MDsrK28pbD1jYWxjdWxhdGVNRDUobCwwLGwubGVuZ3RoKTtsZXQgYyxoO2lmKG4+PTMpe2g9dDtjb25zdCBlPW5ldyBVaW50OEFycmF5KGYpO2ZvcihvPTE5O28+PTA7by0tKXtmb3IobGV0IHQ9MDt0PGY7Kyt0KWVbdF09bFt0XV5vO2M9bmV3IEFSQ0ZvdXJDaXBoZXIoZSk7aD1jLmVuY3J5cHRCbG9jayhoKX19ZWxzZXtjPW5ldyBBUkNGb3VyQ2lwaGVyKGwuc3ViYXJyYXkoMCxmKSk7aD1jLmVuY3J5cHRCbG9jayh0KX1yZXR1cm4gaH0jbm4oZSx0LG4sYT0hMSl7Y29uc3Qgcz1uLmxlbmd0aCxyPW5ldyBVaW50OEFycmF5KHMrOSk7ci5zZXQobik7bGV0IGk9cztyW2krK109MjU1JmU7cltpKytdPWU+PjgmMjU1O3JbaSsrXT1lPj4xNiYyNTU7cltpKytdPTI1NSZ0O3JbaSsrXT10Pj44JjI1NTtpZihhKXtyW2krK109MTE1O3JbaSsrXT02NTtyW2krK109MTA4O3JbaSsrXT04NH1yZXR1cm4gY2FsY3VsYXRlTUQ1KHIsMCxpKS5zdWJhcnJheSgwLE1hdGgubWluKHMrNSwxNikpfWNvbnN0cnVjdG9yKGUsdCxuKXtjb25zdCBhPWUuZ2V0KCJGaWx0ZXIiKTtpZighaXNOYW1lKGEsIlN0YW5kYXJkIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7dGhpcy5maWx0ZXJOYW1lPWEubmFtZTt0aGlzLmRpY3Q9ZTt0aGlzLiNRdD10O2NvbnN0IHM9ZS5nZXQoIlYiKTtpZighTnVtYmVyLmlzSW50ZWdlcihzKXx8MSE9PXMmJjIhPT1zJiY0IT09cyYmNSE9PXMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bnN1cHBvcnRlZCBlbmNyeXB0aW9uIGFsZ29yaXRobSIpO3RoaXMuYWxnb3JpdGhtPXM7bGV0IHI9ZS5nZXQoIkxlbmd0aCIpO2lmKCFyKWlmKHM8PTMpcj00MDtlbHNle2NvbnN0IHQ9ZS5nZXQoIkNGIiksbj1lLmdldCgiU3RtRiIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiZuIGluc3RhbmNlb2YgTmFtZSl7dC5zdXBwcmVzc0VuY3J5cHRpb249ITA7Y29uc3QgZT10LmdldChuLm5hbWUpO3I9ZT8uZ2V0KCJMZW5ndGgiKXx8MTI4O3I8NDAmJihyPDw9Myl9fWlmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHxyPDQwfHxyJTghPTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGtleSBsZW5ndGgiKTtsZXQgaT1udWxsLG89TmFtZS5nZXQoIklkZW50aXR5IiksbD1OYW1lLmdldCgiSWRlbnRpdHkiKSxmPW87aWYocz49NCl7aT1lLmdldCgiQ0YiKTtpIGluc3RhbmNlb2YgRGljdCYmKGkuc3VwcHJlc3NFbmNyeXB0aW9uPSEwKTtvPWUuZ2V0KCJTdG1GIil8fE5hbWUuZ2V0KCJJZGVudGl0eSIpO2w9ZS5nZXQoIlN0ckYiKXx8TmFtZS5nZXQoIklkZW50aXR5Iik7Zj1lLmdldCgiRUZGIil8fG99dGhpcy5jZj1pO3RoaXMuc3RtZj1vO3RoaXMuc3RyZj1sO3RoaXMuZWZmPWY7Y29uc3QgYz1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJPIikpLGg9c3RyaW5nVG9CeXRlcyhlLmdldCgiVSIpKSx1PWMuc3ViYXJyYXkoMCwzMiksbT1oLnN1YmFycmF5KDAsMzIpLHA9ZS5nZXQoIlAiKSxkPWUuZ2V0KCJSIiksZz0oND09PXN8fDU9PT1zKSYmITEhPT1lLmdldCgiRW5jcnlwdE1ldGFkYXRhIik7dGhpcy5lbmNyeXB0TWV0YWRhdGE9Zztjb25zdCBiPXN0cmluZ1RvQnl0ZXModCk7bGV0IHcsaixrO2lmKG4paWYoNj09PWQpe2NvbnN0IGU9ZnVuY3Rpb24gc2FzbFByZXAoZSl7bGV0IHQ9IiI7Zm9yKGNvbnN0IG4gb2YgZSl7Y29uc3QgZT1uLmNvZGVQb2ludEF0KDApO0FmLmhhcyhlKT90Kz0iICI6eGYuaGFzKGUpfHwodCs9bil9cmV0dXJuIHQubm9ybWFsaXplKCJORktDIil9KG4pO3c9dXRmOFBhc3N3b3JkVG9CeXRlcyhlKTtlIT09biYmKGo9dXRmOFBhc3N3b3JkVG9CeXRlcyhuKSl9ZWxzZSB3PTU9PT1zP3V0ZjhQYXNzd29yZFRvQnl0ZXMobik6c3RyaW5nVG9CeXRlcyhuKTtpZig1IT09cylrPXRoaXMuI2VuKGIsdyx1LG0scCxkLHIsZyk7ZWxzZXtjb25zdCB0PWMuc3ViYXJyYXkoMzIsNDApLG49Yy5zdWJhcnJheSg0MCw0OCksYT1oLnN1YmFycmF5KDAsNDgpLHM9aC5zdWJhcnJheSgzMiw0MCkscj1oLnN1YmFycmF5KDQwLDQ4KSxpPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIk9FIikpLG89c3RyaW5nVG9CeXRlcyhlLmdldCgiVUUiKSksbD1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJQZXJtcyIpKTtmb3IoY29uc3QgZSBvZiBqP1t3LGpdOlt3XSl7az10aGlzLiNadChkLGUsdSx0LG4sYSxtLHMscixpLG8sbCk7aWYoaylicmVha319aWYoIWspe2lmKCFuKXtpZih0aGlzLmFsZ29yaXRobT49NCYmaXNOYW1lKHRoaXMuc3RtZiwiSWRlbnRpdHkiKSYmaXNOYW1lKHRoaXMuc3RyZiwiSWRlbnRpdHkiKSl7Y29uc3QgZT10aGlzLmNmPy5nZXQodGhpcy5lZmYubmFtZSksdD1lPy5nZXQoIkF1dGhFdmVudCIpO2lmKGlzTmFtZSh0LCJFRk9wZW4iKSl7dGhpcy5lbmNyeXB0aW9uS2V5PW51bGw7cmV0dXJufX10aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIk5vIHBhc3N3b3JkIGdpdmVuIixlbil9Y29uc3QgZT10aGlzLiN0bih3LHUsZCxyKTtrPXRoaXMuI2VuKGIsZSx1LG0scCxkLHIsZyl9aWYoIWspdGhyb3cgbmV3IFBhc3N3b3JkRXhjZXB0aW9uKCJJbmNvcnJlY3QgUGFzc3dvcmQiLHRuKTtpZig0PT09cyYmay5sZW5ndGg8MTYpe3RoaXMuZW5jcnlwdGlvbktleT1uZXcgVWludDhBcnJheSgxNik7dGhpcy5lbmNyeXB0aW9uS2V5LnNldChrKX1lbHNlIHRoaXMuZW5jcnlwdGlvbktleT1rfXNldFBhc3N3b3JkKGUpe2NvbnN0IHQ9bmV3IENpcGhlclRyYW5zZm9ybUZhY3RvcnkodGhpcy5kaWN0LHRoaXMuI1F0LGUpO3RoaXMuZW5jcnlwdGlvbktleT10LmVuY3J5cHRpb25LZXl9Y3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGUsdCl7aWYoND09PXRoaXMuYWxnb3JpdGhtfHw1PT09dGhpcy5hbGdvcml0aG0pe2NvbnN0IG49bmV3IENpcGhlclRyYW5zZm9ybShuPT57aWYoIShuIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGNyeXB0IGZpbHRlciBuYW1lLiIpO2NvbnN0IGE9dGhpcy5jZi5nZXQobi5uYW1lKSxzPWE/LmdldCgiQ0ZNIik7aWYoIXN8fCJOb25lIj09PXMubmFtZSlyZXR1cm4gTnVsbENpcGhlcjtpZighdGhpcy5lbmNyeXB0aW9uS2V5KXRocm93IG5ldyBQYXNzd29yZEV4Y2VwdGlvbigiTm8gcGFzc3dvcmQgZ2l2ZW4iLGVuKTtpZig1PT09dGhpcy5hbGdvcml0aG18fCJBRVNWMyI9PT1zLm5hbWUpcmV0dXJuIEFFUzI1NkNpcGhlci5iaW5kKG51bGwsdGhpcy5lbmNyeXB0aW9uS2V5KTtpZigiVjIiPT09cy5uYW1lKXJldHVybiBBUkNGb3VyQ2lwaGVyLmJpbmQobnVsbCx0aGlzLiNubihlLHQsdGhpcy5lbmNyeXB0aW9uS2V5LCExKSk7aWYoIkFFU1YyIj09PXMubmFtZSlyZXR1cm4gQUVTMTI4Q2lwaGVyLmJpbmQobnVsbCx0aGlzLiNubihlLHQsdGhpcy5lbmNyeXB0aW9uS2V5LCEwKSk7dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX0sdGhpcy5zdHJmLHRoaXMuc3RtZik7bi5lbWJlZGRlZEZpbHRlck5hbWU9dGhpcy5lZmY7cmV0dXJuIG59cmV0dXJuIG5ldyBDaXBoZXJUcmFuc2Zvcm0oKCk9PkFSQ0ZvdXJDaXBoZXIuYmluZChudWxsLHRoaXMuI25uKGUsdCx0aGlzLmVuY3J5cHRpb25LZXksITEpKSl9fWNsYXNzIFhSZWZ7I2FuPW5ldyBNYXA7I3NuPVtdOyNybj1udWxsOyNpbj1udWxsOyNvbj0hMTsjbG49bmV3IFJlZlNldDsjZm49bnVsbDsjY249bmV3IFNldDsjaG49ITA7I3VuPW5ldyBTZXQ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN0cmVhbT1lO3RoaXMucGRmTWFuYWdlcj10fWdldE5ld1BlcnNpc3RlbnRSZWYoZSl7bnVsbD09PXRoaXMuI3JuJiYodGhpcy4jcm49dGhpcy4jc24ubGVuZ3RofHwxKTtjb25zdCB0PXRoaXMuI3JuKys7dGhpcy4jYW4uc2V0KHQsZSk7cmV0dXJuIFJlZi5nZXQodCwwKX1nZXROZXdUZW1wb3JhcnlSZWYoKXtpZihudWxsPT09dGhpcy4jaW4pe3RoaXMuI2luPXRoaXMuI3NuLmxlbmd0aHx8MTtpZih0aGlzLiNybil7dGhpcy4jZm49bmV3IE1hcDtmb3IobGV0IGU9dGhpcy4jaW47ZTx0aGlzLiNybjtlKyspe3RoaXMuI2ZuLnNldChlLHRoaXMuI2FuLmdldChlKSk7dGhpcy4jYW4uZGVsZXRlKGUpfX19cmV0dXJuIFJlZi5nZXQodGhpcy4jaW4rKywwKX1yZXNldE5ld1RlbXBvcmFyeVJlZigpe3RoaXMuI2luPW51bGw7aWYodGhpcy4jZm4pZm9yKGNvbnN0W2UsdF1vZiB0aGlzLiNmbil0aGlzLiNhbi5zZXQoZSx0KTt0aGlzLiNmbj1udWxsfXNldFN0YXJ0WFJlZihlKXt0aGlzLnN0YXJ0WFJlZlF1ZXVlPVtlXX1wYXJzZShlPSExKXt0aGlzLiNvbj1lO2xldCB0LG4sYTtpZihlKXt3YXJuKCJJbmRleGluZyBhbGwgUERGIG9iamVjdHMiKTt0PXRoaXMuaW5kZXhPYmplY3RzKCl9ZWxzZSB0PXRoaXMucmVhZFhSZWYoKTt0LmFzc2lnblhyZWYodGhpcyk7dGhpcy50cmFpbGVyPXQ7dHJ5e249dC5nZXQoIkVuY3J5cHQiKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiRW5jcnlwdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYobiBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dC5nZXQoIklEIiksYT1lPy5sZW5ndGg/ZVswXToiIjtuLnN1cHByZXNzRW5jcnlwdGlvbj0hMDt0aGlzLmVuY3J5cHQ9bmV3IENpcGhlclRyYW5zZm9ybUZhY3RvcnkobixhLHRoaXMucGRmTWFuYWdlci5wYXNzd29yZCl9dHJ5e2E9dC5nZXQoIlJvb3QiKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiUm9vdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoYSBpbnN0YW5jZW9mIERpY3QpdHJ5e2lmKGEuZ2V0KCJQYWdlcyIpaW5zdGFuY2VvZiBEaWN0KXt0aGlzLnJvb3Q9YTtyZXR1cm59fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJQYWdlcyIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoIWUpdGhyb3cgbmV3IFhSZWZQYXJzZUV4Y2VwdGlvbjt0aHJvdyBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBSb290IHJlZmVyZW5jZS4iKX1wcm9jZXNzWFJlZlRhYmxlKGUpe3RoaXMuX3RhYmxlU3RhdGU/Pz17ZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5sZXhlci5zdHJlYW0ucG9zLHBhcnNlckJ1ZjE6ZS5idWYxLHBhcnNlckJ1ZjI6ZS5idWYyfTtpZighaXNDbWQodGhpcy5yZWFkWFJlZlRhYmxlKGUpLCJ0cmFpbGVyIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBmaW5kIHRyYWlsZXIgZGljdGlvbmFyeSIpO2xldCB0PWUuZ2V0T2JqKCk7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJih0PXQuZGljdCk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBwYXJzZSB0cmFpbGVyIGRpY3Rpb25hcnkiKTtkZWxldGUgdGhpcy5fdGFibGVTdGF0ZTtyZXR1cm4gdH1yZWFkWFJlZlRhYmxlKGUpe2NvbnN0IHQ9ZS5sZXhlci5zdHJlYW0sbj10aGlzLl90YWJsZVN0YXRlO3QucG9zPW4uc3RyZWFtUG9zO2UuYnVmMT1uLnBhcnNlckJ1ZjE7ZS5idWYyPW4ucGFyc2VyQnVmMjtsZXQgYTtmb3IoOzspe2lmKCEoImZpcnN0RW50cnlOdW0iaW4gbil8fCEoImVudHJ5Q291bnQiaW4gbikpe2lmKGlzQ21kKGE9ZS5nZXRPYmooKSwidHJhaWxlciIpKWJyZWFrO24uZmlyc3RFbnRyeU51bT1hO24uZW50cnlDb3VudD1lLmdldE9iaigpfWxldCBzPW4uZmlyc3RFbnRyeU51bTtjb25zdCByPW4uZW50cnlDb3VudDtpZighTnVtYmVyLmlzSW50ZWdlcihzKXx8IU51bWJlci5pc0ludGVnZXIocikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHdyb25nIHR5cGVzIGluIHN1YnNlY3Rpb24gaGVhZGVyIik7Zm9yKGxldCBhPW4uZW50cnlOdW07YTxyO2ErKyl7bi5zdHJlYW1Qb3M9dC5wb3M7bi5lbnRyeU51bT1hO24ucGFyc2VyQnVmMT1lLmJ1ZjE7bi5wYXJzZXJCdWYyPWUuYnVmMjtjb25zdCBpPXtvZmZzZXQ6ZS5nZXRPYmooKSxnZW46ZS5nZXRPYmooKX0sbz1lLmdldE9iaigpO2lmKG8gaW5zdGFuY2VvZiBDbWQpc3dpdGNoKG8uY21kKXtjYXNlImYiOmkuZnJlZT0hMDticmVhaztjYXNlIm4iOmkudW5jb21wcmVzc2VkPSEwfWlmKCFOdW1iZXIuaXNJbnRlZ2VyKGkub2Zmc2V0KXx8IU51bWJlci5pc0ludGVnZXIoaS5nZW4pfHwhaS5mcmVlJiYhaS51bmNvbXByZXNzZWQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluIFhSZWYgc3Vic2VjdGlvbjogJHtzfSwgJHtyfWApOzA9PT1hJiZpLmZyZWUmJjE9PT1zJiYocz0wKTt0aGlzLiNzbltzK2FdPz89aX1uLmVudHJ5TnVtPTA7bi5zdHJlYW1Qb3M9dC5wb3M7bi5wYXJzZXJCdWYxPWUuYnVmMTtuLnBhcnNlckJ1ZjI9ZS5idWYyO2RlbGV0ZSBuLmZpcnN0RW50cnlOdW07ZGVsZXRlIG4uZW50cnlDb3VudH1pZih0aGlzLiNzblswXSYmIXRoaXMuI3NuWzBdLmZyZWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHVuZXhwZWN0ZWQgZmlyc3Qgb2JqZWN0Iik7cmV0dXJuIGF9cHJvY2Vzc1hSZWZTdHJlYW0oZSl7aWYoISgic3RyZWFtU3RhdGUiaW4gdGhpcykpe2NvbnN0e2RpY3Q6dCxwb3M6bn09ZSxhPXQuZ2V0KCJXIikscz10LmdldCgiSW5kZXgiKXx8WzAsdC5nZXQoIlNpemUiKV07dGhpcy5zdHJlYW1TdGF0ZT17ZW50cnlSYW5nZXM6cyxieXRlV2lkdGhzOmEsZW50cnlOdW06MCxzdHJlYW1Qb3M6bn19dGhpcy5yZWFkWFJlZlN0cmVhbShlKTtkZWxldGUgdGhpcy5zdHJlYW1TdGF0ZTtyZXR1cm4gZS5kaWN0fXJlYWRYUmVmU3RyZWFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW1TdGF0ZTtlLnBvcz10LnN0cmVhbVBvcztjb25zdFtuLGEsc109dC5ieXRlV2lkdGhzLHI9dC5lbnRyeVJhbmdlcztmb3IoO3IubGVuZ3RoPjA7KXtjb25zdFtpLG9dPXI7aWYoIU51bWJlci5pc0ludGVnZXIoaSl8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIHJhbmdlIGZpZWxkczogJHtpfSwgJHtvfWApO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pfHwhTnVtYmVyLmlzSW50ZWdlcihhKXx8IU51bWJlci5pc0ludGVnZXIocykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgZmllbGRzIGxlbmd0aDogJHtpfSwgJHtvfWApO2ZvcihsZXQgcj10LmVudHJ5TnVtO3I8bzsrK3Ipe3QuZW50cnlOdW09cjt0LnN0cmVhbVBvcz1lLnBvcztsZXQgbz0wLGw9MCxmPTA7Zm9yKGxldCB0PTA7dDxuOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAndHlwZScuIik7bz1vPDw4fHR9MD09PW4mJihvPTEpO2ZvcihsZXQgdD0wO3Q8YTsrK3Qpe2NvbnN0IHQ9ZS5nZXRCeXRlKCk7aWYoLTE9PT10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ29mZnNldCcuIik7bD1sPDw4fHR9Zm9yKGxldCB0PTA7dDxzOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnZ2VuZXJhdGlvbicuIik7Zj1mPDw4fHR9Y29uc3QgYz17b2Zmc2V0OmwsZ2VuOmZ9O3N3aXRjaChvKXtjYXNlIDA6Yy5mcmVlPSEwO2JyZWFrO2Nhc2UgMTpjLnVuY29tcHJlc3NlZD0hMDticmVhaztjYXNlIDI6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSB0eXBlOiAke299YCl9dGhpcy4jc25baStyXT8/PWN9dC5lbnRyeU51bT0wO3Quc3RyZWFtUG9zPWUucG9zO3Iuc3BsaWNlKDAsMil9fWluZGV4T2JqZWN0cygpe2Z1bmN0aW9uIHJlYWRUb2tlbihlLHQpe2xldCBuPSIiLGE9ZVt0XTtmb3IoOzEwIT09YSYmMTMhPT1hJiY2MCE9PWEmJiEoKyt0Pj1lLmxlbmd0aCk7KXtuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpO2E9ZVt0XX1yZXR1cm4gbn1mdW5jdGlvbiBza2lwVW50aWwoZSx0LG4pe2NvbnN0IGE9bi5sZW5ndGgscz1lLmxlbmd0aDtsZXQgcj0wO2Zvcig7dDxzOyl7bGV0IHM9MDtmb3IoO3M8YSYmZVt0K3NdPT09bltzXTspKytzO2lmKHM+PWEpYnJlYWs7dCsrO3IrK31yZXR1cm4gcn1jb25zdCBlPS9cYihlbmRvYmp8XGQrXHMrXGQrXHMrb2JqfHhyZWZ8dHJhaWxlclxzKjw8KVxiL2csdD0vXGIoc3RhcnR4cmVmfFxkK1xzK1xkK1xzK29iailcYi9nLG49L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLGE9bmV3IFVpbnQ4QXJyYXkoWzExNiwxMTQsOTcsMTA1LDEwOCwxMDEsMTE0XSkscz1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLHI9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLiNzbi5sZW5ndGg9MDt0aGlzLiNhbi5jbGVhcigpO2NvbnN0IGk9dGhpcy5zdHJlYW07aS5wb3M9MDtjb25zdCBvPWkuZ2V0Qnl0ZXMoKSxsPWJ5dGVzVG9TdHJpbmcobyksZj1vLmxlbmd0aDtsZXQgYz1pLnN0YXJ0O2NvbnN0IGg9W10sdT1bXTtmb3IoO2M8Zjspe2xldCBtPW9bY107aWYoOT09PW18fDEwPT09bXx8MTM9PT1tfHwzMj09PW0peysrYztjb250aW51ZX1pZigzNz09PW0pe2RveysrYztpZihjPj1mKWJyZWFrO209b1tjXX13aGlsZSgxMCE9PW0mJjEzIT09bSk7Y29udGludWV9Y29uc3QgcD1yZWFkVG9rZW4obyxjKTtsZXQgZDtpZihwLnN0YXJ0c1dpdGgoInhyZWYiKSYmKDQ9PT1wLmxlbmd0aHx8L1xzLy50ZXN0KHBbNF0pKSl7Yys9c2tpcFVudGlsKG8sYyxhKTtoLnB1c2goYyk7Yys9c2tpcFVudGlsKG8sYyxzKX1lbHNlIGlmKGQ9bi5leGVjKHApKXtjb25zdCB0PTB8ZFsxXSxuPTB8ZFsyXSxhPWMrcC5sZW5ndGg7bGV0IHMsaD0hMTtpZih0aGlzLiNzblt0XSl7aWYodGhpcy4jc25bdF0uZ2VuPT09bil0cnl7bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGkubWFrZVN1YlN0cmVhbShhKSl9KS5nZXRPYmooKTtoPSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBQYXJzZXJFT0ZFeGNlcHRpb24/d2FybihgaW5kZXhPYmplY3RzIC0tIGNoZWNraW5nIG9iamVjdCAoJHtwfSk6ICIke2V9Ii5gKTpoPSEwfX1lbHNlIGg9ITA7aCYmKHRoaXMuI3NuW3RdPXtvZmZzZXQ6Yy1pLnN0YXJ0LGdlbjpuLHVuY29tcHJlc3NlZDohMH0pO2UubGFzdEluZGV4PWE7Y29uc3QgbT1lLmV4ZWMobCk7aWYobSl7cz1lLmxhc3RJbmRleCsxLWM7aWYoImVuZG9iaiIhPT1tWzFdKXt3YXJuKGBpbmRleE9iamVjdHM6IEZvdW5kICIke21bMV19IiBpbnNpZGUgb2YgYW5vdGhlciAib2JqIiwgY2F1c2VkIGJ5IG1pc3NpbmcgImVuZG9iaiIgLS0gdHJ5aW5nIHRvIHJlY292ZXIuYCk7cy09bVsxXS5sZW5ndGgrMX19ZWxzZSBzPWYtYztjb25zdCBnPW8uc3ViYXJyYXkoYyxjK3MpLGI9c2tpcFVudGlsKGcsMCxyKTtpZihiPHMmJmdbYis1XTw2NCl7dS5wdXNoKGMtaS5zdGFydCk7dGhpcy4jdW4uYWRkKGMtaS5zdGFydCl9Yys9c31lbHNlIGlmKHAuc3RhcnRzV2l0aCgidHJhaWxlciIpJiYoNz09PXAubGVuZ3RofHwvXHMvLnRlc3QocFs3XSkpKXtoLnB1c2goYyk7Y29uc3QgZT1jK3AubGVuZ3RoO2xldCBuO3QubGFzdEluZGV4PWU7Y29uc3QgYT10LmV4ZWMobCk7aWYoYSl7bj10Lmxhc3RJbmRleCsxLWM7aWYoInN0YXJ0eHJlZiIhPT1hWzFdKXt3YXJuKGBpbmRleE9iamVjdHM6IEZvdW5kICIke2FbMV19IiBhZnRlciAidHJhaWxlciIsIGNhdXNlZCBieSBtaXNzaW5nICJzdGFydHhyZWYiIC0tIHRyeWluZyB0byByZWNvdmVyLmApO24tPWFbMV0ubGVuZ3RoKzF9fWVsc2Ugbj1mLWM7Yys9bn1lbHNlIGMrPXAubGVuZ3RoKzF9Zm9yKGNvbnN0IGUgb2YgdSl7dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKGUpO3RoaXMucmVhZFhSZWYoITApfWNvbnN0IG09W107bGV0IHAsZCxnPSExO2Zvcihjb25zdCBlIG9mIGgpe2kucG9zPWU7Y29uc3QgdD1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoaSkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMCxyZWNvdmVyeU1vZGU6ITB9KTtpZighaXNDbWQodC5nZXRPYmooKSwidHJhaWxlciIpKWNvbnRpbnVlO2NvbnN0IG49dC5nZXRPYmooKTtpZihuIGluc3RhbmNlb2YgRGljdCl7bS5wdXNoKG4pO24uaGFzKCJFbmNyeXB0IikmJihnPSEwKX19Zm9yKGNvbnN0IGUgb2ZbLi4ubSwiZ2VuRmFsbGJhY2siLC4uLm1dKXtpZigiZ2VuRmFsbGJhY2siPT09ZSl7aWYoIWQpYnJlYWs7dGhpcy5fZ2VuZXJhdGlvbkZhbGxiYWNrPSEwO2NvbnRpbnVlfWxldCB0PSExO3RyeXtjb25zdCBuPWUuZ2V0KCJSb290Iik7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7Y29uc3QgYT1uLmdldCgiUGFnZXMiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtjb25zdCBzPWEuZ2V0KCJDb3VudCIpO051bWJlci5pc0ludGVnZXIocykmJih0PSEwKX1jYXRjaChlKXtkPWU7Y29udGludWV9aWYodCYmKCFnfHxlLmhhcygiRW5jcnlwdCIpKSYmZS5oYXMoIklEIikpcmV0dXJuIGU7cD1lfWlmKHApcmV0dXJuIHA7aWYodGhpcy50b3BEaWN0KXJldHVybiB0aGlzLnRvcERpY3Q7aWYoIW0ubGVuZ3RoKWZvcihjb25zdCBlIGluIHRoaXMuI3NuKXtjb25zdCB0PXRoaXMuI3NuW2VdO2lmKCF0KWNvbnRpbnVlO2NvbnN0IG49UmVmLmdldChwYXJzZUludChlLDEwKSx0Lmdlbik7bGV0IGE7dHJ5e2E9dGhpcy5mZXRjaChuKX1jYXRjaHtjb250aW51ZX1hIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKGE9YS5kaWN0KTtpZihhIGluc3RhbmNlb2YgRGljdCYmYS5oYXMoIlJvb3QiKSlyZXR1cm4gYX10aHJvdyBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBQREYgc3RydWN0dXJlLiIpfXJlYWRYUmVmKGU9ITEpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sbj1uZXcgU2V0O2Zvcig7dGhpcy5zdGFydFhSZWZRdWV1ZS5sZW5ndGg7KXt0cnl7Y29uc3QgZT10aGlzLnN0YXJ0WFJlZlF1ZXVlWzBdO2lmKG4uaGFzKGUpKXt3YXJuKCJyZWFkWFJlZiAtIHNraXBwaW5nIFhSZWYgdGFibGUgc2luY2UgaXQgd2FzIGFscmVhZHkgcGFyc2VkLiIpO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKTtjb250aW51ZX1uLmFkZChlKTt0LnBvcz1lK3Quc3RhcnQ7Y29uc3QgYT1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIodCkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pO2xldCBzLHI9YS5nZXRPYmooKTtpZihpc0NtZChyLCJ4cmVmIikpe3M9dGhpcy5wcm9jZXNzWFJlZlRhYmxlKGEpO3RoaXMudG9wRGljdHx8PXM7cj1zLmdldCgiWFJlZlN0bSIpO2lmKE51bWJlci5pc0ludGVnZXIocikmJiF0aGlzLiN1bi5oYXMocikpe3RoaXMuI3VuLmFkZChyKTt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gocil9fWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIocikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIGhlYWRlciIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihhLmdldE9iaigpKSYmaXNDbWQoYS5nZXRPYmooKSwib2JqIikmJihyPWEuZ2V0T2JqKCkpaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBzdHJlYW0iKTtzPXRoaXMucHJvY2Vzc1hSZWZTdHJlYW0ocik7dGhpcy50b3BEaWN0fHw9cztpZighcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZhaWxlZCB0byByZWFkIFhSZWYgc3RyZWFtIil9dGhpcy4jY24uYWRkKGUpO3I9cy5nZXQoIlByZXYiKTtOdW1iZXIuaXNJbnRlZ2VyKHIpP3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChyKTpyIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goci5udW0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3RoaXMuI2huPSExO2luZm8oIih3aGlsZSByZWFkaW5nIFhSZWYpOiAiK2UpfXRoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKX1pZih0aGlzLnRvcERpY3QpcmV0dXJuIHRoaXMudG9wRGljdDtpZighZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9ufWNvdW50VXBkYXRlc0FmdGVyKGUpe2lmKHRoaXMuI29ufHwhdGhpcy4jaG4pcmV0dXJuIG51bGw7Y29uc3QgdD1lLXRoaXMuc3RyZWFtLnN0YXJ0O2xldCBuPTA7Zm9yKGNvbnN0IGUgb2YgdGhpcy4jY24pZT49dCYmIXRoaXMuI3VuLmhhcyhlKSYmbisrO3JldHVybiBufWdldEVudHJ5KGUpe2NvbnN0IHQ9dGhpcy4jc25bZV07cmV0dXJuIHQmJiF0LmZyZWUmJnQub2Zmc2V0P3Q6bnVsbH1mZXRjaElmUmVmKGUsdD0hMSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSZWY/dGhpcy5mZXRjaChlLHQpOmV9ZmV0Y2goZSx0PSExKXtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXRocm93IG5ldyBFcnJvcigicmVmIG9iamVjdCBpcyBub3QgYSByZWZlcmVuY2UiKTtjb25zdCBuPWUubnVtLGE9dGhpcy4jYW4uZ2V0KG4pO2lmKHZvaWQgMCE9PWEpe2EgaW5zdGFuY2VvZiBEaWN0JiYhYS5vYmpJZCYmKGEub2JqSWQ9ZS50b1N0cmluZygpKTtyZXR1cm4gYX1sZXQgcz10aGlzLmdldEVudHJ5KG4pO2lmKG51bGw9PT1zKXJldHVybiBzO2lmKHRoaXMuI2xuLmhhcyhlKSl7dGhpcy4jbG4ucmVtb3ZlKGUpO3dhcm4oYElnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogJHtlfS5gKTtyZXR1cm4gb259dGhpcy4jbG4ucHV0KGUpO3RyeXtzPXMudW5jb21wcmVzc2VkP3RoaXMuZmV0Y2hVbmNvbXByZXNzZWQoZSxzLHQpOnRoaXMuZmV0Y2hDb21wcmVzc2VkKGUscyx0KTt0aGlzLiNsbi5yZW1vdmUoZSl9Y2F0Y2godCl7dGhpcy4jbG4ucmVtb3ZlKGUpO3Rocm93IHR9cyBpbnN0YW5jZW9mIERpY3Q/cy5vYmpJZD1lLnRvU3RyaW5nKCk6cyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJihzLmRpY3Qub2JqSWQ9ZS50b1N0cmluZygpKTtyZXR1cm4gc31mZXRjaFVuY29tcHJlc3NlZChlLHQsbj0hMSl7Y29uc3QgYT1lLmdlbjtsZXQgcz1lLm51bTtpZih0LmdlbiE9PWEpe2NvbnN0IHI9YEluY29uc2lzdGVudCBnZW5lcmF0aW9uIGluIFhSZWY6ICR7ZX1gO2lmKHRoaXMuX2dlbmVyYXRpb25GYWxsYmFjayYmdC5nZW48YSl7d2FybihyKTtyZXR1cm4gdGhpcy5mZXRjaFVuY29tcHJlc3NlZChSZWYuZ2V0KHMsdC5nZW4pLHQsbil9dGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihyKX1jb25zdCByPXRoaXMuc3RyZWFtLm1ha2VTdWJTdHJlYW0odC5vZmZzZXQrdGhpcy5zdHJlYW0uc3RhcnQpLGk9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHIpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KSxvPWkuZ2V0T2JqKCksbD1pLmdldE9iaigpLGY9aS5nZXRPYmooKTtpZihvIT09c3x8bCE9PWF8fCEoZiBpbnN0YW5jZW9mIENtZCkpdGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKTtpZigib2JqIiE9PWYuY21kKXtpZihmLmNtZC5zdGFydHNXaXRoKCJvYmoiKSl7cz1wYXJzZUludChmLmNtZC5zdWJzdHJpbmcoMyksMTApO2lmKCFOdW1iZXIuaXNOYU4ocykpcmV0dXJuIHN9dGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKX0odD10aGlzLmVuY3J5cHQmJiFuP2kuZ2V0T2JqKHRoaXMuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0ocyxhKSk6aS5nZXRPYmooKSlpbnN0YW5jZW9mIEJhc2VTdHJlYW18fHRoaXMuI2FuLnNldChzLHQpO3JldHVybiB0fWZldGNoQ29tcHJlc3NlZChlLHQsbj0hMSl7Y29uc3QgYT10Lm9mZnNldCxzPXRoaXMuZmV0Y2goUmVmLmdldChhLDApKTtpZighKHMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImJhZCBPYmpTdG0gc3RyZWFtIik7Y29uc3Qgcj1zLmRpY3QuZ2V0KCJGaXJzdCIpLGk9cy5kaWN0LmdldCgiTiIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHwhTnVtYmVyLmlzSW50ZWdlcihpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZmlyc3QgYW5kIG4gcGFyYW1ldGVycyBmb3IgT2JqU3RtIHN0cmVhbSIpO2xldCBvPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihzKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7Y29uc3QgbD1uZXcgQXJyYXkoaSksZj1uZXcgQXJyYXkoaSk7Zm9yKGxldCBlPTA7ZTxpOysrZSl7Y29uc3QgdD1vLmdldE9iaigpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgaW52YWxpZCBvYmplY3QgbnVtYmVyIGluIHRoZSBPYmpTdG0gc3RyZWFtOiAke3R9YCk7Y29uc3Qgbj1vLmdldE9iaigpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pKXRocm93IG5ldyBGb3JtYXRFcnJvcihgaW52YWxpZCBvYmplY3Qgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtOiAke259YCk7bFtlXT10O2NvbnN0IHM9dGhpcy5nZXRFbnRyeSh0KTtzPy5vZmZzZXQ9PT1hJiZzLmdlbiE9PWUmJihzLmdlbj1lKTtmW2VdPW59Y29uc3QgYz0ocy5zdGFydHx8MCkrcixoPW5ldyBBcnJheShpKTtmb3IobGV0IGU9MDtlPGk7KytlKXtjb25zdCB0PWU8aS0xP2ZbZSsxXS1mW2VdOnZvaWQgMDtpZih0PDApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIG9mZnNldCBpbiB0aGUgT2JqU3RtIHN0cmVhbS4iKTtvPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihzLm1ha2VTdWJTdHJlYW0oYytmW2VdLHQscy5kaWN0KSkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pO2NvbnN0IG49by5nZXRPYmooKTtoW2VdPW47aWYobiBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pY29udGludWU7Y29uc3Qgcj1sW2VdLHU9dGhpcy4jc25bcl07dSYmdS5vZmZzZXQ9PT1hJiZ1Lmdlbj09PWUmJnRoaXMuI2FuLnNldChyLG4pfWlmKHZvaWQgMD09PSh0PWhbdC5nZW5dKSl0aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKGNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKTtyZXR1cm4gdH1hc3luYyBmZXRjaElmUmVmQXN5bmMoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIFJlZj90aGlzLmZldGNoQXN5bmMoZSx0KTplfWFzeW5jIGZldGNoQXN5bmMoZSx0KXt0cnl7cmV0dXJuIHRoaXMuZmV0Y2goZSx0KX1jYXRjaChuKXtpZighKG4gaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgbjthd2FpdCB0aGlzLnBkZk1hbmFnZXIucmVxdWVzdFJhbmdlKG4uYmVnaW4sbi5lbmQpO3JldHVybiB0aGlzLmZldGNoQXN5bmMoZSx0KX19Z2V0Q2F0YWxvZ09iaigpe3JldHVybiB0aGlzLnJvb3R9fWNvbnN0IENmPVswLDAsNjEyLDc5Ml07Y2xhc3MgUGFnZXsjbW49bnVsbDtjb25zdHJ1Y3Rvcih7cGRmTWFuYWdlcjplLHhyZWY6dCxwYWdlSW5kZXg6bixwYWdlRGljdDphLHJlZjpzLGdsb2JhbElkRmFjdG9yeTpyLGZvbnRDYWNoZTppLGJ1aWx0SW5DTWFwQ2FjaGU6byxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6bCxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6ZixnbG9iYWxJbWFnZUNhY2hlOmMsc3lzdGVtRm9udENhY2hlOmgsbm9uQmxlbmRNb2Rlc1NldDp1LHhmYUZhY3Rvcnk6bX0pe3RoaXMucGRmTWFuYWdlcj1lO3RoaXMucGFnZUluZGV4PW47dGhpcy5wYWdlRGljdD1hO3RoaXMueHJlZj10O3RoaXMucmVmPXM7dGhpcy5mb250Q2FjaGU9aTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGU9bzt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZT1sO3RoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlPWY7dGhpcy5nbG9iYWxJbWFnZUNhY2hlPWM7dGhpcy5zeXN0ZW1Gb250Q2FjaGU9aDt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9dTt0aGlzLmV2YWx1YXRvck9wdGlvbnM9ZS5ldmFsdWF0b3JPcHRpb25zO3RoaXMueGZhRmFjdG9yeT1tO2NvbnN0IHA9e29iajowfTt0aGlzLl9sb2NhbElkRmFjdG9yeT1jbGFzcyBleHRlbmRzIHJ7c3RhdGljIGNyZWF0ZU9iaklkKCl7cmV0dXJuYHAke259XyR7KytwLm9ian1gfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXtyZXR1cm5gcCR7cy50b1N0cmluZygpfWB9fX0jcG4oZSx0PXRoaXMucGFnZUluZGV4KXtyZXR1cm4gbmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSl9Y3JlYXRlQW5ub3RhdGlvbkV2YWx1YXRvcihlKXtyZXR1cm4gdGhpcy4jcG4oZSl9I2RuKGUsdD0hMSl7Y29uc3Qgbj1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnRoaXMucGFnZURpY3Qsa2V5OmUsZ2V0QXJyYXk6dCxzdG9wV2hlbkZvdW5kOiExfSk7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/MSE9PW4ubGVuZ3RoJiZuWzBdaW5zdGFuY2VvZiBEaWN0P0RpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTpufSk6blswXTpufWdldCBjb250ZW50KCl7cmV0dXJuIHRoaXMucGFnZURpY3QuZ2V0QXJyYXkoIkNvbnRlbnRzIil9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9dGhpcy4jZG4oIlJlc291cmNlcyIpO3JldHVybiBzaGFkb3codGhpcywicmVzb3VyY2VzIixlIGluc3RhbmNlb2YgRGljdD9lOkRpY3QuZW1wdHkpfWdldEJvdW5kaW5nQm94KGUpe2lmKHRoaXMueGZhRGF0YSlyZXR1cm4gdGhpcy54ZmFEYXRhLmJib3g7Y29uc3QgdD1sb29rdXBOb3JtYWxSZWN0KHRoaXMuI2RuKGUsITApLG51bGwpO2lmKHQpe2lmKHRbMl0tdFswXT4wJiZ0WzNdLXRbMV0+MClyZXR1cm4gdDt3YXJuKGBFbXB0eSwgb3IgaW52YWxpZCwgLyR7ZX0gZW50cnkuYCl9cmV0dXJuIG51bGx9Z2V0IG1lZGlhQm94KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJtZWRpYUJveCIsdGhpcy5nZXRCb3VuZGluZ0JveCgiTWVkaWFCb3giKXx8Q2YpfWdldCBjcm9wQm94KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjcm9wQm94Iix0aGlzLmdldEJvdW5kaW5nQm94KCJDcm9wQm94Iil8fHRoaXMubWVkaWFCb3gpfWdldCB1c2VyVW5pdCgpe2NvbnN0IGU9dGhpcy5wYWdlRGljdC5nZXQoIlVzZXJVbml0Iik7cmV0dXJuIHNoYWRvdyh0aGlzLCJ1c2VyVW5pdCIsIm51bWJlciI9PXR5cGVvZiBlJiZlPjA/ZToxKX1nZXQgdmlldygpe2NvbnN0e2Nyb3BCb3g6ZSxtZWRpYUJveDp0fT10aGlzO2lmKGUhPT10JiYhaXNBcnJheUVxdWFsKGUsdCkpe2NvbnN0IG49VXRpbC5pbnRlcnNlY3QoZSx0KTtpZihuJiZuWzJdLW5bMF0+MCYmblszXS1uWzFdPjApcmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3IixuKTt3YXJuKCJFbXB0eSAvQ3JvcEJveCBhbmQgL01lZGlhQm94IGludGVyc2VjdGlvbi4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInZpZXciLHQpfWdldCByb3RhdGUoKXtsZXQgZT10aGlzLiNkbigiUm90YXRlIil8fDA7ZSU5MCE9MD9lPTA6ZT49MzYwP2UlPTM2MDplPDAmJihlPShlJTM2MCszNjApJTM2MCk7cmV0dXJuIHNoYWRvdyh0aGlzLCJyb3RhdGUiLGUpfSNnbihlLHQpe2lmKCF0aGlzLmV2YWx1YXRvck9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0Q29udGVudFN0cmVhbSAtIGlnbm9yaW5nIHN1Yi1zdHJlYW0gKCR7dH0pOiAiJHtlfSIuYCl9YXN5bmMgZ2V0Q29udGVudFN0cmVhbSgpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJjb250ZW50Iik7aWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJiFlLmlzSW1hZ2VTdHJlYW0pe2lmKGUuaXNBc3luYyl7Y29uc3QgdD1hd2FpdCBlLmFzeW5jR2V0Qnl0ZXMoKTtpZih0KXJldHVybiBuZXcgU3RyZWFtKHQsMCx0Lmxlbmd0aCxlLmRpY3QpfXJldHVybiBlfWlmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9W107Zm9yKGxldCBuPTAsYT1lLmxlbmd0aDtuPGE7bisrKXtjb25zdCBhPWVbbl07YSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJmEuaXNBc3luYyYmdC5wdXNoKGEuYXN5bmNHZXRCeXRlcygpLnRoZW4odD0+e3QmJihlW25dPW5ldyBTdHJlYW0odCwwLHQubGVuZ3RoLGEuZGljdCkpfSkpfXQubGVuZ3RoPjAmJmF3YWl0IFByb21pc2UuYWxsKHQpO3JldHVybiBuZXcgU3RyZWFtc1NlcXVlbmNlU3RyZWFtKGUsdGhpcy4jZ24uYmluZCh0aGlzKSl9cmV0dXJuIG5ldyBOdWxsU3RyZWFtfWdldCB4ZmFEYXRhKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhIix0aGlzLnhmYUZhY3Rvcnk/e2Jib3g6dGhpcy54ZmFGYWN0b3J5LmdldEJvdW5kaW5nQm94KHRoaXMucGFnZUluZGV4KX06bnVsbCl9YXN5bmMjYm4oZSx0LG4pe2NvbnN0IGE9W107Zm9yKGNvbnN0IHMgb2YgZSlpZihzLmlkKXtjb25zdCBlPVJlZi5mcm9tU3RyaW5nKHMuaWQpO2lmKCFlKXt3YXJuKGBBIG5vbi1saW5rZWQgYW5ub3RhdGlvbiBjYW5ub3QgYmUgbW9kaWZpZWQ6ICR7cy5pZH1gKTtjb250aW51ZX1pZihzLmRlbGV0ZWQpe3QucHV0KGUsZSk7aWYocy5wb3B1cFJlZil7Y29uc3QgZT1SZWYuZnJvbVN0cmluZyhzLnBvcHVwUmVmKTtlJiZ0LnB1dChlLGUpfWNvbnRpbnVlfWlmKHMucG9wdXA/LmRlbGV0ZWQpe2NvbnN0IGU9UmVmLmZyb21TdHJpbmcocy5wb3B1cFJlZik7ZSYmdC5wdXQoZSxlKX1uPy5wdXQoZSk7cy5yZWY9ZTthLnB1c2godGhpcy54cmVmLmZldGNoQXN5bmMoZSkudGhlbihlPT57ZSBpbnN0YW5jZW9mIERpY3QmJihzLm9sZEFubm90YXRpb249ZS5jbG9uZSgpKX0sKCk9Pnt3YXJuKGBDYW5ub3QgZmV0Y2ggXGBvbGRBbm5vdGF0aW9uXGAgZm9yOiAke2V9LmApfSkpO2RlbGV0ZSBzLmlkfWF3YWl0IFByb21pc2UuYWxsKGEpfWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsbixhLHMpe2lmKHRoaXMueGZhRmFjdG9yeSl0aHJvdyBuZXcgRXJyb3IoIlhGQTogQ2Fubm90IHNhdmUgbmV3IGFubm90YXRpb25zLiIpO2NvbnN0IHI9dGhpcy4jcG4oZSksaT1uZXcgUmVmU2V0Q2FjaGUsbz1uZXcgUmVmU2V0O2F3YWl0IHRoaXMuI2JuKG4saSxvKTtjb25zdCBsPXRoaXMucGFnZURpY3QsZj10aGlzLmFubm90YXRpb25zLmZpbHRlcihlPT4hKGUgaW5zdGFuY2VvZiBSZWYmJmkuaGFzKGUpKSksYz1hd2FpdCBBbm5vdGF0aW9uRmFjdG9yeS5zYXZlTmV3QW5ub3RhdGlvbnMocix0aGlzLnhyZWYsdCxuLGEscyk7Zm9yKGNvbnN0e3JlZjplfW9mIGMuYW5ub3RhdGlvbnMpZSBpbnN0YW5jZW9mIFJlZiYmIW8uaGFzKGUpJiZmLnB1c2goZSk7Y29uc3QgaD1sLmNsb25lKCk7aC5zZXQoIkFubm90cyIsZik7cy5wdXQodGhpcy5yZWYse2RhdGE6aH0pO2Zvcihjb25zdCBlIG9mIGkpcy5wdXQoZSx7ZGF0YTpudWxsfSl9YXN5bmMgc2F2ZShlLHQsbixhKXtjb25zdCBzPXRoaXMuI3BuKGUpLHI9YXdhaXQgdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMsaT1bXTtmb3IoY29uc3QgZSBvZiByKWkucHVzaChlLnNhdmUocyx0LG4sYSkuY2F0Y2goZnVuY3Rpb24oZSl7d2Fybihgc2F2ZSAtIGlnbm9yaW5nIGFubm90YXRpb24gZGF0YSBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpO3JldHVybiBQcm9taXNlLmFsbChpKX1hc3luYyBsb2FkUmVzb3VyY2VzKGUpe2F3YWl0KHRoaXMuI21uPz89dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJyZXNvdXJjZXMiKSk7YXdhaXQgT2JqZWN0TG9hZGVyLmxvYWQodGhpcy5yZXNvdXJjZXMsZSx0aGlzLnhyZWYpfWFzeW5jI3duKGUsdCl7Y29uc3Qgbj1lPy5nZXQoIlJlc291cmNlcyIpO2lmKCEobiBpbnN0YW5jZW9mIERpY3QmJm4uc2l6ZSkpcmV0dXJuIHRoaXMucmVzb3VyY2VzO2F3YWl0IE9iamVjdExvYWRlci5sb2FkKG4sdCx0aGlzLnhyZWYpO3JldHVybiBEaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6W24sdGhpcy5yZXNvdXJjZXNdLG1lcmdlU3ViRGljdHM6ITB9KX1hc3luYyBnZXRPcGVyYXRvckxpc3Qoe2hhbmRsZXI6ZSxzaW5rOnQsdGFzazpuLGludGVudDphLGNhY2hlS2V5OnMscGFnZUluZGV4OnI9dGhpcy5wYWdlSW5kZXgsYW5ub3RhdGlvblN0b3JhZ2U6Zj1udWxsLG1vZGlmaWVkSWRzOm09bnVsbH0pe2NvbnN0IGQ9dGhpcy5nZXRDb250ZW50U3RyZWFtKCksZz10aGlzLmxvYWRSZXNvdXJjZXMoYm4pLGI9dGhpcy4jcG4oZSxyKSx3PXRoaXMueGZhRmFjdG9yeT9udWxsOmdldE5ld0Fubm90YXRpb25zTWFwKGYpLGo9dz8uZ2V0KHRoaXMucGFnZUluZGV4KTtsZXQgaz1Qcm9taXNlLnJlc29sdmUobnVsbCkseT1udWxsO2lmKGope2NvbnN0IGU9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKTtsZXQgdDtjb25zdCBhPW5ldyBTZXQ7Zm9yKGNvbnN0e2JpdG1hcElkOmUsYml0bWFwOnR9b2YgaikhZXx8dHx8YS5oYXMoZSl8fGEuYWRkKGUpO2NvbnN0e2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOnN9PXRoaXMuZXZhbHVhdG9yT3B0aW9ucztpZihhLnNpemU+MCl7Y29uc3QgZT1qLnNsaWNlKCk7Zm9yKGNvbnN0W3Qsbl1vZiBmKXQuc3RhcnRzV2l0aChwKSYmbi5iaXRtYXAmJmEuaGFzKG4uYml0bWFwSWQpJiZlLnB1c2gobik7dD1Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhlLHRoaXMueHJlZixzKX1lbHNlIHQ9QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMoaix0aGlzLnhyZWYscyk7eT1uZXcgUmVmU2V0O2s9UHJvbWlzZS5hbGwoW2UsdGhpcy4jYm4oaix5LG51bGwpXSkudGhlbigoW2VdKT0+ZT9Bbm5vdGF0aW9uRmFjdG9yeS5wcmludE5ld0Fubm90YXRpb25zKGUsYixuLGosdCk6bnVsbCl9Y29uc3QgcT1Qcm9taXNlLmFsbChbZCxnXSkudGhlbihhc3luYyhbaV0pPT57Y29uc3Qgbz1hd2FpdCB0aGlzLiN3bihpLmRpY3QsYm4pLGw9bmV3IE9wZXJhdG9yTGlzdChhLHQpO2Uuc2VuZCgiU3RhcnRSZW5kZXJQYWdlIix7dHJhbnNwYXJlbmN5OmIuaGFzQmxlbmRNb2RlcyhvLHRoaXMubm9uQmxlbmRNb2Rlc1NldCkscGFnZUluZGV4OnIsY2FjaGVLZXk6c30pO2F3YWl0IGIuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06aSx0YXNrOm4scmVzb3VyY2VzOm8sb3BlcmF0b3JMaXN0Omx9KTtyZXR1cm4gbH0pO2xldFt2LFMseF09YXdhaXQgUHJvbWlzZS5hbGwoW3EsdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMsa10pO2lmKHgpe1M9Uy5maWx0ZXIoZT0+IShlLnJlZiYmeS5oYXMoZS5yZWYpKSk7Zm9yKGxldCBlPTAsdD14Lmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCBuPXhbZV07aWYobi5yZWZUb1JlcGxhY2Upe2NvbnN0IGE9Uy5maW5kSW5kZXgoZT0+ZS5yZWYmJmlzUmVmc0VxdWFsKGUucmVmLG4ucmVmVG9SZXBsYWNlKSk7aWYoYT49MCl7Uy5zcGxpY2UoYSwxLG4pO3guc3BsaWNlKGUtLSwxKTt0LS19fX1TPVMuY29uY2F0KHgpfWlmKDA9PT1TLmxlbmd0aHx8YSZoKXt2LmZsdXNoKCEwKTtyZXR1cm57bGVuZ3RoOnYudG90YWxMZW5ndGh9fWNvbnN0IEM9ISEoYSZjKSxGPSEhKGEmdSksVD0hIShhJmkpLFI9ISEoYSZvKSxPPSEhKGEmbCksSD1bXTtmb3IoY29uc3QgZSBvZiBTKShUfHxSJiZlLm11c3RCZVZpZXdlZChmLEMpJiZlLm11c3RCZVZpZXdlZFdoZW5FZGl0aW5nKEYsbSl8fE8mJmUubXVzdEJlUHJpbnRlZChmKSkmJkgucHVzaChlLmdldE9wZXJhdG9yTGlzdChiLG4sYSxmKS5jYXRjaChmdW5jdGlvbihlKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke24ubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm57b3BMaXN0Om51bGwsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX0pKTtjb25zdCBEPWF3YWl0IFByb21pc2UuYWxsKEgpO2xldCBNPSExLE49ITE7Zm9yKGNvbnN0e29wTGlzdDplLHNlcGFyYXRlRm9ybTp0LHNlcGFyYXRlQ2FudmFzOm59b2YgRCl7di5hZGRPcExpc3QoZSk7TXx8PXQ7Tnx8PW59di5mbHVzaCghMCx7Zm9ybTpNLGNhbnZhczpOfSk7cmV0dXJue2xlbmd0aDp2LnRvdGFsTGVuZ3RofX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6ZSx0YXNrOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bixkaXNhYmxlTm9ybWFsaXphdGlvbjphLHNpbms6cyxpbnRlcnNlY3RvcjpyPW51bGx9KXtjb25zdCBpPXRoaXMuZ2V0Q29udGVudFN0cmVhbSgpLG89dGhpcy5sb2FkUmVzb3VyY2VzKHduKSxsPXRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJsYW5nIiksW2YsLGNdPWF3YWl0IFByb21pc2UuYWxsKFtpLG8sbF0pLGg9YXdhaXQgdGhpcy4jd24oZi5kaWN0LHduKTtyZXR1cm4gdGhpcy4jcG4oZSkuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpmLHRhc2s6dCxyZXNvdXJjZXM6aCxpbmNsdWRlTWFya2VkQ29udGVudDpuLGRpc2FibGVOb3JtYWxpemF0aW9uOmEsc2luazpzLHZpZXdCb3g6dGhpcy52aWV3LGxhbmc6YyxpbnRlcnNlY3RvcjpyfSl9YXN5bmMgZ2V0U3RydWN0VHJlZSgpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290Iik7aWYoIWUpcmV0dXJuIG51bGw7YXdhaXQgdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnM7dHJ5e2NvbnN0IHQ9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfcGFyc2VTdHJ1Y3RUcmVlIixbZV0pO3JldHVybiBhd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHQsInNlcmlhbGl6YWJsZSIpfWNhdGNoKGUpe3dhcm4oYGdldFN0cnVjdFRyZWU6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH19X3BhcnNlU3RydWN0VHJlZShlKXtjb25zdCB0PW5ldyBTdHJ1Y3RUcmVlUGFnZShlLHRoaXMucGFnZURpY3QpO3QucGFyc2UodGhpcy5yZWYpO3JldHVybiB0fWFzeW5jIGdldEFubm90YXRpb25zRGF0YShlLHQsbil7Y29uc3QgYT1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztpZigwPT09YS5sZW5ndGgpcmV0dXJuIGE7Y29uc3Qgcz1bXSxyPVtdO2xldCBmO2NvbnN0IGM9ISEobiZpKSxoPSEhKG4mbyksdT0hIShuJmwpLG09W107Zm9yKGNvbnN0IG4gb2YgYSl7Y29uc3QgYT1jfHxoJiZuLnZpZXdhYmxlOyhhfHx1JiZuLnByaW50YWJsZSkmJnMucHVzaChuLmRhdGEpO2lmKG4uaGFzVGV4dENvbnRlbnQmJmEpe2Y/Pz10aGlzLiNwbihlKTtyLnB1c2gobi5leHRyYWN0VGV4dENvbnRlbnQoZix0LFstMS8wLC0xLzAsMS8wLDEvMF0pLmNhdGNoKGZ1bmN0aW9uKGUpe3dhcm4oYGdldEFubm90YXRpb25zRGF0YSAtIGlnbm9yaW5nIHRleHRDb250ZW50IGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCl9KSl9ZWxzZSBuLm92ZXJsYXlzVGV4dENvbnRlbnQmJmEmJm0ucHVzaChuKX1pZihtLmxlbmd0aD4wKXtjb25zdCBuPW5ldyBJbnRlcnNlY3RvcihtKTtyLnB1c2godGhpcy5leHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6ZSx0YXNrOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ITEsZGlzYWJsZU5vcm1hbGl6YXRpb246ITEsc2luazpudWxsLGludGVyc2VjdG9yOm59KS50aGVuKCgpPT57bi5zZXRUZXh0KCl9KSl9YXdhaXQgUHJvbWlzZS5hbGwocik7cmV0dXJuIHN9Z2V0IGFubm90YXRpb25zKCl7Y29uc3QgZT10aGlzLiNkbigiQW5ub3RzIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJhbm5vdGF0aW9ucyIsQXJyYXkuaXNBcnJheShlKT9lOltdKX1nZXQgX3BhcnNlZEFubm90YXRpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfcGFyc2VkQW5ub3RhdGlvbnMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKS50aGVuKGFzeW5jIGU9PntpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGU7Y29uc3RbdCxuXT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKSx0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKV0pO2lmKCF0KXJldHVybltdO2NvbnN0IGE9bj8ub3JwaGFuRmllbGRzLHM9W107Zm9yKGNvbnN0IG4gb2YgZSlzLnB1c2goQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZixuLHQsdGhpcy5fbG9jYWxJZEZhY3RvcnksITEsYSxudWxsLHRoaXMucmVmKS5jYXRjaChmdW5jdGlvbihlKXt3YXJuKGBfcGFyc2VkQW5ub3RhdGlvbnM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKTtjb25zdCByPVtdO2xldCBpLG87Zm9yKGNvbnN0IGUgb2YgYXdhaXQgUHJvbWlzZS5hbGwocykpZSYmKGUgaW5zdGFuY2VvZiBXaWRnZXRBbm5vdGF0aW9uPyhvfHw9W10pLnB1c2goZSk6ZSBpbnN0YW5jZW9mIFBvcHVwQW5ub3RhdGlvbj8oaXx8PVtdKS5wdXNoKGUpOnIucHVzaChlKSk7byYmci5wdXNoKC4uLm8pO2kmJnIucHVzaCguLi5pKTtyZXR1cm4gcn0pKX1nZXQganNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJqc0FjdGlvbnMiLGNvbGxlY3RBY3Rpb25zKHRoaXMueHJlZix0aGlzLnBhZ2VEaWN0LGZlKSl9YXN5bmMgY29sbGVjdEFubm90YXRpb25zQnlUeXBlKGUsdCxuLGEscyl7Y29uc3R7cGFnZUluZGV4OnJ9PXRoaXM7aWYoT2JqZWN0Lmhhc093bih0aGlzLCJfcGFyc2VkQW5ub3RhdGlvbnMiKSl7Y29uc3QgZT1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztmb3IoY29uc3R7ZGF0YTp0fW9mIGUpaWYoIW58fG4uaGFzKHQuYW5ub3RhdGlvblR5cGUpKXt0LnBhZ2VJbmRleD1yO2EucHVzaChQcm9taXNlLnJlc29sdmUodCkpfXJldHVybn1jb25zdCBpPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKTtsZXQgbztmb3IoY29uc3QgbCBvZiBpKWEucHVzaChBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUodGhpcy54cmVmLGwscyx0aGlzLl9sb2NhbElkRmFjdG9yeSwhMSxudWxsLG4sdGhpcy5yZWYpLnRoZW4oYXN5bmMgbj0+e2lmKCFuKXJldHVybiBudWxsO24uZGF0YS5wYWdlSW5kZXg9cjtpZihuLmhhc1RleHRDb250ZW50JiZuLnZpZXdhYmxlKXtvPz89dGhpcy4jcG4oZSk7YXdhaXQgbi5leHRyYWN0VGV4dENvbnRlbnQobyx0LFstMS8wLC0xLzAsMS8wLDEvMF0pfXJldHVybiBuLmRhdGF9KS5jYXRjaChmdW5jdGlvbihlKXt3YXJuKGBjb2xsZWN0QW5ub3RhdGlvbnNCeVR5cGU6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKX19Y29uc3QgSWY9bmV3IFVpbnQ4QXJyYXkoWzM3LDgwLDY4LDcwLDQ1XSksRmY9bmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsOTcsMTE0LDExNiwxMjAsMTE0LDEwMSwxMDJdKSxUZj1uZXcgVWludDhBcnJheShbMTAxLDExMCwxMDAsMTExLDk4LDEwNl0pO2Z1bmN0aW9uIGZpbmQoZSx0LG49MTAyNCxhPSExKXtjb25zdCBzPXQubGVuZ3RoLHI9ZS5wZWVrQnl0ZXMobiksaT1yLmxlbmd0aC1zO2lmKGk8PTApcmV0dXJuITE7aWYoYSl7Y29uc3Qgbj1zLTE7bGV0IGE9ci5sZW5ndGgtMTtmb3IoO2E+PW47KXtsZXQgaT0wO2Zvcig7aTxzJiZyW2EtaV09PT10W24taV07KWkrKztpZihpPj1zKXtlLnBvcys9YS1uO3JldHVybiEwfWEtLX19ZWxzZXtsZXQgbj0wO2Zvcig7bjw9aTspe2xldCBhPTA7Zm9yKDthPHMmJnJbbithXT09PXRbYV07KWErKztpZihhPj1zKXtlLnBvcys9bjtyZXR1cm4hMH1uKyt9fXJldHVybiExfWNsYXNzIFBERkRvY3VtZW50eyNqbj1uZXcgTWFwOyNrbj1udWxsOyN5bj1udWxsO2NvbnN0cnVjdG9yKGUsdCl7aWYodC5sZW5ndGg8PTApdGhyb3cgbmV3IEludmFsaWRQREZFeGNlcHRpb24oIlRoZSBQREYgZmlsZSBpcyBlbXB0eSwgaS5lLiBpdHMgc2l6ZSBpcyB6ZXJvIGJ5dGVzLiIpO3RoaXMucGRmTWFuYWdlcj1lO3RoaXMuc3RyZWFtPXQ7dGhpcy54cmVmPW5ldyBYUmVmKHQsZSk7Y29uc3Qgbj17Zm9udDowfTt0aGlzLl9nbG9iYWxJZEZhY3Rvcnk9Y2xhc3N7c3RhdGljIGdldERvY0lkKCl7cmV0dXJuYGdfJHtlLmRvY0lkfWB9c3RhdGljIGNyZWF0ZUZvbnRJZCgpe3JldHVybiJmIisgKytuLmZvbnR9c3RhdGljIGNyZWF0ZU9iaklkKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgY3JlYXRlT2JqSWRgIGNhbGxlZC4iKX1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGFnZU9iaklkYCBjYWxsZWQuIil9fX1wYXJzZShlKXt0aGlzLnhyZWYucGFyc2UoZSk7dGhpcy5jYXRhbG9nPW5ldyBDYXRhbG9nKHRoaXMucGRmTWFuYWdlcix0aGlzLnhyZWYpfWdldCBsaW5lYXJpemF0aW9uKCl7bGV0IGU9bnVsbDt0cnl7ZT1MaW5lYXJpemF0aW9uLmNyZWF0ZSh0aGlzLnN0cmVhbSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbyhlKX1yZXR1cm4gc2hhZG93KHRoaXMsImxpbmVhcml6YXRpb24iLGUpfWdldCBzdGFydFhSZWYoKXtjb25zdCBlPXRoaXMuc3RyZWFtO2xldCB0PTA7aWYodGhpcy5saW5lYXJpemF0aW9uKXtlLnJlc2V0KCk7aWYoZmluZChlLFRmKSl7ZS5za2lwKDYpO2xldCBuPWUucGVla0J5dGUoKTtmb3IoO2lzV2hpdGVTcGFjZShuKTspe2UucG9zKys7bj1lLnBlZWtCeXRlKCl9dD1lLnBvcy1lLnN0YXJ0fX1lbHNle2NvbnN0IG49MTAyNCxhPUZmLmxlbmd0aDtsZXQgcz0hMSxyPWUuZW5kO2Zvcig7IXMmJnI+MDspe3ItPW4tYTtyPDAmJihyPTApO2UucG9zPXI7cz1maW5kKGUsRmYsbiwhMCl9aWYocyl7ZS5za2lwKDkpO2xldCBuO2Rve249ZS5nZXRCeXRlKCl9d2hpbGUoaXNXaGl0ZVNwYWNlKG4pKTtsZXQgYT0iIjtmb3IoO24+PTMyJiZuPD01Nzspe2ErPVN0cmluZy5mcm9tQ2hhckNvZGUobik7bj1lLmdldEJ5dGUoKX10PXBhcnNlSW50KGEsMTApO2lzTmFOKHQpJiYodD0wKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJzdGFydFhSZWYiLHQpfWNoZWNrSGVhZGVyKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtlLnJlc2V0KCk7aWYoIWZpbmQoZSxJZikpcmV0dXJuO2UubW92ZVN0YXJ0KCk7ZS5za2lwKElmLmxlbmd0aCk7bGV0IHQsbj0iIjtmb3IoOyh0PWUuZ2V0Qnl0ZSgpKT4zMiYmbi5sZW5ndGg8Nzspbis9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTtwbi50ZXN0KG4pP3RoaXMuI3luPW46d2FybihgSW52YWxpZCBQREYgaGVhZGVyIHZlcnNpb246ICR7bn1gKX1wYXJzZVN0YXJ0WFJlZigpe3RoaXMueHJlZi5zZXRTdGFydFhSZWYodGhpcy5zdGFydFhSZWYpfWdldCBudW1QYWdlcygpe2xldCBlPTA7ZT10aGlzLmNhdGFsb2cuaGFzQWN0dWFsTnVtUGFnZXM/dGhpcy5jYXRhbG9nLm51bVBhZ2VzOnRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3RvcnkuZ2V0TnVtUGFnZXMoKTp0aGlzLmxpbmVhcml6YXRpb24/dGhpcy5saW5lYXJpemF0aW9uLm51bVBhZ2VzOnRoaXMuY2F0YWxvZy5udW1QYWdlcztyZXR1cm4gc2hhZG93KHRoaXMsIm51bVBhZ2VzIixlKX0jcW4oZSx0PTApe3JldHVybiEhQXJyYXkuaXNBcnJheShlKSYmZS5ldmVyeShlPT57aWYoISgoZT10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKSlpbnN0YW5jZW9mIERpY3QpKXJldHVybiExO2lmKGUuaGFzKCJLaWRzIikpe2lmKCsrdD4xMCl7d2FybigiI2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXM6IG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIHJlYWNoZWQiKTtyZXR1cm4hMX1yZXR1cm4gdGhpcy4jcW4oZS5nZXQoIktpZHMiKSx0KX1jb25zdCBuPWlzTmFtZShnZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmUsa2V5OiJGVCJ9KSwiU2lnIiksYT1lLmdldCgiUmVjdCIpLHM9QXJyYXkuaXNBcnJheShhKSYmYS5ldmVyeShlPT4wPT09ZSk7cmV0dXJuIG4mJnN9KX1nZXQgX3hmYVN0cmVhbXMoKXtjb25zdHthY3JvRm9ybTplfT10aGlzLmNhdGFsb2c7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmdldCgiWEZBIiksbj1uZXcgTWFwKFsieGRwOnhkcCIsInRlbXBsYXRlIiwiZGF0YXNldHMiLCJjb25maWciLCJjb25uZWN0aW9uU2V0IiwibG9jYWxlU2V0Iiwic3R5bGVzaGVldCIsIi94ZHA6eGRwIl0ubWFwKGU9PltlLG51bGxdKSk7aWYodCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJiF0LmlzRW1wdHkpe24uc2V0KCJ4ZHA6eGRwIix0KTtyZXR1cm4gbn1pZighQXJyYXkuaXNBcnJheSh0KXx8MD09PXQubGVuZ3RoKXJldHVybiBudWxsO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrPTIpe2xldCBzO3M9MD09PWU/InhkcDp4ZHAiOmU9PT1hLTI/Ii94ZHA6eGRwIjp0W2VdO2lmKCFuLmhhcyhzKSljb250aW51ZTtjb25zdCByPXRoaXMueHJlZi5mZXRjaElmUmVmKHRbZSsxXSk7ciBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJiFyLmlzRW1wdHkmJm4uc2V0KHMscil9cmV0dXJuIG59Z2V0IHhmYURhdGFzZXRzKCl7Y29uc3QgZT10aGlzLl94ZmFTdHJlYW1zO2lmKCFlKXJldHVybiBzaGFkb3codGhpcywieGZhRGF0YXNldHMiLG51bGwpO2Zvcihjb25zdCB0IG9mWyJkYXRhc2V0cyIsInhkcDp4ZHAiXSl7Y29uc3Qgbj1lLmdldCh0KTtpZihuKXRyeXtjb25zdCBlPXN0cmluZ1RvVVRGOFN0cmluZyhuLmdldFN0cmluZygpKTtyZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGFzZXRzIixuZXcgRGF0YXNldFJlYWRlcih7W3RdOmV9KSl9Y2F0Y2h7d2FybigiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7YnJlYWt9fXJldHVybiBzaGFkb3codGhpcywieGZhRGF0YXNldHMiLG51bGwpfWdldCB4ZmFEYXRhKCl7Y29uc3QgZT10aGlzLl94ZmFTdHJlYW1zO2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHQ9bmV3IE1hcDtmb3IoY29uc3RbbixhXW9mIGUpaWYoYSl0cnl7dC5zZXQobixzdHJpbmdUb1VURjhTdHJpbmcoYS5nZXRTdHJpbmcoKSkpfWNhdGNoe3dhcm4oIlhGQSAtIEludmFsaWQgdXRmLTggc3RyaW5nLiIpO3JldHVybiBudWxsfXJldHVybiB0fWdldCB4ZmFGYWN0b3J5KCl7bGV0IGU7dGhpcy5wZGZNYW5hZ2VyLmVuYWJsZVhmYSYmdGhpcy5jYXRhbG9nLm5lZWRzUmVuZGVyaW5nJiZ0aGlzLmZvcm1JbmZvLmhhc1hmYSYmIXRoaXMuZm9ybUluZm8uaGFzQWNyb0Zvcm0mJihlPXRoaXMueGZhRGF0YSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFGYWN0b3J5IixlP25ldyBYRkFGYWN0b3J5KGUpOm51bGwpfWdldCBpc1B1cmVYZmEoKXtyZXR1cm4hIXRoaXMueGZhRmFjdG9yeSYmdGhpcy54ZmFGYWN0b3J5LmlzVmFsaWQoKX1nZXQgaHRtbEZvclhmYSgpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldFBhZ2VzKCk6bnVsbH1hc3luYyN2bigpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coInhmYUltYWdlcyIpO2UmJnRoaXMueGZhRmFjdG9yeS5zZXRJbWFnZXMoZSl9YXN5bmMjU24oZSx0KXtjb25zdCBuPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpO2lmKCFuKXJldHVybjtjb25zdCBhPWF3YWl0IG4uZ2V0QXN5bmMoIkRSIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2F3YWl0IE9iamVjdExvYWRlci5sb2FkKGEsWyJGb250Il0sdGhpcy54cmVmKTtjb25zdCBzPWEuZ2V0KCJGb250Iik7aWYoIShzIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IHI9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zLHt1c2VTeXN0ZW1Gb250czohMX0pLHtidWlsdEluQ01hcENhY2hlOmksZm9udENhY2hlOm8sc3RhbmRhcmRGb250RGF0YUNhY2hlOmx9PXRoaXMuY2F0YWxvZyxmPW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4Oi0xLGlkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOm8sYnVpbHRJbkNNYXBDYWNoZTppLHN0YW5kYXJkRm9udERhdGFDYWNoZTpsLG9wdGlvbnM6cn0pLGM9bmV3IE9wZXJhdG9yTGlzdCxoPVtdLHU9e2dldCBmb250KCl7cmV0dXJuIGguYXQoLTEpfSxzZXQgZm9udChlKXtoLnB1c2goZSl9LGNsb25lKCl7cmV0dXJuIHRoaXN9fSxwYXJzZUZvbnQ9KGUsbixzKT0+Zi5oYW5kbGVTZXRGb250KGEsW05hbWUuZ2V0KGUpLDFdLG51bGwsYyx0LHUsbixzKS5jYXRjaChlPT57d2FybihgbG9hZFhmYUZvbnRzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSxtPVtdO2Zvcihjb25zdFtlLHRdb2Ygcyl7Y29uc3Qgbj10LmdldCgiRm9udERlc2NyaXB0b3IiKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtsZXQgYT1uLmdldCgiRm9udEZhbWlseSIpO2E9YS5yZXBsYWNlQWxsKC8gKyhcZCkvZywiJDEiKTtjb25zdCBzPXtmb250RmFtaWx5OmEsZm9udFdlaWdodDpuLmdldCgiRm9udFdlaWdodCIpLGl0YWxpY0FuZ2xlOi1uLmdldCgiSXRhbGljQW5nbGUiKX07dmFsaWRhdGVDU1NGb250KHMpJiZtLnB1c2gocGFyc2VGb250KGUsbnVsbCxzKSl9YXdhaXQgUHJvbWlzZS5hbGwobSk7Y29uc3QgcD10aGlzLnhmYUZhY3Rvcnkuc2V0Rm9udHMoaCk7aWYoIXApcmV0dXJuO3IuaWdub3JlRXJyb3JzPSEwO20ubGVuZ3RoPTA7aC5sZW5ndGg9MDtjb25zdCBkPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgcClnZXRYZmFGb250TmFtZShgJHtlfS1SZWd1bGFyYCl8fGQuYWRkKGUpO2Quc2l6ZSYmcC5wdXNoKCJQZGZKUy1GYWxsYmFjayIpO2Zvcihjb25zdCBlIG9mIHApaWYoIWQuaGFzKGUpKWZvcihjb25zdCB0IG9mW3tuYW1lOiJSZWd1bGFyIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiQm9sZCIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MH0se25hbWU6Ikl0YWxpYyIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MTJ9LHtuYW1lOiJCb2xkSXRhbGljIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZToxMn1dKXtjb25zdCBuPWAke2V9LSR7dC5uYW1lfWA7bS5wdXNoKHBhcnNlRm9udChuLGdldFhmYUZvbnREaWN0KG4pLHtmb250RmFtaWx5OmUsZm9udFdlaWdodDp0LmZvbnRXZWlnaHQsaXRhbGljQW5nbGU6dC5pdGFsaWNBbmdsZX0pKX1hd2FpdCBQcm9taXNlLmFsbChtKTt0aGlzLnhmYUZhY3RvcnkuYXBwZW5kRm9udHMoaCxkKX1sb2FkWGZhUmVzb3VyY2VzKGUsdCl7cmV0dXJuIFByb21pc2UuYWxsKFt0aGlzLiNTbihlLHQpLmNhdGNoKCgpPT57fSksdGhpcy4jdm4oKV0pfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3Rvcnkuc2VyaWFsaXplRGF0YShlKTpudWxsfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuY2F0YWxvZy52ZXJzaW9ufHx0aGlzLiN5bn1nZXQgZm9ybUluZm8oKXtjb25zdCBlPXtoYXNGaWVsZHM6ITEsaGFzQWNyb0Zvcm06ITEsaGFzWGZhOiExLGhhc1NpZ25hdHVyZXM6ITF9LHthY3JvRm9ybTp0fT10aGlzLmNhdGFsb2c7aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IG49dC5nZXQoIkZpZWxkcyIpLGE9QXJyYXkuaXNBcnJheShuKSYmbi5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1hO2NvbnN0IHM9dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkocykmJnMubGVuZ3RoPjB8fHMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhcy5pc0VtcHR5O2NvbnN0IHI9ISEoMSZ0LmdldCgiU2lnRmxhZ3MiKSksaT1yJiZ0aGlzLiNxbihuKTtlLmhhc0Fjcm9Gb3JtPWEmJiFpO2UuaGFzU2lnbmF0dXJlcz1yfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYENhbm5vdCBmZXRjaCBmb3JtIGluZm9ybWF0aW9uOiAiJHtlfSIuYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJmb3JtSW5mbyIsZSl9Z2V0IGRvY3VtZW50SW5mbygpe2NvbnN0e2NhdGFsb2c6ZSxmb3JtSW5mbzp0LHhyZWY6bn09dGhpcyxhPXtQREZGb3JtYXRWZXJzaW9uOnRoaXMudmVyc2lvbixMYW5ndWFnZTplLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6bi5lbmNyeXB0Py5maWx0ZXJOYW1lPz9udWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0Lmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0Lmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhZS5jb2xsZWN0aW9uLElzU2lnbmF0dXJlc1ByZXNlbnQ6dC5oYXNTaWduYXR1cmVzfTtsZXQgczt0cnl7cz1uLnRyYWlsZXIuZ2V0KCJJbmZvIil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiVGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX1pZighKHMgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50SW5mbyIsYSk7Zm9yKGNvbnN0W2UsdF1vZiBzKXtzd2l0Y2goZSl7Y2FzZSJUaXRsZSI6Y2FzZSJBdXRob3IiOmNhc2UiU3ViamVjdCI6Y2FzZSJLZXl3b3JkcyI6Y2FzZSJDcmVhdG9yIjpjYXNlIlByb2R1Y2VyIjpjYXNlIkNyZWF0aW9uRGF0ZSI6Y2FzZSJNb2REYXRlIjppZigic3RyaW5nIj09dHlwZW9mIHQpe2FbZV09c3RyaW5nVG9QREZTdHJpbmcodCk7Y29udGludWV9YnJlYWs7Y2FzZSJUcmFwcGVkIjppZih0IGluc3RhbmNlb2YgTmFtZSl7YVtlXT10O2NvbnRpbnVlfWJyZWFrO2RlZmF1bHQ6bGV0IG47c3dpdGNoKHR5cGVvZiB0KXtjYXNlInN0cmluZyI6bj1zdHJpbmdUb1BERlN0cmluZyh0KTticmVhaztjYXNlIm51bWJlciI6Y2FzZSJib29sZWFuIjpuPXQ7YnJlYWs7ZGVmYXVsdDp0IGluc3RhbmNlb2YgTmFtZSYmKG49dCl9aWYodm9pZCAwPT09bil7d2FybihgQmFkIHZhbHVlLCBmb3IgY3VzdG9tIGtleSAiJHtlfSIsIGluIEluZm86ICR7dH0uYCk7Y29udGludWV9YS5DdXN0b20/Pz1PYmplY3QuY3JlYXRlKG51bGwpO2EuQ3VzdG9tW2VdPW47Y29udGludWV9d2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2V9IiwgaW4gSW5mbzogJHt0fS5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50SW5mbyIsYSl9Z2V0IGZpbmdlcnByaW50cygpe2NvbnN0IGU9IlwwIi5yZXBlYXQoMTYpO2Z1bmN0aW9uIHZhbGlkYXRlKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmMTY9PT10Lmxlbmd0aCYmdCE9PWV9Y29uc3QgdD10aGlzLnhyZWYudHJhaWxlci5nZXQoIklEIik7bGV0IG4sYTtpZihBcnJheS5pc0FycmF5KHQpJiZ2YWxpZGF0ZSh0WzBdKSl7bj1zdHJpbmdUb0J5dGVzKHRbMF0pO3RbMV0hPT10WzBdJiZ2YWxpZGF0ZSh0WzFdKSYmKGE9c3RyaW5nVG9CeXRlcyh0WzFdKSl9ZWxzZSBuPWNhbGN1bGF0ZU1ENSh0aGlzLnN0cmVhbS5nZXRCeXRlUmFuZ2UoMCwxMDI0KSwwLDEwMjQpO3JldHVybiBzaGFkb3codGhpcywiZmluZ2VycHJpbnRzIixbbi50b0hleCgpLGE/LnRvSGV4KCk/P251bGxdKX1hc3luYyNBbihlKXtjb25zdHtjYXRhbG9nOnQsbGluZWFyaXphdGlvbjpuLHhyZWY6YX09dGhpcyxzPVJlZi5nZXQobi5vYmplY3ROdW1iZXJGaXJzdCwwKTt0cnl7Y29uc3QgZT1hd2FpdCBhLmZldGNoQXN5bmMocyk7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2xldCBuPWUuZ2V0UmF3KCJUeXBlIik7biBpbnN0YW5jZW9mIFJlZiYmKG49YXdhaXQgYS5mZXRjaEFzeW5jKG4pKTtpZihpc05hbWUobiwiUGFnZSIpfHwhZS5oYXMoIlR5cGUiKSYmIWUuaGFzKCJLaWRzIikmJmUuaGFzKCJDb250ZW50cyIpKXt0LnBhZ2VLaWRzQ291bnRDYWNoZS5oYXMocyl8fHQucGFnZUtpZHNDb3VudENhY2hlLnB1dChzLDEpO3QucGFnZUluZGV4Q2FjaGUuaGFzKHMpfHx0LnBhZ2VJbmRleENhY2hlLnB1dChzLDApO3JldHVybltlLHNdfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZSBMaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lc24ndCBwb2ludCB0byBhIHZhbGlkIFBhZ2UgZGljdGlvbmFyeS4iKX1jYXRjaChuKXt3YXJuKGBfZ2V0TGluZWFyaXphdGlvblBhZ2U6ICIke24ubWVzc2FnZX0iLmApO3JldHVybiB0LmdldFBhZ2VEaWN0KGUpfX1nZXRQYWdlKGUpe2NvbnN0IHQ9dGhpcy4jam4uZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3R7Y2F0YWxvZzpuLGxpbmVhcml6YXRpb246YSx4ZmFGYWN0b3J5OnN9PXRoaXM7bGV0IHI7cj1zP1Byb21pc2UucmVzb2x2ZShbRGljdC5lbXB0eSxudWxsXSk6YT8ucGFnZUZpcnN0PT09ZT90aGlzLiNBbihlKTpuLmdldFBhZ2VEaWN0KGUpO3I9ci50aGVuKChbdCxhXSk9Pm5ldyBQYWdlKHtwZGZNYW5hZ2VyOnRoaXMucGRmTWFuYWdlcix4cmVmOnRoaXMueHJlZixwYWdlSW5kZXg6ZSxwYWdlRGljdDp0LHJlZjphLGdsb2JhbElkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOm4uZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6bi5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTpuLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6bi5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTpuLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOm4uc3lzdGVtRm9udENhY2hlLG5vbkJsZW5kTW9kZXNTZXQ6bi5ub25CbGVuZE1vZGVzU2V0LHhmYUZhY3Rvcnk6c30pKTt0aGlzLiNqbi5zZXQoZSxyKTtyZXR1cm4gcn1hc3luYyBjaGVja0ZpcnN0UGFnZShlPSExKXtpZighZSl0cnl7YXdhaXQgdGhpcy5nZXRQYWdlKDApfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24pe3RoaXMuI2puLmRlbGV0ZSgwKTthd2FpdCB0aGlzLmNsZWFudXAoKTt0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9ufX19YXN5bmMgY2hlY2tMYXN0UGFnZShlPSExKXtjb25zdHtjYXRhbG9nOnQscGRmTWFuYWdlcjpufT10aGlzO3Quc2V0QWN0dWFsTnVtUGFnZXMoKTtsZXQgYTt0cnl7YXdhaXQgUHJvbWlzZS5hbGwoW24uZW5zdXJlRG9jKCJ4ZmFGYWN0b3J5Iiksbi5lbnN1cmVEb2MoImxpbmVhcml6YXRpb24iKSxuLmVuc3VyZUNhdGFsb2coIm51bVBhZ2VzIildKTtpZih0aGlzLnhmYUZhY3RvcnkpcmV0dXJuO2E9dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0Lm51bVBhZ2VzO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBjb3VudCBpcyBub3QgYW4gaW50ZWdlci4iKTtpZihhPD0xKXJldHVybjthd2FpdCB0aGlzLmdldFBhZ2UoYS0xKX1jYXRjaChzKXt0aGlzLiNqbi5kZWxldGUoYS0xKTthd2FpdCB0aGlzLmNsZWFudXAoKTtpZihzIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3dhcm4oYGNoZWNrTGFzdFBhZ2UgLSBpbnZhbGlkIC9QYWdlcyB0cmVlIC9Db3VudDogJHthfS5gKTtsZXQgcjt0cnl7cj1hd2FpdCB0LmdldEFsbFBhZ2VEaWN0cyhlKX1jYXRjaChuKXtpZihuIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3Quc2V0QWN0dWFsTnVtUGFnZXMoMSk7cmV0dXJufWZvcihjb25zdFtlLFthLHNdXW9mIHIpe2xldCByO2lmKGEgaW5zdGFuY2VvZiBFcnJvcil7cj1Qcm9taXNlLnJlamVjdChhKTtyLmNhdGNoKCgpPT57fSl9ZWxzZSByPVByb21pc2UucmVzb2x2ZShuZXcgUGFnZSh7cGRmTWFuYWdlcjpuLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OmEscmVmOnMsZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6dC5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0LmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnQuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbENvbG9yU3BhY2VDYWNoZTp0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnQuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dC5zeXN0ZW1Gb250Q2FjaGUsbm9uQmxlbmRNb2Rlc1NldDp0Lm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpudWxsfSkpO3RoaXMuI2puLnNldChlLHIpfXQuc2V0QWN0dWFsTnVtUGFnZXMoci5zaXplKX19YXN5bmMgZm9udEZhbGxiYWNrKGUsdCl7Y29uc3R7Y2F0YWxvZzpuLHBkZk1hbmFnZXI6YX09dGhpcztmb3IoY29uc3QgcyBvZiBhd2FpdCBQcm9taXNlLmFsbChuLmZvbnRDYWNoZSkpaWYocy5sb2FkZWROYW1lPT09ZSl7cy5mYWxsYmFjayh0LGEuZXZhbHVhdG9yT3B0aW9ucyk7cmV0dXJufX1hc3luYyBjbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLmNhdGFsb2c/dGhpcy5jYXRhbG9nLmNsZWFudXAoZSk6Y2xlYXJHbG9iYWxDYWNoZXMoKX1hc3luYyN4bihlLHQsbixhLHMscixpKXtjb25zdHt4cmVmOm99PXRoaXM7aWYoIShuIGluc3RhbmNlb2YgUmVmKXx8ci5oYXMobikpcmV0dXJuO3IucHV0KG4pO2NvbnN0IGw9YXdhaXQgby5mZXRjaEFzeW5jKG4pO2lmKCEobCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtsZXQgZj1hd2FpdCBsLmdldEFzeW5jKCJTdWJ0eXBlIik7Zj1mIGluc3RhbmNlb2YgTmFtZT9mLm5hbWU6bnVsbDtpZigiTGluayI9PT1mKXJldHVybjtpZihsLmhhcygiVCIpKXtjb25zdCB0PXN0cmluZ1RvUERGU3RyaW5nKGF3YWl0IGwuZ2V0QXN5bmMoIlQiKSk7ZT0iIj09PWU/dDpgJHtlfS4ke3R9YH1lbHNle2xldCBuPWw7Y29uc3QgYT1uZXcgUmVmU2V0O2Zvcig7Oyl7bj1uLmdldFJhdygiUGFyZW50Iil8fHQ7aWYobiBpbnN0YW5jZW9mIFJlZil7aWYoci5oYXMobil8fGEuaGFzKG4pKWJyZWFrO2EucHV0KG4pO249YXdhaXQgby5mZXRjaEFzeW5jKG4pfWlmKCEobiBpbnN0YW5jZW9mIERpY3QpKWJyZWFrO2lmKG4uaGFzKCJUIikpe2NvbnN0IHQ9c3RyaW5nVG9QREZTdHJpbmcoYXdhaXQgbi5nZXRBc3luYygiVCIpKTtlPSIiPT09ZT90OmAke2V9LiR7dH1gO2JyZWFrfX19dCYmIWwuaGFzKCJQYXJlbnQiKSYmaXNOYW1lKGwuZ2V0KCJTdWJ0eXBlIiksIldpZGdldCIpJiZpLnB1dChuLHQpO2EuZ2V0T3JJbnNlcnRDb21wdXRlZChlLG1ha2VBcnIpLnB1c2goQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKG8sbixzLG51bGwsITAsaSxudWxsLG51bGwpLnRoZW4oZT0+ZT8uZ2V0RmllbGRPYmplY3QoKSkuY2F0Y2goZnVuY3Rpb24oZSl7d2FybihgI2NvbGxlY3RGaWVsZE9iamVjdHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKTtpZighbC5oYXMoIktpZHMiKSlyZXR1cm47Y29uc3QgYz1hd2FpdCBsLmdldEFzeW5jKCJLaWRzIik7aWYoQXJyYXkuaXNBcnJheShjKSlmb3IoY29uc3QgdCBvZiBjKWF3YWl0IHRoaXMuI3huKGUsbix0LGEscyxyLGkpfWdldCBmaWVsZE9iamVjdHMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImZpZWxkT2JqZWN0cyIsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZm9ybUluZm8iKS50aGVuKGFzeW5jIGU9PntpZighZS5oYXNGaWVsZHMpcmV0dXJuIG51bGw7Y29uc3QgdD1hd2FpdCB0aGlzLmFubm90YXRpb25HbG9iYWxzO2lmKCF0KXJldHVybiBudWxsO2NvbnN0e2Fjcm9Gb3JtOm59PXQsYT1uZXcgUmVmU2V0LHM9T2JqZWN0LmNyZWF0ZShudWxsKSxyPW5ldyBNYXAsaT1uZXcgUmVmU2V0Q2FjaGU7Zm9yKGNvbnN0IGUgb2Ygbi5nZXQoIkZpZWxkcyIpKWF3YWl0IHRoaXMuI3huKCIiLG51bGwsZSxyLHQsYSxpKTtjb25zdCBvPVtdO2Zvcihjb25zdFtlLHRdb2YgcilvLnB1c2goUHJvbWlzZS5hbGwodCkudGhlbih0PT57KHQ9dC5maWx0ZXIoZT0+ISFlKSkubGVuZ3RoPjAmJihzW2VdPXQpfSkpO2F3YWl0IFByb21pc2UuYWxsKG8pO3JldHVybnthbGxGaWVsZHM6T2JqZWN0LmtleXMocykubGVuZ3RoP3M6bnVsbCxvcnBoYW5GaWVsZHM6aX19KSl9YXN5bmMjQ24oZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IGEgb2YgZSl7aWYoYSBpbnN0YW5jZW9mIFJlZil7aWYobi5oYXMoYSkpY29udGludWU7bi5wdXQoYSl9Y29uc3QgZT1hd2FpdCB0aGlzLnhyZWYuZmV0Y2hJZlJlZkFzeW5jKGEpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtpZihpc05hbWUoYXdhaXQgZS5nZXRBc3luYygiRlQiKSwiU2lnIikpe2NvbnN0IG49YXdhaXQgZS5nZXRBc3luYygiViIpO2lmKG4gaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBzPWF3YWl0IHRoaXMuI0luKGUsbixhKTtzJiZ0LnB1c2gocyl9fWUuaGFzKCJLaWRzIikmJmF3YWl0IHRoaXMuI0NuKGF3YWl0IGUuZ2V0QXN5bmMoIktpZHMiKSx0LG4pfX19YXN5bmMjRm4oZSx0KXt0cnl7cmV0dXJuIHRoaXMuc3RyZWFtLmdldEJ5dGVSYW5nZShlLHQpfWNhdGNoKG4pe2lmKCEobiBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBuO2F3YWl0IHRoaXMucGRmTWFuYWdlci5yZXF1ZXN0UmFuZ2UoZSx0KTtyZXR1cm4gdGhpcy4jRm4oZSx0KX19YXN5bmMjVG4oZSx0KXtpZih0PjApcmV0dXJuITE7Y29uc3Qgbj10aGlzLnN0cmVhbS5lbmQ7Zm9yKGxldCB0PWU7dDxuO3QrPTY1NTM2KXtjb25zdCBlPU1hdGgubWluKHQrNjU1MzYsbiksYT1hd2FpdCB0aGlzLiNGbih0LGUpO2Zvcihjb25zdCBlIG9mIGEpaWYoMCE9PWUmJjkhPT1lJiYxMCE9PWUmJjEyIT09ZSYmMTMhPT1lJiYzMiE9PWUpcmV0dXJuITF9cmV0dXJuITB9YXN5bmMjSW4oZSx0LG4pe2NvbnN0IGE9YXdhaXQgdC5nZXRBc3luYygiQnl0ZVJhbmdlIik7aWYoIUFycmF5LmlzQXJyYXkoYSl8fDQhPT1hLmxlbmd0aHx8YS5zb21lKGU9PiFOdW1iZXIuaXNJbnRlZ2VyKGUpfHxlPDApKXJldHVybiBudWxsO2NvbnN0W3MscixpLG9dPWEsbD10aGlzLnN0cmVhbS5lbmR8fDA7aWYoMCE9PXN8fHI8PTB8fHMrcj5pfHxpK28+bHx8MD09PWwpcmV0dXJuIG51bGw7Y29uc3QgZj1hd2FpdCB0LmdldEFzeW5jKCJDb250ZW50cyIpO2lmKCJzdHJpbmciIT10eXBlb2YgZnx8MD09PWYubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0W2MsaCx1LG0scCxkLGcsYl09YXdhaXQgUHJvbWlzZS5hbGwoW3QuZ2V0QXN5bmMoIkZpbHRlciIpLHQuZ2V0QXN5bmMoIlN1YkZpbHRlciIpLGUuZ2V0QXN5bmMoIlQiKSx0LmdldEFzeW5jKCJOYW1lIiksdC5nZXRBc3luYygiUmVhc29uIiksdC5nZXRBc3luYygiTG9jYXRpb24iKSx0LmdldEFzeW5jKCJDb250YWN0SW5mbyIpLHQuZ2V0QXN5bmMoIk0iKV0pLHc9YyBpbnN0YW5jZW9mIE5hbWU/Yy5uYW1lOm51bGwsaj1oIGluc3RhbmNlb2YgTmFtZT9oLm5hbWU6bnVsbDtsZXQgaz1udWxsOyJhZGJlLnBrY3M3LmRldGFjaGVkIj09PWo/az0wOiJhZGJlLnBrY3M3LnNoYTEiPT09aiYmKGs9MSk7cmV0dXJue2lkOmAke24gaW5zdGFuY2VvZiBSZWY/bi50b1N0cmluZygpOiJpbmxpbmUifToke3N9LSR7cn0tJHtpfS0ke299YCxmaWVsZE5hbWU6InN0cmluZyI9PXR5cGVvZiB1P3N0cmluZ1RvUERGU3RyaW5nKHUpOiIiLHNpZ25lck5hbWU6InN0cmluZyI9PXR5cGVvZiBtP3N0cmluZ1RvUERGU3RyaW5nKG0pOm51bGwscmVhc29uOiJzdHJpbmciPT10eXBlb2YgcD9zdHJpbmdUb1BERlN0cmluZyhwKTpudWxsLGxvY2F0aW9uOiJzdHJpbmciPT10eXBlb2YgZD9zdHJpbmdUb1BERlN0cmluZyhkKTpudWxsLGNvbnRhY3RJbmZvOiJzdHJpbmciPT10eXBlb2YgZz9zdHJpbmdUb1BERlN0cmluZyhnKTpudWxsLHNpZ25pbmdUaW1lOiJzdHJpbmciPT10eXBlb2YgYj9iOm51bGwsZmlsdGVyOncsc3ViRmlsdGVyOmosc2lnbmF0dXJlVHlwZTprLGJ5dGVSYW5nZTphLHBrY3M3OnN0cmluZ1RvQnl0ZXMoZikscmV2aXNpb25JbmRleDowLHBhcmVudElkOm51bGx9fWdldCBzaWduYXR1cmVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJzaWduYXR1cmVzIix0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmb3JtSW5mbyIpLnRoZW4oYXN5bmMgZT0+e2lmKCFlLmhhc1NpZ25hdHVyZXN8fCFlLmhhc0ZpZWxkcylyZXR1cm4gbnVsbDtjb25zdCB0PWF3YWl0IHRoaXMuYW5ub3RhdGlvbkdsb2JhbHM7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3Qgbj10LmFjcm9Gb3JtLmdldCgiRmllbGRzIiksYT1bXTthd2FpdCB0aGlzLiNDbihuLGEsbmV3IFJlZlNldCk7YXdhaXQgUHJvbWlzZS5hbGwoYS5tYXAoYXN5bmMgZT0+e2NvbnN0IHQ9ZS5ieXRlUmFuZ2VbMl0rZS5ieXRlUmFuZ2VbM107ZS5tb2RpZmljYXRpb25zQWZ0ZXJTaWduYXR1cmU9dGhpcy54cmVmLmNvdW50VXBkYXRlc0FmdGVyKHQpO2UuY292ZXJzV2hvbGVEb2N1bWVudD1hd2FpdCB0aGlzLiNUbih0LGUubW9kaWZpY2F0aW9uc0FmdGVyU2lnbmF0dXJlKX0pKTthLnNvcnQoKGUsdCk9PnQuYnl0ZVJhbmdlWzJdK3QuYnl0ZVJhbmdlWzNdLShlLmJ5dGVSYW5nZVsyXStlLmJ5dGVSYW5nZVszXSkpO2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1hW2VdO3QucmV2aXNpb25JbmRleD1lO2ZvcihsZXQgbj1lLTE7bj49MDtuLS0pe2NvbnN0IGU9YVtuXTtpZihlLmJ5dGVSYW5nZVsyXStlLmJ5dGVSYW5nZVszXT50LmJ5dGVSYW5nZVsyXSt0LmJ5dGVSYW5nZVszXSl7dC5wYXJlbnRJZD1lLmlkO2JyZWFrfX19Y29uc3Qgcz1uZXcgTWFwLHI9YS5tYXAoZT0+e2NvbnN0e3BrY3M3OnQsLi4ubn09ZTtzLnNldChlLmlkLHtieXRlUmFuZ2U6ZS5ieXRlUmFuZ2UscGtjczc6dH0pO3JldHVybiBufSk7dGhpcy4ja249cztyZXR1cm4gci5sZW5ndGg/cjpudWxsfSkpfWFzeW5jIGdldFNpZ25hdHVyZURhdGEoZSl7YXdhaXQgdGhpcy5zaWduYXR1cmVzO2NvbnN0IHQ9dGhpcy4ja24/LmdldChlKTtpZighdClyZXR1cm4gbnVsbDtjb25zdHtieXRlUmFuZ2U6bixwa2NzNzphfT10LFtzLHIsaSxvXT1uO3JldHVybntkYXRhOmF3YWl0IFByb21pc2UuYWxsKFt0aGlzLiNGbihzLHMrciksdGhpcy4jRm4oaSxpK28pXSkscGtjczc6YX19Z2V0IGhhc0pTQWN0aW9ucygpe3JldHVybiBzaGFkb3codGhpcywiaGFzSlNBY3Rpb25zIix0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJfcGFyc2VIYXNKU0FjdGlvbnMiKSl9YXN5bmMgX3BhcnNlSGFzSlNBY3Rpb25zKCl7Y29uc3RbZSx0XT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImpzQWN0aW9ucyIpLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpXSk7cmV0dXJuISFlfHwhIXQ/LmFsbEZpZWxkcyYmT2JqZWN0LnZhbHVlcyh0LmFsbEZpZWxkcykuc29tZShlPT5lLnNvbWUoZT0+bnVsbCE9PWUuYWN0aW9ucykpfWdldCBjYWxjdWxhdGlvbk9yZGVySWRzKCl7Y29uc3QgZT10aGlzLmNhdGFsb2cuYWNyb0Zvcm0/LmdldCgiQ08iKTtpZighQXJyYXkuaXNBcnJheShlKXx8MD09PWUubGVuZ3RoKXJldHVybiBzaGFkb3codGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBlKW4gaW5zdGFuY2VvZiBSZWYmJnQucHVzaChuLnRvU3RyaW5nKCkpO3JldHVybiBzaGFkb3codGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsdC5sZW5ndGg/dDpudWxsKX1nZXQgYW5ub3RhdGlvbkdsb2JhbHMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImFubm90YXRpb25HbG9iYWxzIixBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGVHbG9iYWxzKHRoaXMucGRmTWFuYWdlcikpfWFzeW5jIHRvSlNPYmplY3QoZSx0PSEwKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZDogdG9KU09iamVjdCIpfX1jbGFzcyBCYXNlUGRmTWFuYWdlcntjb25zdHJ1Y3Rvcih7ZG9jQmFzZVVybDplLGRvY0lkOnQsZW5hYmxlWGZhOm4sZXZhbHVhdG9yT3B0aW9uczphLGhhbmRsZXI6cyxwYXNzd29yZDpyfSl7dGhpcy5fZG9jQmFzZVVybD1mdW5jdGlvbiBwYXJzZURvY0Jhc2VVcmwoZSl7aWYoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUpO2lmKHQpcmV0dXJuIHQuaHJlZjt3YXJuKGBJbnZhbGlkIGFic29sdXRlIGRvY0Jhc2VVcmw6ICIke2V9Ii5gKX1yZXR1cm4gbnVsbH0oZSk7dGhpcy5fZG9jSWQ9dDt0aGlzLl9wYXNzd29yZD1yO3RoaXMuZW5hYmxlWGZhPW47YS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCYmPUZlYXR1cmVUZXN0LmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkO2EuaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQmJj1GZWF0dXJlVGVzdC5pc0ltYWdlRGVjb2RlclN1cHBvcnRlZDt0aGlzLmV2YWx1YXRvck9wdGlvbnM9T2JqZWN0LmZyZWV6ZShhKTtJbWFnZVJlc2l6ZXIuc2V0T3B0aW9ucyhhKTtKcGVnU3RyZWFtLnNldE9wdGlvbnMoYSk7T3BlcmF0b3JMaXN0LnNldE9wdGlvbnMoYSk7Y29uc3QgaT17Li4uYSxoYW5kbGVyOnN9O0ljY0NvbG9yU3BhY2Uuc2V0T3B0aW9ucyhpKTtDbXlrSUNDQmFzZWRDUy5zZXRPcHRpb25zKGkpO1BERkZ1bmN0aW9uRmFjdG9yeS5zZXRPcHRpb25zKGkpO1BhdHRlcm4uc2V0T3B0aW9ucyhpKTtXYXNtSW1hZ2Uuc2V0T3B0aW9ucyhpKX1nZXQgZG9jSWQoKXtyZXR1cm4gdGhpcy5fZG9jSWR9Z2V0IHBhc3N3b3JkKCl7cmV0dXJuIHRoaXMuX3Bhc3N3b3JkfWdldCBkb2NCYXNlVXJsKCl7cmV0dXJuIHRoaXMuX2RvY0Jhc2VVcmx9ZW5zdXJlRG9jKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQsZSx0KX1lbnN1cmVYUmVmKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQueHJlZixlLHQpfWVuc3VyZUNhdGFsb2coZSx0KXtyZXR1cm4gdGhpcy5lbnN1cmUodGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nLGUsdCl9YXN5bmMgaW5pdERvY3VtZW50KGUpe2F3YWl0IHRoaXMuZW5zdXJlRG9jKCJjaGVja0hlYWRlciIpO2F3YWl0IHRoaXMuZW5zdXJlRG9jKCJwYXJzZVN0YXJ0WFJlZiIpO2F3YWl0IHRoaXMuZW5zdXJlRG9jKCJwYXJzZSIsW2VdKTthd2FpdCB0aGlzLmVuc3VyZURvYygiY2hlY2tGaXJzdFBhZ2UiLFtlXSk7YXdhaXQgdGhpcy5lbnN1cmVEb2MoImNoZWNrTGFzdFBhZ2UiLFtlXSl9Z2V0UGFnZShlKXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5nZXRQYWdlKGUpfWZvbnRGYWxsYmFjayhlLHQpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmZvbnRGYWxsYmFjayhlLHQpfWNsZWFudXAoZT0hMSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuY2xlYW51cChlKX1hc3luYyBlbnN1cmUoZSx0LG4pe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGVuc3VyZWAgY2FsbGVkIil9cmVxdWVzdFJhbmdlKGUsdCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgcmVxdWVzdFJhbmdlYCBjYWxsZWQiKX1yZXF1ZXN0TG9hZGVkU3RyZWFtKGU9ITEpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RMb2FkZWRTdHJlYW1gIGNhbGxlZCIpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgc2VuZFByb2dyZXNzaXZlRGF0YWAgY2FsbGVkIil9dXBkYXRlUGFzc3dvcmQoZSl7dGhpcy5fcGFzc3dvcmQ9ZTt0aGlzLnBkZkRvY3VtZW50LnhyZWYuZW5jcnlwdD8uc2V0UGFzc3dvcmQoZSl9dGVybWluYXRlKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9bmV3IFN0cmVhbShlLnNvdXJjZSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0KTt0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlPVByb21pc2UucmVzb2x2ZSh0KX1hc3luYyBlbnN1cmUoZSx0LG4pe2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmFwcGx5KGUsbik6YX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXtyZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtUHJvbWlzZX10ZXJtaW5hdGUoZSl7fX1jbGFzcyBOZXR3b3JrUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuc3RyZWFtTWFuYWdlcj1uZXcgQ2h1bmtlZFN0cmVhbU1hbmFnZXIoZS5zb3VyY2Use21zZ0hhbmRsZXI6ZS5oYW5kbGVyLGxlbmd0aDplLmxlbmd0aCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplfSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0aGlzLnN0cmVhbU1hbmFnZXIuZ2V0U3RyZWFtKCkpfWFzeW5jIGVuc3VyZShlLHQsbil7dHJ5e2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hd2FpdCBhLmFwcGx5KGUsbik6YX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgYTthd2FpdCB0aGlzLnJlcXVlc3RSYW5nZShhLmJlZ2luLGEuZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmUoZSx0LG4pfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKGUpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoe2NodW5rOmV9KX10ZXJtaW5hdGUoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLmFib3J0KGUpfX1jb25zdCBSZj0xLE9mPTIsSGY9MSxCZj0yLERmPTMsTWY9NCxOZj01LFBmPTYsRWY9NyxfZj04O2Z1bmN0aW9uIG9uRm4oKXt9ZnVuY3Rpb24gd3JhcFJlYXNvbihlKXtpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBJbnZhbGlkUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgUGFzc3dvcmRFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBSZXNwb25zZUV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIFVua25vd25FcnJvckV4Y2VwdGlvbilyZXR1cm4gZTtlIGluc3RhbmNlb2YgRXJyb3J8fCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV8fHVucmVhY2hhYmxlKCd3cmFwUmVhc29uOiBFeHBlY3RlZCAicmVhc29uIiB0byBiZSBhIChwb3NzaWJseSBjbG9uZWQpIEVycm9yLicpO3N3aXRjaChlLm5hbWUpe2Nhc2UiQWJvcnRFeGNlcHRpb24iOnJldHVybiBuZXcgQWJvcnRFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIkludmFsaWRQREZFeGNlcHRpb24iOnJldHVybiBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiUGFzc3dvcmRFeGNlcHRpb24iOnJldHVybiBuZXcgUGFzc3dvcmRFeGNlcHRpb24oZS5tZXNzYWdlLGUuY29kZSk7Y2FzZSJSZXNwb25zZUV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBSZXNwb25zZUV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5zdGF0dXMsZS5taXNzaW5nKTtjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBVbmtub3duRXJyb3JFeGNlcHRpb24oZS5tZXNzYWdlLGUuZGV0YWlscyl9cmV0dXJuIG5ldyBVbmtub3duRXJyb3JFeGNlcHRpb24oZS5tZXNzYWdlLGUudG9TdHJpbmcoKSl9Y2xhc3MgTWVzc2FnZUhhbmRsZXJ7I1JuPW5ldyBBYm9ydENvbnRyb2xsZXI7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuc291cmNlTmFtZT1lO3RoaXMudGFyZ2V0TmFtZT10O3RoaXMuY29tT2JqPW47dGhpcy5jYWxsYmFja0lkPTE7dGhpcy5zdHJlYW1JZD0xO3RoaXMuc3RyZWFtU2lua3M9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuYWN0aW9uSGFuZGxlcj1PYmplY3QuY3JlYXRlKG51bGwpO24uYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy4jT24uYmluZCh0aGlzKSx7c2lnbmFsOnRoaXMuI1JuLnNpZ25hbH0pfSNPbih7ZGF0YTplfSl7aWYoZS50YXJnZXROYW1lIT09dGhpcy5zb3VyY2VOYW1lKXJldHVybjtpZihlLnN0cmVhbSl7dGhpcy4jSG4oZSk7cmV0dXJufWlmKGUuY2FsbGJhY2spe2NvbnN0IHQ9ZS5jYWxsYmFja0lkLG49dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1t0XTtpZighbil0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIGNhbGxiYWNrICR7dH1gKTtkZWxldGUgdGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1t0XTtpZihlLmNhbGxiYWNrPT09UmYpbi5yZXNvbHZlKGUuZGF0YSk7ZWxzZXtpZihlLmNhbGxiYWNrIT09T2YpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTtuLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSl9cmV0dXJufWNvbnN0IHQ9dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXTtpZighdCl0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke2UuYWN0aW9ufWApO2lmKGUuY2FsbGJhY2tJZCl7Y29uc3Qgbj10aGlzLnNvdXJjZU5hbWUsYT1lLnNvdXJjZU5hbWUscz10aGlzLmNvbU9iajtQcm9taXNlLnRyeSh0LGUuZGF0YSkudGhlbihmdW5jdGlvbih0KXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOm4sdGFyZ2V0TmFtZTphLGNhbGxiYWNrOlJmLGNhbGxiYWNrSWQ6ZS5jYWxsYmFja0lkLGRhdGE6dH0pfSxmdW5jdGlvbih0KXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOm4sdGFyZ2V0TmFtZTphLGNhbGxiYWNrOk9mLGNhbGxiYWNrSWQ6ZS5jYWxsYmFja0lkLHJlYXNvbjp3cmFwUmVhc29uKHQpfSl9KTtyZXR1cm59ZS5zdHJlYW1JZD90aGlzLiNCbihlKTp0KGUuZGF0YSl9b24oZSx0KXtjb25zdCBuPXRoaXMuYWN0aW9uSGFuZGxlcjtpZihuW2VdKXRocm93IG5ldyBFcnJvcihgVGhlcmUgaXMgYWxyZWFkeSBhbiBhY3Rpb25OYW1lIGNhbGxlZCAiJHtlfSJgKTtuW2VdPXR9c2VuZChlLHQsbil7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGRhdGE6dH0sbil9c2VuZFdpdGhQcm9taXNlKGUsdCxuKXtjb25zdCBhPXRoaXMuY2FsbGJhY2tJZCsrLHM9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1thXT1zO3RyeXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsY2FsbGJhY2tJZDphLGRhdGE6dH0sbil9Y2F0Y2goZSl7cy5yZWplY3QoZSl9cmV0dXJuIHMucHJvbWlzZX1zZW5kV2l0aFN0cmVhbShlLHQsbixhKXtjb25zdCBzPXRoaXMuc3RyZWFtSWQrKyxyPXRoaXMuc291cmNlTmFtZSxpPXRoaXMudGFyZ2V0TmFtZSxvPXRoaXMuY29tT2JqO3JldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe3N0YXJ0Om49Pntjb25zdCBsPVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbc109e2NvbnRyb2xsZXI6bixzdGFydENhbGw6bCxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6aSxhY3Rpb246ZSxzdHJlYW1JZDpzLGRhdGE6dCxkZXNpcmVkU2l6ZTpuLmRlc2lyZWRTaXplfSxhKTtyZXR1cm4gbC5wcm9taXNlfSxwdWxsOmU9Pntjb25zdCB0PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbc10ucHVsbENhbGw9dDtvLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnIsdGFyZ2V0TmFtZTppLHN0cmVhbTpQZixzdHJlYW1JZDpzLGRlc2lyZWRTaXplOmUuZGVzaXJlZFNpemV9KTtyZXR1cm4gdC5wcm9taXNlfSxjYW5jZWw6ZT0+e2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImNhbmNlbCBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtjb25zdCB0PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbc10uY2FuY2VsQ2FsbD10O3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbc10uaXNDbG9zZWQ9ITA7by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6aSxzdHJlYW06SGYsc3RyZWFtSWQ6cyxyZWFzb246d3JhcFJlYXNvbihlKX0pO3JldHVybiB0LnByb21pc2V9fSxuKX0jQm4oZSl7Y29uc3QgdD1lLnN0cmVhbUlkLG49dGhpcy5zb3VyY2VOYW1lLGE9ZS5zb3VyY2VOYW1lLHM9dGhpcy5jb21PYmoscj10aGlzLGk9dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXSxvPXtlbnF1ZXVlKGUscj0xLGkpe2lmKHRoaXMuaXNDYW5jZWxsZWQpcmV0dXJuO2NvbnN0IG89dGhpcy5kZXNpcmVkU2l6ZTt0aGlzLmRlc2lyZWRTaXplLT1yO2lmKG8+MCYmdGhpcy5kZXNpcmVkU2l6ZTw9MCl7dGhpcy5zaW5rQ2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1zLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOm4sdGFyZ2V0TmFtZTphLHN0cmVhbTpNZixzdHJlYW1JZDp0LGNodW5rOmV9LGkpfSxjbG9zZSgpe2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOmEsc3RyZWFtOkRmLHN0cmVhbUlkOnR9KTtkZWxldGUgci5zdHJlYW1TaW5rc1t0XX19LGVycm9yKGUpe2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImVycm9yIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOmEsc3RyZWFtOk5mLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX19LHNpbmtDYXBhYmlsaXR5OlByb21pc2Uud2l0aFJlc29sdmVycygpLG9uUHVsbDpudWxsLG9uQ2FuY2VsOm51bGwsaXNDYW5jZWxsZWQ6ITEsZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZSxyZWFkeTpudWxsfTtvLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtvLnJlYWR5PW8uc2lua0NhcGFiaWxpdHkucHJvbWlzZTt0aGlzLnN0cmVhbVNpbmtzW3RdPW87UHJvbWlzZS50cnkoaSxlLmRhdGEsbykudGhlbihmdW5jdGlvbigpe3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOmEsc3RyZWFtOl9mLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSxmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOm4sdGFyZ2V0TmFtZTphLHN0cmVhbTpfZixzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KX0jSG4oZSl7Y29uc3QgdD1lLnN0cmVhbUlkLG49dGhpcy5zb3VyY2VOYW1lLGE9ZS5zb3VyY2VOYW1lLHM9dGhpcy5jb21PYmoscj10aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3RdLGk9dGhpcy5zdHJlYW1TaW5rc1t0XTtzd2l0Y2goZS5zdHJlYW0pe2Nhc2UgX2Y6ZS5zdWNjZXNzP3Iuc3RhcnRDYWxsLnJlc29sdmUoKTpyLnN0YXJ0Q2FsbC5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpO2JyZWFrO2Nhc2UgRWY6ZS5zdWNjZXNzP3IucHVsbENhbGwucmVzb2x2ZSgpOnIucHVsbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIFBmOmlmKCFpKXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOm4sdGFyZ2V0TmFtZTphLHN0cmVhbTpFZixzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KTticmVha31pLmRlc2lyZWRTaXplPD0wJiZlLmRlc2lyZWRTaXplPjAmJmkuc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO2kuZGVzaXJlZFNpemU9ZS5kZXNpcmVkU2l6ZTtQcm9taXNlLnRyeShpLm9uUHVsbHx8b25GbikudGhlbihmdW5jdGlvbigpe3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOmEsc3RyZWFtOkVmLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSxmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOm4sdGFyZ2V0TmFtZTphLHN0cmVhbTpFZixzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KTticmVhaztjYXNlIE1mOmFzc2VydChyLCJlbnF1ZXVlIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7aWYoci5pc0Nsb3NlZClicmVhaztyLmNvbnRyb2xsZXIuZW5xdWV1ZShlLmNodW5rKTticmVhaztjYXNlIERmOmFzc2VydChyLCJjbG9zZSBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpO2lmKHIuaXNDbG9zZWQpYnJlYWs7ci5pc0Nsb3NlZD0hMDtyLmNvbnRyb2xsZXIuY2xvc2UoKTt0aGlzLiNEbihyLHQpO2JyZWFrO2Nhc2UgTmY6YXNzZXJ0KHIsImVycm9yIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7ci5jb250cm9sbGVyLmVycm9yKHdyYXBSZWFzb24oZS5yZWFzb24pKTt0aGlzLiNEbihyLHQpO2JyZWFrO2Nhc2UgQmY6ZS5zdWNjZXNzP3IuY2FuY2VsQ2FsbC5yZXNvbHZlKCk6ci5jYW5jZWxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7dGhpcy4jRG4ocix0KTticmVhaztjYXNlIEhmOmlmKCFpKWJyZWFrO2NvbnN0IG89d3JhcFJlYXNvbihlLnJlYXNvbik7UHJvbWlzZS50cnkoaS5vbkNhbmNlbHx8b25GbixvKS50aGVuKGZ1bmN0aW9uKCl7cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpuLHRhcmdldE5hbWU6YSxzdHJlYW06QmYsc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9LGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOmEsc3RyZWFtOkJmLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pO2kuc2lua0NhcGFiaWxpdHkucmVqZWN0KG8pO2kuaXNDYW5jZWxsZWQ9ITA7ZGVsZXRlIHRoaXMuc3RyZWFtU2lua3NbdF07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgc3RyZWFtIGNhc2UiKX19YXN5bmMjRG4oZSx0KXthd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2Uuc3RhcnRDYWxsPy5wcm9taXNlLGUucHVsbENhbGw/LnByb21pc2UsZS5jYW5jZWxDYWxsPy5wcm9taXNlXSk7ZGVsZXRlIHRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF19ZGVzdHJveSgpe3RoaXMuI1JuPy5hYm9ydCgpO3RoaXMuI1JuPW51bGx9fWFzeW5jIGZ1bmN0aW9uIHdyaXRlT2JqZWN0KGUsdCxuLHtlbmNyeXB0OmE9bnVsbCxlbmNyeXB0UmVmOnM9bnVsbH0pe2NvbnN0IHI9YSYmcyE9PWU/YS5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0oZS5udW0sZS5nZW4pOm51bGw7bi5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBvYmpcbmApO2F3YWl0IHdyaXRlVmFsdWUodCxuLHIpO24ucHVzaCgiXG5lbmRvYmpcbiIpfWFzeW5jIGZ1bmN0aW9uIHdyaXRlRGljdChlLHQsbil7dC5wdXNoKCI8PCIpO2Zvcihjb25zdFthLHNdb2YgZS5nZXRSYXdFbnRyaWVzKCkpe3QucHVzaChgIC8ke2VzY2FwZVBERk5hbWUoYSl9IGApO2F3YWl0IHdyaXRlVmFsdWUocyx0LG4pfXQucHVzaCgiPj4iKX1hc3luYyBmdW5jdGlvbiB3cml0ZVZhbHVlKGUsdCxuKXtpZihlIGluc3RhbmNlb2YgTmFtZSl0LnB1c2goYC8ke2VzY2FwZVBERk5hbWUoZS5uYW1lKX1gKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBSZWYpdC5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBSYCk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpfHxBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpYXdhaXQgYXN5bmMgZnVuY3Rpb24gd3JpdGVBcnJheShlLHQsbil7dC5wdXNoKCJbIik7Zm9yKGxldCBhPTAscz1lLmxlbmd0aDthPHM7YSsrKXthd2FpdCB3cml0ZVZhbHVlKGVbYV0sdCxuKTthPHMtMSYmdC5wdXNoKCIgIil9dC5wdXNoKCJdIil9KGUsdCxuKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgZSl7biYmKGU9bi5lbmNyeXB0U3RyaW5nKGUpKTt0LnB1c2goYCgke2VzY2FwZVN0cmluZyhlKX0pYCl9ZWxzZSJudW1iZXIiPT10eXBlb2YgZT90LnB1c2goZS50b0ZpeGVkKDEwKS5yZXBsYWNlKC9cLj8wKyQvLCIiKSk6ImJvb2xlYW4iPT10eXBlb2YgZT90LnB1c2goZS50b1N0cmluZygpKTplIGluc3RhbmNlb2YgRGljdD9hd2FpdCB3cml0ZURpY3QoZSx0LG4pOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2F3YWl0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlU3RyZWFtKGUsdCxuKXsoZT1lLmdldE9yaWdpbmFsU3RyZWFtKCkpLnJlc2V0KCk7bGV0IGE9ZS5nZXRCeXRlcygpO2NvbnN0e2RpY3Q6c309ZSxbcixpXT1hd2FpdCBQcm9taXNlLmFsbChbcy5nZXRBc3luYygiRmlsdGVyIikscy5nZXRBc3luYygiRGVjb2RlUGFybXMiKV0pLG89QXJyYXkuaXNBcnJheShyKT9hd2FpdCBzLnhyZWYuZmV0Y2hJZlJlZkFzeW5jKHJbMF0pOnIsbD1pc05hbWUobywiRmxhdGVEZWNvZGUiKSxmPWlzTmFtZShvLCJEQ1REZWNvZGUiKXx8aXNOYW1lKG8sIkpQWERlY29kZSIpfHxpc05hbWUobywiSkJJRzJEZWNvZGUiKXx8aXNOYW1lKG8sIkNDSVRURmF4RGVjb2RlIil8fGlzTmFtZShvLCJMWldEZWNvZGUiKTtpZighKGx8fGZ8fGlzTmFtZShvLCJCcm90bGlEZWNvZGUiKSkmJmEubGVuZ3RoPj0yNTYpdHJ5e2NvbnN0IGU9bmV3IENvbXByZXNzaW9uU3RyZWFtKCJkZWZsYXRlIiksdD1lLndyaXRhYmxlLmdldFdyaXRlcigpO2F3YWl0IHQucmVhZHk7dC53cml0ZShhKS50aGVuKGFzeW5jKCk9Pnthd2FpdCB0LnJlYWR5O2F3YWl0IHQuY2xvc2UoKX0pLmNhdGNoKCgpPT57fSk7YT1hd2FpdCBuZXcgUmVzcG9uc2UoZS5yZWFkYWJsZSkuYnl0ZXMoKTtsZXQgbixvO2lmKHIpe2lmKCFsKXtuPUFycmF5LmlzQXJyYXkocik/W05hbWUuZ2V0KCJGbGF0ZURlY29kZSIpLC4uLnJdOltOYW1lLmdldCgiRmxhdGVEZWNvZGUiKSxyXTtpJiYobz1BcnJheS5pc0FycmF5KGkpP1tudWxsLC4uLmldOltudWxsLGldKX19ZWxzZSBuPU5hbWUuZ2V0KCJGbGF0ZURlY29kZSIpO24mJnMuc2V0KCJGaWx0ZXIiLG4pO28mJnMuc2V0KCJEZWNvZGVQYXJtcyIsbyl9Y2F0Y2goZSl7aW5mbyhgd3JpdGVTdHJlYW0gLSBjYW5ub3QgY29tcHJlc3MgZGF0YTogIiR7ZX0iLmApfWxldCBjPWJ5dGVzVG9TdHJpbmcoYSk7biYmKGM9bi5lbmNyeXB0U3RyaW5nKGMpKTtzLnNldCgiTGVuZ3RoIixjLmxlbmd0aCk7YXdhaXQgd3JpdGVEaWN0KHMsdCxuKTt0LnB1c2goIiBzdHJlYW1cbiIsYywiXG5lbmRzdHJlYW0iKX0oZSx0LG4pOm51bGw9PT1lP3QucHVzaCgibnVsbCIpOndhcm4oYFVuaGFuZGxlZCB2YWx1ZSBpbiB3cml0ZXI6ICR7dHlwZW9mIGV9LCBwbGVhc2UgZmlsZSBhIGJ1Zy5gKX1mdW5jdGlvbiB3cml0ZUludChlLHQsbixhKXtmb3IobGV0IHM9dCtuLTE7cz5uLTE7cy0tKXthW3NdPTI1NSZlO2U+Pj04fXJldHVybiBuK3R9ZnVuY3Rpb24gd3JpdGVTdHJpbmcoZSx0LG4pe2NvbnN0IGE9ZS5sZW5ndGg7Zm9yKGxldCBzPTA7czxhO3MrKyluW3Qrc109MjU1JmUuY2hhckNvZGVBdChzKTtyZXR1cm4gdCthfWZ1bmN0aW9uIHVwZGF0ZVhGQSh7eGZhRGF0YTplLHhmYURhdGFzZXRzUmVmOnQsY2hhbmdlczpuLHhyZWY6YX0pe2lmKG51bGw9PT1lKXtlPWZ1bmN0aW9uIHdyaXRlWEZBRGF0YUZvckFjcm9mb3JtKGUsdCl7Y29uc3Qgbj1uZXcgU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO2Zvcihjb25zdHt4ZmE6ZX1vZiB0KXtpZighZSljb250aW51ZTtjb25zdHtwYXRoOnQsdmFsdWU6YX09ZTtpZighdHx8bnVsbD09PWEpY29udGludWU7Y29uc3Qgcz1wYXJzZVhGQVBhdGgodCk7bGV0IHI9bi5kb2N1bWVudEVsZW1lbnQuc2VhcmNoTm9kZShzLDApOyFyJiZzLmxlbmd0aD4xJiYocj1uLmRvY3VtZW50RWxlbWVudC5zZWFyY2hOb2RlKFtzLmF0KC0xKV0sMCkpO3I/ci5jaGlsZE5vZGVzPUFycmF5LmlzQXJyYXkoYSk/YS5tYXAoZT0+bmV3IFNpbXBsZURPTU5vZGUoInZhbHVlIixlKSk6W25ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsYSldOndhcm4oYE5vZGUgbm90IGZvdW5kIGZvciBwYXRoOiAke3R9YCl9Y29uc3QgYT1bXTtuLmRvY3VtZW50RWxlbWVudC5kdW1wKGEpO3JldHVybiBhLmpvaW4oIiIpfShhLmZldGNoSWZSZWYodCkuZ2V0U3RyaW5nKCksbil9Y29uc3Qgcz1uZXcgU3RyaW5nU3RyZWFtKGUsbmV3IERpY3QoYSkpO3MuZGljdC5zZXRJZk5hbWUoIlR5cGUiLCJFbWJlZGRlZEZpbGUiKTtuLnB1dCh0LHtkYXRhOnN9KX1mdW5jdGlvbiBnZXRJbmRleGVzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0e3JlZjpufW9mIGUpbi5udW09PT10LmF0KC0yKSt0LmF0KC0xKT90W3QubGVuZ3RoLTFdKz0xOnQucHVzaChuLm51bSwxKTtyZXR1cm4gdH1mdW5jdGlvbiBjb21wdXRlSURzKGUsdCxuKXtpZihBcnJheS5pc0FycmF5KHQuZmlsZUlkcykmJnQuZmlsZUlkcy5sZW5ndGg+MCl7Y29uc3QgYT1mdW5jdGlvbiBjb21wdXRlTUQ1KGUsdCl7Y29uc3Qgbj1NYXRoLmZsb29yKERhdGUubm93KCkvMWUzKSxhPXQuZmlsZW5hbWV8fCIiLHM9W24udG9TdHJpbmcoKSxhLGUudG9TdHJpbmcoKSwuLi50LmluZm9NYXAudmFsdWVzKCldLHI9TWF0aC5zdW1QcmVjaXNlKHMubWFwKGU9PmUubGVuZ3RoKSksaT1uZXcgVWludDhBcnJheShyKTtsZXQgbz0wO2Zvcihjb25zdCBlIG9mIHMpbz13cml0ZVN0cmluZyhlLG8saSk7cmV0dXJuIGJ5dGVzVG9TdHJpbmcoY2FsY3VsYXRlTUQ1KGksMCxpLmxlbmd0aCkpfShlLHQpO24uc2V0KCJJRCIsW3QuZmlsZUlkc1swXXx8YSxhXSl9fWFzeW5jIGZ1bmN0aW9uIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6ZSx4cmVmSW5mbzp0LGNoYW5nZXM6bix4cmVmOmE9bnVsbCxoYXNYZmE6cz0hMSx4ZmFEYXRhc2V0c1JlZjpyPW51bGwsaGFzWGZhRGF0YXNldHNFbnRyeTppPSExLG5lZWRBcHBlYXJhbmNlczpvLGFjcm9Gb3JtUmVmOmw9bnVsbCxhY3JvRm9ybTpmPW51bGwseGZhRGF0YTpjPW51bGwsdXNlWHJlZlN0cmVhbTpoPSExfSl7YXdhaXQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlQWNyb2Zvcm0oe3hyZWY6ZSxhY3JvRm9ybTp0LGFjcm9Gb3JtUmVmOm4saGFzWGZhOmEsaGFzWGZhRGF0YXNldHNFbnRyeTpzLHhmYURhdGFzZXRzUmVmOnIsbmVlZEFwcGVhcmFuY2VzOmksY2hhbmdlczpvfSl7IWF8fHN8fHJ8fHdhcm4oIlhGQSAtIENhbm5vdCBzYXZlIGl0Iik7aWYoIWkmJighYXx8IXJ8fHMpKXJldHVybjtjb25zdCBsPXQuY2xvbmUoKTtpZihhJiYhcyl7Y29uc3QgZT10LmdldCgiWEZBIikuc2xpY2UoKTtlLnNwbGljZSgyLDAsImRhdGFzZXRzIik7ZS5zcGxpY2UoMywwLHIpO2wuc2V0KCJYRkEiLGUpfWkmJmwuc2V0KCJOZWVkQXBwZWFyYW5jZXMiLCEwKTtvLnB1dChuLHtkYXRhOmx9KX0oe3hyZWY6YSxhY3JvRm9ybTpmLGFjcm9Gb3JtUmVmOmwsaGFzWGZhOnMsaGFzWGZhRGF0YXNldHNFbnRyeTppLHhmYURhdGFzZXRzUmVmOnIsbmVlZEFwcGVhcmFuY2VzOm8sY2hhbmdlczpufSk7cyYmdXBkYXRlWEZBKHt4ZmFEYXRhOmMseGZhRGF0YXNldHNSZWY6cixjaGFuZ2VzOm4seHJlZjphfSk7Y29uc3QgdT1mdW5jdGlvbiBnZXRUcmFpbGVyRGljdChlLHQsbil7Y29uc3QgYT1uZXcgRGljdChudWxsKTthLnNldElmRGVmaW5lZCgiUHJldiIsZT8uc3RhcnRYUmVmKTtjb25zdCBzPWUubmV3UmVmO2lmKG4pe3QucHV0KHMse2RhdGE6IiJ9KTthLnNldCgiU2l6ZSIscy5udW0rMSk7YS5zZXRJZk5hbWUoIlR5cGUiLCJYUmVmIil9ZWxzZSBhLnNldCgiU2l6ZSIscy5udW0pO2Euc2V0SWZEZWZpbmVkKCJSb290IixlPy5yb290UmVmKTthLnNldElmRGVmaW5lZCgiSW5mbyIsZT8uaW5mb1JlZik7YS5zZXRJZkRlZmluZWQoIkVuY3J5cHQiLGU/LmVuY3J5cHRSZWYpO3JldHVybiBhfSh0LG4saCksbT1bXSxwPWF3YWl0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQ2hhbmdlcyhlLHQsbj1bXSl7Y29uc3QgYT1bXTtmb3IoY29uc3Rbcyx7ZGF0YTpyLG9ialN0cmVhbVJlZjppLGluZGV4Om99XW9mIGUuaXRlbXMoKSlpZihpKWEucHVzaCh7cmVmOnMsZGF0YTpyLG9ialN0cmVhbVJlZjppLGluZGV4Om99KTtlbHNlIGlmKG51bGwhPT1yJiYic3RyaW5nIiE9dHlwZW9mIHIpe2F3YWl0IHdyaXRlT2JqZWN0KHMscixuLHQpO2EucHVzaCh7cmVmOnMsZGF0YTpuLmpvaW4oIiIpfSk7bi5sZW5ndGg9MH1lbHNlIGEucHVzaCh7cmVmOnMsZGF0YTpyfSk7cmV0dXJuIGEuc29ydCgoZSx0KT0+ZS5yZWYubnVtLXQucmVmLm51bSl9KG4sYSxtKTtsZXQgZD1lLmxlbmd0aDtjb25zdCBnPWUuYXQoLTEpO2lmKDEwIT09ZyYmMTMhPT1nKXttLnB1c2goIlxuIik7ZCs9MX1mb3IoY29uc3R7ZGF0YTplfW9mIHApbnVsbCE9PWUmJm0ucHVzaChlKTthd2FpdChoP2FzeW5jIGZ1bmN0aW9uIGdldFhSZWZTdHJlYW1UYWJsZShlLHQsbixhLHMpe2NvbnN0IHI9W107bGV0IGk9MCxvPTA7Zm9yKGNvbnN0e3JlZjplLGRhdGE6YSxvYmpTdHJlYW1SZWY6cyxpbmRleDpsfW9mIG4pe2xldCBuO2k9TWF0aC5tYXgoaSx0KTtpZihzKXtuPWw7ci5wdXNoKFsyLHMubnVtLG5dKX1lbHNlIGlmKG51bGwhPT1hKXtuPU1hdGgubWluKGUuZ2VuLDY1NTM1KTtyLnB1c2goWzEsdCxuXSk7dCs9YS5sZW5ndGh9ZWxzZXtuPU1hdGgubWluKGUuZ2VuKzEsNjU1MzUpO3IucHVzaChbMCwwLG5dKX1vPU1hdGgubWF4KG8sbil9YS5zZXQoIkluZGV4IixnZXRJbmRleGVzKG4pKTtjb25zdCBsPVsxLGdldFNpemVJbkJ5dGVzKGkpLGdldFNpemVJbkJ5dGVzKG8pXTthLnNldCgiVyIsbCk7Y29tcHV0ZUlEcyh0LGUsYSk7Y29uc3QgZj1NYXRoLnN1bVByZWNpc2UobCksYz1uZXcgVWludDhBcnJheShmKnIubGVuZ3RoKSxoPW5ldyBTdHJlYW0oYyk7aC5kaWN0PWE7bGV0IHU9MDtmb3IoY29uc3RbZSx0LG5db2Ygcil7dT13cml0ZUludChlLGxbMF0sdSxjKTt1PXdyaXRlSW50KHQsbFsxXSx1LGMpO3U9d3JpdGVJbnQobixsWzJdLHUsYyl9YXdhaXQgd3JpdGVPYmplY3QoZS5uZXdSZWYsaCxzLHt9KTtzLnB1c2goInN0YXJ0eHJlZlxuIix0LnRvU3RyaW5nKCksIlxuJSVFT0ZcbiIpfSh0LGQscCx1LG0pOmFzeW5jIGZ1bmN0aW9uIGdldFhSZWZUYWJsZShlLHQsbixhLHMpe3MucHVzaCgieHJlZlxuIik7Y29uc3Qgcj1nZXRJbmRleGVzKG4pO2xldCBpPTA7Zm9yKGNvbnN0e3JlZjplLGRhdGE6YX1vZiBuKXtpZihlLm51bT09PXJbaV0pe3MucHVzaChgJHtyW2ldfSAke3JbaSsxXX1cbmApO2krPTJ9aWYobnVsbCE9PWEpe3MucHVzaChgJHt0LnRvU3RyaW5nKCkucGFkU3RhcnQoMTAsIjAiKX0gJHtNYXRoLm1pbihlLmdlbiw2NTUzNSkudG9TdHJpbmcoKS5wYWRTdGFydCg1LCIwIil9IG5cclxuYCk7dCs9YS5sZW5ndGh9ZWxzZSBzLnB1c2goYDAwMDAwMDAwMDAgJHtNYXRoLm1pbihlLmdlbisxLDY1NTM1KS50b1N0cmluZygpLnBhZFN0YXJ0KDUsIjAiKX0gZlxyXG5gKX1jb21wdXRlSURzKHQsZSxhKTtzLnB1c2goInRyYWlsZXJcbiIpO2F3YWl0IHdyaXRlRGljdChhLHMsbnVsbCk7cy5wdXNoKCJcbnN0YXJ0eHJlZlxuIix0LnRvU3RyaW5nKCksIlxuJSVFT0ZcbiIpfSh0LGQscCx1LG0pKTtjb25zdCBiPWUubGVuZ3RoK01hdGguc3VtUHJlY2lzZShtLm1hcChlPT5lLmxlbmd0aCkpLHc9bmV3IFVpbnQ4QXJyYXkoYik7dy5zZXQoZSk7bGV0IGo9ZS5sZW5ndGg7Zm9yKGNvbnN0IGUgb2YgbSlqPXdyaXRlU3RyaW5nKGUsaix3KTtyZXR1cm4gd31jbGFzcyBQYWdlRGF0YXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucGFnZT1lO3RoaXMuZG9jdW1lbnREYXRhPXQ7dGhpcy5hbm5vdGF0aW9ucz1udWxsO3RoaXMucG9pbnRpbmdOYW1lZERlc3RpbmF0aW9ucz1udWxsO3QucGFnZXNNYXAucHV0KGUucmVmLHRoaXMpfX1jbGFzcyBEb2N1bWVudERhdGF7Y29uc3RydWN0b3IoZSl7dGhpcy5kb2N1bWVudD1lO3RoaXMuZGVzdGluYXRpb25zPW51bGw7dGhpcy5wYWdlTGFiZWxzPW51bGw7dGhpcy5wYWdlc01hcD1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5vbGRSZWZNYXBwaW5nPW5ldyBSZWZTZXRDYWNoZTt0aGlzLmRlZHVwTmFtZWREZXN0aW5hdGlvbnM9bmV3IE1hcDt0aGlzLnVzZWROYW1lZERlc3RpbmF0aW9ucz1uZXcgU2V0O3RoaXMucG9zdHBvbmVkUmVmQ29waWVzPW5ldyBSZWZTZXRDYWNoZTt0aGlzLnJlc291cmNlU3RyZWFtUHJvbWlzZXM9bmV3IE1hcDt0aGlzLnVzZWRTdHJ1Y3RQYXJlbnRzPW5ldyBTZXQ7dGhpcy5vbGRTdHJ1Y3RQYXJlbnRNYXBwaW5nPW5ldyBNYXA7dGhpcy5zdHJ1Y3RUcmVlUm9vdD1udWxsO3RoaXMucGFyZW50VHJlZT1udWxsO3RoaXMuaWRUcmVlPW51bGw7dGhpcy5yb2xlTWFwPW51bGw7dGhpcy5jbGFzc01hcD1udWxsO3RoaXMubmFtZXNwYWNlcz1udWxsO3RoaXMuc3RydWN0VHJlZUFGPW51bGw7dGhpcy5zdHJ1Y3RUcmVlUHJvbnVuY2lhdGlvbkxleGljb249W107dGhpcy5hY3JvRm9ybT1udWxsO3RoaXMuYWNyb0Zvcm1EZWZhdWx0QXBwZWFyYW5jZT0iIjt0aGlzLmFjcm9Gb3JtRGVmYXVsdFJlc291cmNlcz1udWxsO3RoaXMuYWNyb0Zvcm1RPTA7dGhpcy5oYXNTaWduYXR1cmVBbm5vdGF0aW9ucz0hMTt0aGlzLmZpZWxkVG9QYXJlbnQ9bmV3IFJlZlNldENhY2hlO3RoaXMub3V0bGluZT1udWxsO3RoaXMuZW1iZWRkZWRGaWxlcz1udWxsfX1jbGFzcyBYUmVmV3JhcHBlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZW50cmllcz1lO3RoaXMuX2dldE5ld1JlZj10fWdldE5ld1RlbXBvcmFyeVJlZigpe3JldHVybiB0aGlzLl9nZXROZXdSZWYoKX1jb3VudFVwZGF0ZXNBZnRlcihlKXtyZXR1cm4gbnVsbH1mZXRjaElmUmVmKGUpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2goZSk6ZX1mZXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXRocm93IG5ldyBFcnJvcigicmVmIG9iamVjdCBpcyBub3QgYSByZWZlcmVuY2UiKTtyZXR1cm4gdGhpcy5lbnRyaWVzW2UubnVtXX1hc3luYyBmZXRjaElmUmVmQXN5bmMoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSZWY/dGhpcy5mZXRjaEFzeW5jKGUpOmV9YXN5bmMgZmV0Y2hBc3luYyhlKXtyZXR1cm4gdGhpcy5mZXRjaChlKX19Y2xhc3MgUERGRWRpdG9ye2lzU2luZ2xlRmlsZT0hMTsjTW49bnVsbDsjTm49bnVsbDsjUG49bmV3IE1hcDtjdXJyZW50RG9jdW1lbnQ9bnVsbDtvbGRQYWdlcz1bXTtuZXdQYWdlcz1bXTt4cmVmPVtudWxsXTt4cmVmV3JhcHBlcj1uZXcgWFJlZldyYXBwZXIodGhpcy54cmVmLCgpPT50aGlzLm5ld1JlZik7bmV3UmVmQ291bnQ9MTtuYW1lc0RpY3Q9bnVsbDt2ZXJzaW9uPSIxLjciO3BhZ2VMYWJlbHM9bnVsbDtuYW1lZERlc3RpbmF0aW9ucz1uZXcgTWFwO3BhcmVudFRyZWU9bmV3IE1hcDtzdHJ1Y3RUcmVlS2lkcz1bXTtpZFRyZWU9bmV3IE1hcDtjbGFzc01hcD1uZXcgRGljdDtyb2xlTWFwPW5ldyBEaWN0O25hbWVzcGFjZXM9bmV3IE1hcDtzdHJ1Y3RUcmVlQUY9W107c3RydWN0VHJlZVByb251bmNpYXRpb25MZXhpY29uPVtdO2ZpZWxkcz1bXTthY3JvRm9ybURlZmF1bHRBcHBlYXJhbmNlPSIiO2Fjcm9Gb3JtRGVmYXVsdFJlc291cmNlcz1udWxsO2Fjcm9Gb3JtTmVlZEFwcGVhcmFuY2VzPSExO2Fjcm9Gb3JtU2lnRmxhZ3M9MDthY3JvRm9ybUNhbGN1bGF0aW9uT3JkZXI9bnVsbDthY3JvRm9ybVE9MDtvdXRsaW5lSXRlbXM9bnVsbDtlbWJlZGRlZEZpbGVzPW5ldyBNYXA7Y29uc3RydWN0b3Ioe3VzZU9iamVjdFN0cmVhbXM6ZT0hMCx0aXRsZTp0PSIiLGF1dGhvcjpuPSIifT17fSl7W3RoaXMucm9vdFJlZix0aGlzLnJvb3REaWN0XT10aGlzLm5ld0RpY3Q7W3RoaXMuaW5mb1JlZix0aGlzLmluZm9EaWN0XT10aGlzLm5ld0RpY3Q7W3RoaXMucGFnZXNSZWYsdGhpcy5wYWdlc0RpY3RdPXRoaXMubmV3RGljdDt0aGlzLnVzZU9iamVjdFN0cmVhbXM9ZTt0aGlzLm9ialN0cmVhbVJlZnM9ZT9uZXcgU2V0Om51bGw7dGhpcy50aXRsZT10O3RoaXMuYXV0aG9yPW59Z2V0IG5ld1JlZigpe3JldHVybiBSZWYuZ2V0KHRoaXMubmV3UmVmQ291bnQrKywwKX1nZXQgbmV3RGljdCgpe2NvbnN0IGU9dGhpcy5uZXdSZWY7cmV0dXJuW2UsdGhpcy54cmVmW2UubnVtXT1uZXcgRGljdF19YXN5bmMjRW4oZSx0KXtjb25zdCBuPXRoaXMubmV3UmVmO3RoaXMueHJlZltuLm51bV09YXdhaXQgdGhpcy4jX24oZSwhMCx0KTtyZXR1cm4gbn1jbG9uZURpY3QoZSl7Y29uc3QgdD1lLmNsb25lKCk7dC54cmVmPXRoaXMueHJlZldyYXBwZXI7cmV0dXJuIHR9YXN5bmMjX24oZSx0LG4sYT1uZXcgUmVmU2V0KXtpZihlIGluc3RhbmNlb2YgUmVmKXtjb25zdHtjdXJyZW50RG9jdW1lbnQ6e29sZFJlZk1hcHBpbmc6dH19PXRoaXMscz10LmdldChlKTtpZihzKXJldHVybiBzO2NvbnN0IHI9ZTtpZigibnVtYmVyIj09dHlwZW9mKGU9YXdhaXQgbi5mZXRjaEFzeW5jKHIpKSlyZXR1cm4gZTtpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmdGhpcy4jem4oZS5kaWN0KSlyZXR1cm4gdGhpcy4jTG4ocixlLG4sYSk7Y29uc3QgaT10aGlzLm5ld1JlZjt0LnB1dChyLGkpO3RoaXMueHJlZltpLm51bV09YXdhaXQgdGhpcy4jX24oZSwhMCxuLGEpO3JldHVybiBpfWNvbnN0IHM9W10se2N1cnJlbnREb2N1bWVudDp7cG9zdHBvbmVkUmVmQ29waWVzOnJ9fT10aGlzO2lmKEFycmF5LmlzQXJyYXkoZSkpe3QmJihlPWUuc2xpY2UoKSk7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWVbdF1pbnN0YW5jZW9mIFJlZiYmci5nZXQoZVt0XSk7aT9pLnB1c2gobj0+ZVt0XT1uKTpzLnB1c2godGhpcy4jX24oZVt0XSwhMCxuLGEpLnRoZW4obj0+ZVt0XT1uKSl9YXdhaXQgUHJvbWlzZS5hbGwocyk7cmV0dXJuIGV9bGV0IGk7aWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0peyh7ZGljdDppfT1lPWUuZ2V0T3JpZ2luYWxTdHJlYW0oKS5jbG9uZSgpKTtpLnhyZWY9dGhpcy54cmVmV3JhcHBlcn1lbHNlIGlmKGUgaW5zdGFuY2VvZiBEaWN0KXt0JiYoKGU9ZS5jbG9uZSgpKS54cmVmPXRoaXMueHJlZldyYXBwZXIpO2k9ZX1pZihpKXtmb3IoY29uc3RbZSx0XW9mIGkuZ2V0UmF3RW50cmllcygpKXtjb25zdCBvPXQgaW5zdGFuY2VvZiBSZWYmJnIuZ2V0KHQpO28/by5wdXNoKHQ9Pmkuc2V0KGUsdCkpOnMucHVzaCh0aGlzLiNfbih0LCEwLG4sYSkudGhlbih0PT5pLnNldChlLHQpKSl9YXdhaXQgUHJvbWlzZS5hbGwocyl9cmV0dXJuIGV9I3puKGUpe2NvbnN0IHQ9ZS5nZXQoIlN1YnR5cGUiKTtyZXR1cm4gaXNOYW1lKHQsIkltYWdlIil8fGUuaGFzKCJMZW5ndGgxIil8fGlzTmFtZSh0LCJUeXBlMUMiKXx8aXNOYW1lKHQsIkNJREZvbnRUeXBlMEMiKXx8aXNOYW1lKHQsIk9wZW5UeXBlIil9I1VuKGUpe2NvbnN0IHQ9ZS5nZXRPcmlnaW5hbFN0cmVhbSgpO3QucmVzZXQoKTtyZXR1cm4gdC5nZXRCeXRlcygpfWFzeW5jI1duKGUpe2NvbnN0IHQ9W107YXdhaXQgd3JpdGVWYWx1ZShlLHQsbnVsbCk7cmV0dXJuIHQuam9pbigiIil9I1huKGUsdCl7Y29uc3Qgbj0yNTYse2xlbmd0aDphfT10LHM9bmV3IE11cm11ckhhc2gzXzY0O3MudXBkYXRlKGUpO3MudXBkYXRlKGAjJHthfWApO2lmKGE8PTEwMjQpcy51cGRhdGUodCk7ZWxzZXtjb25zdCBlPU1hdGguZmxvb3IoKGEtbikvMyk7Zm9yKGxldCByPTA7cjw0O3IrKyl7Y29uc3QgaT1NYXRoLm1pbihyKmUsYS1uKTtzLnVwZGF0ZSh0LnN1YmFycmF5KGksaStuKSl9fXJldHVybiBzLmhleGRpZ2VzdCgpfWFzeW5jI0xuKGUsdCxuLGEpe2NvbnN0e2N1cnJlbnREb2N1bWVudDp7b2xkUmVmTWFwcGluZzpzLHJlc291cmNlU3RyZWFtUHJvbWlzZXM6cn19PXRoaXM7aWYoYS5oYXMoZSkpcmV0dXJuIHMuZ2V0T3JQdXRDb21wdXRlZChlLCgpPT50aGlzLm5ld1JlZik7Y29uc3QgaT1lLnRvU3RyaW5nKCksbz1yLmdldChpKTtpZihvKXJldHVybiBvO2NvbnN0IGw9bmV3IFJlZlNldChhKTtsLnB1dChlKTtjb25zdCBmPVByb21pc2UucmVzb2x2ZSgpLnRoZW4oYXN5bmMoKT0+e2NvbnN0IGE9YXdhaXQgdGhpcy4jX24odCwhMCxuLGwpLHI9cy5nZXQoZSk7aWYocil7dGhpcy54cmVmW3IubnVtXT1hO3JldHVybiByfWNvbnN0IGk9YXdhaXQgdGhpcy4jS24oYSk7cy5wdXQoZSxpKTtyZXR1cm4gaX0pO3Iuc2V0KGksZik7dHJ5e3JldHVybiBhd2FpdCBmfWZpbmFsbHl7ci5nZXQoaSk9PT1mJiZyLmRlbGV0ZShpKX19YXN5bmMjS24oZSl7Y29uc3QgdD1hd2FpdCB0aGlzLiNXbihlLmRpY3QpLG49dGhpcy4jVW4oZSksYT10aGlzLiNYbih0LG4pLHM9dGhpcy4jUG4uZ2V0T3JJbnNlcnRDb21wdXRlZChhLG1ha2VBcnIpO2Zvcihjb25zdCBlIG9mIHMpaWYoZS5kaWN0U3RyPT09dCYmaXNBcnJheUVxdWFsKHRoaXMuI1VuKGUuc3RyZWFtKSxuKSlyZXR1cm4gZS5yZWY7Y29uc3Qgcj10aGlzLm5ld1JlZjt0aGlzLnhyZWZbci5udW1dPWU7cy5wdXNoKHtyZWY6cixkaWN0U3RyOnQsc3RyZWFtOmV9KTtyZXR1cm4gcn1hc3luYyNHbihlLHQpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IG49YXdhaXQgdC5mZXRjaEFzeW5jKGUpO3JldHVybiBBcnJheS5pc0FycmF5KG4pP246W2VdfXJldHVybiBBcnJheS5pc0FycmF5KGUpP2U6W2VdfWFzeW5jI1ZuKGUsdCxuLGEscyxyLGksbz1uZXcgUmVmU2V0KXtjb25zdHtjdXJyZW50RG9jdW1lbnQ6e3BhZ2VzTWFwOmwsb2xkUmVmTWFwcGluZzpmfX09dGhpcyxjPXQuZ2V0UmF3KCJQZyIpO2lmKGMgaW5zdGFuY2VvZiBSZWYmJiFsLmhhcyhjKSlyZXR1cm4gbnVsbDtjb25zdCBoPXQuZ2V0UmF3KCJLIik7aWYoaCBpbnN0YW5jZW9mIFJlZiYmby5oYXMoaCkpcmV0dXJuIG51bGw7Y29uc3QgdT1hd2FpdCB0aGlzLiNHbihoLG4pLG09W10scD1bXTtmb3IobGV0IHQgb2YgdSl7Y29uc3QgYz10IGluc3RhbmNlb2YgUmVmP3Q6bnVsbDtpZihjKXtpZihvLmhhcyhjKSljb250aW51ZTtvLnB1dChjKTt0PWF3YWl0IG4uZmV0Y2hBc3luYyhjKX1pZigibnVtYmVyIj09dHlwZW9mIHQpe20ucHVzaCh0KTtjb250aW51ZX1pZighKHQgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtjb25zdCBoPXQuZ2V0UmF3KCJQZyIpO2lmKGggaW5zdGFuY2VvZiBSZWYmJiFsLmhhcyhoKSljb250aW51ZTtjb25zdCB1PXQuZ2V0KCJUeXBlIik7aWYoIXV8fGlzTmFtZSh1LCJTdHJ1Y3RFbGVtIikpe2xldCBlPSExO2lmKGMmJmEuaGFzKGMpKXtpZighaXNOYW1lKHQuZ2V0KCJTIiksIkxpbmsiKSljb250aW51ZTtlPSEwfWNvbnN0IGw9YXdhaXQgdGhpcy4jVm4oYyx0LG4sYSxzLHIsaSxvKTtpZihsKXtwLnB1c2gobS5sZW5ndGgpO20ucHVzaChsKTtjJiZmLnB1dChjLGwpO2UmJnRoaXMueHJlZltsLm51bV0uc2V0SWZOYW1lKCJTIiwiU3BhbiIpfWNvbnRpbnVlfWlmKGlzTmFtZSh1LCJPQkpSIikpe2lmKCFjKWNvbnRpbnVlO2NvbnN0IGE9dC5nZXRSYXcoIk9iaiIpO2lmKGEgaW5zdGFuY2VvZiBSZWYmJiFmLmdldChhKSljb250aW51ZTtjb25zdCBzPWYuZ2V0KGMpfHxhd2FpdCB0aGlzLiNfbihjLCEwLG4pLHI9dGhpcy54cmVmW3MubnVtXS5nZXRSYXcoIk9iaiIpO2lmKHIgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IHQ9dGhpcy54cmVmW3IubnVtXTtpZih0IGluc3RhbmNlb2YgRGljdCYmIXQuaGFzKCJTdHJ1Y3RQYXJlbnQiKSYmZSl7Y29uc3Qgbj10aGlzLnBhcmVudFRyZWUuc2l6ZTt0aGlzLnBhcmVudFRyZWUuc2V0KG4sW2YsZV0pO3Quc2V0KCJTdHJ1Y3RQYXJlbnQiLG4pfX1tLnB1c2gocyk7Y29udGludWV9aWYoaXNOYW1lKHUsIk1DUiIpKXtjb25zdCBlPWF3YWl0IHRoaXMuI19uKGN8fHQsITAsbik7bS5wdXNoKGUpO2NvbnRpbnVlfWlmKGMpe2NvbnN0IGU9YXdhaXQgdGhpcy4jX24oYywhMCxuKTttLnB1c2goZSl9fWlmKDAhPT11Lmxlbmd0aCYmMD09PW0ubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IGQ9dGhpcy5uZXdSZWYsZz10aGlzLnhyZWZbZC5udW1dPXRoaXMuY2xvbmVEaWN0KHQpO2cuZGVsZXRlKCJJRCIpO2cuZGVsZXRlKCJDIik7Zy5kZWxldGUoIksiKTtnLmRlbGV0ZSgiUCIpO2cuZGVsZXRlKCJTIik7YXdhaXQgdGhpcy4jX24oZywhMSxuKTtjb25zdCBiPXQuZ2V0KCJDIik7aWYoYiBpbnN0YW5jZW9mIE5hbWUpe2NvbnN0IGU9ci5nZXQoYi5uYW1lKTtnLnNldCgiQyIsZT9OYW1lLmdldChlKTpiKX1lbHNlIGlmKEFycmF5LmlzQXJyYXkoYikpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYilpZih0IGluc3RhbmNlb2YgTmFtZSl7Y29uc3Qgbj1yLmdldCh0Lm5hbWUpO2UucHVzaChuP05hbWUuZ2V0KG4pOnQpfWcuc2V0KCJDIixlKX1jb25zdCB3PXQuZ2V0KCJTIik7aWYodyBpbnN0YW5jZW9mIE5hbWUpe2NvbnN0IGU9aS5nZXQody5uYW1lKTtnLnNldCgiUyIsZT9OYW1lLmdldChlKTp3KX1jb25zdCBqPXQuZ2V0KCJJRCIpO2lmKCJzdHJpbmciPT10eXBlb2Ygail7Y29uc3QgZT1zdHJpbmdUb1BERlN0cmluZyhqLCExKSx0PXMuZ2V0KGUpO2cuc2V0KCJJRCIsdD9zdHJpbmdUb0FzY2lpT3JVVEYxNkJFKHQpOmopfWxldCBrPWcuZ2V0KCJBIik7aWYoayl7QXJyYXkuaXNBcnJheShrKXx8KGs9W2tdKTtmb3IobGV0IGUgb2Ygayl7ZT10aGlzLnhyZWZXcmFwcGVyLmZldGNoSWZSZWYoZSk7aWYoZSBpbnN0YW5jZW9mIERpY3QmJihpc05hbWUoZS5nZXQoIk8iKSwiVGFibGUiKSYmZS5oYXMoIkhlYWRlcnMiKSkpe2NvbnN0IHQ9dGhpcy54cmVmV3JhcHBlci5mZXRjaElmUmVmKGUuZ2V0UmF3KCJIZWFkZXJzIikpO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRoaXMueHJlZldyYXBwZXIuZmV0Y2hJZlJlZih0W2VdKTtpZigic3RyaW5nIiE9dHlwZW9mIG4pY29udGludWU7Y29uc3QgYT1zLmdldChzdHJpbmdUb1BERlN0cmluZyhuLCExKSk7YSYmKHRbZV09YSl9fX19Zm9yKGNvbnN0IGUgb2YgcCl7Y29uc3QgdD1tW2VdO3RoaXMueHJlZlt0Lm51bV0uc2V0KCJQIixkKX0xPT09bS5sZW5ndGg/Zy5zZXQoIksiLG1bMF0pOm0ubGVuZ3RoPjEmJmcuc2V0KCJLIixtKTtyZXR1cm4gZH0jJG4oe2RvY3VtZW50OmUsaW5jbHVkZVBhZ2VzOnQsZXhjbHVkZVBhZ2VzOm59KXtpZighZSlyZXR1cm5bXTtjb25zdCBjb21waWxlPWU9PntpZighZT8ubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IHQ9bmV3IFNldCxuPVtdO2Zvcihjb25zdCBhIG9mIGUpQXJyYXkuaXNBcnJheShhKT9uLnB1c2goYSk6dC5hZGQoYSk7cmV0dXJue2luZGljZXM6dCxyYW5nZXM6bn19LG1hdGNoZXM9KGUse2luZGljZXM6dCxyYW5nZXM6bn0pPT50LmhhcyhlKXx8bi5zb21lKChbdCxuXSk9PmU+PXQmJmU8PW4pLGE9Y29tcGlsZSh0KSxzPWNvbXBpbGUobikscj1bXTtmb3IobGV0IHQ9MCxuPWUubnVtUGFnZXM7dDxuO3QrKylzJiZtYXRjaGVzKHQscyl8fGEmJiFtYXRjaGVzKHQsYSl8fHIucHVzaCh0KTtyZXR1cm4gcn0jWW4oZSl7Y29uc3QgdD1uZXcgQXJyYXkoZS5sZW5ndGgpLG49W10sYT1bXTtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKyl7Y29uc3Qgcj1lW3NdO2xldCBpO2lmKHIuaW1hZ2UpaT10W3NdPTE7ZWxzZXtpZighci5kb2N1bWVudCl7dFtzXT0wO2NvbnRpbnVlfWk9dFtzXT10aGlzLiMkbihyKS5sZW5ndGh9aWYoIXIucGFnZUluZGljZXMpaWYodm9pZCAwPT09ci5pbnNlcnRBZnRlcilmb3IobGV0IGU9MDtlPGk7ZSsrKW4ucHVzaChzKTtlbHNlIGEucHVzaCh7aTpzLGluc2VydEFmdGVyOnIuaW5zZXJ0QWZ0ZXIsY291bnQ6aX0pfWlmKDA9PT1hLmxlbmd0aClyZXR1cm4gZTtjb25zdCBoYXNDb250ZW50PWU9PiEoIWUuZG9jdW1lbnQmJiFlLmltYWdlKTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3QgYT1lW25dO2lmKGhhc0NvbnRlbnQoYSkmJmEucGFnZUluZGljZXMmJmEucGFnZUluZGljZXMubGVuZ3RoPHRbbl0pdGhyb3cgbmV3IEVycm9yKCJleHRyYWN0UGFnZXM6IHBhcnRpYWwgcGFnZUluZGljZXMgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggaW5zZXJ0QWZ0ZXIgZW50cmllcy4iKX1hLnNvcnQoKGUsdCk9PmUuaW5zZXJ0QWZ0ZXItdC5pbnNlcnRBZnRlcnx8ZS5pLXQuaSk7aWYoMD09PW4ubGVuZ3RoJiZlLnNvbWUoZT0+aGFzQ29udGVudChlKSYmZS5wYWdlSW5kaWNlcykpe2NvbnN0IHQ9ZS5zbGljZSgpO2xldCBuPS0xO2Zvcihjb25zdCB0IG9mIGUpaWYoaGFzQ29udGVudCh0KSYmdC5wYWdlSW5kaWNlcylmb3IoY29uc3QgZSBvZiB0LnBhZ2VJbmRpY2VzKWU+biYmKG49ZSk7bGV0IHM9MDtmb3IoY29uc3R7aTplLGluc2VydEFmdGVyOnIsY291bnQ6aX1vZiBhKXtjb25zdCBhPU1hdGgubWluKE1hdGgubWF4KHIsLTEpK3Msbik7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IG49dFtlXTtoYXNDb250ZW50KG4pJiZuLnBhZ2VJbmRpY2VzJiYhbi5wYWdlSW5kaWNlcy5ldmVyeShlPT5lPD1hKSYmKHRbZV09ey4uLm4scGFnZUluZGljZXM6bi5wYWdlSW5kaWNlcy5tYXAoZT0+ZT5hP2UraTplKX0pfWNvbnN0IG89W107Zm9yKGxldCBlPTA7ZTxpO2UrKylvLnB1c2goYSsxK2UpO2NvbnN0IGw9ey4uLnRbZV0scGFnZUluZGljZXM6b307ZGVsZXRlIGwuaW5zZXJ0QWZ0ZXI7dFtlXT1sO3MrPWk7bis9aX1yZXR1cm4gdH1sZXQgcz0wO2Zvcihjb25zdHtpOmUsaW5zZXJ0QWZ0ZXI6dCxjb3VudDpyfW9mIGEpe2NvbnN0IGE9TWF0aC5tYXgodCwtMSkrMStzO24uc3BsaWNlKGEsMCwuLi5uZXcgQXJyYXkocikuZmlsbChlKSk7cys9cn1jb25zdCByPW5ldyBBcnJheShlLmxlbmd0aCk7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspe2NvbnN0IHQ9bltlXTsoclt0XXx8PVtdKS5wdXNoKGUpfXJldHVybiBlLm1hcCgoZSx0KT0+e2lmKCFoYXNDb250ZW50KGUpfHxlLnBhZ2VJbmRpY2VzKXJldHVybiBlO2NvbnN0IG49ey4uLmUscGFnZUluZGljZXM6clt0XXx8W119O2RlbGV0ZSBuLmluc2VydEFmdGVyO3JldHVybiBufSl9YXN5bmMgZXh0cmFjdFBhZ2VzKGUsdCxuLGEscyl7dGhpcy4jTm49bjtjb25zdCByPVtdO2xldCBpPTA7Y29uc3QgcmVzZXJ2ZVBhZ2VTbG90PWU9PntpZighTnVtYmVyLmlzSW50ZWdlcihlKXx8ZTwwKXRocm93IG5ldyBFcnJvcigiZXh0cmFjdFBhZ2VzOiBpbnZhbGlkIHBhZ2UgaW5kZXguIik7aWYodm9pZCAwIT09dGhpcy5vbGRQYWdlc1tlXSl0aHJvdyBuZXcgRXJyb3IoImV4dHJhY3RQYWdlczogb3ZlcmxhcHBpbmcgcGFnZUluZGljZXMuIik7dGhpcy5vbGRQYWdlc1tlXT1udWxsfSxvPShlPXRoaXMuI1luKGUpKS5maWx0ZXIoZT0+ISFlLmRvY3VtZW50KTt0aGlzLmlzU2luZ2xlRmlsZT0xPT09by5sZW5ndGh8fG8ubGVuZ3RoPjAmJm8uZXZlcnkoZT0+ZS5kb2N1bWVudD09PW9bMF0uZG9jdW1lbnQpO2NvbnN0IGw9W107dCYmKHRoaXMuI01uPXtoYW5kbGVyOmEsdGFzazpzLG5ld0Fubm90YXRpb25zQnlQYWdlOmdldE5ld0Fubm90YXRpb25zTWFwKHQpLGltYWdlc1Byb21pc2VzOkFubm90YXRpb25GYWN0b3J5LmdlbmVyYXRlSW1hZ2VzKHQudmFsdWVzKCksdGhpcy54cmVmV3JhcHBlciwhMCl9KTtjb25zdCBmPVtdO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0e2RvY3VtZW50OmUsaW1hZ2U6bixpbmNsdWRlUGFnZXM6YSxleGNsdWRlUGFnZXM6cyxwYWdlSW5kaWNlczpvfT10O2lmKG4pe2lmKG8pe2k9LTE7aWYoby5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoImV4dHJhY3RQYWdlczogdG9vIG1hbnkgcGFnZUluZGljZXMuIil9bGV0IGU7aWYobz8ubGVuZ3RoKWU9b1swXTtlbHNlIGlmKC0xIT09aSllPWkrKztlbHNlIGZvcihlPTA7dm9pZCAwIT09dGhpcy5vbGRQYWdlc1tlXTtlKyspO3Jlc2VydmVQYWdlU2xvdChlKTtmLnB1c2goe2ltYWdlOm4sc2xvdDplfSk7Y29udGludWV9aWYoIWUpY29udGludWU7byYmKGk9LTEpO2NvbnN0IGM9dGhpcy4jJG4oe2RvY3VtZW50OmUsaW5jbHVkZVBhZ2VzOmEsZXhjbHVkZVBhZ2VzOnN9KTtpZihvJiZvLmxlbmd0aD5jLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImV4dHJhY3RQYWdlczogdG9vIG1hbnkgcGFnZUluZGljZXMuIik7Y29uc3QgaD1uZXcgRG9jdW1lbnREYXRhKGUpO2wucHVzaChoKTtyLnB1c2godGhpcy4jSm4oaCkpO2xldCB1PTA7Zm9yKGNvbnN0IHQgb2YgYyl7bGV0IG47byYmKG49b1t1KytdKTtpZih2b2lkIDA9PT1uKWlmKC0xIT09aSluPWkrKztlbHNlIGZvcihuPTA7dm9pZCAwIT09dGhpcy5vbGRQYWdlc1tuXTtuKyspO3Jlc2VydmVQYWdlU2xvdChuKTtyLnB1c2goZS5nZXRQYWdlKHQpLnRoZW4oZT0+e3RoaXMub2xkUGFnZXNbbl09bmV3IFBhZ2VEYXRhKGUsaCl9KSl9fWF3YWl0IFByb21pc2UuYWxsKHIpO2ZvcihsZXQgZT0wLHQ9dGhpcy5vbGRQYWdlcy5sZW5ndGg7ZTx0O2UrKylpZih2b2lkIDA9PT10aGlzLm9sZFBhZ2VzW2VdKXRocm93IG5ldyBFcnJvcigiZXh0cmFjdFBhZ2VzOiBzcGFyc2UgcGFnZUluZGljZXMuIik7ci5sZW5ndGg9MDt0aGlzLiNRbihsKTt0aGlzLiNabihsKTt0aGlzLiNlYSgpO2Zvcihjb25zdCBlIG9mIHRoaXMub2xkUGFnZXMpZSYmci5wdXNoKHRoaXMuI3RhKGUpKTthd2FpdCBQcm9taXNlLmFsbChyKTt0aGlzLiNuYSgpO3RoaXMuI2FhKGwpO2NvbnN0IGM9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiBmKWMuc2V0KGUuc2xvdCxlKTtjb25zdCBoPWMuc2l6ZT4wP3RoaXMuI3NhKCk6bnVsbDtmb3IobGV0IGU9MCx0PXRoaXMub2xkUGFnZXMubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9Yy5nZXQoZSk7dGhpcy5uZXdQYWdlc1tlXT10P2F3YWl0IHRoaXMuI3JhKHQuaW1hZ2UsaCk6YXdhaXQgdGhpcy4jaWEoZSxudWxsKX10aGlzLiNvYShsKTthd2FpdCB0aGlzLiNsYShsKTthd2FpdCB0aGlzLiNmYShsKTt0aGlzLiNjYShsKTthd2FpdCB0aGlzLiNoYShsKTtyZXR1cm4gdGhpcy53cml0ZVBERigpfWFzeW5jI0puKGUpe2NvbnN0e2RvY3VtZW50OntwZGZNYW5hZ2VyOnQseHJlZjpufX09ZTthd2FpdCBQcm9taXNlLmFsbChbdC5lbnN1cmVDYXRhbG9nKCJkZXN0aW5hdGlvbnMiKS50aGVuKHQ9PmUuZGVzdGluYXRpb25zPXQpLHQuZW5zdXJlQ2F0YWxvZygicmF3UGFnZUxhYmVscyIpLnRoZW4odD0+ZS5wYWdlTGFiZWxzPXQpLHQuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKS50aGVuKHQ9PmUuc3RydWN0VHJlZVJvb3Q9dCksdC5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpLnRoZW4odD0+ZS5hY3JvRm9ybT10KSx0LmVuc3VyZUNhdGFsb2coImRvY3VtZW50T3V0bGluZUZvckVkaXRvciIpLnRoZW4odD0+ZS5vdXRsaW5lPXQpLHQuZW5zdXJlQ2F0YWxvZygicmF3RW1iZWRkZWRGaWxlcyIpLnRoZW4odD0+ZS5lbWJlZGRlZEZpbGVzPXQpXSk7Y29uc3QgYT1lLnN0cnVjdFRyZWVSb290O2lmKGEpe2NvbnN0IHQ9YS5kaWN0LHM9dC5nZXQoIlBhcmVudFRyZWUiKTtpZihzKXtjb25zdCB0PW5ldyBOdW1iZXJUcmVlKHMsbik7ZS5wYXJlbnRUcmVlPXQuZ2V0QWxsKCEwKX1jb25zdCByPXQuZ2V0KCJJRFRyZWUiKTtpZihyKXtjb25zdCB0PW5ldyBOYW1lVHJlZShyLG4pO2UuaWRUcmVlPXQuZ2V0QWxsKCEwKX1lLnJvbGVNYXA9dC5nZXQoIlJvbGVNYXAiKXx8bnVsbDtlLmNsYXNzTWFwPXQuZ2V0KCJDbGFzc01hcCIpfHxudWxsO2xldCBpPXQuZ2V0KCJOYW1lc3BhY2VzIil8fG51bGw7aSYmIUFycmF5LmlzQXJyYXkoaSkmJihpPVtpXSk7ZS5uYW1lc3BhY2VzPWk7ZS5zdHJ1Y3RUcmVlQUY9dC5nZXQoIkFGIil8fG51bGw7ZS5zdHJ1Y3RUcmVlUHJvbnVuY2lhdGlvbkxleGljb249dC5nZXQoIlByb251bmNpYXRpb25MZXhpY29uIil8fG51bGx9fWFzeW5jI3RhKGUpe2NvbnN0e3BhZ2U6e3hyZWY6dCxhbm5vdGF0aW9uczpufSxkb2N1bWVudERhdGE6e3BhZ2VzTWFwOmEsZGVzdGluYXRpb25zOnMsdXNlZE5hbWVkRGVzdGluYXRpb25zOnIsZmllbGRUb1BhcmVudDppfX09ZTtpZighbilyZXR1cm47Y29uc3Qgbz1bXTtsZXQgbD1bXSxmPTAse2hhc1NpZ25hdHVyZUFubm90YXRpb25zOmN9PWUuZG9jdW1lbnREYXRhO2Zvcihjb25zdCBlIG9mIG4pe2NvbnN0IG49ZisrO28ucHVzaCh0LmZldGNoSWZSZWZBc3luYyhlKS50aGVuKGFzeW5jIHQ9PntpZighaXNOYW1lKHQuZ2V0KCJTdWJ0eXBlIiksIkxpbmsiKSl7aWYoaXNOYW1lKHQuZ2V0KCJTdWJ0eXBlIiksIldpZGdldCIpKXtjfHw9aXNOYW1lKGdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkZUIn0pLCJTaWciKTtjb25zdCBuPXQuZ2V0UmF3KCJQYXJlbnQiKXx8bnVsbDt0LmRlbGV0ZSgiUGFyZW50Iik7aS5wdXQoZSxuKX1sW25dPWU7cmV0dXJufWNvbnN0IG89dC5nZXQoIkEiKTtpZihvIGluc3RhbmNlb2YgRGljdCYmIWlzTmFtZShvLmdldCgiUyIpLCJHb1RvIikpe2xbbl09ZTtyZXR1cm59Y29uc3QgZj1vIGluc3RhbmNlb2YgRGljdD9vLmdldCgiRCIpOnQuZ2V0KCJEZXN0Iik7aWYoZiYmKCFBcnJheS5pc0FycmF5KGYpfHxmWzBdaW5zdGFuY2VvZiBSZWYmJiFhLmhhcyhmWzBdKSkpe2lmKGYgaW5zdGFuY2VvZiBOYW1lfHwic3RyaW5nIj09dHlwZW9mIGYpe2NvbnN0IHQ9c3RyaW5nVG9QREZTdHJpbmcoZiBpbnN0YW5jZW9mIE5hbWU/Zi5uYW1lOmYsITApO2lmKHMuaGFzKHQpKXtsW25dPWU7ci5hZGQodCl9fX1lbHNlIGxbbl09ZX0pKX1hd2FpdCBQcm9taXNlLmFsbChvKTtsPWwuZmlsdGVyKGU9PiEhZSk7ZS5hbm5vdGF0aW9ucz1sLmxlbmd0aD4wP2w6bnVsbDtlLmRvY3VtZW50RGF0YS5oYXNTaWduYXR1cmVBbm5vdGF0aW9uc3x8PWN9I2FhKGUpe2Zvcihjb25zdHtwb3N0cG9uZWRSZWZDb3BpZXM6dCxwYWdlc01hcDpufW9mIGUpZm9yKGNvbnN0IGUgb2Ygbi5rZXlzKCkpdC5wdXQoZSxbXSl9I29hKGUpe2Zvcihjb25zdHtwb3N0cG9uZWRSZWZDb3BpZXM6dCxvbGRSZWZNYXBwaW5nOm59b2YgZSl7Zm9yKGNvbnN0W2UsYV1vZiB0Lml0ZW1zKCkpe2NvbnN0IHQ9bi5nZXQoZSk7Zm9yKGNvbnN0IGUgb2YgYSllKHQpfXQuY2xlYXIoKX19I3VhKGUsdCxuPW5ldyBSZWZTZXQpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKCFuLmhhcyhlKSl7bi5wdXQoZSk7dGhpcy4jdWEodGhpcy54cmVmW2UubnVtXSx0LG4pfXJldHVybn1pZihBcnJheS5pc0FycmF5KGUpKXtmb3IoY29uc3QgYSBvZiBlKXRoaXMuI3VhKGEsdCxuKTtyZXR1cm59bGV0IGE7ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/KHtkaWN0OmF9PWUpOmUgaW5zdGFuY2VvZiBEaWN0JiYoYT1lKTtpZihhKXt0KGEpO2Zvcihjb25zdCBlIG9mIGEuZ2V0UmF3VmFsdWVzKCkpdGhpcy4jdWEoZSx0LG4pfX1hc3luYyNsYShlKXtsZXQgdD0wO2NvbnN0e3BhcmVudFRyZWU6bn09dGhpcztmb3IobGV0IGU9MCxhPXRoaXMubmV3UGFnZXMubGVuZ3RoO2U8YTtlKyspe2lmKCF0aGlzLm9sZFBhZ2VzW2VdKWNvbnRpbnVlO2NvbnN0e2RvY3VtZW50RGF0YTp7cGFyZW50VHJlZTphLG9sZFJlZk1hcHBpbmc6cyxvbGRTdHJ1Y3RQYXJlbnRNYXBwaW5nOnIsdXNlZFN0cnVjdFBhcmVudHM6aSxkb2N1bWVudDp7eHJlZjpvfX19PXRoaXMub2xkUGFnZXNbZV07aWYoIWEpY29udGludWU7Y29uc3QgbD10aGlzLm5ld1BhZ2VzW2VdLGY9dGhpcy54cmVmW2wubnVtXSxjPW5ldyBSZWZTZXQ7Yy5wdXQobCk7dGhpcy4jdWEoZixlPT57Y29uc3QgbD1lLmdldCgiU3RydWN0UGFyZW50Iik/P2UuZ2V0KCJTdHJ1Y3RQYXJlbnRzIik7aWYoIm51bWJlciIhPXR5cGVvZiBsKXJldHVybjtpLmFkZChsKTtsZXQgZj1hLmdldChsKTtjb25zdCBjPWYgaW5zdGFuY2VvZiBSZWY/ZjpudWxsO2lmKGMpe2NvbnN0IGU9by5mZXRjaChjKTtBcnJheS5pc0FycmF5KGUpJiYoZj1lKX1BcnJheS5pc0FycmF5KGYpJiZmLmV2ZXJ5KGU9Pm51bGw9PT1lKSYmKGY9bnVsbCk7aWYoIWYpe2UuaGFzKCJTdHJ1Y3RQYXJlbnQiKT9lLmRlbGV0ZSgiU3RydWN0UGFyZW50Iik6ZS5kZWxldGUoIlN0cnVjdFBhcmVudHMiKTtyZXR1cm59bGV0IGg9ci5nZXQobCk7aWYodm9pZCAwPT09aCl7aD10Kys7ci5zZXQobCxoKTtuLnNldChoLFtzLGZdKX1lLmhhcygiU3RydWN0UGFyZW50Iik/ZS5zZXQoIlN0cnVjdFBhcmVudCIsaCk6ZS5zZXQoIlN0cnVjdFBhcmVudHMiLGgpfSxjKX1jb25zdHtzdHJ1Y3RUcmVlS2lkczphLGlkVHJlZTpzLGNsYXNzTWFwOnIscm9sZU1hcDppLG5hbWVzcGFjZXM6byxzdHJ1Y3RUcmVlQUY6bCxzdHJ1Y3RUcmVlUHJvbnVuY2lhdGlvbkxleGljb246Zn09dGhpcztmb3IoY29uc3QgdCBvZiBlKXtjb25zdHtkb2N1bWVudDp7eHJlZjplfSxvbGRSZWZNYXBwaW5nOm4scGFyZW50VHJlZTpjLHVzZWRTdHJ1Y3RQYXJlbnRzOmgsc3RydWN0VHJlZVJvb3Q6dSxpZFRyZWU6bSxjbGFzc01hcDpwLHJvbGVNYXA6ZCxuYW1lc3BhY2VzOmcsc3RydWN0VHJlZUFGOmIsc3RydWN0VHJlZVByb251bmNpYXRpb25MZXhpY29uOnd9PXQ7aWYoIXUpY29udGludWU7dGhpcy5jdXJyZW50RG9jdW1lbnQ9dDtjb25zdCBqPW5ldyBSZWZTZXQ7Zm9yKGNvbnN0W2UsdF1vZiBjfHxbXSkhaC5oYXMoZSkmJnQgaW5zdGFuY2VvZiBSZWYmJmoucHV0KHQpO2NvbnN0IGs9bmV3IE1hcDtmb3IoY29uc3RbZSx0XW9mIG18fFtdKXtsZXQgbj1lO2lmKHMuaGFzKGUpKWZvcihsZXQgdD0xOzt0Kyspe2NvbnN0IGE9YCR7ZX1fJHt0fWA7aWYoIXMuaGFzKGEpKXtrLnNldChlLGEpO249YTticmVha319cy5zZXQobix0KX1jb25zdCB5PW5ldyBNYXA7aWYocD8uc2l6ZT4wKWZvcihsZXRbdCxuXW9mIHApe249YXdhaXQgdGhpcy4jX24obiwhMCxlKTtpZihyLmhhcyh0KSlmb3IobGV0IGU9MTs7ZSsrKXtjb25zdCBuPWAke3R9XyR7ZX1gO2lmKCFyLmhhcyhuKSl7eS5zZXQodCxuKTt0PW47YnJlYWt9fXIuc2V0KHQsbil9Y29uc3QgcT1uZXcgTWFwO2lmKGQ/LnNpemU+MClmb3IoY29uc3RbZSx0XW9mIGQpe2NvbnN0IG49aS5nZXQoZSk7aWYobil7aWYobiE9PXQpZm9yKGxldCBuPTE7O24rKyl7Y29uc3QgYT1gJHtlfV8ke259YDtpZighaS5oYXMoYSkpe3Euc2V0KGUsYSk7aS5zZXQoYSx0KTticmVha319fWVsc2UgaS5zZXQoZSx0KX1pZihnPy5sZW5ndGg+MClmb3IoY29uc3QgdCBvZiBnKXtjb25zdCBuPWF3YWl0IGUuZmV0Y2hJZlJlZkFzeW5jKHQpO2xldCBhPW4uZ2V0KCJOUyIpO2lmKCFhfHxvLmhhcyhhKSljb250aW51ZTthPXN0cmluZ1RvUERGU3RyaW5nKGEsITEpO2NvbnN0IHM9YXdhaXQgdGhpcy4jX24obiwhMCxlKTtvLnNldChhLHMpfWlmKGIpZm9yKGNvbnN0IHQgb2YgYilsLnB1c2goYXdhaXQgdGhpcy4jX24odCwhMCxlKSk7aWYodylmb3IoY29uc3QgdCBvZiB3KWYucHVzaChhd2FpdCB0aGlzLiNfbih0LCEwLGUpKTtjb25zdCB2PXUuZGljdC5nZXRSYXcoIksiKTtpZighdiljb250aW51ZTtjb25zdCBTPWF3YWl0IHRoaXMuI0duKHYsZSk7Zm9yKGxldCB0IG9mIFMpe2NvbnN0IHM9dCBpbnN0YW5jZW9mIFJlZj90Om51bGw7dD1hd2FpdCBlLmZldGNoSWZSZWZBc3luYyh0KTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtsZXQgcj0hMTtpZihzJiZqLmhhcyhzKSl7aWYoIWlzTmFtZSh0LmdldCgiUyIpLCJMaW5rIikpY29udGludWU7cj0hMH1jb25zdCBpPWF3YWl0IHRoaXMuI1ZuKHMsdCxlLGosayx5LHEpO2lmKGkpe2EucHVzaChpKTtzJiZuLnB1dChzLGkpO3ImJnRoaXMueHJlZltpLm51bV0uc2V0SWZOYW1lKCJTIiwiU3BhbiIpfX1mb3IoY29uc3RbZSx0XW9mIG18fFtdKXtjb25zdCBhPXQgaW5zdGFuY2VvZiBSZWYmJm4uZ2V0KHQpLHI9ay5nZXQoZSl8fGU7YT9zLnNldChyLGEpOnMuZGVsZXRlKHIpfX1mb3IoY29uc3RbZSxbdCxhXV1vZiBuKXtpZighYSl7bi5kZWxldGUoZSk7Y29udGludWV9aWYoIUFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IHM9dC5nZXQoYSk7dm9pZCAwPT09cz9uLmRlbGV0ZShlKTpuLnNldChlLHMpO2NvbnRpbnVlfWNvbnN0IHM9YS5tYXAoZT0+ZSBpbnN0YW5jZW9mIFJlZiYmdC5nZXQoZSl8fG51bGwpOzA9PT1zLmxlbmd0aHx8cy5ldmVyeShlPT5udWxsPT09ZSk/bi5kZWxldGUoZSk6bi5zZXQoZSxzKX10aGlzLmN1cnJlbnREb2N1bWVudD1udWxsfSNRbihlKXtmb3IoY29uc3QgdCBvZiBlKXtpZighdC5kZXN0aW5hdGlvbnMpY29udGludWU7Y29uc3R7ZGVzdGluYXRpb25zOmUscGFnZXNNYXA6bn09dCxhPXQuZGVzdGluYXRpb25zPW5ldyBNYXA7Zm9yKGNvbnN0W3Qsc11vZiBlKXtjb25zdCBlPXNbMF0scj1lIGluc3RhbmNlb2YgUmVmJiZuLmdldChlKTtpZihyKXsoci5wb2ludGluZ05hbWVkRGVzdGluYXRpb25zfHw9bmV3IFNldCkuYWRkKHQpO2Euc2V0KHQscyl9fX19I25hKCl7Y29uc3R7bmFtZWREZXN0aW5hdGlvbnM6ZX09dGhpcyxnZXRVbmlxdWVEZXN0aW5hdGlvbk5hbWU9dD0+e2lmKCFlLmhhcyh0KSlyZXR1cm4gdDtmb3IobGV0IG49MTs7bisrKXtjb25zdCBhPWAke3R9XyR7bn1gO2lmKCFlLmhhcyhhKSlyZXR1cm4gYX19O2ZvcihsZXQgdD0wLG49dGhpcy5vbGRQYWdlcy5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj10aGlzLm9sZFBhZ2VzW3RdO2lmKCFuKWNvbnRpbnVlO2NvbnN0e2RvY3VtZW50RGF0YTp7ZGVzdGluYXRpb25zOmEsZGVkdXBOYW1lZERlc3RpbmF0aW9uczpzLHVzZWROYW1lZERlc3RpbmF0aW9uczpyfX09bjtsZXR7cG9pbnRpbmdOYW1lZERlc3RpbmF0aW9uczppfT1uO2lmKGkpe24ucG9pbnRpbmdOYW1lZERlc3RpbmF0aW9ucz1pPWkuaW50ZXJzZWN0aW9uKHIpO2Zvcihjb25zdCBuIG9mIGkpe2lmKCFyLmhhcyhuKSljb250aW51ZTtjb25zdCBpPWEuZ2V0KG4pLnNsaWNlKCk7aWYoIWUuaGFzKG4pKXtlLnNldChuLGkpO2NvbnRpbnVlfWNvbnN0IG89Z2V0VW5pcXVlRGVzdGluYXRpb25OYW1lKGAke259X3Ake3QrMX1gKTtzLnNldChuLG8pO2Uuc2V0KG8saSl9fX19I21hKGUsdCl7aWYoMD09PXQuc2l6ZSlyZXR1cm47Y29uc3QgZml4RGVzdGluYXRpb249KGUsbixhKT0+eyJzdHJpbmciPT10eXBlb2YgYSYmZS5zZXQobix0LmdldChzdHJpbmdUb1BERlN0cmluZyhhLCEwKSl8fGEpfTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXRoaXMueHJlZlt0Lm51bV07aWYoIWlzTmFtZShlLmdldCgiU3VidHlwZSIpLCJMaW5rIikpY29udGludWU7Y29uc3Qgbj1lLmdldCgiQSIpO2lmKG4gaW5zdGFuY2VvZiBEaWN0JiZuLmhhcygiRCIpKXtjb25zdCBlPW4uZ2V0KCJEIik7Zml4RGVzdGluYXRpb24obiwiRCIsZSk7Y29udGludWV9Y29uc3QgYT1lLmdldCgiRGVzdCIpO2ZpeERlc3RpbmF0aW9uKGUsIkRlc3QiLGEpfX0jWm4oZSl7Y29uc3QgY29sbGVjdD0oZSx0LG4pPT57Zm9yKGNvbnN0IGEgb2YgZSl7InN0cmluZyI9PXR5cGVvZiBhLmRlc3QmJnQ/LmhhcyhhLmRlc3QpJiZuLmFkZChhLmRlc3QpO2EuaXRlbXMubGVuZ3RoPjAmJmNvbGxlY3QoYS5pdGVtcyx0LG4pfX07Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3R7b3V0bGluZTplLGRlc3RpbmF0aW9uczpuLHVzZWROYW1lZERlc3RpbmF0aW9uczphfT10O2U/Lmxlbmd0aCYmY29sbGVjdChlLG4sYSl9fSNwYShlLHQpe2NvbnN0e2Rlc3Q6bixhY3Rpb246YSx1cmw6cyx1bnNhZmVVcmw6cixhdHRhY2htZW50Omksc2V0T0NHU3RhdGU6b309ZTtpZihhfHxzfHxyfHxpfHxvKXJldHVybiEwO2lmKCFuKXJldHVybiExO2lmKCJzdHJpbmciPT10eXBlb2Ygbil7Y29uc3QgZT10LmRlZHVwTmFtZWREZXN0aW5hdGlvbnMuZ2V0KG4pfHxuO3JldHVybiB0aGlzLm5hbWVkRGVzdGluYXRpb25zLmhhcyhlKX1yZXR1cm4hIShBcnJheS5pc0FycmF5KG4pJiZuWzBdaW5zdGFuY2VvZiBSZWYpJiYhIXQub2xkUmVmTWFwcGluZy5nZXQoblswXSl9I2RhKGUsdCl7Y29uc3Qgbj1bXTtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPXRoaXMuI2RhKGEuaXRlbXMsdCkscz10aGlzLiNwYShhLHQpOyhzfHxlLmxlbmd0aD4wKSYmbi5wdXNoKHsuLi5hLGRlc3Q6cz9hLmRlc3Q6bnVsbCxyYXdEaWN0OnM/YS5yYXdEaWN0Om51bGwsaXRlbXM6ZSxfZG9jdW1lbnREYXRhOnR9KX1yZXR1cm4gbn0jY2EoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdHtvdXRsaW5lOmV9PW47ZT8ubGVuZ3RoJiZ0LnB1c2goLi4udGhpcy4jZGEoZSxuKSl9dGhpcy5vdXRsaW5lSXRlbXM9dC5sZW5ndGg+MD90Om51bGx9YXN5bmMjZ2EoZSx0KXtjb25zdHtkZXN0Om4scmF3RGljdDphfT10LHM9dC5fZG9jdW1lbnREYXRhO2lmKG4pe2lmKCJzdHJpbmciPT10eXBlb2Ygbil7Y29uc3QgdD1zLmRlZHVwTmFtZWREZXN0aW5hdGlvbnMuZ2V0KG4pfHxuO2Uuc2V0KCJEZXN0IixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKHQpKX1lbHNlIGlmKEFycmF5LmlzQXJyYXkobikpe2NvbnN0IHQ9bi5zbGljZSgpO3RbMF1pbnN0YW5jZW9mIFJlZiYmKHRbMF09cy5vbGRSZWZNYXBwaW5nLmdldCh0WzBdKXx8dFswXSk7ZS5zZXQoIkRlc3QiLHQpfXJldHVybn1jb25zdCByPWE/LmdldCgiQSIpO2lmKHIgaW5zdGFuY2VvZiBEaWN0KXt0aGlzLmN1cnJlbnREb2N1bWVudD1zO2NvbnN0IHQ9YXdhaXQgdGhpcy4jRW4ocixzLmRvY3VtZW50LnhyZWYpO3RoaXMuY3VycmVudERvY3VtZW50PW51bGw7ZS5zZXQoIkEiLHQpfX1hc3luYyNiYSgpe2NvbnN0e291dGxpbmVJdGVtczplfT10aGlzO2lmKCFlPy5sZW5ndGgpcmV0dXJuO2NvbnN0W3Qsbl09dGhpcy5uZXdEaWN0O24uc2V0SWZOYW1lKCJUeXBlIiwiT3V0bGluZXMiKTtjb25zdCBhc3NpZ25SZWZzPWU9Pntmb3IoY29uc3QgdCBvZiBlKXtbdC5fcmVmXT10aGlzLm5ld0RpY3Q7dC5pdGVtcy5sZW5ndGg+MCYmYXNzaWduUmVmcyh0Lml0ZW1zKX19O2Fzc2lnblJlZnMoZSk7Y29uc3QgZmlsbEl0ZW1zPWFzeW5jKGUsdCk9PntsZXQgbj0wO2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXtjb25zdCBzPWVbYV0scj10aGlzLnhyZWZbcy5fcmVmLm51bV07ci5zZXQoIlRpdGxlIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKHMudGl0bGUpKTtyLnNldCgiUGFyZW50Iix0KTthPjAmJnIuc2V0KCJQcmV2IixlW2EtMV0uX3JlZik7YTxlLmxlbmd0aC0xJiZyLnNldCgiTmV4dCIsZVthKzFdLl9yZWYpO2lmKHMuaXRlbXMubGVuZ3RoPjApe3Iuc2V0KCJGaXJzdCIscy5pdGVtc1swXS5fcmVmKTtyLnNldCgiTGFzdCIscy5pdGVtcy5hdCgtMSkuX3JlZik7Y29uc3QgZT1hd2FpdCBmaWxsSXRlbXMocy5pdGVtcyxzLl9yZWYpO3ZvaWQgMCE9PXMuY291bnQmJnIuc2V0KCJDb3VudCIscy5jb3VudDwwPy1lOmUpO24rPXZvaWQgMCE9PXMuY291bnQmJnMuY291bnQ8MD8xOmUrMX1lbHNlIG4rPTE7YXdhaXQgdGhpcy4jZ2EocixzKTtjb25zdCBpPShzLmJvbGQ/MjowKXwocy5pdGFsaWM/MTowKTswIT09aSYmci5zZXQoIkYiLGkpOyFzLmNvbG9yfHwwPT09cy5jb2xvclswXSYmMD09PXMuY29sb3JbMV0mJjA9PT1zLmNvbG9yWzJdfHxyLnNldCgiQyIsW3MuY29sb3JbMF0vMjU1LHMuY29sb3JbMV0vMjU1LHMuY29sb3JbMl0vMjU1XSl9cmV0dXJuIG59LGE9YXdhaXQgZmlsbEl0ZW1zKGUsdCk7bi5zZXQoIkZpcnN0IixlWzBdLl9yZWYpO24uc2V0KCJMYXN0IixlLmF0KC0xKS5fcmVmKTtuLnNldCgiQ291bnQiLGEpO3RoaXMucm9vdERpY3Quc2V0KCJPdXRsaW5lcyIsdCl9YXN5bmMjZmEoZSl7dGhpcy4jd2EoZSk7dGhpcy4jamEoZSk7dGhpcy4ja2EoZSk7YXdhaXQgdGhpcy4jeWEoZSk7Y29uc3QgdD10aGlzLmZpZWxkcztmb3IoY29uc3QgbiBvZiBlKXtsZXQgZT1uLmFjcm9Gb3JtPy5nZXQoIkZpZWxkcyIpfHxudWxsOyFlJiZuLmZpZWxkVG9QYXJlbnQuc2l6ZT4wJiYoZT10aGlzLiNxYShuLmZpZWxkVG9QYXJlbnQsbi5kb2N1bWVudC54cmVmKSk7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpcy5jdXJyZW50RG9jdW1lbnQ9bjthd2FpdCB0aGlzLiN2YSh0LGUpO3RoaXMuY3VycmVudERvY3VtZW50PW51bGx9fXRoaXMuI1NhKGUpfSNrYShlKXtsZXQgdD0wLG49bnVsbDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPWEuYWNyb0Zvcm0/LmdldCgiUSIpO2lmKCJudW1iZXIiPT10eXBlb2YgZSYmMCE9PWUpaWYobj8uYWNyb0Zvcm1RPjApYS5hY3JvRm9ybVE9ZTtlbHNlIGlmKDAhPT10KXtpZihlIT09dCl7bi5hY3JvRm9ybVF8fD10O2EuYWNyb0Zvcm1RPWU7dD0wfX1lbHNle3Q9ZTtuPWF9fXQ+MCYmKHRoaXMuYWNyb0Zvcm1RPXQpfSN3YShlKXtsZXQgdD0wLG49ITE7Zm9yKGNvbnN0IGEgb2YgZSl7aWYoIWEuYWNyb0Zvcm0pY29udGludWU7Y29uc3QgZT1hLmFjcm9Gb3JtLmdldCgiU2lnRmxhZ3MiKTsibnVtYmVyIj09dHlwZW9mIGUmJmEuaGFzU2lnbmF0dXJlQW5ub3RhdGlvbnMmJih0fD1lKTshMD09PWEuYWNyb0Zvcm0uZ2V0KCJOZWVkQXBwZWFyYW5jZXMiKSYmKG49ITApfXRoaXMuYWNyb0Zvcm1TaWdGbGFncz10O3RoaXMuYWNyb0Zvcm1OZWVkQXBwZWFyYW5jZXM9bn0jU2EoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPW4uYWNyb0Zvcm0/LmdldCgiQ08iKXx8bnVsbDtpZighQXJyYXkuaXNBcnJheShlKSljb250aW51ZTtjb25zdHtvbGRSZWZNYXBwaW5nOmF9PW47Zm9yKGNvbnN0IG4gb2YgZSl7Y29uc3QgZT1uIGluc3RhbmNlb2YgUmVmJiZhLmdldChuKTtlJiZ0LnB1c2goZSl9fXRoaXMuYWNyb0Zvcm1DYWxjdWxhdGlvbk9yZGVyPXQubGVuZ3RoPjA/dDpudWxsfSNqYShlKXtsZXQgdD1udWxsLG49bnVsbDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPWEuYWNyb0Zvcm0/LmdldCgiREEiKXx8bnVsbDtpZihlJiYic3RyaW5nIj09dHlwZW9mIGUpaWYobj8uYWNyb0Zvcm1EZWZhdWx0QXBwZWFyYW5jZSlhLmFjcm9Gb3JtRGVmYXVsdEFwcGVhcmFuY2U9ZTtlbHNlIGlmKHQpe2lmKGUhPT10KXtuLmFjcm9Gb3JtRGVmYXVsdEFwcGVhcmFuY2V8fD10O2EuYWNyb0Zvcm1EZWZhdWx0QXBwZWFyYW5jZT1lO3Q9bnVsbH19ZWxzZXt0PWU7bj1hfX10JiYodGhpcy5hY3JvRm9ybURlZmF1bHRBcHBlYXJhbmNlPXQpfWFzeW5jI3lhKGUpe2xldCB0PW51bGwsbj1udWxsLGE9bnVsbDtmb3IoY29uc3QgcyBvZiBlKXtjb25zdCBlPXMuYWNyb0Zvcm0/LmdldCgiRFIiKXx8bnVsbDtpZihlJiZlIGluc3RhbmNlb2YgRGljdClpZihhPy5hY3JvRm9ybURlZmF1bHRSZXNvdXJjZXMpcy5hY3JvRm9ybURlZmF1bHRSZXNvdXJjZXM9ZTtlbHNlIGlmKHQpe2lmKCFkZWVwQ29tcGFyZSh0LGUpKXthLmFjcm9Gb3JtRGVmYXVsdFJlc291cmNlc3x8PXQ7cy5hY3JvRm9ybURlZmF1bHRSZXNvdXJjZXM9ZTt0PW51bGw7bj1udWxsfX1lbHNle3Q9ZTtuPXMuYWNyb0Zvcm0uZ2V0UmF3KCJEUiIpO2E9c319aWYodCl7dGhpcy5jdXJyZW50RG9jdW1lbnQ9YTt0aGlzLmFjcm9Gb3JtRGVmYXVsdFJlc291cmNlcz1hd2FpdCB0aGlzLiNfbihuLCEwLGEuZG9jdW1lbnQueHJlZik7dGhpcy5jdXJyZW50RG9jdW1lbnQ9bnVsbH19I3FhKGUsdCl7Y29uc3Qgbj1bXSxhPW5ldyBSZWZTZXQ7Zm9yKGNvbnN0W3Mscl1vZiBlLml0ZW1zKCkpe2lmKCFyKXtuLnB1c2gocyk7Y29udGludWV9bGV0IGU9cixpPXI7Zm9yKDs7KXtlPXQuZmV0Y2hJZlJlZihlKT8uZ2V0UmF3KCJQYXJlbnQiKXx8bnVsbDtpZighZSlicmVhaztpPWV9aWYoaSBpbnN0YW5jZW9mIFJlZiYmIWEuaGFzKGkpKXtuLnB1c2goaSk7YS5wdXQoaSl9fXJldHVybiBufWFzeW5jI3ZhKGUsdCl7Y29uc3Qgbj1uZXcgUmVmU2V0LGE9W3traWRzOnQsbmV3S2lkczplLHBvczowLG9sZFBhcmVudFJlZjpudWxsLHBhcmVudFJlZjpudWxsLHBhcmVudDpudWxsfV0se2RvY3VtZW50Ont4cmVmOnN9LG9sZFJlZk1hcHBpbmc6cixmaWVsZFRvUGFyZW50OmksYWNyb0Zvcm1EZWZhdWx0QXBwZWFyYW5jZTpvLGFjcm9Gb3JtRGVmYXVsdFJlc291cmNlczpsLGFjcm9Gb3JtUTpmfT10aGlzLmN1cnJlbnREb2N1bWVudCxjPVtdLGg9W107Zm9yKDthLmxlbmd0aD4wOyl7Y29uc3QgZT1hLmF0KC0xKSx7a2lkczp0LG5ld0tpZHM6dSxwYXJlbnQ6bSxwb3M6cH09ZTtpZihwPT09dC5sZW5ndGgpe2EucG9wKCk7aWYoMD09PXUubGVuZ3RofHwhbSljb250aW51ZTtjb25zdCB0PXRoaXMueHJlZltlLnBhcmVudFJlZi5udW1dPXRoaXMuY2xvbmVEaWN0KG0pO3QuZGVsZXRlKCJQYXJlbnQiKTt0LmRlbGV0ZSgiS2lkcyIpO2F3YWl0IHRoaXMuI19uKHQsITEscyk7dC5zZXQoIktpZHMiLHUpO2lmKGEubGVuZ3RoPjApe2NvbnN0IG49YS5hdCgtMSk7aWYoIW4ucGFyZW50UmVmJiZuLm9sZFBhcmVudFJlZil7Y29uc3QgZT1uLnBhcmVudFJlZj10aGlzLm5ld1JlZjt0LnNldCgiUGFyZW50IixlKTtyLnB1dChuLm9sZFBhcmVudFJlZixlKX1uLm5ld0tpZHMucHVzaChlLnBhcmVudFJlZil9Y29udGludWV9Y29uc3QgZD10W2UucG9zKytdO2lmKCEoZCBpbnN0YW5jZW9mIFJlZil8fG4uaGFzKGQpKWNvbnRpbnVlO24ucHV0KGQpO2NvbnN0IGc9cy5mZXRjaElmUmVmKGQpO2lmKGcuaGFzKCJLaWRzIikpe2NvbnN0IGU9Zy5nZXQoIktpZHMiKTtpZighQXJyYXkuaXNBcnJheShlKSljb250aW51ZTthLnB1c2goe2tpZHM6ZSxuZXdLaWRzOltdLHBvczowLG9sZFBhcmVudFJlZjpkLHBhcmVudFJlZjpudWxsLHBhcmVudDpnfSk7Y29udGludWV9aWYoIWkuaGFzKGQpKWNvbnRpbnVlO2NvbnN0IGI9ci5nZXQoZCk7aWYoIWIpY29udGludWU7dS5wdXNoKGIpO2lmKCFlLnBhcmVudFJlZiYmZS5vbGRQYXJlbnRSZWYpe2UucGFyZW50UmVmPXRoaXMubmV3UmVmO3IucHV0KGUub2xkUGFyZW50UmVmLGUucGFyZW50UmVmKX1jb25zdCB3PXRoaXMueHJlZltiLm51bV07ZS5wYXJlbnRSZWYmJncuc2V0KCJQYXJlbnQiLGUucGFyZW50UmVmKTtvJiYhdy5oYXMoIkRBIikmJmMucHVzaCh3KTtsJiYhdy5oYXMoIktpZHMiKSYmdy5nZXQoIkFQIilpbnN0YW5jZW9mIERpY3QmJmgucHVzaCh3KTtmJiYhdy5oYXMoIlEiKSYmdy5zZXQoIlEiLGYpfWZvcihjb25zdCBlIG9mIGMpe2lmKCFpc05hbWUoZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDplLGtleToiRlQifSksIlR4IikpY29udGludWU7Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDplLGtleToiREEifSl8fGUuc2V0KCJEQSIsbyl9Y29uc3QgdT1uZXcgTWFwLGZpeEFwcGVhcmFuY2VSZXNvdXJjZXM9YXN5bmMgZT0+e2xldCB0PWUuZGljdC5nZXRSYXcoIlJlc291cmNlcyIpO3QmJj10aGlzLnhyZWZXcmFwcGVyLmZldGNoSWZSZWYodCk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpe2NvbnN0IHQ9YXdhaXQgdS5nZXRPckluc2VydENvbXB1dGVkKGwsKCk9PnRoaXMuI0VuKGwscykpO2UuZGljdC5zZXQoIlJlc291cmNlcyIsdCk7cmV0dXJufWZvcihjb25zdFtlLG5db2YgbC5nZXRSYXdFbnRyaWVzKCkpe2lmKHQuaGFzKGUpKWNvbnRpbnVlO2xldCBhPW47biBpbnN0YW5jZW9mIFJlZj9hPWF3YWl0IHRoaXMuI19uKG4sITAscyk6KG4gaW5zdGFuY2VvZiBEaWN0fHxuIGluc3RhbmNlb2YgQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShuKSkmJihhPWF3YWl0IHUuZ2V0T3JJbnNlcnRDb21wdXRlZChuLCgpPT50aGlzLiNFbihuLHMpKSk7dC5zZXQoZSxhKX19O2Zvcihjb25zdCBlIG9mIGgpe2NvbnN0IHQ9ZS5nZXQoIkFQIik7Zm9yKGNvbnN0WyxlXW9mIHQpaWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pYXdhaXQgZml4QXBwZWFyYW5jZVJlc291cmNlcyhlKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFssdF1vZiBlKXQgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiZhd2FpdCBmaXhBcHBlYXJhbmNlUmVzb3VyY2VzKHQpfX1hc3luYyNlYSgpe2lmKCF0aGlzLmlzU2luZ2xlRmlsZSlyZXR1cm47Y29uc3QgZT10aGlzLm9sZFBhZ2VzLmZpbmQoZT0+ISFlKTtpZighZSlyZXR1cm47Y29uc3R7ZG9jdW1lbnREYXRhOntkb2N1bWVudDp0LHBhZ2VMYWJlbHM6bn19PWU7aWYoIW4pcmV0dXJuO2NvbnN0IGE9dC5udW1QYWdlcyxzPW5ldyBNYXAscj1uZXcgU2V0KHRoaXMub2xkUGFnZXMuZmlsdGVyKGU9PiEhZSkubWFwKCh7cGFnZTp7cGFnZUluZGV4OmV9fSk9PmUpKTtsZXQgaT1udWxsLG89LTE7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Y29uc3QgdD1uLmdldChlKTtpZih0KXtpPXQ7bz1pLmhhcygiU3QiKT9lOi0xfWlmKHIuaGFzKGUpKXtpZigtMSE9PW8pe2NvbnN0IHQ9aS5nZXQoIlN0Iik7aT10aGlzLmNsb25lRGljdChpKTtpLnNldCgiU3QiLHQrKGUtbykpO289LTF9cy5zZXQoZSxpKX19Y29uc3QgZGVmYXVsdExhYmVsPWU9Pntjb25zdCB0PW5ldyBEaWN0O3Quc2V0SWZOYW1lKCJTIiwiRCIpO3Quc2V0KCJTdCIsZSsxKTtyZXR1cm4gdH07aT1udWxsO2NvbnN0IGw9dGhpcy5wYWdlTGFiZWxzPVtdO2ZvcihsZXQgZT0wLHQ9dGhpcy5vbGRQYWdlcy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD10aGlzLm9sZFBhZ2VzW2VdLG49dCYmcy5nZXQodC5wYWdlLnBhZ2VJbmRleCl8fGRlZmF1bHRMYWJlbChlKTtpZihuIT09aSl7aT1uO2wucHVzaChbZSxpXSl9fX1hc3luYyNpYShlKXtjb25zdHtwYWdlOnQsZG9jdW1lbnREYXRhOm4sYW5ub3RhdGlvbnM6YSxwb2ludGluZ05hbWVkRGVzdGluYXRpb25zOnN9PXRoaXMub2xkUGFnZXNbZV07dGhpcy5jdXJyZW50RG9jdW1lbnQ9bjtjb25zdHtkZWR1cE5hbWVkRGVzdGluYXRpb25zOnIsb2xkUmVmTWFwcGluZzppfT1uLHt4cmVmOm8scm90YXRlOmwsbWVkaWFCb3g6ZixyZXNvdXJjZXM6YyxyZWY6aH09dCx1PXRoaXMubmV3UmVmLG09dGhpcy54cmVmW3UubnVtXT10aGlzLmNsb25lRGljdCh0LnBhZ2VEaWN0KTtpLnB1dChoLHUpO2lmKHMpZm9yKGNvbnN0IGUgb2Ygcyl7Y29uc3QgdD1yLmdldChlKXx8ZTt0aGlzLm5hbWVkRGVzdGluYXRpb25zLmdldCh0KVswXT11fWZvcihjb25zdCBlIG9mWyJSb3RhdGUiLCJNZWRpYUJveCIsIkNyb3BCb3giLCJCbGVlZEJveCIsIlRyaW1Cb3giLCJBcnRCb3giLCJSZXNvdXJjZXMiLCJBbm5vdHMiLCJQYXJlbnQiLCJVc2VyVW5pdCJdKW0uZGVsZXRlKGUpO2NvbnN0IHA9dGhpcy5uZXdSZWZDb3VudDthd2FpdCB0aGlzLiNfbihtLCExLG8pO20uc2V0KCJSb3RhdGUiLGwpO20uc2V0KCJNZWRpYUJveCIsZik7Zm9yKGNvbnN0IGUgb2ZbIkNyb3BCb3giLCJCbGVlZEJveCIsIlRyaW1Cb3giLCJBcnRCb3giXSl7Y29uc3Qgbj10LmdldEJvdW5kaW5nQm94KGUpO24/LnNvbWUoKGUsdCk9PmUhPT1mW3RdKSYmbS5zZXQoZSxuKX1jb25zdCBkPXQudXNlclVuaXQ7MSE9PWQmJm0uc2V0KCJVc2VyVW5pdCIsZCk7bS5zZXRJZkRpY3QoIlJlc291cmNlcyIsYXdhaXQgdGhpcy4jX24oYywhMCxvKSk7bGV0IGc9bnVsbDtpZihhKXtjb25zdCBlPWF3YWl0IHRoaXMuI19uKGEsITAsbyk7dGhpcy4jbWEoZSxyKTtBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wJiYoZz1lKX1jb25zdCBiPW4uZG9jdW1lbnQ9PT10aGlzLiNObj90aGlzLiNNbj8ubmV3QW5ub3RhdGlvbnNCeVBhZ2U/LmdldCh0LnBhZ2VJbmRleCk6bnVsbDtpZihiKXtjb25zdHtoYW5kbGVyOmUsdGFzazpuLGltYWdlc1Byb21pc2VzOmF9PXRoaXMuI01uLHM9bmV3IFJlZlNldENhY2hlLHI9YXdhaXQgQW5ub3RhdGlvbkZhY3Rvcnkuc2F2ZU5ld0Fubm90YXRpb25zKHQuY3JlYXRlQW5ub3RhdGlvbkV2YWx1YXRvcihlKSx0aGlzLnhyZWZXcmFwcGVyLG4sYixhLHMpO2Zvcihjb25zdFtlLHtkYXRhOnR9XW9mIHMuaXRlbXMoKSl0aGlzLnhyZWZbZS5udW1dPXQ7Z3x8PVtdO2Zvcihjb25zdHtyZWY6ZX1vZiByLmFubm90YXRpb25zKWcucHVzaChlKX1tLnNldElmQXJyYXkoIkFubm90cyIsZyk7aWYodGhpcy51c2VPYmplY3RTdHJlYW1zKXtjb25zdCBlPXRoaXMubmV3UmVmQ291bnQsdD1bXTtmb3IobGV0IG49cDtuPGU7bisrKXt0aGlzLnhyZWZbbl1pbnN0YW5jZW9mIEJhc2VTdHJlYW18fHQucHVzaChSZWYuZ2V0KG4sMCkpfWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9NjU1MzUpe2NvbnN0IG49dGhpcy5uZXdSZWY7dGhpcy5vYmpTdHJlYW1SZWZzLmFkZChuLm51bSk7dGhpcy54cmVmW24ubnVtXT10LnNsaWNlKGUsZSs2NTUzNSl9fXRoaXMuY3VycmVudERvY3VtZW50PW51bGw7cmV0dXJuIHV9I3NhKCl7Y29uc3QgZT1uZXcgTWFwO2Zvcihjb25zdCB0IG9mIHRoaXMub2xkUGFnZXMpe2lmKCF0KWNvbnRpbnVlO2NvbnN0e3BhZ2U6bn09dCxbYSxzLHIsaV09bi52aWV3O2xldCBvPXItYSxsPWktcztpZihvPD0wfHxsPD0wKWNvbnRpbnVlO24ucm90YXRlJTE4MCE9MCYmKFtvLGxdPVtsLG9dKTtjb25zdCBmPWAke299eCR7bH1gLGM9ZS5nZXQoZik7Yz9jLmNvdW50Kys6ZS5zZXQoZix7d2lkdGg6byxoZWlnaHQ6bCxjb3VudDoxfSl9aWYoMD09PWUuc2l6ZSl7Y29uc3RbLCxlLHRdPUNmO3JldHVybnt3aWR0aDplLGhlaWdodDp0fX1sZXQgdD1udWxsO2Zvcihjb25zdCBuIG9mIGUudmFsdWVzKCkpKCF0fHxuLmNvdW50PnQuY291bnR8fG4uY291bnQ9PT10LmNvdW50JiZuLndpZHRoKm4uaGVpZ2h0PnQud2lkdGgqdC5oZWlnaHQpJiYodD1uKTtyZXR1cm57d2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHR9fWFzeW5jI3JhKGUsdCl7Y29uc3R7d2lkdGg6bixoZWlnaHQ6YX09dCxzPS4xKm4scj1NYXRoLm1heCgxLG4tMipzKSxpPU1hdGgubWF4KDEsYS0yKnMpLG89dGhpcy5uZXdSZWZDb3VudCx7aW1hZ2VTdHJlYW06bCxzbWFza1N0cmVhbTpmLHdpZHRoOmMsaGVpZ2h0Omh9PWF3YWl0IGNyZWF0ZUltYWdlKGUsdGhpcy54cmVmV3JhcHBlcix7Y2xvc2VCaXRtYXA6ITB9KSx1PU1hdGgubWluKHIvYyxpL2gpLG09Yyp1LHA9aCp1LGQ9KG4tbSkvMixnPShhLXApLzI7aWYoZil7Y29uc3QgZT10aGlzLm5ld1JlZjt0aGlzLnhyZWZbZS5udW1dPWY7bC5kaWN0LnNldCgiU01hc2siLGUpfWNvbnN0IGI9dGhpcy5uZXdSZWY7dGhpcy54cmVmW2IubnVtXT1sO2NvbnN0IHc9bmV3IERpY3QodGhpcy54cmVmV3JhcHBlcik7dy5zZXQoIkltMCIsYik7Y29uc3Qgaj1uZXcgRGljdCh0aGlzLnhyZWZXcmFwcGVyKTtqLnNldCgiWE9iamVjdCIsdyk7ai5zZXQoIlByb2NTZXQiLFtOYW1lLmdldCgiUERGIiksTmFtZS5nZXQoIkltYWdlQyIpXSk7Y29uc3Qgaz1gcSAke251bWJlclRvU3RyaW5nKG0pfSAwIDAgJHtudW1iZXJUb1N0cmluZyhwKX0gJHtudW1iZXJUb1N0cmluZyhkKX0gJHtudW1iZXJUb1N0cmluZyhnKX0gY20gL0ltMCBEbyBRYCx5PW5ldyBTdHJpbmdTdHJlYW0oayxuZXcgRGljdCh0aGlzLnhyZWZXcmFwcGVyKSkscT10aGlzLm5ld1JlZjt0aGlzLnhyZWZbcS5udW1dPXk7Y29uc3Qgdj10aGlzLm5ld1JlZixTPXRoaXMueHJlZlt2Lm51bV09bmV3IERpY3QodGhpcy54cmVmV3JhcHBlcik7Uy5zZXRJZk5hbWUoIlR5cGUiLCJQYWdlIik7Uy5zZXQoIk1lZGlhQm94IixbMCwwLG4sYV0pO1Muc2V0KCJSZXNvdXJjZXMiLGopO1Muc2V0KCJDb250ZW50cyIscSk7aWYodGhpcy51c2VPYmplY3RTdHJlYW1zKXtjb25zdCBlPXRoaXMubmV3UmVmQ291bnQsdD1bXTtmb3IobGV0IG49bztuPGU7bisrKXt0aGlzLnhyZWZbbl1pbnN0YW5jZW9mIEJhc2VTdHJlYW18fHQucHVzaChSZWYuZ2V0KG4sMCkpfWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9NjU1MzUpe2NvbnN0IG49dGhpcy5uZXdSZWY7dGhpcy5vYmpTdHJlYW1SZWZzLmFkZChuLm51bSk7dGhpcy54cmVmW24ubnVtXT10LnNsaWNlKGUsZSs2NTUzNSl9fXJldHVybiB2fSNBYSgpe2NvbnN0e25ld1BhZ2VzOmUscm9vdERpY3Q6dCxwYWdlc1JlZjpuLHBhZ2VzRGljdDphfT10aGlzO3Quc2V0KCJQYWdlcyIsbik7YS5zZXRJZk5hbWUoIlR5cGUiLCJQYWdlcyIpO2Euc2V0KCJDb3VudCIsZS5sZW5ndGgpO2NvbnN0IHM9W3tkaWN0OmEsa2lkczplLHBhcmVudFJlZjpufV07Zm9yKDtzLmxlbmd0aD4wOyl7Y29uc3R7ZGljdDplLGtpZHM6dCxwYXJlbnRSZWY6bn09cy5wb3AoKTtpZih0Lmxlbmd0aDw9MTYpe2Uuc2V0KCJLaWRzIix0KTtmb3IoY29uc3QgZSBvZiB0KXRoaXMueHJlZltlLm51bV0uc2V0KCJQYXJlbnQiLG4pO2NvbnRpbnVlfWNvbnN0IGE9TWF0aC5tYXgoMTYsTWF0aC5jZWlsKHQubGVuZ3RoLzE2KSkscj1bXTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrPWEpci5wdXNoKHQuc2xpY2UoZSxlK2EpKTtjb25zdCBpPVtdO2Uuc2V0KCJLaWRzIixpKTtmb3IoY29uc3QgZSBvZiByKXtjb25zdFt0LGFdPXRoaXMubmV3RGljdDtpLnB1c2godCk7YS5zZXRJZk5hbWUoIlR5cGUiLCJQYWdlcyIpO2Euc2V0KCJQYXJlbnQiLG4pO2Euc2V0KCJDb3VudCIsZS5sZW5ndGgpO3MucHVzaCh7ZGljdDphLGtpZHM6ZSxwYXJlbnRSZWY6dH0pfX19I3hhKGUsdCl7Y29uc3Qgbj1lLnNvcnQodD8oW2VdLFt0XSk9PmU8dD8tMTplPnQ/MTowOihbZV0sW3RdKT0+ZS10KSxbYSxzXT10aGlzLm5ld0RpY3Qscj1be2RpY3Q6cyxlbnRyaWVzOm4saXNSb290OiEwfV0saT10PyJOYW1lcyI6Ik51bXMiO2Zvcig7ci5sZW5ndGg+MDspe2NvbnN0e2RpY3Q6ZSxlbnRyaWVzOnQsaXNSb290Om59PXIucG9wKCk7aWYodC5sZW5ndGg8PTY0KXtufHxlLnNldCgiTGltaXRzIixbdFswXVswXSx0LmF0KC0xKVswXV0pO2Uuc2V0KGksdC5mbGF0KCkpO2NvbnRpbnVlfWNvbnN0IGE9W10scz1NYXRoLm1heCg2NCxNYXRoLmNlaWwodC5sZW5ndGgvNjQpKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrPXMpYS5wdXNoKHQuc2xpY2UoZSxlK3MpKTtjb25zdCBvPVtdO2Uuc2V0KCJLaWRzIixvKTtmb3IoY29uc3QgZSBvZiBhKXtjb25zdFt0LG5dPXRoaXMubmV3RGljdDtvLnB1c2godCk7bi5zZXQoIkxpbWl0cyIsW2VbMF1bMF0sZS5hdCgtMSlbMF1dKTtyLnB1c2goe2RpY3Q6bixlbnRyaWVzOmV9KX19cmV0dXJuIGF9I0NhKCl7Y29uc3R7cGFnZUxhYmVsczplfT10aGlzO2lmKCFlPy5sZW5ndGgpcmV0dXJuO2NvbnN0e3Jvb3REaWN0OnR9PXRoaXMsbj10aGlzLiN4YSh0aGlzLnBhZ2VMYWJlbHMsITEpO3Quc2V0KCJQYWdlTGFiZWxzIixuKX1hc3luYyNoYShlKXtjb25zdHtlbWJlZGRlZEZpbGVzOnR9PXRoaXM7Zm9yKGNvbnN0IG4gb2YgZSl7Y29uc3R7ZW1iZWRkZWRGaWxlczplLGRvY3VtZW50Ont4cmVmOmF9fT1uO2lmKGU/LnNpemUpe3RoaXMuY3VycmVudERvY3VtZW50PW47Zm9yKGNvbnN0W24sc11vZiBlKXtsZXQgZT1uO2lmKHQuaGFzKGUpKXtjb25zdCBhPXN0cmluZ1RvUERGU3RyaW5nKG4sITApO2ZvcihsZXQgbj0xOztuKyspe2NvbnN0IHM9c3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShgJHthfV8ke259YCk7aWYoIXQuaGFzKHMpKXtlPXM7YnJlYWt9fX10LnNldChlLGF3YWl0IHRoaXMuI19uKHMsITAsYSkpfXRoaXMuY3VycmVudERvY3VtZW50PW51bGx9fX0jSWEoKXtjb25zdHtlbWJlZGRlZEZpbGVzOmV9PXRoaXM7aWYoMCE9PWUuc2l6ZSl7aWYoIXRoaXMubmFtZXNEaWN0KXtbdGhpcy5uYW1lc1JlZix0aGlzLm5hbWVzRGljdF09dGhpcy5uZXdEaWN0O3RoaXMucm9vdERpY3Quc2V0KCJOYW1lcyIsdGhpcy5uYW1lc1JlZil9dGhpcy5uYW1lc0RpY3Quc2V0KCJFbWJlZGRlZEZpbGVzIix0aGlzLiN4YShBcnJheS5mcm9tKGUuZW50cmllcygpKSwhMCkpfX0jRmEoKXtjb25zdHtuYW1lZERlc3RpbmF0aW9uczplfT10aGlzO2lmKDAhPT1lLnNpemUpe2lmKCF0aGlzLm5hbWVzRGljdCl7W3RoaXMubmFtZXNSZWYsdGhpcy5uYW1lc0RpY3RdPXRoaXMubmV3RGljdDt0aGlzLnJvb3REaWN0LnNldCgiTmFtZXMiLHRoaXMubmFtZXNSZWYpfXRoaXMubmFtZXNEaWN0LnNldCgiRGVzdHMiLHRoaXMuI3hhKEFycmF5LmZyb20oZSwoW2UsdF0pPT5bc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShlKSx0XSksITApKX19I1RhKCl7Y29uc3R7c3RydWN0VHJlZUtpZHM6ZX09dGhpcztpZighZT8ubGVuZ3RoKXJldHVybjtjb25zdHtyb290RGljdDp0fT10aGlzLG49dGhpcy5uZXdSZWYsYT10aGlzLnhyZWZbbi5udW1dPW5ldyBEaWN0O2Euc2V0SWZOYW1lKCJUeXBlIiwiU3RydWN0VHJlZVJvb3QiKTthLnNldElmQXJyYXkoIksiLGUpO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9dGhpcy54cmVmW3QubnVtXSxhPWUuZ2V0KCJUeXBlIik7YSYmIWlzTmFtZShhLCJTdHJ1Y3RFbGVtIil8fGUuc2V0KCJQIixuKX1pZih0aGlzLnBhcmVudFRyZWUuc2l6ZT4wKXtjb25zdCBlPXRoaXMuI3hhKEFycmF5LmZyb20odGhpcy5wYXJlbnRUcmVlLmVudHJpZXMoKSksITEpO3RoaXMueHJlZltlLm51bV0uc2V0SWZOYW1lKCJUeXBlIiwiUGFyZW50VHJlZSIpO2Euc2V0KCJQYXJlbnRUcmVlIixlKTthLnNldCgiUGFyZW50VHJlZU5leHRLZXkiLHRoaXMucGFyZW50VHJlZS5zaXplKX1pZih0aGlzLmlkVHJlZS5zaXplPjApe2NvbnN0IGU9dGhpcy4jeGEoQXJyYXkuZnJvbSh0aGlzLmlkVHJlZS5lbnRyaWVzKCkpLCEwKTt0aGlzLnhyZWZbZS5udW1dLnNldElmTmFtZSgiVHlwZSIsIklEVHJlZSIpO2Euc2V0KCJJRFRyZWUiLGUpfWlmKHRoaXMuY2xhc3NNYXAuc2l6ZT4wKXtjb25zdCBlPXRoaXMubmV3UmVmO3RoaXMueHJlZltlLm51bV09dGhpcy5jbGFzc01hcDthLnNldCgiQ2xhc3NNYXAiLGUpfWlmKHRoaXMucm9sZU1hcC5zaXplPjApe2NvbnN0IGU9dGhpcy5uZXdSZWY7dGhpcy54cmVmW2UubnVtXT10aGlzLnJvbGVNYXA7YS5zZXQoIlJvbGVNYXAiLGUpfWlmKHRoaXMubmFtZXNwYWNlcy5zaXplPjApe2NvbnN0IGU9dGhpcy5uZXdSZWY7dGhpcy54cmVmW2UubnVtXT1BcnJheS5mcm9tKHRoaXMubmFtZXNwYWNlcy52YWx1ZXMoKSk7YS5zZXQoIk5hbWVzcGFjZXMiLGUpfWlmKHRoaXMuc3RydWN0VHJlZUFGLmxlbmd0aD4wKXtjb25zdCBlPXRoaXMubmV3UmVmO3RoaXMueHJlZltlLm51bV09dGhpcy5zdHJ1Y3RUcmVlQUY7YS5zZXQoIkFGIixlKX1pZih0aGlzLnN0cnVjdFRyZWVQcm9udW5jaWF0aW9uTGV4aWNvbi5sZW5ndGg+MCl7Y29uc3QgZT10aGlzLm5ld1JlZjt0aGlzLnhyZWZbZS5udW1dPXRoaXMuc3RydWN0VHJlZVByb251bmNpYXRpb25MZXhpY29uO2Euc2V0KCJQcm9udW5jaWF0aW9uTGV4aWNvbiIsZSl9dC5zZXQoIlN0cnVjdFRyZWVSb290IixuKX0jUmEoKXtpZigwPT09dGhpcy5maWVsZHMubGVuZ3RoKXJldHVybjtjb25zdHtyb290RGljdDplfT10aGlzLHQ9dGhpcy5uZXdSZWYsbj10aGlzLnhyZWZbdC5udW1dPW5ldyBEaWN0O2Uuc2V0KCJBY3JvRm9ybSIsdCk7bi5zZXQoIkZpZWxkcyIsdGhpcy5maWVsZHMpO3RoaXMuYWNyb0Zvcm1OZWVkQXBwZWFyYW5jZXMmJm4uc2V0KCJOZWVkQXBwZWFyYW5jZXMiLCEwKTt0aGlzLmFjcm9Gb3JtU2lnRmxhZ3M+MCYmbi5zZXQoIlNpZ0ZsYWdzIix0aGlzLmFjcm9Gb3JtU2lnRmxhZ3MpO24uc2V0SWZBcnJheSgiQ08iLHRoaXMuYWNyb0Zvcm1DYWxjdWxhdGlvbk9yZGVyKTtuLnNldElmRGVmaW5lZCgiRFIiLHRoaXMuYWNyb0Zvcm1EZWZhdWx0UmVzb3VyY2VzKTt0aGlzLmFjcm9Gb3JtRGVmYXVsdEFwcGVhcmFuY2UmJm4uc2V0KCJEQSIsdGhpcy5hY3JvRm9ybURlZmF1bHRBcHBlYXJhbmNlKTt0aGlzLmFjcm9Gb3JtUT4wJiZuLnNldCgiUSIsdGhpcy5hY3JvRm9ybVEpfWFzeW5jI09hKCl7Y29uc3R7cm9vdERpY3Q6ZX09dGhpcztlLnNldElmTmFtZSgiVHlwZSIsIkNhdGFsb2ciKTtlLnNldElmTmFtZSgiVmVyc2lvbiIsdGhpcy52ZXJzaW9uKTt0aGlzLiNSYSgpO3RoaXMuI0FhKCk7dGhpcy4jQ2EoKTt0aGlzLiNJYSgpO3RoaXMuI0ZhKCk7dGhpcy4jVGEoKTthd2FpdCB0aGlzLiNiYSgpfSNIYSgpe2NvbnN0IGU9bmV3IE1hcDtpZih0aGlzLmlzU2luZ2xlRmlsZSl7Y29uc3QgdD10aGlzLm9sZFBhZ2VzLmZpbmQoZT0+ISFlKSx7eHJlZjp7dHJhaWxlcjpufX09dC5kb2N1bWVudERhdGEuZG9jdW1lbnQsYT1uLmdldCgiSW5mbyIpO2Zvcihjb25zdFt0LG5db2YgYXx8W10pInN0cmluZyI9PXR5cGVvZiBuJiZlLnNldCh0LHN0cmluZ1RvUERGU3RyaW5nKG4pKX1lLmRlbGV0ZSgiTW9kRGF0ZSIpO2Uuc2V0KCJDcmVhdGlvbkRhdGUiLGdldE1vZGlmaWNhdGlvbkRhdGUoKSk7ZS5zZXQoIkNyZWF0b3IiLCJQREYuanMiKTtlLnNldCgiUHJvZHVjZXIiLCJGaXJlZm94Iik7dGhpcy5hdXRob3ImJmUuc2V0KCJBdXRob3IiLHRoaXMuYXV0aG9yKTt0aGlzLnRpdGxlJiZlLnNldCgiVGl0bGUiLHRoaXMudGl0bGUpO2Zvcihjb25zdFt0LG5db2YgZSl0aGlzLmluZm9EaWN0LnNldCh0LHN0cmluZ1RvQXNjaWlPclVURjE2QkUobikpO3JldHVybiBlfWFzeW5jI0JhKCl7aWYoIXRoaXMuaXNTaW5nbGVGaWxlKXJldHVybltudWxsLG51bGwsbnVsbF07Y29uc3QgZT10aGlzLm9sZFBhZ2VzLmZpbmQoZT0+ISFlKSx7ZG9jdW1lbnREYXRhOnR9PWUse2RvY3VtZW50Ont4cmVmOnt0cmFpbGVyOm4sZW5jcnlwdDphfX19PXQ7aWYoIW4uaGFzKCJFbmNyeXB0IikpcmV0dXJuW251bGwsbnVsbCxudWxsXTtjb25zdCBzPW4uZ2V0KCJFbmNyeXB0Iik7aWYoIShzIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuW251bGwsbnVsbCxudWxsXTt0aGlzLmN1cnJlbnREb2N1bWVudD10O2NvbnN0IHI9W2F3YWl0IHRoaXMuI0VuKHMsbi54cmVmKSxhLG4uZ2V0KCJJRCIpXTt0aGlzLmN1cnJlbnREb2N1bWVudD1udWxsO3JldHVybiByfWFzeW5jI0RhKCl7Y29uc3QgZT1uZXcgUmVmU2V0Q2FjaGU7ZS5wdXQoUmVmLmdldCgwLDY1NTM1KSx7ZGF0YTpudWxsfSk7Zm9yKGxldCB0PTEsbj10aGlzLnhyZWYubGVuZ3RoO3Q8bjt0KyspdGhpcy5vYmpTdHJlYW1SZWZzPy5oYXModCk/YXdhaXQgdGhpcy4jTWEoUmVmLmdldCh0LDApLHRoaXMueHJlZlt0XSxlKTplLnB1dChSZWYuZ2V0KHQsMCkse2RhdGE6dGhpcy54cmVmW3RdfSk7cmV0dXJuW2UsdGhpcy5uZXdSZWZdfWFzeW5jI01hKGUsdCxuKXtjb25zdCBhPVsiIl0scz1bXTtsZXQgcj0wO2NvbnN0IGk9W107Zm9yKGxldCBvPTAsbD10Lmxlbmd0aDtvPGw7bysrKXtjb25zdCBsPXRbb107bi5wdXQobCx7ZGF0YTpudWxsLG9ialN0cmVhbVJlZjplLGluZGV4Om99KTtzLnB1c2goYCR7bC5udW19ICR7cn1gKTtjb25zdCBmPXRoaXMueHJlZltsLm51bV07YXdhaXQgd3JpdGVWYWx1ZShmLGksbnVsbCk7Y29uc3QgYz1pLmpvaW4oIiIpO2kubGVuZ3RoPTA7YS5wdXNoKGMpO3IrPWMubGVuZ3RoKzF9YVswXT1zLmpvaW4oIlxuIik7Y29uc3Qgbz1uZXcgRGljdDtvLnNldElmTmFtZSgiVHlwZSIsIk9ialN0bSIpO28uc2V0KCJOIix0Lmxlbmd0aCk7by5zZXQoIkZpcnN0IixhWzBdLmxlbmd0aCsxKTtjb25zdCBsPW5ldyBTdHJpbmdTdHJlYW0oYS5qb2luKCJcbiIpLG8pO24ucHV0KGUse2RhdGE6bH0pfWFzeW5jIHdyaXRlUERGKCl7YXdhaXQgdGhpcy4jT2EoKTtjb25zdCBlPXRoaXMuI0hhKCksW3QsbixhXT1hd2FpdCB0aGlzLiNCYSgpLFtzLHJdPWF3YWl0IHRoaXMuI0RhKCk7cmV0dXJuIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6c3RyaW5nVG9CeXRlcyhgJVBERi0ke3RoaXMudmVyc2lvbn1cbiXDusOew7rDjmApLGNoYW5nZXM6cyx4cmVmSW5mbzp7c3RhcnRYUmVmOm51bGwscm9vdFJlZjp0aGlzLnJvb3RSZWYsaW5mb1JlZjp0aGlzLmluZm9SZWYsZW5jcnlwdFJlZjp0LG5ld1JlZjpyLGZpbGVJZHM6YXx8W251bGwsbnVsbF0saW5mb01hcDplfSx1c2VYcmVmU3RyZWFtOnRoaXMudXNlT2JqZWN0U3RyZWFtcyx4cmVmOntlbmNyeXB0Om4sZW5jcnlwdFJlZjp0fX0pfX1jbGFzcyBCYXNlUERGU3RyZWFteyNOYT1udWxsOyNQYT1udWxsO19mdWxsUmVhZGVyPW51bGw7X3JhbmdlUmVhZGVycz1uZXcgU2V0O19zb3VyY2U9bnVsbDtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5fc291cmNlPWU7dGhpcy4jTmE9dDt0aGlzLiNQYT1ufWdldCBfcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2Z1bGxSZWFkZXI/Ll9sb2FkZWQ/PzB9Z2V0RnVsbFJlYWRlcigpe2Fzc2VydCghdGhpcy5fZnVsbFJlYWRlciwiQmFzZVBERlN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3JldHVybiB0aGlzLl9mdWxsUmVhZGVyPW5ldyB0aGlzLiNOYSh0aGlzKX1nZXRSYW5nZVJlYWRlcihlLHQpe2lmKHQ8PXRoaXMuX3Byb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCBuPW5ldyB0aGlzLiNQYSh0aGlzLGUsdCk7dGhpcy5fcmFuZ2VSZWFkZXJzLmFkZChuKTtyZXR1cm4gbn1jYW5jZWxBbGxSZXF1ZXN0cyhlKXt0aGlzLl9mdWxsUmVhZGVyPy5jYW5jZWwoZSk7Zm9yKGNvbnN0IHQgb2YgbmV3IFNldCh0aGlzLl9yYW5nZVJlYWRlcnMpKXQuY2FuY2VsKGUpfX1jbGFzcyBCYXNlUERGU3RyZWFtUmVhZGVye29uUHJvZ3Jlc3M9bnVsbDtfY29udGVudExlbmd0aD0wO19maWxlbmFtZT1udWxsO19oZWFkZXJzQ2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTtfaXNSYW5nZVN1cHBvcnRlZD0hMTtfaXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ITE7X2xvYWRlZD0wO19zdHJlYW09bnVsbDtjb25zdHJ1Y3RvcihlKXt0aGlzLl9zdHJlYW09ZX1fY2FsbE9uUHJvZ3Jlc3MoKXt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZCx0b3RhbDp0aGlzLl9jb250ZW50TGVuZ3RofSl9Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlfWdldCBmaWxlbmFtZSgpe3JldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZWFkYCBjYWxsZWQiKX1jYW5jZWwoZSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgY2FuY2VsYCBjYWxsZWQiKX19Y2xhc3MgQmFzZVBERlN0cmVhbVJhbmdlUmVhZGVye19zdHJlYW09bnVsbDtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5fc3RyZWFtPWV9YXN5bmMgcmVhZCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlYWRgIGNhbGxlZCIpfWNhbmNlbChlKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBjYW5jZWxgIGNhbGxlZCIpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW0gZXh0ZW5kcyBCYXNlUERGU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsUERGV29ya2VyU3RyZWFtUmVhZGVyLFBERldvcmtlclN0cmVhbVJhbmdlUmVhZGVyKX19Y2xhc3MgUERGV29ya2VyU3RyZWFtUmVhZGVyIGV4dGVuZHMgQmFzZVBERlN0cmVhbVJlYWRlcntfcmVhZGVyPW51bGw7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7bXNnSGFuZGxlcjp0fT1lLl9zb3VyY2Usbj10LnNlbmRXaXRoU3RyZWFtKCJHZXRSZWFkZXIiKTt0aGlzLl9yZWFkZXI9bi5nZXRSZWFkZXIoKTt0LnNlbmRXaXRoUHJvbWlzZSgiUmVhZGVySGVhZGVyc1JlYWR5IikudGhlbihlPT57dGhpcy5fY29udGVudExlbmd0aD1lLmNvbnRlbnRMZW5ndGg7dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ZS5pc1N0cmVhbWluZ1N1cHBvcnRlZDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPWUuaXNSYW5nZVN1cHBvcnRlZDt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZXNvbHZlKCl9LHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCl9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW1SYW5nZVJlYWRlciBleHRlbmRzIEJhc2VQREZTdHJlYW1SYW5nZVJlYWRlcntfcmVhZGVyPW51bGw7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKGUsdCxuKTtjb25zdHttc2dIYW5kbGVyOmF9PWUuX3NvdXJjZSxzPWEuc2VuZFdpdGhTdHJlYW0oIkdldFJhbmdlUmVhZGVyIix7YmVnaW46dCxlbmQ6bn0pO3RoaXMuX3JlYWRlcj1zLmdldFJlYWRlcigpfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgV29ya2VyVGFza3tjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZTt0aGlzLnRlcm1pbmF0ZWQ9ITE7dGhpcy5fY2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKX1nZXQgZmluaXNoZWQoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWZpbmlzaCgpe3RoaXMuX2NhcGFiaWxpdHkucmVzb2x2ZSgpfXRlcm1pbmF0ZSgpe3RoaXMudGVybWluYXRlZD0hMH1lbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYodGhpcy50ZXJtaW5hdGVkKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHRhc2sgd2FzIHRlcm1pbmF0ZWQiKX19Y2xhc3MgV29ya2VyTWVzc2FnZUhhbmRsZXJ7c3RhdGljeyJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93JiYhZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiYiZnVuY3Rpb24iPT10eXBlb2Ygc2VsZi5wb3N0TWVzc2FnZSYmIm9ubWVzc2FnZSJpbiBzZWxmJiZ0aGlzLmluaXRpYWxpemVGcm9tUG9ydChzZWxmKX1zdGF0aWMgc2V0dXAoZSx0KXtsZXQgbj0hMTtlLm9uKCJ0ZXN0Iix0PT57aWYoIW4pe249ITA7ZS5zZW5kKCJ0ZXN0Iix0IGluc3RhbmNlb2YgVWludDhBcnJheSl9fSk7ZS5vbigiY29uZmlndXJlIixlPT57IWZ1bmN0aW9uIHNldFZlcmJvc2l0eUxldmVsKGUpe051bWJlci5pc0ludGVnZXIoZSkmJihubj1lKX0oZS52ZXJib3NpdHkpfSk7ZS5vbigiR2V0RG9jUmVxdWVzdCIsZT0+dGhpcy5jcmVhdGVEb2N1bWVudEhhbmRsZXIoZSx0KSl9c3RhdGljIGNyZWF0ZURvY3VtZW50SGFuZGxlcihlLHQpe2xldCBuLGE9ITEscz1udWxsO2NvbnN0IHI9bmV3IFNldCxpPWdldFZlcmJvc2l0eUxldmVsKCkse2RvY0lkOm8sYXBpVmVyc2lvbjpsfT1lLGY9IjYuMi4xMDgiO2lmKGwhPT1mKXRocm93IG5ldyBFcnJvcihgVGhlIEFQSSB2ZXJzaW9uICIke2x9IiBkb2VzIG5vdCBtYXRjaCB0aGUgV29ya2VyIHZlcnNpb24gIiR7Zn0iLmApO2NvbnN0IGJ1aWxkTXNnPShlLHQpPT5gVGhlIFxgJHtlfS5wcm90b3R5cGVcYCBjb250YWlucyB1bmV4cGVjdGVkIGVudW1lcmFibGUgcHJvcGVydHkgIiR7dH0iLCB0aHVzIGJyZWFraW5nIGUuZy4gXGBmb3IuLi5pblxgIGl0ZXJhdGlvbiBvZiAke2V9cy5gO2Zvcihjb25zdCBlIGlue30pdGhyb3cgbmV3IEVycm9yKGJ1aWxkTXNnKCJPYmplY3QiLGUpKTtmb3IoY29uc3QgZSBpbltdKXRocm93IG5ldyBFcnJvcihidWlsZE1zZygiQXJyYXkiLGUpKTtjb25zdCBjPW8rIl93b3JrZXIiO2xldCBoPW5ldyBNZXNzYWdlSGFuZGxlcihjLG8sdCk7ZnVuY3Rpb24gZW5zdXJlTm90VGVybWluYXRlZCgpe2lmKGEpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1mdW5jdGlvbiBzdGFydFdvcmtlclRhc2soZSl7ci5hZGQoZSl9ZnVuY3Rpb24gZmluaXNoV29ya2VyVGFzayhlKXtlLmZpbmlzaCgpO3IuZGVsZXRlKGUpfWFzeW5jIGZ1bmN0aW9uIGxvYWREb2N1bWVudChlKXthd2FpdCBuLmluaXREb2N1bWVudChlKTtjb25zdCB0PWF3YWl0IG4uZW5zdXJlRG9jKCJpc1B1cmVYZmEiKTtpZih0KXtjb25zdCBlPW5ldyBXb3JrZXJUYXNrKCJsb2FkWGZhUmVzb3VyY2VzIik7c3RhcnRXb3JrZXJUYXNrKGUpO2F3YWl0IG4uZW5zdXJlRG9jKCJsb2FkWGZhUmVzb3VyY2VzIixbaCxlXSk7ZmluaXNoV29ya2VyVGFzayhlKX1jb25zdFthLHNdPWF3YWl0IFByb21pc2UuYWxsKFtuLmVuc3VyZURvYygibnVtUGFnZXMiKSxuLmVuc3VyZURvYygiZmluZ2VycHJpbnRzIildKTtyZXR1cm57bnVtUGFnZXM6YSxmaW5nZXJwcmludHM6cyxodG1sRm9yWGZhOnQ/YXdhaXQgbi5lbnN1cmVEb2MoImh0bWxGb3JYZmEiKTpudWxsfX1hc3luYyBmdW5jdGlvbiBnZXRQYXNzd29yZChlKXtjb25zdCB0PW5ldyBXb3JrZXJUYXNrKGBQYXNzd29yZEV4Y2VwdGlvbjogcmVzcG9uc2UgJHtlLmNvZGV9YCk7c3RhcnRXb3JrZXJUYXNrKHQpO3RyeXtyZXR1cm4oYXdhaXQgaC5zZW5kV2l0aFByb21pc2UoIlBhc3N3b3JkUmVxdWVzdCIsZSkpLnBhc3N3b3JkfWZpbmFsbHl7UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2ZpbmlzaFdvcmtlclRhc2sodCl9KX19ZnVuY3Rpb24gc2V0dXBEb2MoZSl7ZnVuY3Rpb24gb25TdWNjZXNzKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtoLnNlbmQoIkdldERvYyIse3BkZkluZm86ZX0pfWZ1bmN0aW9uIG9uRmFpbHVyZShlKXthfHwoZSBpbnN0YW5jZW9mIFBhc3N3b3JkRXhjZXB0aW9uP2dldFBhc3N3b3JkKGUpLnRoZW4oZT0+e24udXBkYXRlUGFzc3dvcmQoZSk7cGRmTWFuYWdlclJlYWR5KCl9KS5jYXRjaCgoKT0+e2guc2VuZCgiRG9jRXhjZXB0aW9uIixlKX0pOmguc2VuZCgiRG9jRXhjZXB0aW9uIix3cmFwUmVhc29uKGUpKSl9ZnVuY3Rpb24gcGRmTWFuYWdlclJlYWR5KCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMSkudGhlbihvblN1Y2Nlc3MsZnVuY3Rpb24oZSl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2UgaW5zdGFuY2VvZiBYUmVmUGFyc2VFeGNlcHRpb24/bi5yZXF1ZXN0TG9hZGVkU3RyZWFtKCkudGhlbihmdW5jdGlvbigpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtsb2FkRG9jdW1lbnQoITApLnRoZW4ob25TdWNjZXNzLG9uRmFpbHVyZSl9LG9uRmFpbHVyZSk6b25GYWlsdXJlKGUpfSl9ZW5zdXJlTm90VGVybWluYXRlZCgpOyhhc3luYyBmdW5jdGlvbiBnZXRQZGZNYW5hZ2VyKHtkYXRhOmUscGFzc3dvcmQ6dCxkaXNhYmxlQXV0b0ZldGNoOm4scmFuZ2VDaHVua1NpemU6YSxkb2NCYXNlVXJsOnIsZW5hYmxlWGZhOmksZXZhbHVhdG9yT3B0aW9uczpsfSl7Y29uc3QgZj17c291cmNlOm51bGwsZGlzYWJsZUF1dG9GZXRjaDpuLGRvY0Jhc2VVcmw6cixkb2NJZDpvLGVuYWJsZVhmYTppLGV2YWx1YXRvck9wdGlvbnM6bCxoYW5kbGVyOmgsbGVuZ3RoOjAscGFzc3dvcmQ6dCxyYW5nZUNodW5rU2l6ZTphfTtpZihlKXtmLnNvdXJjZT1lO3JldHVybiBuZXcgTG9jYWxQZGZNYW5hZ2VyKGYpfWNvbnN0IGM9bmV3IFBERldvcmtlclN0cmVhbSh7bXNnSGFuZGxlcjpofSksdT1jLmdldEZ1bGxSZWFkZXIoKSx7cHJvbWlzZTptLHJlc29sdmU6cCxyZWplY3Q6ZH09UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IGcsYj1bXTtzPWU9PmMuY2FuY2VsQWxsUmVxdWVzdHMoZSk7dS5oZWFkZXJzUmVhZHkudGhlbigoKT0+e2lmKHUuaXNSYW5nZVN1cHBvcnRlZCl7Zi5zb3VyY2U9YztmLmxlbmd0aD11LmNvbnRlbnRMZW5ndGg7Zi5kaXNhYmxlQXV0b0ZldGNofHw9dS5pc1N0cmVhbWluZ1N1cHBvcnRlZDtnPW5ldyBOZXR3b3JrUGRmTWFuYWdlcihmKTtmb3IoY29uc3QgZSBvZiBiKWcuc2VuZFByb2dyZXNzaXZlRGF0YShlKTtiPW51bGw7cChnKTtzPW51bGx9fSkuY2F0Y2goZT0+e2QoZSk7cz1udWxsfSk7KGFzeW5jIGZ1bmN0aW9uIHJlYWREYXRhKCl7bGV0IGU9MDtmb3IoOzspe2NvbnN0e3ZhbHVlOnQsZG9uZTpufT1hd2FpdCB1LnJlYWQoKTtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7aWYobilicmVhaztlKz10LmJ5dGVMZW5ndGg7dS5pc1N0cmVhbWluZ1N1cHBvcnRlZHx8aC5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDplLHRvdGFsOnUuY29udGVudExlbmd0aH0pO2c/Zy5zZW5kUHJvZ3Jlc3NpdmVEYXRhKHQpOmIucHVzaCh0KX1pZighZyl7Zi5zb3VyY2U9YXJyYXlCdWZmZXJzVG9CeXRlcyhiKTtiPW51bGw7Zz1uZXcgTG9jYWxQZGZNYW5hZ2VyKGYpO3AoZyl9cz1udWxsfSkoKS5jYXRjaChlPT57ZChlKTtzPW51bGx9KTtyZXR1cm4gbX0pKGUpLnRoZW4oZnVuY3Rpb24oZSl7aWYoYSl7ZS50ZXJtaW5hdGUobmV3IEFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO3Rocm93IG5ldyBFcnJvcigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkIil9bj1lO24ucmVxdWVzdExvYWRlZFN0cmVhbSghMCkudGhlbihlPT57aC5zZW5kKCJEYXRhTG9hZGVkIix7bGVuZ3RoOmUuYnl0ZXMuYnl0ZUxlbmd0aH0pfSwoKT0+e30pfSkudGhlbihwZGZNYW5hZ2VyUmVhZHksb25GYWlsdXJlKX1oLm9uKCJHZXRQYWdlIixhc3luYyBmdW5jdGlvbih7cGFnZUluZGV4OmV9KXtjb25zdCB0PWF3YWl0IG4uZ2V0UGFnZShlKSxbYSxzLHIsaV09YXdhaXQgUHJvbWlzZS5hbGwoW24uZW5zdXJlKHQsInJvdGF0ZSIpLG4uZW5zdXJlKHQsInJlZiIpLG4uZW5zdXJlKHQsInVzZXJVbml0Iiksbi5lbnN1cmUodCwidmlldyIpXSk7cmV0dXJue3JvdGF0ZTphLHJlZjpzLHJlZlN0cjpzPy50b1N0cmluZygpPz9udWxsLHVzZXJVbml0OnIsdmlldzppfX0pO2gub24oIkdldFBhZ2VJbmRleCIsZnVuY3Rpb24oe251bTplLGdlbjp0fSl7cmV0dXJuIG4uZW5zdXJlQ2F0YWxvZygiZ2V0UGFnZUluZGV4IixbUmVmLmdldChlLHQpXSl9KTtoLm9uKCJHZXREZXN0aW5hdGlvbnMiLGZ1bmN0aW9uKCl7cmV0dXJuIG4uZW5zdXJlQ2F0YWxvZygiZGVzdGluYXRpb25zIil9KTtoLm9uKCJHZXREZXN0aW5hdGlvbiIsZnVuY3Rpb24oe2lkOmV9KXtyZXR1cm4gbi5lbnN1cmVDYXRhbG9nKCJnZXREZXN0aW5hdGlvbiIsW2VdKX0pO2gub24oIkdldFBhZ2VMYWJlbHMiLGZ1bmN0aW9uKCl7cmV0dXJuIG4uZW5zdXJlQ2F0YWxvZygicGFnZUxhYmVscyIpfSk7aC5vbigiR2V0UGFnZUxheW91dCIsZnVuY3Rpb24oKXtyZXR1cm4gbi5lbnN1cmVDYXRhbG9nKCJwYWdlTGF5b3V0Iil9KTtoLm9uKCJHZXRQYWdlTW9kZSIsZnVuY3Rpb24oKXtyZXR1cm4gbi5lbnN1cmVDYXRhbG9nKCJwYWdlTW9kZSIpfSk7aC5vbigiR2V0Vmlld2VyUHJlZmVyZW5jZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIG4uZW5zdXJlQ2F0YWxvZygidmlld2VyUHJlZmVyZW5jZXMiKX0pO2gub24oIkdldE9wZW5BY3Rpb24iLGZ1bmN0aW9uKCl7cmV0dXJuIG4uZW5zdXJlQ2F0YWxvZygib3BlbkFjdGlvbiIpfSk7aC5vbigiR2V0QXR0YWNobWVudHMiLGZ1bmN0aW9uKCl7cmV0dXJuIG4uZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudHMiKX0pO2gub24oIkdldEF0dGFjaG1lbnRDb250ZW50Iixhc3luYyBmdW5jdGlvbihlKXtsZXQgdDtmb3IoOzspe2NvbnN0IGE9dD9hd2FpdCBnZXRQYXNzd29yZCh0KTpudWxsO3RyeXthJiZuLnVwZGF0ZVBhc3N3b3JkKGEpO3JldHVybiBhd2FpdCBuLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRDb250ZW50IixbZV0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBQYXNzd29yZEV4Y2VwdGlvbil7dD1lO2NvbnRpbnVlfXRocm93IGV9fX0pO2gub24oIkdldERvY0pTQWN0aW9ucyIsZnVuY3Rpb24oKXtyZXR1cm4gbi5lbnN1cmVDYXRhbG9nKCJqc0FjdGlvbnMiKX0pO2gub24oIkdldFBhZ2VKU0FjdGlvbnMiLGFzeW5jIGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZX0pe2NvbnN0IHQ9YXdhaXQgbi5nZXRQYWdlKGUpO3JldHVybiBuLmVuc3VyZSh0LCJqc0FjdGlvbnMiKX0pO2gub24oIkdldEFubm90YXRpb25zQnlUeXBlIixhc3luYyBmdW5jdGlvbih7dHlwZXM6ZSxwYWdlSW5kZXhlc1RvU2tpcDp0fSl7Y29uc3RbYSxzXT1hd2FpdCBQcm9taXNlLmFsbChbbi5lbnN1cmVEb2MoIm51bVBhZ2VzIiksbi5lbnN1cmVEb2MoImFubm90YXRpb25HbG9iYWxzIildKTtpZighcylyZXR1cm4gbnVsbDtjb25zdCByPVtdLGk9W107bGV0IG89bnVsbDt0cnl7Zm9yKGxldCBsPTAsZj1hO2w8ZjtsKyspaWYoIXQ/LmhhcyhsKSl7aWYoIW8pe289bmV3IFdvcmtlclRhc2soIkdldEFubm90YXRpb25zQnlUeXBlIik7c3RhcnRXb3JrZXJUYXNrKG8pfXIucHVzaChuLmdldFBhZ2UobCkudGhlbih0PT50LmNvbGxlY3RBbm5vdGF0aW9uc0J5VHlwZShoLG8sZSxpLHMpKSl9YXdhaXQgUHJvbWlzZS5hbGwocik7cmV0dXJuKGF3YWl0IFByb21pc2UuYWxsKGkpKS5maWx0ZXIoZT0+ISFlKX1maW5hbGx5e28mJmZpbmlzaFdvcmtlclRhc2sobyl9fSk7aC5vbigiR2V0T3V0bGluZSIsZnVuY3Rpb24oKXtyZXR1cm4gbi5lbnN1cmVDYXRhbG9nKCJkb2N1bWVudE91dGxpbmUiKX0pO2gub24oIkdldE9wdGlvbmFsQ29udGVudENvbmZpZyIsZnVuY3Rpb24oKXtyZXR1cm4gbi5lbnN1cmVDYXRhbG9nKCJvcHRpb25hbENvbnRlbnRDb25maWciKX0pO2gub24oIkdldFBlcm1pc3Npb25zIixmdW5jdGlvbigpe3JldHVybiBuLmVuc3VyZUNhdGFsb2coInBlcm1pc3Npb25zIil9KTtoLm9uKCJHZXRNZXRhZGF0YSIsZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5hbGwoW24uZW5zdXJlRG9jKCJkb2N1bWVudEluZm8iKSxuLmVuc3VyZUNhdGFsb2coIm1ldGFkYXRhIiksbi5lbnN1cmVDYXRhbG9nKCJoYXNTdHJ1Y3RUcmVlIildKX0pO2gub24oIkdldE1hcmtJbmZvIixmdW5jdGlvbigpe3JldHVybiBuLmVuc3VyZUNhdGFsb2coIm1hcmtJbmZvIil9KTtoLm9uKCJHZXREYXRhIixhc3luYyBmdW5jdGlvbigpe3JldHVybihhd2FpdCBuLnJlcXVlc3RMb2FkZWRTdHJlYW0oKSkuYnl0ZXN9KTtoLm9uKCJHZXRBbm5vdGF0aW9ucyIsYXN5bmMgZnVuY3Rpb24oe3BhZ2VJbmRleDplLGludGVudDp0fSl7Y29uc3QgYT1hd2FpdCBuLmdldFBhZ2UoZSkscz1uZXcgV29ya2VyVGFzayhgR2V0QW5ub3RhdGlvbnM6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhzKTt0cnl7cmV0dXJuIGF3YWl0IGEuZ2V0QW5ub3RhdGlvbnNEYXRhKGgscyx0KX1maW5hbGx5e2ZpbmlzaFdvcmtlclRhc2socyl9fSk7aC5vbigiR2V0RmllbGRPYmplY3RzIixhc3luYyBmdW5jdGlvbigpe2NvbnN0IGU9YXdhaXQgbi5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpO3JldHVybiBlPy5hbGxGaWVsZHN8fG51bGx9KTtoLm9uKCJHZXRTaWduYXR1cmVzIixmdW5jdGlvbigpe3JldHVybiBuLmVuc3VyZURvYygic2lnbmF0dXJlcyIpfSk7aC5vbigiR2V0U2lnbmF0dXJlRGF0YSIsZnVuY3Rpb24oZSl7cmV0dXJuIG4uZW5zdXJlRG9jKCJnZXRTaWduYXR1cmVEYXRhIixbZV0pfSk7aC5vbigiSGFzSlNBY3Rpb25zIixmdW5jdGlvbigpe3JldHVybiBuLmVuc3VyZURvYygiaGFzSlNBY3Rpb25zIil9KTtoLm9uKCJHZXRDYWxjdWxhdGlvbk9yZGVySWRzIixmdW5jdGlvbigpe3JldHVybiBuLmVuc3VyZURvYygiY2FsY3VsYXRpb25PcmRlcklkcyIpfSk7aC5vbigiRXh0cmFjdFBhZ2VzIixhc3luYyBmdW5jdGlvbih7cGFnZUluZm9zOmUsYW5ub3RhdGlvblN0b3JhZ2U6dH0pe2lmKCFlKXt3YXJuKCJleHRyYWN0UGFnZXM6IG5vdGhpbmcgdG8gZXh0cmFjdC4iKTtyZXR1cm4gbnVsbH1BcnJheS5pc0FycmF5KGUpfHwoZT1bZV0pO2xldCBhLHM9MDtmb3IoY29uc3QgdCBvZiBlKWlmKCF0LmltYWdlKWlmKG51bGw9PT10LmRvY3VtZW50KXQuZG9jdW1lbnQ9bi5wZGZEb2N1bWVudDtlbHNlIGlmKEFycmF5QnVmZmVyLmlzVmlldyh0LmRvY3VtZW50KSl7Y29uc3QgZT1uZXcgTG9jYWxQZGZNYW5hZ2VyKHtzb3VyY2U6dC5kb2N1bWVudCxkb2NJZDpgJHtvfV9leHRyYWN0UGFnZXNfJHtzKyt9YCxoYW5kbGVyOmgscGFzc3dvcmQ6dC5wYXNzd29yZD8/bnVsbCxldmFsdWF0b3JPcHRpb25zOk9iamVjdC5hc3NpZ24oe30sbi5ldmFsdWF0b3JPcHRpb25zKX0pO2xldCBhPSExLHI9ITA7Zm9yKDs7KXRyeXthd2FpdCBlLnJlcXVlc3RMb2FkZWRTdHJlYW0oKTthd2FpdCBlLmluaXREb2N1bWVudChhKTticmVha31jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgWFJlZlBhcnNlRXhjZXB0aW9uKXtpZighMT09PWEpe2E9ITA7Y29udGludWV9cj0hMTt3YXJuKCJleHRyYWN0UGFnZXM6IFhSZWZQYXJzZUV4Y2VwdGlvbi4iKX1lbHNlIGlmKHQgaW5zdGFuY2VvZiBQYXNzd29yZEV4Y2VwdGlvbil0cnl7Y29uc3Qgbj1hd2FpdCBnZXRQYXNzd29yZCh0KTtlLnVwZGF0ZVBhc3N3b3JkKG4pfWNhdGNoe3I9ITE7d2FybigiZXh0cmFjdFBhZ2VzOiBpbnZhbGlkIHBhc3N3b3JkLiIpfWVsc2V7cj0hMTt3YXJuKCJleHRyYWN0UGFnZXM6IGludmFsaWQgZG9jdW1lbnQuIil9aWYoIXIpYnJlYWt9cnx8KHQuZG9jdW1lbnQ9bnVsbCk7aWYoYXdhaXQgZS5lbnN1cmVEb2MoImlzUHVyZVhmYSIpKXt0LmRvY3VtZW50PW51bGw7d2FybigiZXh0cmFjdFBhZ2VzIGRvZXMgbm90IHN1cHBvcnQgcHVyZSBYRkEgZG9jdW1lbnRzLiIpfWVsc2UgdC5kb2N1bWVudD1lLnBkZkRvY3VtZW50fWVsc2Ugd2FybigiZXh0cmFjdFBhZ2VzOiBpbnZhbGlkIGRvY3VtZW50LiIpO3RyeXtjb25zdCBzPW5ldyBQREZFZGl0b3I7YT1uZXcgV29ya2VyVGFzayhgRXh0cmFjdFBhZ2VzOiAke2UubGVuZ3RofSBwYWdlKHMpYCk7c3RhcnRXb3JrZXJUYXNrKGEpO3JldHVybiBhd2FpdCBzLmV4dHJhY3RQYWdlcyhlLHQsbi5wZGZEb2N1bWVudCxoLGEpfWNhdGNoKGUpe3dhcm4oYGV4dHJhY3RQYWdlczogIiR7ZX0iLmApO3JldHVybiBudWxsfWZpbmFsbHl7YSYmZmluaXNoV29ya2VyVGFzayhhKX19KTtoLm9uKCJTYXZlRG9jdW1lbnQiLGFzeW5jIGZ1bmN0aW9uKHtpc1B1cmVYZmE6ZSxudW1QYWdlczp0LGFubm90YXRpb25TdG9yYWdlOmEsZmlsZW5hbWU6c30pe2NvbnN0IHI9W24ucmVxdWVzdExvYWRlZFN0cmVhbSgpLG4uZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxuLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtUmVmIiksbi5lbnN1cmVEb2MoInN0YXJ0WFJlZiIpLG4uZW5zdXJlRG9jKCJ4cmVmIiksbi5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpXSxpPW5ldyBSZWZTZXRDYWNoZSxvPVtdLGw9ZT9udWxsOmdldE5ld0Fubm90YXRpb25zTWFwKGEpLFtmLGMsdSxtLHAsZF09YXdhaXQgUHJvbWlzZS5hbGwociksZz1wLnRyYWlsZXIuZ2V0UmF3KCJSb290Iil8fG51bGw7bGV0IGI7aWYobCl7ZD9hd2FpdCBkLmNhblVwZGF0ZVN0cnVjdFRyZWUoe3BkZk1hbmFnZXI6bixuZXdBbm5vdGF0aW9uc0J5UGFnZTpsfSkmJihiPWQpOmF3YWl0IFN0cnVjdFRyZWVSb290LmNhbkNyZWF0ZVN0cnVjdHVyZVRyZWUoe2NhdGFsb2dSZWY6ZyxwZGZNYW5hZ2VyOm4sbmV3QW5ub3RhdGlvbnNCeVBhZ2U6bH0pJiYoYj1udWxsKTtjb25zdCBlPUFubm90YXRpb25GYWN0b3J5LmdlbmVyYXRlSW1hZ2VzKGEudmFsdWVzKCkscCxuLmV2YWx1YXRvck9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpLHQ9dm9pZCAwPT09Yj9vOltdO2Zvcihjb25zdFthLHNdb2YgbCl0LnB1c2gobi5nZXRQYWdlKGEpLnRoZW4odD0+e2NvbnN0IG49bmV3IFdvcmtlclRhc2soYFNhdmUgKGVkaXRvcik6IHBhZ2UgJHthfWApO3N0YXJ0V29ya2VyVGFzayhuKTtyZXR1cm4gdC5zYXZlTmV3QW5ub3RhdGlvbnMoaCxuLHMsZSxpKS5maW5hbGx5KCgpPT57ZmluaXNoV29ya2VyVGFzayhuKX0pfSkpO251bGw9PT1iP28ucHVzaChQcm9taXNlLmFsbCh0KS50aGVuKGFzeW5jKCk9Pnthd2FpdCBTdHJ1Y3RUcmVlUm9vdC5jcmVhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTpsLHhyZWY6cCxjYXRhbG9nUmVmOmcscGRmTWFuYWdlcjpuLGNoYW5nZXM6aX0pfSkpOmImJm8ucHVzaChQcm9taXNlLmFsbCh0KS50aGVuKGFzeW5jKCk9Pnthd2FpdCBiLnVwZGF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOmwscGRmTWFuYWdlcjpuLGNoYW5nZXM6aX0pfSkpfWlmKGUpby5wdXNoKG4uZW5zdXJlRG9jKCJzZXJpYWxpemVYZmFEYXRhIixbYV0pKTtlbHNlIGZvcihsZXQgZT0wO2U8dDtlKyspby5wdXNoKG4uZ2V0UGFnZShlKS50aGVuKGZ1bmN0aW9uKHQpe2NvbnN0IG49bmV3IFdvcmtlclRhc2soYFNhdmU6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhuKTtyZXR1cm4gdC5zYXZlKGgsbixhLGkpLmZpbmFsbHkoKCk9PntmaW5pc2hXb3JrZXJUYXNrKG4pfSl9KSk7Y29uc3Qgdz1hd2FpdCBQcm9taXNlLmFsbChvKTtsZXQgaj1udWxsO2lmKGUpe2o9d1swXTtpZighailyZXR1cm4gZi5ieXRlc31lbHNlIGlmKDA9PT1pLnNpemUpcmV0dXJuIGYuYnl0ZXM7Y29uc3Qgaz11JiZjIGluc3RhbmNlb2YgRGljdCYmaS52YWx1ZXMoKS5zb21lKGU9PmUubmVlZEFwcGVhcmFuY2VzKSx5PWMgaW5zdGFuY2VvZiBEaWN0JiZjLmdldCgiWEZBIil8fG51bGw7bGV0IHE9bnVsbCx2PSExO2lmKEFycmF5LmlzQXJyYXkoeSkpe2ZvcihsZXQgZT0wLHQ9eS5sZW5ndGg7ZTx0O2UrPTIpaWYoImRhdGFzZXRzIj09PXlbZV0pe3E9eVtlKzFdO3Y9ITB9bnVsbD09PXEmJihxPXAuZ2V0TmV3VGVtcG9yYXJ5UmVmKCkpfWVsc2UgeSYmd2FybigiVW5zdXBwb3J0ZWQgWEZBIHR5cGUuIik7bGV0IFM9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihwLnRyYWlsZXIpe2NvbnN0IGU9bmV3IE1hcCx0PXAudHJhaWxlci5nZXQoIkluZm8iKXx8bnVsbDtpZih0IGluc3RhbmNlb2YgRGljdClmb3IoY29uc3RbbixhXW9mIHQpInN0cmluZyI9PXR5cGVvZiBhJiZlLnNldChuLHN0cmluZ1RvUERGU3RyaW5nKGEpKTtTPXtyb290UmVmOmcsZW5jcnlwdFJlZjpwLnRyYWlsZXIuZ2V0UmF3KCJFbmNyeXB0Iil8fG51bGwsbmV3UmVmOnAuZ2V0TmV3VGVtcG9yYXJ5UmVmKCksaW5mb1JlZjpwLnRyYWlsZXIuZ2V0UmF3KCJJbmZvIil8fG51bGwsaW5mb01hcDplLGZpbGVJZHM6cC50cmFpbGVyLmdldCgiSUQiKXx8bnVsbCxzdGFydFhSZWY6bSxmaWxlbmFtZTpzfX1yZXR1cm4gaW5jcmVtZW50YWxVcGRhdGUoe29yaWdpbmFsRGF0YTpmLmJ5dGVzLHhyZWZJbmZvOlMsY2hhbmdlczppLHhyZWY6cCxoYXNYZmE6ISF5LHhmYURhdGFzZXRzUmVmOnEsaGFzWGZhRGF0YXNldHNFbnRyeTp2LG5lZWRBcHBlYXJhbmNlczprLGFjcm9Gb3JtUmVmOnUsYWNyb0Zvcm06Yyx4ZmFEYXRhOmosdXNlWHJlZlN0cmVhbTppc0RpY3QocC50b3BEaWN0LCJYUmVmIil9KS5maW5hbGx5KCgpPT57cC5yZXNldE5ld1RlbXBvcmFyeVJlZigpfSl9KTtoLm9uKCJHZXRPcGVyYXRvckxpc3QiLGZ1bmN0aW9uKHtwYWdlSWQ6ZSxwYWdlSW5kZXg6dCxpbnRlbnQ6YSxjYWNoZUtleTpzLGFubm90YXRpb25TdG9yYWdlOnIsbW9kaWZpZWRJZHM6b30sbCl7bi5nZXRQYWdlKGUpLnRoZW4oZnVuY3Rpb24oZSl7Y29uc3Qgbj1uZXcgV29ya2VyVGFzayhgR2V0T3BlcmF0b3JMaXN0OiBwYWdlICR7dH1gKTtzdGFydFdvcmtlclRhc2sobik7Y29uc3QgZj1pPj1oZT9EYXRlLm5vdygpOjA7ZS5nZXRPcGVyYXRvckxpc3Qoe2hhbmRsZXI6aCxzaW5rOmwsdGFzazpuLGludGVudDphLGNhY2hlS2V5OnMsYW5ub3RhdGlvblN0b3JhZ2U6cixtb2RpZmllZElkczpvLHBhZ2VJbmRleDp0fSkudGhlbihlPT57ZiYmaW5mbyhgJHtuLm5hbWV9OyB0aW1lPSR7RGF0ZS5ub3coKS1mfW1zLCBsZW49JHtlLmxlbmd0aH1gKTtsLmNsb3NlKCl9LGU9PntuLnRlcm1pbmF0ZWR8fGwuZXJyb3IoZSl9KS5maW5hbGx5KCgpPT57ZmluaXNoV29ya2VyVGFzayhuKX0pfSl9KTtoLm9uKCJHZXRUZXh0Q29udGVudCIsZnVuY3Rpb24oe3BhZ2VJZDplLHBhZ2VJbmRleDp0LGluY2x1ZGVNYXJrZWRDb250ZW50OmEsZGlzYWJsZU5vcm1hbGl6YXRpb246c30scil7bi5nZXRQYWdlKGUpLnRoZW4oZnVuY3Rpb24oZSl7Y29uc3Qgbj1uZXcgV29ya2VyVGFzaygiR2V0VGV4dENvbnRlbnQ6IHBhZ2UgIit0KTtzdGFydFdvcmtlclRhc2sobik7Y29uc3Qgbz1pPj1oZT9EYXRlLm5vdygpOjA7ZS5leHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6aCx0YXNrOm4sc2luazpyLGluY2x1ZGVNYXJrZWRDb250ZW50OmEsZGlzYWJsZU5vcm1hbGl6YXRpb246c30pLnRoZW4oKCk9PntvJiZpbmZvKGAke24ubmFtZX07IHRpbWU9JHtEYXRlLm5vdygpLW99bXNgKTtyLmNsb3NlKCl9LGU9PntuLnRlcm1pbmF0ZWR8fHIuZXJyb3IoZSl9KS5maW5hbGx5KCgpPT57ZmluaXNoV29ya2VyVGFzayhuKX0pfSl9KTtoLm9uKCJHZXRTdHJ1Y3RUcmVlIixhc3luYyBmdW5jdGlvbih7cGFnZUluZGV4OmV9KXtjb25zdCB0PWF3YWl0IG4uZ2V0UGFnZShlKTtyZXR1cm4gbi5lbnN1cmUodCwiZ2V0U3RydWN0VHJlZSIpfSk7aC5vbigiRm9udEZhbGxiYWNrIixmdW5jdGlvbih7aWQ6ZX0pe3JldHVybiBuLmZvbnRGYWxsYmFjayhlLGgpfSk7aC5vbigiQ2xlYW51cCIsZnVuY3Rpb24oKXtyZXR1cm4gbi5jbGVhbnVwKCEwKX0pO2gub24oIlRlcm1pbmF0ZSIsYXN5bmMgZnVuY3Rpb24oKXthPSEwO2NvbnN0IGU9W107aWYobil7bi50ZXJtaW5hdGUobmV3IEFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO2NvbnN0IHQ9bi5jbGVhbnVwKCk7ZS5wdXNoKHQpO249bnVsbH1lbHNlIGNsZWFyR2xvYmFsQ2FjaGVzKCk7cz8uKG5ldyBBYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtmb3IoY29uc3QgdCBvZiByKXtlLnB1c2godC5maW5pc2hlZCk7dC50ZXJtaW5hdGUoKX1hd2FpdCBQcm9taXNlLmFsbChlKTtoLmRlc3Ryb3koKTtoPW51bGx9KTtoLm9uKCJSZWFkeSIsZnVuY3Rpb24oKXtzZXR1cERvYyhlKTtlPW51bGx9KTtyZXR1cm4gY31zdGF0aWMgaW5pdGlhbGl6ZUZyb21Qb3J0KGUpe2NvbnN0IHQ9bmV3IE1lc3NhZ2VIYW5kbGVyKCJ3b3JrZXIiLCJtYWluIixlKTt0aGlzLnNldHVwKHQsZSk7dC5zZW5kKCJyZWFkeSIsbnVsbCl9fWdsb2JhbFRoaXMucGRmanNXb3JrZXI9e1dvcmtlck1lc3NhZ2VIYW5kbGVyfTtleHBvcnR7V29ya2VyTWVzc2FnZUhhbmRsZXJ9Ow==`,``+{}.url).toString();let n=t.getDocument({data:e,useWorkerFetch:!1,isOffscreenCanvasSupported:!1});try{return{doc:await n.promise,task:n}}catch(e){throw await n.destroy().catch(()=>{}),{kind:(e instanceof Error?e.name:``)===`PasswordException`?`encrypted`:`unreadable`}}}async function c(e,t,n,r){if(!(n===null||e.streamTextContent===void 0)){n.replaceChildren();try{let i=await Promise.resolve().then(()=>require("./pdf-aU0TN69t.cjs"));n.style.setProperty(`--total-scale-factor`,String(r)),await new i.TextLayer({textContentSource:await e.streamTextContent(),container:n,viewport:t}).render()}catch{n.replaceChildren()}}}function l(e){try{e?.cancel()}catch{}}function u(e){return typeof e==`object`&&!!e&&typeof e.kind==`string`}var d=1;function f({doc:e,pageNumber:r,scale:i,baseSize:a,active:o,registerSlot:s}){let u=(0,t.useRef)(null),d=(0,t.useRef)(null),f=(0,t.useRef)(null),[p,m]=(0,t.useState)(!1),[h,g]=(0,t.useState)({width:a.width*i,height:a.height*i});return(0,t.useEffect)(()=>{g({width:a.width*i,height:a.height*i})},[a.width,a.height,i]),(0,t.useEffect)(()=>{if(!o)return;let t=!1,n=f.current;return l(n),(async()=>{try{let a=await e.getPage(r),o=a.getViewport({scale:i}),s=u.current;if(t||s===null||(await n?.promise.catch(()=>{}),t))return;g({width:o.width,height:o.height}),s.width=Math.floor(o.width),s.height=Math.floor(o.height);let l=a.render({canvas:s,viewport:o,annotationMode:0});if(f.current=l,await l.promise,t)return;await c(a,o,d.current,i),t||m(!1)}catch(e){let n=e instanceof Error?e.name:``;!t&&n!==`RenderingCancelledException`&&m(!0)}})(),()=>{t=!0,l(f.current)}},[e,r,i,o]),(0,n.jsx)(`div`,{ref:e=>s(r,e),"data-page":r,className:`relative mx-auto mb-4 bg-white shadow last:mb-0`,style:{width:h.width,height:h.height},children:p?(0,n.jsxs)(`p`,{className:`absolute inset-0 flex items-center justify-center p-4 text-center text-xs text-red-600 dark:text-red-400`,children:[`Page `,r,` could not be rendered.`]}):o?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(`canvas`,{ref:u,className:`block h-full w-full`}),(0,n.jsx)(`div`,{ref:d,className:`pdf-text-layer`,"aria-hidden":!0})]}):null})}function p({path:e,serverUrl:i=``,token:c=null,onLoaded:l}){let[p,m]=(0,t.useState)(null),[h,g]=(0,t.useState)(null),[_,v]=(0,t.useState)(1),[y,b]=(0,t.useState)(2),[x,S]=(0,t.useState)(null),C=(0,t.useRef)(null),w=(0,t.useRef)(new Map);(0,t.useEffect)(()=>{let t=!1,n=null;return m(null),g(null),v(1),S(null),(async()=>{try{let{doc:r,task:a}=await s(await o(i,e,c));if(n=a,t){await a.destroy().catch(()=>{});return}try{let e=(await r.getPage(1)).getViewport({scale:1});t||S({width:e.width,height:e.height})}catch{t||S({width:612,height:792})}if(t)return;m(r),l?.(e)}catch(e){t||g(u(e)?e:{kind:`unreadable`})}})(),()=>{t=!0,n?.destroy().catch(()=>{})}},[e,i,c]);let T=p?.numPages??0,E=(0,t.useCallback)((e,t)=>{t===null?w.current.delete(e):w.current.set(e,t)},[]);(0,t.useEffect)(()=>{if(p===null||typeof IntersectionObserver>`u`)return;let e=C.current;if(e===null)return;let t=new IntersectionObserver(e=>{for(let t of e){if(!t.isIntersecting)continue;let e=Number(t.target.dataset.page);Number.isFinite(e)&&v(e)}},{root:e,rootMargin:`-45% 0px -45% 0px`,threshold:0});for(let e of w.current.values())t.observe(e);return()=>t.disconnect()},[p,T]);let D=(0,t.useCallback)(e=>{e<1||e>T||(v(e),w.current.get(e)?.scrollIntoView({block:`start`}))},[T]);return h===null?p===null?(0,n.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,children:(0,n.jsx)(`p`,{className:`text-sm text-zinc-500`,children:`Loading PDF…`})}):(0,n.jsxs)(`div`,{className:`flex h-full flex-col`,onKeyDown:e=>{if(e.key===`PageDown`||e.key===`ArrowRight`)D(_+1);else if(e.key===`PageUp`||e.key===`ArrowLeft`)D(_-1);else return;e.preventDefault()},children:[(0,n.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-zinc-200 px-3 py-2 text-xs dark:border-zinc-800`,children:[(0,n.jsx)(`button`,{type:`button`,onClick:()=>D(_-1),disabled:_<=1,"aria-label":`Previous page`,className:`rounded px-2 py-1 hover:bg-zinc-100 disabled:opacity-40 dark:hover:bg-zinc-800`,children:`‹`}),(0,n.jsxs)(`span`,{className:`tabular-nums text-zinc-600 dark:text-zinc-400`,children:[`Page `,_,` / `,T]}),(0,n.jsx)(`button`,{type:`button`,onClick:()=>D(_+1),disabled:_>=T,"aria-label":`Next page`,className:`rounded px-2 py-1 hover:bg-zinc-100 disabled:opacity-40 dark:hover:bg-zinc-800`,children:`›`}),(0,n.jsxs)(`span`,{className:`ml-auto flex items-center gap-1`,children:[(0,n.jsx)(`button`,{type:`button`,onClick:()=>b(e=>Math.max(0,e-1)),disabled:y===0,"aria-label":`Zoom out`,className:`rounded px-2 py-1 hover:bg-zinc-100 disabled:opacity-40 dark:hover:bg-zinc-800`,children:`−`}),(0,n.jsxs)(`span`,{className:`tabular-nums text-zinc-500`,children:[Math.round(r[y]*100),`%`]}),(0,n.jsx)(`button`,{type:`button`,onClick:()=>b(e=>Math.min(r.length-1,e+1)),disabled:y===r.length-1,"aria-label":`Zoom in`,className:`rounded px-2 py-1 hover:bg-zinc-100 disabled:opacity-40 dark:hover:bg-zinc-800`,children:`+`})]})]}),(0,n.jsx)(`div`,{ref:C,className:`flex-1 overflow-auto bg-zinc-100 p-4 dark:bg-zinc-950`,children:x!==null&&Array.from({length:T},(e,t)=>t+1).map(e=>(0,n.jsx)(f,{doc:p,pageNumber:e,scale:r[y],baseSize:x,active:Math.abs(e-_)<=d,registerSlot:E},e))})]}):(0,n.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,children:(0,n.jsx)(`p`,{className:`max-w-md text-center text-sm text-zinc-600 dark:text-zinc-400`,children:a(h)})})}exports.PdfViewer=p,exports.default=p;
|