From a84a490c3f8a75dac7ff37f92c4e4ed1cdaa1c2a Mon Sep 17 00:00:00 2001 From: taliesin-ai Date: Mon, 6 Jul 2026 10:08:00 +1000 Subject: [PATCH 01/29] ci: skip release/publish/changelog automation on forks (#5756) nightly-release-v3, publish-npm, auto-changelog-v3 and changelog-v3 had no repository guard, so any fork with Actions enabled runs them against its own default branch. On a fork whose master is a PR head (#5462) this keeps committing fork-generated release bumps, npm version bumps and typedoc output (with fork source links) straight into the open PR. Guard the jobs with github.repository == 'wailsapp/wails', matching weekly-release-v2 and generate-sponsor-image. Co-authored-by: taliesin-ai --- .github/workflows/auto-changelog-v3.yml | 2 +- .github/workflows/changelog-v3.yml | 1 + .github/workflows/nightly-release-v3.yml | 1 + .github/workflows/publish-npm.yml | 5 +++-- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/auto-changelog-v3.yml b/.github/workflows/auto-changelog-v3.yml index 92ac295e83d..ef11f08a4b6 100644 --- a/.github/workflows/auto-changelog-v3.yml +++ b/.github/workflows/auto-changelog-v3.yml @@ -13,7 +13,7 @@ on: jobs: auto-changelog: - if: github.event.pull_request.merged == true || github.event_name == 'workflow_dispatch' + if: github.repository == 'wailsapp/wails' && (github.event.pull_request.merged == true || github.event_name == 'workflow_dispatch') runs-on: ubuntu-latest env: GOWORK: "off" diff --git a/.github/workflows/changelog-v3.yml b/.github/workflows/changelog-v3.yml index c6b1603d0a5..48c644c68d5 100644 --- a/.github/workflows/changelog-v3.yml +++ b/.github/workflows/changelog-v3.yml @@ -15,6 +15,7 @@ on: jobs: validate: runs-on: ubuntu-latest + if: github.repository == 'wailsapp/wails' env: GOWORK: "off" permissions: diff --git a/.github/workflows/nightly-release-v3.yml b/.github/workflows/nightly-release-v3.yml index f565a28fe9f..040626f30bb 100644 --- a/.github/workflows/nightly-release-v3.yml +++ b/.github/workflows/nightly-release-v3.yml @@ -19,6 +19,7 @@ on: jobs: nightly-release: runs-on: ubuntu-latest + if: github.repository == 'wailsapp/wails' env: GOWORK: "off" diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml index 180b211d1fa..b0ab26aa437 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish-npm.yml @@ -13,7 +13,7 @@ concurrency: jobs: detect: name: Detect committed changes - if: github.event_name != 'workflow_dispatch' + if: github.repository == 'wailsapp/wails' && github.event_name != 'workflow_dispatch' outputs: changed: ${{ steps.package-json-changes.outputs.any_modified == 'true' || steps.source-changes.outputs.any_modified == 'true' }} runs-on: ubuntu-latest @@ -50,7 +50,8 @@ jobs: name: Rebuild and publish needs: [detect] if: >- - !failure() && !cancelled() + github.repository == 'wailsapp/wails' + && !failure() && !cancelled() && (github.event_name == 'workflow_dispatch' || needs.detect.outputs.changed == 'true') runs-on: ubuntu-latest permissions: From 0ea5f3ad68f4c88ddfb6ec74fb4e971246d64b02 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 6 Jul 2026 00:41:17 +0000 Subject: [PATCH 02/29] chore: update sponsors.svg and contributors.svg [skip ci] --- website/static/img/contributors.svg | 2 +- website/static/img/sponsors.svg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/website/static/img/contributors.svg b/website/static/img/contributors.svg index 897ffef00e0..230f18d4876 100644 --- a/website/static/img/contributors.svg +++ b/website/static/img/contributors.svg @@ -105,4 +105,4 @@ text { .chip { transition: none; } } -Wails Contributors432 contributors · 5,692 commits — thank you!@leaanthony · 540 merged PRs540 merged PRsleaanthony@stffabi · 133 merged PRs133 merged PRsstffabi@fbbdev · 92 changelog credits92 changelog creditsfbbdev@misitebao · 76 merged PRs76 merged PRsmisitebao@atterpac · 59 merged PRs59 merged PRsatterpac@taliesin-ai · 46 merged PRs46 merged PRstaliesin-ai@tmclane · 26 merged PRs26 merged PRs@APshenkin · 23 changelog credits23 changelog credits@bh90210 · 22 merged PRs22 merged PRs@lyimmi · 20 merged PRs20 merged PRs@almas-x · 12 merged PRs@mmghv · 12 merged PRs@popaprozac · 12 merged PRs@ianmjones · 11 merged PRs@IanVS · 10 changelog credits@PylotLight · 9 merged PRs@symball · 9 merged PRs@OlegGulevskyy · 8 merged PRs@agilgur5 · 7 merged PRs@ndianabasi · 7 merged PRs@rh12503 · 7 merged PRs@5aaee9 · 6 changelog credits@acheong08 · 6 changelog credits@ansxuman · 6 merged PRs@Etesam913 · 6 changelog credits@LGiki · 6 changelog credits@marcus-crane · 6 merged PRs@napalu · 6 merged PRs@raguay · 6 merged PRs@sircodemane · 6 merged PRs@abichinger · 5 merged PRs@ATenderholt · 5 merged PRs@jaesung9507 · 5 changelog credits@oSethoum · 5 merged PRs@Snider · 5 merged PRs@wayneforrest · 5 merged PRs@yulesxoxo · 5 changelog credits@akhudek · 4 merged PRs@ddmoney420 · 4 merged PRs@dedo1911 · 4 merged PRs@fdidron · 4 merged PRs@haukened · 4 merged PRs@k-muchmore · 4 commits@marktohark · 4 merged PRs@mbaklor · 4 merged PRs@superDingda · 4 merged PRs@xijaja · 4 merged PRs@adalessa · 3 merged PRs@AkshayKalose · 3 merged PRs@AlbinoDrought · 3 merged PRs@BenoitBotton · 3 merged PRs@COD3HUNT3R · 3 merged PRs@copilot-swe-agent · 3 merged PRs@DeltaLaboratory · 3 merged PRs@DiegPS · 3 merged PRs@FrancescoLuzzi · 3 merged PRs@hi019 · 3 merged PRs@joshbuddy · 3 changelog credits@JulioDRF · 3 changelog credits@Kron · 3 changelog credits@overlordtm · 3 changelog credits@pbnjay · 3 merged PRs@robin-samuel · 3 changelog credits@samstanier · 3 changelog credits@scottopell · 3 changelog credits@smac89 · 3 merged PRs@TheFranconianCoder · 3 merged PRs@Tolfx · 3 changelog credits@triadmoko · 3 changelog credits@TwoNull · 3 merged PRs@Vaelatern · 3 merged PRs@ValentinTrinque · 3 merged PRs@wimaha · 3 merged PRs@aangelisc · 2 merged PRs@aayush420 · 2 merged PRs@AbdelhadiSeddar · 2 merged PRs@abtin · 2 changelog credits@achhabra2 · 2 merged PRs@Alex6357 · 2 merged PRs@andrewbytecoder · 2 merged PRs@andywenk · 2 changelog credits@antimatter96 · 2 merged PRs@arifali123 · 2 changelog credits@artooro · 2 merged PRs@avengerweb · 2 merged PRs@Bare7a · 2 merged PRs@BillBuilt · 2 merged PRs@binyamin · 2 changelog credits@biuaxia · 2 merged PRs@Bronya0 · 2 merged PRs@bruxaodev · 2 merged PRs@chenxiao1990 · 2 changelog credits@cuigege · 2 changelog credits@daodao97 · 2 changelog credits@Debdut · 2 changelog credits@duolabmeng6 · 2 merged PRs@edwardbrowncross · 2 changelog credits@fkhadra · 2 merged PRs@Gjergj · 2 merged PRs@gotid · 2 changelog credits@gwynforthewyn · 2 merged PRs@h8gi · 2 changelog credits@hfoxy · 2 merged PRs@hkhere · 2 merged PRs@hotafrika · 2 changelog credits@iamhabbeboy · 2 changelog credits@ilgityildirim · 2 merged PRs@jes0131 · 2 merged PRs@jghiloni · 2 merged PRs@josStorer · 2 merged PRs@Junkher · 2 changelog credits@KiddoV · 2 changelog credits@konez2k · 2 merged PRs@lambdajack · 2 changelog credits@lontten · 2 merged PRs@LukenSkyne · 2 changelog credits@lvyaoting · 2 merged PRs@Maicarons2022 · 2 changelog credits@marcio199226 · 2 merged PRs@matryer · 2 commits@mondy · 2 changelog credits@mrf345 · 2 merged PRs@MyNameIsAres · 2 changelog credits@NanoNik · 2 changelog credits@nerdyslacker · 2 merged PRs@nickisworking · 2 changelog credits@o8x · 2 changelog credits@ParkourLiu · 2 changelog credits@ParvinEyvazov · 2 changelog credits@phoenix147 · 2 merged PRs@pierrejoye · 2 merged PRs@polikow · 2 changelog credits@PPTGamer · 2 merged PRs@prurigro · 2 changelog credits@puneetdixit200 · 2 changelog credits@RALIST · 2 merged PRs@rayshoo · 2 changelog credits@rev42 · 2 changelog credits@riadafridishibly · 2 changelog credits@rnice01 · 2 changelog credits@rxliuli · 2 merged PRs@RyoTagami · 2 changelog credits@SamHennessy · 2 changelog credits@SheetJSDev · 2 changelog credits@shinshin86 · 2 merged PRs@sidwebworks · 2 changelog credits@skamensky · 2 changelog credits@stavros-k · 2 merged PRs@stendler · 2 merged PRs@Taiterbase · 2 changelog credits@takuyahara · 2 merged PRs@TechplexEngineer · 2 changelog credits@testwill · 2 merged PRs@TheGB0077 · 2 merged PRs@thiennguyen93 · 2 changelog credits@thomas-senechal · 2 merged PRs@timkippdev · 2 merged PRs@tiny-craft · 2 merged PRs@tomanagle · 2 changelog credits@tuuzed · 2 merged PRs@Wakeful-Cloud · 2 merged PRs@willdot · 2 merged PRs@windom · 2 merged PRs@wucm667 · 2 changelog credits@wux1an · 2 changelog credits@x-haose · 2 changelog credits@yz4230 · 2 changelog credits@zandercodes · 2 changelog credits@0x3st3 · 1 merged PR@562589540 · 1 merged PR@aalsuwaidi · 1 merged PR@actions-user · 1 commit@AkagiYui · 1 merged PR@AkimioJR · 1 merged PR@albert-sun · 1 merged PR@alexmat · 1 merged PR@AlienRecall · 1 merged PR@Aliuyanfeng · 1 merged PR@Alpa-1 · 1 changelog credit@amaury-tobias · 1 merged PR@aminya · 1 merged PR@AnalogJ · 3 commits@apzuk3 · 1 merged PR@aranggitoar · 1 merged PR@aschey · 1 merged PR@ayatkyo · 1 changelog credit@azamara · 1 merged PR@Baiyuetribe · 1 merged PR@barats · 1 merged PR@bardiauto · 1 commit@barremian · 1 merged PR@Bas950 · 1 merged PR@bdwyertech · 1 merged PR@bearsh · 1 merged PR@BenAicholtz · 1 merged PR@benjamin-thomas · 1 merged PR@benmccann · 1 merged PR@blacksud0 · 1 merged PR@blinkinglight · 1 merged PR@boreq · 1 merged PR@BradHacker · 1 merged PR@Braincompiler · 1 merged PR@brianetaveras · 1 merged PR@brunoborges · 1 merged PR@bt · 1 merged PR@BuckeyeCoder · 1 merged PR@buddyabaddon · 1 merged PR@c-tonneslan · 1 merged PR@cctv1005s · 1 merged PR@cenan · 1 merged PR@chinenual · 1 merged PR@Chronophylos · 1 merged PR@ckilb · 1 merged PR@cristianrgreco · 1 merged PR@cto-mindset · 1 merged PR@cybertramp · 1 merged PR@damiensedgwick · 1 merged PR@danawoodman · 1 merged PR@darkb0ts · 1 merged PR@db47h · 1 merged PR@deining · 1 merged PR@deltajoe · 1 merged PR@dennypenta · 1 merged PR@derhasi · 1 merged PR@dev-kas · 1 merged PR@diogox · 1 merged PR@diorodrigu · 1 merged PR@dominictwlee · 1 merged PR@doracpphp · 1 merged PR@drc5521 · 1 merged PR@dzmitryi-h · 1 merged PR@edai-git · 1 merged PR@edwargix · 1 merged PR@eft · 1 merged PR@ekkohnet · 1 merged PR@elie-g · 1 merged PR@erdemkosk · 1 merged PR@eric-tech01 · 1 merged PR@FalcoG · 1 merged PR@fallendusk · 1 merged PR@fcying · 1 merged PR@fengfengzhidao · 1 merged PR@fengweiqiang · 1 merged PR@FerroO2000 · 1 merged PR@fholmqvist · 1 merged PR@fieu · 1 merged PR@figuerom16 · 1 merged PR@firelizzard18 · 1 merged PR@flin7 · 1 merged PR@flofreud · 1 merged PR@fred21O4 · 1 commit@gardc · 1 merged PR@GargantuaX · 1 merged PR@gelleson · 1 merged PR@giopalma · 1 merged PR@Gornius · 1 merged PR@Grantmartin2002 · 1 merged PR@greymoth-jp · 1 merged PR@Gurkengewuerz · 1 merged PR@gursheyss · 1 merged PR@hidewrong · 1 merged PR@Hudolus · 1 merged PR@i7tsov · 1 merged PR@IAFEnvoy · 1 merged PR@iberflow · 1 merged PR@id88 · 1 merged PR@igogrek · 1 merged PR@ironpark · 1 merged PR@JackDoan · 1 merged PR@jakubpeleska · 1 merged PR@jangler · 1 merged PR@Jarek-SRT · 1 merged PR@jasikpark · 1 merged PR@jaypipes · 1 merged PR@jicg · 1 merged PR@johannes-luebke · 1 merged PR@johnmaguire · 1 merged PR@johnmccabe · 1 merged PR@josexy · 1 merged PR@joshdrake · 1 merged PR@joshhardy · 1 changelog credit@joshm998 · 1 merged PR@joshuapare · 1 merged PR@Juneezee · 1 merged PR@justinmoon · 1 merged PR@k1nho · 1 merged PR@kairo913 · 1 merged PR@Khady · 1 merged PR@kmuchmore · 1 merged PR@kodflow · 1 merged PR@kodumulo · 1 merged PR@kraney · 1 merged PR@Krzysztofz01 · 1 changelog credit@ktsivkov · 1 merged PR@kyoto44 · 1 merged PR@lanzafame · 1 commit@LazyClicks · 1 merged PR@leolee3 · 1 merged PR@levinit · 1 merged PR@lian-yang · 1 merged PR@Licoy · 1 merged PR@Liumingxun · 1 merged PR@liuzi6612 · 1 merged PR@lmb1113 · 1 merged PR@ltcovalt · 1 merged PR@lujihong · 1 changelog credit@lukewatts · 1 merged PR@madflow · 1 merged PR@MagicFun1241 · 1 merged PR@Mahcks · 1 merged PR@Mai-Lapyst · 1 changelog credit@marvinhosea · 1 merged PR@MarvinJWendt · 1 merged PR@mateothegreat · 1 merged PR@matholt · 1 changelog credit@matta · 1 merged PR@mattn · 1 commit@meatherly · 1 merged PR@meeehdi-dev · 1 merged PR@MerIijn · 1 merged PR@mewmew · 1 merged PR@mholt · 1 merged PR@michael-freling · 1 merged PR@miclle · 1 merged PR@Mihara · 1 merged PR@mikeee · 1 merged PR@MikeLINGxZ · 1 merged PR@MikeSchaap · 1 merged PR@MIMBOL22 · 1 merged PR@mJehanno · 1 merged PR@mkwsnyder · 1 merged PR@mmalcek · 1 merged PR@mortenolsrud · 1 merged PR@mr-zlaam · 1 merged PR@msal4 · 1 merged PR@narcilee7 · 1 merged PR@nejos97 · 1 merged PR@Nexus26404 · 1 merged PR@nguyenvanduocit · 1 merged PR@nidib · 1 merged PR@nnashwin · 1 merged PR@noahgorstein · 1 merged PR@northes · 1 merged PR@NullCode1337 · 1 merged PR@occamist · 1 merged PR@ocelotsloth · 1 merged PR@oguz-yilmaz · 1 merged PR@orellazri · 1 merged PR@Orijhins · 1 merged PR@patopesto · 1 merged PR@paulbrickwell · 1 merged PR@Peiratooo · 1 merged PR@pekim · 1 merged PR@pernydev · 1 merged PR@phildrip · 1 merged PR@plutov · 1 merged PR@poisonshell · 1 merged PR@pratikmota · 1 merged PR@qaisjp · 1 merged PR@radish-miyazaki · 1 merged PR@raitonoberu · 1 merged PR@rcalixte · 1 merged PR@redisviewer · 1 merged PR@redraskal · 1 merged PR@Rested · 1 merged PR@riannucci · 1 merged PR@riquenunes · 1 merged PR@rlshukhov · 1 merged PR@RonaldinhoL · 1 merged PR@ronen25 · 1 merged PR@rprtr258 · 1 merged PR@ruhuang2001 · 1 merged PR@rynsf · 1 merged PR@s12chung · 1 merged PR@salman0ansari · 1 merged PR@SametKUM · 1 merged PR@seanmtracey · 1 merged PR@seleborg · 1 merged PR@sgosiaco · 1 merged PR@sharkmu · 1 merged PR@sid-the-sloth1 · 1 merged PR@sinspired · 1 merged PR@Sipaha · 1 merged PR@sithembiso · 1 merged PR@SophieAu · 1 merged PR@sqot0 · 1 merged PR@ssahillppatell · 1 merged PR@stanislav-zeman · 1 merged PR@stankovic98 · 1 merged PR@stefpap · 1 merged PR@SupianIDz · 1 merged PR@TAINCER · 1 merged PR@taisei-86 · 1 merged PR@taiseiotsuka · 1 changelog credit@Taiwofolu · 1 merged PR@te5se · 1 merged PR@TekWizely · 1 merged PR@tilak999 · 1 merged PR@tk103331 · 1 merged PR@tong3jie · 1 merged PR@tongque0 · 1 merged PR@torabian · 1 merged PR@TuffenDuffen · 1 merged PR@tw1nk · 1 merged PR@Twacqwq · 1 merged PR@veeceey · 1 merged PR@venkadeshshiva · 1 merged PR@vffuunnyy · 1 merged PR@Vilsol · 1 merged PR@Vinayak9769 · 1 merged PR@vinhvoit225 · 1 merged PR@vixalie · 1 merged PR@Vovan-VE · 1 merged PR@vxxvvxxv · 1 merged PR@wandercn · 1 merged PR@Watson-Sei · 1 merged PR@wgjtyu · 1 merged PR@williamsjokvist · 1 merged PR@wizzymore · 1 merged PR@Xelus22 · 1 merged PR@xhofe · 1 merged PR@xisuo67 · 1 merged PR@xjh22222228 · 1 changelog credit@XljBear · 1 merged PR@xtrafrancyz · 1 merged PR@xvertile · 1 merged PR@yesgs · 1 merged PR@youngchoan · 1 merged PR@yuseferi · 1 merged PR@Zeiichenfolge · 1 merged PR@zllovesuki · 1 merged PR@zuiwuchang · 1 merged PRBecome a Contributor +Wails Contributors435 contributors · 5,709 commits — thank you!@leaanthony · 541 merged PRs541 merged PRsleaanthony@stffabi · 133 merged PRs133 merged PRsstffabi@fbbdev · 92 changelog credits92 changelog creditsfbbdev@misitebao · 76 merged PRs76 merged PRsmisitebao@atterpac · 59 merged PRs59 merged PRsatterpac@taliesin-ai · 51 merged PRs51 merged PRstaliesin-ai@tmclane · 26 merged PRs26 merged PRs@APshenkin · 23 changelog credits23 changelog credits@bh90210 · 22 merged PRs22 merged PRs@lyimmi · 20 merged PRs20 merged PRs@almas-x · 12 merged PRs@mmghv · 12 merged PRs@popaprozac · 12 merged PRs@ianmjones · 11 merged PRs@IanVS · 10 changelog credits@PylotLight · 9 merged PRs@symball · 9 merged PRs@wayneforrest · 9 merged PRs@OlegGulevskyy · 8 merged PRs@agilgur5 · 7 merged PRs@ndianabasi · 7 merged PRs@rh12503 · 7 merged PRs@5aaee9 · 6 changelog credits@acheong08 · 6 changelog credits@ansxuman · 6 merged PRs@Etesam913 · 6 changelog credits@LGiki · 6 changelog credits@marcus-crane · 6 merged PRs@napalu · 6 merged PRs@raguay · 6 merged PRs@sircodemane · 6 merged PRs@abichinger · 5 merged PRs@ATenderholt · 5 merged PRs@jaesung9507 · 5 changelog credits@oSethoum · 5 merged PRs@Snider · 5 merged PRs@yulesxoxo · 5 changelog credits@akhudek · 4 merged PRs@ddmoney420 · 4 merged PRs@dedo1911 · 4 merged PRs@fdidron · 4 merged PRs@haukened · 4 merged PRs@k-muchmore · 4 commits@marktohark · 4 merged PRs@mbaklor · 4 merged PRs@superDingda · 4 merged PRs@xijaja · 4 merged PRs@adalessa · 3 merged PRs@AkshayKalose · 3 merged PRs@AlbinoDrought · 3 merged PRs@BenoitBotton · 3 merged PRs@COD3HUNT3R · 3 merged PRs@copilot-swe-agent · 3 merged PRs@DeltaLaboratory · 3 merged PRs@DiegPS · 3 merged PRs@FrancescoLuzzi · 3 merged PRs@hi019 · 3 merged PRs@joshbuddy · 3 changelog credits@JulioDRF · 3 changelog credits@Kron · 3 changelog credits@overlordtm · 3 changelog credits@pbnjay · 3 merged PRs@robin-samuel · 3 changelog credits@samstanier · 3 changelog credits@scottopell · 3 changelog credits@smac89 · 3 merged PRs@TheFranconianCoder · 3 merged PRs@Tolfx · 3 changelog credits@triadmoko · 3 changelog credits@TwoNull · 3 merged PRs@Vaelatern · 3 merged PRs@ValentinTrinque · 3 merged PRs@wimaha · 3 merged PRs@aangelisc · 2 merged PRs@aayush420 · 2 merged PRs@AbdelhadiSeddar · 2 merged PRs@abtin · 2 changelog credits@achhabra2 · 2 merged PRs@Alex6357 · 2 merged PRs@andrewbytecoder · 2 merged PRs@andywenk · 2 changelog credits@antimatter96 · 2 merged PRs@arifali123 · 2 changelog credits@artooro · 2 merged PRs@avengerweb · 2 merged PRs@Bare7a · 2 merged PRs@BillBuilt · 2 merged PRs@binyamin · 2 changelog credits@biuaxia · 2 merged PRs@Bronya0 · 2 merged PRs@bruxaodev · 2 merged PRs@chenxiao1990 · 2 changelog credits@cuigege · 2 changelog credits@daodao97 · 2 changelog credits@Debdut · 2 changelog credits@duolabmeng6 · 2 merged PRs@edwardbrowncross · 2 changelog credits@fkhadra · 2 merged PRs@Gjergj · 2 merged PRs@gotid · 2 changelog credits@gwynforthewyn · 2 merged PRs@h8gi · 2 changelog credits@hfoxy · 2 merged PRs@hkhere · 2 merged PRs@hotafrika · 2 changelog credits@iamhabbeboy · 2 changelog credits@ilgityildirim · 2 merged PRs@jes0131 · 2 merged PRs@jghiloni · 2 merged PRs@josStorer · 2 merged PRs@Junkher · 2 changelog credits@KiddoV · 2 changelog credits@konez2k · 2 merged PRs@lambdajack · 2 changelog credits@lontten · 2 merged PRs@LukenSkyne · 2 changelog credits@lvyaoting · 2 merged PRs@Maicarons2022 · 2 changelog credits@marcio199226 · 2 merged PRs@matryer · 2 commits@mondy · 2 changelog credits@mrf345 · 2 merged PRs@MyNameIsAres · 2 changelog credits@NanoNik · 2 changelog credits@nerdyslacker · 2 merged PRs@nickisworking · 2 changelog credits@o8x · 2 changelog credits@ParkourLiu · 2 changelog credits@ParvinEyvazov · 2 changelog credits@phoenix147 · 2 merged PRs@pierrejoye · 2 merged PRs@polikow · 2 changelog credits@PPTGamer · 2 merged PRs@prurigro · 2 changelog credits@puneetdixit200 · 2 changelog credits@RALIST · 2 merged PRs@rayshoo · 2 changelog credits@rev42 · 2 changelog credits@riadafridishibly · 2 changelog credits@rnice01 · 2 changelog credits@rxliuli · 2 merged PRs@RyoTagami · 2 changelog credits@SamHennessy · 2 changelog credits@SheetJSDev · 2 changelog credits@shinshin86 · 2 merged PRs@sidwebworks · 2 changelog credits@skamensky · 2 changelog credits@stavros-k · 2 merged PRs@stendler · 2 merged PRs@Taiterbase · 2 changelog credits@takuyahara · 2 merged PRs@TechplexEngineer · 2 changelog credits@testwill · 2 merged PRs@TheGB0077 · 2 merged PRs@thiennguyen93 · 2 changelog credits@thomas-senechal · 2 merged PRs@timkippdev · 2 merged PRs@tiny-craft · 2 merged PRs@tomanagle · 2 changelog credits@tuuzed · 2 merged PRs@Wakeful-Cloud · 2 merged PRs@willdot · 2 merged PRs@windom · 2 merged PRs@wucm667 · 2 changelog credits@wux1an · 2 changelog credits@x-haose · 2 changelog credits@yz4230 · 2 changelog credits@zandercodes · 2 changelog credits@0x3st3 · 1 merged PR@562589540 · 1 merged PR@aalsuwaidi · 1 merged PR@actions-user · 1 commit@AkagiYui · 1 merged PR@AkimioJR · 1 merged PR@albert-sun · 1 merged PR@alexmat · 1 merged PR@AlienRecall · 1 merged PR@Aliuyanfeng · 1 merged PR@Alpa-1 · 1 changelog credit@amaury-tobias · 1 merged PR@aminya · 1 merged PR@AnalogJ · 3 commits@apzuk3 · 1 merged PR@aranggitoar · 1 merged PR@aschey · 1 merged PR@ayatkyo · 1 changelog credit@azamara · 1 merged PR@Baiyuetribe · 1 merged PR@barats · 1 merged PR@bardiauto · 1 commit@barremian · 1 merged PR@Bas950 · 1 merged PR@bdwyertech · 1 merged PR@bearsh · 1 merged PR@BenAicholtz · 1 merged PR@benjamin-thomas · 1 merged PR@benmccann · 1 merged PR@blacksud0 · 1 merged PR@blinkinglight · 1 merged PR@boreq · 1 merged PR@BradHacker · 1 merged PR@Braincompiler · 1 merged PR@brianetaveras · 1 merged PR@brunoborges · 1 merged PR@bt · 1 merged PR@BuckeyeCoder · 1 merged PR@buddyabaddon · 1 merged PR@c-tonneslan · 1 merged PR@cctv1005s · 1 merged PR@cenan · 1 merged PR@chinenual · 1 merged PR@Chronophylos · 1 merged PR@ckilb · 1 merged PR@cristianrgreco · 1 merged PR@cto-mindset · 1 merged PR@cybertramp · 1 merged PR@damiensedgwick · 1 merged PR@danawoodman · 1 merged PR@darkb0ts · 1 merged PR@db47h · 1 merged PR@deining · 1 merged PR@deltajoe · 1 merged PR@dennypenta · 1 merged PR@derhasi · 1 merged PR@dev-kas · 1 merged PR@diogox · 1 merged PR@diorodrigu · 1 merged PR@dominictwlee · 1 merged PR@doracpphp · 1 merged PR@drc5521 · 1 merged PR@dzmitryi-h · 1 merged PR@edai-git · 1 merged PR@edwargix · 1 merged PR@eft · 1 merged PR@ekkohnet · 1 merged PR@eleclin · 1 changelog credit@elie-g · 1 merged PR@erdemkosk · 1 merged PR@eric-tech01 · 1 merged PR@FalcoG · 1 merged PR@fallendusk · 1 merged PR@fcying · 1 merged PR@fengfengzhidao · 1 merged PR@fengweiqiang · 1 merged PR@FerroO2000 · 1 merged PR@fholmqvist · 1 merged PR@fieu · 1 merged PR@figuerom16 · 1 merged PR@firelizzard18 · 1 merged PR@flin7 · 1 merged PR@flofreud · 1 merged PR@fred21O4 · 1 commit@gardc · 1 merged PR@GargantuaX · 1 merged PR@gelleson · 1 merged PR@giopalma · 1 merged PR@Gornius · 1 merged PR@Grantmartin2002 · 1 merged PR@greymoth-jp · 1 merged PR@Gurkengewuerz · 1 merged PR@gursheyss · 1 merged PR@hidewrong · 1 merged PR@Hudolus · 1 merged PR@i7tsov · 1 merged PR@IAFEnvoy · 1 merged PR@iberflow · 1 merged PR@id88 · 1 merged PR@igogrek · 1 merged PR@ironpark · 1 merged PR@JackDoan · 1 merged PR@jakubpeleska · 1 merged PR@jangler · 1 merged PR@Jarek-SRT · 1 merged PR@jasikpark · 1 merged PR@jaypipes · 1 merged PR@jicg · 1 merged PR@johannes-luebke · 1 merged PR@johnmaguire · 1 merged PR@johnmccabe · 1 merged PR@josexy · 1 merged PR@joshdrake · 1 merged PR@joshhardy · 1 changelog credit@joshm998 · 1 merged PR@joshuapare · 1 merged PR@Juneezee · 1 merged PR@justinmoon · 1 merged PR@k1nho · 1 merged PR@kairo913 · 1 merged PR@Khady · 1 merged PR@kmuchmore · 1 merged PR@kodflow · 1 merged PR@kodumulo · 1 merged PR@kraney · 1 merged PR@Krzysztofz01 · 1 changelog credit@ktsivkov · 1 merged PR@kyoto44 · 1 merged PR@lanzafame · 1 commit@LazyClicks · 1 merged PR@leolee3 · 1 merged PR@levinit · 1 merged PR@lian-yang · 1 merged PR@Licoy · 1 merged PR@Liumingxun · 1 merged PR@liuzi6612 · 1 merged PR@lmb1113 · 1 merged PR@ltcovalt · 1 merged PR@lujihong · 1 changelog credit@lukewatts · 1 merged PR@madflow · 1 merged PR@MagicFun1241 · 1 merged PR@Mahcks · 1 merged PR@Mai-Lapyst · 1 changelog credit@marvinhosea · 1 merged PR@MarvinJWendt · 1 merged PR@mateothegreat · 1 merged PR@matholt · 1 changelog credit@matta · 1 merged PR@mattn · 1 commit@meatherly · 1 merged PR@meeehdi-dev · 1 merged PR@MerIijn · 1 merged PR@mewmew · 1 merged PR@mholt · 1 merged PR@michael-freling · 1 merged PR@miclle · 1 merged PR@Mihara · 1 merged PR@mikeee · 1 merged PR@MikeLINGxZ · 1 merged PR@MikeSchaap · 1 merged PR@MIMBOL22 · 1 merged PR@mJehanno · 1 merged PR@mkwsnyder · 1 merged PR@mmalcek · 1 merged PR@mortenolsrud · 1 merged PR@mr-zlaam · 1 merged PR@msal4 · 1 merged PR@narcilee7 · 1 merged PR@nejos97 · 1 merged PR@Nexus26404 · 1 merged PR@nguyenvanduocit · 1 merged PR@nidib · 1 merged PR@nnashwin · 1 merged PR@noahgorstein · 1 merged PR@northes · 1 merged PR@NullCode1337 · 1 merged PR@occamist · 1 merged PR@ocelotsloth · 1 merged PR@oguz-yilmaz · 1 merged PR@orellazri · 1 merged PR@Orijhins · 1 merged PR@patopesto · 1 merged PR@paulbrickwell · 1 merged PR@Peiratooo · 1 merged PR@pekim · 1 merged PR@pernydev · 1 merged PR@phildrip · 1 merged PR@plutov · 1 merged PR@poisonshell · 1 merged PR@pratikmota · 1 merged PR@qaisjp · 1 merged PR@qq540491950 · 1 changelog credit@radish-miyazaki · 1 merged PR@raitonoberu · 1 merged PR@randalmurphal · 1 changelog credit@rcalixte · 1 merged PR@redisviewer · 1 merged PR@redraskal · 1 merged PR@Rested · 1 merged PR@riannucci · 1 merged PR@riquenunes · 1 merged PR@rlshukhov · 1 merged PR@RonaldinhoL · 1 merged PR@ronen25 · 1 merged PR@rprtr258 · 1 merged PR@ruhuang2001 · 1 merged PR@rynsf · 1 merged PR@s12chung · 1 merged PR@salman0ansari · 1 merged PR@SametKUM · 1 merged PR@seanmtracey · 1 merged PR@seleborg · 1 merged PR@sgosiaco · 1 merged PR@sharkmu · 1 merged PR@sid-the-sloth1 · 1 merged PR@sinspired · 1 merged PR@Sipaha · 1 merged PR@sithembiso · 1 merged PR@SophieAu · 1 merged PR@sqot0 · 1 merged PR@ssahillppatell · 1 merged PR@stanislav-zeman · 1 merged PR@stankovic98 · 1 merged PR@stefpap · 1 merged PR@SupianIDz · 1 merged PR@TAINCER · 1 merged PR@taisei-86 · 1 merged PR@taiseiotsuka · 1 changelog credit@Taiwofolu · 1 merged PR@te5se · 1 merged PR@TekWizely · 1 merged PR@tilak999 · 1 merged PR@tk103331 · 1 merged PR@tong3jie · 1 merged PR@tongque0 · 1 merged PR@torabian · 1 merged PR@TuffenDuffen · 1 merged PR@tw1nk · 1 merged PR@Twacqwq · 1 merged PR@veeceey · 1 merged PR@venkadeshshiva · 1 merged PR@vffuunnyy · 1 merged PR@Vilsol · 1 merged PR@Vinayak9769 · 1 merged PR@vinhvoit225 · 1 merged PR@vixalie · 1 merged PR@Vovan-VE · 1 merged PR@vxxvvxxv · 1 merged PR@wandercn · 1 merged PR@Watson-Sei · 1 merged PR@wgjtyu · 1 merged PR@williamsjokvist · 1 merged PR@wizzymore · 1 merged PR@Xelus22 · 1 merged PR@xhofe · 1 merged PR@xisuo67 · 1 merged PR@xjh22222228 · 1 changelog credit@XljBear · 1 merged PR@xtrafrancyz · 1 merged PR@xvertile · 1 merged PR@yesgs · 1 merged PR@youngchoan · 1 merged PR@yuseferi · 1 merged PR@Zeiichenfolge · 1 merged PR@zllovesuki · 1 merged PR@zuiwuchang · 1 merged PRBecome a Contributor diff --git a/website/static/img/sponsors.svg b/website/static/img/sponsors.svg index 396c20d675d..bccbc9cf288 100644 --- a/website/static/img/sponsors.svg +++ b/website/static/img/sponsors.svg @@ -92,4 +92,4 @@ text { .sp:hover .pulse { animation: none; } } -Wails SponsorsThank you to everyone who supports the projectCHAMPIONAstarte Industries (@AstarteIndustries)Astarte IndustriesGOLD SPONSORSCosine (@CosineAI)CosineSILVER SPONSORSJohno Scott (@johnoscott)Johno ScottMichael J. Barton (@mbartisan)Michael J. Bart…Orb (@orbforge)OrbBRONZE SPONSORSArgus Labs (@Argus-Labs)Argus LabsCodeRabbit (@coderabbitai)CodeRabbitKazuya Gokita (@kazoo04)Kazuya GokitaKeygen (@keygen-sh)KeygenCody Bentley (@sircodemane)Cody BentleyCOVERING COSTSKevin Brisson (@kbrisso)Michael Stiles (@mstiles-grs)Sander Steffann (@steffann)BUYING BREAKFASTJohn Wilson (@johnwilson)lewlazarus (@lewlazarus)Michael Belokon (@mibeon)Zach Botterman (@popaprozac)Tai Groot (@taigrr)Tom Wu (@tomyjwu)BUYING COFFEE5aaee9 (@5aaee9)Amolith (@Amolith)SlawomirBuszko (@SlawomirBuszko)Alex Viscreanu (@aexvir)Chris Keenan (@christolo)Eric (@ericfernance)Hari Bhaskaran (@harikb)Iain Collins (@iaincollins)Ian M. Jones (@ianmjones)Sascha Loishandl (@loissascha)Gianluca Onorato (@lucaono13)Masaya Nasu (@nasum)Per Tillisch (@per1234)QuEST Rail LLC (@questrail)Will Cory (@roninjin10)Trea Hauet (@trea)Tyler (@tylertravisty)HELPERS大井さかな (@01397)7csc (@7csc)Hestia (@Hestia-23)Andrew Schreiber (@andrewschreiber)Fabien Brocklesby (@fabienbrocklesby)Glenn Lewis (@gmlewis)JL Griffin (@griffinwebnet)Ian Sinnott (@iansinnott)Johannes Lübke (@johannes-luebke)Joe Constant (@lazyguru)robertg (@rgehrsitz)Xenon007 (@xenon007)Bare7a (@Bare7a)Jens Roggenfelder (@JRpersonal)Sami (@gnomeria)Become a Sponsor +Wails SponsorsThank you to everyone who supports the projectCHAMPIONAstarte Industries (@AstarteIndustries)Astarte IndustriesGOLD SPONSORSCosine (@CosineAI)CosineSILVER SPONSORSJohno Scott (@johnoscott)Johno ScottMichael J. Barton (@mbartisan)Michael J. Bart…Orb (@orbforge)OrbBRONZE SPONSORSArgus Labs (@Argus-Labs)Argus LabsCodeRabbit (@coderabbitai)CodeRabbitKazuya Gokita (@kazoo04)Kazuya GokitaKeygen (@keygen-sh)KeygenCody Bentley (@sircodemane)Cody BentleyCOVERING COSTSKevin Brisson (@kbrisso)Michael Stiles (@mstiles-grs)Sander Steffann (@steffann)BUYING BREAKFASTJohn Wilson (@johnwilson)lewlazarus (@lewlazarus)Michael Belokon (@mibeon)Zach Botterman (@popaprozac)Tai Groot (@taigrr)Tom Wu (@tomyjwu)BUYING COFFEE5aaee9 (@5aaee9)Amolith (@Amolith)SlawomirBuszko (@SlawomirBuszko)Alex Viscreanu (@aexvir)Chris Keenan (@christolo)Eric (@ericfernance)Hari Bhaskaran (@harikb)Iain Collins (@iaincollins)Ian M. Jones (@ianmjones)Sascha Loishandl (@loissascha)Gianluca Onorato (@lucaono13)Masaya Nasu (@nasum)Per Tillisch (@per1234)QuEST Rail LLC (@questrail)Will Cory (@roninjin10)Trea Hauet (@trea)Tyler (@tylertravisty)HELPERS大井さかな (@01397)7csc (@7csc)Hestia (@Hestia-23)Andrew Schreiber (@andrewschreiber)Fabien Brocklesby (@fabienbrocklesby)Glenn Lewis (@gmlewis)JL Griffin (@griffinwebnet)Ian Sinnott (@iansinnott)Johannes Lübke (@johannes-luebke)Joe Constant (@lazyguru)robertg (@rgehrsitz)Xenon007 (@xenon007)Bare7a (@Bare7a)Sami (@gnomeria)Become a Sponsor From 3c1ca712d84f0713710127c0bd3ff8cbf28e4aa7 Mon Sep 17 00:00:00 2001 From: taliesin-ai Date: Mon, 6 Jul 2026 14:37:06 +1000 Subject: [PATCH 03/29] fix(v3/windows): web server (`server` tag) build fails on Windows (#5680) (#5684) fix(v3/windows): add !server build constraint to Windows GUI files (#5680) Building a v3 project with the `server` tag on Windows failed with "redeclared" symbol errors and undefined references in pkg/application. The Windows platform GUI files were tagged `//go:build windows` without `!server`, so under `-tags server` they compiled alongside the headless `*_server.go` files and clashed. The macOS and Linux equivalents already carry `!server`; this brings Windows into line. logger_dev_windows.go is intentionally left as-is: server builds need DefaultLogger, and on Windows that file is its only provider (the generic logger_dev.go is constrained to !windows). NewIconFromResource is moved out of webview_window_windows.go into a new server-safe icon_windows.go so the notifications service still compiles under -tags server on Windows, matching macOS/Linux. Fixes #5680 Co-authored-by: Lea Anthony --- v3/UNRELEASED_CHANGELOG.md | 1 + v3/pkg/application/clipboard_windows.go | 2 +- v3/pkg/application/dialogs_windows.go | 2 +- v3/pkg/application/events_common_windows.go | 2 +- v3/pkg/application/icon_windows.go | 22 +++++++++++++++++++ v3/pkg/application/keys_windows.go | 2 +- v3/pkg/application/mainthread_windows.go | 2 +- v3/pkg/application/menuitem_windows.go | 2 +- v3/pkg/application/popupmenu_windows.go | 2 ++ v3/pkg/application/screen_windows.go | 2 +- v3/pkg/application/single_instance_windows.go | 2 +- v3/pkg/application/systemtray_windows.go | 2 +- v3/pkg/application/webview_window_windows.go | 11 +--------- .../webview_window_windows_devtools.go | 2 +- .../webview_window_windows_production.go | 2 +- 15 files changed, 37 insertions(+), 21 deletions(-) create mode 100644 v3/pkg/application/icon_windows.go diff --git a/v3/UNRELEASED_CHANGELOG.md b/v3/UNRELEASED_CHANGELOG.md index 2ebe4eb0b50..9dbbd19eb8e 100644 --- a/v3/UNRELEASED_CHANGELOG.md +++ b/v3/UNRELEASED_CHANGELOG.md @@ -23,6 +23,7 @@ After processing, the content will be moved to the main changelog and this file ## Fixed +- Fix Windows build failure when using the `server` build tag, caused by Windows GUI files missing the `!server` build constraint that the macOS and Linux equivalents already have (#5680) ## Deprecated diff --git a/v3/pkg/application/clipboard_windows.go b/v3/pkg/application/clipboard_windows.go index 507eac3da3e..e8c76bda423 100644 --- a/v3/pkg/application/clipboard_windows.go +++ b/v3/pkg/application/clipboard_windows.go @@ -1,4 +1,4 @@ -//go:build windows +//go:build windows && !server package application diff --git a/v3/pkg/application/dialogs_windows.go b/v3/pkg/application/dialogs_windows.go index 789c6278ffd..1185117e1f4 100644 --- a/v3/pkg/application/dialogs_windows.go +++ b/v3/pkg/application/dialogs_windows.go @@ -1,4 +1,4 @@ -//go:build windows +//go:build windows && !server package application diff --git a/v3/pkg/application/events_common_windows.go b/v3/pkg/application/events_common_windows.go index f0bcd4d84e8..66db1ba3df4 100644 --- a/v3/pkg/application/events_common_windows.go +++ b/v3/pkg/application/events_common_windows.go @@ -1,4 +1,4 @@ -//go:build windows +//go:build windows && !server package application diff --git a/v3/pkg/application/icon_windows.go b/v3/pkg/application/icon_windows.go new file mode 100644 index 00000000000..e6f17dda2fa --- /dev/null +++ b/v3/pkg/application/icon_windows.go @@ -0,0 +1,22 @@ +//go:build windows + +package application + +import ( + "fmt" + + "github.com/wailsapp/wails/v3/pkg/w32" +) + +// NewIconFromResource loads an icon from an embedded Windows resource. It is +// available in both desktop and server builds so that services which only need +// the icon helper (e.g. notifications) compile under the `server` tag, matching +// the behaviour on macOS and Linux. +func NewIconFromResource(instance w32.HINSTANCE, resId uint16) (w32.HICON, error) { + var err error + var result w32.HICON + if result = w32.LoadIconWithResourceID(instance, resId); result == 0 { + err = fmt.Errorf("cannot load icon from resource with id %v", resId) + } + return result, err +} diff --git a/v3/pkg/application/keys_windows.go b/v3/pkg/application/keys_windows.go index 8011a837dfd..a299e432483 100644 --- a/v3/pkg/application/keys_windows.go +++ b/v3/pkg/application/keys_windows.go @@ -1,4 +1,4 @@ -//go:build windows +//go:build windows && !server package application diff --git a/v3/pkg/application/mainthread_windows.go b/v3/pkg/application/mainthread_windows.go index ddee96339f8..575450a027d 100644 --- a/v3/pkg/application/mainthread_windows.go +++ b/v3/pkg/application/mainthread_windows.go @@ -1,4 +1,4 @@ -//go:build windows +//go:build windows && !server package application diff --git a/v3/pkg/application/menuitem_windows.go b/v3/pkg/application/menuitem_windows.go index c7c6f5f7a36..633c757929e 100644 --- a/v3/pkg/application/menuitem_windows.go +++ b/v3/pkg/application/menuitem_windows.go @@ -1,4 +1,4 @@ -//go:build windows +//go:build windows && !server package application diff --git a/v3/pkg/application/popupmenu_windows.go b/v3/pkg/application/popupmenu_windows.go index 75bd951cae1..4280d6d1f01 100644 --- a/v3/pkg/application/popupmenu_windows.go +++ b/v3/pkg/application/popupmenu_windows.go @@ -1,3 +1,5 @@ +//go:build windows && !server + package application import ( diff --git a/v3/pkg/application/screen_windows.go b/v3/pkg/application/screen_windows.go index 772618d4b97..1f70dd56974 100644 --- a/v3/pkg/application/screen_windows.go +++ b/v3/pkg/application/screen_windows.go @@ -1,4 +1,4 @@ -//go:build windows +//go:build windows && !server package application diff --git a/v3/pkg/application/single_instance_windows.go b/v3/pkg/application/single_instance_windows.go index b92b2749a8e..6940c301c37 100644 --- a/v3/pkg/application/single_instance_windows.go +++ b/v3/pkg/application/single_instance_windows.go @@ -1,4 +1,4 @@ -//go:build windows +//go:build windows && !server package application diff --git a/v3/pkg/application/systemtray_windows.go b/v3/pkg/application/systemtray_windows.go index a692ea42014..695b20c29da 100644 --- a/v3/pkg/application/systemtray_windows.go +++ b/v3/pkg/application/systemtray_windows.go @@ -1,4 +1,4 @@ -//go:build windows +//go:build windows && !server package application diff --git a/v3/pkg/application/webview_window_windows.go b/v3/pkg/application/webview_window_windows.go index d5173253315..90b8e949028 100644 --- a/v3/pkg/application/webview_window_windows.go +++ b/v3/pkg/application/webview_window_windows.go @@ -1,4 +1,4 @@ -//go:build windows +//go:build windows && !server package application @@ -2808,15 +2808,6 @@ func (w *windowsWebviewWindow) disableRedrawWithCallback(callback func()) { } -func NewIconFromResource(instance w32.HINSTANCE, resId uint16) (w32.HICON, error) { - var err error - var result w32.HICON - if result = w32.LoadIconWithResourceID(instance, resId); result == 0 { - err = fmt.Errorf("cannot load icon from resource with id %v", resId) - } - return result, err -} - func (w *windowsWebviewWindow) setMinimiseButtonState(state ButtonState) { switch state { case ButtonDisabled, ButtonHidden: diff --git a/v3/pkg/application/webview_window_windows_devtools.go b/v3/pkg/application/webview_window_windows_devtools.go index 096bda5b556..ba8dba23d8f 100644 --- a/v3/pkg/application/webview_window_windows_devtools.go +++ b/v3/pkg/application/webview_window_windows_devtools.go @@ -1,4 +1,4 @@ -//go:build windows && (!production || devtools) +//go:build windows && !server && (!production || devtools) package application diff --git a/v3/pkg/application/webview_window_windows_production.go b/v3/pkg/application/webview_window_windows_production.go index 4ca89c1ea5d..289a339ded3 100644 --- a/v3/pkg/application/webview_window_windows_production.go +++ b/v3/pkg/application/webview_window_windows_production.go @@ -1,4 +1,4 @@ -//go:build windows && production && !devtools +//go:build windows && !server && production && !devtools package application From 198c9ceb578bb28fab558fb00db73de95d16ac8b Mon Sep 17 00:00:00 2001 From: taliesin-ai Date: Mon, 6 Jul 2026 15:55:38 +1000 Subject: [PATCH 04/29] ci: verify the bundled runtime is built from source, not supplied by PRs (#5759) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ci: treat the bundled runtime as an internal build product The files in v3/internal/assetserver/bundledassets are go:embed'ed into every Wails v3 app, and minified JS cannot be reviewed by eye — a PR supplying its own bundle bytes is a malware vector. - Pin esbuild to 0.28.1 in the runtime Taskfile (npx esbuild@latest made byte-for-byte verification impossible) and expose a public runtime:build:assets task that rebuilds only the embedded bundles. - Add a Verify Runtime Assets check on every PR: when bundledassets or runtime source changed, hermetically rebuild from the PR's source and fail unless the committed bundles match byte-for-byte. Runs with a read-only token and no secrets, and self-skips on unrelated PRs so it can be made a required status check. - Watch bundledassets in publish-npm so any bundle bytes that land on master are overwritten by a trusted source-derived rebuild. - Resync the committed bundles with master's source: rebuilding revealed they were already stale (missing DateFromTime and the mac:WebViewWebContentProcessDidTerminate event present in src/) — exactly the drift this check is meant to catch. * ci: install esbuild via the lockfile instead of npx task runs build:debug and build:production as concurrent deps; two simultaneous 'npx esbuild@0.28.1' invocations race installing into the npx cache on a cold runner and one dies (seen on the JS Tests job). Pin esbuild as an exact devDependency and call the npm-ci-installed binary: one install, no build-time network fetch, and the version now lives in package-lock.json where npm ci enforces it. * Make esbuild tasks self-install deps and share the binary path Review feedback: build:debug/build:production invoked the local esbuild binary but nothing guaranteed node_modules existed, so a bare 'task runtime:build:assets' failed without a prior npm install. Both tasks now dep on install-deps, which gets 'run: once' so the two parallel builds don't race concurrent npm installs. The duplicated binary path moves into an ESBUILD var. --------- Co-authored-by: taliesin-ai --- .github/workflows/publish-npm.yml | 4 + .github/workflows/verify-runtime-assets.yml | 81 +++ .../bundledassets/runtime.debug.js | 13 +- .../assetserver/bundledassets/runtime.js | 2 +- v3/internal/runtime/Taskfile.yaml | 20 +- .../@wailsio/runtime/package-lock.json | 485 ++++++++++++++++++ .../desktop/@wailsio/runtime/package.json | 1 + 7 files changed, 599 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/verify-runtime-assets.yml diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml index b0ab26aa437..e8114fe1a37 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish-npm.yml @@ -3,6 +3,9 @@ on: branches: ['master'] paths: - 'v3/internal/runtime/desktop/@wailsio/runtime/**' + # Self-heal: if bundle bytes ever change on master without a matching + # source change, this rebuild overwrites them with source-derived output. + - 'v3/internal/assetserver/bundledassets/**' - '.github/workflows/publish-npm.yml' workflow_dispatch: @@ -43,6 +46,7 @@ jobs: v3/internal/runtime/desktop/@wailsio/compiled/main.js v3/internal/runtime/desktop/@wailsio/runtime/tsconfig.json v3/internal/runtime/desktop/@wailsio/runtime/src/** + v3/internal/assetserver/bundledassets/** v3/pkg/events/events.txt v3/tasks/events/** diff --git a/.github/workflows/verify-runtime-assets.yml b/.github/workflows/verify-runtime-assets.yml new file mode 100644 index 00000000000..5832a3c6383 --- /dev/null +++ b/.github/workflows/verify-runtime-assets.yml @@ -0,0 +1,81 @@ +name: Verify Runtime Assets + +# The bundled runtime (v3/internal/assetserver/bundledassets) is go:embed'ed +# into every Wails v3 application, and minified JS cannot be reviewed by eye. +# This check treats those files as an internal build product: any PR that +# touches them, or the source they are built from, must contain exactly the +# bytes a clean rebuild of that PR's source produces. Runs with a read-only +# token and no secrets, so building untrusted PR source here is safe. +# +# The job runs on every PR (and self-skips when no runtime paths changed) so +# it can be marked as a required status check without wedging unrelated PRs. + +on: + pull_request: + branches: [master] + +permissions: + contents: read + +concurrency: + group: verify-runtime-assets-${{ github.event.pull_request.number }} + cancel-in-progress: true + +jobs: + verify: + name: Bundled runtime matches source + runs-on: ubuntu-latest + steps: + - name: Checkout PR merge result + uses: actions/checkout@v4 + with: + fetch-depth: 2 + + - name: Detect runtime asset or source changes + id: changed + run: | + # HEAD is the PR merge commit; HEAD^1 is the base branch tip. + if git diff --name-only HEAD^1 HEAD -- \ + 'v3/internal/assetserver/bundledassets' \ + 'v3/internal/runtime' | grep -q .; then + echo "relevant=true" >> "$GITHUB_OUTPUT" + else + echo "relevant=false" >> "$GITHUB_OUTPUT" + echo "No bundled-runtime or runtime-source changes; nothing to verify." + fi + + - name: Use Node.js 22 + if: steps.changed.outputs.relevant == 'true' + uses: actions/setup-node@v4 + with: + node-version: "22" + + - name: Install Task + if: steps.changed.outputs.relevant == 'true' + uses: arduino/setup-task@v2 + with: + version: 3.x + repo-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Install runtime dependencies (lockfile-exact) + if: steps.changed.outputs.relevant == 'true' + working-directory: v3/internal/runtime/desktop/@wailsio/runtime + run: npm ci + + - name: Rebuild bundled runtime from PR source + if: steps.changed.outputs.relevant == 'true' + working-directory: v3 + run: task runtime:build:assets + + - name: Verify committed bundles match the rebuild + if: steps.changed.outputs.relevant == 'true' + run: | + if ! git diff --exit-code -- v3/internal/assetserver/bundledassets; then + echo "::error::Committed bundled runtime does not match a clean rebuild of this PR's source." + echo "::error::Never hand-edit v3/internal/assetserver/bundledassets. To regenerate:" + echo "::error:: cd v3/internal/runtime/desktop/@wailsio/runtime && npm ci" + echo "::error:: cd ../../../.. && task runtime:build:assets # from the v3 directory" + echo "::error::then commit the result." + exit 1 + fi + echo "Bundled runtime matches its source." diff --git a/v3/internal/assetserver/bundledassets/runtime.debug.js b/v3/internal/assetserver/bundledassets/runtime.debug.js index 3b9b9b4918b..95588245fd7 100644 --- a/v3/internal/assetserver/bundledassets/runtime.debug.js +++ b/v3/internal/assetserver/bundledassets/runtime.debug.js @@ -322,6 +322,7 @@ __export(create_exports, { Any: () => Any, Array: () => Array2, ByteSlice: () => ByteSlice, + DateFromTime: () => DateFromTime, Events: () => Events, Map: () => Map2, Nullable: () => Nullable, @@ -387,6 +388,9 @@ function Struct(createField) { return source; }; } +function DateFromTime(source) { + return new Date(source); +} var Events = {}; // desktop/@wailsio/runtime/src/event_types.ts @@ -573,7 +577,8 @@ var Types = Object.freeze({ WindowWillUseStandardFrame: "mac:WindowWillUseStandardFrame", WindowZoomIn: "mac:WindowZoomIn", WindowZoomOut: "mac:WindowZoomOut", - WindowZoomReset: "mac:WindowZoomReset" + WindowZoomReset: "mac:WindowZoomReset", + WebViewWebContentProcessDidTerminate: "mac:WebViewWebContentProcessDidTerminate" }), Linux: Object.freeze({ ApplicationStartup: "linux:ApplicationStartup", @@ -1281,8 +1286,8 @@ var _Window = class _Window { * Gathers information about the drop target element and sends it back to the Go backend. * * @param filenames - An array of file paths (strings) that were dropped. - * @param x - The x-coordinate of the drop event (CSS pixels). - * @param y - The y-coordinate of the drop event (CSS pixels). + * @param x - The x-coordinate of the drop event, in logical (CSS) pixels relative to the webview. + * @param y - The y-coordinate of the drop event, in logical (CSS) pixels relative to the webview. */ HandlePlatformFileDrop(filenames, x, y) { var _a3, _b; @@ -3056,4 +3061,4 @@ export { objectNames, setTransport }; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2luZGV4LnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy93bWwudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2Jyb3dzZXIudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL25hbm9pZC50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvZW52aXJvbm1lbnQudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3J1bnRpbWUudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2RpYWxvZ3MudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2V2ZW50cy50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvbGlzdGVuZXIudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2NyZWF0ZS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvZXZlbnRfdHlwZXMudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3V0aWxzLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy93aW5kb3cudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL2NvbXBpbGVkL21haW4uanMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3N5c3RlbS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY29udGV4dG1lbnUudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2ZsYWdzLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9kcmFnLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9hcHBsaWNhdGlvbi50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY2FsbHMudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2NhbGxhYmxlLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9jYW5jZWxsYWJsZS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY2xpcGJvYXJkLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9zY3JlZW5zLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9pb3MudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2FuZHJvaWQudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3VwZGF0ZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG4vLyBTZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xufVxuXG5pbXBvcnQgXCIuL2NvbnRleHRtZW51LmpzXCI7XG5pbXBvcnQgXCIuL2RyYWcuanNcIjtcblxuLy8gUmUtZXhwb3J0IHB1YmxpYyBBUElcbmltcG9ydCAqIGFzIEFwcGxpY2F0aW9uIGZyb20gXCIuL2FwcGxpY2F0aW9uLmpzXCI7XG5pbXBvcnQgKiBhcyBCcm93c2VyIGZyb20gXCIuL2Jyb3dzZXIuanNcIjtcbmltcG9ydCAqIGFzIENhbGwgZnJvbSBcIi4vY2FsbHMuanNcIjtcbmltcG9ydCAqIGFzIENsaXBib2FyZCBmcm9tIFwiLi9jbGlwYm9hcmQuanNcIjtcbmltcG9ydCAqIGFzIENyZWF0ZSBmcm9tIFwiLi9jcmVhdGUuanNcIjtcbmltcG9ydCAqIGFzIERpYWxvZ3MgZnJvbSBcIi4vZGlhbG9ncy5qc1wiO1xuaW1wb3J0ICogYXMgRXZlbnRzIGZyb20gXCIuL2V2ZW50cy5qc1wiO1xuaW1wb3J0ICogYXMgRmxhZ3MgZnJvbSBcIi4vZmxhZ3MuanNcIjtcbmltcG9ydCAqIGFzIFNjcmVlbnMgZnJvbSBcIi4vc2NyZWVucy5qc1wiO1xuaW1wb3J0ICogYXMgU3lzdGVtIGZyb20gXCIuL3N5c3RlbS5qc1wiO1xuaW1wb3J0ICogYXMgSU9TIGZyb20gXCIuL2lvcy5qc1wiO1xuaW1wb3J0ICogYXMgQW5kcm9pZCBmcm9tIFwiLi9hbmRyb2lkLmpzXCI7XG5pbXBvcnQgKiBhcyBVcGRhdGVyIGZyb20gXCIuL3VwZGF0ZXIuanNcIjtcbmltcG9ydCBXaW5kb3csIHsgaGFuZGxlRHJhZ0VudGVyLCBoYW5kbGVEcmFnTGVhdmUsIGhhbmRsZURyYWdPdmVyIH0gZnJvbSBcIi4vd2luZG93LmpzXCI7XG5pbXBvcnQgKiBhcyBXTUwgZnJvbSBcIi4vd21sLmpzXCI7XG5cbmV4cG9ydCB7XG4gICAgQXBwbGljYXRpb24sXG4gICAgQnJvd3NlcixcbiAgICBDYWxsLFxuICAgIENsaXBib2FyZCxcbiAgICBEaWFsb2dzLFxuICAgIEV2ZW50cyxcbiAgICBGbGFncyxcbiAgICBTY3JlZW5zLFxuICAgIFN5c3RlbSxcbiAgICBJT1MsXG4gICAgQW5kcm9pZCxcbiAgICBVcGRhdGVyLFxuICAgIFdpbmRvdyxcbiAgICBXTUxcbn07XG5cbi8qKlxuICogQW4gaW50ZXJuYWwgdXRpbGl0eSBjb25zdW1lZCBieSB0aGUgYmluZGluZyBnZW5lcmF0b3IuXG4gKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgeyBDcmVhdGUgfTtcblxuZXhwb3J0ICogZnJvbSBcIi4vY2FuY2VsbGFibGUuanNcIjtcblxuLy8gRXhwb3J0IHRyYW5zcG9ydCBpbnRlcmZhY2VzIGFuZCB1dGlsaXRpZXNcbmV4cG9ydCB7XG4gICAgc2V0VHJhbnNwb3J0LFxuICAgIGdldFRyYW5zcG9ydCxcbiAgICB0eXBlIFJ1bnRpbWVUcmFuc3BvcnQsXG4gICAgb2JqZWN0TmFtZXMsXG4gICAgY2xpZW50SWQsXG59IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcblxuaW1wb3J0IHsgY2xpZW50SWQgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbi8vIE5vdGlmeSBiYWNrZW5kXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5pbnZva2UgPSBTeXN0ZW0uaW52b2tlO1xuICAgIHdpbmRvdy5fd2FpbHMuY2xpZW50SWQgPSBjbGllbnRJZDtcbn1cblxuLy8gUmVnaXN0ZXIgcGxhdGZvcm0gaGFuZGxlcnMgKGludGVybmFsIEFQSSlcbi8vIE5vdGU6IFdpbmRvdyBpcyB0aGUgdGhpc1dpbmRvdyBpbnN0YW5jZSAoZGVmYXVsdCBleHBvcnQgZnJvbSB3aW5kb3cudHMpXG4vLyBCaW5kaW5nIGVuc3VyZXMgJ3RoaXMnIGNvcnJlY3RseSByZWZlcnMgdG8gdGhlIGN1cnJlbnQgd2luZG93IGluc3RhbmNlXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVQbGF0Zm9ybUZpbGVEcm9wID0gV2luZG93LkhhbmRsZVBsYXRmb3JtRmlsZURyb3AuYmluZChXaW5kb3cpO1xufVxuXG4vLyBMaW51eC1zcGVjaWZpYyBkcmFnIGhhbmRsZXJzIChHVEsgaW50ZXJjZXB0cyBET00gZHJhZyBldmVudHMpXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnRW50ZXIgPSBoYW5kbGVEcmFnRW50ZXI7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnTGVhdmUgPSBoYW5kbGVEcmFnTGVhdmU7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnT3ZlciA9IGhhbmRsZURyYWdPdmVyO1xufVxuXG5pZiAoaGFzRE9NKSB7XG4gICAgU3lzdGVtLmludm9rZShcIndhaWxzOnJ1bnRpbWU6cmVhZHlcIik7XG59XG5cbi8qKlxuICogTG9hZHMgYSBzY3JpcHQgZnJvbSB0aGUgZ2l2ZW4gVVJMIGlmIGl0IGV4aXN0cy5cbiAqIFVzZXMgSEVBRCByZXF1ZXN0IHRvIGNoZWNrIGV4aXN0ZW5jZSwgdGhlbiBpbmplY3RzIGEgc2NyaXB0IHRhZy5cbiAqIFNpbGVudGx5IGlnbm9yZXMgaWYgdGhlIHNjcmlwdCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZE9wdGlvbmFsU2NyaXB0KHVybDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZldGNoKHVybCwgeyBtZXRob2Q6ICdIRUFEJyB9KVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICAvLyBWZXJpZnkgdGhlIHJlc3BvbnNlIGlzIGFjdHVhbGx5IEphdmFTY3JpcHQgYW5kIG5vdCBhbiBIVE1MIGZhbGxiYWNrXG4gICAgICAgICAgICAgICAgLy8gKGUuZy4gVml0ZSBkZXYgc2VydmVyIHJldHVybnMgaW5kZXguaHRtbCBmb3IgdW5rbm93biByb3V0ZXMpXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSAocmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZS5pbmNsdWRlcygnamF2YXNjcmlwdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHQuc3JjID0gdXJsO1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4ge30pOyAvLyBTaWxlbnRseSBpZ25vcmUgLSBzY3JpcHQgaXMgb3B0aW9uYWxcbn1cblxuLy8gTG9hZCBjdXN0b20uanMgaWYgYXZhaWxhYmxlICh1c2VkIGJ5IHNlcnZlciBtb2RlIGZvciBXZWJTb2NrZXQgZXZlbnRzLCBldGMuKVxuaWYgKGhhc0RPTSkge1xuICAgIGxvYWRPcHRpb25hbFNjcmlwdCgnL3dhaWxzL2N1c3RvbS5qcycpO1xufVxuIiwgIi8qXG4gXyAgICAgX18gICAgIF8gX19cbnwgfCAgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBPcGVuVVJMIH0gZnJvbSBcIi4vYnJvd3Nlci5qc1wiO1xuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tIFwiLi9kaWFsb2dzLmpzXCI7XG5pbXBvcnQgeyBFbWl0IH0gZnJvbSBcIi4vZXZlbnRzLmpzXCI7XG5pbXBvcnQgeyBjYW5BYm9ydExpc3RlbmVycywgd2hlblJlYWR5IH0gZnJvbSBcIi4vdXRpbHMuanNcIjtcbmltcG9ydCBXaW5kb3cgZnJvbSBcIi4vd2luZG93LmpzXCI7XG5cbi8qKlxuICogU2VuZHMgYW4gZXZlbnQgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBhbmQgb3B0aW9uYWwgZGF0YS5cbiAqXG4gKiBAcGFyYW0gZXZlbnROYW1lIC0gLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQgdG8gc2VuZC5cbiAqIEBwYXJhbSBbZGF0YT1udWxsXSAtIC0gT3B0aW9uYWwgZGF0YSB0byBzZW5kIGFsb25nIHdpdGggdGhlIGV2ZW50LlxuICovXG5mdW5jdGlvbiBzZW5kRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIGRhdGE6IGFueSA9IG51bGwpOiB2b2lkIHtcbiAgICBFbWl0KGV2ZW50TmFtZSwgZGF0YSk7XG59XG5cbi8qKlxuICogQ2FsbHMgYSBtZXRob2Qgb24gYSBzcGVjaWZpZWQgd2luZG93LlxuICpcbiAqIEBwYXJhbSB3aW5kb3dOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHdpbmRvdyB0byBjYWxsIHRoZSBtZXRob2Qgb24uXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QgdG8gY2FsbC5cbiAqL1xuZnVuY3Rpb24gY2FsbFdpbmRvd01ldGhvZCh3aW5kb3dOYW1lOiBzdHJpbmcsIG1ldGhvZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRhcmdldFdpbmRvdyA9IFdpbmRvdy5HZXQod2luZG93TmFtZSk7XG4gICAgY29uc3QgbWV0aG9kID0gKHRhcmdldFdpbmRvdyBhcyBhbnkpW21ldGhvZE5hbWVdO1xuXG4gICAgaWYgKHR5cGVvZiBtZXRob2QgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBXaW5kb3cgbWV0aG9kICcke21ldGhvZE5hbWV9JyBub3QgZm91bmRgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIG1ldGhvZC5jYWxsKHRhcmdldFdpbmRvdyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBjYWxsaW5nIHdpbmRvdyBtZXRob2QgJyR7bWV0aG9kTmFtZX0nOiBgLCBlKTtcbiAgICB9XG59XG5cbi8qKlxuICogUmVzcG9uZHMgdG8gYSB0cmlnZ2VyaW5nIGV2ZW50IGJ5IHJ1bm5pbmcgYXBwcm9wcmlhdGUgV01MIGFjdGlvbnMgZm9yIHRoZSBjdXJyZW50IHRhcmdldC5cbiAqL1xuZnVuY3Rpb24gb25XTUxUcmlnZ2VyZWQoZXY6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IGV2LmN1cnJlbnRUYXJnZXQgYXMgRWxlbWVudDtcblxuICAgIGZ1bmN0aW9uIHJ1bkVmZmVjdChjaG9pY2UgPSBcIlllc1wiKSB7XG4gICAgICAgIGlmIChjaG9pY2UgIT09IFwiWWVzXCIpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZXZlbnRUeXBlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3dtbC1ldmVudCcpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXdtbC1ldmVudCcpO1xuICAgICAgICBjb25zdCB0YXJnZXRXaW5kb3cgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLXRhcmdldC13aW5kb3cnKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtdGFyZ2V0LXdpbmRvdycpIHx8IFwiXCI7XG4gICAgICAgIGNvbnN0IHdpbmRvd01ldGhvZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd3bWwtd2luZG93JykgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtd21sLXdpbmRvdycpO1xuICAgICAgICBjb25zdCB1cmwgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLW9wZW51cmwnKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtb3BlbnVybCcpO1xuXG4gICAgICAgIGlmIChldmVudFR5cGUgIT09IG51bGwpXG4gICAgICAgICAgICBzZW5kRXZlbnQoZXZlbnRUeXBlKTtcbiAgICAgICAgaWYgKHdpbmRvd01ldGhvZCAhPT0gbnVsbClcbiAgICAgICAgICAgIGNhbGxXaW5kb3dNZXRob2QodGFyZ2V0V2luZG93LCB3aW5kb3dNZXRob2QpO1xuICAgICAgICBpZiAodXJsICE9PSBudWxsKVxuICAgICAgICAgICAgdm9pZCBPcGVuVVJMKHVybCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlybSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd3bWwtY29uZmlybScpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXdtbC1jb25maXJtJyk7XG5cbiAgICBpZiAoY29uZmlybSkge1xuICAgICAgICBRdWVzdGlvbih7XG4gICAgICAgICAgICBUaXRsZTogXCJDb25maXJtXCIsXG4gICAgICAgICAgICBNZXNzYWdlOiBjb25maXJtLFxuICAgICAgICAgICAgRGV0YWNoZWQ6IGZhbHNlLFxuICAgICAgICAgICAgQnV0dG9uczogW1xuICAgICAgICAgICAgICAgIHsgTGFiZWw6IFwiWWVzXCIgfSxcbiAgICAgICAgICAgICAgICB7IExhYmVsOiBcIk5vXCIsIElzRGVmYXVsdDogdHJ1ZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0pLnRoZW4ocnVuRWZmZWN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBydW5FZmZlY3QoKTtcbiAgICB9XG59XG5cbi8vIFByaXZhdGUgZmllbGQgbmFtZXMuXG5jb25zdCBjb250cm9sbGVyU3ltID0gU3ltYm9sKFwiY29udHJvbGxlclwiKTtcbmNvbnN0IHRyaWdnZXJNYXBTeW0gPSBTeW1ib2woXCJ0cmlnZ2VyTWFwXCIpO1xuY29uc3QgZWxlbWVudENvdW50U3ltID0gU3ltYm9sKFwiZWxlbWVudENvdW50XCIpO1xuXG4vKipcbiAqIEFib3J0Q29udHJvbGxlclJlZ2lzdHJ5IGRvZXMgbm90IGFjdHVhbGx5IHJlbWVtYmVyIGFjdGl2ZSBldmVudCBsaXN0ZW5lcnM6IGluc3RlYWRcbiAqIGl0IHRpZXMgdGhlbSB0byBhbiBBYm9ydFNpZ25hbCBhbmQgdXNlcyBhbiBBYm9ydENvbnRyb2xsZXIgdG8gcmVtb3ZlIHRoZW0gYWxsIGF0IG9uY2UuXG4gKi9cbmNsYXNzIEFib3J0Q29udHJvbGxlclJlZ2lzdHJ5IHtcbiAgICAvLyBQcml2YXRlIGZpZWxkcy5cbiAgICBbY29udHJvbGxlclN5bV06IEFib3J0Q29udHJvbGxlcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzW2NvbnRyb2xsZXJTeW1dID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gb3B0aW9ucyBvYmplY3QgZm9yIGFkZEV2ZW50TGlzdGVuZXIgdGhhdCB0aWVzIHRoZSBsaXN0ZW5lclxuICAgICAqIHRvIHRoZSBBYm9ydFNpZ25hbCBmcm9tIHRoZSBjdXJyZW50IEFib3J0Q29udHJvbGxlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbGVtZW50IC0gQW4gSFRNTCBlbGVtZW50XG4gICAgICogQHBhcmFtIHRyaWdnZXJzIC0gVGhlIGxpc3Qgb2YgYWN0aXZlIFdNTCB0cmlnZ2VyIGV2ZW50cyBmb3IgdGhlIHNwZWNpZmllZCBlbGVtZW50c1xuICAgICAqL1xuICAgIHNldChlbGVtZW50OiBFbGVtZW50LCB0cmlnZ2Vyczogc3RyaW5nW10pOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB7IHNpZ25hbDogdGhpc1tjb250cm9sbGVyU3ltXS5zaWduYWwgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCByZWdpc3RlcmVkIGV2ZW50IGxpc3RlbmVycyBhbmQgcmVzZXRzIHRoZSByZWdpc3RyeS5cbiAgICAgKi9cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpc1tjb250cm9sbGVyU3ltXS5hYm9ydCgpO1xuICAgICAgICB0aGlzW2NvbnRyb2xsZXJTeW1dID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBXZWFrTWFwUmVnaXN0cnkgbWFwcyBhY3RpdmUgdHJpZ2dlciBldmVudHMgdG8gZWFjaCBET00gZWxlbWVudCB0aHJvdWdoIGEgV2Vha01hcC5cbiAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBtYXBwaW5nIHJlbWFpbnMgcHJpdmF0ZSB0byB0aGlzIG1vZHVsZSwgd2hpbGUgc3RpbGwgYWxsb3dpbmcgZ2FyYmFnZVxuICogY29sbGVjdGlvbiBvZiB0aGUgaW52b2x2ZWQgZWxlbWVudHMuXG4gKi9cbmNsYXNzIFdlYWtNYXBSZWdpc3RyeSB7XG4gICAgLyoqIFN0b3JlcyB0aGUgY3VycmVudCBlbGVtZW50LXRvLXRyaWdnZXIgbWFwcGluZy4gKi9cbiAgICBbdHJpZ2dlck1hcFN5bV06IFdlYWtNYXA8RWxlbWVudCwgc3RyaW5nW10+O1xuICAgIC8qKiBDb3VudHMgdGhlIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIGFjdGl2ZSBXTUwgdHJpZ2dlcnMuICovXG4gICAgW2VsZW1lbnRDb3VudFN5bV06IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzW3RyaWdnZXJNYXBTeW1dID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgICAgdGhpc1tlbGVtZW50Q291bnRTeW1dID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGFjdGl2ZSB0cmlnZ2VycyBmb3IgdGhlIHNwZWNpZmllZCBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIGVsZW1lbnQgLSBBbiBIVE1MIGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gdHJpZ2dlcnMgLSBUaGUgbGlzdCBvZiBhY3RpdmUgV01MIHRyaWdnZXIgZXZlbnRzIGZvciB0aGUgc3BlY2lmaWVkIGVsZW1lbnRcbiAgICAgKi9cbiAgICBzZXQoZWxlbWVudDogRWxlbWVudCwgdHJpZ2dlcnM6IHN0cmluZ1tdKTogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMge1xuICAgICAgICBpZiAoIXRoaXNbdHJpZ2dlck1hcFN5bV0uaGFzKGVsZW1lbnQpKSB7IHRoaXNbZWxlbWVudENvdW50U3ltXSsrOyB9XG4gICAgICAgIHRoaXNbdHJpZ2dlck1hcFN5bV0uc2V0KGVsZW1lbnQsIHRyaWdnZXJzKTtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIHJlZ2lzdGVyZWQgZXZlbnQgbGlzdGVuZXJzLlxuICAgICAqL1xuICAgIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpc1tlbGVtZW50Q291bnRTeW1dIDw9IDApXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgnKicpKSB7XG4gICAgICAgICAgICBpZiAodGhpc1tlbGVtZW50Q291bnRTeW1dIDw9IDApXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJzID0gdGhpc1t0cmlnZ2VyTWFwU3ltXS5nZXQoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAodHJpZ2dlcnMgIT0gbnVsbCkgeyB0aGlzW2VsZW1lbnRDb3VudFN5bV0tLTsgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMgfHwgW10pXG4gICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHRyaWdnZXIsIG9uV01MVHJpZ2dlcmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXNbdHJpZ2dlck1hcFN5bV0gPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICB0aGlzW2VsZW1lbnRDb3VudFN5bV0gPSAwO1xuICAgIH1cbn1cblxuY29uc3QgdHJpZ2dlclJlZ2lzdHJ5ID0gY2FuQWJvcnRMaXN0ZW5lcnMoKSA/IG5ldyBBYm9ydENvbnRyb2xsZXJSZWdpc3RyeSgpIDogbmV3IFdlYWtNYXBSZWdpc3RyeSgpO1xuXG4vKipcbiAqIEFkZHMgZXZlbnQgbGlzdGVuZXJzIHRvIHRoZSBzcGVjaWZpZWQgZWxlbWVudC5cbiAqL1xuZnVuY3Rpb24gYWRkV01MTGlzdGVuZXJzKGVsZW1lbnQ6IEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0cmlnZ2VyUmVnRXhwID0gL1xcUysvZztcbiAgICBjb25zdCB0cmlnZ2VyQXR0ciA9IChlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLXRyaWdnZXInKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtdHJpZ2dlcicpIHx8IFwiY2xpY2tcIik7XG4gICAgY29uc3QgdHJpZ2dlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBsZXQgbWF0Y2g7XG4gICAgd2hpbGUgKChtYXRjaCA9IHRyaWdnZXJSZWdFeHAuZXhlYyh0cmlnZ2VyQXR0cikpICE9PSBudWxsKVxuICAgICAgICB0cmlnZ2Vycy5wdXNoKG1hdGNoWzBdKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB0cmlnZ2VyUmVnaXN0cnkuc2V0KGVsZW1lbnQsIHRyaWdnZXJzKTtcbiAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMpXG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0cmlnZ2VyLCBvbldNTFRyaWdnZXJlZCwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogU2NoZWR1bGVzIGFuIGF1dG9tYXRpYyByZWxvYWQgb2YgV01MIHRvIGJlIHBlcmZvcm1lZCBhcyBzb29uIGFzIHRoZSBkb2N1bWVudCBpcyBmdWxseSBsb2FkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbmFibGUoKTogdm9pZCB7XG4gICAgd2hlblJlYWR5KFJlbG9hZCk7XG59XG5cbi8qKlxuICogUmVsb2FkcyB0aGUgV01MIHBhZ2UgYnkgYWRkaW5nIG5lY2Vzc2FyeSBldmVudCBsaXN0ZW5lcnMgYW5kIGJyb3dzZXIgbGlzdGVuZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gUmVsb2FkKCk6IHZvaWQge1xuICAgIHRyaWdnZXJSZWdpc3RyeS5yZXNldCgpO1xuICAgIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgnW3dtbC1ldmVudF0sIFt3bWwtd2luZG93XSwgW3dtbC1vcGVudXJsXSwgW2RhdGEtd21sLWV2ZW50XSwgW2RhdGEtd21sLXdpbmRvd10sIFtkYXRhLXdtbC1vcGVudXJsXScpLmZvckVhY2goYWRkV01MTGlzdGVuZXJzKTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHsgbmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXMgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkJyb3dzZXIpO1xuXG5jb25zdCBCcm93c2VyT3BlblVSTCA9IDA7XG5cbi8qKlxuICogT3BlbiBhIGJyb3dzZXIgd2luZG93IHRvIHRoZSBnaXZlbiBVUkwuXG4gKlxuICogQHBhcmFtIHVybCAtIFRoZSBVUkwgdG8gb3BlblxuICovXG5leHBvcnQgZnVuY3Rpb24gT3BlblVSTCh1cmw6IHN0cmluZyB8IFVSTCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBjYWxsKEJyb3dzZXJPcGVuVVJMLCB7dXJsOiB1cmwudG9TdHJpbmcoKX0pO1xufVxuIiwgIi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2FpL25hbm9pZFxuXG4vLyBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbi8vXG4vLyBDb3B5cmlnaHQgMjAxNyBBbmRyZXkgU2l0bmlrIDxhbmRyZXlAc2l0bmlrLnJ1PlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2Zcbi8vIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW5cbi8vIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG9cbi8vIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mXG4vLyB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sXG4vLyAgICAgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gICAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuLy8gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyAgICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1Ncbi8vIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUlxuLy8gQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSXG4vLyBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTlxuLy8gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gVGhpcyBhbHBoYWJldCB1c2VzIGBBLVphLXowLTlfLWAgc3ltYm9scy5cbi8vIFRoZSBvcmRlciBvZiBjaGFyYWN0ZXJzIGlzIG9wdGltaXplZCBmb3IgYmV0dGVyIGd6aXAgYW5kIGJyb3RsaSBjb21wcmVzc2lvbi5cbi8vIFJlZmVyZW5jZXMgdG8gdGhlIHNhbWUgZmlsZSAod29ya3MgYm90aCBmb3IgZ3ppcCBhbmQgYnJvdGxpKTpcbi8vIGAndXNlYCwgYGFuZG9tYCwgYW5kIGByaWN0J2Bcbi8vIFJlZmVyZW5jZXMgdG8gdGhlIGJyb3RsaSBkZWZhdWx0IGRpY3Rpb25hcnk6XG4vLyBgLTI2VGAsIGAxOTgzYCwgYDQwcHhgLCBgNzVweGAsIGBidXNoYCwgYGphY2tgLCBgbWluZGAsIGB2ZXJ5YCwgYW5kIGB3b2xmYFxuY29uc3QgdXJsQWxwaGFiZXQgPVxuICAgICd1c2VhbmRvbS0yNlQxOTgzNDBQWDc1cHhKQUNLVkVSWU1JTkRCVVNIV09MRl9HUVpiZmdoamtscXZ3eXpyaWN0J1xuXG5leHBvcnQgZnVuY3Rpb24gbmFub2lkKHNpemU6IG51bWJlciA9IDIxKTogc3RyaW5nIHtcbiAgICBsZXQgaWQgPSAnJ1xuICAgIC8vIEEgY29tcGFjdCBhbHRlcm5hdGl2ZSBmb3IgYGZvciAodmFyIGkgPSAwOyBpIDwgc3RlcDsgaSsrKWAuXG4gICAgbGV0IGkgPSBzaXplIHwgMFxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgLy8gYHwgMGAgaXMgbW9yZSBjb21wYWN0IGFuZCBmYXN0ZXIgdGhhbiBgTWF0aC5mbG9vcigpYC5cbiAgICAgICAgaWQgKz0gdXJsQWxwaGFiZXRbKE1hdGgucmFuZG9tKCkgKiA2NCkgfCAwXVxuICAgIH1cbiAgICByZXR1cm4gaWRcbn1cbiIsICIvKlxuIF8gICAgIF9fICAgICBfIF9fXG58IHwgIC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLyoqXG4gKiBUcnVlIHdoZW4gcnVubmluZyBpbnNpZGUgYSBicm93c2VyL3dlYnZpZXcgd2l0aCBhIERPTSBhdmFpbGFibGUuXG4gKiBGYWxzZSB1bmRlciBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgKGUuZy4gYG5leHQgYnVpbGRgIHByZXJlbmRlcmluZyksXG4gKiB3aGVyZSBhcHBsaWNhdGlvbiBjb2RlIG1heSBpbXBvcnQgdGhlIHJ1bnRpbWUgbW9kdWxlIGV2ZW4gdGhvdWdoIG5vXG4gKiBXYWlscyBBUElzIGNhbiBhY3R1YWxseSBiZSB1c2VkICgjNDY3OSkuIE1vZHVsZXMgbXVzdCBub3QgdG91Y2hcbiAqIGB3aW5kb3dgL2Bkb2N1bWVudGAgYXQgaW1wb3J0IHRpbWUgZXhjZXB0IGJlaGluZCB0aGlzIGd1YXJkLlxuICovXG5leHBvcnQgY29uc3QgaGFzRE9NID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCI7XG4iLCAiLypcbiBfICAgICBfXyAgICAgXyBfX1xufCB8ICAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gXCIuL25hbm9pZC5qc1wiO1xuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuLy8gUmVzb2x2ZWQgbGF6aWx5OiB3aW5kb3cgZG9lcyBub3QgZXhpc3Qgd2hlbiB0aGUgbW9kdWxlIGlzIGltcG9ydGVkIGR1cmluZ1xuLy8gc2VydmVyLXNpZGUgcmVuZGVyaW5nICgjNDY3OSksIGFuZCBub3RoaW5nIGNhbiBjYWxsIHRoZSBydW50aW1lIHRoZXJlLlxuZnVuY3Rpb24gcnVudGltZVVSTCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgXCIvd2FpbHMvcnVudGltZVwiO1xufVxuXG4vLyBTdGF5IHVuZGVyIFdlYlZpZXcyJ3MgfjJNQiByZXF1ZXN0IGJvZHkgYnVmZmVyaW5nIGxpbWl0IGluIFdlYlJlc291cmNlUmVxdWVzdGVkLlxuY29uc3QgQ0hVTktfVEhSRVNIT0xEID0gNTEyICogMTAyNDtcblxuLy8gUmUtZXhwb3J0IG5hbm9pZCBmb3IgY3VzdG9tIHRyYW5zcG9ydCBpbXBsZW1lbnRhdGlvbnNcbmV4cG9ydCB7IG5hbm9pZCB9O1xuXG4vLyBPYmplY3QgTmFtZXNcbmV4cG9ydCBjb25zdCBvYmplY3ROYW1lcyA9IE9iamVjdC5mcmVlemUoe1xuICAgIENhbGw6IDAsXG4gICAgQ2xpcGJvYXJkOiAxLFxuICAgIEFwcGxpY2F0aW9uOiAyLFxuICAgIEV2ZW50czogMyxcbiAgICBDb250ZXh0TWVudTogNCxcbiAgICBEaWFsb2c6IDUsXG4gICAgV2luZG93OiA2LFxuICAgIFNjcmVlbnM6IDcsXG4gICAgU3lzdGVtOiA4LFxuICAgIEJyb3dzZXI6IDksXG4gICAgQ2FuY2VsQ2FsbDogMTAsXG4gICAgSU9TOiAxMSxcbiAgICBBbmRyb2lkOiAxMixcbn0pO1xuZXhwb3J0IGxldCBjbGllbnRJZCA9IG5hbm9pZCgpO1xuXG4vKipcbiAqIFJ1bnRpbWVUcmFuc3BvcnQgZGVmaW5lcyB0aGUgaW50ZXJmYWNlIGZvciBjdXN0b20gSVBDIHRyYW5zcG9ydCBpbXBsZW1lbnRhdGlvbnMuXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdG8gdXNlIFdlYlNvY2tldHMsIGN1c3RvbSBwcm90b2NvbHMsIG9yIGFueSBvdGhlclxuICogdHJhbnNwb3J0IG1lY2hhbmlzbSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IEhUVFAgZmV0Y2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVudGltZVRyYW5zcG9ydCB7XG4gICAgLyoqXG4gICAgICogU2VuZCBhIHJ1bnRpbWUgY2FsbCBhbmQgcmV0dXJuIHRoZSByZXNwb25zZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvYmplY3RJRCAtIFRoZSBXYWlscyBvYmplY3QgSUQgKDA9Q2FsbCwgMT1DbGlwYm9hcmQsIGV0Yy4pXG4gICAgICogQHBhcmFtIG1ldGhvZCAtIFRoZSBtZXRob2QgSUQgdG8gY2FsbFxuICAgICAqIEBwYXJhbSB3aW5kb3dOYW1lIC0gT3B0aW9uYWwgd2luZG93IG5hbWVcbiAgICAgKiBAcGFyYW0gYXJncyAtIEFyZ3VtZW50cyB0byBwYXNzICh3aWxsIGJlIEpTT04gc3RyaW5naWZpZWQgaWYgcHJlc2VudClcbiAgICAgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgcmVzcG9uc2UgZGF0YVxuICAgICAqL1xuICAgIGNhbGwob2JqZWN0SUQ6IG51bWJlciwgbWV0aG9kOiBudW1iZXIsIHdpbmRvd05hbWU6IHN0cmluZywgYXJnczogYW55KTogUHJvbWlzZTxhbnk+O1xufVxuXG4vKipcbiAqIEN1c3RvbSB0cmFuc3BvcnQgaW1wbGVtZW50YXRpb24gKGNhbiBiZSBzZXQgYnkgdXNlcilcbiAqL1xubGV0IGN1c3RvbVRyYW5zcG9ydDogUnVudGltZVRyYW5zcG9ydCB8IG51bGwgPSBudWxsO1xuXG4vKipcbiAqIFNldCBhIGN1c3RvbSB0cmFuc3BvcnQgZm9yIGFsbCBXYWlscyBydW50aW1lIGNhbGxzLlxuICogVGhpcyBhbGxvd3MgeW91IHRvIHJlcGxhY2UgdGhlIGRlZmF1bHQgSFRUUCBmZXRjaCB0cmFuc3BvcnQgd2l0aFxuICogV2ViU29ja2V0cywgY3VzdG9tIHByb3RvY29scywgb3IgYW55IG90aGVyIG1lY2hhbmlzbS5cbiAqXG4gKiBAcGFyYW0gdHJhbnNwb3J0IC0gWW91ciBjdXN0b20gdHJhbnNwb3J0IGltcGxlbWVudGF0aW9uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IHNldFRyYW5zcG9ydCB9IGZyb20gJy93YWlscy9ydW50aW1lLmpzJztcbiAqXG4gKiBjb25zdCB3c1RyYW5zcG9ydCA9IHtcbiAqICAgY2FsbDogYXN5bmMgKG9iamVjdElELCBtZXRob2QsIHdpbmRvd05hbWUsIGFyZ3MpID0+IHtcbiAqICAgICAvLyBZb3VyIFdlYlNvY2tldCBpbXBsZW1lbnRhdGlvblxuICogICB9XG4gKiB9O1xuICpcbiAqIHNldFRyYW5zcG9ydCh3c1RyYW5zcG9ydCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFRyYW5zcG9ydCh0cmFuc3BvcnQ6IFJ1bnRpbWVUcmFuc3BvcnQgfCBudWxsKTogdm9pZCB7XG4gICAgY3VzdG9tVHJhbnNwb3J0ID0gdHJhbnNwb3J0O1xufVxuXG4vKipcbiAqIEdldCB0aGUgY3VycmVudCB0cmFuc3BvcnQgKHVzZWZ1bCBmb3IgZXh0ZW5kaW5nL3dyYXBwaW5nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNwb3J0KCk6IFJ1bnRpbWVUcmFuc3BvcnQgfCBudWxsIHtcbiAgICByZXR1cm4gY3VzdG9tVHJhbnNwb3J0O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgcnVudGltZSBjYWxsZXIgd2l0aCBzcGVjaWZpZWQgSUQuXG4gKlxuICogQHBhcmFtIG9iamVjdCAtIFRoZSBvYmplY3QgdG8gaW52b2tlIHRoZSBtZXRob2Qgb24uXG4gKiBAcGFyYW0gd2luZG93TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3aW5kb3cuXG4gKiBAcmV0dXJuIFRoZSBuZXcgcnVudGltZSBjYWxsZXIgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdDogbnVtYmVyLCB3aW5kb3dOYW1lOiBzdHJpbmcgPSAnJykge1xuICAgIHJldHVybiBmdW5jdGlvbiAobWV0aG9kOiBudW1iZXIsIGFyZ3M6IGFueSA9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJ1bnRpbWVDYWxsV2l0aElEKG9iamVjdCwgbWV0aG9kLCB3aW5kb3dOYW1lLCBhcmdzKTtcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBydW50aW1lQ2FsbFdpdGhJRChvYmplY3RJRDogbnVtYmVyLCBtZXRob2Q6IG51bWJlciwgd2luZG93TmFtZTogc3RyaW5nLCBhcmdzOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIC8vIFVzZSBjdXN0b20gdHJhbnNwb3J0IGlmIGF2YWlsYWJsZVxuICAgIGlmIChjdXN0b21UcmFuc3BvcnQpIHtcbiAgICAgICAgcmV0dXJuIGN1c3RvbVRyYW5zcG9ydC5jYWxsKG9iamVjdElELCBtZXRob2QsIHdpbmRvd05hbWUsIGFyZ3MpO1xuICAgIH1cblxuICAgIC8vIERlZmF1bHQgSFRUUCBmZXRjaCB0cmFuc3BvcnRcbiAgICBsZXQgdXJsID0gbmV3IFVSTChydW50aW1lVVJMKCkpO1xuXG4gICAgbGV0IGJvZHk6IHsgb2JqZWN0OiBudW1iZXI7IG1ldGhvZDogbnVtYmVyLCBhcmdzPzogYW55IH0gPSB7XG4gICAgICBvYmplY3Q6IG9iamVjdElELFxuICAgICAgbWV0aG9kXG4gICAgfVxuICAgIGlmIChhcmdzICE9PSBudWxsICYmIGFyZ3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYm9keS5hcmdzID0gYXJncztcbiAgICB9XG5cbiAgICBsZXQgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgW1wieC13YWlscy1jbGllbnQtaWRcIl06IGNsaWVudElkLFxuICAgICAgICBbXCJDb250ZW50LVR5cGVcIl06IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgfVxuICAgIGlmICh3aW5kb3dOYW1lKSB7XG4gICAgICAgIGhlYWRlcnNbXCJ4LXdhaWxzLXdpbmRvdy1uYW1lXCJdID0gd2luZG93TmFtZTtcbiAgICB9XG5cbiAgICBjb25zdCBib2R5U3RyID0gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG4gICAgbGV0IHJlc3BvbnNlOiBSZXNwb25zZTtcbiAgICBpZiAoYm9keVN0ci5sZW5ndGggPiBDSFVOS19USFJFU0hPTEQpIHtcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCBzZW5kQ2h1bmtlZCh1cmwsIGhlYWRlcnMsIGJvZHlTdHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7IG1ldGhvZDogJ1BPU1QnLCBoZWFkZXJzLCBib2R5OiBib2R5U3RyIH0pO1xuICAgIH1cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihhd2FpdCByZXNwb25zZS50ZXh0KCkpO1xuICAgIH1cblxuICAgIGlmICgocmVzcG9uc2UuaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIik/LmluZGV4T2YoXCJhcHBsaWNhdGlvbi9qc29uXCIpID8/IC0xKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpO1xuICAgIH1cbn1cblxuLy8gc2VuZENodW5rZWQgc3BsaXRzIGEgbGFyZ2Ugc2VyaWFsaXNlZCByZXF1ZXN0IGJvZHkgaW50byBDSFVOS19USFJFU0hPTEQtc2l6ZWRcbi8vIGJ5dGUgY2h1bmtzIGFuZCBzZW5kcyB0aGVtIHNlcmlhbGx5LiAgRW5jb2RpbmcgdG8gVVRGLTggYnl0ZXMgYmVmb3JlIHNsaWNpbmdcbi8vIHByZXZlbnRzIGNvcnJ1cHRpb24gb2Ygbm9uLUJNUCBjaGFyYWN0ZXJzIChzdXJyb2dhdGUgcGFpcnMpIHRoYXQgd291bGQgb2NjdXJcbi8vIHdoZW4gc3BsaXR0aW5nIGF0IEphdmFTY3JpcHQgc3RyaW5nIGluZGljZXMuICBUaGUgR28gdHJhbnNwb3J0IGFzc2VtYmxlcyB0aGVcbi8vIHJhdyBieXRlcyBiZWZvcmUgcHJvY2Vzc2luZy4gIE9ubHkgdGhlIGZpbmFsIGNodW5rJ3MgcmVzcG9uc2UgY2FycmllcyB0aGUgUlBDIHJlc3VsdC5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRDaHVua2VkKHVybDogVVJMLCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBib2R5U3RyOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgY2h1bmtJZCA9IG5hbm9pZCgpO1xuICAgIGNvbnN0IGJvZHlCeXRlcyA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShib2R5U3RyKTtcbiAgICBjb25zdCB0b3RhbENodW5rcyA9IE1hdGguY2VpbChib2R5Qnl0ZXMubGVuZ3RoIC8gQ0hVTktfVEhSRVNIT0xEKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG90YWxDaHVua3MgLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2h1bmsgPSBib2R5Qnl0ZXMuc3ViYXJyYXkoaSAqIENIVU5LX1RIUkVTSE9MRCwgKGkgKyAxKSAqIENIVU5LX1RIUkVTSE9MRCk7XG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgJ3gtd2FpbHMtY2h1bmstaWQnOiBjaHVua0lkLFxuICAgICAgICAgICAgICAgICd4LXdhaWxzLWNodW5rLWluZGV4JzogU3RyaW5nKGkpLFxuICAgICAgICAgICAgICAgICd4LXdhaWxzLWNodW5rLXRvdGFsJzogU3RyaW5nKHRvdGFsQ2h1bmtzKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib2R5OiBjaHVuayxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcmVzcC5vaykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGF3YWl0IHJlc3AudGV4dCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICAgICAgICAneC13YWlscy1jaHVuay1pZCc6IGNodW5rSWQsXG4gICAgICAgICAgICAneC13YWlscy1jaHVuay1pbmRleCc6IFN0cmluZyh0b3RhbENodW5rcyAtIDEpLFxuICAgICAgICAgICAgJ3gtd2FpbHMtY2h1bmstdG90YWwnOiBTdHJpbmcodG90YWxDaHVua3MpLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBib2R5Qnl0ZXMuc3ViYXJyYXkoKHRvdGFsQ2h1bmtzIC0gMSkgKiBDSFVOS19USFJFU0hPTEQpLFxuICAgIH0pO1xufVxuXG4vKipcbiAqIEFuZHJvaWQgV2ViVmlldyBjYW5ub3QgZGVsaXZlciBmZXRjaCgpIFBPU1QgYm9kaWVzIHRvXG4gKiBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0LCBzbyB0aGUgZGVmYXVsdCBIVFRQIHRyYW5zcG9ydCBjYW5ub3QgcmVhY2ggR28uXG4gKiBXaGVuIHRoZSBBbmRyb2lkIEphdmFzY3JpcHRJbnRlcmZhY2UgYnJpZGdlICh3aW5kb3cud2FpbHMpIGlzIHByZXNlbnQsXG4gKiByb3V0ZSBydW50aW1lIGNhbGxzIHRocm91Z2ggaXQgaW5zdGVhZC4gUmVzcG9uc2VzIGFycml2ZSB2aWFcbiAqIHdpbmRvdy5fd2FpbHNBbmRyb2lkQ2FsbGJhY2ssIGludm9rZWQgYnkgdGhlIEphdmEgc2lkZS5cbiAqL1xuaW50ZXJmYWNlIEFuZHJvaWRKU0JyaWRnZSB7XG4gICAgaW52b2tlQXN5bmMoY2FsbGJhY2tJRDogc3RyaW5nLCBwYXlsb2FkOiBzdHJpbmcpOiB2b2lkO1xufVxuXG5jb25zdCBhbmRyb2lkQnJpZGdlOiBBbmRyb2lkSlNCcmlkZ2UgfCBudWxsID0gaGFzRE9NICYmXG4gICAgdHlwZW9mICh3aW5kb3cgYXMgYW55KS53YWlscz8uaW52b2tlQXN5bmMgPT09IFwiZnVuY3Rpb25cIiA/ICh3aW5kb3cgYXMgYW55KS53YWlscyA6IG51bGw7XG5cbmlmIChhbmRyb2lkQnJpZGdlKSB7XG4gICAgY29uc3QgcGVuZGluZyA9IG5ldyBNYXA8c3RyaW5nLCB7IHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkOyByZWplY3Q6IChyZWFzb246IGFueSkgPT4gdm9pZCB9PigpO1xuXG4gICAgKHdpbmRvdyBhcyBhbnkpLl93YWlsc0FuZHJvaWRDYWxsYmFjayA9IChpZDogc3RyaW5nLCByZXNwb25zZTogc3RyaW5nIHwgbnVsbCwgZXJyb3I6IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IHBlbmRpbmcuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFwcm9taXNlKSByZXR1cm47XG4gICAgICAgIHBlbmRpbmcuZGVsZXRlKGlkKTtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdChuZXcgRXJyb3IoZXJyb3IpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZW52ZWxvcGUgPSBKU09OLnBhcnNlKHJlc3BvbnNlID8/IFwie31cIik7XG4gICAgICAgICAgICBpZiAoIWVudmVsb3BlLm9rKSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGVudmVsb3BlLmVycm9yID8/IFwidW5rbm93biBydW50aW1lIGNhbGwgZXJyb3JcIikpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShcInRleHRcIiBpbiBlbnZlbG9wZSA/IGVudmVsb3BlLnRleHQgOiBlbnZlbG9wZS5kYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY3VzdG9tVHJhbnNwb3J0ID0ge1xuICAgICAgICBjYWxsKG9iamVjdElEOiBudW1iZXIsIG1ldGhvZDogbnVtYmVyLCB3aW5kb3dOYW1lOiBzdHJpbmcsIGFyZ3M6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gbmFub2lkKCk7XG4gICAgICAgICAgICAgICAgcGVuZGluZy5zZXQoaWQsIHsgcmVzb2x2ZSwgcmVqZWN0IH0pO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGFuZHJvaWRCcmlkZ2UuaW52b2tlQXN5bmMoaWQsIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogb2JqZWN0SUQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd05hbWU6IHdpbmRvd05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzOiBhcmdzID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWQsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGxlYWsgdGhlIHBlbmRpbmcgZW50cnkgaWYgZGlzcGF0Y2ggdGhyb3dzIHN5bmNocm9ub3VzbHlcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZy5kZWxldGUoaWQpO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHtuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lc30gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG4vLyBzZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xufVxuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5EaWFsb2cpO1xuXG4vLyBEZWZpbmUgY29uc3RhbnRzIGZyb20gdGhlIGBtZXRob2RzYCBvYmplY3QgaW4gVGl0bGUgQ2FzZVxuY29uc3QgRGlhbG9nSW5mbyA9IDA7XG5jb25zdCBEaWFsb2dXYXJuaW5nID0gMTtcbmNvbnN0IERpYWxvZ0Vycm9yID0gMjtcbmNvbnN0IERpYWxvZ1F1ZXN0aW9uID0gMztcbmNvbnN0IERpYWxvZ09wZW5GaWxlID0gNDtcbmNvbnN0IERpYWxvZ1NhdmVGaWxlID0gNTtcblxuZXhwb3J0IGludGVyZmFjZSBPcGVuRmlsZURpYWxvZ09wdGlvbnMge1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZGlyZWN0b3JpZXMgY2FuIGJlIGNob3Nlbi4gKi9cbiAgICBDYW5DaG9vc2VEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBmaWxlcyBjYW4gYmUgY2hvc2VuLiAqL1xuICAgIENhbkNob29zZUZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGRpcmVjdG9yaWVzIGNhbiBiZSBjcmVhdGVkLiAqL1xuICAgIENhbkNyZWF0ZURpcmVjdG9yaWVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGhpZGRlbiBmaWxlcyBzaG91bGQgYmUgc2hvd24uICovXG4gICAgU2hvd0hpZGRlbkZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGFsaWFzZXMgc2hvdWxkIGJlIHJlc29sdmVkLiAqL1xuICAgIFJlc29sdmVzQWxpYXNlcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBtdWx0aXBsZSBzZWxlY3Rpb24gaXMgYWxsb3dlZC4gKi9cbiAgICBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZXh0ZW5zaW9uIHNob3VsZCBiZSBoaWRkZW4uICovXG4gICAgSGlkZUV4dGVuc2lvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBoaWRkZW4gZXh0ZW5zaW9ucyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gICAgQ2FuU2VsZWN0SGlkZGVuRXh0ZW5zaW9uPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGZpbGUgcGFja2FnZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZGlyZWN0b3JpZXMuICovXG4gICAgVHJlYXRzRmlsZVBhY2thZ2VzQXNEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBvdGhlciBmaWxlIHR5cGVzIGFyZSBhbGxvd2VkLiAqL1xuICAgIEFsbG93c090aGVyRmlsZXR5cGVzPzogYm9vbGVhbjtcbiAgICAvKiogQXJyYXkgb2YgZmlsZSBmaWx0ZXJzLiAqL1xuICAgIEZpbHRlcnM/OiBGaWxlRmlsdGVyW107XG4gICAgLyoqIFRpdGxlIG9mIHRoZSBkaWFsb2cuICovXG4gICAgVGl0bGU/OiBzdHJpbmc7XG4gICAgLyoqIE1lc3NhZ2UgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIE1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgLyoqIFRleHQgdG8gZGlzcGxheSBvbiB0aGUgYnV0dG9uLiAqL1xuICAgIEJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gICAgLyoqIERpcmVjdG9yeSB0byBvcGVuIGluIHRoZSBkaWFsb2cuICovXG4gICAgRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGRpYWxvZyBzaG91bGQgYXBwZWFyIGRldGFjaGVkIGZyb20gdGhlIG1haW4gd2luZG93LiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYXZlRmlsZURpYWxvZ09wdGlvbnMge1xuICAgIC8qKiBEZWZhdWx0IGZpbGVuYW1lIHRvIHVzZSBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIEZpbGVuYW1lPzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZGlyZWN0b3JpZXMgY2FuIGJlIGNob3Nlbi4gKi9cbiAgICBDYW5DaG9vc2VEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBmaWxlcyBjYW4gYmUgY2hvc2VuLiAqL1xuICAgIENhbkNob29zZUZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGRpcmVjdG9yaWVzIGNhbiBiZSBjcmVhdGVkLiAqL1xuICAgIENhbkNyZWF0ZURpcmVjdG9yaWVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGhpZGRlbiBmaWxlcyBzaG91bGQgYmUgc2hvd24uICovXG4gICAgU2hvd0hpZGRlbkZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGFsaWFzZXMgc2hvdWxkIGJlIHJlc29sdmVkLiAqL1xuICAgIFJlc29sdmVzQWxpYXNlcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZXh0ZW5zaW9uIHNob3VsZCBiZSBoaWRkZW4uICovXG4gICAgSGlkZUV4dGVuc2lvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBoaWRkZW4gZXh0ZW5zaW9ucyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gICAgQ2FuU2VsZWN0SGlkZGVuRXh0ZW5zaW9uPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGZpbGUgcGFja2FnZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZGlyZWN0b3JpZXMuICovXG4gICAgVHJlYXRzRmlsZVBhY2thZ2VzQXNEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBvdGhlciBmaWxlIHR5cGVzIGFyZSBhbGxvd2VkLiAqL1xuICAgIEFsbG93c090aGVyRmlsZXR5cGVzPzogYm9vbGVhbjtcbiAgICAvKiogQXJyYXkgb2YgZmlsZSBmaWx0ZXJzLiAqL1xuICAgIEZpbHRlcnM/OiBGaWxlRmlsdGVyW107XG4gICAgLyoqIFRpdGxlIG9mIHRoZSBkaWFsb2cuICovXG4gICAgVGl0bGU/OiBzdHJpbmc7XG4gICAgLyoqIE1lc3NhZ2UgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIE1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgLyoqIFRleHQgdG8gZGlzcGxheSBvbiB0aGUgYnV0dG9uLiAqL1xuICAgIEJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gICAgLyoqIERpcmVjdG9yeSB0byBvcGVuIGluIHRoZSBkaWFsb2cuICovXG4gICAgRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGRpYWxvZyBzaG91bGQgYXBwZWFyIGRldGFjaGVkIGZyb20gdGhlIG1haW4gd2luZG93LiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlRGlhbG9nT3B0aW9ucyB7XG4gICAgLyoqIFRoZSB0aXRsZSBvZiB0aGUgZGlhbG9nIHdpbmRvdy4gKi9cbiAgICBUaXRsZT86IHN0cmluZztcbiAgICAvKiogVGhlIG1haW4gbWVzc2FnZSB0byBzaG93IGluIHRoZSBkaWFsb2cuICovXG4gICAgTWVzc2FnZT86IHN0cmluZztcbiAgICAvKiogQXJyYXkgb2YgYnV0dG9uIG9wdGlvbnMgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIEJ1dHRvbnM/OiBCdXR0b25bXTtcbiAgICAvKiogVHJ1ZSBpZiB0aGUgZGlhbG9nIHNob3VsZCBhcHBlYXIgZGV0YWNoZWQgZnJvbSB0aGUgbWFpbiB3aW5kb3cgKGlmIGFwcGxpY2FibGUpLiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b24ge1xuICAgIC8qKiBUZXh0IHRoYXQgYXBwZWFycyB3aXRoaW4gdGhlIGJ1dHRvbi4gKi9cbiAgICBMYWJlbD86IHN0cmluZztcbiAgICAvKiogVHJ1ZSBpZiB0aGUgYnV0dG9uIHNob3VsZCBjYW5jZWwgYW4gb3BlcmF0aW9uIHdoZW4gY2xpY2tlZC4gKi9cbiAgICBJc0NhbmNlbD86IGJvb2xlYW47XG4gICAgLyoqIFRydWUgaWYgdGhlIGJ1dHRvbiBzaG91bGQgYmUgdGhlIGRlZmF1bHQgYWN0aW9uIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBlbnRlci4gKi9cbiAgICBJc0RlZmF1bHQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVGaWx0ZXIge1xuICAgIC8qKiBEaXNwbGF5IG5hbWUgZm9yIHRoZSBmaWx0ZXIsIGl0IGNvdWxkIGJlIFwiVGV4dCBGaWxlc1wiLCBcIkltYWdlc1wiIGV0Yy4gKi9cbiAgICBEaXNwbGF5TmFtZT86IHN0cmluZztcbiAgICAvKiogUGF0dGVybiB0byBtYXRjaCBmb3IgdGhlIGZpbHRlciwgZS5nLiBcIioudHh0OyoubWRcIiBmb3IgdGV4dCBtYXJrZG93biBmaWxlcy4gKi9cbiAgICBQYXR0ZXJuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByZXNlbnRzIGEgZGlhbG9nIG9mIHNwZWNpZmllZCB0eXBlIHdpdGggdGhlIGdpdmVuIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHR5cGUgLSBEaWFsb2cgdHlwZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgdGhlIGRpYWxvZy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggcmVzdWx0IG9mIGRpYWxvZy5cbiAqL1xuZnVuY3Rpb24gZGlhbG9nKHR5cGU6IG51bWJlciwgb3B0aW9uczogTWVzc2FnZURpYWxvZ09wdGlvbnMgfCBPcGVuRmlsZURpYWxvZ09wdGlvbnMgfCBTYXZlRmlsZURpYWxvZ09wdGlvbnMgPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGNhbGwodHlwZSwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogUHJlc2VudHMgYW4gaW5mbyBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9uc1xuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbGFiZWwgb2YgdGhlIGNob3NlbiBidXR0b24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJbmZvKG9wdGlvbnM6IE1lc3NhZ2VEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHsgcmV0dXJuIGRpYWxvZyhEaWFsb2dJbmZvLCBvcHRpb25zKTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgd2FybmluZyBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGxhYmVsIG9mIHRoZSBjaG9zZW4gYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gV2FybmluZyhvcHRpb25zOiBNZXNzYWdlRGlhbG9nT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7IHJldHVybiBkaWFsb2coRGlhbG9nV2FybmluZywgb3B0aW9ucyk7IH1cblxuLyoqXG4gKiBQcmVzZW50cyBhbiBlcnJvciBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGxhYmVsIG9mIHRoZSBjaG9zZW4gYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRXJyb3Iob3B0aW9uczogTWVzc2FnZURpYWxvZ09wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4geyByZXR1cm4gZGlhbG9nKERpYWxvZ0Vycm9yLCBvcHRpb25zKTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgcXVlc3Rpb24gZGlhbG9nLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gRGlhbG9nIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBsYWJlbCBvZiB0aGUgY2hvc2VuIGJ1dHRvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFF1ZXN0aW9uKG9wdGlvbnM6IE1lc3NhZ2VEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHsgcmV0dXJuIGRpYWxvZyhEaWFsb2dRdWVzdGlvbiwgb3B0aW9ucyk7IH1cblxuLyoqXG4gKiBQcmVzZW50cyBhIGZpbGUgc2VsZWN0aW9uIGRpYWxvZyB0byBwaWNrIG9uZSBvciBtb3JlIGZpbGVzIHRvIG9wZW4uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFNlbGVjdGVkIGZpbGUgb3IgbGlzdCBvZiBmaWxlcywgb3IgYSBibGFuayBzdHJpbmcvZW1wdHkgbGlzdCBpZiBubyBmaWxlIGhhcyBiZWVuIHNlbGVjdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zICYgeyBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjogdHJ1ZSB9KTogUHJvbWlzZTxzdHJpbmdbXT47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zICYgeyBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbj86IGZhbHNlIHwgdW5kZWZpbmVkIH0pOiBQcm9taXNlPHN0cmluZz47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCBzdHJpbmdbXT47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCBzdHJpbmdbXT4geyByZXR1cm4gZGlhbG9nKERpYWxvZ09wZW5GaWxlLCBvcHRpb25zKSA/PyBbXTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgZmlsZSBzZWxlY3Rpb24gZGlhbG9nIHRvIHBpY2sgYSBmaWxlIHRvIHNhdmUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFNlbGVjdGVkIGZpbGUsIG9yIGEgYmxhbmsgc3RyaW5nIGlmIG5vIGZpbGUgaGFzIGJlZW4gc2VsZWN0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTYXZlRmlsZShvcHRpb25zOiBTYXZlRmlsZURpYWxvZ09wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4geyByZXR1cm4gZGlhbG9nKERpYWxvZ1NhdmVGaWxlLCBvcHRpb25zKTsgfVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmltcG9ydCB7IGV2ZW50TGlzdGVuZXJzLCBMaXN0ZW5lciwgbGlzdGVuZXJPZmYgfSBmcm9tIFwiLi9saXN0ZW5lci5qc1wiO1xuaW1wb3J0IHsgRXZlbnRzIGFzIENyZWF0ZSB9IGZyb20gXCIuL2NyZWF0ZS5qc1wiO1xuaW1wb3J0IHsgVHlwZXMgfSBmcm9tIFwiLi9ldmVudF90eXBlcy5qc1wiO1xuXG4vLyBTZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xuICAgIHdpbmRvdy5fd2FpbHMuZGlzcGF0Y2hXYWlsc0V2ZW50ID0gZGlzcGF0Y2hXYWlsc0V2ZW50O1xufVxuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5FdmVudHMpO1xuY29uc3QgRW1pdE1ldGhvZCA9IDA7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2V2ZW50X3R5cGVzLmpzXCI7XG5cbi8qKlxuICogQSB0YWJsZSBvZiBkYXRhIHR5cGVzIGZvciBhbGwga25vd24gZXZlbnRzLlxuICogV2lsbCBiZSBtb25rZXktcGF0Y2hlZCBieSB0aGUgYmluZGluZyBnZW5lcmF0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tRXZlbnRzIHt9XG5cbi8qKlxuICogRWl0aGVyIGEga25vd24gZXZlbnQgbmFtZSBvciBhbiBhcmJpdHJhcnkgc3RyaW5nLlxuICovXG5leHBvcnQgdHlwZSBXYWlsc0V2ZW50TmFtZTxFIGV4dGVuZHMga2V5b2YgQ3VzdG9tRXZlbnRzID0ga2V5b2YgQ3VzdG9tRXZlbnRzPiA9IEUgfCAoc3RyaW5nICYge30pO1xuXG4vKipcbiAqIFVuaW9uIG9mIGFsbCBrbm93biBzeXN0ZW0gZXZlbnQgbmFtZXMuXG4gKi9cbnR5cGUgU3lzdGVtRXZlbnROYW1lID0ge1xuICAgIFtLIGluIGtleW9mICh0eXBlb2YgVHlwZXMpXTogKHR5cGVvZiBUeXBlcylbS11ba2V5b2YgKCh0eXBlb2YgVHlwZXMpW0tdKV1cbn0gZXh0ZW5kcyAoaW5mZXIgTSkgPyBNW2tleW9mIE1dIDogbmV2ZXI7XG5cbi8qKlxuICogVGhlIGRhdGEgdHlwZSBhc3NvY2lhdGVkIHRvIGEgZ2l2ZW4gZXZlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFdhaWxzRXZlbnREYXRhPEUgZXh0ZW5kcyBXYWlsc0V2ZW50TmFtZSA9IFdhaWxzRXZlbnROYW1lPiA9XG4gICAgRSBleHRlbmRzIGtleW9mIEN1c3RvbUV2ZW50cyA/IEN1c3RvbUV2ZW50c1tFXSA6IChFIGV4dGVuZHMgU3lzdGVtRXZlbnROYW1lID8gdm9pZCA6IGFueSk7XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgaGFuZGxlcnMgZm9yIGEgZ2l2ZW4gZXZlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFdhaWxzRXZlbnRDYWxsYmFjazxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4gPSAoZXY6IFdhaWxzRXZlbnQ8RT4pID0+IHZvaWQ7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHN5c3RlbSBldmVudCBvciBhIGN1c3RvbSBldmVudCBlbWl0dGVkIHRocm91Z2ggd2FpbHMtcHJvdmlkZWQgZmFjaWxpdGllcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFdhaWxzRXZlbnQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAgICovXG4gICAgbmFtZTogRTtcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbWl0dGVkIGV2ZW50LlxuICAgICAqL1xuICAgIGRhdGE6IFdhaWxzRXZlbnREYXRhPEU+O1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgb3JpZ2luYXRpbmcgd2luZG93LiBPbWl0dGVkIGZvciBhcHBsaWNhdGlvbiBldmVudHMuXG4gICAgICogV2lsbCBiZSBvdmVycmlkZGVuIGlmIHNldCBtYW51YWxseS5cbiAgICAgKi9cbiAgICBzZW5kZXI/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBFLCBkYXRhOiBXYWlsc0V2ZW50RGF0YTxFPik7XG4gICAgY29uc3RydWN0b3IobmFtZTogV2FpbHNFdmVudERhdGE8RT4gZXh0ZW5kcyBudWxsIHwgdm9pZCA/IEUgOiBuZXZlcilcbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBFLCBkYXRhPzogYW55KSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGEgPz8gbnVsbDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoV2FpbHNFdmVudChldmVudDogYW55KSB7XG4gICAgbGV0IGxpc3RlbmVycyA9IGV2ZW50TGlzdGVuZXJzLmdldChldmVudC5uYW1lKTtcbiAgICBpZiAoIWxpc3RlbmVycykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHdhaWxzRXZlbnQgPSBuZXcgV2FpbHNFdmVudChcbiAgICAgICAgZXZlbnQubmFtZSxcbiAgICAgICAgKGV2ZW50Lm5hbWUgaW4gQ3JlYXRlKSA/IENyZWF0ZVtldmVudC5uYW1lXShldmVudC5kYXRhKSA6IGV2ZW50LmRhdGFcbiAgICApO1xuICAgIGlmICgnc2VuZGVyJyBpbiBldmVudCkge1xuICAgICAgICB3YWlsc0V2ZW50LnNlbmRlciA9IGV2ZW50LnNlbmRlcjtcbiAgICB9XG5cbiAgICAvLyBEaXNwYXRjaCB0byBhIHNuYXBzaG90LCB0aGVuIHJlbW92ZSBhbGwgZXhwaXJlZCBsaXN0ZW5lcnMgaW4gYSBzaW5nbGVcbiAgICAvLyBwb3N0LWRpc3BhdGNoIGZpbHRlciBvZiB0aGUgbGl2ZSBtYXAuXG4gICAgLy8gLSBXcml0aW5nIHRoZSBzbmFwc2hvdCBiYWNrIHdob2xlc2FsZSB3b3VsZCB1bmRvIHN1YnNjcmlwdGlvbiBjaGFuZ2VzXG4gICAgLy8gICBtYWRlIGluc2lkZSBhIGhhbmRsZXIgKCM0MzkzKS5cbiAgICAvLyAtIENhbGxpbmcgbGlzdGVuZXJPZmYoKSBwZXIgZXhwaXJlZCBsaXN0ZW5lciBpbnNpZGUgdGhlIGxvb3AgaXMgTyhuXHUwMEIyKVxuICAgIC8vICAgd2hlbiBtYW55IGxpc3RlbmVycyBleHBpcmUgb24gdGhlIHNhbWUgZXZlbnQuXG4gICAgLy8gRmlsdGVyaW5nIHRoZSBsaXZlIGFycmF5IG9uY2UgYWZ0ZXIgZGlzcGF0Y2ggaXMgTyhuKSBhbmQgc3RpbGwgaG9ub3Vyc1xuICAgIC8vIGFueSBsaXN0ZW5lcnMgYWRkZWQgb3IgcmVtb3ZlZCBieSBoYW5kbGVycyBkdXJpbmcgZGlzcGF0Y2guXG4gICAgY29uc3QgZXhwaXJlZCA9IG5ldyBTZXQ8TGlzdGVuZXI+KCk7XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMuc2xpY2UoKSkge1xuICAgICAgICBpZiAobGlzdGVuZXIuZGlzcGF0Y2god2FpbHNFdmVudCkpIHtcbiAgICAgICAgICAgIGV4cGlyZWQuYWRkKGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXhwaXJlZC5zaXplID4gMCkge1xuICAgICAgICBjb25zdCBsaXZlID0gZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50Lm5hbWUpO1xuICAgICAgICBpZiAobGl2ZSkge1xuICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nID0gbGl2ZS5maWx0ZXIobCA9PiAhZXhwaXJlZC5oYXMobCkpO1xuICAgICAgICAgICAgaWYgKHJlbWFpbmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBldmVudExpc3RlbmVycy5kZWxldGUoZXZlbnQubmFtZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV2ZW50TGlzdGVuZXJzLnNldChldmVudC5uYW1lLCByZW1haW5pbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGZvciBhIHNwZWNpZmljIGV2ZW50LlxuICpcbiAqIEBwYXJhbSBldmVudE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQgdG8gcmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZvci5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICogQHBhcmFtIG1heENhbGxiYWNrcyAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0aGUgY2FsbGJhY2sgY2FuIGJlIGNhbGxlZCBmb3IgdGhlIGV2ZW50LiBPbmNlIHRoZSBtYXhpbXVtIG51bWJlciBpcyByZWFjaGVkLCB0aGUgY2FsbGJhY2sgd2lsbCBubyBsb25nZXIgYmUgY2FsbGVkLlxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0LCB3aGVuIGNhbGxlZCwgd2lsbCB1bnJlZ2lzdGVyIHRoZSBjYWxsYmFjayBmcm9tIHRoZSBldmVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE9uTXVsdGlwbGU8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KGV2ZW50TmFtZTogRSwgY2FsbGJhY2s6IFdhaWxzRXZlbnRDYWxsYmFjazxFPiwgbWF4Q2FsbGJhY2tzOiBudW1iZXIpIHtcbiAgICBsZXQgbGlzdGVuZXJzID0gZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50TmFtZSkgfHwgW107XG4gICAgY29uc3QgdGhpc0xpc3RlbmVyID0gbmV3IExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2ssIG1heENhbGxiYWNrcyk7XG4gICAgbGlzdGVuZXJzLnB1c2godGhpc0xpc3RlbmVyKTtcbiAgICBldmVudExpc3RlbmVycy5zZXQoZXZlbnROYW1lLCBsaXN0ZW5lcnMpO1xuICAgIHJldHVybiAoKSA9PiBsaXN0ZW5lck9mZih0aGlzTGlzdGVuZXIpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIHNwZWNpZmllZCBldmVudCBvY2N1cnMuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudCB0byByZWdpc3RlciB0aGUgY2FsbGJhY2sgZm9yLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLCB3aWxsIHVucmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZyb20gdGhlIGV2ZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gT248RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KGV2ZW50TmFtZTogRSwgY2FsbGJhY2s6IFdhaWxzRXZlbnRDYWxsYmFjazxFPik6ICgpID0+IHZvaWQge1xuICAgIHJldHVybiBPbk11bHRpcGxlKGV2ZW50TmFtZSwgY2FsbGJhY2ssIC0xKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBvbmx5IG9uY2UgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudCB0byByZWdpc3RlciB0aGUgY2FsbGJhY2sgZm9yLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLCB3aWxsIHVucmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZyb20gdGhlIGV2ZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gT25jZTxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4oZXZlbnROYW1lOiBFLCBjYWxsYmFjazogV2FpbHNFdmVudENhbGxiYWNrPEU+KTogKCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIE9uTXVsdGlwbGUoZXZlbnROYW1lLCBjYWxsYmFjaywgMSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBldmVudCBsaXN0ZW5lcnMgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQgbmFtZXMuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZXMgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnRzIHRvIHJlbW92ZSBsaXN0ZW5lcnMgZm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT2ZmKC4uLmV2ZW50TmFtZXM6IFtXYWlsc0V2ZW50TmFtZSwgLi4uV2FpbHNFdmVudE5hbWVbXV0pOiB2b2lkIHtcbiAgICBldmVudE5hbWVzLmZvckVhY2goZXZlbnROYW1lID0+IGV2ZW50TGlzdGVuZXJzLmRlbGV0ZShldmVudE5hbWUpKTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBldmVudCBsaXN0ZW5lcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBPZmZBbGwoKTogdm9pZCB7XG4gICAgZXZlbnRMaXN0ZW5lcnMuY2xlYXIoKTtcbn1cblxuLyoqXG4gKiBFbWl0cyBhbiBldmVudC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCB3aWxsIGJlIGZ1bGZpbGxlZCBvbmNlIHRoZSBldmVudCBoYXMgYmVlbiBlbWl0dGVkLiAgUmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGUgZXZlbnQgd2FzIGNhbmNlbGxlZC5cbiAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50IHRvIGVtaXRcbiAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgdGhhdCB3aWxsIGJlIHNlbnQgd2l0aCB0aGUgZXZlbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVtaXQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KG5hbWU6IEUsIGRhdGE6IFdhaWxzRXZlbnREYXRhPEU+KTogUHJvbWlzZTxib29sZWFuPlxuZXhwb3J0IGZ1bmN0aW9uIEVtaXQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KG5hbWU6IFdhaWxzRXZlbnREYXRhPEU+IGV4dGVuZHMgbnVsbCB8IHZvaWQgPyBFIDogbmV2ZXIpOiBQcm9taXNlPGJvb2xlYW4+XG5leHBvcnQgZnVuY3Rpb24gRW1pdDxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4obmFtZTogV2FpbHNFdmVudERhdGE8RT4sIGRhdGE/OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gY2FsbChFbWl0TWV0aG9kLCAgbmV3IFdhaWxzRXZlbnQobmFtZSwgZGF0YSkpXG59XG5cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLy8gVGhlIGZvbGxvd2luZyB1dGlsaXRpZXMgaGF2ZSBiZWVuIGZhY3RvcmVkIG91dCBvZiAuL2V2ZW50cy50c1xuLy8gZm9yIHRlc3RpbmcgcHVycG9zZXMuXG5cbmV4cG9ydCBjb25zdCBldmVudExpc3RlbmVycyA9IG5ldyBNYXA8c3RyaW5nLCBMaXN0ZW5lcltdPigpO1xuXG5leHBvcnQgY2xhc3MgTGlzdGVuZXIge1xuICAgIGV2ZW50TmFtZTogc3RyaW5nO1xuICAgIGNhbGxiYWNrOiAoZGF0YTogYW55KSA9PiB2b2lkO1xuICAgIG1heENhbGxiYWNrczogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IoZXZlbnROYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoZGF0YTogYW55KSA9PiB2b2lkLCBtYXhDYWxsYmFja3M6IG51bWJlcikge1xuICAgICAgICB0aGlzLmV2ZW50TmFtZSA9IGV2ZW50TmFtZTtcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgICB0aGlzLm1heENhbGxiYWNrcyA9IG1heENhbGxiYWNrcyB8fCAtMTtcbiAgICB9XG5cbiAgICBkaXNwYXRjaChkYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2soZGF0YSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWF4Q2FsbGJhY2tzID09PSAtMSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0aGlzLm1heENhbGxiYWNrcyAtPSAxO1xuICAgICAgICByZXR1cm4gdGhpcy5tYXhDYWxsYmFja3MgPT09IDA7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuZXJPZmYobGlzdGVuZXI6IExpc3RlbmVyKTogdm9pZCB7XG4gICAgbGV0IGxpc3RlbmVycyA9IGV2ZW50TGlzdGVuZXJzLmdldChsaXN0ZW5lci5ldmVudE5hbWUpO1xuICAgIGlmICghbGlzdGVuZXJzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnMuZmlsdGVyKGwgPT4gbCAhPT0gbGlzdGVuZXIpO1xuICAgIGlmIChsaXN0ZW5lcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50TGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lci5ldmVudE5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGV2ZW50TGlzdGVuZXJzLnNldChsaXN0ZW5lci5ldmVudE5hbWUsIGxpc3RlbmVycyk7XG4gICAgfVxufVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG4vKipcbiAqIEFueSBpcyBhIGR1bW15IGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBzaW1wbGUgb3IgdW5rbm93biB0eXBlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFueTxUID0gYW55Pihzb3VyY2U6IGFueSk6IFQge1xuICAgIHJldHVybiBzb3VyY2U7XG59XG5cbi8qKlxuICogQnl0ZVNsaWNlIGlzIGEgY3JlYXRpb24gZnVuY3Rpb24gdGhhdCByZXBsYWNlc1xuICogbnVsbCBzdHJpbmdzIHdpdGggZW1wdHkgc3RyaW5ncy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJ5dGVTbGljZShzb3VyY2U6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuICgoc291cmNlID09IG51bGwpID8gXCJcIiA6IHNvdXJjZSk7XG59XG5cbi8qKlxuICogQXJyYXkgdGFrZXMgYSBjcmVhdGlvbiBmdW5jdGlvbiBmb3IgYW4gYXJiaXRyYXJ5IHR5cGVcbiAqIGFuZCByZXR1cm5zIGFuIGluLXBsYWNlIGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBhbiBhcnJheVxuICogd2hvc2UgZWxlbWVudHMgYXJlIG9mIHRoYXQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFycmF5PFQgPSBhbnk+KGVsZW1lbnQ6IChzb3VyY2U6IGFueSkgPT4gVCk6IChzb3VyY2U6IGFueSkgPT4gVFtdIHtcbiAgICBpZiAoZWxlbWVudCA9PT0gQW55KSB7XG4gICAgICAgIHJldHVybiAoc291cmNlKSA9PiAoc291cmNlID09PSBudWxsID8gW10gOiBzb3VyY2UpO1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiB7XG4gICAgICAgIGlmIChzb3VyY2UgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc291cmNlW2ldID0gZWxlbWVudChzb3VyY2VbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBNYXAgdGFrZXMgY3JlYXRpb24gZnVuY3Rpb25zIGZvciB0d28gYXJiaXRyYXJ5IHR5cGVzXG4gKiBhbmQgcmV0dXJucyBhbiBpbi1wbGFjZSBjcmVhdGlvbiBmdW5jdGlvbiBmb3IgYW4gb2JqZWN0XG4gKiB3aG9zZSBrZXlzIGFuZCB2YWx1ZXMgYXJlIG9mIHRob3NlIHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gTWFwPEsgZXh0ZW5kcyBQcm9wZXJ0eUtleSA9IGFueSwgViA9IGFueT4oa2V5OiAoc291cmNlOiBhbnkpID0+IEssIHZhbHVlOiAoc291cmNlOiBhbnkpID0+IFYpOiAoc291cmNlOiBhbnkpID0+IFJlY29yZDxLLCBWPiB7XG4gICAgaWYgKHZhbHVlID09PSBBbnkpIHtcbiAgICAgICAgcmV0dXJuIChzb3VyY2UpID0+IChzb3VyY2UgPT09IG51bGwgPyB7fSA6IHNvdXJjZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChzb3VyY2UpID0+IHtcbiAgICAgICAgaWYgKHNvdXJjZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgICAgICAgICAgc291cmNlW2tleV0gPSB2YWx1ZShzb3VyY2Vba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9O1xufVxuXG4vKipcbiAqIE51bGxhYmxlIHRha2VzIGEgY3JlYXRpb24gZnVuY3Rpb24gZm9yIGFuIGFyYml0cmFyeSB0eXBlXG4gKiBhbmQgcmV0dXJucyBhIGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBhIG51bGxhYmxlIHZhbHVlIG9mIHRoYXQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE51bGxhYmxlPFQgPSBhbnk+KGVsZW1lbnQ6IChzb3VyY2U6IGFueSkgPT4gVCk6IChzb3VyY2U6IGFueSkgPT4gKFQgfCBudWxsKSB7XG4gICAgaWYgKGVsZW1lbnQgPT09IEFueSkge1xuICAgICAgICByZXR1cm4gQW55O1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiAoc291cmNlID09PSBudWxsID8gbnVsbCA6IGVsZW1lbnQoc291cmNlKSk7XG59XG5cbi8qKlxuICogU3RydWN0IHRha2VzIGFuIG9iamVjdCBtYXBwaW5nIGZpZWxkIG5hbWVzIHRvIGNyZWF0aW9uIGZ1bmN0aW9uc1xuICogYW5kIHJldHVybnMgYW4gaW4tcGxhY2UgY3JlYXRpb24gZnVuY3Rpb24gZm9yIGEgc3RydWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gU3RydWN0KGNyZWF0ZUZpZWxkOiBSZWNvcmQ8c3RyaW5nLCAoc291cmNlOiBhbnkpID0+IGFueT4pOlxuICAgIDxVIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IGFueT4oc291cmNlOiBhbnkpID0+IFVcbntcbiAgICBsZXQgYWxsQW55ID0gdHJ1ZTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgaW4gY3JlYXRlRmllbGQpIHtcbiAgICAgICAgaWYgKGNyZWF0ZUZpZWxkW25hbWVdICE9PSBBbnkpIHtcbiAgICAgICAgICAgIGFsbEFueSA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFsbEFueSkge1xuICAgICAgICByZXR1cm4gQW55O1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBjcmVhdGVGaWVsZCkge1xuICAgICAgICAgICAgaWYgKG5hbWUgaW4gc291cmNlKSB7XG4gICAgICAgICAgICAgICAgc291cmNlW25hbWVdID0gY3JlYXRlRmllbGRbbmFtZV0oc291cmNlW25hbWVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIH07XG59XG5cbi8qKlxuICogTWFwcyBrbm93biBldmVudCBuYW1lcyB0byBjcmVhdGlvbiBmdW5jdGlvbnMgZm9yIHRoZWlyIGRhdGEgdHlwZXMuXG4gKiBXaWxsIGJlIG1vbmtleS1wYXRjaGVkIGJ5IHRoZSBiaW5kaW5nIGdlbmVyYXRvci5cbiAqL1xuZXhwb3J0IGNvbnN0IEV2ZW50czogUmVjb3JkPHN0cmluZywgKHNvdXJjZTogYW55KSA9PiBhbnk+ID0ge307XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbi8vIEN5bmh5cmNod3lkIHkgZmZlaWwgaG9uIHluIGF3dG9tYXRpZy4gUEVJRElXQ0ggXHUwMEMyIE1PRElXTFxuLy8gVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLiBETyBOT1QgRURJVFxuXG5leHBvcnQgY29uc3QgVHlwZXMgPSBPYmplY3QuZnJlZXplKHtcblx0V2luZG93czogT2JqZWN0LmZyZWV6ZSh7XG5cdFx0QVBNUG93ZXJTZXR0aW5nQ2hhbmdlOiBcIndpbmRvd3M6QVBNUG93ZXJTZXR0aW5nQ2hhbmdlXCIsXG5cdFx0QVBNUG93ZXJTdGF0dXNDaGFuZ2U6IFwid2luZG93czpBUE1Qb3dlclN0YXR1c0NoYW5nZVwiLFxuXHRcdEFQTVJlc3VtZUF1dG9tYXRpYzogXCJ3aW5kb3dzOkFQTVJlc3VtZUF1dG9tYXRpY1wiLFxuXHRcdEFQTVJlc3VtZVN1c3BlbmQ6IFwid2luZG93czpBUE1SZXN1bWVTdXNwZW5kXCIsXG5cdFx0QVBNU3VzcGVuZDogXCJ3aW5kb3dzOkFQTVN1c3BlbmRcIixcblx0XHRBcHBsaWNhdGlvblN0YXJ0ZWQ6IFwid2luZG93czpBcHBsaWNhdGlvblN0YXJ0ZWRcIixcblx0XHRTeXN0ZW1UaGVtZUNoYW5nZWQ6IFwid2luZG93czpTeXN0ZW1UaGVtZUNoYW5nZWRcIixcblx0XHRXZWJWaWV3TmF2aWdhdGlvbkNvbXBsZXRlZDogXCJ3aW5kb3dzOldlYlZpZXdOYXZpZ2F0aW9uQ29tcGxldGVkXCIsXG5cdFx0V2luZG93QWN0aXZlOiBcIndpbmRvd3M6V2luZG93QWN0aXZlXCIsXG5cdFx0V2luZG93QmFja2dyb3VuZEVyYXNlOiBcIndpbmRvd3M6V2luZG93QmFja2dyb3VuZEVyYXNlXCIsXG5cdFx0V2luZG93Q2xpY2tBY3RpdmU6IFwid2luZG93czpXaW5kb3dDbGlja0FjdGl2ZVwiLFxuXHRcdFdpbmRvd0Nsb3Npbmc6IFwid2luZG93czpXaW5kb3dDbG9zaW5nXCIsXG5cdFx0V2luZG93RGlkTW92ZTogXCJ3aW5kb3dzOldpbmRvd0RpZE1vdmVcIixcblx0XHRXaW5kb3dEaWRSZXNpemU6IFwid2luZG93czpXaW5kb3dEaWRSZXNpemVcIixcblx0XHRXaW5kb3dEUElDaGFuZ2VkOiBcIndpbmRvd3M6V2luZG93RFBJQ2hhbmdlZFwiLFxuXHRcdFdpbmRvd0RyYWdEcm9wOiBcIndpbmRvd3M6V2luZG93RHJhZ0Ryb3BcIixcblx0XHRXaW5kb3dEcmFnRW50ZXI6IFwid2luZG93czpXaW5kb3dEcmFnRW50ZXJcIixcblx0XHRXaW5kb3dEcmFnTGVhdmU6IFwid2luZG93czpXaW5kb3dEcmFnTGVhdmVcIixcblx0XHRXaW5kb3dEcmFnT3ZlcjogXCJ3aW5kb3dzOldpbmRvd0RyYWdPdmVyXCIsXG5cdFx0V2luZG93RW5kTW92ZTogXCJ3aW5kb3dzOldpbmRvd0VuZE1vdmVcIixcblx0XHRXaW5kb3dFbmRSZXNpemU6IFwid2luZG93czpXaW5kb3dFbmRSZXNpemVcIixcblx0XHRXaW5kb3dGdWxsc2NyZWVuOiBcIndpbmRvd3M6V2luZG93RnVsbHNjcmVlblwiLFxuXHRcdFdpbmRvd0hpZGU6IFwid2luZG93czpXaW5kb3dIaWRlXCIsXG5cdFx0V2luZG93SW5hY3RpdmU6IFwid2luZG93czpXaW5kb3dJbmFjdGl2ZVwiLFxuXHRcdFdpbmRvd0tleURvd246IFwid2luZG93czpXaW5kb3dLZXlEb3duXCIsXG5cdFx0V2luZG93S2V5VXA6IFwid2luZG93czpXaW5kb3dLZXlVcFwiLFxuXHRcdFdpbmRvd0tpbGxGb2N1czogXCJ3aW5kb3dzOldpbmRvd0tpbGxGb2N1c1wiLFxuXHRcdFdpbmRvd05vbkNsaWVudEhpdDogXCJ3aW5kb3dzOldpbmRvd05vbkNsaWVudEhpdFwiLFxuXHRcdFdpbmRvd05vbkNsaWVudE1vdXNlRG93bjogXCJ3aW5kb3dzOldpbmRvd05vbkNsaWVudE1vdXNlRG93blwiLFxuXHRcdFdpbmRvd05vbkNsaWVudE1vdXNlTGVhdmU6IFwid2luZG93czpXaW5kb3dOb25DbGllbnRNb3VzZUxlYXZlXCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50TW91c2VNb3ZlOiBcIndpbmRvd3M6V2luZG93Tm9uQ2xpZW50TW91c2VNb3ZlXCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50TW91c2VVcDogXCJ3aW5kb3dzOldpbmRvd05vbkNsaWVudE1vdXNlVXBcIixcblx0XHRXaW5kb3dQYWludDogXCJ3aW5kb3dzOldpbmRvd1BhaW50XCIsXG5cdFx0V2luZG93UmVzdG9yZTogXCJ3aW5kb3dzOldpbmRvd1Jlc3RvcmVcIixcblx0XHRXaW5kb3dTZXRGb2N1czogXCJ3aW5kb3dzOldpbmRvd1NldEZvY3VzXCIsXG5cdFx0V2luZG93U2hvdzogXCJ3aW5kb3dzOldpbmRvd1Nob3dcIixcblx0XHRXaW5kb3dTdGFydE1vdmU6IFwid2luZG93czpXaW5kb3dTdGFydE1vdmVcIixcblx0XHRXaW5kb3dTdGFydFJlc2l6ZTogXCJ3aW5kb3dzOldpbmRvd1N0YXJ0UmVzaXplXCIsXG5cdFx0V2luZG93VW5GdWxsc2NyZWVuOiBcIndpbmRvd3M6V2luZG93VW5GdWxsc2NyZWVuXCIsXG5cdFx0V2luZG93Wk9yZGVyQ2hhbmdlZDogXCJ3aW5kb3dzOldpbmRvd1pPcmRlckNoYW5nZWRcIixcblx0XHRXaW5kb3dNaW5pbWlzZTogXCJ3aW5kb3dzOldpbmRvd01pbmltaXNlXCIsXG5cdFx0V2luZG93VW5NaW5pbWlzZTogXCJ3aW5kb3dzOldpbmRvd1VuTWluaW1pc2VcIixcblx0XHRXaW5kb3dNYXhpbWlzZTogXCJ3aW5kb3dzOldpbmRvd01heGltaXNlXCIsXG5cdFx0V2luZG93VW5NYXhpbWlzZTogXCJ3aW5kb3dzOldpbmRvd1VuTWF4aW1pc2VcIixcblx0fSksXG5cdE1hYzogT2JqZWN0LmZyZWV6ZSh7XG5cdFx0QXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmU6IFwibWFjOkFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRDaGFuZ2VCYWNraW5nUHJvcGVydGllczogXCJtYWM6QXBwbGljYXRpb25EaWRDaGFuZ2VCYWNraW5nUHJvcGVydGllc1wiLFxuXHRcdEFwcGxpY2F0aW9uRGlkQ2hhbmdlRWZmZWN0aXZlQXBwZWFyYW5jZTogXCJtYWM6QXBwbGljYXRpb25EaWRDaGFuZ2VFZmZlY3RpdmVBcHBlYXJhbmNlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRDaGFuZ2VJY29uOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZUljb25cIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZU9jY2x1c2lvblN0YXRlOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZU9jY2x1c2lvblN0YXRlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRDaGFuZ2VTY3JlZW5QYXJhbWV0ZXJzOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnNcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZVN0YXR1c0JhckZyYW1lOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZVN0YXR1c0JhckZyYW1lXCIsXG5cdFx0QXBwbGljYXRpb25EaWRDaGFuZ2VTdGF0dXNCYXJPcmllbnRhdGlvbjogXCJtYWM6QXBwbGljYXRpb25EaWRDaGFuZ2VTdGF0dXNCYXJPcmllbnRhdGlvblwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkQ2hhbmdlVGhlbWU6IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlVGhlbWVcIixcblx0XHRBcHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZzogXCJtYWM6QXBwbGljYXRpb25EaWRGaW5pc2hMYXVuY2hpbmdcIixcblx0XHRBcHBsaWNhdGlvbkRpZEhpZGU6IFwibWFjOkFwcGxpY2F0aW9uRGlkSGlkZVwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkUmVzaWduQWN0aXZlOiBcIm1hYzpBcHBsaWNhdGlvbkRpZFJlc2lnbkFjdGl2ZVwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkVW5oaWRlOiBcIm1hYzpBcHBsaWNhdGlvbkRpZFVuaGlkZVwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkVXBkYXRlOiBcIm1hYzpBcHBsaWNhdGlvbkRpZFVwZGF0ZVwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkV2FrZTogXCJtYWM6QXBwbGljYXRpb25EaWRXYWtlXCIsXG5cdFx0QXBwbGljYXRpb25TY3JlZW5zRGlkU2xlZXA6IFwibWFjOkFwcGxpY2F0aW9uU2NyZWVuc0RpZFNsZWVwXCIsXG5cdFx0QXBwbGljYXRpb25TY3JlZW5zRGlkV2FrZTogXCJtYWM6QXBwbGljYXRpb25TY3JlZW5zRGlkV2FrZVwiLFxuXHRcdEFwcGxpY2F0aW9uU2hvdWxkSGFuZGxlUmVvcGVuOiBcIm1hYzpBcHBsaWNhdGlvblNob3VsZEhhbmRsZVJlb3BlblwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbEJlY29tZUFjdGl2ZTogXCJtYWM6QXBwbGljYXRpb25XaWxsQmVjb21lQWN0aXZlXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsRmluaXNoTGF1bmNoaW5nOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxGaW5pc2hMYXVuY2hpbmdcIixcblx0XHRBcHBsaWNhdGlvbldpbGxIaWRlOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxIaWRlXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVcIixcblx0XHRBcHBsaWNhdGlvbldpbGxTbGVlcDogXCJtYWM6QXBwbGljYXRpb25XaWxsU2xlZXBcIixcblx0XHRBcHBsaWNhdGlvbldpbGxUZXJtaW5hdGU6IFwibWFjOkFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZVwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFVuaGlkZTogXCJtYWM6QXBwbGljYXRpb25XaWxsVW5oaWRlXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsVXBkYXRlOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxVcGRhdGVcIixcblx0XHRNZW51RGlkQWRkSXRlbTogXCJtYWM6TWVudURpZEFkZEl0ZW1cIixcblx0XHRNZW51RGlkQmVnaW5UcmFja2luZzogXCJtYWM6TWVudURpZEJlZ2luVHJhY2tpbmdcIixcblx0XHRNZW51RGlkQ2xvc2U6IFwibWFjOk1lbnVEaWRDbG9zZVwiLFxuXHRcdE1lbnVEaWREaXNwbGF5SXRlbTogXCJtYWM6TWVudURpZERpc3BsYXlJdGVtXCIsXG5cdFx0TWVudURpZEVuZFRyYWNraW5nOiBcIm1hYzpNZW51RGlkRW5kVHJhY2tpbmdcIixcblx0XHRNZW51RGlkSGlnaGxpZ2h0SXRlbTogXCJtYWM6TWVudURpZEhpZ2hsaWdodEl0ZW1cIixcblx0XHRNZW51RGlkT3BlbjogXCJtYWM6TWVudURpZE9wZW5cIixcblx0XHRNZW51RGlkUG9wVXA6IFwibWFjOk1lbnVEaWRQb3BVcFwiLFxuXHRcdE1lbnVEaWRSZW1vdmVJdGVtOiBcIm1hYzpNZW51RGlkUmVtb3ZlSXRlbVwiLFxuXHRcdE1lbnVEaWRTZW5kQWN0aW9uOiBcIm1hYzpNZW51RGlkU2VuZEFjdGlvblwiLFxuXHRcdE1lbnVEaWRTZW5kQWN0aW9uVG9JdGVtOiBcIm1hYzpNZW51RGlkU2VuZEFjdGlvblRvSXRlbVwiLFxuXHRcdE1lbnVEaWRVcGRhdGU6IFwibWFjOk1lbnVEaWRVcGRhdGVcIixcblx0XHRNZW51V2lsbEFkZEl0ZW06IFwibWFjOk1lbnVXaWxsQWRkSXRlbVwiLFxuXHRcdE1lbnVXaWxsQmVnaW5UcmFja2luZzogXCJtYWM6TWVudVdpbGxCZWdpblRyYWNraW5nXCIsXG5cdFx0TWVudVdpbGxEaXNwbGF5SXRlbTogXCJtYWM6TWVudVdpbGxEaXNwbGF5SXRlbVwiLFxuXHRcdE1lbnVXaWxsRW5kVHJhY2tpbmc6IFwibWFjOk1lbnVXaWxsRW5kVHJhY2tpbmdcIixcblx0XHRNZW51V2lsbEhpZ2hsaWdodEl0ZW06IFwibWFjOk1lbnVXaWxsSGlnaGxpZ2h0SXRlbVwiLFxuXHRcdE1lbnVXaWxsT3BlbjogXCJtYWM6TWVudVdpbGxPcGVuXCIsXG5cdFx0TWVudVdpbGxQb3BVcDogXCJtYWM6TWVudVdpbGxQb3BVcFwiLFxuXHRcdE1lbnVXaWxsUmVtb3ZlSXRlbTogXCJtYWM6TWVudVdpbGxSZW1vdmVJdGVtXCIsXG5cdFx0TWVudVdpbGxTZW5kQWN0aW9uOiBcIm1hYzpNZW51V2lsbFNlbmRBY3Rpb25cIixcblx0XHRNZW51V2lsbFNlbmRBY3Rpb25Ub0l0ZW06IFwibWFjOk1lbnVXaWxsU2VuZEFjdGlvblRvSXRlbVwiLFxuXHRcdE1lbnVXaWxsVXBkYXRlOiBcIm1hYzpNZW51V2lsbFVwZGF0ZVwiLFxuXHRcdFdlYlZpZXdEaWRDb21taXROYXZpZ2F0aW9uOiBcIm1hYzpXZWJWaWV3RGlkQ29tbWl0TmF2aWdhdGlvblwiLFxuXHRcdFdlYlZpZXdEaWRGaW5pc2hOYXZpZ2F0aW9uOiBcIm1hYzpXZWJWaWV3RGlkRmluaXNoTmF2aWdhdGlvblwiLFxuXHRcdFdlYlZpZXdEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb246IFwibWFjOldlYlZpZXdEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb25cIixcblx0XHRXZWJWaWV3RGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb246IFwibWFjOldlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvblwiLFxuXHRcdFdpbmRvd0RpZEJlY29tZUtleTogXCJtYWM6V2luZG93RGlkQmVjb21lS2V5XCIsXG5cdFx0V2luZG93RGlkQmVjb21lTWFpbjogXCJtYWM6V2luZG93RGlkQmVjb21lTWFpblwiLFxuXHRcdFdpbmRvd0RpZEJlZ2luU2hlZXQ6IFwibWFjOldpbmRvd0RpZEJlZ2luU2hlZXRcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VBbHBoYTogXCJtYWM6V2luZG93RGlkQ2hhbmdlQWxwaGFcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VCYWNraW5nTG9jYXRpb246IFwibWFjOldpbmRvd0RpZENoYW5nZUJhY2tpbmdMb2NhdGlvblwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VCYWNraW5nUHJvcGVydGllc1wiLFxuXHRcdFdpbmRvd0RpZENoYW5nZUNvbGxlY3Rpb25CZWhhdmlvcjogXCJtYWM6V2luZG93RGlkQ2hhbmdlQ29sbGVjdGlvbkJlaGF2aW9yXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlRWZmZWN0aXZlQXBwZWFyYW5jZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlRWZmZWN0aXZlQXBwZWFyYW5jZVwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZVwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZU9yZGVyaW5nTW9kZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlT3JkZXJpbmdNb2RlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlU2NyZWVuOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VTY3JlZW5cIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTY3JlZW5QYXJhbWV0ZXJzOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VTY3JlZW5QYXJhbWV0ZXJzXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlU2NyZWVuUHJvZmlsZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlU2NyZWVuUHJvZmlsZVwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZVNjcmVlblNwYWNlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VTY3JlZW5TcGFjZVwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZVNjcmVlblNwYWNlUHJvcGVydGllczogXCJtYWM6V2luZG93RGlkQ2hhbmdlU2NyZWVuU3BhY2VQcm9wZXJ0aWVzXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlU2hhcmluZ1R5cGU6IFwibWFjOldpbmRvd0RpZENoYW5nZVNoYXJpbmdUeXBlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlU3BhY2U6IFwibWFjOldpbmRvd0RpZENoYW5nZVNwYWNlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlU3BhY2VPcmRlcmluZ01vZGU6IFwibWFjOldpbmRvd0RpZENoYW5nZVNwYWNlT3JkZXJpbmdNb2RlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlVGl0bGU6IFwibWFjOldpbmRvd0RpZENoYW5nZVRpdGxlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlVG9vbGJhcjogXCJtYWM6V2luZG93RGlkQ2hhbmdlVG9vbGJhclwiLFxuXHRcdFdpbmRvd0RpZERlbWluaWF0dXJpemU6IFwibWFjOldpbmRvd0RpZERlbWluaWF0dXJpemVcIixcblx0XHRXaW5kb3dEaWRFbmRTaGVldDogXCJtYWM6V2luZG93RGlkRW5kU2hlZXRcIixcblx0XHRXaW5kb3dEaWRFbnRlckZ1bGxTY3JlZW46IFwibWFjOldpbmRvd0RpZEVudGVyRnVsbFNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZEVudGVyVmVyc2lvbkJyb3dzZXI6IFwibWFjOldpbmRvd0RpZEVudGVyVmVyc2lvbkJyb3dzZXJcIixcblx0XHRXaW5kb3dEaWRFeGl0RnVsbFNjcmVlbjogXCJtYWM6V2luZG93RGlkRXhpdEZ1bGxTY3JlZW5cIixcblx0XHRXaW5kb3dEaWRFeGl0VmVyc2lvbkJyb3dzZXI6IFwibWFjOldpbmRvd0RpZEV4aXRWZXJzaW9uQnJvd3NlclwiLFxuXHRcdFdpbmRvd0RpZEV4cG9zZTogXCJtYWM6V2luZG93RGlkRXhwb3NlXCIsXG5cdFx0V2luZG93RGlkRm9jdXM6IFwibWFjOldpbmRvd0RpZEZvY3VzXCIsXG5cdFx0V2luZG93RGlkTWluaWF0dXJpemU6IFwibWFjOldpbmRvd0RpZE1pbmlhdHVyaXplXCIsXG5cdFx0V2luZG93RGlkTW92ZTogXCJtYWM6V2luZG93RGlkTW92ZVwiLFxuXHRcdFdpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuOiBcIm1hYzpXaW5kb3dEaWRPcmRlck9mZlNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZE9yZGVyT25TY3JlZW46IFwibWFjOldpbmRvd0RpZE9yZGVyT25TY3JlZW5cIixcblx0XHRXaW5kb3dEaWRSZXNpZ25LZXk6IFwibWFjOldpbmRvd0RpZFJlc2lnbktleVwiLFxuXHRcdFdpbmRvd0RpZFJlc2lnbk1haW46IFwibWFjOldpbmRvd0RpZFJlc2lnbk1haW5cIixcblx0XHRXaW5kb3dEaWRSZXNpemU6IFwibWFjOldpbmRvd0RpZFJlc2l6ZVwiLFxuXHRcdFdpbmRvd0RpZFVwZGF0ZTogXCJtYWM6V2luZG93RGlkVXBkYXRlXCIsXG5cdFx0V2luZG93RGlkVXBkYXRlQWxwaGE6IFwibWFjOldpbmRvd0RpZFVwZGF0ZUFscGhhXCIsXG5cdFx0V2luZG93RGlkVXBkYXRlQ29sbGVjdGlvbkJlaGF2aW9yOiBcIm1hYzpXaW5kb3dEaWRVcGRhdGVDb2xsZWN0aW9uQmVoYXZpb3JcIixcblx0XHRXaW5kb3dEaWRVcGRhdGVDb2xsZWN0aW9uUHJvcGVydGllczogXCJtYWM6V2luZG93RGlkVXBkYXRlQ29sbGVjdGlvblByb3BlcnRpZXNcIixcblx0XHRXaW5kb3dEaWRVcGRhdGVTaGFkb3c6IFwibWFjOldpbmRvd0RpZFVwZGF0ZVNoYWRvd1wiLFxuXHRcdFdpbmRvd0RpZFVwZGF0ZVRpdGxlOiBcIm1hYzpXaW5kb3dEaWRVcGRhdGVUaXRsZVwiLFxuXHRcdFdpbmRvd0RpZFVwZGF0ZVRvb2xiYXI6IFwibWFjOldpbmRvd0RpZFVwZGF0ZVRvb2xiYXJcIixcblx0XHRXaW5kb3dEaWRab29tOiBcIm1hYzpXaW5kb3dEaWRab29tXCIsXG5cdFx0V2luZG93RmlsZURyYWdnaW5nRW50ZXJlZDogXCJtYWM6V2luZG93RmlsZURyYWdnaW5nRW50ZXJlZFwiLFxuXHRcdFdpbmRvd0ZpbGVEcmFnZ2luZ0V4aXRlZDogXCJtYWM6V2luZG93RmlsZURyYWdnaW5nRXhpdGVkXCIsXG5cdFx0V2luZG93RmlsZURyYWdnaW5nUGVyZm9ybWVkOiBcIm1hYzpXaW5kb3dGaWxlRHJhZ2dpbmdQZXJmb3JtZWRcIixcblx0XHRXaW5kb3dIaWRlOiBcIm1hYzpXaW5kb3dIaWRlXCIsXG5cdFx0V2luZG93TWF4aW1pc2U6IFwibWFjOldpbmRvd01heGltaXNlXCIsXG5cdFx0V2luZG93VW5NYXhpbWlzZTogXCJtYWM6V2luZG93VW5NYXhpbWlzZVwiLFxuXHRcdFdpbmRvd01pbmltaXNlOiBcIm1hYzpXaW5kb3dNaW5pbWlzZVwiLFxuXHRcdFdpbmRvd1VuTWluaW1pc2U6IFwibWFjOldpbmRvd1VuTWluaW1pc2VcIixcblx0XHRXaW5kb3dTaG91bGRDbG9zZTogXCJtYWM6V2luZG93U2hvdWxkQ2xvc2VcIixcblx0XHRXaW5kb3dTaG93OiBcIm1hYzpXaW5kb3dTaG93XCIsXG5cdFx0V2luZG93V2lsbEJlY29tZUtleTogXCJtYWM6V2luZG93V2lsbEJlY29tZUtleVwiLFxuXHRcdFdpbmRvd1dpbGxCZWNvbWVNYWluOiBcIm1hYzpXaW5kb3dXaWxsQmVjb21lTWFpblwiLFxuXHRcdFdpbmRvd1dpbGxCZWdpblNoZWV0OiBcIm1hYzpXaW5kb3dXaWxsQmVnaW5TaGVldFwiLFxuXHRcdFdpbmRvd1dpbGxDaGFuZ2VPcmRlcmluZ01vZGU6IFwibWFjOldpbmRvd1dpbGxDaGFuZ2VPcmRlcmluZ01vZGVcIixcblx0XHRXaW5kb3dXaWxsQ2xvc2U6IFwibWFjOldpbmRvd1dpbGxDbG9zZVwiLFxuXHRcdFdpbmRvd1dpbGxEZW1pbmlhdHVyaXplOiBcIm1hYzpXaW5kb3dXaWxsRGVtaW5pYXR1cml6ZVwiLFxuXHRcdFdpbmRvd1dpbGxFbnRlckZ1bGxTY3JlZW46IFwibWFjOldpbmRvd1dpbGxFbnRlckZ1bGxTY3JlZW5cIixcblx0XHRXaW5kb3dXaWxsRW50ZXJWZXJzaW9uQnJvd3NlcjogXCJtYWM6V2luZG93V2lsbEVudGVyVmVyc2lvbkJyb3dzZXJcIixcblx0XHRXaW5kb3dXaWxsRXhpdEZ1bGxTY3JlZW46IFwibWFjOldpbmRvd1dpbGxFeGl0RnVsbFNjcmVlblwiLFxuXHRcdFdpbmRvd1dpbGxFeGl0VmVyc2lvbkJyb3dzZXI6IFwibWFjOldpbmRvd1dpbGxFeGl0VmVyc2lvbkJyb3dzZXJcIixcblx0XHRXaW5kb3dXaWxsRm9jdXM6IFwibWFjOldpbmRvd1dpbGxGb2N1c1wiLFxuXHRcdFdpbmRvd1dpbGxNaW5pYXR1cml6ZTogXCJtYWM6V2luZG93V2lsbE1pbmlhdHVyaXplXCIsXG5cdFx0V2luZG93V2lsbE1vdmU6IFwibWFjOldpbmRvd1dpbGxNb3ZlXCIsXG5cdFx0V2luZG93V2lsbE9yZGVyT2ZmU2NyZWVuOiBcIm1hYzpXaW5kb3dXaWxsT3JkZXJPZmZTY3JlZW5cIixcblx0XHRXaW5kb3dXaWxsT3JkZXJPblNjcmVlbjogXCJtYWM6V2luZG93V2lsbE9yZGVyT25TY3JlZW5cIixcblx0XHRXaW5kb3dXaWxsUmVzaWduTWFpbjogXCJtYWM6V2luZG93V2lsbFJlc2lnbk1haW5cIixcblx0XHRXaW5kb3dXaWxsUmVzaXplOiBcIm1hYzpXaW5kb3dXaWxsUmVzaXplXCIsXG5cdFx0V2luZG93V2lsbFVuZm9jdXM6IFwibWFjOldpbmRvd1dpbGxVbmZvY3VzXCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZTogXCJtYWM6V2luZG93V2lsbFVwZGF0ZVwiLFxuXHRcdFdpbmRvd1dpbGxVcGRhdGVBbHBoYTogXCJtYWM6V2luZG93V2lsbFVwZGF0ZUFscGhhXCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZUNvbGxlY3Rpb25CZWhhdmlvcjogXCJtYWM6V2luZG93V2lsbFVwZGF0ZUNvbGxlY3Rpb25CZWhhdmlvclwiLFxuXHRcdFdpbmRvd1dpbGxVcGRhdGVDb2xsZWN0aW9uUHJvcGVydGllczogXCJtYWM6V2luZG93V2lsbFVwZGF0ZUNvbGxlY3Rpb25Qcm9wZXJ0aWVzXCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZVNoYWRvdzogXCJtYWM6V2luZG93V2lsbFVwZGF0ZVNoYWRvd1wiLFxuXHRcdFdpbmRvd1dpbGxVcGRhdGVUaXRsZTogXCJtYWM6V2luZG93V2lsbFVwZGF0ZVRpdGxlXCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZVRvb2xiYXI6IFwibWFjOldpbmRvd1dpbGxVcGRhdGVUb29sYmFyXCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZVZpc2liaWxpdHk6IFwibWFjOldpbmRvd1dpbGxVcGRhdGVWaXNpYmlsaXR5XCIsXG5cdFx0V2luZG93V2lsbFVzZVN0YW5kYXJkRnJhbWU6IFwibWFjOldpbmRvd1dpbGxVc2VTdGFuZGFyZEZyYW1lXCIsXG5cdFx0V2luZG93Wm9vbUluOiBcIm1hYzpXaW5kb3dab29tSW5cIixcblx0XHRXaW5kb3dab29tT3V0OiBcIm1hYzpXaW5kb3dab29tT3V0XCIsXG5cdFx0V2luZG93Wm9vbVJlc2V0OiBcIm1hYzpXaW5kb3dab29tUmVzZXRcIixcblx0fSksXG5cdExpbnV4OiBPYmplY3QuZnJlZXplKHtcblx0XHRBcHBsaWNhdGlvblN0YXJ0dXA6IFwibGludXg6QXBwbGljYXRpb25TdGFydHVwXCIsXG5cdFx0U3lzdGVtRGlkV2FrZTogXCJsaW51eDpTeXN0ZW1EaWRXYWtlXCIsXG5cdFx0U3lzdGVtVGhlbWVDaGFuZ2VkOiBcImxpbnV4OlN5c3RlbVRoZW1lQ2hhbmdlZFwiLFxuXHRcdFN5c3RlbVdpbGxTbGVlcDogXCJsaW51eDpTeXN0ZW1XaWxsU2xlZXBcIixcblx0XHRXaW5kb3dEZWxldGVFdmVudDogXCJsaW51eDpXaW5kb3dEZWxldGVFdmVudFwiLFxuXHRcdFdpbmRvd0RpZE1vdmU6IFwibGludXg6V2luZG93RGlkTW92ZVwiLFxuXHRcdFdpbmRvd0RpZFJlc2l6ZTogXCJsaW51eDpXaW5kb3dEaWRSZXNpemVcIixcblx0XHRXaW5kb3dGb2N1c0luOiBcImxpbnV4OldpbmRvd0ZvY3VzSW5cIixcblx0XHRXaW5kb3dGb2N1c091dDogXCJsaW51eDpXaW5kb3dGb2N1c091dFwiLFxuXHRcdFdpbmRvd0xvYWRTdGFydGVkOiBcImxpbnV4OldpbmRvd0xvYWRTdGFydGVkXCIsXG5cdFx0V2luZG93TG9hZFJlZGlyZWN0ZWQ6IFwibGludXg6V2luZG93TG9hZFJlZGlyZWN0ZWRcIixcblx0XHRXaW5kb3dMb2FkQ29tbWl0dGVkOiBcImxpbnV4OldpbmRvd0xvYWRDb21taXR0ZWRcIixcblx0XHRXaW5kb3dMb2FkRmluaXNoZWQ6IFwibGludXg6V2luZG93TG9hZEZpbmlzaGVkXCIsXG5cdH0pLFxuXHRpT1M6IE9iamVjdC5mcmVlemUoe1xuXHRcdEFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOiBcImlvczpBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZVwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOiBcImlvczpBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZFwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkRmluaXNoTGF1bmNoaW5nOiBcImlvczpBcHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZ1wiLFxuXHRcdEFwcGxpY2F0aW9uRGlkUmVjZWl2ZU1lbW9yeVdhcm5pbmc6IFwiaW9zOkFwcGxpY2F0aW9uRGlkUmVjZWl2ZU1lbW9yeVdhcm5pbmdcIixcblx0XHRBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6IFwiaW9zOkFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZFwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTogXCJpb3M6QXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsVGVybWluYXRlOiBcImlvczpBcHBsaWNhdGlvbldpbGxUZXJtaW5hdGVcIixcblx0XHRXaW5kb3dEaWRMb2FkOiBcImlvczpXaW5kb3dEaWRMb2FkXCIsXG5cdFx0V2luZG93V2lsbEFwcGVhcjogXCJpb3M6V2luZG93V2lsbEFwcGVhclwiLFxuXHRcdFdpbmRvd0RpZEFwcGVhcjogXCJpb3M6V2luZG93RGlkQXBwZWFyXCIsXG5cdFx0V2luZG93V2lsbERpc2FwcGVhcjogXCJpb3M6V2luZG93V2lsbERpc2FwcGVhclwiLFxuXHRcdFdpbmRvd0RpZERpc2FwcGVhcjogXCJpb3M6V2luZG93RGlkRGlzYXBwZWFyXCIsXG5cdFx0V2luZG93U2FmZUFyZWFJbnNldHNDaGFuZ2VkOiBcImlvczpXaW5kb3dTYWZlQXJlYUluc2V0c0NoYW5nZWRcIixcblx0XHRXaW5kb3dPcmllbnRhdGlvbkNoYW5nZWQ6IFwiaW9zOldpbmRvd09yaWVudGF0aW9uQ2hhbmdlZFwiLFxuXHRcdFdpbmRvd1RvdWNoQmVnYW46IFwiaW9zOldpbmRvd1RvdWNoQmVnYW5cIixcblx0XHRXaW5kb3dUb3VjaE1vdmVkOiBcImlvczpXaW5kb3dUb3VjaE1vdmVkXCIsXG5cdFx0V2luZG93VG91Y2hFbmRlZDogXCJpb3M6V2luZG93VG91Y2hFbmRlZFwiLFxuXHRcdFdpbmRvd1RvdWNoQ2FuY2VsbGVkOiBcImlvczpXaW5kb3dUb3VjaENhbmNlbGxlZFwiLFxuXHRcdFdlYlZpZXdEaWRTdGFydE5hdmlnYXRpb246IFwiaW9zOldlYlZpZXdEaWRTdGFydE5hdmlnYXRpb25cIixcblx0XHRXZWJWaWV3RGlkRmluaXNoTmF2aWdhdGlvbjogXCJpb3M6V2ViVmlld0RpZEZpbmlzaE5hdmlnYXRpb25cIixcblx0XHRXZWJWaWV3RGlkRmFpbE5hdmlnYXRpb246IFwiaW9zOldlYlZpZXdEaWRGYWlsTmF2aWdhdGlvblwiLFxuXHRcdFdlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBcImlvczpXZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblwiLFxuXHRcdEJhdHRlcnlDaGFuZ2VkOiBcImlvczpCYXR0ZXJ5Q2hhbmdlZFwiLFxuXHRcdE5ldHdvcmtDaGFuZ2VkOiBcImlvczpOZXR3b3JrQ2hhbmdlZFwiLFxuXHRcdFRoZW1lQ2hhbmdlZDogXCJpb3M6VGhlbWVDaGFuZ2VkXCIsXG5cdFx0U2NyZWVuTG9ja2VkOiBcImlvczpTY3JlZW5Mb2NrZWRcIixcblx0XHRTY3JlZW5VbmxvY2tlZDogXCJpb3M6U2NyZWVuVW5sb2NrZWRcIixcblx0fSksXG5cdEFuZHJvaWQ6IE9iamVjdC5mcmVlemUoe1xuXHRcdEFjdGl2aXR5Q3JlYXRlZDogXCJhbmRyb2lkOkFjdGl2aXR5Q3JlYXRlZFwiLFxuXHRcdEFjdGl2aXR5U3RhcnRlZDogXCJhbmRyb2lkOkFjdGl2aXR5U3RhcnRlZFwiLFxuXHRcdEFjdGl2aXR5UmVzdW1lZDogXCJhbmRyb2lkOkFjdGl2aXR5UmVzdW1lZFwiLFxuXHRcdEFjdGl2aXR5UGF1c2VkOiBcImFuZHJvaWQ6QWN0aXZpdHlQYXVzZWRcIixcblx0XHRBY3Rpdml0eVN0b3BwZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eVN0b3BwZWRcIixcblx0XHRBY3Rpdml0eURlc3Ryb3llZDogXCJhbmRyb2lkOkFjdGl2aXR5RGVzdHJveWVkXCIsXG5cdFx0QXBwbGljYXRpb25Mb3dNZW1vcnk6IFwiYW5kcm9pZDpBcHBsaWNhdGlvbkxvd01lbW9yeVwiLFxuXHRcdFdlYlZpZXdQYWdlU3RhcnRlZDogXCJhbmRyb2lkOldlYlZpZXdQYWdlU3RhcnRlZFwiLFxuXHRcdFdlYlZpZXdQYWdlRmluaXNoZWQ6IFwiYW5kcm9pZDpXZWJWaWV3UGFnZUZpbmlzaGVkXCIsXG5cdFx0QmF0dGVyeUNoYW5nZWQ6IFwiYW5kcm9pZDpCYXR0ZXJ5Q2hhbmdlZFwiLFxuXHRcdE5ldHdvcmtDaGFuZ2VkOiBcImFuZHJvaWQ6TmV0d29ya0NoYW5nZWRcIixcblx0XHRUaGVtZUNoYW5nZWQ6IFwiYW5kcm9pZDpUaGVtZUNoYW5nZWRcIixcblx0XHRTY3JlZW5Mb2NrZWQ6IFwiYW5kcm9pZDpTY3JlZW5Mb2NrZWRcIixcblx0XHRTY3JlZW5VbmxvY2tlZDogXCJhbmRyb2lkOlNjcmVlblVubG9ja2VkXCIsXG5cdH0pLFxuXHRDb21tb246IE9iamVjdC5mcmVlemUoe1xuXHRcdEFwcGxpY2F0aW9uT3BlbmVkV2l0aEZpbGU6IFwiY29tbW9uOkFwcGxpY2F0aW9uT3BlbmVkV2l0aEZpbGVcIixcblx0XHRBcHBsaWNhdGlvblN0YXJ0ZWQ6IFwiY29tbW9uOkFwcGxpY2F0aW9uU3RhcnRlZFwiLFxuXHRcdEFwcGxpY2F0aW9uTGF1bmNoZWRXaXRoVXJsOiBcImNvbW1vbjpBcHBsaWNhdGlvbkxhdW5jaGVkV2l0aFVybFwiLFxuXHRcdFRoZW1lQ2hhbmdlZDogXCJjb21tb246VGhlbWVDaGFuZ2VkXCIsXG5cdFx0U3lzdGVtRGlkV2FrZTogXCJjb21tb246U3lzdGVtRGlkV2FrZVwiLFxuXHRcdFN5c3RlbVdpbGxTbGVlcDogXCJjb21tb246U3lzdGVtV2lsbFNsZWVwXCIsXG5cdFx0V2luZG93Q2xvc2luZzogXCJjb21tb246V2luZG93Q2xvc2luZ1wiLFxuXHRcdFdpbmRvd0RpZE1vdmU6IFwiY29tbW9uOldpbmRvd0RpZE1vdmVcIixcblx0XHRXaW5kb3dEaWRSZXNpemU6IFwiY29tbW9uOldpbmRvd0RpZFJlc2l6ZVwiLFxuXHRcdFdpbmRvd0RQSUNoYW5nZWQ6IFwiY29tbW9uOldpbmRvd0RQSUNoYW5nZWRcIixcblx0XHRXaW5kb3dGaWxlc0Ryb3BwZWQ6IFwiY29tbW9uOldpbmRvd0ZpbGVzRHJvcHBlZFwiLFxuXHRcdFdpbmRvd0ZvY3VzOiBcImNvbW1vbjpXaW5kb3dGb2N1c1wiLFxuXHRcdFdpbmRvd0Z1bGxzY3JlZW46IFwiY29tbW9uOldpbmRvd0Z1bGxzY3JlZW5cIixcblx0XHRXaW5kb3dIaWRlOiBcImNvbW1vbjpXaW5kb3dIaWRlXCIsXG5cdFx0V2luZG93TG9zdEZvY3VzOiBcImNvbW1vbjpXaW5kb3dMb3N0Rm9jdXNcIixcblx0XHRXaW5kb3dNYXhpbWlzZTogXCJjb21tb246V2luZG93TWF4aW1pc2VcIixcblx0XHRXaW5kb3dNaW5pbWlzZTogXCJjb21tb246V2luZG93TWluaW1pc2VcIixcblx0XHRXaW5kb3dUb2dnbGVGcmFtZWxlc3M6IFwiY29tbW9uOldpbmRvd1RvZ2dsZUZyYW1lbGVzc1wiLFxuXHRcdFdpbmRvd1Jlc3RvcmU6IFwiY29tbW9uOldpbmRvd1Jlc3RvcmVcIixcblx0XHRXaW5kb3dSdW50aW1lUmVhZHk6IFwiY29tbW9uOldpbmRvd1J1bnRpbWVSZWFkeVwiLFxuXHRcdFdpbmRvd1Nob3c6IFwiY29tbW9uOldpbmRvd1Nob3dcIixcblx0XHRXaW5kb3dVbkZ1bGxzY3JlZW46IFwiY29tbW9uOldpbmRvd1VuRnVsbHNjcmVlblwiLFxuXHRcdFdpbmRvd1VuTWF4aW1pc2U6IFwiY29tbW9uOldpbmRvd1VuTWF4aW1pc2VcIixcblx0XHRXaW5kb3dVbk1pbmltaXNlOiBcImNvbW1vbjpXaW5kb3dVbk1pbmltaXNlXCIsXG5cdFx0V2luZG93Wm9vbTogXCJjb21tb246V2luZG93Wm9vbVwiLFxuXHRcdFdpbmRvd1pvb21JbjogXCJjb21tb246V2luZG93Wm9vbUluXCIsXG5cdFx0V2luZG93Wm9vbU91dDogXCJjb21tb246V2luZG93Wm9vbU91dFwiLFxuXHRcdFdpbmRvd1pvb21SZXNldDogXCJjb21tb246V2luZG93Wm9vbVJlc2V0XCIsXG5cdFx0QmF0dGVyeUNoYW5nZWQ6IFwiY29tbW9uOkJhdHRlcnlDaGFuZ2VkXCIsXG5cdFx0TmV0d29ya0NoYW5nZWQ6IFwiY29tbW9uOk5ldHdvcmtDaGFuZ2VkXCIsXG5cdFx0U2NyZWVuTG9ja2VkOiBcImNvbW1vbjpTY3JlZW5Mb2NrZWRcIixcblx0XHRTY3JlZW5VbmxvY2tlZDogXCJjb21tb246U2NyZWVuVW5sb2NrZWRcIixcblx0XHRMb3dNZW1vcnk6IFwiY29tbW9uOkxvd01lbW9yeVwiLFxuXHR9KSxcbn0pO1xuIiwgIi8qXG4gXyAgICAgX18gICAgIF8gX19cbnwgfCAgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG4vKipcbiAqIExvZ3MgYSBtZXNzYWdlIHRvIHRoZSBjb25zb2xlIHdpdGggY3VzdG9tIGZvcm1hdHRpbmcuXG4gKlxuICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBiZSBsb2dnZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWJ1Z0xvZyhtZXNzYWdlOiBhbnkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJyVjIHdhaWxzMyAlYyAnICsgbWVzc2FnZSArICcgJyxcbiAgICAgICAgJ2JhY2tncm91bmQ6ICNhYTAwMDA7IGNvbG9yOiAjZmZmOyBib3JkZXItcmFkaXVzOiAzcHggMHB4IDBweCAzcHg7IHBhZGRpbmc6IDFweDsgZm9udC1zaXplOiAwLjdyZW0nLFxuICAgICAgICAnYmFja2dyb3VuZDogIzAwOTkwMDsgY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDBweCAzcHggM3B4IDBweDsgcGFkZGluZzogMXB4OyBmb250LXNpemU6IDAuN3JlbSdcbiAgICApO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSB3ZWJ2aWV3IHN1cHBvcnRzIHRoZSB7QGxpbmsgTW91c2VFdmVudCNidXR0b25zfSBwcm9wZXJ0eS5cbiAqIExvb2tpbmcgYXQgeW91IG1hY09TIEhpZ2ggU2llcnJhIVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuVHJhY2tCdXR0b25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAobmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpKS5idXR0b25zID09PSAwO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBicm93c2VyIHN1cHBvcnRzIHJlbW92aW5nIGxpc3RlbmVycyBieSB0cmlnZ2VyaW5nIGFuIEFib3J0U2lnbmFsXG4gKiAoc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFRhcmdldC9hZGRFdmVudExpc3RlbmVyI3NpZ25hbCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5BYm9ydExpc3RlbmVycygpIHtcbiAgICBpZiAoIUV2ZW50VGFyZ2V0IHx8ICFBYm9ydFNpZ25hbCB8fCAhQWJvcnRDb250cm9sbGVyKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICBsZXQgcmVzdWx0ID0gdHJ1ZTtcblxuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBFdmVudFRhcmdldCgpO1xuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3Rlc3QnLCAoKSA9PiB7IHJlc3VsdCA9IGZhbHNlOyB9LCB7IHNpZ25hbDogY29udHJvbGxlci5zaWduYWwgfSk7XG4gICAgY29udHJvbGxlci5hYm9ydCgpO1xuICAgIHRhcmdldC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgndGVzdCcpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGNsb3Nlc3QgSFRNTEVsZW1lbnQgYW5jZXN0b3Igb2YgYW4gZXZlbnQncyB0YXJnZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBldmVudFRhcmdldChldmVudDogRXZlbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgaWYgKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBldmVudC50YXJnZXQ7XG4gICAgfSBlbHNlIGlmICghKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSAmJiBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBOb2RlKSB7XG4gICAgICAgIHJldHVybiBldmVudC50YXJnZXQucGFyZW50RWxlbWVudCA/PyBkb2N1bWVudC5ib2R5O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5ib2R5O1xuICAgIH1cbn1cblxuLyoqKlxuIFRoaXMgdGVjaG5pcXVlIGZvciBwcm9wZXIgbG9hZCBkZXRlY3Rpb24gaXMgdGFrZW4gZnJvbSBIVE1YOlxuXG4gQlNEIDItQ2xhdXNlIExpY2Vuc2VcblxuIENvcHlyaWdodCAoYykgMjAyMCwgQmlnIFNreSBTb2Z0d2FyZVxuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcblxuIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpc1xuIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuXG4gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb25cbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiXG4gQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEVcbiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SXG4gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVJcbiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLFxuIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFXG4gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cblxuICoqKi9cblxubGV0IGlzUmVhZHkgPSBmYWxzZTtcbmltcG9ydCB7IGhhc0RPTSB9IGZyb20gXCIuL2Vudmlyb25tZW50LmpzXCI7XG5cbmlmIChoYXNET00pIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgKCkgPT4geyBpc1JlYWR5ID0gdHJ1ZSB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdoZW5SZWFkeShjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICAgIGlmIChpc1JlYWR5IHx8IGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgY2FsbGJhY2spO1xuICAgIH1cbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHtuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lc30gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTY3JlZW4gfSBmcm9tIFwiLi9zY3JlZW5zLmpzXCI7XG5cbi8vIERyb3AgdGFyZ2V0IGNvbnN0YW50c1xuY29uc3QgRFJPUF9UQVJHRVRfQVRUUklCVVRFID0gJ2RhdGEtZmlsZS1kcm9wLXRhcmdldCc7XG5jb25zdCBEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MgPSAnZmlsZS1kcm9wLXRhcmdldC1hY3RpdmUnO1xubGV0IGN1cnJlbnREcm9wVGFyZ2V0OiBFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IFBvc2l0aW9uTWV0aG9kICAgICAgICAgICAgICAgICAgICA9IDA7XG5jb25zdCBDZW50ZXJNZXRob2QgICAgICAgICAgICAgICAgICAgICAgPSAxO1xuY29uc3QgQ2xvc2VNZXRob2QgICAgICAgICAgICAgICAgICAgICAgID0gMjtcbmNvbnN0IERpc2FibGVTaXplQ29uc3RyYWludHNNZXRob2QgICAgICA9IDM7XG5jb25zdCBFbmFibGVTaXplQ29uc3RyYWludHNNZXRob2QgICAgICAgPSA0O1xuY29uc3QgRm9jdXNNZXRob2QgICAgICAgICAgICAgICAgICAgICAgID0gNTtcbmNvbnN0IEZvcmNlUmVsb2FkTWV0aG9kICAgICAgICAgICAgICAgICA9IDY7XG5jb25zdCBGdWxsc2NyZWVuTWV0aG9kICAgICAgICAgICAgICAgICAgPSA3O1xuY29uc3QgR2V0U2NyZWVuTWV0aG9kICAgICAgICAgICAgICAgICAgID0gODtcbmNvbnN0IEdldFpvb21NZXRob2QgICAgICAgICAgICAgICAgICAgICA9IDk7XG5jb25zdCBIZWlnaHRNZXRob2QgICAgICAgICAgICAgICAgICAgICAgPSAxMDtcbmNvbnN0IEhpZGVNZXRob2QgICAgICAgICAgICAgICAgICAgICAgICA9IDExO1xuY29uc3QgSXNGb2N1c2VkTWV0aG9kICAgICAgICAgICAgICAgICAgID0gMTI7XG5jb25zdCBJc0Z1bGxzY3JlZW5NZXRob2QgICAgICAgICAgICAgICAgPSAxMztcbmNvbnN0IElzTWF4aW1pc2VkTWV0aG9kICAgICAgICAgICAgICAgICA9IDE0O1xuY29uc3QgSXNNaW5pbWlzZWRNZXRob2QgICAgICAgICAgICAgICAgID0gMTU7XG5jb25zdCBNYXhpbWlzZU1ldGhvZCAgICAgICAgICAgICAgICAgICAgPSAxNjtcbmNvbnN0IE1pbmltaXNlTWV0aG9kICAgICAgICAgICAgICAgICAgICA9IDE3O1xuY29uc3QgTmFtZU1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgID0gMTg7XG5jb25zdCBPcGVuRGV2VG9vbHNNZXRob2QgICAgICAgICAgICAgICAgPSAxOTtcbmNvbnN0IFJlbGF0aXZlUG9zaXRpb25NZXRob2QgICAgICAgICAgICA9IDIwO1xuY29uc3QgUmVsb2FkTWV0aG9kICAgICAgICAgICAgICAgICAgICAgID0gMjE7XG5jb25zdCBSZXNpemFibGVNZXRob2QgICAgICAgICAgICAgICAgICAgPSAyMjtcbmNvbnN0IFJlc3RvcmVNZXRob2QgICAgICAgICAgICAgICAgICAgICA9IDIzO1xuY29uc3QgU2V0UG9zaXRpb25NZXRob2QgICAgICAgICAgICAgICAgID0gMjQ7XG5jb25zdCBTZXRBbHdheXNPblRvcE1ldGhvZCAgICAgICAgICAgICAgPSAyNTtcbmNvbnN0IFNldEJhY2tncm91bmRDb2xvdXJNZXRob2QgICAgICAgICA9IDI2O1xuY29uc3QgU2V0RnJhbWVsZXNzTWV0aG9kICAgICAgICAgICAgICAgID0gMjc7XG5jb25zdCBTZXRGdWxsc2NyZWVuQnV0dG9uRW5hYmxlZE1ldGhvZCAgPSAyODtcbmNvbnN0IFNldE1heFNpemVNZXRob2QgICAgICAgICAgICAgICAgICA9IDI5O1xuY29uc3QgU2V0TWluU2l6ZU1ldGhvZCAgICAgICAgICAgICAgICAgID0gMzA7XG5jb25zdCBTZXRSZWxhdGl2ZVBvc2l0aW9uTWV0aG9kICAgICAgICAgPSAzMTtcbmNvbnN0IFNldFJlc2l6YWJsZU1ldGhvZCAgICAgICAgICAgICAgICA9IDMyO1xuY29uc3QgU2V0U2l6ZU1ldGhvZCAgICAgICAgICAgICAgICAgICAgID0gMzM7XG5jb25zdCBTZXRUaXRsZU1ldGhvZCAgICAgICAgICAgICAgICAgICAgPSAzNDtcbmNvbnN0IFNldFpvb21NZXRob2QgICAgICAgICAgICAgICAgICAgICA9IDM1O1xuY29uc3QgU2hvd01ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgID0gMzY7XG5jb25zdCBTaXplTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICAgPSAzNztcbmNvbnN0IFRvZ2dsZUZ1bGxzY3JlZW5NZXRob2QgICAgICAgICAgICA9IDM4O1xuY29uc3QgVG9nZ2xlTWF4aW1pc2VNZXRob2QgICAgICAgICAgICAgID0gMzk7XG5jb25zdCBUb2dnbGVGcmFtZWxlc3NNZXRob2QgICAgICAgICAgICAgPSA0MDsgXG5jb25zdCBVbkZ1bGxzY3JlZW5NZXRob2QgICAgICAgICAgICAgICAgPSA0MTtcbmNvbnN0IFVuTWF4aW1pc2VNZXRob2QgICAgICAgICAgICAgICAgICA9IDQyO1xuY29uc3QgVW5NaW5pbWlzZU1ldGhvZCAgICAgICAgICAgICAgICAgID0gNDM7XG5jb25zdCBXaWR0aE1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgPSA0NDtcbmNvbnN0IFpvb21NZXRob2QgICAgICAgICAgICAgICAgICAgICAgICA9IDQ1O1xuY29uc3QgWm9vbUluTWV0aG9kICAgICAgICAgICAgICAgICAgICAgID0gNDY7XG5jb25zdCBab29tT3V0TWV0aG9kICAgICAgICAgICAgICAgICAgICAgPSA0NztcbmNvbnN0IFpvb21SZXNldE1ldGhvZCAgICAgICAgICAgICAgICAgICA9IDQ4O1xuY29uc3QgU25hcEFzc2lzdE1ldGhvZCAgICAgICAgICAgICAgICAgID0gNDk7XG5jb25zdCBGaWxlc0Ryb3BwZWQgICAgICAgICAgICAgICAgICAgICAgPSA1MDtcbmNvbnN0IFByaW50TWV0aG9kICAgICAgICAgICAgICAgICAgICAgICA9IDUxO1xuY29uc3QgU2V0U2NyZWVuTWV0aG9kICAgICAgICAgICAgICAgICAgID0gNTI7XG5cbi8qKlxuICogRmluZHMgdGhlIG5lYXJlc3QgZHJvcCB0YXJnZXQgZWxlbWVudCBieSB3YWxraW5nIHVwIHRoZSBET00gdHJlZS5cbiAqL1xuZnVuY3Rpb24gZ2V0RHJvcFRhcmdldEVsZW1lbnQoZWxlbWVudDogRWxlbWVudCB8IG51bGwpOiBFbGVtZW50IHwgbnVsbCB7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudC5jbG9zZXN0KGBbJHtEUk9QX1RBUkdFVF9BVFRSSUJVVEV9XWApO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHdlIGNhbiB1c2UgV2ViVmlldzIncyBwb3N0TWVzc2FnZVdpdGhBZGRpdGlvbmFsT2JqZWN0cyAoV2luZG93cylcbiAqIEFsc28gY2hlY2tzIHRoYXQgRW5hYmxlRmlsZURyb3AgaXMgdHJ1ZSBmb3IgdGhpcyB3aW5kb3cuXG4gKi9cbmZ1bmN0aW9uIGNhblJlc29sdmVGaWxlUGF0aHMoKTogYm9vbGVhbiB7XG4gICAgLy8gTXVzdCBoYXZlIFdlYlZpZXcyJ3MgcG9zdE1lc3NhZ2VXaXRoQWRkaXRpb25hbE9iamVjdHMgQVBJIChXaW5kb3dzIG9ubHkpXG4gICAgaWYgKCh3aW5kb3cgYXMgYW55KS5jaHJvbWU/LndlYnZpZXc/LnBvc3RNZXNzYWdlV2l0aEFkZGl0aW9uYWxPYmplY3RzID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBNdXN0IGhhdmUgRW5hYmxlRmlsZURyb3Agc2V0IHRvIHRydWUgZm9yIHRoaXMgd2luZG93XG4gICAgLy8gVGhpcyBmbGFnIGlzIHNldCBieSB0aGUgR28gYmFja2VuZCBkdXJpbmcgcnVudGltZSBpbml0aWFsaXphdGlvblxuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5mbGFncz8uZW5hYmxlRmlsZURyb3AgPT09IHRydWU7XG59XG5cbi8qKlxuICogU2VuZCBmaWxlIGRyb3AgdG8gYmFja2VuZCB2aWEgV2ViVmlldzIgKFdpbmRvd3Mgb25seSlcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUZpbGVQYXRocyh4OiBudW1iZXIsIHk6IG51bWJlciwgZmlsZXM6IEZpbGVbXSk6IHZvaWQge1xuICAgIGlmICgod2luZG93IGFzIGFueSkuY2hyb21lPy53ZWJ2aWV3Py5wb3N0TWVzc2FnZVdpdGhBZGRpdGlvbmFsT2JqZWN0cykge1xuICAgICAgICAod2luZG93IGFzIGFueSkuY2hyb21lLndlYnZpZXcucG9zdE1lc3NhZ2VXaXRoQWRkaXRpb25hbE9iamVjdHMoYGZpbGU6ZHJvcDoke3h9OiR7eX1gLCBmaWxlcyk7XG4gICAgfVxufVxuXG4vLyBOYXRpdmUgZHJhZyBzdGF0ZSAoTGludXgvbWFjT1MgaW50ZXJjZXB0IERPTSBkcmFnIGV2ZW50cylcbmxldCBuYXRpdmVEcmFnQWN0aXZlID0gZmFsc2U7XG5cbi8qKlxuICogQ2xlYW5zIHVwIG5hdGl2ZSBkcmFnIHN0YXRlIGFuZCBob3ZlciBlZmZlY3RzLlxuICogQ2FsbGVkIG9uIGRyb3Agb3Igd2hlbiBkcmFnIGxlYXZlcyB0aGUgd2luZG93LlxuICovXG5mdW5jdGlvbiBjbGVhbnVwTmF0aXZlRHJhZygpOiB2b2lkIHtcbiAgICBuYXRpdmVEcmFnQWN0aXZlID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnREcm9wVGFyZ2V0KSB7XG4gICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgY3VycmVudERyb3BUYXJnZXQgPSBudWxsO1xuICAgIH1cbn1cblxuLyoqXG4gKiBDYWxsZWQgZnJvbSBHbyB3aGVuIGEgZmlsZSBkcmFnIGVudGVycyB0aGUgd2luZG93IG9uIExpbnV4L21hY09TLlxuICovXG5mdW5jdGlvbiBoYW5kbGVEcmFnRW50ZXIoKTogdm9pZCB7XG4gICAgLy8gQ2hlY2sgaWYgZmlsZSBkcm9wcyBhcmUgZW5hYmxlZCBmb3IgdGhpcyB3aW5kb3dcbiAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm47IC8vIEZpbGUgZHJvcHMgZGlzYWJsZWQsIGRvbid0IGFjdGl2YXRlIGRyYWcgc3RhdGVcbiAgICB9XG4gICAgbmF0aXZlRHJhZ0FjdGl2ZSA9IHRydWU7XG59XG5cbi8qKlxuICogQ2FsbGVkIGZyb20gR28gd2hlbiBhIGZpbGUgZHJhZyBsZWF2ZXMgdGhlIHdpbmRvdyBvbiBMaW51eC9tYWNPUy5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlRHJhZ0xlYXZlKCk6IHZvaWQge1xuICAgIGNsZWFudXBOYXRpdmVEcmFnKCk7XG59XG5cbi8qKlxuICogQ2FsbGVkIGZyb20gR28gZHVyaW5nIGZpbGUgZHJhZyB0byB1cGRhdGUgaG92ZXIgc3RhdGUgb24gTGludXgvbWFjT1MuXG4gKiBAcGFyYW0geCAtIFggY29vcmRpbmF0ZSBpbiBDU1MgcGl4ZWxzXG4gKiBAcGFyYW0geSAtIFkgY29vcmRpbmF0ZSBpbiBDU1MgcGl4ZWxzXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZURyYWdPdmVyKHg6IG51bWJlciwgeTogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCFuYXRpdmVEcmFnQWN0aXZlKSByZXR1cm47XG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgZmlsZSBkcm9wcyBhcmUgZW5hYmxlZCBmb3IgdGhpcyB3aW5kb3dcbiAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm47IC8vIEZpbGUgZHJvcHMgZGlzYWJsZWQsIGRvbid0IHNob3cgaG92ZXIgZWZmZWN0c1xuICAgIH1cbiAgICBcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh4LCB5KTtcbiAgICBjb25zdCBkcm9wVGFyZ2V0ID0gZ2V0RHJvcFRhcmdldEVsZW1lbnQodGFyZ2V0RWxlbWVudCk7XG4gICAgXG4gICAgaWYgKGN1cnJlbnREcm9wVGFyZ2V0ICYmIGN1cnJlbnREcm9wVGFyZ2V0ICE9PSBkcm9wVGFyZ2V0KSB7XG4gICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKGRyb3BUYXJnZXQpIHtcbiAgICAgICAgZHJvcFRhcmdldC5jbGFzc0xpc3QuYWRkKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gZHJvcFRhcmdldDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IG51bGw7XG4gICAgfVxufVxuXG5cblxuLy8gRXhwb3J0IHRoZSBoYW5kbGVycyBmb3IgdXNlIGJ5IEdvIHZpYSBpbmRleC50c1xuZXhwb3J0IHsgaGFuZGxlRHJhZ0VudGVyLCBoYW5kbGVEcmFnTGVhdmUsIGhhbmRsZURyYWdPdmVyIH07XG5cbi8qKlxuICogQSByZWNvcmQgZGVzY3JpYmluZyB0aGUgcG9zaXRpb24gb2YgYSB3aW5kb3cuXG4gKi9cbmludGVyZmFjZSBQb3NpdGlvbiB7XG4gICAgLyoqIFRoZSBob3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuICovXG4gICAgeDogbnVtYmVyO1xuICAgIC8qKiBUaGUgdmVydGljYWwgcG9zaXRpb24gb2YgdGhlIHdpbmRvdy4gKi9cbiAgICB5OiBudW1iZXI7XG59XG5cbi8qKlxuICogQSByZWNvcmQgZGVzY3JpYmluZyB0aGUgc2l6ZSBvZiBhIHdpbmRvdy5cbiAqL1xuaW50ZXJmYWNlIFNpemUge1xuICAgIC8qKiBUaGUgd2lkdGggb2YgdGhlIHdpbmRvdy4gKi9cbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIC8qKiBUaGUgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuICovXG4gICAgaGVpZ2h0OiBudW1iZXI7XG59XG5cbi8vIFByaXZhdGUgZmllbGQgbmFtZXMuXG5jb25zdCBjYWxsZXJTeW0gPSBTeW1ib2woXCJjYWxsZXJcIik7XG5cbmNsYXNzIFdpbmRvdyB7XG4gICAgLy8gUHJpdmF0ZSBmaWVsZHMuXG4gICAgcHJpdmF0ZSBbY2FsbGVyU3ltXTogKG1lc3NhZ2U6IG51bWJlciwgYXJncz86IGFueSkgPT4gUHJvbWlzZTxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGlzZXMgYSB3aW5kb3cgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgd2luZG93LlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZyA9ICcnKSB7XG4gICAgICAgIHRoaXNbY2FsbGVyU3ltXSA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuV2luZG93LCBuYW1lKVxuXG4gICAgICAgIC8vIGJpbmQgaW5zdGFuY2UgbWV0aG9kIHRvIG1ha2UgdGhlbSBlYXNpbHkgdXNhYmxlIGluIGV2ZW50IGhhbmRsZXJzXG4gICAgICAgIGZvciAoY29uc3QgbWV0aG9kIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFdpbmRvdy5wcm90b3R5cGUpKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWV0aG9kICE9PSBcImNvbnN0cnVjdG9yXCJcbiAgICAgICAgICAgICAgICAmJiB0eXBlb2YgKHRoaXMgYXMgYW55KVttZXRob2RdID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICh0aGlzIGFzIGFueSlbbWV0aG9kXSA9ICh0aGlzIGFzIGFueSlbbWV0aG9kXS5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgc3BlY2lmaWVkIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHdpbmRvdyB0byBnZXQuXG4gICAgICogQHJldHVybnMgVGhlIGNvcnJlc3BvbmRpbmcgd2luZG93IG9iamVjdC5cbiAgICAgKi9cbiAgICBHZXQobmFtZTogc3RyaW5nKTogV2luZG93IHtcbiAgICAgICAgcmV0dXJuIG5ldyBXaW5kb3cobmFtZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgUG9zaXRpb24oKTogUHJvbWlzZTxQb3NpdGlvbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFBvc2l0aW9uTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDZW50ZXJzIHRoZSB3aW5kb3cgb24gdGhlIHNjcmVlbi5cbiAgICAgKi9cbiAgICBDZW50ZXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oQ2VudGVyTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBDbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShDbG9zZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgbWluL21heCBzaXplIGNvbnN0cmFpbnRzLlxuICAgICAqL1xuICAgIERpc2FibGVTaXplQ29uc3RyYWludHMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oRGlzYWJsZVNpemVDb25zdHJhaW50c01ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcyBtaW4vbWF4IHNpemUgY29uc3RyYWludHMuXG4gICAgICovXG4gICAgRW5hYmxlU2l6ZUNvbnN0cmFpbnRzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKEVuYWJsZVNpemVDb25zdHJhaW50c01ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9jdXNlcyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIEZvY3VzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKEZvY3VzTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb3JjZXMgdGhlIHdpbmRvdyB0byByZWxvYWQgdGhlIHBhZ2UgYXNzZXRzLlxuICAgICAqL1xuICAgIEZvcmNlUmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKEZvcmNlUmVsb2FkTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTd2l0Y2hlcyB0aGUgd2luZG93IHRvIGZ1bGxzY3JlZW4gbW9kZS5cbiAgICAgKi9cbiAgICBGdWxsc2NyZWVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKEZ1bGxzY3JlZW5NZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHNjcmVlbiB0aGF0IHRoZSB3aW5kb3cgaXMgb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgc2NyZWVuIHRoZSB3aW5kb3cgaXMgY3VycmVudGx5IG9uLlxuICAgICAqL1xuICAgIEdldFNjcmVlbigpOiBQcm9taXNlPFNjcmVlbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKEdldFNjcmVlbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCB6b29tIGxldmVsIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCB6b29tIGxldmVsLlxuICAgICAqL1xuICAgIEdldFpvb20oKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShHZXRab29tTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGhlaWdodCBvZiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIEhlaWdodCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKEhlaWdodE1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGlkZXMgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBIaWRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKEhpZGVNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2luZG93IGlzIGZvY3VzZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB3aW5kb3cgaXMgY3VycmVudGx5IGZvY3VzZWQuXG4gICAgICovXG4gICAgSXNGb2N1c2VkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKElzRm9jdXNlZE1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB3aW5kb3cgaXMgZnVsbHNjcmVlbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHdpbmRvdyBpcyBjdXJyZW50bHkgZnVsbHNjcmVlbi5cbiAgICAgKi9cbiAgICBJc0Z1bGxzY3JlZW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oSXNGdWxsc2NyZWVuTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHdpbmRvdyBpcyBtYXhpbWlzZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB3aW5kb3cgaXMgY3VycmVudGx5IG1heGltaXNlZC5cbiAgICAgKi9cbiAgICBJc01heGltaXNlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShJc01heGltaXNlZE1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB3aW5kb3cgaXMgbWluaW1pc2VkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBtaW5pbWlzZWQuXG4gICAgICovXG4gICAgSXNNaW5pbWlzZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oSXNNaW5pbWlzZWRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1heGltaXNlcyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIE1heGltaXNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKE1heGltaXNlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNaW5pbWlzZXMgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBNaW5pbWlzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShNaW5pbWlzZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgd2luZG93LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIG5hbWUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBOYW1lKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oTmFtZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgdGhlIGRldmVsb3BtZW50IHRvb2xzIHBhbmUuXG4gICAgICovXG4gICAgT3BlbkRldlRvb2xzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKE9wZW5EZXZUb29sc01ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdyB0byB0aGUgc2NyZWVuLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBSZWxhdGl2ZVBvc2l0aW9uKCk6IFByb21pc2U8UG9zaXRpb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShSZWxhdGl2ZVBvc2l0aW9uTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWxvYWRzIHRoZSBwYWdlIGFzc2V0cy5cbiAgICAgKi9cbiAgICBSZWxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oUmVsb2FkTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHdpbmRvdyBpcyByZXNpemFibGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB3aW5kb3cgaXMgY3VycmVudGx5IHJlc2l6YWJsZS5cbiAgICAgKi9cbiAgICBSZXNpemFibGUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oUmVzaXphYmxlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXN0b3JlcyB0aGUgd2luZG93IHRvIGl0cyBwcmV2aW91cyBzdGF0ZSBpZiBpdCB3YXMgcHJldmlvdXNseSBtaW5pbWlzZWQsIG1heGltaXNlZCBvciBmdWxsc2NyZWVuLlxuICAgICAqL1xuICAgIFJlc3RvcmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oUmVzdG9yZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB4IC0gVGhlIGRlc2lyZWQgaG9yaXpvbnRhbCBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgd2luZG93LlxuICAgICAqIEBwYXJhbSB5IC0gVGhlIGRlc2lyZWQgdmVydGljYWwgYWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRQb3NpdGlvbih4OiBudW1iZXIsIHk6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldFBvc2l0aW9uTWV0aG9kLCB7IHgsIHkgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgd2luZG93IHRvIGJlIGFsd2F5cyBvbiB0b3AuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWx3YXlzT25Ub3AgLSBXaGV0aGVyIHRoZSB3aW5kb3cgc2hvdWxkIHN0YXkgb24gdG9wLlxuICAgICAqL1xuICAgIFNldEFsd2F5c09uVG9wKGFsd2F5c09uVG9wOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0QWx3YXlzT25Ub3BNZXRob2QsIHsgYWx3YXlzT25Ub3AgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvdXIgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByIC0gVGhlIGRlc2lyZWQgcmVkIGNvbXBvbmVudCBvZiB0aGUgd2luZG93IGJhY2tncm91bmQuXG4gICAgICogQHBhcmFtIGcgLSBUaGUgZGVzaXJlZCBncmVlbiBjb21wb25lbnQgb2YgdGhlIHdpbmRvdyBiYWNrZ3JvdW5kLlxuICAgICAqIEBwYXJhbSBiIC0gVGhlIGRlc2lyZWQgYmx1ZSBjb21wb25lbnQgb2YgdGhlIHdpbmRvdyBiYWNrZ3JvdW5kLlxuICAgICAqIEBwYXJhbSBhIC0gVGhlIGRlc2lyZWQgYWxwaGEgY29tcG9uZW50IG9mIHRoZSB3aW5kb3cgYmFja2dyb3VuZC5cbiAgICAgKi9cbiAgICBTZXRCYWNrZ3JvdW5kQ29sb3VyKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIsIGE6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldEJhY2tncm91bmRDb2xvdXJNZXRob2QsIHsgciwgZywgYiwgYSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRoZSB3aW5kb3cgZnJhbWUgYW5kIHRpdGxlIGJhci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmcmFtZWxlc3MgLSBXaGV0aGVyIHRoZSB3aW5kb3cgc2hvdWxkIGJlIGZyYW1lbGVzcy5cbiAgICAgKi9cbiAgICBTZXRGcmFtZWxlc3MoZnJhbWVsZXNzOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0RnJhbWVsZXNzTWV0aG9kLCB7IGZyYW1lbGVzcyB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNhYmxlcyB0aGUgc3lzdGVtIGZ1bGxzY3JlZW4gYnV0dG9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIGVuYWJsZWQgLSBXaGV0aGVyIHRoZSBmdWxsc2NyZWVuIGJ1dHRvbiBzaG91bGQgYmUgZW5hYmxlZC5cbiAgICAgKi9cbiAgICBTZXRGdWxsc2NyZWVuQnV0dG9uRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0RnVsbHNjcmVlbkJ1dHRvbkVuYWJsZWRNZXRob2QsIHsgZW5hYmxlZCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB3aWR0aCAtIFRoZSBkZXNpcmVkIG1heGltdW0gd2lkdGggb2YgdGhlIHdpbmRvdy5cbiAgICAgKiBAcGFyYW0gaGVpZ2h0IC0gVGhlIGRlc2lyZWQgbWF4aW11bSBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRNYXhTaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0TWF4U2l6ZU1ldGhvZCwgeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIG1pbmltdW0gc2l6ZSBvZiB0aGUgd2luZG93LlxuICAgICAqXG4gICAgICogQHBhcmFtIHdpZHRoIC0gVGhlIGRlc2lyZWQgbWluaW11bSB3aWR0aCBvZiB0aGUgd2luZG93LlxuICAgICAqIEBwYXJhbSBoZWlnaHQgLSBUaGUgZGVzaXJlZCBtaW5pbXVtIGhlaWdodCBvZiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFNldE1pblNpemUod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRNaW5TaXplTWV0aG9kLCB7IHdpZHRoLCBoZWlnaHQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdyB0byB0aGUgc2NyZWVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHggLSBUaGUgZGVzaXJlZCBob3Jpem9udGFsIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICogQHBhcmFtIHkgLSBUaGUgZGVzaXJlZCB2ZXJ0aWNhbCByZWxhdGl2ZSBwb3NpdGlvbiBvZiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFNldFJlbGF0aXZlUG9zaXRpb24oeDogbnVtYmVyLCB5OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRSZWxhdGl2ZVBvc2l0aW9uTWV0aG9kLCB7IHgsIHkgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB3aGV0aGVyIHRoZSB3aW5kb3cgaXMgcmVzaXphYmxlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlc2l6YWJsZSAtIFdoZXRoZXIgdGhlIHdpbmRvdyBzaG91bGQgYmUgcmVzaXphYmxlLlxuICAgICAqL1xuICAgIFNldFJlc2l6YWJsZShyZXNpemFibGU6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRSZXNpemFibGVNZXRob2QsIHsgcmVzaXphYmxlIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB3aWR0aCAtIFRoZSBkZXNpcmVkIHdpZHRoIG9mIHRoZSB3aW5kb3cuXG4gICAgICogQHBhcmFtIGhlaWdodCAtIFRoZSBkZXNpcmVkIGhlaWdodCBvZiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFNldFNpemUod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRTaXplTWV0aG9kLCB7IHdpZHRoLCBoZWlnaHQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdGl0bGUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0aXRsZSAtIFRoZSBkZXNpcmVkIHRpdGxlIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgU2V0VGl0bGUodGl0bGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldFRpdGxlTWV0aG9kLCB7IHRpdGxlIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHpvb20gbGV2ZWwgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB6b29tIC0gVGhlIGRlc2lyZWQgem9vbSBsZXZlbC5cbiAgICAgKi9cbiAgICBTZXRab29tKHpvb206IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldFpvb21NZXRob2QsIHsgem9vbSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93cyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFNob3coKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2hvd01ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgd2luZG93LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFNpemUoKTogUHJvbWlzZTxTaXplPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2l6ZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB0aGUgd2luZG93IGJldHdlZW4gZnVsbHNjcmVlbiBhbmQgbm9ybWFsLlxuICAgICAqL1xuICAgIFRvZ2dsZUZ1bGxzY3JlZW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oVG9nZ2xlRnVsbHNjcmVlbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB0aGUgd2luZG93IGJldHdlZW4gbWF4aW1pc2VkIGFuZCBub3JtYWwuXG4gICAgICovXG4gICAgVG9nZ2xlTWF4aW1pc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oVG9nZ2xlTWF4aW1pc2VNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIHdpbmRvdyBiZXR3ZWVuIGZyYW1lbGVzcyBhbmQgbm9ybWFsLlxuICAgICAqL1xuICAgIFRvZ2dsZUZyYW1lbGVzcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShUb2dnbGVGcmFtZWxlc3NNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVuLWZ1bGxzY3JlZW5zIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgVW5GdWxsc2NyZWVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFVuRnVsbHNjcmVlbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVW4tbWF4aW1pc2VzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgVW5NYXhpbWlzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShVbk1heGltaXNlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbi1taW5pbWlzZXMgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBVbk1pbmltaXNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFVuTWluaW1pc2VNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHdpZHRoIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCB3aWR0aCBvZiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFdpZHRoKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oV2lkdGhNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFpvb21zIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgWm9vbSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShab29tTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmNyZWFzZXMgdGhlIHpvb20gbGV2ZWwgb2YgdGhlIHdlYnZpZXcgY29udGVudC5cbiAgICAgKi9cbiAgICBab29tSW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oWm9vbUluTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWNyZWFzZXMgdGhlIHpvb20gbGV2ZWwgb2YgdGhlIHdlYnZpZXcgY29udGVudC5cbiAgICAgKi9cbiAgICBab29tT3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFpvb21PdXRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2V0cyB0aGUgem9vbSBsZXZlbCBvZiB0aGUgd2VidmlldyBjb250ZW50LlxuICAgICAqL1xuICAgIFpvb21SZXNldCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShab29tUmVzZXRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgZmlsZSBkcm9wcyBvcmlnaW5hdGluZyBmcm9tIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgKGUuZy4sIG1hY09TL0xpbnV4IG5hdGl2ZSBkcmFnLWFuZC1kcm9wKS5cbiAgICAgKiBHYXRoZXJzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkcm9wIHRhcmdldCBlbGVtZW50IGFuZCBzZW5kcyBpdCBiYWNrIHRvIHRoZSBHbyBiYWNrZW5kLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVuYW1lcyAtIEFuIGFycmF5IG9mIGZpbGUgcGF0aHMgKHN0cmluZ3MpIHRoYXQgd2VyZSBkcm9wcGVkLlxuICAgICAqIEBwYXJhbSB4IC0gVGhlIHgtY29vcmRpbmF0ZSBvZiB0aGUgZHJvcCBldmVudCAoQ1NTIHBpeGVscykuXG4gICAgICogQHBhcmFtIHkgLSBUaGUgeS1jb29yZGluYXRlIG9mIHRoZSBkcm9wIGV2ZW50IChDU1MgcGl4ZWxzKS5cbiAgICAgKi9cbiAgICBIYW5kbGVQbGF0Zm9ybUZpbGVEcm9wKGZpbGVuYW1lczogc3RyaW5nW10sIHg6IG51bWJlciwgeTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIC8vIENoZWNrIGlmIGZpbGUgZHJvcHMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgd2luZG93XG4gICAgICAgIGlmICgod2luZG93IGFzIGFueSkuX3dhaWxzPy5mbGFncz8uZW5hYmxlRmlsZURyb3AgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm47IC8vIEZpbGUgZHJvcHMgZGlzYWJsZWQsIGlnbm9yZSB0aGUgZHJvcFxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh4LCB5KTtcbiAgICAgICAgY29uc3QgZHJvcFRhcmdldCA9IGdldERyb3BUYXJnZXRFbGVtZW50KGVsZW1lbnQpO1xuXG4gICAgICAgIGlmICghZHJvcFRhcmdldCkge1xuICAgICAgICAgICAgLy8gRHJvcCB3YXMgbm90IG9uIGEgZGVzaWduYXRlZCBkcm9wIHRhcmdldCAtIGlnbm9yZVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudERldGFpbHMgPSB7XG4gICAgICAgICAgICBpZDogZHJvcFRhcmdldC5pZCxcbiAgICAgICAgICAgIGNsYXNzTGlzdDogQXJyYXkuZnJvbShkcm9wVGFyZ2V0LmNsYXNzTGlzdCksXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7fSBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgICAgICB9O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRyb3BUYXJnZXQuYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgYXR0ciA9IGRyb3BUYXJnZXQuYXR0cmlidXRlc1tpXTtcbiAgICAgICAgICAgIGVsZW1lbnREZXRhaWxzLmF0dHJpYnV0ZXNbYXR0ci5uYW1lXSA9IGF0dHIudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICAgICAgZmlsZW5hbWVzLFxuICAgICAgICAgICAgeCxcbiAgICAgICAgICAgIHksXG4gICAgICAgICAgICBlbGVtZW50RGV0YWlscyxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzW2NhbGxlclN5bV0oRmlsZXNEcm9wcGVkLCBwYXlsb2FkKTtcbiAgICAgICAgXG4gICAgICAgIC8vIENsZWFuIHVwIG5hdGl2ZSBkcmFnIHN0YXRlIGFmdGVyIGRyb3BcbiAgICAgICAgY2xlYW51cE5hdGl2ZURyYWcoKTtcbiAgICB9XG4gIFxuICAgIC8qKlxuICAgICAqIE1vdmVzIHRoZSB3aW5kb3cgdG8gdGhlIGNlbnRlciBvZiB0aGUgc3BlY2lmaWVkIHNjcmVlbidzIHdvcmsgYXJlYS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY3JlZW5JRCAtIFRoZSBJRCBvZiB0aGUgdGFyZ2V0IHNjcmVlbi5cbiAgICAgKi9cbiAgICBTZXRTY3JlZW4oc2NyZWVuSUQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldFNjcmVlbk1ldGhvZCwgeyBzY3JlZW5JRCB9KTtcbiAgICB9XG5cbiAgICAvKiBUcmlnZ2VycyBXaW5kb3dzIDExIFNuYXAgQXNzaXN0IGZlYXR1cmUgKFdpbmRvd3Mgb25seSkuXG4gICAgICogVGhpcyBpcyBlcXVpdmFsZW50IHRvIHByZXNzaW5nIFdpbitaIGFuZCBzaG93cyBzbmFwIGxheW91dCBvcHRpb25zLlxuICAgICAqL1xuICAgIFNuYXBBc3Npc3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU25hcEFzc2lzdE1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgdGhlIHByaW50IGRpYWxvZyBmb3IgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBQcmludCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShQcmludE1ldGhvZCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSB3aW5kb3cgd2l0aGluIHdoaWNoIHRoZSBzY3JpcHQgaXMgcnVubmluZy5cbiAqL1xuY29uc3QgdGhpc1dpbmRvdyA9IG5ldyBXaW5kb3coJycpO1xuXG4vKipcbiAqIFNldHMgdXAgZ2xvYmFsIGRyYWcgYW5kIGRyb3AgZXZlbnQgbGlzdGVuZXJzIGZvciBmaWxlIGRyb3BzLlxuICogSGFuZGxlcyB2aXN1YWwgZmVlZGJhY2sgKGhvdmVyIHN0YXRlKSBhbmQgZmlsZSBkcm9wIHByb2Nlc3NpbmcuXG4gKi9cbmZ1bmN0aW9uIHNldHVwRHJvcFRhcmdldExpc3RlbmVycygpIHtcbiAgICBjb25zdCBkb2NFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGxldCBkcmFnRW50ZXJDb3VudGVyID0gMDtcblxuICAgIGRvY0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VudGVyJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBPbmx5IGhhbmRsZSBmaWxlIGRyYWdzLCBsZXQgb3RoZXIgZHJhZ3MgcGFzcyB0aHJvdWdoXG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gQWx3YXlzIHByZXZlbnQgZGVmYXVsdCB0byBzdG9wIGJyb3dzZXIgbmF2aWdhdGlvblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBjaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbm9uZSc7IC8vIFNob3cgXCJubyBkcm9wXCIgY3Vyc29yXG4gICAgICAgICAgICByZXR1cm47IC8vIEZpbGUgZHJvcHMgZGlzYWJsZWQsIGRvbid0IHNob3cgaG92ZXIgZWZmZWN0c1xuICAgICAgICB9XG4gICAgICAgIGRyYWdFbnRlckNvdW50ZXIrKztcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xuICAgICAgICBjb25zdCBkcm9wVGFyZ2V0ID0gZ2V0RHJvcFRhcmdldEVsZW1lbnQodGFyZ2V0RWxlbWVudCk7XG5cbiAgICAgICAgLy8gVXBkYXRlIGhvdmVyIHN0YXRlXG4gICAgICAgIGlmIChjdXJyZW50RHJvcFRhcmdldCAmJiBjdXJyZW50RHJvcFRhcmdldCAhPT0gZHJvcFRhcmdldCkge1xuICAgICAgICAgICAgY3VycmVudERyb3BUYXJnZXQuY2xhc3NMaXN0LnJlbW92ZShEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGRyb3BUYXJnZXQuY2xhc3NMaXN0LmFkZChEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSc7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IGRyb3BUYXJnZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sIGZhbHNlKTtcblxuICAgIGRvY0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFldmVudC5kYXRhVHJhbnNmZXI/LnR5cGVzLmluY2x1ZGVzKCdGaWxlcycpKSB7XG4gICAgICAgICAgICByZXR1cm47IC8vIE9ubHkgaGFuZGxlIGZpbGUgZHJhZ3NcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBBbHdheXMgcHJldmVudCBkZWZhdWx0IHRvIHN0b3AgYnJvd3NlciBuYXZpZ2F0aW9uXG4gICAgICAgIC8vIE9uIFdpbmRvd3MsIGNoZWNrIGlmIGZpbGUgZHJvcHMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgd2luZG93XG4gICAgICAgIGlmICgod2luZG93IGFzIGFueSkuX3dhaWxzPy5mbGFncz8uZW5hYmxlRmlsZURyb3AgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJzsgLy8gU2hvdyBcIm5vIGRyb3BcIiBjdXJzb3JcbiAgICAgICAgICAgIHJldHVybjsgLy8gRmlsZSBkcm9wcyBkaXNhYmxlZCwgZG9uJ3Qgc2hvdyBob3ZlciBlZmZlY3RzXG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIFVwZGF0ZSBkcm9wIHRhcmdldCBhcyBjdXJzb3IgbW92ZXNcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgICAgIGNvbnN0IGRyb3BUYXJnZXQgPSBnZXREcm9wVGFyZ2V0RWxlbWVudCh0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgXG4gICAgICAgIGlmIChjdXJyZW50RHJvcFRhcmdldCAmJiBjdXJyZW50RHJvcFRhcmdldCAhPT0gZHJvcFRhcmdldCkge1xuICAgICAgICAgICAgY3VycmVudERyb3BUYXJnZXQuY2xhc3NMaXN0LnJlbW92ZShEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZHJvcFRhcmdldCkge1xuICAgICAgICAgICAgaWYgKCFkcm9wVGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpKSB7XG4gICAgICAgICAgICAgICAgZHJvcFRhcmdldC5jbGFzc0xpc3QuYWRkKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5JztcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gZHJvcFRhcmdldDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ25vbmUnO1xuICAgICAgICAgICAgY3VycmVudERyb3BUYXJnZXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfSwgZmFsc2UpO1xuXG4gICAgZG9jRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnbGVhdmUnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFldmVudC5kYXRhVHJhbnNmZXI/LnR5cGVzLmluY2x1ZGVzKCdGaWxlcycpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gQWx3YXlzIHByZXZlbnQgZGVmYXVsdCB0byBzdG9wIGJyb3dzZXIgbmF2aWdhdGlvblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBjaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBPbiBMaW51eC9XZWJLaXRHVEsgYW5kIG1hY09TLCBkcmFnbGVhdmUgZmlyZXMgaW1tZWRpYXRlbHkgd2l0aCByZWxhdGVkVGFyZ2V0PW51bGwgd2hlbiBuYXRpdmVcbiAgICAgICAgLy8gZHJhZyBoYW5kbGluZyBpcyBpbnZvbHZlZC4gSWdub3JlIHRoZXNlIHNwdXJpb3VzIGV2ZW50cyAtIHdlJ2xsIGNsZWFuIHVwIG9uIGRyb3AgaW5zdGVhZC5cbiAgICAgICAgaWYgKGV2ZW50LnJlbGF0ZWRUYXJnZXQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgZHJhZ0VudGVyQ291bnRlci0tO1xuICAgICAgICBcbiAgICAgICAgaWYgKGRyYWdFbnRlckNvdW50ZXIgPT09IDAgfHwgXG4gICAgICAgICAgICAoY3VycmVudERyb3BUYXJnZXQgJiYgIWN1cnJlbnREcm9wVGFyZ2V0LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSkpKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudERyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgICAgICAgICAgICAgY3VycmVudERyb3BUYXJnZXQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZHJhZ0VudGVyQ291bnRlciA9IDA7XG4gICAgICAgIH1cbiAgICB9LCBmYWxzZSk7XG5cbiAgICBkb2NFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFldmVudC5kYXRhVHJhbnNmZXI/LnR5cGVzLmluY2x1ZGVzKCdGaWxlcycpKSB7XG4gICAgICAgICAgICByZXR1cm47IC8vIE9ubHkgaGFuZGxlIGZpbGUgZHJvcHNcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBBbHdheXMgcHJldmVudCBkZWZhdWx0IHRvIHN0b3AgYnJvd3NlciBuYXZpZ2F0aW9uXG4gICAgICAgIC8vIE9uIFdpbmRvd3MsIGNoZWNrIGlmIGZpbGUgZHJvcHMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgd2luZG93XG4gICAgICAgIGlmICgod2luZG93IGFzIGFueSkuX3dhaWxzPy5mbGFncz8uZW5hYmxlRmlsZURyb3AgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZHJhZ0VudGVyQ291bnRlciA9IDA7XG4gICAgICAgIFxuICAgICAgICBpZiAoY3VycmVudERyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9uIFdpbmRvd3MsIGhhbmRsZSBmaWxlIGRyb3BzIHZpYSBKYXZhU2NyaXB0XG4gICAgICAgIC8vIE9uIG1hY09TL0xpbnV4LCBuYXRpdmUgY29kZSB3aWxsIGNhbGwgSGFuZGxlUGxhdGZvcm1GaWxlRHJvcFxuICAgICAgICBpZiAoY2FuUmVzb2x2ZUZpbGVQYXRocygpKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlczogRmlsZVtdID0gW107XG4gICAgICAgICAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5raW5kID09PSAnZmlsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBpdGVtLmdldEFzRmlsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGUpIGZpbGVzLnB1c2goZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZXMucHVzaChmaWxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIChmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZUZpbGVQYXRocyhldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZLCBmaWxlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBmYWxzZSk7XG59XG5cbi8vIEluaXRpYWxpemUgbGlzdGVuZXJzIHdoZW4gdGhlIHNjcmlwdCBsb2Fkc1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgc2V0dXBEcm9wVGFyZ2V0TGlzdGVuZXJzKCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRoaXNXaW5kb3c7XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCAqIGFzIFJ1bnRpbWUgZnJvbSBcIi4uL0B3YWlsc2lvL3J1bnRpbWUvc3JjXCI7XG5cbi8vIE5PVEU6IHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBNVVNUIGJlIGltcG9ydGVkIGV4cGxpY2l0bHkgYmVjYXVzZSBvZiBob3cgZXNidWlsZCBpbmplY3Rpb24gd29ya3NcbmltcG9ydCB7IEVuYWJsZSBhcyBFbmFibGVXTUwgfSBmcm9tIFwiLi4vQHdhaWxzaW8vcnVudGltZS9zcmMvd21sXCI7XG5pbXBvcnQgeyBkZWJ1Z0xvZyB9IGZyb20gXCIuLi9Ad2FpbHNpby9ydW50aW1lL3NyYy91dGlsc1wiO1xuXG53aW5kb3cud2FpbHMgPSBSdW50aW1lO1xuRW5hYmxlV01MKCk7XG5cbmlmIChERUJVRykge1xuICAgIGRlYnVnTG9nKFwiV2FpbHMgUnVudGltZSBMb2FkZWRcIilcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHsgbmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXMgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLlN5c3RlbSk7XG5cbmNvbnN0IFN5c3RlbUlzRGFya01vZGUgPSAwO1xuY29uc3QgU3lzdGVtRW52aXJvbm1lbnQgPSAxO1xuY29uc3QgU3lzdGVtQ2FwYWJpbGl0aWVzID0gMjtcblxuY29uc3QgX2ludm9rZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gV2luZG93cyBXZWJWaWV3MlxuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLmNocm9tZT8ud2Vidmlldz8ucG9zdE1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiAod2luZG93IGFzIGFueSkuY2hyb21lLndlYnZpZXcucG9zdE1lc3NhZ2UuYmluZCgod2luZG93IGFzIGFueSkuY2hyb21lLndlYnZpZXcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG1hY09TL2lPUyBXS1dlYlZpZXdcbiAgICAgICAgZWxzZSBpZiAoKHdpbmRvdyBhcyBhbnkpLndlYmtpdD8ubWVzc2FnZUhhbmRsZXJzPy5bJ2V4dGVybmFsJ10/LnBvc3RNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLndlYmtpdC5tZXNzYWdlSGFuZGxlcnNbJ2V4dGVybmFsJ10ucG9zdE1lc3NhZ2UuYmluZCgod2luZG93IGFzIGFueSkud2Via2l0Lm1lc3NhZ2VIYW5kbGVyc1snZXh0ZXJuYWwnXSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQW5kcm9pZCBXZWJWaWV3IC0gdXNlcyBhZGRKYXZhc2NyaXB0SW50ZXJmYWNlIHdoaWNoIGV4cG9zZXMgd2luZG93LndhaWxzLmludm9rZVxuICAgICAgICBlbHNlIGlmICgod2luZG93IGFzIGFueSkud2FpbHM/Lmludm9rZSkge1xuICAgICAgICAgICAgcmV0dXJuIChtc2c6IGFueSkgPT4gKHdpbmRvdyBhcyBhbnkpLndhaWxzLmludm9rZSh0eXBlb2YgbXNnID09PSAnc3RyaW5nJyA/IG1zZyA6IEpTT04uc3RyaW5naWZ5KG1zZykpO1xuICAgICAgICB9XG4gICAgfSBjYXRjaChlKSB7fVxuXG4gICAgY29uc29sZS53YXJuKCdcXG4lY1x1MjZBMFx1RkUwRiBCcm93c2VyIEVudmlyb25tZW50IERldGVjdGVkICVjXFxuXFxuJWNPbmx5IFVJIHByZXZpZXdzIGFyZSBhdmFpbGFibGUgaW4gdGhlIGJyb3dzZXIuIEZvciBmdWxsIGZ1bmN0aW9uYWxpdHksIHBsZWFzZSBydW4gdGhlIGFwcGxpY2F0aW9uIGluIGRlc2t0b3AgbW9kZS5cXG5Nb3JlIGluZm9ybWF0aW9uIGF0OiBodHRwczovL3YzLndhaWxzLmlvL2xlYXJuL2J1aWxkLyN1c2luZy1hLWJyb3dzZXItZm9yLWRldmVsb3BtZW50XFxuJyxcbiAgICAgICAgJ2JhY2tncm91bmQ6ICNmZmZmZmY7IGNvbG9yOiAjMDAwMDAwOyBmb250LXdlaWdodDogYm9sZDsgcGFkZGluZzogNHB4IDhweDsgYm9yZGVyLXJhZGl1czogNHB4OyBib3JkZXI6IDJweCBzb2xpZCAjMDAwMDAwOycsXG4gICAgICAgICdiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsnLFxuICAgICAgICAnY29sb3I6ICNmZmZmZmY7IGZvbnQtc3R5bGU6IGl0YWxpYzsgZm9udC13ZWlnaHQ6IGJvbGQ7Jyk7XG4gICAgcmV0dXJuIG51bGw7XG59KSgpO1xuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlKG1zZzogYW55KTogdm9pZCB7XG4gICAgX2ludm9rZT8uKG1zZyk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBzeXN0ZW0gZGFyayBtb2RlIHN0YXR1cy5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyBpZiB0aGUgc3lzdGVtIGlzIGluIGRhcmsgbW9kZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzRGFya01vZGUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGNhbGwoU3lzdGVtSXNEYXJrTW9kZSk7XG59XG5cbi8qKlxuICogRmV0Y2hlcyB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBhcHBsaWNhdGlvbiBmcm9tIHRoZSBzZXJ2ZXIuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNhcGFiaWxpdGllcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIENhcGFiaWxpdGllcygpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgICByZXR1cm4gY2FsbChTeXN0ZW1DYXBhYmlsaXRpZXMpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9TSW5mbyB7XG4gICAgLyoqIFRoZSBicmFuZGluZyBvZiB0aGUgT1MuICovXG4gICAgQnJhbmRpbmc6IHN0cmluZztcbiAgICAvKiogVGhlIElEIG9mIHRoZSBPUy4gKi9cbiAgICBJRDogc3RyaW5nO1xuICAgIC8qKiBUaGUgbmFtZSBvZiB0aGUgT1MuICovXG4gICAgTmFtZTogc3RyaW5nO1xuICAgIC8qKiBUaGUgdmVyc2lvbiBvZiB0aGUgT1MuICovXG4gICAgVmVyc2lvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50SW5mbyB7XG4gICAgLyoqIFRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIHN5c3RlbS4gKi9cbiAgICBBcmNoOiBzdHJpbmc7XG4gICAgLyoqIFRydWUgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmcgaW4gZGVidWcgbW9kZSwgb3RoZXJ3aXNlIGZhbHNlLiAqL1xuICAgIERlYnVnOiBib29sZWFuO1xuICAgIC8qKiBUaGUgb3BlcmF0aW5nIHN5c3RlbSBpbiB1c2UuICovXG4gICAgT1M6IHN0cmluZztcbiAgICAvKiogRGV0YWlscyBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gKi9cbiAgICBPU0luZm86IE9TSW5mbztcbiAgICAvKiogQWRkaXRpb25hbCBwbGF0Zm9ybSBpbmZvcm1hdGlvbi4gKi9cbiAgICBQbGF0Zm9ybUluZm86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGVudmlyb25tZW50IGRldGFpbHMuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gb2JqZWN0IGNvbnRhaW5pbmcgT1MgYW5kIHN5c3RlbSBhcmNoaXRlY3R1cmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbnZpcm9ubWVudCgpOiBQcm9taXNlPEVudmlyb25tZW50SW5mbz4ge1xuICAgIHJldHVybiBjYWxsKFN5c3RlbUVudmlyb25tZW50KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbSBpcyBXaW5kb3dzLlxuICpcbiAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpcyBXaW5kb3dzLCBvdGhlcndpc2UgZmFsc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc1dpbmRvd3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmVudmlyb25tZW50Py5PUyA9PT0gXCJ3aW5kb3dzXCI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0gaXMgTGludXguXG4gKlxuICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0gaXMgTGludXgsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzTGludXgoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmVudmlyb25tZW50Py5PUyA9PT0gXCJsaW51eFwiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpcyBhIG1hY09TIG9wZXJhdGluZyBzeXN0ZW0uXG4gKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZW52aXJvbm1lbnQgaXMgbWFjT1MsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzTWFjKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1MgPT09IFwiZGFyd2luXCI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0gaXMgaU9TLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaXMgaU9TLCBvdGhlcndpc2UgZmFsc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc0lPUygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZW52aXJvbm1lbnQ/Lk9TID09PSBcImlvc1wiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtIGlzIEFuZHJvaWQuXG4gKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpcyBBbmRyb2lkLCBvdGhlcndpc2UgZmFsc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc0FuZHJvaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmVudmlyb25tZW50Py5PUyA9PT0gXCJhbmRyb2lkXCI7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBhcHAgaXMgcnVubmluZyBvbiBhIG1vYmlsZSBPUyAoaU9TIG9yIEFuZHJvaWQpLlxuICpcbiAqIEByZXR1cm5zIFRydWUgb24gaU9TIG9yIEFuZHJvaWQsIG90aGVyd2lzZSBmYWxzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBJc0lPUygpIHx8IElzQW5kcm9pZCgpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgYXBwIGlzIHJ1bm5pbmcgb24gYSBkZXNrdG9wIE9TIChtYWNPUywgV2luZG93cyBvciBMaW51eCkuXG4gKlxuICogQHJldHVybnMgVHJ1ZSBvbiBtYWNPUywgV2luZG93cyBvciBMaW51eCwgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNEZXNrdG9wKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBJc01hYygpIHx8IElzV2luZG93cygpIHx8IElzTGludXgoKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgYXJjaGl0ZWN0dXJlIGlzIEFNRDY0LlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgYXJjaGl0ZWN0dXJlIGlzIEFNRDY0LCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc0FNRDY0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uQXJjaCA9PT0gXCJhbWQ2NFwiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBhcmNoaXRlY3R1cmUgaXMgQVJNLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGN1cnJlbnQgYXJjaGl0ZWN0dXJlIGlzIEFSTSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNBUk0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmVudmlyb25tZW50Py5BcmNoID09PSBcImFybVwiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpcyBBUk02NCBhcmNoaXRlY3R1cmUuXG4gKlxuICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBlbnZpcm9ubWVudCBpcyBBUk02NCBhcmNoaXRlY3R1cmUsIG90aGVyd2lzZSByZXR1cm5zIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNBUk02NCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZW52aXJvbm1lbnQ/LkFyY2ggPT09IFwiYXJtNjRcIjtcbn1cblxuLyoqXG4gKiBSZXBvcnRzIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBydW4gaW4gZGVidWcgbW9kZS5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBhcHAgaXMgYmVpbmcgcnVuIGluIGRlYnVnIG1vZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc0RlYnVnKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmVudmlyb25tZW50Py5EZWJ1Zyk7XG59XG5cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHsgbmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXMgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5pbXBvcnQgeyBJc0RlYnVnIH0gZnJvbSBcIi4vc3lzdGVtLmpzXCI7XG5pbXBvcnQgeyBldmVudFRhcmdldCB9IGZyb20gXCIuL3V0aWxzLmpzXCI7XG5cbi8vIHNldHVwXG5pbXBvcnQgeyBoYXNET00gfSBmcm9tIFwiLi9lbnZpcm9ubWVudC5qc1wiO1xuXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgY29udGV4dE1lbnVIYW5kbGVyKTtcbn1cblxuY29uc3QgY2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuQ29udGV4dE1lbnUpO1xuXG5jb25zdCBDb250ZXh0TWVudU9wZW4gPSAwO1xuXG5mdW5jdGlvbiBvcGVuQ29udGV4dE1lbnUoaWQ6IHN0cmluZywgeDogbnVtYmVyLCB5OiBudW1iZXIsIGRhdGE6IGFueSk6IHZvaWQge1xuICAgIHZvaWQgY2FsbChDb250ZXh0TWVudU9wZW4sIHtpZCwgeCwgeSwgZGF0YX0pO1xufVxuXG5mdW5jdGlvbiBjb250ZXh0TWVudUhhbmRsZXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudFRhcmdldChldmVudCk7XG5cbiAgICAvLyBDaGVjayBmb3IgY3VzdG9tIGNvbnRleHQgbWVudVxuICAgIGNvbnN0IGN1c3RvbUNvbnRleHRNZW51ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1jdXN0b20tY29udGV4dG1lbnVcIikudHJpbSgpO1xuXG4gICAgaWYgKGN1c3RvbUNvbnRleHRNZW51KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0YXJnZXQpLmdldFByb3BlcnR5VmFsdWUoXCItLWN1c3RvbS1jb250ZXh0bWVudS1kYXRhXCIpO1xuICAgICAgICBvcGVuQ29udGV4dE1lbnUoY3VzdG9tQ29udGV4dE1lbnUsIGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFksIGRhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2Nlc3NEZWZhdWx0Q29udGV4dE1lbnUoZXZlbnQsIHRhcmdldCk7XG4gICAgfVxufVxuXG5cbi8qXG4tLWRlZmF1bHQtY29udGV4dG1lbnU6IGF1dG87IChkZWZhdWx0KSB3aWxsIHNob3cgdGhlIGRlZmF1bHQgY29udGV4dCBtZW51IGlmIGNvbnRlbnRFZGl0YWJsZSBpcyB0cnVlIE9SIHRleHQgaGFzIGJlZW4gc2VsZWN0ZWQgT1IgZWxlbWVudCBpcyBpbnB1dCBvciB0ZXh0YXJlYVxuLS1kZWZhdWx0LWNvbnRleHRtZW51OiBzaG93OyB3aWxsIGFsd2F5cyBzaG93IHRoZSBkZWZhdWx0IGNvbnRleHQgbWVudVxuLS1kZWZhdWx0LWNvbnRleHRtZW51OiBoaWRlOyB3aWxsIGFsd2F5cyBoaWRlIHRoZSBkZWZhdWx0IGNvbnRleHQgbWVudVxuXG5UaGlzIHJ1bGUgaXMgaW5oZXJpdGVkIGxpa2Ugbm9ybWFsIENTUyBydWxlcywgc28gbmVzdGluZyB3b3JrcyBhcyBleHBlY3RlZFxuKi9cbmZ1bmN0aW9uIHByb2Nlc3NEZWZhdWx0Q29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQsIHRhcmdldDogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBEZWJ1ZyBidWlsZHMgYWx3YXlzIHNob3cgdGhlIG1lbnVcbiAgICBpZiAoSXNEZWJ1ZygpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIGRlZmF1bHQgY29udGV4dCBtZW51XG4gICAgc3dpdGNoICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0YXJnZXQpLmdldFByb3BlcnR5VmFsdWUoXCItLWRlZmF1bHQtY29udGV4dG1lbnVcIikudHJpbSgpKSB7XG4gICAgICAgIGNhc2UgJ3Nob3cnOlxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjYXNlICdoaWRlJzpcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgY29udGVudEVkaXRhYmxlIGlzIHRydWVcbiAgICBpZiAodGFyZ2V0LmlzQ29udGVudEVkaXRhYmxlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0ZXh0IGhhcyBiZWVuIHNlbGVjdGVkXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIGNvbnN0IGhhc1NlbGVjdGlvbiA9IHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24udG9TdHJpbmcoKS5sZW5ndGggPiAwO1xuICAgIGlmIChoYXNTZWxlY3Rpb24pIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3Rpb24ucmFuZ2VDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KGkpO1xuICAgICAgICAgICAgY29uc3QgcmVjdHMgPSByYW5nZS5nZXRDbGllbnRSZWN0cygpO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCByZWN0cy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSByZWN0c1tqXTtcbiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChyZWN0LmxlZnQsIHJlY3QudG9wKSA9PT0gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0YWcgaXMgaW5wdXQgb3IgdGV4dGFyZWEuXG4gICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgfHwgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTFRleHRBcmVhRWxlbWVudCkge1xuICAgICAgICBpZiAoaGFzU2VsZWN0aW9uIHx8ICghdGFyZ2V0LnJlYWRPbmx5ICYmICF0YXJnZXQuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBoaWRlIGRlZmF1bHQgY29udGV4dCBtZW51XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBmcm9tIHRoZSBmbGFnIG1hcC5cbiAqXG4gKiBAcGFyYW0ga2V5IC0gVGhlIGtleSB0byByZXRyaWV2ZSB0aGUgdmFsdWUgZm9yLlxuICogQHJldHVybiBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gR2V0RmxhZyhrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5fd2FpbHMuZmxhZ3Nba2V5XTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byByZXRyaWV2ZSBmbGFnICdcIiArIGtleSArIFwiJzogXCIgKyBlLCB7IGNhdXNlOiBlIH0pO1xuICAgIH1cbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHsgaW52b2tlLCBJc1dpbmRvd3MsIElzTGludXggfSBmcm9tIFwiLi9zeXN0ZW0uanNcIjtcbmltcG9ydCB7IEdldEZsYWcgfSBmcm9tIFwiLi9mbGFncy5qc1wiO1xuaW1wb3J0IHsgY2FuVHJhY2tCdXR0b25zLCBldmVudFRhcmdldCB9IGZyb20gXCIuL3V0aWxzLmpzXCI7XG5cbi8vIFNldHVwXG5sZXQgY2FuRHJhZyA9IGZhbHNlO1xubGV0IGRyYWdnaW5nID0gZmFsc2U7XG5cbmxldCByZXNpemFibGUgPSBmYWxzZTtcbmxldCBjYW5SZXNpemUgPSBmYWxzZTtcbmxldCByZXNpemluZyA9IGZhbHNlO1xubGV0IHJlc2l6ZUVkZ2U6IHN0cmluZyA9IFwiXCI7XG5sZXQgZGVmYXVsdEN1cnNvciA9IFwiYXV0b1wiO1xuXG5sZXQgYnV0dG9ucyA9IDA7XG5pbXBvcnQgeyBoYXNET00gfSBmcm9tIFwiLi9lbnZpcm9ubWVudC5qc1wiO1xuXG5sZXQgYnV0dG9uc1RyYWNrZWQgPSBmYWxzZTtcblxuaWYgKGhhc0RPTSkge1xuICAgIGJ1dHRvbnNUcmFja2VkID0gY2FuVHJhY2tCdXR0b25zKCk7XG4gICAgd2luZG93Ll93YWlscyA9IHdpbmRvdy5fd2FpbHMgfHwge307XG4gICAgd2luZG93Ll93YWlscy5zZXRSZXNpemFibGUgPSAodmFsdWU6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgICAgICAgcmVzaXphYmxlID0gdmFsdWU7XG4gICAgICAgIGlmICghcmVzaXphYmxlKSB7XG4gICAgICAgICAgICAvLyBTdG9wIHJlc2l6aW5nIGlmIGluIHByb2dyZXNzLlxuICAgICAgICAgICAgY2FuUmVzaXplID0gcmVzaXppbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHNldFJlc2l6ZSgpO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuLy8gRGVmZXIgYXR0YWNoaW5nIG1vdXNlIGxpc3RlbmVycyB1bnRpbCB3ZSBrbm93IHdlJ3JlIG5vdCBvbiBtb2JpbGUuXG5sZXQgZHJhZ0luaXREb25lID0gZmFsc2U7XG5mdW5jdGlvbiBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBvcyA9ICh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmVudmlyb25tZW50Py5PUztcbiAgICBpZiAob3MgPT09IFwiaW9zXCIgfHwgb3MgPT09IFwiYW5kcm9pZFwiKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBGYWxsYmFjayBoZXVyaXN0aWMgaWYgZW52aXJvbm1lbnQgbm90IHlldCBzZXRcbiAgICBjb25zdCB1YSA9IG5hdmlnYXRvci51c2VyQWdlbnQgfHwgbmF2aWdhdG9yLnZlbmRvciB8fCAod2luZG93IGFzIGFueSkub3BlcmEgfHwgXCJcIjtcbiAgICByZXR1cm4gL2FuZHJvaWR8aXBob25lfGlwYWR8aXBvZHxpZW1vYmlsZXx3cGRlc2t0b3AvaS50ZXN0KHVhKTtcbn1cbmZ1bmN0aW9uIHRyeUluaXREcmFnSGFuZGxlcnMoKTogdm9pZCB7XG4gICAgaWYgKGRyYWdJbml0RG9uZSkgcmV0dXJuO1xuICAgIGlmIChpc01vYmlsZSgpKSByZXR1cm47XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHVwZGF0ZSwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB1cGRhdGUsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwZGF0ZSwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgIGZvciAoY29uc3QgZXYgb2YgWydjbGljaycsICdjb250ZXh0bWVudScsICdkYmxjbGljayddKSB7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKGV2LCBzdXBwcmVzc0V2ZW50LCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgfVxuICAgIGRyYWdJbml0RG9uZSA9IHRydWU7XG59XG5pZiAoaGFzRE9NKSB7XG4gICAgLy8gQXR0ZW1wdCBpbW1lZGlhdGUgaW5pdCAoaW4gY2FzZSBlbnZpcm9ubWVudCBhbHJlYWR5IHByZXNlbnQpXG4gICAgdHJ5SW5pdERyYWdIYW5kbGVycygpO1xuICAgIC8vIEFsc28gYXR0ZW1wdCBvbiBET00gcmVhZHlcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgdHJ5SW5pdERyYWdIYW5kbGVycywgeyBvbmNlOiB0cnVlIH0pO1xuICAgIC8vIEFzIGEgbGFzdCByZXNvcnQsIHBvbGwgZm9yIGVudmlyb25tZW50IGZvciBhIHNob3J0IHBlcmlvZFxuICAgIGxldCBkcmFnRW52UG9sbHMgPSAwO1xuICAgIGNvbnN0IGRyYWdFbnZQb2xsID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgaWYgKGRyYWdJbml0RG9uZSkgeyB3aW5kb3cuY2xlYXJJbnRlcnZhbChkcmFnRW52UG9sbCk7IHJldHVybjsgfVxuICAgICAgICB0cnlJbml0RHJhZ0hhbmRsZXJzKCk7XG4gICAgICAgIGlmICgrK2RyYWdFbnZQb2xscyA+IDEwMCkgeyB3aW5kb3cuY2xlYXJJbnRlcnZhbChkcmFnRW52UG9sbCk7IH1cbiAgICB9LCA1MCk7XG59XG5cbmZ1bmN0aW9uIHN1cHByZXNzRXZlbnQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgLy8gU3VwcHJlc3MgY2xpY2sgZXZlbnRzIHdoaWxlIHJlc2l6aW5nIG9yIGRyYWdnaW5nLlxuICAgIGlmIChkcmFnZ2luZyB8fCByZXNpemluZykge1xuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxufVxuXG4vLyBVc2UgY29uc3RhbnRzIHRvIGF2b2lkIGNvbXBhcmluZyBzdHJpbmdzIG11bHRpcGxlIHRpbWVzLlxuY29uc3QgTW91c2VEb3duID0gMDtcbmNvbnN0IE1vdXNlVXAgICA9IDE7XG5jb25zdCBNb3VzZU1vdmUgPSAyO1xuXG5mdW5jdGlvbiB1cGRhdGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAvLyBXaW5kb3dzIHN1cHByZXNzZXMgbW91c2UgZXZlbnRzIGF0IHRoZSBlbmQgb2YgZHJhZ2dpbmcgb3IgcmVzaXppbmcsXG4gICAgLy8gc28gd2UgbmVlZCB0byBiZSBzbWFydCBhbmQgc3ludGhlc2l6ZSBidXR0b24gZXZlbnRzLlxuXG4gICAgbGV0IGV2ZW50VHlwZTogbnVtYmVyLCBldmVudEJ1dHRvbnMgPSBldmVudC5idXR0b25zO1xuICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgICBjYXNlICdtb3VzZWRvd24nOlxuICAgICAgICAgICAgZXZlbnRUeXBlID0gTW91c2VEb3duO1xuICAgICAgICAgICAgaWYgKCFidXR0b25zVHJhY2tlZCkgeyBldmVudEJ1dHRvbnMgPSBidXR0b25zIHwgKDEgPDwgZXZlbnQuYnV0dG9uKTsgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ21vdXNldXAnOlxuICAgICAgICAgICAgZXZlbnRUeXBlID0gTW91c2VVcDtcbiAgICAgICAgICAgIGlmICghYnV0dG9uc1RyYWNrZWQpIHsgZXZlbnRCdXR0b25zID0gYnV0dG9ucyAmIH4oMSA8PCBldmVudC5idXR0b24pOyB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IE1vdXNlTW92ZTtcbiAgICAgICAgICAgIGlmICghYnV0dG9uc1RyYWNrZWQpIHsgZXZlbnRCdXR0b25zID0gYnV0dG9uczsgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgbGV0IHJlbGVhc2VkID0gYnV0dG9ucyAmIH5ldmVudEJ1dHRvbnM7XG4gICAgbGV0IHByZXNzZWQgPSBldmVudEJ1dHRvbnMgJiB+YnV0dG9ucztcblxuICAgIGJ1dHRvbnMgPSBldmVudEJ1dHRvbnM7XG5cbiAgICAvLyBTeW50aGVzaXplIGEgcmVsZWFzZS1wcmVzcyBzZXF1ZW5jZSBpZiB3ZSBkZXRlY3QgYSBwcmVzcyBvZiBhbiBhbHJlYWR5IHByZXNzZWQgYnV0dG9uLlxuICAgIGlmIChldmVudFR5cGUgPT09IE1vdXNlRG93biAmJiAhKHByZXNzZWQgJiBldmVudC5idXR0b24pKSB7XG4gICAgICAgIHJlbGVhc2VkIHw9ICgxIDw8IGV2ZW50LmJ1dHRvbik7XG4gICAgICAgIHByZXNzZWQgfD0gKDEgPDwgZXZlbnQuYnV0dG9uKTtcbiAgICB9XG5cbiAgICAvLyBTdXBwcmVzcyBhbGwgYnV0dG9uIGV2ZW50cyBkdXJpbmcgZHJhZ2dpbmcgYW5kIHJlc2l6aW5nLFxuICAgIC8vIHVubGVzcyB0aGlzIGlzIGEgbW91c2V1cCBldmVudCB0aGF0IGlzIGVuZGluZyBhIGRyYWcgYWN0aW9uLlxuICAgIGlmIChcbiAgICAgICAgZXZlbnRUeXBlICE9PSBNb3VzZU1vdmUgLy8gRmFzdCBwYXRoIGZvciBtb3VzZW1vdmVcbiAgICAgICAgJiYgcmVzaXppbmdcbiAgICAgICAgfHwgKFxuICAgICAgICAgICAgZHJhZ2dpbmdcbiAgICAgICAgICAgICYmIChcbiAgICAgICAgICAgICAgICBldmVudFR5cGUgPT09IE1vdXNlRG93blxuICAgICAgICAgICAgICAgIHx8IGV2ZW50LmJ1dHRvbiAhPT0gMFxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgKSB7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgcmVsZWFzZXNcbiAgICBpZiAocmVsZWFzZWQgJiAxKSB7IHByaW1hcnlVcChldmVudCk7IH1cbiAgICAvLyBIYW5kbGUgcHJlc3Nlc1xuICAgIGlmIChwcmVzc2VkICYgMSkgeyBwcmltYXJ5RG93bihldmVudCk7IH1cblxuICAgIC8vIEhhbmRsZSBtb3VzZW1vdmVcbiAgICBpZiAoZXZlbnRUeXBlID09PSBNb3VzZU1vdmUpIHsgb25Nb3VzZU1vdmUoZXZlbnQpOyB9O1xufVxuXG5mdW5jdGlvbiBwcmltYXJ5RG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIC8vIFJlc2V0IHJlYWRpbmVzcyBzdGF0ZS5cbiAgICBjYW5EcmFnID0gZmFsc2U7XG4gICAgY2FuUmVzaXplID0gZmFsc2U7XG5cbiAgICAvLyBJZ25vcmUgcmVwZWF0ZWQgY2xpY2tzIG9uIG1hY09TIGFuZCBMaW51eC5cbiAgICBpZiAoIUlzV2luZG93cygpKSB7XG4gICAgICAgIGlmIChldmVudC50eXBlID09PSAnbW91c2Vkb3duJyAmJiBldmVudC5idXR0b24gPT09IDAgJiYgZXZlbnQuZGV0YWlsICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVzaXplRWRnZSkge1xuICAgICAgICAvLyBSZWFkeSB0byByZXNpemUgaWYgdGhlIHByaW1hcnkgYnV0dG9uIHdhcyBwcmVzc2VkIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICAgICAgY2FuUmVzaXplID0gdHJ1ZTtcbiAgICAgICAgLy8gRG8gbm90IHN0YXJ0IGRyYWcgb3BlcmF0aW9ucyB3aGVuIG9uIHJlc2l6ZSBlZGdlcy5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJldHJpZXZlIHRhcmdldCBlbGVtZW50XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnRUYXJnZXQoZXZlbnQpO1xuXG4gICAgLy8gUmVhZHkgdG8gZHJhZyBpZiB0aGUgcHJpbWFyeSBidXR0b24gd2FzIHByZXNzZWQgZm9yIHRoZSBmaXJzdCB0aW1lIG9uIGEgZHJhZ2dhYmxlIGVsZW1lbnQuXG4gICAgLy8gSWdub3JlIGNsaWNrcyBvbiB0aGUgc2Nyb2xsYmFyLlxuICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KTtcbiAgICBjYW5EcmFnID0gKFxuICAgICAgICBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS13YWlscy1kcmFnZ2FibGVcIikudHJpbSgpID09PSBcImRyYWdcIlxuICAgICAgICAmJiAoXG4gICAgICAgICAgICBldmVudC5vZmZzZXRYIC0gcGFyc2VGbG9hdChzdHlsZS5wYWRkaW5nTGVmdCkgPCB0YXJnZXQuY2xpZW50V2lkdGhcbiAgICAgICAgICAgICYmIGV2ZW50Lm9mZnNldFkgLSBwYXJzZUZsb2F0KHN0eWxlLnBhZGRpbmdUb3ApIDwgdGFyZ2V0LmNsaWVudEhlaWdodFxuICAgICAgICApXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gcHJpbWFyeVVwKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgLy8gU3RvcCBkcmFnZ2luZyBhbmQgcmVzaXppbmcuXG4gICAgY2FuRHJhZyA9IGZhbHNlO1xuICAgIGRyYWdnaW5nID0gZmFsc2U7XG4gICAgY2FuUmVzaXplID0gZmFsc2U7XG4gICAgcmVzaXppbmcgPSBmYWxzZTtcbn1cblxuY29uc3QgY3Vyc29yRm9yRWRnZSA9IE9iamVjdC5mcmVlemUoe1xuICAgIFwic2UtcmVzaXplXCI6IFwibndzZS1yZXNpemVcIixcbiAgICBcInN3LXJlc2l6ZVwiOiBcIm5lc3ctcmVzaXplXCIsXG4gICAgXCJudy1yZXNpemVcIjogXCJud3NlLXJlc2l6ZVwiLFxuICAgIFwibmUtcmVzaXplXCI6IFwibmVzdy1yZXNpemVcIixcbiAgICBcInctcmVzaXplXCI6IFwiZXctcmVzaXplXCIsXG4gICAgXCJuLXJlc2l6ZVwiOiBcIm5zLXJlc2l6ZVwiLFxuICAgIFwicy1yZXNpemVcIjogXCJucy1yZXNpemVcIixcbiAgICBcImUtcmVzaXplXCI6IFwiZXctcmVzaXplXCIsXG59KVxuXG5mdW5jdGlvbiBzZXRSZXNpemUoZWRnZT86IGtleW9mIHR5cGVvZiBjdXJzb3JGb3JFZGdlKTogdm9pZCB7XG4gICAgaWYgKGVkZ2UpIHtcbiAgICAgICAgaWYgKCFyZXNpemVFZGdlKSB7IGRlZmF1bHRDdXJzb3IgPSBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvcjsgfVxuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IGN1cnNvckZvckVkZ2VbZWRnZV07XG4gICAgfSBlbHNlIGlmICghZWRnZSAmJiByZXNpemVFZGdlKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gZGVmYXVsdEN1cnNvcjtcbiAgICB9XG5cbiAgICByZXNpemVFZGdlID0gZWRnZSB8fCBcIlwiO1xufVxuXG5mdW5jdGlvbiBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmIChjYW5SZXNpemUgJiYgcmVzaXplRWRnZSkge1xuICAgICAgICAvLyBTdGFydCByZXNpemluZy5cbiAgICAgICAgcmVzaXppbmcgPSB0cnVlO1xuICAgICAgICBpbnZva2UoXCJ3YWlsczpyZXNpemU6XCIgKyByZXNpemVFZGdlKTtcbiAgICB9IGVsc2UgaWYgKGNhbkRyYWcpIHtcbiAgICAgICAgLy8gU3RhcnQgZHJhZ2dpbmcuXG4gICAgICAgIGRyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgaW52b2tlKFwid2FpbHM6ZHJhZ1wiKTtcbiAgICB9XG5cbiAgICBpZiAoZHJhZ2dpbmcgfHwgcmVzaXppbmcpIHtcbiAgICAgICAgLy8gRWl0aGVyIGRyYWcgb3IgcmVzaXplIGlzIG9uZ29pbmcsXG4gICAgICAgIC8vIHJlc2V0IHJlYWRpbmVzcyBhbmQgc3RvcCBwcm9jZXNzaW5nLlxuICAgICAgICBjYW5EcmFnID0gY2FuUmVzaXplID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXJlc2l6YWJsZSB8fCAoIUlzV2luZG93cygpICYmICEoSXNMaW51eCgpICYmIEdldEZsYWcoXCJmcmFtZWxlc3NcIikpKSkge1xuICAgICAgICBpZiAocmVzaXplRWRnZSkgeyBzZXRSZXNpemUoKTsgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzaXplSGFuZGxlSGVpZ2h0ID0gR2V0RmxhZyhcInN5c3RlbS5yZXNpemVIYW5kbGVIZWlnaHRcIikgfHwgNTtcbiAgICBjb25zdCByZXNpemVIYW5kbGVXaWR0aCA9IEdldEZsYWcoXCJzeXN0ZW0ucmVzaXplSGFuZGxlV2lkdGhcIikgfHwgNTtcblxuICAgIC8vIEV4dHJhIHBpeGVscyBmb3IgdGhlIGNvcm5lciBhcmVhcy5cbiAgICBjb25zdCBjb3JuZXJFeHRyYSA9IEdldEZsYWcoXCJyZXNpemVDb3JuZXJFeHRyYVwiKSB8fCAxMDtcblxuICAgIC8vIFdoZW4gYSBzY3JvbGxiYXIgaXMgcHJlc2VudCBhdCB0aGUgd2luZG93IGVkZ2UgaXQgY29uc3VtZXMgbW91c2UgZXZlbnRzIGluIHRoYXQgc3RyaXAuXG4gICAgLy8gU2hpZnQgdGhlIGVmZmVjdGl2ZSBjb250ZW50IGVkZ2UgaW53YXJkIHNvIHRoZSByZXNpemUgem9uZSBzaXRzIGp1c3QgYmVmb3JlIHRoZSBzY3JvbGxiYXIuXG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSBNYXRoLm1heCgwLCB3aW5kb3cuaW5uZXJXaWR0aCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCk7XG4gICAgY29uc3Qgc2Nyb2xsYmFySGVpZ2h0ID0gTWF0aC5tYXgoMCwgd2luZG93LmlubmVySGVpZ2h0IC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCk7XG4gICAgY29uc3QgcmlnaHRDb250ZW50RWRnZSA9IHdpbmRvdy5pbm5lcldpZHRoIC0gc2Nyb2xsYmFyV2lkdGg7XG4gICAgY29uc3QgYm90dG9tQ29udGVudEVkZ2UgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBzY3JvbGxiYXJIZWlnaHQ7XG5cbiAgICBjb25zdCByaWdodEJvcmRlciA9IGV2ZW50LmNsaWVudFggPCByaWdodENvbnRlbnRFZGdlICYmIChyaWdodENvbnRlbnRFZGdlIC0gZXZlbnQuY2xpZW50WCkgPCByZXNpemVIYW5kbGVXaWR0aDtcbiAgICBjb25zdCBsZWZ0Qm9yZGVyID0gZXZlbnQuY2xpZW50WCA8IHJlc2l6ZUhhbmRsZVdpZHRoO1xuICAgIGNvbnN0IHRvcEJvcmRlciA9IGV2ZW50LmNsaWVudFkgPCByZXNpemVIYW5kbGVIZWlnaHQ7XG4gICAgY29uc3QgYm90dG9tQm9yZGVyID0gZXZlbnQuY2xpZW50WSA8IGJvdHRvbUNvbnRlbnRFZGdlICYmIChib3R0b21Db250ZW50RWRnZSAtIGV2ZW50LmNsaWVudFkpIDwgcmVzaXplSGFuZGxlSGVpZ2h0O1xuXG4gICAgLy8gQWRqdXN0IGZvciBjb3JuZXIgYXJlYXMuXG4gICAgY29uc3QgcmlnaHRDb3JuZXIgPSBldmVudC5jbGllbnRYIDwgcmlnaHRDb250ZW50RWRnZSAmJiAocmlnaHRDb250ZW50RWRnZSAtIGV2ZW50LmNsaWVudFgpIDwgKHJlc2l6ZUhhbmRsZVdpZHRoICsgY29ybmVyRXh0cmEpO1xuICAgIGNvbnN0IGxlZnRDb3JuZXIgPSBldmVudC5jbGllbnRYIDwgKHJlc2l6ZUhhbmRsZVdpZHRoICsgY29ybmVyRXh0cmEpO1xuICAgIGNvbnN0IHRvcENvcm5lciA9IGV2ZW50LmNsaWVudFkgPCAocmVzaXplSGFuZGxlSGVpZ2h0ICsgY29ybmVyRXh0cmEpO1xuICAgIGNvbnN0IGJvdHRvbUNvcm5lciA9IGV2ZW50LmNsaWVudFkgPCBib3R0b21Db250ZW50RWRnZSAmJiAoYm90dG9tQ29udGVudEVkZ2UgLSBldmVudC5jbGllbnRZKSA8IChyZXNpemVIYW5kbGVIZWlnaHQgKyBjb3JuZXJFeHRyYSk7XG5cbiAgICBpZiAoIWxlZnRDb3JuZXIgJiYgIXRvcENvcm5lciAmJiAhYm90dG9tQ29ybmVyICYmICFyaWdodENvcm5lcikge1xuICAgICAgICAvLyBPcHRpbWlzYXRpb246IG91dCBvZiBhbGwgY29ybmVyIGFyZWFzIGltcGxpZXMgb3V0IG9mIGJvcmRlcnMuXG4gICAgICAgIHNldFJlc2l6ZSgpO1xuICAgIH1cbiAgICAvLyBEZXRlY3QgY29ybmVycy5cbiAgICBlbHNlIGlmIChyaWdodENvcm5lciAmJiBib3R0b21Db3JuZXIpIHNldFJlc2l6ZShcInNlLXJlc2l6ZVwiKTtcbiAgICBlbHNlIGlmIChsZWZ0Q29ybmVyICYmIGJvdHRvbUNvcm5lcikgc2V0UmVzaXplKFwic3ctcmVzaXplXCIpO1xuICAgIGVsc2UgaWYgKGxlZnRDb3JuZXIgJiYgdG9wQ29ybmVyKSBzZXRSZXNpemUoXCJudy1yZXNpemVcIik7XG4gICAgZWxzZSBpZiAodG9wQ29ybmVyICYmIHJpZ2h0Q29ybmVyKSBzZXRSZXNpemUoXCJuZS1yZXNpemVcIik7XG4gICAgLy8gRGV0ZWN0IGJvcmRlcnMuXG4gICAgZWxzZSBpZiAobGVmdEJvcmRlcikgc2V0UmVzaXplKFwidy1yZXNpemVcIik7XG4gICAgZWxzZSBpZiAodG9wQm9yZGVyKSBzZXRSZXNpemUoXCJuLXJlc2l6ZVwiKTtcbiAgICBlbHNlIGlmIChib3R0b21Cb3JkZXIpIHNldFJlc2l6ZShcInMtcmVzaXplXCIpO1xuICAgIGVsc2UgaWYgKHJpZ2h0Qm9yZGVyKSBzZXRSZXNpemUoXCJlLXJlc2l6ZVwiKTtcbiAgICAvLyBPdXQgb2YgYm9yZGVyIGFyZWEuXG4gICAgZWxzZSBzZXRSZXNpemUoKTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHsgbmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXMgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5BcHBsaWNhdGlvbik7XG5cbmNvbnN0IEhpZGVNZXRob2QgPSAwO1xuY29uc3QgU2hvd01ldGhvZCA9IDE7XG5jb25zdCBRdWl0TWV0aG9kID0gMjtcblxuLyoqXG4gKiBIaWRlcyBhIGNlcnRhaW4gbWV0aG9kIGJ5IGNhbGxpbmcgdGhlIEhpZGVNZXRob2QgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBIaWRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBjYWxsKEhpZGVNZXRob2QpO1xufVxuXG4vKipcbiAqIENhbGxzIHRoZSBTaG93TWV0aG9kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTaG93KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBjYWxsKFNob3dNZXRob2QpO1xufVxuXG4vKipcbiAqIENhbGxzIHRoZSBRdWl0TWV0aG9kIHRvIHRlcm1pbmF0ZSB0aGUgcHJvZ3JhbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFF1aXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGNhbGwoUXVpdE1ldGhvZCk7XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IENhbmNlbGxhYmxlUHJvbWlzZSwgdHlwZSBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzIH0gZnJvbSBcIi4vY2FuY2VsbGFibGUuanNcIjtcbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSBcIi4vbmFub2lkLmpzXCI7XG5cbi8vIFNldHVwXG5pbXBvcnQgeyBoYXNET00gfSBmcm9tIFwiLi9lbnZpcm9ubWVudC5qc1wiO1xuXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscyA9IHdpbmRvdy5fd2FpbHMgfHwge307XG59XG5cbnR5cGUgUHJvbWlzZVJlc29sdmVycyA9IE9taXQ8Q2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxhbnk+LCBcInByb21pc2VcIiB8IFwib25jYW5jZWxsZWRcIj5cblxuY29uc3QgY2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuQ2FsbCk7XG5jb25zdCBjYW5jZWxDYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5DYW5jZWxDYWxsKTtcbmNvbnN0IGNhbGxSZXNwb25zZXMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZVJlc29sdmVycz4oKTtcblxuY29uc3QgQ2FsbEJpbmRpbmcgPSAwO1xuY29uc3QgQ2FuY2VsTWV0aG9kID0gMFxuXG4vKipcbiAqIEhvbGRzIGFsbCByZXF1aXJlZCBpbmZvcm1hdGlvbiBmb3IgYSBiaW5kaW5nIGNhbGwuXG4gKiBNYXkgcHJvdmlkZSBlaXRoZXIgYSBtZXRob2QgSUQgb3IgYSBtZXRob2QgbmFtZSwgYnV0IG5vdCBib3RoLlxuICovXG5leHBvcnQgdHlwZSBDYWxsT3B0aW9ucyA9IHtcbiAgICAvKiogVGhlIG51bWVyaWMgSUQgb2YgdGhlIGJvdW5kIG1ldGhvZCB0byBjYWxsLiAqL1xuICAgIG1ldGhvZElEOiBudW1iZXI7XG4gICAgLyoqIFRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgYm91bmQgbWV0aG9kIHRvIGNhbGwuICovXG4gICAgbWV0aG9kTmFtZT86IG5ldmVyO1xuICAgIC8qKiBBcmd1bWVudHMgdG8gYmUgcGFzc2VkIGludG8gdGhlIGJvdW5kIG1ldGhvZC4gKi9cbiAgICBhcmdzOiBhbnlbXTtcbn0gfCB7XG4gICAgLyoqIFRoZSBudW1lcmljIElEIG9mIHRoZSBib3VuZCBtZXRob2QgdG8gY2FsbC4gKi9cbiAgICBtZXRob2RJRD86IG5ldmVyO1xuICAgIC8qKiBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGJvdW5kIG1ldGhvZCB0byBjYWxsLiAqL1xuICAgIG1ldGhvZE5hbWU6IHN0cmluZztcbiAgICAvKiogQXJndW1lbnRzIHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBib3VuZCBtZXRob2QuICovXG4gICAgYXJnczogYW55W107XG59O1xuXG4vKipcbiAqIEV4Y2VwdGlvbiBjbGFzcyB0aGF0IHdpbGwgYmUgdGhyb3duIGluIGNhc2UgdGhlIGJvdW5kIG1ldGhvZCByZXR1cm5zIGFuIGVycm9yLlxuICogVGhlIHZhbHVlIG9mIHRoZSB7QGxpbmsgUnVudGltZUVycm9yI25hbWV9IHByb3BlcnR5IGlzIFwiUnVudGltZUVycm9yXCIuXG4gKi9cbmV4cG9ydCBjbGFzcyBSdW50aW1lRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBSdW50aW1lRXJyb3IgaW5zdGFuY2UuXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgdG8gYmUgZm9yd2FyZGVkIHRvIHRoZSBFcnJvciBjb25zdHJ1Y3Rvci5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nLCBvcHRpb25zPzogRXJyb3JPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UsIG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIlJ1bnRpbWVFcnJvclwiO1xuICAgIH1cbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSB1bmlxdWUgSUQgdXNpbmcgdGhlIG5hbm9pZCBsaWJyYXJ5LlxuICpcbiAqIEByZXR1cm5zIEEgdW5pcXVlIElEIHRoYXQgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGNhbGxSZXNwb25zZXMgc2V0LlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZUlEKCk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdDtcbiAgICBkbyB7XG4gICAgICAgIHJlc3VsdCA9IG5hbm9pZCgpO1xuICAgIH0gd2hpbGUgKGNhbGxSZXNwb25zZXMuaGFzKHJlc3VsdCkpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ2FsbCBhIGJvdW5kIG1ldGhvZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGNhbGwgb3B0aW9ucy5cbiAqXG4gKiBJbiBjYXNlIG9mIGZhaWx1cmUsIHRoZSByZXR1cm5lZCBwcm9taXNlIHdpbGwgcmVqZWN0IHdpdGggYW4gZXhjZXB0aW9uXG4gKiBhbW9uZyBSZWZlcmVuY2VFcnJvciAodW5rbm93biBtZXRob2QpLCBUeXBlRXJyb3IgKHdyb25nIGFyZ3VtZW50IGNvdW50IG9yIHR5cGUpLFxuICoge0BsaW5rIFJ1bnRpbWVFcnJvcn0gKG1ldGhvZCByZXR1cm5lZCBhbiBlcnJvciksIG9yIG90aGVyIChuZXR3b3JrIG9yIGludGVybmFsIGVycm9ycykuXG4gKiBUaGUgZXhjZXB0aW9uIG1pZ2h0IGhhdmUgYSBcImNhdXNlXCIgZmllbGQgd2l0aCB0aGUgdmFsdWUgcmV0dXJuZWRcbiAqIGJ5IHRoZSBhcHBsaWNhdGlvbi0gb3Igc2VydmljZS1sZXZlbCBlcnJvciBtYXJzaGFsaW5nIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEEgbWV0aG9kIGNhbGwgZGVzY3JpcHRvci5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGNhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDYWxsKG9wdGlvbnM6IENhbGxPcHRpb25zKTogQ2FuY2VsbGFibGVQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGlkID0gZ2VuZXJhdGVJRCgpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gQ2FuY2VsbGFibGVQcm9taXNlLndpdGhSZXNvbHZlcnM8YW55PigpO1xuICAgIGNhbGxSZXNwb25zZXMuc2V0KGlkLCB7IHJlc29sdmU6IHJlc3VsdC5yZXNvbHZlLCByZWplY3Q6IHJlc3VsdC5yZWplY3QgfSk7XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gY2FsbChDYWxsQmluZGluZywgT2JqZWN0LmFzc2lnbih7IFwiY2FsbC1pZFwiOiBpZCB9LCBvcHRpb25zKSk7XG4gICAgbGV0IHJ1bm5pbmcgPSB0cnVlO1xuXG4gICAgcmVxdWVzdC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgcnVubmluZyA9IGZhbHNlO1xuICAgICAgICBjYWxsUmVzcG9uc2VzLmRlbGV0ZShpZCk7XG4gICAgICAgIHJlc3VsdC5yZXNvbHZlKHJlcyk7XG4gICAgfSwgKGVycikgPT4ge1xuICAgICAgICBydW5uaW5nID0gZmFsc2U7XG4gICAgICAgIGNhbGxSZXNwb25zZXMuZGVsZXRlKGlkKTtcbiAgICAgICAgcmVzdWx0LnJlamVjdChlcnIpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2FuY2VsID0gKCkgPT4ge1xuICAgICAgICBjYWxsUmVzcG9uc2VzLmRlbGV0ZShpZCk7XG4gICAgICAgIHJldHVybiBjYW5jZWxDYWxsKENhbmNlbE1ldGhvZCwge1wiY2FsbC1pZFwiOiBpZH0pLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciB3aGlsZSByZXF1ZXN0aW5nIGJpbmRpbmcgY2FsbCBjYW5jZWxsYXRpb246XCIsIGVycik7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICByZXN1bHQub25jYW5jZWxsZWQgPSAoKSA9PiB7XG4gICAgICAgIGlmIChydW5uaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FuY2VsKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdC50aGVuKGNhbmNlbCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdC5wcm9taXNlO1xufVxuXG4vKipcbiAqIENhbGxzIGEgYm91bmQgbWV0aG9kIGJ5IG5hbWUgd2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy5cbiAqIFNlZSB7QGxpbmsgQ2FsbH0gZm9yIGRldGFpbHMuXG4gKlxuICogQHBhcmFtIG1ldGhvZE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgbWV0aG9kIGluIHRoZSBmb3JtYXQgJ3BhY2thZ2Uuc3RydWN0Lm1ldGhvZCcuXG4gKiBAcGFyYW0gYXJncyAtIFRoZSBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgbWV0aG9kIGNhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBCeU5hbWUobWV0aG9kTmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IENhbmNlbGxhYmxlUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gQ2FsbCh7IG1ldGhvZE5hbWUsIGFyZ3MgfSk7XG59XG5cbi8qKlxuICogQ2FsbHMgYSBtZXRob2QgYnkgaXRzIG51bWVyaWMgSUQgd2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy5cbiAqIFNlZSB7QGxpbmsgQ2FsbH0gZm9yIGRldGFpbHMuXG4gKlxuICogQHBhcmFtIG1ldGhvZElEIC0gVGhlIElEIG9mIHRoZSBtZXRob2QgdG8gY2FsbC5cbiAqIEBwYXJhbSBhcmdzIC0gVGhlIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gKiBAcmV0dXJuIFRoZSByZXN1bHQgb2YgdGhlIG1ldGhvZCBjYWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQnlJRChtZXRob2RJRDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSk6IENhbmNlbGxhYmxlUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gQ2FsbCh7IG1ldGhvZElELCBhcmdzIH0pO1xufVxuIiwgIi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2luc3BlY3QtanMvaXMtY2FsbGFibGVcblxuLy8gVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4vL1xuLy8gQ29weXJpZ2h0IChjKSAyMDE1IEpvcmRhbiBIYXJiYW5kXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuLy8gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4vLyBTT0ZUV0FSRS5cblxudmFyIGZuVG9TdHIgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgcmVmbGVjdEFwcGx5OiB0eXBlb2YgUmVmbGVjdC5hcHBseSB8IGZhbHNlIHwgbnVsbCA9IHR5cGVvZiBSZWZsZWN0ID09PSAnb2JqZWN0JyAmJiBSZWZsZWN0ICE9PSBudWxsICYmIFJlZmxlY3QuYXBwbHk7XG52YXIgYmFkQXJyYXlMaWtlOiBhbnk7XG52YXIgaXNDYWxsYWJsZU1hcmtlcjogYW55O1xuaWYgKHR5cGVvZiByZWZsZWN0QXBwbHkgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICAgIGJhZEFycmF5TGlrZSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2xlbmd0aCcsIHtcbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRocm93IGlzQ2FsbGFibGVNYXJrZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpc0NhbGxhYmxlTWFya2VyID0ge307XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10aHJvdy1saXRlcmFsXG4gICAgICAgIHJlZmxlY3RBcHBseShmdW5jdGlvbiAoKSB7IHRocm93IDQyOyB9LCBudWxsLCBiYWRBcnJheUxpa2UpO1xuICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgaWYgKF8gIT09IGlzQ2FsbGFibGVNYXJrZXIpIHtcbiAgICAgICAgICAgIHJlZmxlY3RBcHBseSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59IGVsc2Uge1xuICAgIHJlZmxlY3RBcHBseSA9IG51bGw7XG59XG5cbnZhciBjb25zdHJ1Y3RvclJlZ2V4ID0gL15cXHMqY2xhc3NcXGIvO1xudmFyIGlzRVM2Q2xhc3NGbiA9IGZ1bmN0aW9uIGlzRVM2Q2xhc3NGdW5jdGlvbih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIGZuU3RyID0gZm5Ub1N0ci5jYWxsKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yUmVnZXgudGVzdChmblN0cik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG5vdCBhIGZ1bmN0aW9uXG4gICAgfVxufTtcblxudmFyIHRyeUZ1bmN0aW9uT2JqZWN0ID0gZnVuY3Rpb24gdHJ5RnVuY3Rpb25Ub1N0cih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKGlzRVM2Q2xhc3NGbih2YWx1ZSkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICAgIGZuVG9TdHIuY2FsbCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn07XG52YXIgdG9TdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIG9iamVjdENsYXNzID0gJ1tvYmplY3QgT2JqZWN0XSc7XG52YXIgZm5DbGFzcyA9ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG52YXIgZ2VuQ2xhc3MgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nO1xudmFyIGRkYUNsYXNzID0gJ1tvYmplY3QgSFRNTEFsbENvbGxlY3Rpb25dJzsgLy8gSUUgMTFcbnZhciBkZGFDbGFzczIgPSAnW29iamVjdCBIVE1MIGRvY3VtZW50LmFsbCBjbGFzc10nO1xudmFyIGRkYUNsYXNzMyA9ICdbb2JqZWN0IEhUTUxDb2xsZWN0aW9uXSc7IC8vIElFIDktMTBcbnZhciBoYXNUb1N0cmluZ1RhZyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgISFTeW1ib2wudG9TdHJpbmdUYWc7IC8vIGJldHRlcjogdXNlIGBoYXMtdG9zdHJpbmd0YWdgXG5cbnZhciBpc0lFNjggPSAhKDAgaW4gWyxdKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zcGFyc2UtYXJyYXlzLCBjb21tYS1zcGFjaW5nXG5cbnZhciBpc0REQTogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4gPSBmdW5jdGlvbiBpc0RvY3VtZW50RG90QWxsKCkgeyByZXR1cm4gZmFsc2U7IH07XG5pZiAodHlwZW9mIGRvY3VtZW50ID09PSAnb2JqZWN0Jykge1xuICAgIC8vIEZpcmVmb3ggMyBjYW5vbmljYWxpemVzIEREQSB0byB1bmRlZmluZWQgd2hlbiBpdCdzIG5vdCBhY2Nlc3NlZCBkaXJlY3RseVxuICAgIHZhciBhbGwgPSBkb2N1bWVudC5hbGw7XG4gICAgaWYgKHRvU3RyLmNhbGwoYWxsKSA9PT0gdG9TdHIuY2FsbChkb2N1bWVudC5hbGwpKSB7XG4gICAgICAgIGlzRERBID0gZnVuY3Rpb24gaXNEb2N1bWVudERvdEFsbCh2YWx1ZSkge1xuICAgICAgICAgICAgLyogZ2xvYmFscyBkb2N1bWVudDogZmFsc2UgKi9cbiAgICAgICAgICAgIC8vIGluIElFIDYtOCwgdHlwZW9mIGRvY3VtZW50LmFsbCBpcyBcIm9iamVjdFwiIGFuZCBpdCdzIHRydXRoeVxuICAgICAgICAgICAgaWYgKChpc0lFNjggfHwgIXZhbHVlKSAmJiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSB0b1N0ci5jYWxsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9PT0gZGRhQ2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0ciA9PT0gZGRhQ2xhc3MyXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBzdHIgPT09IGRkYUNsYXNzMyAvLyBvcGVyYSAxMi4xNlxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RyID09PSBvYmplY3RDbGFzcyAvLyBJRSA2LThcbiAgICAgICAgICAgICAgICAgICAgKSAmJiB2YWx1ZSgnJykgPT0gbnVsbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBlcWVxZXFcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7IC8qKi8gfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgIH1cbn1cblxuZnVuY3Rpb24gaXNDYWxsYWJsZVJlZkFwcGx5PFQ+KHZhbHVlOiBUIHwgdW5rbm93bik6IHZhbHVlIGlzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55ICB7XG4gICAgaWYgKGlzRERBKHZhbHVlKSkgeyByZXR1cm4gdHJ1ZTsgfVxuICAgIGlmICghdmFsdWUpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIHRyeSB7XG4gICAgICAgIChyZWZsZWN0QXBwbHkgYXMgYW55KSh2YWx1ZSwgbnVsbCwgYmFkQXJyYXlMaWtlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlICE9PSBpc0NhbGxhYmxlTWFya2VyKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cbiAgICByZXR1cm4gIWlzRVM2Q2xhc3NGbih2YWx1ZSkgJiYgdHJ5RnVuY3Rpb25PYmplY3QodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBpc0NhbGxhYmxlTm9SZWZBcHBseTxUPih2YWx1ZTogVCB8IHVua25vd24pOiB2YWx1ZSBpcyAoLi4uYXJnczogYW55W10pID0+IGFueSB7XG4gICAgaWYgKGlzRERBKHZhbHVlKSkgeyByZXR1cm4gdHJ1ZTsgfVxuICAgIGlmICghdmFsdWUpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGlmIChoYXNUb1N0cmluZ1RhZykgeyByZXR1cm4gdHJ5RnVuY3Rpb25PYmplY3QodmFsdWUpOyB9XG4gICAgaWYgKGlzRVM2Q2xhc3NGbih2YWx1ZSkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgdmFyIHN0ckNsYXNzID0gdG9TdHIuY2FsbCh2YWx1ZSk7XG4gICAgaWYgKHN0ckNsYXNzICE9PSBmbkNsYXNzICYmIHN0ckNsYXNzICE9PSBnZW5DbGFzcyAmJiAhKC9eXFxbb2JqZWN0IEhUTUwvKS50ZXN0KHN0ckNsYXNzKSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICByZXR1cm4gdHJ5RnVuY3Rpb25PYmplY3QodmFsdWUpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgcmVmbGVjdEFwcGx5ID8gaXNDYWxsYWJsZVJlZkFwcGx5IDogaXNDYWxsYWJsZU5vUmVmQXBwbHk7XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCBpc0NhbGxhYmxlIGZyb20gXCIuL2NhbGxhYmxlLmpzXCI7XG5cbi8qKlxuICogRXhjZXB0aW9uIGNsYXNzIHRoYXQgd2lsbCBiZSB1c2VkIGFzIHJlamVjdGlvbiByZWFzb25cbiAqIGluIGNhc2UgYSB7QGxpbmsgQ2FuY2VsbGFibGVQcm9taXNlfSBpcyBjYW5jZWxsZWQgc3VjY2Vzc2Z1bGx5LlxuICpcbiAqIFRoZSB2YWx1ZSBvZiB0aGUge0BsaW5rIG5hbWV9IHByb3BlcnR5IGlzIHRoZSBzdHJpbmcgYFwiQ2FuY2VsRXJyb3JcImAuXG4gKiBUaGUgdmFsdWUgb2YgdGhlIHtAbGluayBjYXVzZX0gcHJvcGVydHkgaXMgdGhlIGNhdXNlIHBhc3NlZCB0byB0aGUgY2FuY2VsIG1ldGhvZCwgaWYgYW55LlxuICovXG5leHBvcnQgY2xhc3MgQ2FuY2VsRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBgQ2FuY2VsRXJyb3JgIGluc3RhbmNlLlxuICAgICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIHRvIGJlIGZvcndhcmRlZCB0byB0aGUgRXJyb3IgY29uc3RydWN0b3IuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZywgb3B0aW9ucz86IEVycm9yT3B0aW9ucykge1xuICAgICAgICBzdXBlcihtZXNzYWdlLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5uYW1lID0gXCJDYW5jZWxFcnJvclwiO1xuICAgIH1cbn1cblxuLyoqXG4gKiBFeGNlcHRpb24gY2xhc3MgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGFzIGFuIHVuaGFuZGxlZCByZWplY3Rpb25cbiAqIGluIGNhc2UgYSB7QGxpbmsgQ2FuY2VsbGFibGVQcm9taXNlfSByZWplY3RzIGFmdGVyIGJlaW5nIGNhbmNlbGxlZCxcbiAqIG9yIHdoZW4gdGhlIGBvbmNhbmNlbGxlZGAgY2FsbGJhY2sgdGhyb3dzIG9yIHJlamVjdHMuXG4gKlxuICogVGhlIHZhbHVlIG9mIHRoZSB7QGxpbmsgbmFtZX0gcHJvcGVydHkgaXMgdGhlIHN0cmluZyBgXCJDYW5jZWxsZWRSZWplY3Rpb25FcnJvclwiYC5cbiAqIFRoZSB2YWx1ZSBvZiB0aGUge0BsaW5rIGNhdXNlfSBwcm9wZXJ0eSBpcyB0aGUgcmVhc29uIHRoZSBwcm9taXNlIHJlamVjdGVkIHdpdGguXG4gKlxuICogQmVjYXVzZSB0aGUgb3JpZ2luYWwgcHJvbWlzZSB3YXMgY2FuY2VsbGVkLFxuICogYSB3cmFwcGVyIHByb21pc2Ugd2lsbCBiZSBwYXNzZWQgdG8gdGhlIHVuaGFuZGxlZCByZWplY3Rpb24gbGlzdGVuZXIgaW5zdGVhZC5cbiAqIFRoZSB7QGxpbmsgcHJvbWlzZX0gcHJvcGVydHkgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIG9yaWdpbmFsIHByb21pc2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBDYW5jZWxsZWRSZWplY3Rpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICAvKipcbiAgICAgKiBIb2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgcHJvbWlzZSB0aGF0IHdhcyBjYW5jZWxsZWQgYW5kIHRoZW4gcmVqZWN0ZWQuXG4gICAgICovXG4gICAgcHJvbWlzZTogQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+O1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3JgIGluc3RhbmNlLlxuICAgICAqIEBwYXJhbSBwcm9taXNlIC0gVGhlIHByb21pc2UgdGhhdCBjYXVzZWQgdGhlIGVycm9yIG9yaWdpbmFsbHkuXG4gICAgICogQHBhcmFtIHJlYXNvbiAtIFRoZSByZWplY3Rpb24gcmVhc29uLlxuICAgICAqIEBwYXJhbSBpbmZvIC0gQW4gb3B0aW9uYWwgaW5mb3JtYXRpdmUgbWVzc2FnZSBzcGVjaWZ5aW5nIHRoZSBjaXJjdW1zdGFuY2VzIGluIHdoaWNoIHRoZSBlcnJvciB3YXMgdGhyb3duLlxuICAgICAqICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gdGhlIHN0cmluZyBgXCJVbmhhbmRsZWQgcmVqZWN0aW9uIGluIGNhbmNlbGxlZCBwcm9taXNlLlwiYC5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4sIHJlYXNvbj86IGFueSwgaW5mbz86IHN0cmluZykge1xuICAgICAgICBzdXBlcigoaW5mbyA/PyBcIlVuaGFuZGxlZCByZWplY3Rpb24gaW4gY2FuY2VsbGVkIHByb21pc2UuXCIpICsgXCIgUmVhc29uOiBcIiArIGVycm9yTWVzc2FnZShyZWFzb24pLCB7IGNhdXNlOiByZWFzb24gfSk7XG4gICAgICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gICAgICAgIHRoaXMubmFtZSA9IFwiQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3JcIjtcbiAgICB9XG59XG5cbnR5cGUgQ2FuY2VsbGFibGVQcm9taXNlUmVzb2x2ZXI8VD4gPSAodmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPiB8IENhbmNlbGxhYmxlUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQ7XG50eXBlIENhbmNlbGxhYmxlUHJvbWlzZVJlamVjdG9yID0gKHJlYXNvbj86IGFueSkgPT4gdm9pZDtcbnR5cGUgQ2FuY2VsbGFibGVQcm9taXNlQ2FuY2VsbGVyID0gKGNhdXNlPzogYW55KSA9PiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD47XG50eXBlIENhbmNlbGxhYmxlUHJvbWlzZUV4ZWN1dG9yPFQ+ID0gKHJlc29sdmU6IENhbmNlbGxhYmxlUHJvbWlzZVJlc29sdmVyPFQ+LCByZWplY3Q6IENhbmNlbGxhYmxlUHJvbWlzZVJlamVjdG9yKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbmNlbGxhYmxlUHJvbWlzZUxpa2U8VD4ge1xuICAgIHRoZW48VFJlc3VsdDEgPSBULCBUUmVzdWx0MiA9IG5ldmVyPihvbmZ1bGZpbGxlZD86ICgodmFsdWU6IFQpID0+IFRSZXN1bHQxIHwgUHJvbWlzZUxpa2U8VFJlc3VsdDE+IHwgQ2FuY2VsbGFibGVQcm9taXNlTGlrZTxUUmVzdWx0MT4pIHwgdW5kZWZpbmVkIHwgbnVsbCwgb25yZWplY3RlZD86ICgocmVhc29uOiBhbnkpID0+IFRSZXN1bHQyIHwgUHJvbWlzZUxpa2U8VFJlc3VsdDI+IHwgQ2FuY2VsbGFibGVQcm9taXNlTGlrZTxUUmVzdWx0Mj4pIHwgdW5kZWZpbmVkIHwgbnVsbCk6IENhbmNlbGxhYmxlUHJvbWlzZUxpa2U8VFJlc3VsdDEgfCBUUmVzdWx0Mj47XG4gICAgY2FuY2VsKGNhdXNlPzogYW55KTogdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+O1xufVxuXG4vKipcbiAqIFdyYXBzIGEgY2FuY2VsbGFibGUgcHJvbWlzZSBhbG9uZyB3aXRoIGl0cyByZXNvbHV0aW9uIG1ldGhvZHMuXG4gKiBUaGUgYG9uY2FuY2VsbGVkYCBmaWVsZCB3aWxsIGJlIG51bGwgaW5pdGlhbGx5IGJ1dCBtYXkgYmUgc2V0IHRvIHByb3ZpZGUgYSBjdXN0b20gY2FuY2VsbGF0aW9uIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhbmNlbGxhYmxlUHJvbWlzZVdpdGhSZXNvbHZlcnM8VD4ge1xuICAgIHByb21pc2U6IENhbmNlbGxhYmxlUHJvbWlzZTxUPjtcbiAgICByZXNvbHZlOiBDYW5jZWxsYWJsZVByb21pc2VSZXNvbHZlcjxUPjtcbiAgICByZWplY3Q6IENhbmNlbGxhYmxlUHJvbWlzZVJlamVjdG9yO1xuICAgIG9uY2FuY2VsbGVkOiBDYW5jZWxsYWJsZVByb21pc2VDYW5jZWxsZXIgfCBudWxsO1xufVxuXG5pbnRlcmZhY2UgQ2FuY2VsbGFibGVQcm9taXNlU3RhdGUge1xuICAgIHJlYWRvbmx5IHJvb3Q6IENhbmNlbGxhYmxlUHJvbWlzZVN0YXRlO1xuICAgIHJlc29sdmluZzogYm9vbGVhbjtcbiAgICBzZXR0bGVkOiBib29sZWFuO1xuICAgIHJlYXNvbj86IENhbmNlbEVycm9yO1xufVxuXG4vLyBQcml2YXRlIGZpZWxkIG5hbWVzLlxuY29uc3QgYmFycmllclN5bSA9IFN5bWJvbChcImJhcnJpZXJcIik7XG5jb25zdCBjYW5jZWxJbXBsU3ltID0gU3ltYm9sKFwiY2FuY2VsSW1wbFwiKTtcbmNvbnN0IHNwZWNpZXM6IHR5cGVvZiBTeW1ib2wuc3BlY2llcyA9IFN5bWJvbC5zcGVjaWVzID8/IFN5bWJvbChcInNwZWNpZXNQb2x5ZmlsbFwiKTtcblxuLyoqXG4gKiBBIHByb21pc2Ugd2l0aCBhbiBhdHRhY2hlZCBtZXRob2QgZm9yIGNhbmNlbGxpbmcgbG9uZy1ydW5uaW5nIG9wZXJhdGlvbnMgKHNlZSB7QGxpbmsgQ2FuY2VsbGFibGVQcm9taXNlI2NhbmNlbH0pLlxuICogQ2FuY2VsbGF0aW9uIGNhbiBvcHRpb25hbGx5IGJlIGJvdW5kIHRvIGFuIHtAbGluayBBYm9ydFNpZ25hbH1cbiAqIGZvciBiZXR0ZXIgY29tcG9zYWJpbGl0eSAoc2VlIHtAbGluayBDYW5jZWxsYWJsZVByb21pc2UjY2FuY2VsT259KS5cbiAqXG4gKiBDYW5jZWxsaW5nIGEgcGVuZGluZyBwcm9taXNlIHdpbGwgcmVzdWx0IGluIGFuIGltbWVkaWF0ZSByZWplY3Rpb25cbiAqIHdpdGggYW4gaW5zdGFuY2Ugb2Yge0BsaW5rIENhbmNlbEVycm9yfSBhcyByZWFzb24sXG4gKiBidXQgd2hvZXZlciBzdGFydGVkIHRoZSBwcm9taXNlIHdpbGwgYmUgcmVzcG9uc2libGVcbiAqIGZvciBhY3R1YWxseSBhYm9ydGluZyB0aGUgdW5kZXJseWluZyBvcGVyYXRpb24uXG4gKiBUbyB0aGlzIHB1cnBvc2UsIHRoZSBjb25zdHJ1Y3RvciBhbmQgYWxsIGNoYWluaW5nIG1ldGhvZHNcbiAqIGFjY2VwdCBvcHRpb25hbCBjYW5jZWxsYXRpb24gY2FsbGJhY2tzLlxuICpcbiAqIElmIGEgYENhbmNlbGxhYmxlUHJvbWlzZWAgc3RpbGwgcmVzb2x2ZXMgYWZ0ZXIgaGF2aW5nIGJlZW4gY2FuY2VsbGVkLFxuICogdGhlIHJlc3VsdCB3aWxsIGJlIGRpc2NhcmRlZC4gSWYgaXQgcmVqZWN0cywgdGhlIHJlYXNvblxuICogd2lsbCBiZSByZXBvcnRlZCBhcyBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uLFxuICogd3JhcHBlZCBpbiBhIHtAbGluayBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcn0gaW5zdGFuY2UuXG4gKiBUbyBmYWNpbGl0YXRlIHRoZSBoYW5kbGluZyBvZiBjYW5jZWxsYXRpb24gcmVxdWVzdHMsXG4gKiBjYW5jZWxsZWQgYENhbmNlbGxhYmxlUHJvbWlzZWBzIHdpbGwgX25vdF8gcmVwb3J0IHVuaGFuZGxlZCBgQ2FuY2VsRXJyb3Jgc1xuICogd2hvc2UgYGNhdXNlYCBmaWVsZCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHdpdGggd2hpY2ggdGhlIGN1cnJlbnQgcHJvbWlzZSB3YXMgY2FuY2VsbGVkLlxuICpcbiAqIEFsbCB1c3VhbCBwcm9taXNlIG1ldGhvZHMgYXJlIGRlZmluZWQgYW5kIHJldHVybiBhIGBDYW5jZWxsYWJsZVByb21pc2VgXG4gKiB3aG9zZSBjYW5jZWwgbWV0aG9kIHdpbGwgY2FuY2VsIHRoZSBwYXJlbnQgb3BlcmF0aW9uIGFzIHdlbGwsIHByb3BhZ2F0aW5nIHRoZSBjYW5jZWxsYXRpb24gcmVhc29uXG4gKiB1cHdhcmRzIHRocm91Z2ggcHJvbWlzZSBjaGFpbnMuXG4gKiBDb252ZXJzZWx5LCBjYW5jZWxsaW5nIGEgcHJvbWlzZSB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGNhbmNlbCBkZXBlbmRlbnQgcHJvbWlzZXMgZG93bnN0cmVhbTpcbiAqIGBgYHRzXG4gKiBsZXQgcm9vdCA9IG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyAuLi4gfSk7XG4gKiBsZXQgY2hpbGQxID0gcm9vdC50aGVuKCgpID0+IHsgLi4uIH0pO1xuICogbGV0IGNoaWxkMiA9IGNoaWxkMS50aGVuKCgpID0+IHsgLi4uIH0pO1xuICogbGV0IGNoaWxkMyA9IHJvb3QuY2F0Y2goKCkgPT4geyAuLi4gfSk7XG4gKiBjaGlsZDEuY2FuY2VsKCk7IC8vIENhbmNlbHMgY2hpbGQxIGFuZCByb290LCBidXQgbm90IGNoaWxkMiBvciBjaGlsZDNcbiAqIGBgYFxuICogQ2FuY2VsbGluZyBhIHByb21pc2UgdGhhdCBoYXMgYWxyZWFkeSBzZXR0bGVkIGlzIHNhZmUgYW5kIGhhcyBubyBjb25zZXF1ZW5jZS5cbiAqXG4gKiBUaGUgYGNhbmNlbGAgbWV0aG9kIHJldHVybnMgYSBwcm9taXNlIHRoYXQgX2Fsd2F5cyBmdWxmaWxsc19cbiAqIGFmdGVyIHRoZSB3aG9sZSBjaGFpbiBoYXMgcHJvY2Vzc2VkIHRoZSBjYW5jZWwgcmVxdWVzdFxuICogYW5kIGFsbCBhdHRhY2hlZCBjYWxsYmFja3MgdXAgdG8gdGhhdCBtb21lbnQgaGF2ZSBydW4uXG4gKlxuICogQWxsIEVTMjAyNCBwcm9taXNlIG1ldGhvZHMgKHN0YXRpYyBhbmQgaW5zdGFuY2UpIGFyZSBkZWZpbmVkIG9uIENhbmNlbGxhYmxlUHJvbWlzZSxcbiAqIGJ1dCBhY3R1YWwgYXZhaWxhYmlsaXR5IG1heSB2YXJ5IHdpdGggT1Mvd2VidmlldyB2ZXJzaW9uLlxuICpcbiAqIEluIGxpbmUgd2l0aCB0aGUgcHJvcG9zYWwgYXQgaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcm0tYnVpbHRpbi1zdWJjbGFzc2luZyxcbiAqIGBDYW5jZWxsYWJsZVByb21pc2VgIGRvZXMgbm90IHN1cHBvcnQgdHJhbnNwYXJlbnQgc3ViY2xhc3NpbmcuXG4gKiBFeHRlbmRlcnMgc2hvdWxkIHRha2UgY2FyZSB0byBwcm92aWRlIHRoZWlyIG93biBtZXRob2QgaW1wbGVtZW50YXRpb25zLlxuICogVGhpcyBtaWdodCBiZSByZWNvbnNpZGVyZWQgaW4gY2FzZSB0aGUgcHJvcG9zYWwgaXMgcmV0aXJlZC5cbiAqXG4gKiBDYW5jZWxsYWJsZVByb21pc2UgaXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgRE9NIFByb21pc2Ugb2JqZWN0XG4gKiBhbmQgaXMgY29tcGxpYW50IHdpdGggdGhlIFtQcm9taXNlcy9BKyBzcGVjaWZpY2F0aW9uXShodHRwczovL3Byb21pc2VzYXBsdXMuY29tLylcbiAqIChpdCBwYXNzZXMgdGhlIFtjb21wbGlhbmNlIHN1aXRlXShodHRwczovL2dpdGh1Yi5jb20vcHJvbWlzZXMtYXBsdXMvcHJvbWlzZXMtdGVzdHMpKVxuICogaWYgc28gaXMgdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBDYW5jZWxsYWJsZVByb21pc2U8VD4gZXh0ZW5kcyBQcm9taXNlPFQ+IGltcGxlbWVudHMgUHJvbWlzZUxpa2U8VD4sIENhbmNlbGxhYmxlUHJvbWlzZUxpa2U8VD4ge1xuICAgIC8vIFByaXZhdGUgZmllbGRzLlxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBwcml2YXRlIFtiYXJyaWVyU3ltXSE6IFBhcnRpYWw8UHJvbWlzZVdpdGhSZXNvbHZlcnM8dm9pZD4+IHwgbnVsbDtcbiAgICAvKiogQGludGVybmFsICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBbY2FuY2VsSW1wbFN5bV0hOiAocmVhc29uOiBDYW5jZWxFcnJvcikgPT4gdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBgQ2FuY2VsbGFibGVQcm9taXNlYC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBleGVjdXRvciAtIEEgY2FsbGJhY2sgdXNlZCB0byBpbml0aWFsaXplIHRoZSBwcm9taXNlLiBUaGlzIGNhbGxiYWNrIGlzIHBhc3NlZCB0d28gYXJndW1lbnRzOlxuICAgICAqICAgICAgICAgICAgICAgICAgIGEgYHJlc29sdmVgIGNhbGxiYWNrIHVzZWQgdG8gcmVzb2x2ZSB0aGUgcHJvbWlzZSB3aXRoIGEgdmFsdWVcbiAgICAgKiAgICAgICAgICAgICAgICAgICBvciB0aGUgcmVzdWx0IG9mIGFub3RoZXIgcHJvbWlzZSAocG9zc2libHkgY2FuY2VsbGFibGUpLFxuICAgICAqICAgICAgICAgICAgICAgICAgIGFuZCBhIGByZWplY3RgIGNhbGxiYWNrIHVzZWQgdG8gcmVqZWN0IHRoZSBwcm9taXNlIHdpdGggYSBwcm92aWRlZCByZWFzb24gb3IgZXJyb3IuXG4gICAgICogICAgICAgICAgICAgICAgICAgSWYgdGhlIHZhbHVlIHByb3ZpZGVkIHRvIHRoZSBgcmVzb2x2ZWAgY2FsbGJhY2sgaXMgYSB0aGVuYWJsZSBfYW5kXyBjYW5jZWxsYWJsZSBvYmplY3RcbiAgICAgKiAgICAgICAgICAgICAgICAgICAoaXQgaGFzIGEgYHRoZW5gIF9hbmRfIGEgYGNhbmNlbGAgbWV0aG9kKSxcbiAgICAgKiAgICAgICAgICAgICAgICAgICBjYW5jZWxsYXRpb24gcmVxdWVzdHMgd2lsbCBiZSBmb3J3YXJkZWQgdG8gdGhhdCBvYmplY3QgYW5kIHRoZSBvbmNhbmNlbGxlZCB3aWxsIG5vdCBiZSBpbnZva2VkIGFueW1vcmUuXG4gICAgICogICAgICAgICAgICAgICAgICAgSWYgYW55IG9uZSBvZiB0aGUgdHdvIGNhbGxiYWNrcyBpcyBjYWxsZWQgX2FmdGVyXyB0aGUgcHJvbWlzZSBoYXMgYmVlbiBjYW5jZWxsZWQsXG4gICAgICogICAgICAgICAgICAgICAgICAgdGhlIHByb3ZpZGVkIHZhbHVlcyB3aWxsIGJlIGNhbmNlbGxlZCBhbmQgcmVzb2x2ZWQgYXMgdXN1YWwsXG4gICAgICogICAgICAgICAgICAgICAgICAgYnV0IHRoZWlyIHJlc3VsdHMgd2lsbCBiZSBkaXNjYXJkZWQuXG4gICAgICogICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgdGhlIHJlc29sdXRpb24gcHJvY2VzcyB1bHRpbWF0ZWx5IGVuZHMgdXAgaW4gYSByZWplY3Rpb25cbiAgICAgKiAgICAgICAgICAgICAgICAgICB0aGF0IGlzIG5vdCBkdWUgdG8gY2FuY2VsbGF0aW9uLCB0aGUgcmVqZWN0aW9uIHJlYXNvblxuICAgICAqICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgd3JhcHBlZCBpbiBhIHtAbGluayBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcn1cbiAgICAgKiAgICAgICAgICAgICAgICAgICBhbmQgYnViYmxlZCB1cCBhcyBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uLlxuICAgICAqIEBwYXJhbSBvbmNhbmNlbGxlZCAtIEl0IGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCBhbnkgb3BlcmF0aW9uXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgc3RhcnRlZCBieSB0aGUgZXhlY3V0b3IgaXMgcHJvcGVybHkgaGFsdGVkIHVwb24gY2FuY2VsbGF0aW9uLlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uYWwgY2FsbGJhY2sgY2FuIGJlIHVzZWQgdG8gdGhhdCBwdXJwb3NlLlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIEl0IHdpbGwgYmUgY2FsbGVkIF9zeW5jaHJvbm91c2x5XyB3aXRoIGEgY2FuY2VsbGF0aW9uIGNhdXNlXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgd2hlbiBjYW5jZWxsYXRpb24gaXMgcmVxdWVzdGVkLCBfYWZ0ZXJfIHRoZSBwcm9taXNlIGhhcyBhbHJlYWR5IHJlamVjdGVkXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIHtAbGluayBDYW5jZWxFcnJvcn0sIGJ1dCBfYmVmb3JlX1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgIGFueSB7QGxpbmsgdGhlbn0ve0BsaW5rIGNhdGNofS97QGxpbmsgZmluYWxseX0gY2FsbGJhY2sgcnVucy5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgY2FsbGJhY2sgcmV0dXJucyBhIHRoZW5hYmxlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIHtAbGluayBjYW5jZWx9XG4gICAgICogICAgICAgICAgICAgICAgICAgICAgd2lsbCBvbmx5IGZ1bGZpbGwgYWZ0ZXIgdGhlIGZvcm1lciBoYXMgc2V0dGxlZC5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBVbmhhbmRsZWQgZXhjZXB0aW9ucyBvciByZWplY3Rpb25zIGZyb20gdGhlIGNhbGxiYWNrIHdpbGwgYmUgd3JhcHBlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIGluIGEge0BsaW5rIENhbmNlbGxlZFJlamVjdGlvbkVycm9yfSBhbmQgYnViYmxlZCB1cCBhcyB1bmhhbmRsZWQgcmVqZWN0aW9ucy5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgYHJlc29sdmVgIGNhbGxiYWNrIGlzIGNhbGxlZCBiZWZvcmUgY2FuY2VsbGF0aW9uIHdpdGggYSBjYW5jZWxsYWJsZSBwcm9taXNlLFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbGxhdGlvbiByZXF1ZXN0cyBvbiB0aGlzIHByb21pc2Ugd2lsbCBiZSBkaXZlcnRlZCB0byB0aGF0IHByb21pc2UsXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBvcmlnaW5hbCBgb25jYW5jZWxsZWRgIGNhbGxiYWNrIHdpbGwgYmUgZGlzY2FyZGVkLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGV4ZWN1dG9yOiBDYW5jZWxsYWJsZVByb21pc2VFeGVjdXRvcjxUPiwgb25jYW5jZWxsZWQ/OiBDYW5jZWxsYWJsZVByb21pc2VDYW5jZWxsZXIpIHtcbiAgICAgICAgbGV0IHJlc29sdmUhOiAodmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPikgPT4gdm9pZDtcbiAgICAgICAgbGV0IHJlamVjdCE6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG4gICAgICAgIHN1cGVyKChyZXMsIHJlaikgPT4geyByZXNvbHZlID0gcmVzOyByZWplY3QgPSByZWo7IH0pO1xuXG4gICAgICAgIGlmICgodGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkpW3NwZWNpZXNdICE9PSBQcm9taXNlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2FuY2VsbGFibGVQcm9taXNlIGRvZXMgbm90IHN1cHBvcnQgdHJhbnNwYXJlbnQgc3ViY2xhc3NpbmcuIFBsZWFzZSByZWZyYWluIGZyb20gb3ZlcnJpZGluZyB0aGUgW1N5bWJvbC5zcGVjaWVzXSBzdGF0aWMgcHJvcGVydHkuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHByb21pc2U6IENhbmNlbGxhYmxlUHJvbWlzZVdpdGhSZXNvbHZlcnM8VD4gPSB7XG4gICAgICAgICAgICBwcm9taXNlOiB0aGlzLFxuICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgIHJlamVjdCxcbiAgICAgICAgICAgIGdldCBvbmNhbmNlbGxlZCgpIHsgcmV0dXJuIG9uY2FuY2VsbGVkID8/IG51bGw7IH0sXG4gICAgICAgICAgICBzZXQgb25jYW5jZWxsZWQoY2IpIHsgb25jYW5jZWxsZWQgPSBjYiA/PyB1bmRlZmluZWQ7IH1cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBzdGF0ZTogQ2FuY2VsbGFibGVQcm9taXNlU3RhdGUgPSB7XG4gICAgICAgICAgICBnZXQgcm9vdCgpIHsgcmV0dXJuIHN0YXRlOyB9LFxuICAgICAgICAgICAgcmVzb2x2aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIHNldHRsZWQ6IGZhbHNlXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU2V0dXAgY2FuY2VsbGF0aW9uIHN5c3RlbS5cbiAgICAgICAgdm9pZCBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLCB7XG4gICAgICAgICAgICBbYmFycmllclN5bV06IHtcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW2NhbmNlbEltcGxTeW1dOiB7XG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGNhbmNlbGxlckZvcihwcm9taXNlLCBzdGF0ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUnVuIHRoZSBhY3R1YWwgZXhlY3V0b3IuXG4gICAgICAgIGNvbnN0IHJlamVjdG9yID0gcmVqZWN0b3JGb3IocHJvbWlzZSwgc3RhdGUpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZXhlY3V0b3IocmVzb2x2ZXJGb3IocHJvbWlzZSwgc3RhdGUpLCByZWplY3Rvcik7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKHN0YXRlLnJlc29sdmluZykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVW5oYW5kbGVkIGV4Y2VwdGlvbiBpbiBDYW5jZWxsYWJsZVByb21pc2UgZXhlY3V0b3IuXCIsIGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlamVjdG9yKGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYW5jZWxzIGltbWVkaWF0ZWx5IHRoZSBleGVjdXRpb24gb2YgdGhlIG9wZXJhdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhpcyBwcm9taXNlLlxuICAgICAqIFRoZSBwcm9taXNlIHJlamVjdHMgd2l0aCBhIHtAbGluayBDYW5jZWxFcnJvcn0gaW5zdGFuY2UgYXMgcmVhc29uLFxuICAgICAqIHdpdGggdGhlIHtAbGluayBDYW5jZWxFcnJvciNjYXVzZX0gcHJvcGVydHkgc2V0IHRvIHRoZSBnaXZlbiBhcmd1bWVudCwgaWYgYW55LlxuICAgICAqXG4gICAgICogSGFzIG5vIGVmZmVjdCBpZiBjYWxsZWQgYWZ0ZXIgdGhlIHByb21pc2UgaGFzIGFscmVhZHkgc2V0dGxlZDtcbiAgICAgKiByZXBlYXRlZCBjYWxscyBpbiBwYXJ0aWN1bGFyIGFyZSBzYWZlLCBidXQgb25seSB0aGUgZmlyc3Qgb25lXG4gICAgICogd2lsbCBzZXQgdGhlIGNhbmNlbGxhdGlvbiBjYXVzZS5cbiAgICAgKlxuICAgICAqIFRoZSBgQ2FuY2VsRXJyb3JgIGV4Y2VwdGlvbiBfbmVlZCBub3RfIGJlIGhhbmRsZWQgZXhwbGljaXRseSBfb24gdGhlIHByb21pc2VzIHRoYXQgYXJlIGJlaW5nIGNhbmNlbGxlZDpfXG4gICAgICogY2FuY2VsbGluZyBhIHByb21pc2Ugd2l0aCBubyBhdHRhY2hlZCByZWplY3Rpb24gaGFuZGxlciBkb2VzIG5vdCB0cmlnZ2VyIGFuIHVuaGFuZGxlZCByZWplY3Rpb24gZXZlbnQuXG4gICAgICogVGhlcmVmb3JlLCB0aGUgZm9sbG93aW5nIGlkaW9tcyBhcmUgYWxsIGVxdWFsbHkgY29ycmVjdDpcbiAgICAgKiBgYGB0c1xuICAgICAqIG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyAuLi4gfSkuY2FuY2VsKCk7XG4gICAgICogbmV3IENhbmNlbGxhYmxlUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7IC4uLiB9KS50aGVuKC4uLikuY2FuY2VsKCk7XG4gICAgICogbmV3IENhbmNlbGxhYmxlUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7IC4uLiB9KS50aGVuKC4uLikuY2F0Y2goLi4uKS5jYW5jZWwoKTtcbiAgICAgKiBgYGBcbiAgICAgKiBXaGVuZXZlciBzb21lIGNhbmNlbGxlZCBwcm9taXNlIGluIGEgY2hhaW4gcmVqZWN0cyB3aXRoIGEgYENhbmNlbEVycm9yYFxuICAgICAqIHdpdGggdGhlIHNhbWUgY2FuY2VsbGF0aW9uIGNhdXNlIGFzIGl0c2VsZiwgdGhlIGVycm9yIHdpbGwgYmUgZGlzY2FyZGVkIHNpbGVudGx5LlxuICAgICAqIEhvd2V2ZXIsIHRoZSBgQ2FuY2VsRXJyb3JgIF93aWxsIHN0aWxsIGJlIGRlbGl2ZXJlZF8gdG8gYWxsIGF0dGFjaGVkIHJlamVjdGlvbiBoYW5kbGVyc1xuICAgICAqIGFkZGVkIGJ5IHtAbGluayB0aGVufSBhbmQgcmVsYXRlZCBtZXRob2RzOlxuICAgICAqIGBgYHRzXG4gICAgICogbGV0IGNhbmNlbGxhYmxlID0gbmV3IENhbmNlbGxhYmxlUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7IC4uLiB9KTtcbiAgICAgKiBjYW5jZWxsYWJsZS50aGVuKCgpID0+IHsgLi4uIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgICAgKiBjYW5jZWxsYWJsZS5jYW5jZWwoKTsgLy8gQSBDYW5jZWxFcnJvciBpcyBwcmludGVkIHRvIHRoZSBjb25zb2xlLlxuICAgICAqIGBgYFxuICAgICAqIElmIHRoZSBgQ2FuY2VsRXJyb3JgIGlzIG5vdCBoYW5kbGVkIGRvd25zdHJlYW0gYnkgdGhlIHRpbWUgaXQgcmVhY2hlc1xuICAgICAqIGEgX25vbi1jYW5jZWxsZWRfIHByb21pc2UsIGl0IF93aWxsXyB0cmlnZ2VyIGFuIHVuaGFuZGxlZCByZWplY3Rpb24gZXZlbnQsXG4gICAgICoganVzdCBsaWtlIG5vcm1hbCByZWplY3Rpb25zIHdvdWxkOlxuICAgICAqIGBgYHRzXG4gICAgICogbGV0IGNhbmNlbGxhYmxlID0gbmV3IENhbmNlbGxhYmxlUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7IC4uLiB9KTtcbiAgICAgKiBsZXQgY2hhaW5lZCA9IGNhbmNlbGxhYmxlLnRoZW4oKCkgPT4geyAuLi4gfSkudGhlbigoKSA9PiB7IC4uLiB9KTsgLy8gTm8gY2F0Y2guLi5cbiAgICAgKiBjYW5jZWxsYWJsZS5jYW5jZWwoKTsgLy8gVW5oYW5kbGVkIHJlamVjdGlvbiBldmVudCBvbiBjaGFpbmVkIVxuICAgICAqIGBgYFxuICAgICAqIFRoZXJlZm9yZSwgaXQgaXMgaW1wb3J0YW50IHRvIGVpdGhlciBjYW5jZWwgd2hvbGUgcHJvbWlzZSBjaGFpbnMgZnJvbSB0aGVpciB0YWlsLFxuICAgICAqIGFzIHNob3duIGluIHRoZSBjb3JyZWN0IGlkaW9tcyBhYm92ZSwgb3IgdGFrZSBjYXJlIG9mIGhhbmRsaW5nIGVycm9ycyBldmVyeXdoZXJlLlxuICAgICAqXG4gICAgICogQHJldHVybnMgQSBjYW5jZWxsYWJsZSBwcm9taXNlIHRoYXQgX2Z1bGZpbGxzXyBhZnRlciB0aGUgY2FuY2VsIGNhbGxiYWNrIChpZiBhbnkpXG4gICAgICogYW5kIGFsbCBoYW5kbGVycyBhdHRhY2hlZCB1cCB0byB0aGUgY2FsbCB0byBjYW5jZWwgaGF2ZSBydW4uXG4gICAgICogSWYgdGhlIGNhbmNlbCBjYWxsYmFjayByZXR1cm5zIGEgdGhlbmFibGUsIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IGBjYW5jZWxgXG4gICAgICogd2lsbCBhbHNvIHdhaXQgZm9yIHRoYXQgdGhlbmFibGUgdG8gc2V0dGxlLlxuICAgICAqIFRoaXMgZW5hYmxlcyBjYWxsZXJzIHRvIHdhaXQgZm9yIHRoZSBjYW5jZWxsZWQgb3BlcmF0aW9uIHRvIHRlcm1pbmF0ZVxuICAgICAqIHdpdGhvdXQgYmVpbmcgZm9yY2VkIHRvIGhhbmRsZSBwb3RlbnRpYWwgZXJyb3JzIGF0IHRoZSBjYWxsIHNpdGUuXG4gICAgICogYGBgdHNcbiAgICAgKiBjYW5jZWxsYWJsZS5jYW5jZWwoKS50aGVuKCgpID0+IHtcbiAgICAgKiAgICAgLy8gQ2xlYW51cCBmaW5pc2hlZCwgaXQncyBzYWZlIHRvIGRvIHNvbWV0aGluZyBlbHNlLlxuICAgICAqIH0sIChlcnIpID0+IHtcbiAgICAgKiAgICAgLy8gVW5yZWFjaGFibGU6IHRoZSBwcm9taXNlIHJldHVybmVkIGZyb20gY2FuY2VsIHdpbGwgbmV2ZXIgcmVqZWN0LlxuICAgICAqIH0pO1xuICAgICAqIGBgYFxuICAgICAqIE5vdGUgdGhhdCB0aGUgcmV0dXJuZWQgcHJvbWlzZSB3aWxsIF9ub3RfIGhhbmRsZSBpbXBsaWNpdGx5IGFueSByZWplY3Rpb25cbiAgICAgKiB0aGF0IG1pZ2h0IGhhdmUgb2NjdXJyZWQgYWxyZWFkeSBpbiB0aGUgY2FuY2VsbGVkIGNoYWluLlxuICAgICAqIEl0IHdpbGwganVzdCB0cmFjayB3aGV0aGVyIHJlZ2lzdGVyZWQgaGFuZGxlcnMgaGF2ZSBiZWVuIGV4ZWN1dGVkIG9yIG5vdC5cbiAgICAgKiBUaGVyZWZvcmUsIHVuaGFuZGxlZCByZWplY3Rpb25zIHdpbGwgbmV2ZXIgYmUgc2lsZW50bHkgaGFuZGxlZCBieSBjYWxsaW5nIGNhbmNlbC5cbiAgICAgKi9cbiAgICBjYW5jZWwoY2F1c2U/OiBhbnkpOiBDYW5jZWxsYWJsZVByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgLy8gSU5WQVJJQU5UOiB0aGUgcmVzdWx0IG9mIHRoaXNbY2FuY2VsSW1wbFN5bV0gYW5kIHRoZSBiYXJyaWVyIGRvIG5vdCBldmVyIHJlamVjdC5cbiAgICAgICAgICAgIC8vIFVuZm9ydHVuYXRlbHkgbWFjT1MgSGlnaCBTaWVycmEgZG9lcyBub3Qgc3VwcG9ydCBQcm9taXNlLmFsbFNldHRsZWQuXG4gICAgICAgICAgICBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgdGhpc1tjYW5jZWxJbXBsU3ltXShuZXcgQ2FuY2VsRXJyb3IoXCJQcm9taXNlIGNhbmNlbGxlZC5cIiwgeyBjYXVzZSB9KSksXG4gICAgICAgICAgICAgICAgY3VycmVudEJhcnJpZXIodGhpcylcbiAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4gcmVzb2x2ZSgpLCAoKSA9PiByZXNvbHZlKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCaW5kcyBwcm9taXNlIGNhbmNlbGxhdGlvbiB0byB0aGUgYWJvcnQgZXZlbnQgb2YgdGhlIGdpdmVuIHtAbGluayBBYm9ydFNpZ25hbH0uXG4gICAgICogSWYgdGhlIHNpZ25hbCBoYXMgYWxyZWFkeSBhYm9ydGVkLCB0aGUgcHJvbWlzZSB3aWxsIGJlIGNhbmNlbGxlZCBpbW1lZGlhdGVseS5cbiAgICAgKiBXaGVuIGVpdGhlciBjb25kaXRpb24gaXMgdmVyaWZpZWQsIHRoZSBjYW5jZWxsYXRpb24gY2F1c2Ugd2lsbCBiZSBzZXRcbiAgICAgKiB0byB0aGUgc2lnbmFsJ3MgYWJvcnQgcmVhc29uIChzZWUge0BsaW5rIEFib3J0U2lnbmFsI3JlYXNvbn0pLlxuICAgICAqXG4gICAgICogSGFzIG5vIGVmZmVjdCBpZiBjYWxsZWQgKG9yIGlmIHRoZSBzaWduYWwgYWJvcnRzKSBfYWZ0ZXJfIHRoZSBwcm9taXNlIGhhcyBhbHJlYWR5IHNldHRsZWQuXG4gICAgICogT25seSB0aGUgZmlyc3Qgc2lnbmFsIHRvIGFib3J0IHdpbGwgc2V0IHRoZSBjYW5jZWxsYXRpb24gY2F1c2UuXG4gICAgICpcbiAgICAgKiBGb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBjYW5jZWxsYXRpb24gcHJvY2VzcyxcbiAgICAgKiBzZWUge0BsaW5rIGNhbmNlbH0gYW5kIHRoZSBgQ2FuY2VsbGFibGVQcm9taXNlYCBjb25zdHJ1Y3Rvci5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGVuYWJsZXMgYGF3YWl0YGluZyBjYW5jZWxsYWJsZSBwcm9taXNlcyB3aXRob3V0IGhhdmluZ1xuICAgICAqIHRvIHN0b3JlIHRoZW0gZm9yIGZ1dHVyZSBjYW5jZWxsYXRpb24sIGUuZy46XG4gICAgICogYGBgdHNcbiAgICAgKiBhd2FpdCBsb25nUnVubmluZ09wZXJhdGlvbigpLmNhbmNlbE9uKHNpZ25hbCk7XG4gICAgICogYGBgXG4gICAgICogaW5zdGVhZCBvZjpcbiAgICAgKiBgYGB0c1xuICAgICAqIGxldCBwcm9taXNlVG9CZUNhbmNlbGxlZCA9IGxvbmdSdW5uaW5nT3BlcmF0aW9uKCk7XG4gICAgICogYXdhaXQgcHJvbWlzZVRvQmVDYW5jZWxsZWQ7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGlzIHByb21pc2UsIGZvciBtZXRob2QgY2hhaW5pbmcuXG4gICAgICovXG4gICAgY2FuY2VsT24oc2lnbmFsOiBBYm9ydFNpZ25hbCk6IENhbmNlbGxhYmxlUHJvbWlzZTxUPiB7XG4gICAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgICAgdm9pZCB0aGlzLmNhbmNlbChzaWduYWwucmVhc29uKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4gdm9pZCB0aGlzLmNhbmNlbChzaWduYWwucmVhc29uKSwge2NhcHR1cmU6IHRydWV9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEF0dGFjaGVzIGNhbGxiYWNrcyBmb3IgdGhlIHJlc29sdXRpb24gYW5kL29yIHJlamVjdGlvbiBvZiB0aGUgYENhbmNlbGxhYmxlUHJvbWlzZWAuXG4gICAgICpcbiAgICAgKiBUaGUgb3B0aW9uYWwgYG9uY2FuY2VsbGVkYCBhcmd1bWVudCB3aWxsIGJlIGludm9rZWQgd2hlbiB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsXG4gICAgICogd2l0aCB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGBvbmNhbmNlbGxlZGAgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIFdoZW4gdGhlIHBhcmVudCBwcm9taXNlIHJlamVjdHMgb3IgaXMgY2FuY2VsbGVkLCB0aGUgYG9ucmVqZWN0ZWRgIGNhbGxiYWNrIHdpbGwgcnVuLFxuICAgICAqIF9ldmVuIGFmdGVyIHRoZSByZXR1cm5lZCBwcm9taXNlIGhhcyBiZWVuIGNhbmNlbGxlZDpfXG4gICAgICogaW4gdGhhdCBjYXNlLCBzaG91bGQgaXQgcmVqZWN0IG9yIHRocm93LCB0aGUgcmVhc29uIHdpbGwgYmUgd3JhcHBlZFxuICAgICAqIGluIGEge0BsaW5rIENhbmNlbGxlZFJlamVjdGlvbkVycm9yfSBhbmQgYnViYmxlZCB1cCBhcyBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9uZnVsZmlsbGVkIFRoZSBjYWxsYmFjayB0byBleGVjdXRlIHdoZW4gdGhlIFByb21pc2UgaXMgcmVzb2x2ZWQuXG4gICAgICogQHBhcmFtIG9ucmVqZWN0ZWQgVGhlIGNhbGxiYWNrIHRvIGV4ZWN1dGUgd2hlbiB0aGUgUHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICAgKiBAcmV0dXJucyBBIGBDYW5jZWxsYWJsZVByb21pc2VgIGZvciB0aGUgY29tcGxldGlvbiBvZiB3aGljaGV2ZXIgY2FsbGJhY2sgaXMgZXhlY3V0ZWQuXG4gICAgICogVGhlIHJldHVybmVkIHByb21pc2UgaXMgaG9va2VkIHVwIHRvIHByb3BhZ2F0ZSBjYW5jZWxsYXRpb24gcmVxdWVzdHMgdXAgdGhlIGNoYWluLCBidXQgbm90IGRvd246XG4gICAgICpcbiAgICAgKiAgIC0gaWYgdGhlIHBhcmVudCBwcm9taXNlIGlzIGNhbmNlbGxlZCwgdGhlIGBvbnJlamVjdGVkYCBoYW5kbGVyIHdpbGwgYmUgaW52b2tlZCB3aXRoIGEgYENhbmNlbEVycm9yYFxuICAgICAqICAgICBhbmQgdGhlIHJldHVybmVkIHByb21pc2UgX3dpbGwgcmVzb2x2ZSByZWd1bGFybHlfIHdpdGggaXRzIHJlc3VsdDtcbiAgICAgKiAgIC0gY29udmVyc2VseSwgaWYgdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLCBfdGhlIHBhcmVudCBwcm9taXNlIGlzIGNhbmNlbGxlZCB0b287X1xuICAgICAqICAgICB0aGUgYG9ucmVqZWN0ZWRgIGhhbmRsZXIgd2lsbCBzdGlsbCBiZSBpbnZva2VkIHdpdGggdGhlIHBhcmVudCdzIGBDYW5jZWxFcnJvcmAsXG4gICAgICogICAgIGJ1dCBpdHMgcmVzdWx0IHdpbGwgYmUgZGlzY2FyZGVkXG4gICAgICogICAgIGFuZCB0aGUgcmV0dXJuZWQgcHJvbWlzZSB3aWxsIHJlamVjdCB3aXRoIGEgYENhbmNlbEVycm9yYCBhcyB3ZWxsLlxuICAgICAqXG4gICAgICogVGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSB7QGxpbmsgY2FuY2VsfSB3aWxsIGZ1bGZpbGwgb25seSBhZnRlciBhbGwgYXR0YWNoZWQgaGFuZGxlcnNcbiAgICAgKiB1cCB0aGUgZW50aXJlIHByb21pc2UgY2hhaW4gaGF2ZSBiZWVuIHJ1bi5cbiAgICAgKlxuICAgICAqIElmIGVpdGhlciBjYWxsYmFjayByZXR1cm5zIGEgY2FuY2VsbGFibGUgcHJvbWlzZSxcbiAgICAgKiBjYW5jZWxsYXRpb24gcmVxdWVzdHMgd2lsbCBiZSBkaXZlcnRlZCB0byBpdCxcbiAgICAgKiBhbmQgdGhlIHNwZWNpZmllZCBgb25jYW5jZWxsZWRgIGNhbGxiYWNrIHdpbGwgYmUgZGlzY2FyZGVkLlxuICAgICAqL1xuICAgIHRoZW48VFJlc3VsdDEgPSBULCBUUmVzdWx0MiA9IG5ldmVyPihvbmZ1bGZpbGxlZD86ICgodmFsdWU6IFQpID0+IFRSZXN1bHQxIHwgUHJvbWlzZUxpa2U8VFJlc3VsdDE+IHwgQ2FuY2VsbGFibGVQcm9taXNlTGlrZTxUUmVzdWx0MT4pIHwgdW5kZWZpbmVkIHwgbnVsbCwgb25yZWplY3RlZD86ICgocmVhc29uOiBhbnkpID0+IFRSZXN1bHQyIHwgUHJvbWlzZUxpa2U8VFJlc3VsdDI+IHwgQ2FuY2VsbGFibGVQcm9taXNlTGlrZTxUUmVzdWx0Mj4pIHwgdW5kZWZpbmVkIHwgbnVsbCwgb25jYW5jZWxsZWQ/OiBDYW5jZWxsYWJsZVByb21pc2VDYW5jZWxsZXIpOiBDYW5jZWxsYWJsZVByb21pc2U8VFJlc3VsdDEgfCBUUmVzdWx0Mj4ge1xuICAgICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQ2FuY2VsbGFibGVQcm9taXNlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbmNlbGxhYmxlUHJvbWlzZS5wcm90b3R5cGUudGhlbiBjYWxsZWQgb24gYW4gaW52YWxpZCBvYmplY3QuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTk9URTogVHlwZVNjcmlwdCdzIGJ1aWx0LWluIHR5cGUgZm9yIHRoZW4gaXMgYnJva2VuLFxuICAgICAgICAvLyBhcyBpdCBhbGxvd3Mgc3BlY2lmeWluZyBhbiBhcmJpdHJhcnkgVFJlc3VsdDEgIT0gVCBldmVuIHdoZW4gb25mdWxmaWxsZWQgaXMgbm90IGEgZnVuY3Rpb24uXG4gICAgICAgIC8vIFdlIGNhbm5vdCBmaXggaXQgaWYgd2Ugd2FudCB0byBDYW5jZWxsYWJsZVByb21pc2UgdG8gaW1wbGVtZW50IFByb21pc2VMaWtlPFQ+LlxuXG4gICAgICAgIGlmICghaXNDYWxsYWJsZShvbmZ1bGZpbGxlZCkpIHsgb25mdWxmaWxsZWQgPSBpZGVudGl0eSBhcyBhbnk7IH1cbiAgICAgICAgaWYgKCFpc0NhbGxhYmxlKG9ucmVqZWN0ZWQpKSB7IG9ucmVqZWN0ZWQgPSB0aHJvd2VyOyB9XG5cbiAgICAgICAgaWYgKG9uZnVsZmlsbGVkID09PSBpZGVudGl0eSAmJiBvbnJlamVjdGVkID09IHRocm93ZXIpIHtcbiAgICAgICAgICAgIC8vIFNob3J0Y3V0IGZvciB0cml2aWFsIGFyZ3VtZW50cy5cbiAgICAgICAgICAgIHJldHVybiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlKChyZXNvbHZlKSA9PiByZXNvbHZlKHRoaXMgYXMgYW55KSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYXJyaWVyOiBQYXJ0aWFsPFByb21pc2VXaXRoUmVzb2x2ZXJzPHZvaWQ+PiA9IHt9O1xuICAgICAgICB0aGlzW2JhcnJpZXJTeW1dID0gYmFycmllcjtcblxuICAgICAgICByZXR1cm4gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTxUUmVzdWx0MSB8IFRSZXN1bHQyPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB2b2lkIHN1cGVyLnRoZW4oXG4gICAgICAgICAgICAgICAgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzW2JhcnJpZXJTeW1dID09PSBiYXJyaWVyKSB7IHRoaXNbYmFycmllclN5bV0gPSBudWxsOyB9XG4gICAgICAgICAgICAgICAgICAgIGJhcnJpZXIucmVzb2x2ZT8uKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUob25mdWxmaWxsZWQhKHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChyZWFzb24/KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzW2JhcnJpZXJTeW1dID09PSBiYXJyaWVyKSB7IHRoaXNbYmFycmllclN5bV0gPSBudWxsOyB9XG4gICAgICAgICAgICAgICAgICAgIGJhcnJpZXIucmVzb2x2ZT8uKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUob25yZWplY3RlZCEocmVhc29uKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9LCBhc3luYyAoY2F1c2U/KSA9PiB7XG4gICAgICAgICAgICAvL2NhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvbmNhbmNlbGxlZD8uKGNhdXNlKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jYW5jZWwoY2F1c2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBhIGNhbGxiYWNrIGZvciBvbmx5IHRoZSByZWplY3Rpb24gb2YgdGhlIFByb21pc2UuXG4gICAgICpcbiAgICAgKiBUaGUgb3B0aW9uYWwgYG9uY2FuY2VsbGVkYCBhcmd1bWVudCB3aWxsIGJlIGludm9rZWQgd2hlbiB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsXG4gICAgICogd2l0aCB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGBvbmNhbmNlbGxlZGAgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIFdoZW4gdGhlIHBhcmVudCBwcm9taXNlIHJlamVjdHMgb3IgaXMgY2FuY2VsbGVkLCB0aGUgYG9ucmVqZWN0ZWRgIGNhbGxiYWNrIHdpbGwgcnVuLFxuICAgICAqIF9ldmVuIGFmdGVyIHRoZSByZXR1cm5lZCBwcm9taXNlIGhhcyBiZWVuIGNhbmNlbGxlZDpfXG4gICAgICogaW4gdGhhdCBjYXNlLCBzaG91bGQgaXQgcmVqZWN0IG9yIHRocm93LCB0aGUgcmVhc29uIHdpbGwgYmUgd3JhcHBlZFxuICAgICAqIGluIGEge0BsaW5rIENhbmNlbGxlZFJlamVjdGlvbkVycm9yfSBhbmQgYnViYmxlZCB1cCBhcyBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uLlxuICAgICAqXG4gICAgICogSXQgaXMgZXF1aXZhbGVudCB0b1xuICAgICAqIGBgYHRzXG4gICAgICogY2FuY2VsbGFibGVQcm9taXNlLnRoZW4odW5kZWZpbmVkLCBvbnJlamVjdGVkLCBvbmNhbmNlbGxlZCk7XG4gICAgICogYGBgXG4gICAgICogYW5kIHRoZSBzYW1lIGNhdmVhdHMgYXBwbHkuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBIFByb21pc2UgZm9yIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBjYWxsYmFjay5cbiAgICAgKiBDYW5jZWxsYXRpb24gcmVxdWVzdHMgb24gdGhlIHJldHVybmVkIHByb21pc2VcbiAgICAgKiB3aWxsIHByb3BhZ2F0ZSB1cCB0aGUgY2hhaW4gdG8gdGhlIHBhcmVudCBwcm9taXNlLFxuICAgICAqIGJ1dCBub3QgaW4gdGhlIG90aGVyIGRpcmVjdGlvbi5cbiAgICAgKlxuICAgICAqIFRoZSBwcm9taXNlIHJldHVybmVkIGZyb20ge0BsaW5rIGNhbmNlbH0gd2lsbCBmdWxmaWxsIG9ubHkgYWZ0ZXIgYWxsIGF0dGFjaGVkIGhhbmRsZXJzXG4gICAgICogdXAgdGhlIGVudGlyZSBwcm9taXNlIGNoYWluIGhhdmUgYmVlbiBydW4uXG4gICAgICpcbiAgICAgKiBJZiBgb25yZWplY3RlZGAgcmV0dXJucyBhIGNhbmNlbGxhYmxlIHByb21pc2UsXG4gICAgICogY2FuY2VsbGF0aW9uIHJlcXVlc3RzIHdpbGwgYmUgZGl2ZXJ0ZWQgdG8gaXQsXG4gICAgICogYW5kIHRoZSBzcGVjaWZpZWQgYG9uY2FuY2VsbGVkYCBjYWxsYmFjayB3aWxsIGJlIGRpc2NhcmRlZC5cbiAgICAgKiBTZWUge0BsaW5rIHRoZW59IGZvciBtb3JlIGRldGFpbHMuXG4gICAgICovXG4gICAgY2F0Y2g8VFJlc3VsdCA9IG5ldmVyPihvbnJlamVjdGVkPzogKChyZWFzb246IGFueSkgPT4gKFByb21pc2VMaWtlPFRSZXN1bHQ+IHwgVFJlc3VsdCkpIHwgdW5kZWZpbmVkIHwgbnVsbCwgb25jYW5jZWxsZWQ/OiBDYW5jZWxsYWJsZVByb21pc2VDYW5jZWxsZXIpOiBDYW5jZWxsYWJsZVByb21pc2U8VCB8IFRSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9ucmVqZWN0ZWQsIG9uY2FuY2VsbGVkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBhIGNhbGxiYWNrIHRoYXQgaXMgaW52b2tlZCB3aGVuIHRoZSBDYW5jZWxsYWJsZVByb21pc2UgaXMgc2V0dGxlZCAoZnVsZmlsbGVkIG9yIHJlamVjdGVkKS4gVGhlXG4gICAgICogcmVzb2x2ZWQgdmFsdWUgY2Fubm90IGJlIGFjY2Vzc2VkIG9yIG1vZGlmaWVkIGZyb20gdGhlIGNhbGxiYWNrLlxuICAgICAqIFRoZSByZXR1cm5lZCBwcm9taXNlIHdpbGwgc2V0dGxlIGluIHRoZSBzYW1lIHN0YXRlIGFzIHRoZSBvcmlnaW5hbCBvbmVcbiAgICAgKiBhZnRlciB0aGUgcHJvdmlkZWQgY2FsbGJhY2sgaGFzIGNvbXBsZXRlZCBleGVjdXRpb24sXG4gICAgICogdW5sZXNzIHRoZSBjYWxsYmFjayB0aHJvd3Mgb3IgcmV0dXJucyBhIHJlamVjdGluZyBwcm9taXNlLFxuICAgICAqIGluIHdoaWNoIGNhc2UgdGhlIHJldHVybmVkIHByb21pc2Ugd2lsbCByZWplY3QgYXMgd2VsbC5cbiAgICAgKlxuICAgICAqIFRoZSBvcHRpb25hbCBgb25jYW5jZWxsZWRgIGFyZ3VtZW50IHdpbGwgYmUgaW52b2tlZCB3aGVuIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGNhbmNlbGxlZCxcbiAgICAgKiB3aXRoIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYG9uY2FuY2VsbGVkYCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IuXG4gICAgICogT25jZSB0aGUgcGFyZW50IHByb21pc2Ugc2V0dGxlcywgdGhlIGBvbmZpbmFsbHlgIGNhbGxiYWNrIHdpbGwgcnVuLFxuICAgICAqIF9ldmVuIGFmdGVyIHRoZSByZXR1cm5lZCBwcm9taXNlIGhhcyBiZWVuIGNhbmNlbGxlZDpfXG4gICAgICogaW4gdGhhdCBjYXNlLCBzaG91bGQgaXQgcmVqZWN0IG9yIHRocm93LCB0aGUgcmVhc29uIHdpbGwgYmUgd3JhcHBlZFxuICAgICAqIGluIGEge0BsaW5rIENhbmNlbGxlZFJlamVjdGlvbkVycm9yfSBhbmQgYnViYmxlZCB1cCBhcyBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgaXMgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2Yge0BsaW5rIHRoZW59IGFuZCB0aGUgc2FtZSBjYXZlYXRzIGFwcGx5LlxuICAgICAqIEl0IGlzIHBvbHlmaWxsZWQsIGhlbmNlIGF2YWlsYWJsZSBpbiBldmVyeSBPUy93ZWJ2aWV3IHZlcnNpb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBIFByb21pc2UgZm9yIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBjYWxsYmFjay5cbiAgICAgKiBDYW5jZWxsYXRpb24gcmVxdWVzdHMgb24gdGhlIHJldHVybmVkIHByb21pc2VcbiAgICAgKiB3aWxsIHByb3BhZ2F0ZSB1cCB0aGUgY2hhaW4gdG8gdGhlIHBhcmVudCBwcm9taXNlLFxuICAgICAqIGJ1dCBub3QgaW4gdGhlIG90aGVyIGRpcmVjdGlvbi5cbiAgICAgKlxuICAgICAqIFRoZSBwcm9taXNlIHJldHVybmVkIGZyb20ge0BsaW5rIGNhbmNlbH0gd2lsbCBmdWxmaWxsIG9ubHkgYWZ0ZXIgYWxsIGF0dGFjaGVkIGhhbmRsZXJzXG4gICAgICogdXAgdGhlIGVudGlyZSBwcm9taXNlIGNoYWluIGhhdmUgYmVlbiBydW4uXG4gICAgICpcbiAgICAgKiBJZiBgb25maW5hbGx5YCByZXR1cm5zIGEgY2FuY2VsbGFibGUgcHJvbWlzZSxcbiAgICAgKiBjYW5jZWxsYXRpb24gcmVxdWVzdHMgd2lsbCBiZSBkaXZlcnRlZCB0byBpdCxcbiAgICAgKiBhbmQgdGhlIHNwZWNpZmllZCBgb25jYW5jZWxsZWRgIGNhbGxiYWNrIHdpbGwgYmUgZGlzY2FyZGVkLlxuICAgICAqIFNlZSB7QGxpbmsgdGhlbn0gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKi9cbiAgICBmaW5hbGx5KG9uZmluYWxseT86ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZCB8IG51bGwsIG9uY2FuY2VsbGVkPzogQ2FuY2VsbGFibGVQcm9taXNlQ2FuY2VsbGVyKTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+IHtcbiAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIENhbmNlbGxhYmxlUHJvbWlzZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5jZWxsYWJsZVByb21pc2UucHJvdG90eXBlLmZpbmFsbHkgY2FsbGVkIG9uIGFuIGludmFsaWQgb2JqZWN0LlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNDYWxsYWJsZShvbmZpbmFsbHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aGVuKG9uZmluYWxseSwgb25maW5hbGx5LCBvbmNhbmNlbGxlZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy50aGVuKFxuICAgICAgICAgICAgKHZhbHVlKSA9PiBDYW5jZWxsYWJsZVByb21pc2UucmVzb2x2ZShvbmZpbmFsbHkoKSkudGhlbigoKSA9PiB2YWx1ZSksXG4gICAgICAgICAgICAocmVhc29uPykgPT4gQ2FuY2VsbGFibGVQcm9taXNlLnJlc29sdmUob25maW5hbGx5KCkpLnRoZW4oKCkgPT4geyB0aHJvdyByZWFzb247IH0pLFxuICAgICAgICAgICAgb25jYW5jZWxsZWQsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2UgdXNlIHRoZSBgW1N5bWJvbC5zcGVjaWVzXWAgc3RhdGljIHByb3BlcnR5LCBpZiBhdmFpbGFibGUsXG4gICAgICogdG8gZGlzYWJsZSB0aGUgYnVpbHQtaW4gYXV0b21hdGljIHN1YmNsYXNzaW5nIGZlYXR1cmVzIGZyb20ge0BsaW5rIFByb21pc2V9LlxuICAgICAqIEl0IGlzIGNyaXRpY2FsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIHRoYXQgZXh0ZW5kZXJzIGRvIG5vdCBvdmVycmlkZSB0aGlzLlxuICAgICAqIE9uY2UgdGhlIHByb3Bvc2FsIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXJtLWJ1aWx0aW4tc3ViY2xhc3NpbmdcbiAgICAgKiBpcyBlaXRoZXIgYWNjZXB0ZWQgb3IgcmV0aXJlZCwgdGhpcyBpbXBsZW1lbnRhdGlvbiB3aWxsIGhhdmUgdG8gYmUgcmV2aXNlZCBhY2NvcmRpbmdseS5cbiAgICAgKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IFtzcGVjaWVzXSgpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIENhbmNlbGxhYmxlUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggYW4gYXJyYXkgb2YgcmVzdWx0c1xuICAgICAqIHdoZW4gYWxsIG9mIHRoZSBwcm92aWRlZCBQcm9taXNlcyByZXNvbHZlLCBvciByZWplY3RlZCB3aGVuIGFueSBQcm9taXNlIGlzIHJlamVjdGVkLlxuICAgICAqXG4gICAgICogRXZlcnkgb25lIG9mIHRoZSBwcm92aWRlZCBvYmplY3RzIHRoYXQgaXMgYSB0aGVuYWJsZSBfYW5kXyBjYW5jZWxsYWJsZSBvYmplY3RcbiAgICAgKiB3aWxsIGJlIGNhbmNlbGxlZCB3aGVuIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGNhbmNlbGxlZCwgd2l0aCB0aGUgc2FtZSBjYXVzZS5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyBhbGw8VD4odmFsdWVzOiBJdGVyYWJsZTxUIHwgUHJvbWlzZUxpa2U8VD4+KTogQ2FuY2VsbGFibGVQcm9taXNlPEF3YWl0ZWQ8VD5bXT47XG4gICAgc3RhdGljIGFsbDxUIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdIHwgW10+KHZhbHVlczogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTx7IC1yZWFkb25seSBbUCBpbiBrZXlvZiBUXTogQXdhaXRlZDxUW1BdPjsgfT47XG4gICAgc3RhdGljIGFsbDxUIGV4dGVuZHMgSXRlcmFibGU8dW5rbm93bj4gfCBBcnJheUxpa2U8dW5rbm93bj4+KHZhbHVlczogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIGxldCBjb2xsZWN0ZWQgPSBBcnJheS5mcm9tKHZhbHVlcyk7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBjb2xsZWN0ZWQubGVuZ3RoID09PSAwXG4gICAgICAgICAgICA/IENhbmNlbGxhYmxlUHJvbWlzZS5yZXNvbHZlKGNvbGxlY3RlZClcbiAgICAgICAgICAgIDogbmV3IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgdm9pZCBQcm9taXNlLmFsbChjb2xsZWN0ZWQpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgIH0sIChjYXVzZT8pOiBQcm9taXNlPHZvaWQ+ID0+IGNhbmNlbEFsbChwcm9taXNlLCBjb2xsZWN0ZWQsIGNhdXNlKSk7XG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBDYW5jZWxsYWJsZVByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIGFuIGFycmF5IG9mIHJlc3VsdHNcbiAgICAgKiB3aGVuIGFsbCBvZiB0aGUgcHJvdmlkZWQgUHJvbWlzZXMgcmVzb2x2ZSBvciByZWplY3QuXG4gICAgICpcbiAgICAgKiBFdmVyeSBvbmUgb2YgdGhlIHByb3ZpZGVkIG9iamVjdHMgdGhhdCBpcyBhIHRoZW5hYmxlIF9hbmRfIGNhbmNlbGxhYmxlIG9iamVjdFxuICAgICAqIHdpbGwgYmUgY2FuY2VsbGVkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLCB3aXRoIHRoZSBzYW1lIGNhdXNlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIGFsbFNldHRsZWQ8VD4odmFsdWVzOiBJdGVyYWJsZTxUIHwgUHJvbWlzZUxpa2U8VD4+KTogQ2FuY2VsbGFibGVQcm9taXNlPFByb21pc2VTZXR0bGVkUmVzdWx0PEF3YWl0ZWQ8VD4+W10+O1xuICAgIHN0YXRpYyBhbGxTZXR0bGVkPFQgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gfCBbXT4odmFsdWVzOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPHsgLXJlYWRvbmx5IFtQIGluIGtleW9mIFRdOiBQcm9taXNlU2V0dGxlZFJlc3VsdDxBd2FpdGVkPFRbUF0+PjsgfT47XG4gICAgc3RhdGljIGFsbFNldHRsZWQ8VCBleHRlbmRzIEl0ZXJhYmxlPHVua25vd24+IHwgQXJyYXlMaWtlPHVua25vd24+Pih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBsZXQgY29sbGVjdGVkID0gQXJyYXkuZnJvbSh2YWx1ZXMpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gY29sbGVjdGVkLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyBDYW5jZWxsYWJsZVByb21pc2UucmVzb2x2ZShjb2xsZWN0ZWQpXG4gICAgICAgICAgICA6IG5ldyBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIHZvaWQgUHJvbWlzZS5hbGxTZXR0bGVkKGNvbGxlY3RlZCkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgfSwgKGNhdXNlPyk6IFByb21pc2U8dm9pZD4gPT4gY2FuY2VsQWxsKHByb21pc2UsIGNvbGxlY3RlZCwgY2F1c2UpKTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGFueSBmdW5jdGlvbiByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGlzIGZ1bGZpbGxlZCBieSB0aGUgZmlyc3QgZ2l2ZW4gcHJvbWlzZSB0byBiZSBmdWxmaWxsZWQsXG4gICAgICogb3IgcmVqZWN0ZWQgd2l0aCBhbiBBZ2dyZWdhdGVFcnJvciBjb250YWluaW5nIGFuIGFycmF5IG9mIHJlamVjdGlvbiByZWFzb25zXG4gICAgICogaWYgYWxsIG9mIHRoZSBnaXZlbiBwcm9taXNlcyBhcmUgcmVqZWN0ZWQuXG4gICAgICogSXQgcmVzb2x2ZXMgYWxsIGVsZW1lbnRzIG9mIHRoZSBwYXNzZWQgaXRlcmFibGUgdG8gcHJvbWlzZXMgYXMgaXQgcnVucyB0aGlzIGFsZ29yaXRobS5cbiAgICAgKlxuICAgICAqIEV2ZXJ5IG9uZSBvZiB0aGUgcHJvdmlkZWQgb2JqZWN0cyB0aGF0IGlzIGEgdGhlbmFibGUgX2FuZF8gY2FuY2VsbGFibGUgb2JqZWN0XG4gICAgICogd2lsbCBiZSBjYW5jZWxsZWQgd2hlbiB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsIHdpdGggdGhlIHNhbWUgY2F1c2UuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgYW55PFQ+KHZhbHVlczogSXRlcmFibGU8VCB8IFByb21pc2VMaWtlPFQ+Pik6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFQ+PjtcbiAgICBzdGF0aWMgYW55PFQgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gfCBbXT4odmFsdWVzOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPEF3YWl0ZWQ8VFtudW1iZXJdPj47XG4gICAgc3RhdGljIGFueTxUIGV4dGVuZHMgSXRlcmFibGU8dW5rbm93bj4gfCBBcnJheUxpa2U8dW5rbm93bj4+KHZhbHVlczogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIGxldCBjb2xsZWN0ZWQgPSBBcnJheS5mcm9tKHZhbHVlcyk7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBjb2xsZWN0ZWQubGVuZ3RoID09PSAwXG4gICAgICAgICAgICA/IENhbmNlbGxhYmxlUHJvbWlzZS5yZXNvbHZlKGNvbGxlY3RlZClcbiAgICAgICAgICAgIDogbmV3IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgdm9pZCBQcm9taXNlLmFueShjb2xsZWN0ZWQpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgIH0sIChjYXVzZT8pOiBQcm9taXNlPHZvaWQ+ID0+IGNhbmNlbEFsbChwcm9taXNlLCBjb2xsZWN0ZWQsIGNhdXNlKSk7XG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBQcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgb3IgcmVqZWN0ZWQgd2hlbiBhbnkgb2YgdGhlIHByb3ZpZGVkIFByb21pc2VzIGFyZSByZXNvbHZlZCBvciByZWplY3RlZC5cbiAgICAgKlxuICAgICAqIEV2ZXJ5IG9uZSBvZiB0aGUgcHJvdmlkZWQgb2JqZWN0cyB0aGF0IGlzIGEgdGhlbmFibGUgX2FuZF8gY2FuY2VsbGFibGUgb2JqZWN0XG4gICAgICogd2lsbCBiZSBjYW5jZWxsZWQgd2hlbiB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsIHdpdGggdGhlIHNhbWUgY2F1c2UuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgcmFjZTxUPih2YWx1ZXM6IEl0ZXJhYmxlPFQgfCBQcm9taXNlTGlrZTxUPj4pOiBDYW5jZWxsYWJsZVByb21pc2U8QXdhaXRlZDxUPj47XG4gICAgc3RhdGljIHJhY2U8VCBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSB8IFtdPih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8QXdhaXRlZDxUW251bWJlcl0+PjtcbiAgICBzdGF0aWMgcmFjZTxUIGV4dGVuZHMgSXRlcmFibGU8dW5rbm93bj4gfCBBcnJheUxpa2U8dW5rbm93bj4+KHZhbHVlczogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIGxldCBjb2xsZWN0ZWQgPSBBcnJheS5mcm9tKHZhbHVlcyk7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHZvaWQgUHJvbWlzZS5yYWNlKGNvbGxlY3RlZCkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9LCAoY2F1c2U/KTogUHJvbWlzZTx2b2lkPiA9PiBjYW5jZWxBbGwocHJvbWlzZSwgY29sbGVjdGVkLCBjYXVzZSkpO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGNhbmNlbGxlZCBDYW5jZWxsYWJsZVByb21pc2UgZm9yIHRoZSBwcm92aWRlZCBjYXVzZS5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyBjYW5jZWw8VCA9IG5ldmVyPihjYXVzZT86IGFueSk6IENhbmNlbGxhYmxlUHJvbWlzZTxUPiB7XG4gICAgICAgIGNvbnN0IHAgPSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPFQ+KCgpID0+IHt9KTtcbiAgICAgICAgcC5jYW5jZWwoY2F1c2UpO1xuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IENhbmNlbGxhYmxlUHJvbWlzZSB0aGF0IGNhbmNlbHNcbiAgICAgKiBhZnRlciB0aGUgc3BlY2lmaWVkIHRpbWVvdXQsIHdpdGggdGhlIHByb3ZpZGVkIGNhdXNlLlxuICAgICAqXG4gICAgICogSWYgdGhlIHtAbGluayBBYm9ydFNpZ25hbC50aW1lb3V0fSBmYWN0b3J5IG1ldGhvZCBpcyBhdmFpbGFibGUsXG4gICAgICogaXQgaXMgdXNlZCB0byBiYXNlIHRoZSB0aW1lb3V0IG9uIF9hY3RpdmVfIHRpbWUgcmF0aGVyIHRoYW4gX2VsYXBzZWRfIHRpbWUuXG4gICAgICogT3RoZXJ3aXNlLCBgdGltZW91dGAgZmFsbHMgYmFjayB0byB7QGxpbmsgc2V0VGltZW91dH0uXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgdGltZW91dDxUID0gbmV2ZXI+KG1pbGxpc2Vjb25kczogbnVtYmVyLCBjYXVzZT86IGFueSk6IENhbmNlbGxhYmxlUHJvbWlzZTxUPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPFQ+KCgpID0+IHt9KTtcbiAgICAgICAgaWYgKEFib3J0U2lnbmFsICYmIHR5cGVvZiBBYm9ydFNpZ25hbCA9PT0gJ2Z1bmN0aW9uJyAmJiBBYm9ydFNpZ25hbC50aW1lb3V0ICYmIHR5cGVvZiBBYm9ydFNpZ25hbC50aW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBBYm9ydFNpZ25hbC50aW1lb3V0KG1pbGxpc2Vjb25kcykuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCAoKSA9PiB2b2lkIHByb21pc2UuY2FuY2VsKGNhdXNlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHZvaWQgcHJvbWlzZS5jYW5jZWwoY2F1c2UpLCBtaWxsaXNlY29uZHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlIHRoYXQgcmVzb2x2ZXMgYWZ0ZXIgdGhlIHNwZWNpZmllZCB0aW1lb3V0LlxuICAgICAqIFRoZSByZXR1cm5lZCBwcm9taXNlIGNhbiBiZSBjYW5jZWxsZWQgd2l0aG91dCBjb25zZXF1ZW5jZXMuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgc2xlZXAobWlsbGlzZWNvbmRzOiBudW1iZXIpOiBDYW5jZWxsYWJsZVByb21pc2U8dm9pZD47XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBDYW5jZWxsYWJsZVByb21pc2UgdGhhdCByZXNvbHZlcyBhZnRlclxuICAgICAqIHRoZSBzcGVjaWZpZWQgdGltZW91dCwgd2l0aCB0aGUgcHJvdmlkZWQgdmFsdWUuXG4gICAgICogVGhlIHJldHVybmVkIHByb21pc2UgY2FuIGJlIGNhbmNlbGxlZCB3aXRob3V0IGNvbnNlcXVlbmNlcy5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyBzbGVlcDxUPihtaWxsaXNlY29uZHM6IG51bWJlciwgdmFsdWU6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8VD47XG4gICAgc3RhdGljIHNsZWVwPFQgPSB2b2lkPihtaWxsaXNlY29uZHM6IG51bWJlciwgdmFsdWU/OiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYW5jZWxsYWJsZVByb21pc2U8VD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVzb2x2ZSh2YWx1ZSEpLCBtaWxsaXNlY29uZHMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHJlamVjdGVkIENhbmNlbGxhYmxlUHJvbWlzZSBmb3IgdGhlIHByb3ZpZGVkIHJlYXNvbi5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyByZWplY3Q8VCA9IG5ldmVyPihyZWFzb24/OiBhbnkpOiBDYW5jZWxsYWJsZVByb21pc2U8VD4ge1xuICAgICAgICByZXR1cm4gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTxUPigoXywgcmVqZWN0KSA9PiByZWplY3QocmVhc29uKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyByZXNvbHZlZCBDYW5jZWxsYWJsZVByb21pc2UuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgcmVzb2x2ZSgpOiBDYW5jZWxsYWJsZVByb21pc2U8dm9pZD47XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyByZXNvbHZlZCBDYW5jZWxsYWJsZVByb21pc2UgZm9yIHRoZSBwcm92aWRlZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyByZXNvbHZlPFQ+KHZhbHVlOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPEF3YWl0ZWQ8VD4+O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcmVzb2x2ZWQgQ2FuY2VsbGFibGVQcm9taXNlIGZvciB0aGUgcHJvdmlkZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgcmVzb2x2ZTxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogQ2FuY2VsbGFibGVQcm9taXNlPEF3YWl0ZWQ8VD4+O1xuICAgIHN0YXRpYyByZXNvbHZlPFQgPSB2b2lkPih2YWx1ZT86IFQgfCBQcm9taXNlTGlrZTxUPik6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFQ+PiB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIENhbmNlbGxhYmxlUHJvbWlzZSkge1xuICAgICAgICAgICAgLy8gT3B0aW1pc2UgZm9yIGNhbmNlbGxhYmxlIHByb21pc2VzLlxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPGFueT4oKHJlc29sdmUpID0+IHJlc29sdmUodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IENhbmNlbGxhYmxlUHJvbWlzZSBhbmQgcmV0dXJucyBpdCBpbiBhbiBvYmplY3QsIGFsb25nIHdpdGggaXRzIHJlc29sdmUgYW5kIHJlamVjdCBmdW5jdGlvbnNcbiAgICAgKiBhbmQgYSBnZXR0ZXIvc2V0dGVyIGZvciB0aGUgY2FuY2VsbGF0aW9uIGNhbGxiYWNrLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgaXMgcG9seWZpbGxlZCwgaGVuY2UgYXZhaWxhYmxlIGluIGV2ZXJ5IE9TL3dlYnZpZXcgdmVyc2lvbi5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyB3aXRoUmVzb2x2ZXJzPFQ+KCk6IENhbmNlbGxhYmxlUHJvbWlzZVdpdGhSZXNvbHZlcnM8VD4ge1xuICAgICAgICBsZXQgcmVzdWx0OiBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+ID0geyBvbmNhbmNlbGxlZDogbnVsbCB9IGFzIGFueTtcbiAgICAgICAgcmVzdWx0LnByb21pc2UgPSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdC5yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgICAgICAgIHJlc3VsdC5yZWplY3QgPSByZWplY3Q7XG4gICAgICAgIH0sIChjYXVzZT86IGFueSkgPT4geyByZXN1bHQub25jYW5jZWxsZWQ/LihjYXVzZSk7IH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgY2FsbGJhY2sgdGhhdCBpbXBsZW1lbnRzIHRoZSBjYW5jZWxsYXRpb24gYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4gY2FuY2VsbGFibGUgcHJvbWlzZS5cbiAqIFRoZSBwcm9taXNlIHJldHVybmVkIGZyb20gdGhlIHJlc3VsdGluZyBmdW5jdGlvbiBkb2VzIG5vdCByZWplY3QuXG4gKi9cbmZ1bmN0aW9uIGNhbmNlbGxlckZvcjxUPihwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+LCBzdGF0ZTogQ2FuY2VsbGFibGVQcm9taXNlU3RhdGUpIHtcbiAgICBsZXQgY2FuY2VsbGF0aW9uUHJvbWlzZTogdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+ID0gdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIChyZWFzb246IENhbmNlbEVycm9yKTogdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+ID0+IHtcbiAgICAgICAgaWYgKCFzdGF0ZS5zZXR0bGVkKSB7XG4gICAgICAgICAgICBzdGF0ZS5zZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0YXRlLnJlYXNvbiA9IHJlYXNvbjtcbiAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHJlYXNvbik7XG5cbiAgICAgICAgICAgIC8vIEF0dGFjaCBhbiBlcnJvciBoYW5kbGVyIHRoYXQgaWdub3JlcyB0aGlzIHNwZWNpZmljIHJlamVjdGlvbiByZWFzb24gYW5kIG5vdGhpbmcgZWxzZS5cbiAgICAgICAgICAgIC8vIEluIHRoZW9yeSwgYSBzYW5lIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gYXQgdGhpcyBwb2ludFxuICAgICAgICAgICAgLy8gc2hvdWxkIGFsd2F5cyByZWplY3Qgd2l0aCBvdXIgY2FuY2VsbGF0aW9uIHJlYXNvbixcbiAgICAgICAgICAgIC8vIGhlbmNlIHRoZSBoYW5kbGVyIHdpbGwgbmV2ZXIgdGhyb3cuXG4gICAgICAgICAgICB2b2lkIFByb21pc2UucHJvdG90eXBlLnRoZW4uY2FsbChwcm9taXNlLnByb21pc2UsIHVuZGVmaW5lZCwgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIgIT09IHJlYXNvbikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiByZWFzb24gaXMgbm90IHNldCwgdGhlIHByb21pc2UgcmVzb2x2ZWQgcmVndWxhcmx5LCBoZW5jZSB3ZSBtdXN0IG5vdCBjYWxsIG9uY2FuY2VsbGVkLlxuICAgICAgICAvLyBJZiBvbmNhbmNlbGxlZCBpcyB1bnNldCwgbm8gbmVlZCB0byBnbyBhbnkgZnVydGhlci5cbiAgICAgICAgaWYgKCFzdGF0ZS5yZWFzb24gfHwgIXByb21pc2Uub25jYW5jZWxsZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgY2FuY2VsbGF0aW9uUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocHJvbWlzZS5vbmNhbmNlbGxlZCEoc3RhdGUucmVhc29uIS5jYXVzZSkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgUHJvbWlzZS5yZWplY3QobmV3IENhbmNlbGxlZFJlamVjdGlvbkVycm9yKHByb21pc2UucHJvbWlzZSwgZXJyLCBcIlVuaGFuZGxlZCBleGNlcHRpb24gaW4gb25jYW5jZWxsZWQgY2FsbGJhY2suXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuY2F0Y2goKHJlYXNvbj8pID0+IHtcbiAgICAgICAgICAgIFByb21pc2UucmVqZWN0KG5ldyBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcihwcm9taXNlLnByb21pc2UsIHJlYXNvbiwgXCJVbmhhbmRsZWQgcmVqZWN0aW9uIGluIG9uY2FuY2VsbGVkIGNhbGxiYWNrLlwiKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFVuc2V0IG9uY2FuY2VsbGVkIHRvIHByZXZlbnQgcmVwZWF0ZWQgY2FsbHMuXG4gICAgICAgIHByb21pc2Uub25jYW5jZWxsZWQgPSBudWxsO1xuXG4gICAgICAgIHJldHVybiBjYW5jZWxsYXRpb25Qcm9taXNlO1xuICAgIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgY2FsbGJhY2sgdGhhdCBpbXBsZW1lbnRzIHRoZSByZXNvbHV0aW9uIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGNhbmNlbGxhYmxlIHByb21pc2UuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVyRm9yPFQ+KHByb21pc2U6IENhbmNlbGxhYmxlUHJvbWlzZVdpdGhSZXNvbHZlcnM8VD4sIHN0YXRlOiBDYW5jZWxsYWJsZVByb21pc2VTdGF0ZSk6IENhbmNlbGxhYmxlUHJvbWlzZVJlc29sdmVyPFQ+IHtcbiAgICByZXR1cm4gKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZS5yZXNvbHZpbmcpIHsgcmV0dXJuOyB9XG4gICAgICAgIHN0YXRlLnJlc29sdmluZyA9IHRydWU7XG5cbiAgICAgICAgaWYgKHZhbHVlID09PSBwcm9taXNlLnByb21pc2UpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5zZXR0bGVkKSB7IHJldHVybjsgfVxuICAgICAgICAgICAgc3RhdGUuc2V0dGxlZCA9IHRydWU7XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKFwiQSBwcm9taXNlIGNhbm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0c2VsZi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICAgICAgbGV0IHRoZW46IGFueTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhlbiA9ICh2YWx1ZSBhcyBhbnkpLnRoZW47XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5zZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzQ2FsbGFibGUodGhlbikpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY2FuY2VsID0gKHZhbHVlIGFzIGFueSkuY2FuY2VsO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDYWxsYWJsZShjYW5jZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvbmNhbmNlbGxlZCA9IChjYXVzZT86IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZmxlY3QuYXBwbHkoY2FuY2VsLCB2YWx1ZSwgW2NhdXNlXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLnJlYXNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGFscmVhZHkgY2FuY2VsbGVkLCBwcm9wYWdhdGUgY2FuY2VsbGF0aW9uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwcm9taXNlIHJldHVybmVkIGZyb20gdGhlIGNhbmNlbGxlciBhbGdvcml0aG0gZG9lcyBub3QgcmVqZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc28gaXQgY2FuIGJlIGRpc2NhcmRlZCBzYWZlbHkuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCBjYW5jZWxsZXJGb3IoeyAuLi5wcm9taXNlLCBvbmNhbmNlbGxlZCB9LCBzdGF0ZSkoc3RhdGUucmVhc29uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5vbmNhbmNlbGxlZCA9IG9uY2FuY2VsbGVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCB7fVxuXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3U3RhdGU6IENhbmNlbGxhYmxlUHJvbWlzZVN0YXRlID0ge1xuICAgICAgICAgICAgICAgICAgICByb290OiBzdGF0ZS5yb290LFxuICAgICAgICAgICAgICAgICAgICByZXNvbHZpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBnZXQgc2V0dGxlZCgpIHsgcmV0dXJuIHRoaXMucm9vdC5zZXR0bGVkIH0sXG4gICAgICAgICAgICAgICAgICAgIHNldCBzZXR0bGVkKHZhbHVlKSB7IHRoaXMucm9vdC5zZXR0bGVkID0gdmFsdWU7IH0sXG4gICAgICAgICAgICAgICAgICAgIGdldCByZWFzb24oKSB7IHJldHVybiB0aGlzLnJvb3QucmVhc29uIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVqZWN0b3IgPSByZWplY3RvckZvcihwcm9taXNlLCBuZXdTdGF0ZSk7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgUmVmbGVjdC5hcHBseSh0aGVuLCB2YWx1ZSwgW3Jlc29sdmVyRm9yKHByb21pc2UsIG5ld1N0YXRlKSwgcmVqZWN0b3JdKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0b3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBJTVBPUlRBTlQhXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUuc2V0dGxlZCkgeyByZXR1cm47IH1cbiAgICAgICAgc3RhdGUuc2V0dGxlZCA9IHRydWU7XG4gICAgICAgIHByb21pc2UucmVzb2x2ZSh2YWx1ZSk7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgY2FsbGJhY2sgdGhhdCBpbXBsZW1lbnRzIHRoZSByZWplY3Rpb24gYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4gY2FuY2VsbGFibGUgcHJvbWlzZS5cbiAqL1xuZnVuY3Rpb24gcmVqZWN0b3JGb3I8VD4ocHJvbWlzZTogQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxUPiwgc3RhdGU6IENhbmNlbGxhYmxlUHJvbWlzZVN0YXRlKTogQ2FuY2VsbGFibGVQcm9taXNlUmVqZWN0b3Ige1xuICAgIHJldHVybiAocmVhc29uPykgPT4ge1xuICAgICAgICBpZiAoc3RhdGUucmVzb2x2aW5nKSB7IHJldHVybjsgfVxuICAgICAgICBzdGF0ZS5yZXNvbHZpbmcgPSB0cnVlO1xuXG4gICAgICAgIGlmIChzdGF0ZS5zZXR0bGVkKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChyZWFzb24gaW5zdGFuY2VvZiBDYW5jZWxFcnJvciAmJiBzdGF0ZS5yZWFzb24gaW5zdGFuY2VvZiBDYW5jZWxFcnJvciAmJiBPYmplY3QuaXMocmVhc29uLmNhdXNlLCBzdGF0ZS5yZWFzb24uY2F1c2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFN3YWxsb3cgbGF0ZSByZWplY3Rpb25zIHRoYXQgYXJlIENhbmNlbEVycm9ycyB3aG9zZSBjYW5jZWxsYXRpb24gY2F1c2UgaXMgdGhlIHNhbWUgYXMgb3Vycy5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2gge31cblxuICAgICAgICAgICAgdm9pZCBQcm9taXNlLnJlamVjdChuZXcgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3IocHJvbWlzZS5wcm9taXNlLCByZWFzb24pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXRlLnNldHRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBDYW5jZWxzIGFsbCB2YWx1ZXMgaW4gYW4gYXJyYXkgdGhhdCBsb29rIGxpa2UgY2FuY2VsbGFibGUgdGhlbmFibGVzLlxuICogUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBvbmNlIGFsbCBjYW5jZWxsYXRpb24gcHJvY2VkdXJlcyBmb3IgdGhlIGdpdmVuIHZhbHVlcyBoYXZlIHNldHRsZWQuXG4gKi9cbmZ1bmN0aW9uIGNhbmNlbEFsbChwYXJlbnQ6IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPiwgdmFsdWVzOiBhbnlbXSwgY2F1c2U/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByZXN1bHRzOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgIGxldCBjYW5jZWw6IENhbmNlbGxhYmxlUHJvbWlzZUNhbmNlbGxlcjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICghaXNDYWxsYWJsZSh2YWx1ZS50aGVuKSkgeyBjb250aW51ZTsgfVxuICAgICAgICAgICAgY2FuY2VsID0gdmFsdWUuY2FuY2VsO1xuICAgICAgICAgICAgaWYgKCFpc0NhbGxhYmxlKGNhbmNlbCkpIHsgY29udGludWU7IH1cbiAgICAgICAgfSBjYXRjaCB7IGNvbnRpbnVlOyB9XG5cbiAgICAgICAgbGV0IHJlc3VsdDogdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gUmVmbGVjdC5hcHBseShjYW5jZWwsIHZhbHVlLCBbY2F1c2VdKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBQcm9taXNlLnJlamVjdChuZXcgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3IocGFyZW50LCBlcnIsIFwiVW5oYW5kbGVkIGV4Y2VwdGlvbiBpbiBjYW5jZWwgbWV0aG9kLlwiKSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVzdWx0KSB7IGNvbnRpbnVlOyB9XG4gICAgICAgIHJlc3VsdHMucHVzaChcbiAgICAgICAgICAgIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlICA/IHJlc3VsdCA6IFByb21pc2UucmVzb2x2ZShyZXN1bHQpKS5jYXRjaCgocmVhc29uPykgPT4ge1xuICAgICAgICAgICAgICAgIFByb21pc2UucmVqZWN0KG5ldyBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcihwYXJlbnQsIHJlYXNvbiwgXCJVbmhhbmRsZWQgcmVqZWN0aW9uIGluIGNhbmNlbCBtZXRob2QuXCIpKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHJlc3VsdHMpIGFzIGFueTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGl0cyBhcmd1bWVudC5cbiAqL1xuZnVuY3Rpb24gaWRlbnRpdHk8VD4oeDogVCk6IFQge1xuICAgIHJldHVybiB4O1xufVxuXG4vKipcbiAqIFRocm93cyBpdHMgYXJndW1lbnQuXG4gKi9cbmZ1bmN0aW9uIHRocm93ZXIocmVhc29uPzogYW55KTogbmV2ZXIge1xuICAgIHRocm93IHJlYXNvbjtcbn1cblxuLyoqXG4gKiBBdHRlbXB0cyB2YXJpb3VzIHN0cmF0ZWdpZXMgdG8gY29udmVydCBhbiBlcnJvciB0byBhIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gZXJyb3JNZXNzYWdlKGVycjogYW55KTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgfHwgdHlwZW9mIGVyciAhPT0gJ29iamVjdCcgfHwgZXJyLnRvU3RyaW5nICE9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIiArIGVycjtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2gge31cblxuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShlcnIpO1xuICAgIH0gY2F0Y2gge31cblxuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZXJyKTtcbiAgICB9IGNhdGNoIHt9XG5cbiAgICByZXR1cm4gXCI8Y291bGQgbm90IGNvbnZlcnQgZXJyb3IgdG8gc3RyaW5nPlwiO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGN1cnJlbnQgYmFycmllciBwcm9taXNlIGZvciB0aGUgZ2l2ZW4gY2FuY2VsbGFibGUgcHJvbWlzZS4gSWYgbmVjZXNzYXJ5LCBpbml0aWFsaXNlcyB0aGUgYmFycmllci5cbiAqL1xuZnVuY3Rpb24gY3VycmVudEJhcnJpZXI8VD4ocHJvbWlzZTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHB3cjogUGFydGlhbDxQcm9taXNlV2l0aFJlc29sdmVyczx2b2lkPj4gPSBwcm9taXNlW2JhcnJpZXJTeW1dID8/IHt9O1xuICAgIGlmICghKCdwcm9taXNlJyBpbiBwd3IpKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24ocHdyLCBwcm9taXNlV2l0aFJlc29sdmVyczx2b2lkPigpKTtcbiAgICB9XG4gICAgaWYgKHByb21pc2VbYmFycmllclN5bV0gPT0gbnVsbCkge1xuICAgICAgICBwd3IucmVzb2x2ZSEoKTtcbiAgICAgICAgcHJvbWlzZVtiYXJyaWVyU3ltXSA9IHB3cjtcbiAgICB9XG4gICAgcmV0dXJuIHB3ci5wcm9taXNlITtcbn1cblxuLy8gUG9seWZpbGwgUHJvbWlzZS53aXRoUmVzb2x2ZXJzLlxubGV0IHByb21pc2VXaXRoUmVzb2x2ZXJzID0gUHJvbWlzZS53aXRoUmVzb2x2ZXJzO1xuaWYgKHByb21pc2VXaXRoUmVzb2x2ZXJzICYmIHR5cGVvZiBwcm9taXNlV2l0aFJlc29sdmVycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHByb21pc2VXaXRoUmVzb2x2ZXJzID0gcHJvbWlzZVdpdGhSZXNvbHZlcnMuYmluZChQcm9taXNlKTtcbn0gZWxzZSB7XG4gICAgcHJvbWlzZVdpdGhSZXNvbHZlcnMgPSBmdW5jdGlvbiA8VD4oKTogUHJvbWlzZVdpdGhSZXNvbHZlcnM8VD4ge1xuICAgICAgICBsZXQgcmVzb2x2ZSE6ICh2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KSA9PiB2b2lkO1xuICAgICAgICBsZXQgcmVqZWN0ITogKHJlYXNvbj86IGFueSkgPT4gdm9pZDtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlPFQ+KChyZXMsIHJlaikgPT4geyByZXNvbHZlID0gcmVzOyByZWplY3QgPSByZWo7IH0pO1xuICAgICAgICByZXR1cm4geyBwcm9taXNlLCByZXNvbHZlLCByZWplY3QgfTtcbiAgICB9XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7bmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXN9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcblxuY29uc3QgY2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuQ2xpcGJvYXJkKTtcblxuY29uc3QgQ2xpcGJvYXJkU2V0VGV4dCA9IDA7XG5jb25zdCBDbGlwYm9hcmRUZXh0ID0gMTtcblxuLyoqXG4gKiBTZXRzIHRoZSB0ZXh0IHRvIHRoZSBDbGlwYm9hcmQuXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgdGV4dCB0byBiZSBzZXQgdG8gdGhlIENsaXBib2FyZC5cbiAqIEByZXR1cm4gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIHN1Y2Nlc3NmdWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTZXRUZXh0KHRleHQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBjYWxsKENsaXBib2FyZFNldFRleHQsIHt0ZXh0fSk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBDbGlwYm9hcmQgdGV4dFxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHRleHQgZnJvbSB0aGUgQ2xpcGJvYXJkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBjYWxsKENsaXBib2FyZFRleHQpO1xufVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpemUge1xuICAgIC8qKiBUaGUgd2lkdGggb2YgYSByZWN0YW5ndWxhciBhcmVhLiAqL1xuICAgIFdpZHRoOiBudW1iZXI7XG4gICAgLyoqIFRoZSBoZWlnaHQgb2YgYSByZWN0YW5ndWxhciBhcmVhLiAqL1xuICAgIEhlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlY3Qge1xuICAgIC8qKiBUaGUgWCBjb29yZGluYXRlIG9mIHRoZSBvcmlnaW4uICovXG4gICAgWDogbnVtYmVyO1xuICAgIC8qKiBUaGUgWSBjb29yZGluYXRlIG9mIHRoZSBvcmlnaW4uICovXG4gICAgWTogbnVtYmVyO1xuICAgIC8qKiBUaGUgd2lkdGggb2YgdGhlIHJlY3RhbmdsZS4gKi9cbiAgICBXaWR0aDogbnVtYmVyO1xuICAgIC8qKiBUaGUgaGVpZ2h0IG9mIHRoZSByZWN0YW5nbGUuICovXG4gICAgSGVpZ2h0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyZWVuIHtcbiAgICAvKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzY3JlZW4uICovXG4gICAgSUQ6IHN0cmluZztcbiAgICAvKiogSHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0aGUgc2NyZWVuLiAqL1xuICAgIE5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIHNjYWxlIGZhY3RvciBvZiB0aGUgc2NyZWVuIChEUEkvOTYpLiAxID0gc3RhbmRhcmQgRFBJLCAyID0gSGlEUEkgKFJldGluYSksIGV0Yy4gKi9cbiAgICBTY2FsZUZhY3RvcjogbnVtYmVyO1xuICAgIC8qKiBUaGUgWCBjb29yZGluYXRlIG9mIHRoZSBzY3JlZW4uICovXG4gICAgWDogbnVtYmVyO1xuICAgIC8qKiBUaGUgWSBjb29yZGluYXRlIG9mIHRoZSBzY3JlZW4uICovXG4gICAgWTogbnVtYmVyO1xuICAgIC8qKiBDb250YWlucyB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgc2NyZWVuLiAqL1xuICAgIFNpemU6IFNpemU7XG4gICAgLyoqIENvbnRhaW5zIHRoZSBib3VuZHMgb2YgdGhlIHNjcmVlbiBpbiB0ZXJtcyBvZiBYLCBZLCBXaWR0aCwgYW5kIEhlaWdodC4gKi9cbiAgICBCb3VuZHM6IFJlY3Q7XG4gICAgLyoqIENvbnRhaW5zIHRoZSBwaHlzaWNhbCBib3VuZHMgb2YgdGhlIHNjcmVlbiBpbiB0ZXJtcyBvZiBYLCBZLCBXaWR0aCwgYW5kIEhlaWdodCAoYmVmb3JlIHNjYWxpbmcpLiAqL1xuICAgIFBoeXNpY2FsQm91bmRzOiBSZWN0O1xuICAgIC8qKiBDb250YWlucyB0aGUgYXJlYSBvZiB0aGUgc2NyZWVuIHRoYXQgaXMgYWN0dWFsbHkgdXNhYmxlIChleGNsdWRpbmcgdGFza2JhciBhbmQgb3RoZXIgc3lzdGVtIFVJKS4gKi9cbiAgICBXb3JrQXJlYTogUmVjdDtcbiAgICAvKiogQ29udGFpbnMgdGhlIHBoeXNpY2FsIFdvcmtBcmVhIG9mIHRoZSBzY3JlZW4gKGJlZm9yZSBzY2FsaW5nKS4gKi9cbiAgICBQaHlzaWNhbFdvcmtBcmVhOiBSZWN0O1xuICAgIC8qKiBUcnVlIGlmIHRoaXMgaXMgdGhlIHByaW1hcnkgbW9uaXRvciBzZWxlY3RlZCBieSB0aGUgdXNlciBpbiB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gKi9cbiAgICBJc1ByaW1hcnk6IGJvb2xlYW47XG4gICAgLyoqIFRoZSByb3RhdGlvbiBvZiB0aGUgc2NyZWVuLiAqL1xuICAgIFJvdGF0aW9uOiBudW1iZXI7XG59XG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuY29uc3QgY2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuU2NyZWVucyk7XG5cbmNvbnN0IGdldEFsbCA9IDA7XG5jb25zdCBnZXRQcmltYXJ5ID0gMTtcbmNvbnN0IGdldEN1cnJlbnQgPSAyO1xuY29uc3QgZ2V0QnlJRCA9IDM7XG5jb25zdCBnZXRCeUluZGV4ID0gNDtcblxuLyoqXG4gKiBHZXRzIGFsbCBzY3JlZW5zLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IG9mIFNjcmVlbiBvYmplY3RzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gR2V0QWxsKCk6IFByb21pc2U8U2NyZWVuW10+IHtcbiAgICByZXR1cm4gY2FsbChnZXRBbGwpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHByaW1hcnkgc2NyZWVuLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBwcmltYXJ5IHNjcmVlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldFByaW1hcnkoKTogUHJvbWlzZTxTY3JlZW4+IHtcbiAgICByZXR1cm4gY2FsbChnZXRQcmltYXJ5KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBjdXJyZW50IGFjdGl2ZSBzY3JlZW4uXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgY3VycmVudCBhY3RpdmUgc2NyZWVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gR2V0Q3VycmVudCgpOiBQcm9taXNlPFNjcmVlbj4ge1xuICAgIHJldHVybiBjYWxsKGdldEN1cnJlbnQpO1xufVxuXG4vKipcbiAqIEdldHMgYSBzY3JlZW4gYnkgaXRzIHVuaXF1ZSBkaXNwbGF5IElELlxuICpcbiAqIEBwYXJhbSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG1hdGNoaW5nIFNjcmVlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldEJ5SUQoaWQ6IHN0cmluZyk6IFByb21pc2U8U2NyZWVuPiB7XG4gICAgcmV0dXJuIGNhbGwoZ2V0QnlJRCwgeyBpZCB9KTtcbn1cblxuLyoqXG4gKiBHZXRzIGEgc2NyZWVuIGJ5IGl0cyBpbmRleCBpbiB0aGUgc2NyZWVuIGxpc3QuXG4gKlxuICogQHBhcmFtIGluZGV4IC0gVGhlIHplcm8tYmFzZWQgaW5kZXggb2YgdGhlIHNjcmVlbi5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBtYXRjaGluZyBTY3JlZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBHZXRCeUluZGV4KGluZGV4OiBudW1iZXIpOiBQcm9taXNlPFNjcmVlbj4ge1xuICAgIHJldHVybiBjYWxsKGdldEJ5SW5kZXgsIHsgaW5kZXggfSk7XG59XG4iLCAiLypcbiBfICAgICBfXyAgICAgXyBfX1xufCB8ICAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5JT1MpO1xuXG4vLyBNZXRob2QgSURzXG5jb25zdCBIYXB0aWNzSW1wYWN0ID0gMDtcbmNvbnN0IERldmljZUluZm8gPSAxO1xuXG5leHBvcnQgbmFtZXNwYWNlIEhhcHRpY3Mge1xuICAgIGV4cG9ydCB0eXBlIEltcGFjdFN0eWxlID0gXCJsaWdodFwifFwibWVkaXVtXCJ8XCJoZWF2eVwifFwic29mdFwifFwicmlnaWRcIjtcbiAgICBleHBvcnQgZnVuY3Rpb24gSW1wYWN0KHN0eWxlOiBJbXBhY3RTdHlsZSA9IFwibWVkaXVtXCIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGNhbGwoSGFwdGljc0ltcGFjdCwgeyBzdHlsZSB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgRGV2aWNlIHtcbiAgICBleHBvcnQgaW50ZXJmYWNlIEluZm8ge1xuICAgICAgICBtb2RlbDogc3RyaW5nO1xuICAgICAgICBzeXN0ZW1OYW1lOiBzdHJpbmc7XG4gICAgICAgIHN5c3RlbVZlcnNpb246IHN0cmluZztcbiAgICAgICAgaXNTaW11bGF0b3I6IGJvb2xlYW47XG4gICAgfVxuICAgIGV4cG9ydCBmdW5jdGlvbiBJbmZvKCk6IFByb21pc2U8SW5mbz4ge1xuICAgICAgICByZXR1cm4gY2FsbChEZXZpY2VJbmZvKTtcbiAgICB9XG59XG4iLCAiLypcbiBfICAgICBfXyAgICAgXyBfX1xufCB8ICAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5BbmRyb2lkKTtcblxuLy8gTWV0aG9kIElEcyAobXVzdCBtYXRjaCBtZXNzYWdlcHJvY2Vzc29yX2FuZHJvaWQuZ28pXG5jb25zdCBIYXB0aWNzVmlicmF0ZSA9IDA7XG5jb25zdCBEZXZpY2VJbmZvID0gMTtcbmNvbnN0IFRvYXN0U2hvdyA9IDI7XG5cbmV4cG9ydCBuYW1lc3BhY2UgSGFwdGljcyB7XG4gICAgLyoqIFZpYnJhdGUgdGhlIGRldmljZSBmb3IgdGhlIGdpdmVuIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gVmlicmF0ZShkdXJhdGlvbk1zOiBudW1iZXIgPSAxMDApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGNhbGwoSGFwdGljc1ZpYnJhdGUsIHsgZHVyYXRpb246IGR1cmF0aW9uTXMgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIERldmljZSB7XG4gICAgZXhwb3J0IGludGVyZmFjZSBJbmZvIHtcbiAgICAgICAgcGxhdGZvcm06IHN0cmluZztcbiAgICAgICAgbWFudWZhY3R1cmVyOiBzdHJpbmc7XG4gICAgICAgIGJyYW5kOiBzdHJpbmc7XG4gICAgICAgIG1vZGVsOiBzdHJpbmc7XG4gICAgICAgIGRldmljZTogc3RyaW5nO1xuICAgICAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgICAgIHNka0ludDogbnVtYmVyO1xuICAgIH1cbiAgICAvKiogUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBBbmRyb2lkIGRldmljZS4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gSW5mbygpOiBQcm9taXNlPEluZm8+IHtcbiAgICAgICAgcmV0dXJuIGNhbGwoRGV2aWNlSW5mbyk7XG4gICAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFRvYXN0IHtcbiAgICAvKiogU2hvdyBhIHNob3J0IEFuZHJvaWQgdG9hc3QgbWVzc2FnZS4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gU2hvdyhtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGNhbGwoVG9hc3RTaG93LCB7IG1lc3NhZ2UgfSk7XG4gICAgfVxufVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG4vKipcbiAqIFVwZGF0ZXIgZXZlbnQgbmFtZSBjb25zdGFudHMuXG4gKlxuICogVXNlIHRoZXNlIGluc3RlYWQgb2YgaGFyZC1jb2Rpbmcgc3RyaW5nIGxpdGVyYWxzIHdoZW4gc3Vic2NyaWJpbmcgdG9cbiAqIHVwZGF0ZXIgZXZlbnRzIGZyb20gSmF2YVNjcmlwdDpcbiAqXG4gKiAgICAgaW1wb3J0IHsgRXZlbnRzLCBVcGRhdGVyIH0gZnJvbSBcIkB3YWlsc2lvL3J1bnRpbWVcIjtcbiAqXG4gKiAgICAgRXZlbnRzLk9uKFVwZGF0ZXIuRXZlbnRzLlVwZGF0ZUF2YWlsYWJsZSwgKGUpID0+IHtcbiAqICAgICAgICAgY29uc29sZS5sb2coXCJ1cGRhdGUgZm91bmQ6XCIsIGUuZGF0YS52ZXJzaW9uKTtcbiAqICAgICB9KTtcbiAqXG4gKiAgICAgRXZlbnRzLk9uKFVwZGF0ZXIuRXZlbnRzLkRvd25sb2FkUHJvZ3Jlc3MsIChlKSA9PiB7XG4gKiAgICAgICAgIGNvbnN0IHAgPSBlLmRhdGE7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKGAke3Aud3JpdHRlbn0gLyAke3AudG90YWx9IGJ5dGVzYCk7XG4gKiAgICAgfSk7XG4gKlxuICogTWlycm9ycyB0aGUgR28tc2lkZSBjb25zdGFudHMgaW4gYHBrZy91cGRhdGVyL2V2ZW50cy5nb2AgYW5kIHRoZVxuICogdXNlci1hY3Rpb24gY29uc3RhbnRzIGluIGBwa2cvdXBkYXRlci93aW5kb3dfbGlmZWN5Y2xlLmdvYC4gQW55XG4gKiBjaGFuZ2VzIGhlcmUgbXVzdCBzdGF5IGluIHN5bmMgd2l0aCB0aG9zZSBmaWxlcyBcdTIwMTQgdGhlcmUncyBhblxuICogaW50ZWdyYXRpb24gdGVzdCB0aGF0IGFzc2VydHMgdGhlIHN0cmluZ3MgbWF0Y2guXG4gKi9cbmV4cG9ydCBjb25zdCBFdmVudHMgPSBPYmplY3QuZnJlZXplKHtcbiAgICAvKiogQSBDaGVjayByb3VuZC10cmlwIGlzIHN0YXJ0aW5nLiBQYXlsb2FkOiBudWxsLiAqL1xuICAgIENoZWNrU3RhcnRlZDogXCJ3YWlsczp1cGRhdGVyOmNoZWNrLXN0YXJ0ZWRcIixcbiAgICAvKiogQ2hlY2sgZm91bmQgYSBuZXdlciByZWxlYXNlLiBQYXlsb2FkOiBSZWxlYXNlLiAqL1xuICAgIFVwZGF0ZUF2YWlsYWJsZTogXCJ3YWlsczp1cGRhdGVyOnVwZGF0ZS1hdmFpbGFibGVcIixcbiAgICAvKiogQ2hlY2sgY29uZmlybWVkIHRoZSBjYWxsZXIgaXMgdXAgdG8gZGF0ZS4gUGF5bG9hZDogbnVsbC4gKi9cbiAgICBOb1VwZGF0ZTogXCJ3YWlsczp1cGRhdGVyOm5vLXVwZGF0ZVwiLFxuICAgIC8qKiBEb3dubG9hZCBpcyBzdGFydGluZy4gUGF5bG9hZDogUmVsZWFzZS4gKi9cbiAgICBEb3dubG9hZFN0YXJ0ZWQ6IFwid2FpbHM6dXBkYXRlcjpkb3dubG9hZC1zdGFydGVkXCIsXG4gICAgLyoqIFBlcmlvZGljIHByb2dyZXNzIHRpY2sgZHVyaW5nIGRvd25sb2FkICh+MTAgSHopLiBQYXlsb2FkOiBQcm9ncmVzcy4gKi9cbiAgICBEb3dubG9hZFByb2dyZXNzOiBcIndhaWxzOnVwZGF0ZXI6ZG93bmxvYWQtcHJvZ3Jlc3NcIixcbiAgICAvKiogQWxsIGJ5dGVzIGFyZSBvbiBkaXNrLCBidXQgdmVyaWZpY2F0aW9uIGhhcyBub3QgeWV0IHN0YXJ0ZWQuIFBheWxvYWQ6IFJlbGVhc2UuICovXG4gICAgRG93bmxvYWRDb21wbGV0ZTogXCJ3YWlsczp1cGRhdGVyOmRvd25sb2FkLWNvbXBsZXRlXCIsXG4gICAgLyoqIFNpZ25hdHVyZSAvIGRpZ2VzdCB2ZXJpZmljYXRpb24gaGFzIHN0YXJ0ZWQuIFBheWxvYWQ6IFJlbGVhc2UuICovXG4gICAgVmVyaWZ5aW5nOiBcIndhaWxzOnVwZGF0ZXI6dmVyaWZ5aW5nXCIsXG4gICAgLyoqIFRoZSBVcGRhdGVyIGlzIHN3YXBwaW5nIHRoZSBiaW5hcnkgaW50byBwbGFjZS4gUGF5bG9hZDogUmVsZWFzZS4gKi9cbiAgICBJbnN0YWxsaW5nOiBcIndhaWxzOnVwZGF0ZXI6aW5zdGFsbGluZ1wiLFxuICAgIC8qKiBVcGRhdGUgaXMgc3RhZ2VkIGFuZCBhIHJlc3RhcnQgaXMgcGVuZGluZy4gUGF5bG9hZDogUmVsZWFzZS4gKi9cbiAgICBVcGRhdGVSZWFkeTogXCJ3YWlsczp1cGRhdGVyOnVwZGF0ZS1yZWFkeVwiLFxuICAgIC8qKiBTb21ldGhpbmcgZmFpbGVkLiBQYXlsb2FkOiBFcnJvckluZm8geyBzdGFnZSwgbWVzc2FnZSwgcHJvdmlkZXIgfS4gKi9cbiAgICBFcnJvcjogXCJ3YWlsczp1cGRhdGVyOmVycm9yXCIsXG4gICAgLyoqIEhvc3Qtc2lkZSBjb250ZXh0IGRlbGl2ZXJlZCBvbmNlIHBlciBzZXNzaW9uLiBQYXlsb2FkOiBNZXRhIHsgY3VycmVudFZlcnNpb24sIHNraXBwZWRWZXJzaW9uIH0uICovXG4gICAgTWV0YTogXCJ3YWlsczp1cGRhdGVyOm1ldGFcIixcblxuICAgIC8qKiBTdWItbmFtZXNwYWNlOiB1c2VyLWFjdGlvbiBldmVudHMgdGhhdCB0aGUgVUkgZW1pdHMgQkFDSyB0byB0aGUgaG9zdC4gKi9cbiAgICBVc2VyOiBPYmplY3QuZnJlZXplKHtcbiAgICAgICAgLyoqIFVzZXIgY2xpY2tlZCBJbnN0YWxsIG9uIGFuIEF2YWlsYWJsZSB1cGRhdGUuICovXG4gICAgICAgIEluc3RhbGw6IFwid2FpbHM6dXBkYXRlcjp1c2VyOmluc3RhbGxcIixcbiAgICAgICAgLyoqIFVzZXIgY2xpY2tlZCBSZXN0YXJ0ICYgQXBwbHkgb24gYSBSZWFkeSB1cGRhdGUuICovXG4gICAgICAgIFJlc3RhcnQ6IFwid2FpbHM6dXBkYXRlcjp1c2VyOnJlc3RhcnRcIixcbiAgICAgICAgLyoqIFVzZXIgY2xpY2tlZCBTa2lwIFRoaXMgVmVyc2lvbi4gKi9cbiAgICAgICAgU2tpcDogXCJ3YWlsczp1cGRhdGVyOnVzZXI6c2tpcFwiLFxuICAgICAgICAvKiogVXNlciBjbGlja2VkIFJlbWluZCBNZSBMYXRlci4gKi9cbiAgICAgICAgUmVtaW5kOiBcIndhaWxzOnVwZGF0ZXI6dXNlcjpyZW1pbmRcIixcbiAgICAgICAgLyoqIFVzZXIgY2xpY2tlZCBDbG9zZSAvIENhbmNlbC4gKi9cbiAgICAgICAgQ2FuY2VsOiBcIndhaWxzOnVwZGF0ZXI6dXNlcjpjYW5jZWxcIixcbiAgICB9KSxcblxuICAgIC8qKiBTdWItbmFtZXNwYWNlOiBmcmFtZXdvcmstaW50ZXJuYWwgZXZlbnRzIHRoZSBVSSBlbWl0cyB0byBjb29yZGluYXRlXG4gICAgICogIHdpdGggdGhlIGhvc3QuIE1vc3QgYXBwIGNvZGUgY2FuIGlnbm9yZSB0aGVzZS4gKi9cbiAgICBXaW5kb3c6IE9iamVjdC5mcmVlemUoe1xuICAgICAgICAvKiogVGhlIHdpbmRvdyBmaW5pc2hlZCBsb2FkaW5nIGFuZCBhc2tzIHRoZSBob3N0IHRvIHJlcGxheSBjdXJyZW50IHN0YXRlLiAqL1xuICAgICAgICBSZWFkeTogXCJ3YWlsczp1cGRhdGVyOndpbmRvdzpyZWFkeVwiLFxuICAgIH0pLFxufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFB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QTFCL0RELElBQUksUUFBUTtBQUNSLFNBQU8sU0FBUyxPQUFPLFVBQVUsQ0FBQztBQUN0QztBQTREQSxJQUFJLFFBQVE7QUFDUixTQUFPLE9BQU8sU0FBZ0I7QUFDOUIsU0FBTyxPQUFPLFdBQVc7QUFDN0I7QUFLQSxJQUFJLFFBQVE7QUFDUixTQUFPLE9BQU8seUJBQXlCLGVBQU8sdUJBQXVCLEtBQUssY0FBTTtBQUNwRjtBQUdBLElBQUksUUFBUTtBQUNSLFNBQU8sT0FBTyxrQkFBa0I7QUFDaEMsU0FBTyxPQUFPLGtCQUFrQjtBQUNoQyxTQUFPLE9BQU8saUJBQWlCO0FBQ25DO0FBRUEsSUFBSSxRQUFRO0FBQ1IsRUFBTyxPQUFPLHFCQUFxQjtBQUN2QztBQU9PLFNBQVMsbUJBQW1CLEtBQTRCO0FBQzNELFNBQU8sTUFBTSxLQUFLLEVBQUUsUUFBUSxPQUFPLENBQUMsRUFDL0IsS0FBSyxjQUFZO0FBQ2QsUUFBSSxTQUFTLElBQUk7QUFHYixZQUFNLGVBQWUsU0FBUyxRQUFRLElBQUksY0FBYyxLQUFLLElBQUksWUFBWTtBQUM3RSxVQUFJLFlBQVksU0FBUyxZQUFZLEdBQUc7QUFDcEMsY0FBTSxTQUFTLFNBQVMsY0FBYyxRQUFRO0FBQzlDLGVBQU8sTUFBTTtBQUNiLGlCQUFTLEtBQUssWUFBWSxNQUFNO0FBQUEsTUFDcEM7QUFBQSxJQUNKO0FBQUEsRUFDSixDQUFDLEVBQ0EsTUFBTSxNQUFNO0FBQUEsRUFBQyxDQUFDO0FBQ3ZCO0FBR0EsSUFBSSxRQUFRO0FBQ1IscUJBQW1CLGtCQUFrQjtBQUN6QzsiLAogICJuYW1lcyI6IFsiX2EiLCAiRXJyb3IiLCAiY2FsbCIsICJFcnJvciIsICJfYSIsICJBcnJheSIsICJNYXAiLCAiQXJyYXkiLCAiTWFwIiwgImtleSIsICJjYWxsIiwgIl9hIiwgIl9hIiwgInJlc2l6YWJsZSIsICJfYSIsICJjYWxsIiwgIl9hIiwgImNhbGwiLCAiX2EiLCAiY2FsbCIsICJIaWRlTWV0aG9kIiwgIlNob3dNZXRob2QiLCAiaXNEb2N1bWVudERvdEFsbCIsICJfYSIsICJyZWFzb24iLCAidmFsdWUiLCAiY2FsbCIsICJjYWxsIiwgImNhbGwiLCAiY2FsbCIsICJIYXB0aWNzIiwgIkRldmljZSIsICJJbmZvIiwgIkRldmljZSIsICJIYXB0aWNzIiwgImNhbGwiLCAiRGV2aWNlSW5mbyIsICJIYXB0aWNzIiwgIkRldmljZSIsICJJbmZvIiwgIlRvYXN0IiwgIlNob3ciLCAiRXZlbnRzIiwgIkV2ZW50cyJdCn0K +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2luZGV4LnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy93bWwudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2Jyb3dzZXIudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL25hbm9pZC50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvZW52aXJvbm1lbnQudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3J1bnRpbWUudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2RpYWxvZ3MudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2V2ZW50cy50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvbGlzdGVuZXIudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2NyZWF0ZS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvZXZlbnRfdHlwZXMudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3V0aWxzLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy93aW5kb3cudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL2NvbXBpbGVkL21haW4uanMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3N5c3RlbS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY29udGV4dG1lbnUudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2ZsYWdzLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9kcmFnLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9hcHBsaWNhdGlvbi50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY2FsbHMudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2NhbGxhYmxlLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9jYW5jZWxsYWJsZS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY2xpcGJvYXJkLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9zY3JlZW5zLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9pb3MudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2FuZHJvaWQudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3VwZGF0ZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG4vLyBTZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xufVxuXG5pbXBvcnQgXCIuL2NvbnRleHRtZW51LmpzXCI7XG5pbXBvcnQgXCIuL2RyYWcuanNcIjtcblxuLy8gUmUtZXhwb3J0IHB1YmxpYyBBUElcbmltcG9ydCAqIGFzIEFwcGxpY2F0aW9uIGZyb20gXCIuL2FwcGxpY2F0aW9uLmpzXCI7XG5pbXBvcnQgKiBhcyBCcm93c2VyIGZyb20gXCIuL2Jyb3dzZXIuanNcIjtcbmltcG9ydCAqIGFzIENhbGwgZnJvbSBcIi4vY2FsbHMuanNcIjtcbmltcG9ydCAqIGFzIENsaXBib2FyZCBmcm9tIFwiLi9jbGlwYm9hcmQuanNcIjtcbmltcG9ydCAqIGFzIENyZWF0ZSBmcm9tIFwiLi9jcmVhdGUuanNcIjtcbmltcG9ydCAqIGFzIERpYWxvZ3MgZnJvbSBcIi4vZGlhbG9ncy5qc1wiO1xuaW1wb3J0ICogYXMgRXZlbnRzIGZyb20gXCIuL2V2ZW50cy5qc1wiO1xuaW1wb3J0ICogYXMgRmxhZ3MgZnJvbSBcIi4vZmxhZ3MuanNcIjtcbmltcG9ydCAqIGFzIFNjcmVlbnMgZnJvbSBcIi4vc2NyZWVucy5qc1wiO1xuaW1wb3J0ICogYXMgU3lzdGVtIGZyb20gXCIuL3N5c3RlbS5qc1wiO1xuaW1wb3J0ICogYXMgSU9TIGZyb20gXCIuL2lvcy5qc1wiO1xuaW1wb3J0ICogYXMgQW5kcm9pZCBmcm9tIFwiLi9hbmRyb2lkLmpzXCI7XG5pbXBvcnQgKiBhcyBVcGRhdGVyIGZyb20gXCIuL3VwZGF0ZXIuanNcIjtcbmltcG9ydCBXaW5kb3csIHsgaGFuZGxlRHJhZ0VudGVyLCBoYW5kbGVEcmFnTGVhdmUsIGhhbmRsZURyYWdPdmVyIH0gZnJvbSBcIi4vd2luZG93LmpzXCI7XG5pbXBvcnQgKiBhcyBXTUwgZnJvbSBcIi4vd21sLmpzXCI7XG5cbmV4cG9ydCB7XG4gICAgQXBwbGljYXRpb24sXG4gICAgQnJvd3NlcixcbiAgICBDYWxsLFxuICAgIENsaXBib2FyZCxcbiAgICBEaWFsb2dzLFxuICAgIEV2ZW50cyxcbiAgICBGbGFncyxcbiAgICBTY3JlZW5zLFxuICAgIFN5c3RlbSxcbiAgICBJT1MsXG4gICAgQW5kcm9pZCxcbiAgICBVcGRhdGVyLFxuICAgIFdpbmRvdyxcbiAgICBXTUxcbn07XG5cbi8qKlxuICogQW4gaW50ZXJuYWwgdXRpbGl0eSBjb25zdW1lZCBieSB0aGUgYmluZGluZyBnZW5lcmF0b3IuXG4gKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgeyBDcmVhdGUgfTtcblxuZXhwb3J0ICogZnJvbSBcIi4vY2FuY2VsbGFibGUuanNcIjtcblxuLy8gRXhwb3J0IHRyYW5zcG9ydCBpbnRlcmZhY2VzIGFuZCB1dGlsaXRpZXNcbmV4cG9ydCB7XG4gICAgc2V0VHJhbnNwb3J0LFxuICAgIGdldFRyYW5zcG9ydCxcbiAgICB0eXBlIFJ1bnRpbWVUcmFuc3BvcnQsXG4gICAgb2JqZWN0TmFtZXMsXG4gICAgY2xpZW50SWQsXG59IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcblxuaW1wb3J0IHsgY2xpZW50SWQgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbi8vIE5vdGlmeSBiYWNrZW5kXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5pbnZva2UgPSBTeXN0ZW0uaW52b2tlO1xuICAgIHdpbmRvdy5fd2FpbHMuY2xpZW50SWQgPSBjbGllbnRJZDtcbn1cblxuLy8gUmVnaXN0ZXIgcGxhdGZvcm0gaGFuZGxlcnMgKGludGVybmFsIEFQSSlcbi8vIE5vdGU6IFdpbmRvdyBpcyB0aGUgdGhpc1dpbmRvdyBpbnN0YW5jZSAoZGVmYXVsdCBleHBvcnQgZnJvbSB3aW5kb3cudHMpXG4vLyBCaW5kaW5nIGVuc3VyZXMgJ3RoaXMnIGNvcnJlY3RseSByZWZlcnMgdG8gdGhlIGN1cnJlbnQgd2luZG93IGluc3RhbmNlXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVQbGF0Zm9ybUZpbGVEcm9wID0gV2luZG93LkhhbmRsZVBsYXRmb3JtRmlsZURyb3AuYmluZChXaW5kb3cpO1xufVxuXG4vLyBMaW51eC1zcGVjaWZpYyBkcmFnIGhhbmRsZXJzIChHVEsgaW50ZXJjZXB0cyBET00gZHJhZyBldmVudHMpXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnRW50ZXIgPSBoYW5kbGVEcmFnRW50ZXI7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnTGVhdmUgPSBoYW5kbGVEcmFnTGVhdmU7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnT3ZlciA9IGhhbmRsZURyYWdPdmVyO1xufVxuXG5pZiAoaGFzRE9NKSB7XG4gICAgU3lzdGVtLmludm9rZShcIndhaWxzOnJ1bnRpbWU6cmVhZHlcIik7XG59XG5cbi8qKlxuICogTG9hZHMgYSBzY3JpcHQgZnJvbSB0aGUgZ2l2ZW4gVVJMIGlmIGl0IGV4aXN0cy5cbiAqIFVzZXMgSEVBRCByZXF1ZXN0IHRvIGNoZWNrIGV4aXN0ZW5jZSwgdGhlbiBpbmplY3RzIGEgc2NyaXB0IHRhZy5cbiAqIFNpbGVudGx5IGlnbm9yZXMgaWYgdGhlIHNjcmlwdCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZE9wdGlvbmFsU2NyaXB0KHVybDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZldGNoKHVybCwgeyBtZXRob2Q6ICdIRUFEJyB9KVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICAvLyBWZXJpZnkgdGhlIHJlc3BvbnNlIGlzIGFjdHVhbGx5IEphdmFTY3JpcHQgYW5kIG5vdCBhbiBIVE1MIGZhbGxiYWNrXG4gICAgICAgICAgICAgICAgLy8gKGUuZy4gVml0ZSBkZXYgc2VydmVyIHJldHVybnMgaW5kZXguaHRtbCBmb3IgdW5rbm93biByb3V0ZXMpXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSAocmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZS5pbmNsdWRlcygnamF2YXNjcmlwdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHQuc3JjID0gdXJsO1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4ge30pOyAvLyBTaWxlbnRseSBpZ25vcmUgLSBzY3JpcHQgaXMgb3B0aW9uYWxcbn1cblxuLy8gTG9hZCBjdXN0b20uanMgaWYgYXZhaWxhYmxlICh1c2VkIGJ5IHNlcnZlciBtb2RlIGZvciBXZWJTb2NrZXQgZXZlbnRzLCBldGMuKVxuaWYgKGhhc0RPTSkge1xuICAgIGxvYWRPcHRpb25hbFNjcmlwdCgnL3dhaWxzL2N1c3RvbS5qcycpO1xufVxuIiwgIi8qXG4gXyAgICAgX18gICAgIF8gX19cbnwgfCAgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBPcGVuVVJMIH0gZnJvbSBcIi4vYnJvd3Nlci5qc1wiO1xuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tIFwiLi9kaWFsb2dzLmpzXCI7XG5pbXBvcnQgeyBFbWl0IH0gZnJvbSBcIi4vZXZlbnRzLmpzXCI7XG5pbXBvcnQgeyBjYW5BYm9ydExpc3RlbmVycywgd2hlblJlYWR5IH0gZnJvbSBcIi4vdXRpbHMuanNcIjtcbmltcG9ydCBXaW5kb3cgZnJvbSBcIi4vd2luZG93LmpzXCI7XG5cbi8qKlxuICogU2VuZHMgYW4gZXZlbnQgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBhbmQgb3B0aW9uYWwgZGF0YS5cbiAqXG4gKiBAcGFyYW0gZXZlbnROYW1lIC0gLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQgdG8gc2VuZC5cbiAqIEBwYXJhbSBbZGF0YT1udWxsXSAtIC0gT3B0aW9uYWwgZGF0YSB0byBzZW5kIGFsb25nIHdpdGggdGhlIGV2ZW50LlxuICovXG5mdW5jdGlvbiBzZW5kRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIGRhdGE6IGFueSA9IG51bGwpOiB2b2lkIHtcbiAgICBFbWl0KGV2ZW50TmFtZSwgZGF0YSk7XG59XG5cbi8qKlxuICogQ2FsbHMgYSBtZXRob2Qgb24gYSBzcGVjaWZpZWQgd2luZG93LlxuICpcbiAqIEBwYXJhbSB3aW5kb3dOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHdpbmRvdyB0byBjYWxsIHRoZSBtZXRob2Qgb24uXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QgdG8gY2FsbC5cbiAqL1xuZnVuY3Rpb24gY2FsbFdpbmRvd01ldGhvZCh3aW5kb3dOYW1lOiBzdHJpbmcsIG1ldGhvZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRhcmdldFdpbmRvdyA9IFdpbmRvdy5HZXQod2luZG93TmFtZSk7XG4gICAgY29uc3QgbWV0aG9kID0gKHRhcmdldFdpbmRvdyBhcyBhbnkpW21ldGhvZE5hbWVdO1xuXG4gICAgaWYgKHR5cGVvZiBtZXRob2QgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBXaW5kb3cgbWV0aG9kICcke21ldGhvZE5hbWV9JyBub3QgZm91bmRgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIG1ldGhvZC5jYWxsKHRhcmdldFdpbmRvdyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBjYWxsaW5nIHdpbmRvdyBtZXRob2QgJyR7bWV0aG9kTmFtZX0nOiBgLCBlKTtcbiAgICB9XG59XG5cbi8qKlxuICogUmVzcG9uZHMgdG8gYSB0cmlnZ2VyaW5nIGV2ZW50IGJ5IHJ1bm5pbmcgYXBwcm9wcmlhdGUgV01MIGFjdGlvbnMgZm9yIHRoZSBjdXJyZW50IHRhcmdldC5cbiAqL1xuZnVuY3Rpb24gb25XTUxUcmlnZ2VyZWQoZXY6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IGV2LmN1cnJlbnRUYXJnZXQgYXMgRWxlbWVudDtcblxuICAgIGZ1bmN0aW9uIHJ1bkVmZmVjdChjaG9pY2UgPSBcIlllc1wiKSB7XG4gICAgICAgIGlmIChjaG9pY2UgIT09IFwiWWVzXCIpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZXZlbnRUeXBlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3dtbC1ldmVudCcpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXdtbC1ldmVudCcpO1xuICAgICAgICBjb25zdCB0YXJnZXRXaW5kb3cgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLXRhcmdldC13aW5kb3cnKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtdGFyZ2V0LXdpbmRvdycpIHx8IFwiXCI7XG4gICAgICAgIGNvbnN0IHdpbmRvd01ldGhvZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd3bWwtd2luZG93JykgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtd21sLXdpbmRvdycpO1xuICAgICAgICBjb25zdCB1cmwgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLW9wZW51cmwnKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtb3BlbnVybCcpO1xuXG4gICAgICAgIGlmIChldmVudFR5cGUgIT09IG51bGwpXG4gICAgICAgICAgICBzZW5kRXZlbnQoZXZlbnRUeXBlKTtcbiAgICAgICAgaWYgKHdpbmRvd01ldGhvZCAhPT0gbnVsbClcbiAgICAgICAgICAgIGNhbGxXaW5kb3dNZXRob2QodGFyZ2V0V2luZG93LCB3aW5kb3dNZXRob2QpO1xuICAgICAgICBpZiAodXJsICE9PSBudWxsKVxuICAgICAgICAgICAgdm9pZCBPcGVuVVJMKHVybCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlybSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd3bWwtY29uZmlybScpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXdtbC1jb25maXJtJyk7XG5cbiAgICBpZiAoY29uZmlybSkge1xuICAgICAgICBRdWVzdGlvbih7XG4gICAgICAgICAgICBUaXRsZTogXCJDb25maXJtXCIsXG4gICAgICAgICAgICBNZXNzYWdlOiBjb25maXJtLFxuICAgICAgICAgICAgRGV0YWNoZWQ6IGZhbHNlLFxuICAgICAgICAgICAgQnV0dG9uczogW1xuICAgICAgICAgICAgICAgIHsgTGFiZWw6IFwiWWVzXCIgfSxcbiAgICAgICAgICAgICAgICB7IExhYmVsOiBcIk5vXCIsIElzRGVmYXVsdDogdHJ1ZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0pLnRoZW4ocnVuRWZmZWN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBydW5FZmZlY3QoKTtcbiAgICB9XG59XG5cbi8vIFByaXZhdGUgZmllbGQgbmFtZXMuXG5jb25zdCBjb250cm9sbGVyU3ltID0gU3ltYm9sKFwiY29udHJvbGxlclwiKTtcbmNvbnN0IHRyaWdnZXJNYXBTeW0gPSBTeW1ib2woXCJ0cmlnZ2VyTWFwXCIpO1xuY29uc3QgZWxlbWVudENvdW50U3ltID0gU3ltYm9sKFwiZWxlbWVudENvdW50XCIpO1xuXG4vKipcbiAqIEFib3J0Q29udHJvbGxlclJlZ2lzdHJ5IGRvZXMgbm90IGFjdHVhbGx5IHJlbWVtYmVyIGFjdGl2ZSBldmVudCBsaXN0ZW5lcnM6IGluc3RlYWRcbiAqIGl0IHRpZXMgdGhlbSB0byBhbiBBYm9ydFNpZ25hbCBhbmQgdXNlcyBhbiBBYm9ydENvbnRyb2xsZXIgdG8gcmVtb3ZlIHRoZW0gYWxsIGF0IG9uY2UuXG4gKi9cbmNsYXNzIEFib3J0Q29udHJvbGxlclJlZ2lzdHJ5IHtcbiAgICAvLyBQcml2YXRlIGZpZWxkcy5cbiAgICBbY29udHJvbGxlclN5bV06IEFib3J0Q29udHJvbGxlcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzW2NvbnRyb2xsZXJTeW1dID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gb3B0aW9ucyBvYmplY3QgZm9yIGFkZEV2ZW50TGlzdGVuZXIgdGhhdCB0aWVzIHRoZSBsaXN0ZW5lclxuICAgICAqIHRvIHRoZSBBYm9ydFNpZ25hbCBmcm9tIHRoZSBjdXJyZW50IEFib3J0Q29udHJvbGxlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbGVtZW50IC0gQW4gSFRNTCBlbGVtZW50XG4gICAgICogQHBhcmFtIHRyaWdnZXJzIC0gVGhlIGxpc3Qgb2YgYWN0aXZlIFdNTCB0cmlnZ2VyIGV2ZW50cyBmb3IgdGhlIHNwZWNpZmllZCBlbGVtZW50c1xuICAgICAqL1xuICAgIHNldChlbGVtZW50OiBFbGVtZW50LCB0cmlnZ2Vyczogc3RyaW5nW10pOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB7IHNpZ25hbDogdGhpc1tjb250cm9sbGVyU3ltXS5zaWduYWwgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCByZWdpc3RlcmVkIGV2ZW50IGxpc3RlbmVycyBhbmQgcmVzZXRzIHRoZSByZWdpc3RyeS5cbiAgICAgKi9cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpc1tjb250cm9sbGVyU3ltXS5hYm9ydCgpO1xuICAgICAgICB0aGlzW2NvbnRyb2xsZXJTeW1dID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBXZWFrTWFwUmVnaXN0cnkgbWFwcyBhY3RpdmUgdHJpZ2dlciBldmVudHMgdG8gZWFjaCBET00gZWxlbWVudCB0aHJvdWdoIGEgV2Vha01hcC5cbiAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBtYXBwaW5nIHJlbWFpbnMgcHJpdmF0ZSB0byB0aGlzIG1vZHVsZSwgd2hpbGUgc3RpbGwgYWxsb3dpbmcgZ2FyYmFnZVxuICogY29sbGVjdGlvbiBvZiB0aGUgaW52b2x2ZWQgZWxlbWVudHMuXG4gKi9cbmNsYXNzIFdlYWtNYXBSZWdpc3RyeSB7XG4gICAgLyoqIFN0b3JlcyB0aGUgY3VycmVudCBlbGVtZW50LXRvLXRyaWdnZXIgbWFwcGluZy4gKi9cbiAgICBbdHJpZ2dlck1hcFN5bV06IFdlYWtNYXA8RWxlbWVudCwgc3RyaW5nW10+O1xuICAgIC8qKiBDb3VudHMgdGhlIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIGFjdGl2ZSBXTUwgdHJpZ2dlcnMuICovXG4gICAgW2VsZW1lbnRDb3VudFN5bV06IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzW3RyaWdnZXJNYXBTeW1dID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgICAgdGhpc1tlbGVtZW50Q291bnRTeW1dID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGFjdGl2ZSB0cmlnZ2VycyBmb3IgdGhlIHNwZWNpZmllZCBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIGVsZW1lbnQgLSBBbiBIVE1MIGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gdHJpZ2dlcnMgLSBUaGUgbGlzdCBvZiBhY3RpdmUgV01MIHRyaWdnZXIgZXZlbnRzIGZvciB0aGUgc3BlY2lmaWVkIGVsZW1lbnRcbiAgICAgKi9cbiAgICBzZXQoZWxlbWVudDogRWxlbWVudCwgdHJpZ2dlcnM6IHN0cmluZ1tdKTogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMge1xuICAgICAgICBpZiAoIXRoaXNbdHJpZ2dlck1hcFN5bV0uaGFzKGVsZW1lbnQpKSB7IHRoaXNbZWxlbWVudENvdW50U3ltXSsrOyB9XG4gICAgICAgIHRoaXNbdHJpZ2dlck1hcFN5bV0uc2V0KGVsZW1lbnQsIHRyaWdnZXJzKTtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIHJlZ2lzdGVyZWQgZXZlbnQgbGlzdGVuZXJzLlxuICAgICAqL1xuICAgIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpc1tlbGVtZW50Q291bnRTeW1dIDw9IDApXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgnKicpKSB7XG4gICAgICAgICAgICBpZiAodGhpc1tlbGVtZW50Q291bnRTeW1dIDw9IDApXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJzID0gdGhpc1t0cmlnZ2VyTWFwU3ltXS5nZXQoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAodHJpZ2dlcnMgIT0gbnVsbCkgeyB0aGlzW2VsZW1lbnRDb3VudFN5bV0tLTsgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMgfHwgW10pXG4gICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHRyaWdnZXIsIG9uV01MVHJpZ2dlcmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXNbdHJpZ2dlck1hcFN5bV0gPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICB0aGlzW2VsZW1lbnRDb3VudFN5bV0gPSAwO1xuICAgIH1cbn1cblxuY29uc3QgdHJpZ2dlclJlZ2lzdHJ5ID0gY2FuQWJvcnRMaXN0ZW5lcnMoKSA/IG5ldyBBYm9ydENvbnRyb2xsZXJSZWdpc3RyeSgpIDogbmV3IFdlYWtNYXBSZWdpc3RyeSgpO1xuXG4vKipcbiAqIEFkZHMgZXZlbnQgbGlzdGVuZXJzIHRvIHRoZSBzcGVjaWZpZWQgZWxlbWVudC5cbiAqL1xuZnVuY3Rpb24gYWRkV01MTGlzdGVuZXJzKGVsZW1lbnQ6IEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0cmlnZ2VyUmVnRXhwID0gL1xcUysvZztcbiAgICBjb25zdCB0cmlnZ2VyQXR0ciA9IChlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLXRyaWdnZXInKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtdHJpZ2dlcicpIHx8IFwiY2xpY2tcIik7XG4gICAgY29uc3QgdHJpZ2dlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBsZXQgbWF0Y2g7XG4gICAgd2hpbGUgKChtYXRjaCA9IHRyaWdnZXJSZWdFeHAuZXhlYyh0cmlnZ2VyQXR0cikpICE9PSBudWxsKVxuICAgICAgICB0cmlnZ2Vycy5wdXNoKG1hdGNoWzBdKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB0cmlnZ2VyUmVnaXN0cnkuc2V0KGVsZW1lbnQsIHRyaWdnZXJzKTtcbiAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMpXG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0cmlnZ2VyLCBvbldNTFRyaWdnZXJlZCwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogU2NoZWR1bGVzIGFuIGF1dG9tYXRpYyByZWxvYWQgb2YgV01MIHRvIGJlIHBlcmZvcm1lZCBhcyBzb29uIGFzIHRoZSBkb2N1bWVudCBpcyBmdWxseSBsb2FkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbmFibGUoKTogdm9pZCB7XG4gICAgd2hlblJlYWR5KFJlbG9hZCk7XG59XG5cbi8qKlxuICogUmVsb2FkcyB0aGUgV01MIHBhZ2UgYnkgYWRkaW5nIG5lY2Vzc2FyeSBldmVudCBsaXN0ZW5lcnMgYW5kIGJyb3dzZXIgbGlzdGVuZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gUmVsb2FkKCk6IHZvaWQge1xuICAgIHRyaWdnZXJSZWdpc3RyeS5yZXNldCgpO1xuICAgIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgnW3dtbC1ldmVudF0sIFt3bWwtd2luZG93XSwgW3dtbC1vcGVudXJsXSwgW2RhdGEtd21sLWV2ZW50XSwgW2RhdGEtd21sLXdpbmRvd10sIFtkYXRhLXdtbC1vcGVudXJsXScpLmZvckVhY2goYWRkV01MTGlzdGVuZXJzKTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHsgbmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXMgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkJyb3dzZXIpO1xuXG5jb25zdCBCcm93c2VyT3BlblVSTCA9IDA7XG5cbi8qKlxuICogT3BlbiBhIGJyb3dzZXIgd2luZG93IHRvIHRoZSBnaXZlbiBVUkwuXG4gKlxuICogQHBhcmFtIHVybCAtIFRoZSBVUkwgdG8gb3BlblxuICovXG5leHBvcnQgZnVuY3Rpb24gT3BlblVSTCh1cmw6IHN0cmluZyB8IFVSTCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBjYWxsKEJyb3dzZXJPcGVuVVJMLCB7dXJsOiB1cmwudG9TdHJpbmcoKX0pO1xufVxuIiwgIi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2FpL25hbm9pZFxuXG4vLyBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbi8vXG4vLyBDb3B5cmlnaHQgMjAxNyBBbmRyZXkgU2l0bmlrIDxhbmRyZXlAc2l0bmlrLnJ1PlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2Zcbi8vIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW5cbi8vIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG9cbi8vIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mXG4vLyB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sXG4vLyAgICAgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gICAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuLy8gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyAgICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1Ncbi8vIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUlxuLy8gQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSXG4vLyBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTlxuLy8gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gVGhpcyBhbHBoYWJldCB1c2VzIGBBLVphLXowLTlfLWAgc3ltYm9scy5cbi8vIFRoZSBvcmRlciBvZiBjaGFyYWN0ZXJzIGlzIG9wdGltaXplZCBmb3IgYmV0dGVyIGd6aXAgYW5kIGJyb3RsaSBjb21wcmVzc2lvbi5cbi8vIFJlZmVyZW5jZXMgdG8gdGhlIHNhbWUgZmlsZSAod29ya3MgYm90aCBmb3IgZ3ppcCBhbmQgYnJvdGxpKTpcbi8vIGAndXNlYCwgYGFuZG9tYCwgYW5kIGByaWN0J2Bcbi8vIFJlZmVyZW5jZXMgdG8gdGhlIGJyb3RsaSBkZWZhdWx0IGRpY3Rpb25hcnk6XG4vLyBgLTI2VGAsIGAxOTgzYCwgYDQwcHhgLCBgNzVweGAsIGBidXNoYCwgYGphY2tgLCBgbWluZGAsIGB2ZXJ5YCwgYW5kIGB3b2xmYFxuY29uc3QgdXJsQWxwaGFiZXQgPVxuICAgICd1c2VhbmRvbS0yNlQxOTgzNDBQWDc1cHhKQUNLVkVSWU1JTkRCVVNIV09MRl9HUVpiZmdoamtscXZ3eXpyaWN0J1xuXG5leHBvcnQgZnVuY3Rpb24gbmFub2lkKHNpemU6IG51bWJlciA9IDIxKTogc3RyaW5nIHtcbiAgICBsZXQgaWQgPSAnJ1xuICAgIC8vIEEgY29tcGFjdCBhbHRlcm5hdGl2ZSBmb3IgYGZvciAodmFyIGkgPSAwOyBpIDwgc3RlcDsgaSsrKWAuXG4gICAgbGV0IGkgPSBzaXplIHwgMFxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgLy8gYHwgMGAgaXMgbW9yZSBjb21wYWN0IGFuZCBmYXN0ZXIgdGhhbiBgTWF0aC5mbG9vcigpYC5cbiAgICAgICAgaWQgKz0gdXJsQWxwaGFiZXRbKE1hdGgucmFuZG9tKCkgKiA2NCkgfCAwXVxuICAgIH1cbiAgICByZXR1cm4gaWRcbn1cbiIsICIvKlxuIF8gICAgIF9fICAgICBfIF9fXG58IHwgIC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLyoqXG4gKiBUcnVlIHdoZW4gcnVubmluZyBpbnNpZGUgYSBicm93c2VyL3dlYnZpZXcgd2l0aCBhIERPTSBhdmFpbGFibGUuXG4gKiBGYWxzZSB1bmRlciBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgKGUuZy4gYG5leHQgYnVpbGRgIHByZXJlbmRlcmluZyksXG4gKiB3aGVyZSBhcHBsaWNhdGlvbiBjb2RlIG1heSBpbXBvcnQgdGhlIHJ1bnRpbWUgbW9kdWxlIGV2ZW4gdGhvdWdoIG5vXG4gKiBXYWlscyBBUElzIGNhbiBhY3R1YWxseSBiZSB1c2VkICgjNDY3OSkuIE1vZHVsZXMgbXVzdCBub3QgdG91Y2hcbiAqIGB3aW5kb3dgL2Bkb2N1bWVudGAgYXQgaW1wb3J0IHRpbWUgZXhjZXB0IGJlaGluZCB0aGlzIGd1YXJkLlxuICovXG5leHBvcnQgY29uc3QgaGFzRE9NID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCI7XG4iLCAiLypcbiBfICAgICBfXyAgICAgXyBfX1xufCB8ICAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gXCIuL25hbm9pZC5qc1wiO1xuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuLy8gUmVzb2x2ZWQgbGF6aWx5OiB3aW5kb3cgZG9lcyBub3QgZXhpc3Qgd2hlbiB0aGUgbW9kdWxlIGlzIGltcG9ydGVkIGR1cmluZ1xuLy8gc2VydmVyLXNpZGUgcmVuZGVyaW5nICgjNDY3OSksIGFuZCBub3RoaW5nIGNhbiBjYWxsIHRoZSBydW50aW1lIHRoZXJlLlxuZnVuY3Rpb24gcnVudGltZVVSTCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgXCIvd2FpbHMvcnVudGltZVwiO1xufVxuXG4vLyBTdGF5IHVuZGVyIFdlYlZpZXcyJ3MgfjJNQiByZXF1ZXN0IGJvZHkgYnVmZmVyaW5nIGxpbWl0IGluIFdlYlJlc291cmNlUmVxdWVzdGVkLlxuY29uc3QgQ0hVTktfVEhSRVNIT0xEID0gNTEyICogMTAyNDtcblxuLy8gUmUtZXhwb3J0IG5hbm9pZCBmb3IgY3VzdG9tIHRyYW5zcG9ydCBpbXBsZW1lbnRhdGlvbnNcbmV4cG9ydCB7IG5hbm9pZCB9O1xuXG4vLyBPYmplY3QgTmFtZXNcbmV4cG9ydCBjb25zdCBvYmplY3ROYW1lcyA9IE9iamVjdC5mcmVlemUoe1xuICAgIENhbGw6IDAsXG4gICAgQ2xpcGJvYXJkOiAxLFxuICAgIEFwcGxpY2F0aW9uOiAyLFxuICAgIEV2ZW50czogMyxcbiAgICBDb250ZXh0TWVudTogNCxcbiAgICBEaWFsb2c6IDUsXG4gICAgV2luZG93OiA2LFxuICAgIFNjcmVlbnM6IDcsXG4gICAgU3lzdGVtOiA4LFxuICAgIEJyb3dzZXI6IDksXG4gICAgQ2FuY2VsQ2FsbDogMTAsXG4gICAgSU9TOiAxMSxcbiAgICBBbmRyb2lkOiAxMixcbn0pO1xuZXhwb3J0IGxldCBjbGllbnRJZCA9IG5hbm9pZCgpO1xuXG4vKipcbiAqIFJ1bnRpbWVUcmFuc3BvcnQgZGVmaW5lcyB0aGUgaW50ZXJmYWNlIGZvciBjdXN0b20gSVBDIHRyYW5zcG9ydCBpbXBsZW1lbnRhdGlvbnMuXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdG8gdXNlIFdlYlNvY2tldHMsIGN1c3RvbSBwcm90b2NvbHMsIG9yIGFueSBvdGhlclxuICogdHJhbnNwb3J0IG1lY2hhbmlzbSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IEhUVFAgZmV0Y2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVudGltZVRyYW5zcG9ydCB7XG4gICAgLyoqXG4gICAgICogU2VuZCBhIHJ1bnRpbWUgY2FsbCBhbmQgcmV0dXJuIHRoZSByZXNwb25zZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvYmplY3RJRCAtIFRoZSBXYWlscyBvYmplY3QgSUQgKDA9Q2FsbCwgMT1DbGlwYm9hcmQsIGV0Yy4pXG4gICAgICogQHBhcmFtIG1ldGhvZCAtIFRoZSBtZXRob2QgSUQgdG8gY2FsbFxuICAgICAqIEBwYXJhbSB3aW5kb3dOYW1lIC0gT3B0aW9uYWwgd2luZG93IG5hbWVcbiAgICAgKiBAcGFyYW0gYXJncyAtIEFyZ3VtZW50cyB0byBwYXNzICh3aWxsIGJlIEpTT04gc3RyaW5naWZpZWQgaWYgcHJlc2VudClcbiAgICAgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgcmVzcG9uc2UgZGF0YVxuICAgICAqL1xuICAgIGNhbGwob2JqZWN0SUQ6IG51bWJlciwgbWV0aG9kOiBudW1iZXIsIHdpbmRvd05hbWU6IHN0cmluZywgYXJnczogYW55KTogUHJvbWlzZTxhbnk+O1xufVxuXG4vKipcbiAqIEN1c3RvbSB0cmFuc3BvcnQgaW1wbGVtZW50YXRpb24gKGNhbiBiZSBzZXQgYnkgdXNlcilcbiAqL1xubGV0IGN1c3RvbVRyYW5zcG9ydDogUnVudGltZVRyYW5zcG9ydCB8IG51bGwgPSBudWxsO1xuXG4vKipcbiAqIFNldCBhIGN1c3RvbSB0cmFuc3BvcnQgZm9yIGFsbCBXYWlscyBydW50aW1lIGNhbGxzLlxuICogVGhpcyBhbGxvd3MgeW91IHRvIHJlcGxhY2UgdGhlIGRlZmF1bHQgSFRUUCBmZXRjaCB0cmFuc3BvcnQgd2l0aFxuICogV2ViU29ja2V0cywgY3VzdG9tIHByb3RvY29scywgb3IgYW55IG90aGVyIG1lY2hhbmlzbS5cbiAqXG4gKiBAcGFyYW0gdHJhbnNwb3J0IC0gWW91ciBjdXN0b20gdHJhbnNwb3J0IGltcGxlbWVudGF0aW9uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IHNldFRyYW5zcG9ydCB9IGZyb20gJy93YWlscy9ydW50aW1lLmpzJztcbiAqXG4gKiBjb25zdCB3c1RyYW5zcG9ydCA9IHtcbiAqICAgY2FsbDogYXN5bmMgKG9iamVjdElELCBtZXRob2QsIHdpbmRvd05hbWUsIGFyZ3MpID0+IHtcbiAqICAgICAvLyBZb3VyIFdlYlNvY2tldCBpbXBsZW1lbnRhdGlvblxuICogICB9XG4gKiB9O1xuICpcbiAqIHNldFRyYW5zcG9ydCh3c1RyYW5zcG9ydCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFRyYW5zcG9ydCh0cmFuc3BvcnQ6IFJ1bnRpbWVUcmFuc3BvcnQgfCBudWxsKTogdm9pZCB7XG4gICAgY3VzdG9tVHJhbnNwb3J0ID0gdHJhbnNwb3J0O1xufVxuXG4vKipcbiAqIEdldCB0aGUgY3VycmVudCB0cmFuc3BvcnQgKHVzZWZ1bCBmb3IgZXh0ZW5kaW5nL3dyYXBwaW5nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNwb3J0KCk6IFJ1bnRpbWVUcmFuc3BvcnQgfCBudWxsIHtcbiAgICByZXR1cm4gY3VzdG9tVHJhbnNwb3J0O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgcnVudGltZSBjYWxsZXIgd2l0aCBzcGVjaWZpZWQgSUQuXG4gKlxuICogQHBhcmFtIG9iamVjdCAtIFRoZSBvYmplY3QgdG8gaW52b2tlIHRoZSBtZXRob2Qgb24uXG4gKiBAcGFyYW0gd2luZG93TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3aW5kb3cuXG4gKiBAcmV0dXJuIFRoZSBuZXcgcnVudGltZSBjYWxsZXIgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdDogbnVtYmVyLCB3aW5kb3dOYW1lOiBzdHJpbmcgPSAnJykge1xuICAgIHJldHVybiBmdW5jdGlvbiAobWV0aG9kOiBudW1iZXIsIGFyZ3M6IGFueSA9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJ1bnRpbWVDYWxsV2l0aElEKG9iamVjdCwgbWV0aG9kLCB3aW5kb3dOYW1lLCBhcmdzKTtcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBydW50aW1lQ2FsbFdpdGhJRChvYmplY3RJRDogbnVtYmVyLCBtZXRob2Q6IG51bWJlciwgd2luZG93TmFtZTogc3RyaW5nLCBhcmdzOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIC8vIFVzZSBjdXN0b20gdHJhbnNwb3J0IGlmIGF2YWlsYWJsZVxuICAgIGlmIChjdXN0b21UcmFuc3BvcnQpIHtcbiAgICAgICAgcmV0dXJuIGN1c3RvbVRyYW5zcG9ydC5jYWxsKG9iamVjdElELCBtZXRob2QsIHdpbmRvd05hbWUsIGFyZ3MpO1xuICAgIH1cblxuICAgIC8vIERlZmF1bHQgSFRUUCBmZXRjaCB0cmFuc3BvcnRcbiAgICBsZXQgdXJsID0gbmV3IFVSTChydW50aW1lVVJMKCkpO1xuXG4gICAgbGV0IGJvZHk6IHsgb2JqZWN0OiBudW1iZXI7IG1ldGhvZDogbnVtYmVyLCBhcmdzPzogYW55IH0gPSB7XG4gICAgICBvYmplY3Q6IG9iamVjdElELFxuICAgICAgbWV0aG9kXG4gICAgfVxuICAgIGlmIChhcmdzICE9PSBudWxsICYmIGFyZ3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYm9keS5hcmdzID0gYXJncztcbiAgICB9XG5cbiAgICBsZXQgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgW1wieC13YWlscy1jbGllbnQtaWRcIl06IGNsaWVudElkLFxuICAgICAgICBbXCJDb250ZW50LVR5cGVcIl06IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgfVxuICAgIGlmICh3aW5kb3dOYW1lKSB7XG4gICAgICAgIGhlYWRlcnNbXCJ4LXdhaWxzLXdpbmRvdy1uYW1lXCJdID0gd2luZG93TmFtZTtcbiAgICB9XG5cbiAgICBjb25zdCBib2R5U3RyID0gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG4gICAgbGV0IHJlc3BvbnNlOiBSZXNwb25zZTtcbiAgICBpZiAoYm9keVN0ci5sZW5ndGggPiBDSFVOS19USFJFU0hPTEQpIHtcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCBzZW5kQ2h1bmtlZCh1cmwsIGhlYWRlcnMsIGJvZHlTdHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7IG1ldGhvZDogJ1BPU1QnLCBoZWFkZXJzLCBib2R5OiBib2R5U3RyIH0pO1xuICAgIH1cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihhd2FpdCByZXNwb25zZS50ZXh0KCkpO1xuICAgIH1cblxuICAgIGlmICgocmVzcG9uc2UuaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIik/LmluZGV4T2YoXCJhcHBsaWNhdGlvbi9qc29uXCIpID8/IC0xKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpO1xuICAgIH1cbn1cblxuLy8gc2VuZENodW5rZWQgc3BsaXRzIGEgbGFyZ2Ugc2VyaWFsaXNlZCByZXF1ZXN0IGJvZHkgaW50byBDSFVOS19USFJFU0hPTEQtc2l6ZWRcbi8vIGJ5dGUgY2h1bmtzIGFuZCBzZW5kcyB0aGVtIHNlcmlhbGx5LiAgRW5jb2RpbmcgdG8gVVRGLTggYnl0ZXMgYmVmb3JlIHNsaWNpbmdcbi8vIHByZXZlbnRzIGNvcnJ1cHRpb24gb2Ygbm9uLUJNUCBjaGFyYWN0ZXJzIChzdXJyb2dhdGUgcGFpcnMpIHRoYXQgd291bGQgb2NjdXJcbi8vIHdoZW4gc3BsaXR0aW5nIGF0IEphdmFTY3JpcHQgc3RyaW5nIGluZGljZXMuICBUaGUgR28gdHJhbnNwb3J0IGFzc2VtYmxlcyB0aGVcbi8vIHJhdyBieXRlcyBiZWZvcmUgcHJvY2Vzc2luZy4gIE9ubHkgdGhlIGZpbmFsIGNodW5rJ3MgcmVzcG9uc2UgY2FycmllcyB0aGUgUlBDIHJlc3VsdC5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRDaHVua2VkKHVybDogVVJMLCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBib2R5U3RyOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgY2h1bmtJZCA9IG5hbm9pZCgpO1xuICAgIGNvbnN0IGJvZHlCeXRlcyA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShib2R5U3RyKTtcbiAgICBjb25zdCB0b3RhbENodW5rcyA9IE1hdGguY2VpbChib2R5Qnl0ZXMubGVuZ3RoIC8gQ0hVTktfVEhSRVNIT0xEKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG90YWxDaHVua3MgLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2h1bmsgPSBib2R5Qnl0ZXMuc3ViYXJyYXkoaSAqIENIVU5LX1RIUkVTSE9MRCwgKGkgKyAxKSAqIENIVU5LX1RIUkVTSE9MRCk7XG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgJ3gtd2FpbHMtY2h1bmstaWQnOiBjaHVua0lkLFxuICAgICAgICAgICAgICAgICd4LXdhaWxzLWNodW5rLWluZGV4JzogU3RyaW5nKGkpLFxuICAgICAgICAgICAgICAgICd4LXdhaWxzLWNodW5rLXRvdGFsJzogU3RyaW5nKHRvdGFsQ2h1bmtzKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib2R5OiBjaHVuayxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcmVzcC5vaykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGF3YWl0IHJlc3AudGV4dCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICAgICAgICAneC13YWlscy1jaHVuay1pZCc6IGNodW5rSWQsXG4gICAgICAgICAgICAneC13YWlscy1jaHVuay1pbmRleCc6IFN0cmluZyh0b3RhbENodW5rcyAtIDEpLFxuICAgICAgICAgICAgJ3gtd2FpbHMtY2h1bmstdG90YWwnOiBTdHJpbmcodG90YWxDaHVua3MpLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBib2R5Qnl0ZXMuc3ViYXJyYXkoKHRvdGFsQ2h1bmtzIC0gMSkgKiBDSFVOS19USFJFU0hPTEQpLFxuICAgIH0pO1xufVxuXG4vKipcbiAqIEFuZHJvaWQgV2ViVmlldyBjYW5ub3QgZGVsaXZlciBmZXRjaCgpIFBPU1QgYm9kaWVzIHRvXG4gKiBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0LCBzbyB0aGUgZGVmYXVsdCBIVFRQIHRyYW5zcG9ydCBjYW5ub3QgcmVhY2ggR28uXG4gKiBXaGVuIHRoZSBBbmRyb2lkIEphdmFzY3JpcHRJbnRlcmZhY2UgYnJpZGdlICh3aW5kb3cud2FpbHMpIGlzIHByZXNlbnQsXG4gKiByb3V0ZSBydW50aW1lIGNhbGxzIHRocm91Z2ggaXQgaW5zdGVhZC4gUmVzcG9uc2VzIGFycml2ZSB2aWFcbiAqIHdpbmRvdy5fd2FpbHNBbmRyb2lkQ2FsbGJhY2ssIGludm9rZWQgYnkgdGhlIEphdmEgc2lkZS5cbiAqL1xuaW50ZXJmYWNlIEFuZHJvaWRKU0JyaWRnZSB7XG4gICAgaW52b2tlQXN5bmMoY2FsbGJhY2tJRDogc3RyaW5nLCBwYXlsb2FkOiBzdHJpbmcpOiB2b2lkO1xufVxuXG5jb25zdCBhbmRyb2lkQnJpZGdlOiBBbmRyb2lkSlNCcmlkZ2UgfCBudWxsID0gaGFzRE9NICYmXG4gICAgdHlwZW9mICh3aW5kb3cgYXMgYW55KS53YWlscz8uaW52b2tlQXN5bmMgPT09IFwiZnVuY3Rpb25cIiA/ICh3aW5kb3cgYXMgYW55KS53YWlscyA6IG51bGw7XG5cbmlmIChhbmRyb2lkQnJpZGdlKSB7XG4gICAgY29uc3QgcGVuZGluZyA9IG5ldyBNYXA8c3RyaW5nLCB7IHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkOyByZWplY3Q6IChyZWFzb246IGFueSkgPT4gdm9pZCB9PigpO1xuXG4gICAgKHdpbmRvdyBhcyBhbnkpLl93YWlsc0FuZHJvaWRDYWxsYmFjayA9IChpZDogc3RyaW5nLCByZXNwb25zZTogc3RyaW5nIHwgbnVsbCwgZXJyb3I6IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IHBlbmRpbmcuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFwcm9taXNlKSByZXR1cm47XG4gICAgICAgIHBlbmRpbmcuZGVsZXRlKGlkKTtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdChuZXcgRXJyb3IoZXJyb3IpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZW52ZWxvcGUgPSBKU09OLnBhcnNlKHJlc3BvbnNlID8/IFwie31cIik7XG4gICAgICAgICAgICBpZiAoIWVudmVsb3BlLm9rKSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGVudmVsb3BlLmVycm9yID8/IFwidW5rbm93biBydW50aW1lIGNhbGwgZXJyb3JcIikpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShcInRleHRcIiBpbiBlbnZlbG9wZSA/IGVudmVsb3BlLnRleHQgOiBlbnZlbG9wZS5kYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY3VzdG9tVHJhbnNwb3J0ID0ge1xuICAgICAgICBjYWxsKG9iamVjdElEOiBudW1iZXIsIG1ldGhvZDogbnVtYmVyLCB3aW5kb3dOYW1lOiBzdHJpbmcsIGFyZ3M6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gbmFub2lkKCk7XG4gICAgICAgICAgICAgICAgcGVuZGluZy5zZXQoaWQsIHsgcmVzb2x2ZSwgcmVqZWN0IH0pO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGFuZHJvaWRCcmlkZ2UuaW52b2tlQXN5bmMoaWQsIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogb2JqZWN0SUQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd05hbWU6IHdpbmRvd05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzOiBhcmdzID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWQsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGxlYWsgdGhlIHBlbmRpbmcgZW50cnkgaWYgZGlzcGF0Y2ggdGhyb3dzIHN5bmNocm9ub3VzbHlcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZy5kZWxldGUoaWQpO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHtuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lc30gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG4vLyBzZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xufVxuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5EaWFsb2cpO1xuXG4vLyBEZWZpbmUgY29uc3RhbnRzIGZyb20gdGhlIGBtZXRob2RzYCBvYmplY3QgaW4gVGl0bGUgQ2FzZVxuY29uc3QgRGlhbG9nSW5mbyA9IDA7XG5jb25zdCBEaWFsb2dXYXJuaW5nID0gMTtcbmNvbnN0IERpYWxvZ0Vycm9yID0gMjtcbmNvbnN0IERpYWxvZ1F1ZXN0aW9uID0gMztcbmNvbnN0IERpYWxvZ09wZW5GaWxlID0gNDtcbmNvbnN0IERpYWxvZ1NhdmVGaWxlID0gNTtcblxuZXhwb3J0IGludGVyZmFjZSBPcGVuRmlsZURpYWxvZ09wdGlvbnMge1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZGlyZWN0b3JpZXMgY2FuIGJlIGNob3Nlbi4gKi9cbiAgICBDYW5DaG9vc2VEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBmaWxlcyBjYW4gYmUgY2hvc2VuLiAqL1xuICAgIENhbkNob29zZUZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGRpcmVjdG9yaWVzIGNhbiBiZSBjcmVhdGVkLiAqL1xuICAgIENhbkNyZWF0ZURpcmVjdG9yaWVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGhpZGRlbiBmaWxlcyBzaG91bGQgYmUgc2hvd24uICovXG4gICAgU2hvd0hpZGRlbkZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGFsaWFzZXMgc2hvdWxkIGJlIHJlc29sdmVkLiAqL1xuICAgIFJlc29sdmVzQWxpYXNlcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBtdWx0aXBsZSBzZWxlY3Rpb24gaXMgYWxsb3dlZC4gKi9cbiAgICBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZXh0ZW5zaW9uIHNob3VsZCBiZSBoaWRkZW4uICovXG4gICAgSGlkZUV4dGVuc2lvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBoaWRkZW4gZXh0ZW5zaW9ucyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gICAgQ2FuU2VsZWN0SGlkZGVuRXh0ZW5zaW9uPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGZpbGUgcGFja2FnZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZGlyZWN0b3JpZXMuICovXG4gICAgVHJlYXRzRmlsZVBhY2thZ2VzQXNEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBvdGhlciBmaWxlIHR5cGVzIGFyZSBhbGxvd2VkLiAqL1xuICAgIEFsbG93c090aGVyRmlsZXR5cGVzPzogYm9vbGVhbjtcbiAgICAvKiogQXJyYXkgb2YgZmlsZSBmaWx0ZXJzLiAqL1xuICAgIEZpbHRlcnM/OiBGaWxlRmlsdGVyW107XG4gICAgLyoqIFRpdGxlIG9mIHRoZSBkaWFsb2cuICovXG4gICAgVGl0bGU/OiBzdHJpbmc7XG4gICAgLyoqIE1lc3NhZ2UgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIE1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgLyoqIFRleHQgdG8gZGlzcGxheSBvbiB0aGUgYnV0dG9uLiAqL1xuICAgIEJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gICAgLyoqIERpcmVjdG9yeSB0byBvcGVuIGluIHRoZSBkaWFsb2cuICovXG4gICAgRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGRpYWxvZyBzaG91bGQgYXBwZWFyIGRldGFjaGVkIGZyb20gdGhlIG1haW4gd2luZG93LiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYXZlRmlsZURpYWxvZ09wdGlvbnMge1xuICAgIC8qKiBEZWZhdWx0IGZpbGVuYW1lIHRvIHVzZSBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIEZpbGVuYW1lPzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZGlyZWN0b3JpZXMgY2FuIGJlIGNob3Nlbi4gKi9cbiAgICBDYW5DaG9vc2VEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBmaWxlcyBjYW4gYmUgY2hvc2VuLiAqL1xuICAgIENhbkNob29zZUZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGRpcmVjdG9yaWVzIGNhbiBiZSBjcmVhdGVkLiAqL1xuICAgIENhbkNyZWF0ZURpcmVjdG9yaWVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGhpZGRlbiBmaWxlcyBzaG91bGQgYmUgc2hvd24uICovXG4gICAgU2hvd0hpZGRlbkZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGFsaWFzZXMgc2hvdWxkIGJlIHJlc29sdmVkLiAqL1xuICAgIFJlc29sdmVzQWxpYXNlcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZXh0ZW5zaW9uIHNob3VsZCBiZSBoaWRkZW4uICovXG4gICAgSGlkZUV4dGVuc2lvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBoaWRkZW4gZXh0ZW5zaW9ucyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gICAgQ2FuU2VsZWN0SGlkZGVuRXh0ZW5zaW9uPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGZpbGUgcGFja2FnZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZGlyZWN0b3JpZXMuICovXG4gICAgVHJlYXRzRmlsZVBhY2thZ2VzQXNEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBvdGhlciBmaWxlIHR5cGVzIGFyZSBhbGxvd2VkLiAqL1xuICAgIEFsbG93c090aGVyRmlsZXR5cGVzPzogYm9vbGVhbjtcbiAgICAvKiogQXJyYXkgb2YgZmlsZSBmaWx0ZXJzLiAqL1xuICAgIEZpbHRlcnM/OiBGaWxlRmlsdGVyW107XG4gICAgLyoqIFRpdGxlIG9mIHRoZSBkaWFsb2cuICovXG4gICAgVGl0bGU/OiBzdHJpbmc7XG4gICAgLyoqIE1lc3NhZ2UgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIE1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgLyoqIFRleHQgdG8gZGlzcGxheSBvbiB0aGUgYnV0dG9uLiAqL1xuICAgIEJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gICAgLyoqIERpcmVjdG9yeSB0byBvcGVuIGluIHRoZSBkaWFsb2cuICovXG4gICAgRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGRpYWxvZyBzaG91bGQgYXBwZWFyIGRldGFjaGVkIGZyb20gdGhlIG1haW4gd2luZG93LiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlRGlhbG9nT3B0aW9ucyB7XG4gICAgLyoqIFRoZSB0aXRsZSBvZiB0aGUgZGlhbG9nIHdpbmRvdy4gKi9cbiAgICBUaXRsZT86IHN0cmluZztcbiAgICAvKiogVGhlIG1haW4gbWVzc2FnZSB0byBzaG93IGluIHRoZSBkaWFsb2cuICovXG4gICAgTWVzc2FnZT86IHN0cmluZztcbiAgICAvKiogQXJyYXkgb2YgYnV0dG9uIG9wdGlvbnMgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIEJ1dHRvbnM/OiBCdXR0b25bXTtcbiAgICAvKiogVHJ1ZSBpZiB0aGUgZGlhbG9nIHNob3VsZCBhcHBlYXIgZGV0YWNoZWQgZnJvbSB0aGUgbWFpbiB3aW5kb3cgKGlmIGFwcGxpY2FibGUpLiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b24ge1xuICAgIC8qKiBUZXh0IHRoYXQgYXBwZWFycyB3aXRoaW4gdGhlIGJ1dHRvbi4gKi9cbiAgICBMYWJlbD86IHN0cmluZztcbiAgICAvKiogVHJ1ZSBpZiB0aGUgYnV0dG9uIHNob3VsZCBjYW5jZWwgYW4gb3BlcmF0aW9uIHdoZW4gY2xpY2tlZC4gKi9cbiAgICBJc0NhbmNlbD86IGJvb2xlYW47XG4gICAgLyoqIFRydWUgaWYgdGhlIGJ1dHRvbiBzaG91bGQgYmUgdGhlIGRlZmF1bHQgYWN0aW9uIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBlbnRlci4gKi9cbiAgICBJc0RlZmF1bHQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVGaWx0ZXIge1xuICAgIC8qKiBEaXNwbGF5IG5hbWUgZm9yIHRoZSBmaWx0ZXIsIGl0IGNvdWxkIGJlIFwiVGV4dCBGaWxlc1wiLCBcIkltYWdlc1wiIGV0Yy4gKi9cbiAgICBEaXNwbGF5TmFtZT86IHN0cmluZztcbiAgICAvKiogUGF0dGVybiB0byBtYXRjaCBmb3IgdGhlIGZpbHRlciwgZS5nLiBcIioudHh0OyoubWRcIiBmb3IgdGV4dCBtYXJrZG93biBmaWxlcy4gKi9cbiAgICBQYXR0ZXJuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByZXNlbnRzIGEgZGlhbG9nIG9mIHNwZWNpZmllZCB0eXBlIHdpdGggdGhlIGdpdmVuIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHR5cGUgLSBEaWFsb2cgdHlwZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgdGhlIGRpYWxvZy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggcmVzdWx0IG9mIGRpYWxvZy5cbiAqL1xuZnVuY3Rpb24gZGlhbG9nKHR5cGU6IG51bWJlciwgb3B0aW9uczogTWVzc2FnZURpYWxvZ09wdGlvbnMgfCBPcGVuRmlsZURpYWxvZ09wdGlvbnMgfCBTYXZlRmlsZURpYWxvZ09wdGlvbnMgPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGNhbGwodHlwZSwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogUHJlc2VudHMgYW4gaW5mbyBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9uc1xuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbGFiZWwgb2YgdGhlIGNob3NlbiBidXR0b24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJbmZvKG9wdGlvbnM6IE1lc3NhZ2VEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHsgcmV0dXJuIGRpYWxvZyhEaWFsb2dJbmZvLCBvcHRpb25zKTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgd2FybmluZyBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGxhYmVsIG9mIHRoZSBjaG9zZW4gYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gV2FybmluZyhvcHRpb25zOiBNZXNzYWdlRGlhbG9nT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7IHJldHVybiBkaWFsb2coRGlhbG9nV2FybmluZywgb3B0aW9ucyk7IH1cblxuLyoqXG4gKiBQcmVzZW50cyBhbiBlcnJvciBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGxhYmVsIG9mIHRoZSBjaG9zZW4gYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRXJyb3Iob3B0aW9uczogTWVzc2FnZURpYWxvZ09wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4geyByZXR1cm4gZGlhbG9nKERpYWxvZ0Vycm9yLCBvcHRpb25zKTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgcXVlc3Rpb24gZGlhbG9nLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gRGlhbG9nIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBsYWJlbCBvZiB0aGUgY2hvc2VuIGJ1dHRvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFF1ZXN0aW9uKG9wdGlvbnM6IE1lc3NhZ2VEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHsgcmV0dXJuIGRpYWxvZyhEaWFsb2dRdWVzdGlvbiwgb3B0aW9ucyk7IH1cblxuLyoqXG4gKiBQcmVzZW50cyBhIGZpbGUgc2VsZWN0aW9uIGRpYWxvZyB0byBwaWNrIG9uZSBvciBtb3JlIGZpbGVzIHRvIG9wZW4uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFNlbGVjdGVkIGZpbGUgb3IgbGlzdCBvZiBmaWxlcywgb3IgYSBibGFuayBzdHJpbmcvZW1wdHkgbGlzdCBpZiBubyBmaWxlIGhhcyBiZWVuIHNlbGVjdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zICYgeyBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjogdHJ1ZSB9KTogUHJvbWlzZTxzdHJpbmdbXT47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zICYgeyBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbj86IGZhbHNlIHwgdW5kZWZpbmVkIH0pOiBQcm9taXNlPHN0cmluZz47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCBzdHJpbmdbXT47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCBzdHJpbmdbXT4geyByZXR1cm4gZGlhbG9nKERpYWxvZ09wZW5GaWxlLCBvcHRpb25zKSA/PyBbXTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgZmlsZSBzZWxlY3Rpb24gZGlhbG9nIHRvIHBpY2sgYSBmaWxlIHRvIHNhdmUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFNlbGVjdGVkIGZpbGUsIG9yIGEgYmxhbmsgc3RyaW5nIGlmIG5vIGZpbGUgaGFzIGJlZW4gc2VsZWN0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTYXZlRmlsZShvcHRpb25zOiBTYXZlRmlsZURpYWxvZ09wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4geyByZXR1cm4gZGlhbG9nKERpYWxvZ1NhdmVGaWxlLCBvcHRpb25zKTsgfVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmltcG9ydCB7IGV2ZW50TGlzdGVuZXJzLCBMaXN0ZW5lciwgbGlzdGVuZXJPZmYgfSBmcm9tIFwiLi9saXN0ZW5lci5qc1wiO1xuaW1wb3J0IHsgRXZlbnRzIGFzIENyZWF0ZSB9IGZyb20gXCIuL2NyZWF0ZS5qc1wiO1xuaW1wb3J0IHsgVHlwZXMgfSBmcm9tIFwiLi9ldmVudF90eXBlcy5qc1wiO1xuXG4vLyBTZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xuICAgIHdpbmRvdy5fd2FpbHMuZGlzcGF0Y2hXYWlsc0V2ZW50ID0gZGlzcGF0Y2hXYWlsc0V2ZW50O1xufVxuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5FdmVudHMpO1xuY29uc3QgRW1pdE1ldGhvZCA9IDA7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2V2ZW50X3R5cGVzLmpzXCI7XG5cbi8qKlxuICogQSB0YWJsZSBvZiBkYXRhIHR5cGVzIGZvciBhbGwga25vd24gZXZlbnRzLlxuICogV2lsbCBiZSBtb25rZXktcGF0Y2hlZCBieSB0aGUgYmluZGluZyBnZW5lcmF0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tRXZlbnRzIHt9XG5cbi8qKlxuICogRWl0aGVyIGEga25vd24gZXZlbnQgbmFtZSBvciBhbiBhcmJpdHJhcnkgc3RyaW5nLlxuICovXG5leHBvcnQgdHlwZSBXYWlsc0V2ZW50TmFtZTxFIGV4dGVuZHMga2V5b2YgQ3VzdG9tRXZlbnRzID0ga2V5b2YgQ3VzdG9tRXZlbnRzPiA9IEUgfCAoc3RyaW5nICYge30pO1xuXG4vKipcbiAqIFVuaW9uIG9mIGFsbCBrbm93biBzeXN0ZW0gZXZlbnQgbmFtZXMuXG4gKi9cbnR5cGUgU3lzdGVtRXZlbnROYW1lID0ge1xuICAgIFtLIGluIGtleW9mICh0eXBlb2YgVHlwZXMpXTogKHR5cGVvZiBUeXBlcylbS11ba2V5b2YgKCh0eXBlb2YgVHlwZXMpW0tdKV1cbn0gZXh0ZW5kcyAoaW5mZXIgTSkgPyBNW2tleW9mIE1dIDogbmV2ZXI7XG5cbi8qKlxuICogVGhlIGRhdGEgdHlwZSBhc3NvY2lhdGVkIHRvIGEgZ2l2ZW4gZXZlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFdhaWxzRXZlbnREYXRhPEUgZXh0ZW5kcyBXYWlsc0V2ZW50TmFtZSA9IFdhaWxzRXZlbnROYW1lPiA9XG4gICAgRSBleHRlbmRzIGtleW9mIEN1c3RvbUV2ZW50cyA/IEN1c3RvbUV2ZW50c1tFXSA6IChFIGV4dGVuZHMgU3lzdGVtRXZlbnROYW1lID8gdm9pZCA6IGFueSk7XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgaGFuZGxlcnMgZm9yIGEgZ2l2ZW4gZXZlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFdhaWxzRXZlbnRDYWxsYmFjazxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4gPSAoZXY6IFdhaWxzRXZlbnQ8RT4pID0+IHZvaWQ7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHN5c3RlbSBldmVudCBvciBhIGN1c3RvbSBldmVudCBlbWl0dGVkIHRocm91Z2ggd2FpbHMtcHJvdmlkZWQgZmFjaWxpdGllcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFdhaWxzRXZlbnQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAgICovXG4gICAgbmFtZTogRTtcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbWl0dGVkIGV2ZW50LlxuICAgICAqL1xuICAgIGRhdGE6IFdhaWxzRXZlbnREYXRhPEU+O1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgb3JpZ2luYXRpbmcgd2luZG93LiBPbWl0dGVkIGZvciBhcHBsaWNhdGlvbiBldmVudHMuXG4gICAgICogV2lsbCBiZSBvdmVycmlkZGVuIGlmIHNldCBtYW51YWxseS5cbiAgICAgKi9cbiAgICBzZW5kZXI/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBFLCBkYXRhOiBXYWlsc0V2ZW50RGF0YTxFPik7XG4gICAgY29uc3RydWN0b3IobmFtZTogV2FpbHNFdmVudERhdGE8RT4gZXh0ZW5kcyBudWxsIHwgdm9pZCA/IEUgOiBuZXZlcilcbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBFLCBkYXRhPzogYW55KSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGEgPz8gbnVsbDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoV2FpbHNFdmVudChldmVudDogYW55KSB7XG4gICAgbGV0IGxpc3RlbmVycyA9IGV2ZW50TGlzdGVuZXJzLmdldChldmVudC5uYW1lKTtcbiAgICBpZiAoIWxpc3RlbmVycykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHdhaWxzRXZlbnQgPSBuZXcgV2FpbHNFdmVudChcbiAgICAgICAgZXZlbnQubmFtZSxcbiAgICAgICAgKGV2ZW50Lm5hbWUgaW4gQ3JlYXRlKSA/IENyZWF0ZVtldmVudC5uYW1lXShldmVudC5kYXRhKSA6IGV2ZW50LmRhdGFcbiAgICApO1xuICAgIGlmICgnc2VuZGVyJyBpbiBldmVudCkge1xuICAgICAgICB3YWlsc0V2ZW50LnNlbmRlciA9IGV2ZW50LnNlbmRlcjtcbiAgICB9XG5cbiAgICAvLyBEaXNwYXRjaCB0byBhIHNuYXBzaG90LCB0aGVuIHJlbW92ZSBhbGwgZXhwaXJlZCBsaXN0ZW5lcnMgaW4gYSBzaW5nbGVcbiAgICAvLyBwb3N0LWRpc3BhdGNoIGZpbHRlciBvZiB0aGUgbGl2ZSBtYXAuXG4gICAgLy8gLSBXcml0aW5nIHRoZSBzbmFwc2hvdCBiYWNrIHdob2xlc2FsZSB3b3VsZCB1bmRvIHN1YnNjcmlwdGlvbiBjaGFuZ2VzXG4gICAgLy8gICBtYWRlIGluc2lkZSBhIGhhbmRsZXIgKCM0MzkzKS5cbiAgICAvLyAtIENhbGxpbmcgbGlzdGVuZXJPZmYoKSBwZXIgZXhwaXJlZCBsaXN0ZW5lciBpbnNpZGUgdGhlIGxvb3AgaXMgTyhuXHUwMEIyKVxuICAgIC8vICAgd2hlbiBtYW55IGxpc3RlbmVycyBleHBpcmUgb24gdGhlIHNhbWUgZXZlbnQuXG4gICAgLy8gRmlsdGVyaW5nIHRoZSBsaXZlIGFycmF5IG9uY2UgYWZ0ZXIgZGlzcGF0Y2ggaXMgTyhuKSBhbmQgc3RpbGwgaG9ub3Vyc1xuICAgIC8vIGFueSBsaXN0ZW5lcnMgYWRkZWQgb3IgcmVtb3ZlZCBieSBoYW5kbGVycyBkdXJpbmcgZGlzcGF0Y2guXG4gICAgY29uc3QgZXhwaXJlZCA9IG5ldyBTZXQ8TGlzdGVuZXI+KCk7XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMuc2xpY2UoKSkge1xuICAgICAgICBpZiAobGlzdGVuZXIuZGlzcGF0Y2god2FpbHNFdmVudCkpIHtcbiAgICAgICAgICAgIGV4cGlyZWQuYWRkKGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXhwaXJlZC5zaXplID4gMCkge1xuICAgICAgICBjb25zdCBsaXZlID0gZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50Lm5hbWUpO1xuICAgICAgICBpZiAobGl2ZSkge1xuICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nID0gbGl2ZS5maWx0ZXIobCA9PiAhZXhwaXJlZC5oYXMobCkpO1xuICAgICAgICAgICAgaWYgKHJlbWFpbmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBldmVudExpc3RlbmVycy5kZWxldGUoZXZlbnQubmFtZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV2ZW50TGlzdGVuZXJzLnNldChldmVudC5uYW1lLCByZW1haW5pbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGZvciBhIHNwZWNpZmljIGV2ZW50LlxuICpcbiAqIEBwYXJhbSBldmVudE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQgdG8gcmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZvci5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICogQHBhcmFtIG1heENhbGxiYWNrcyAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0aGUgY2FsbGJhY2sgY2FuIGJlIGNhbGxlZCBmb3IgdGhlIGV2ZW50LiBPbmNlIHRoZSBtYXhpbXVtIG51bWJlciBpcyByZWFjaGVkLCB0aGUgY2FsbGJhY2sgd2lsbCBubyBsb25nZXIgYmUgY2FsbGVkLlxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0LCB3aGVuIGNhbGxlZCwgd2lsbCB1bnJlZ2lzdGVyIHRoZSBjYWxsYmFjayBmcm9tIHRoZSBldmVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE9uTXVsdGlwbGU8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KGV2ZW50TmFtZTogRSwgY2FsbGJhY2s6IFdhaWxzRXZlbnRDYWxsYmFjazxFPiwgbWF4Q2FsbGJhY2tzOiBudW1iZXIpIHtcbiAgICBsZXQgbGlzdGVuZXJzID0gZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50TmFtZSkgfHwgW107XG4gICAgY29uc3QgdGhpc0xpc3RlbmVyID0gbmV3IExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2ssIG1heENhbGxiYWNrcyk7XG4gICAgbGlzdGVuZXJzLnB1c2godGhpc0xpc3RlbmVyKTtcbiAgICBldmVudExpc3RlbmVycy5zZXQoZXZlbnROYW1lLCBsaXN0ZW5lcnMpO1xuICAgIHJldHVybiAoKSA9PiBsaXN0ZW5lck9mZih0aGlzTGlzdGVuZXIpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIHNwZWNpZmllZCBldmVudCBvY2N1cnMuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudCB0byByZWdpc3RlciB0aGUgY2FsbGJhY2sgZm9yLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLCB3aWxsIHVucmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZyb20gdGhlIGV2ZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gT248RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KGV2ZW50TmFtZTogRSwgY2FsbGJhY2s6IFdhaWxzRXZlbnRDYWxsYmFjazxFPik6ICgpID0+IHZvaWQge1xuICAgIHJldHVybiBPbk11bHRpcGxlKGV2ZW50TmFtZSwgY2FsbGJhY2ssIC0xKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBvbmx5IG9uY2UgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudCB0byByZWdpc3RlciB0aGUgY2FsbGJhY2sgZm9yLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLCB3aWxsIHVucmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZyb20gdGhlIGV2ZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gT25jZTxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4oZXZlbnROYW1lOiBFLCBjYWxsYmFjazogV2FpbHNFdmVudENhbGxiYWNrPEU+KTogKCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIE9uTXVsdGlwbGUoZXZlbnROYW1lLCBjYWxsYmFjaywgMSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBldmVudCBsaXN0ZW5lcnMgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQgbmFtZXMuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZXMgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnRzIHRvIHJlbW92ZSBsaXN0ZW5lcnMgZm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT2ZmKC4uLmV2ZW50TmFtZXM6IFtXYWlsc0V2ZW50TmFtZSwgLi4uV2FpbHNFdmVudE5hbWVbXV0pOiB2b2lkIHtcbiAgICBldmVudE5hbWVzLmZvckVhY2goZXZlbnROYW1lID0+IGV2ZW50TGlzdGVuZXJzLmRlbGV0ZShldmVudE5hbWUpKTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBldmVudCBsaXN0ZW5lcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBPZmZBbGwoKTogdm9pZCB7XG4gICAgZXZlbnRMaXN0ZW5lcnMuY2xlYXIoKTtcbn1cblxuLyoqXG4gKiBFbWl0cyBhbiBldmVudC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCB3aWxsIGJlIGZ1bGZpbGxlZCBvbmNlIHRoZSBldmVudCBoYXMgYmVlbiBlbWl0dGVkLiAgUmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGUgZXZlbnQgd2FzIGNhbmNlbGxlZC5cbiAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50IHRvIGVtaXRcbiAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgdGhhdCB3aWxsIGJlIHNlbnQgd2l0aCB0aGUgZXZlbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVtaXQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KG5hbWU6IEUsIGRhdGE6IFdhaWxzRXZlbnREYXRhPEU+KTogUHJvbWlzZTxib29sZWFuPlxuZXhwb3J0IGZ1bmN0aW9uIEVtaXQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KG5hbWU6IFdhaWxzRXZlbnREYXRhPEU+IGV4dGVuZHMgbnVsbCB8IHZvaWQgPyBFIDogbmV2ZXIpOiBQcm9taXNlPGJvb2xlYW4+XG5leHBvcnQgZnVuY3Rpb24gRW1pdDxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4obmFtZTogV2FpbHNFdmVudERhdGE8RT4sIGRhdGE/OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gY2FsbChFbWl0TWV0aG9kLCAgbmV3IFdhaWxzRXZlbnQobmFtZSwgZGF0YSkpXG59XG5cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLy8gVGhlIGZvbGxvd2luZyB1dGlsaXRpZXMgaGF2ZSBiZWVuIGZhY3RvcmVkIG91dCBvZiAuL2V2ZW50cy50c1xuLy8gZm9yIHRlc3RpbmcgcHVycG9zZXMuXG5cbmV4cG9ydCBjb25zdCBldmVudExpc3RlbmVycyA9IG5ldyBNYXA8c3RyaW5nLCBMaXN0ZW5lcltdPigpO1xuXG5leHBvcnQgY2xhc3MgTGlzdGVuZXIge1xuICAgIGV2ZW50TmFtZTogc3RyaW5nO1xuICAgIGNhbGxiYWNrOiAoZGF0YTogYW55KSA9PiB2b2lkO1xuICAgIG1heENhbGxiYWNrczogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IoZXZlbnROYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoZGF0YTogYW55KSA9PiB2b2lkLCBtYXhDYWxsYmFja3M6IG51bWJlcikge1xuICAgICAgICB0aGlzLmV2ZW50TmFtZSA9IGV2ZW50TmFtZTtcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgICB0aGlzLm1heENhbGxiYWNrcyA9IG1heENhbGxiYWNrcyB8fCAtMTtcbiAgICB9XG5cbiAgICBkaXNwYXRjaChkYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2soZGF0YSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWF4Q2FsbGJhY2tzID09PSAtMSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0aGlzLm1heENhbGxiYWNrcyAtPSAxO1xuICAgICAgICByZXR1cm4gdGhpcy5tYXhDYWxsYmFja3MgPT09IDA7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuZXJPZmYobGlzdGVuZXI6IExpc3RlbmVyKTogdm9pZCB7XG4gICAgbGV0IGxpc3RlbmVycyA9IGV2ZW50TGlzdGVuZXJzLmdldChsaXN0ZW5lci5ldmVudE5hbWUpO1xuICAgIGlmICghbGlzdGVuZXJzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnMuZmlsdGVyKGwgPT4gbCAhPT0gbGlzdGVuZXIpO1xuICAgIGlmIChsaXN0ZW5lcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50TGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lci5ldmVudE5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGV2ZW50TGlzdGVuZXJzLnNldChsaXN0ZW5lci5ldmVudE5hbWUsIGxpc3RlbmVycyk7XG4gICAgfVxufVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG4vKipcbiAqIEFueSBpcyBhIGR1bW15IGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBzaW1wbGUgb3IgdW5rbm93biB0eXBlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFueTxUID0gYW55Pihzb3VyY2U6IGFueSk6IFQge1xuICAgIHJldHVybiBzb3VyY2U7XG59XG5cbi8qKlxuICogQnl0ZVNsaWNlIGlzIGEgY3JlYXRpb24gZnVuY3Rpb24gdGhhdCByZXBsYWNlc1xuICogbnVsbCBzdHJpbmdzIHdpdGggZW1wdHkgc3RyaW5ncy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJ5dGVTbGljZShzb3VyY2U6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuICgoc291cmNlID09IG51bGwpID8gXCJcIiA6IHNvdXJjZSk7XG59XG5cbi8qKlxuICogQXJyYXkgdGFrZXMgYSBjcmVhdGlvbiBmdW5jdGlvbiBmb3IgYW4gYXJiaXRyYXJ5IHR5cGVcbiAqIGFuZCByZXR1cm5zIGFuIGluLXBsYWNlIGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBhbiBhcnJheVxuICogd2hvc2UgZWxlbWVudHMgYXJlIG9mIHRoYXQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFycmF5PFQgPSBhbnk+KGVsZW1lbnQ6IChzb3VyY2U6IGFueSkgPT4gVCk6IChzb3VyY2U6IGFueSkgPT4gVFtdIHtcbiAgICBpZiAoZWxlbWVudCA9PT0gQW55KSB7XG4gICAgICAgIHJldHVybiAoc291cmNlKSA9PiAoc291cmNlID09PSBudWxsID8gW10gOiBzb3VyY2UpO1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiB7XG4gICAgICAgIGlmIChzb3VyY2UgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc291cmNlW2ldID0gZWxlbWVudChzb3VyY2VbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBNYXAgdGFrZXMgY3JlYXRpb24gZnVuY3Rpb25zIGZvciB0d28gYXJiaXRyYXJ5IHR5cGVzXG4gKiBhbmQgcmV0dXJucyBhbiBpbi1wbGFjZSBjcmVhdGlvbiBmdW5jdGlvbiBmb3IgYW4gb2JqZWN0XG4gKiB3aG9zZSBrZXlzIGFuZCB2YWx1ZXMgYXJlIG9mIHRob3NlIHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gTWFwPEsgZXh0ZW5kcyBQcm9wZXJ0eUtleSA9IGFueSwgViA9IGFueT4oa2V5OiAoc291cmNlOiBhbnkpID0+IEssIHZhbHVlOiAoc291cmNlOiBhbnkpID0+IFYpOiAoc291cmNlOiBhbnkpID0+IFJlY29yZDxLLCBWPiB7XG4gICAgaWYgKHZhbHVlID09PSBBbnkpIHtcbiAgICAgICAgcmV0dXJuIChzb3VyY2UpID0+IChzb3VyY2UgPT09IG51bGwgPyB7fSA6IHNvdXJjZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChzb3VyY2UpID0+IHtcbiAgICAgICAgaWYgKHNvdXJjZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgICAgICAgICAgc291cmNlW2tleV0gPSB2YWx1ZShzb3VyY2Vba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9O1xufVxuXG4vKipcbiAqIE51bGxhYmxlIHRha2VzIGEgY3JlYXRpb24gZnVuY3Rpb24gZm9yIGFuIGFyYml0cmFyeSB0eXBlXG4gKiBhbmQgcmV0dXJucyBhIGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBhIG51bGxhYmxlIHZhbHVlIG9mIHRoYXQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE51bGxhYmxlPFQgPSBhbnk+KGVsZW1lbnQ6IChzb3VyY2U6IGFueSkgPT4gVCk6IChzb3VyY2U6IGFueSkgPT4gKFQgfCBudWxsKSB7XG4gICAgaWYgKGVsZW1lbnQgPT09IEFueSkge1xuICAgICAgICByZXR1cm4gQW55O1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiAoc291cmNlID09PSBudWxsID8gbnVsbCA6IGVsZW1lbnQoc291cmNlKSk7XG59XG5cbi8qKlxuICogU3RydWN0IHRha2VzIGFuIG9iamVjdCBtYXBwaW5nIGZpZWxkIG5hbWVzIHRvIGNyZWF0aW9uIGZ1bmN0aW9uc1xuICogYW5kIHJldHVybnMgYW4gaW4tcGxhY2UgY3JlYXRpb24gZnVuY3Rpb24gZm9yIGEgc3RydWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gU3RydWN0KGNyZWF0ZUZpZWxkOiBSZWNvcmQ8c3RyaW5nLCAoc291cmNlOiBhbnkpID0+IGFueT4pOlxuICAgIDxVIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IGFueT4oc291cmNlOiBhbnkpID0+IFVcbntcbiAgICBsZXQgYWxsQW55ID0gdHJ1ZTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgaW4gY3JlYXRlRmllbGQpIHtcbiAgICAgICAgaWYgKGNyZWF0ZUZpZWxkW25hbWVdICE9PSBBbnkpIHtcbiAgICAgICAgICAgIGFsbEFueSA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFsbEFueSkge1xuICAgICAgICByZXR1cm4gQW55O1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBjcmVhdGVGaWVsZCkge1xuICAgICAgICAgICAgaWYgKG5hbWUgaW4gc291cmNlKSB7XG4gICAgICAgICAgICAgICAgc291cmNlW25hbWVdID0gY3JlYXRlRmllbGRbbmFtZV0oc291cmNlW25hbWVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIH07XG59XG5cbi8qKlxuICogRGF0ZUZyb21UaW1lIGlzIGEgY3JlYXRpb24gZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBSRkMzMzM5IHN0cmluZ3NcbiAqIChmcm9tIEdvJ3MgdGltZS5UaW1lIEpTT04gbWFyc2hhbGluZykgdG8gSmF2YVNjcmlwdCBEYXRlIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEYXRlRnJvbVRpbWUoc291cmNlOiBhbnkpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoc291cmNlKTtcbn1cblxuLyoqXG4gKiBNYXBzIGtub3duIGV2ZW50IG5hbWVzIHRvIGNyZWF0aW9uIGZ1bmN0aW9ucyBmb3IgdGhlaXIgZGF0YSB0eXBlcy5cbiAqIFdpbGwgYmUgbW9ua2V5LXBhdGNoZWQgYnkgdGhlIGJpbmRpbmcgZ2VuZXJhdG9yLlxuICovXG5leHBvcnQgY29uc3QgRXZlbnRzOiBSZWNvcmQ8c3RyaW5nLCAoc291cmNlOiBhbnkpID0+IGFueT4gPSB7fTtcbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLy8gQ3luaHlyY2h3eWQgeSBmZmVpbCBob24geW4gYXd0b21hdGlnLiBQRUlESVdDSCBcdTAwQzIgTU9ESVdMXG4vLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuIERPIE5PVCBFRElUXG5cbmV4cG9ydCBjb25zdCBUeXBlcyA9IE9iamVjdC5mcmVlemUoe1xuXHRXaW5kb3dzOiBPYmplY3QuZnJlZXplKHtcblx0XHRBUE1Qb3dlclNldHRpbmdDaGFuZ2U6IFwid2luZG93czpBUE1Qb3dlclNldHRpbmdDaGFuZ2VcIixcblx0XHRBUE1Qb3dlclN0YXR1c0NoYW5nZTogXCJ3aW5kb3dzOkFQTVBvd2VyU3RhdHVzQ2hhbmdlXCIsXG5cdFx0QVBNUmVzdW1lQXV0b21hdGljOiBcIndpbmRvd3M6QVBNUmVzdW1lQXV0b21hdGljXCIsXG5cdFx0QVBNUmVzdW1lU3VzcGVuZDogXCJ3aW5kb3dzOkFQTVJlc3VtZVN1c3BlbmRcIixcblx0XHRBUE1TdXNwZW5kOiBcIndpbmRvd3M6QVBNU3VzcGVuZFwiLFxuXHRcdEFwcGxpY2F0aW9uU3RhcnRlZDogXCJ3aW5kb3dzOkFwcGxpY2F0aW9uU3RhcnRlZFwiLFxuXHRcdFN5c3RlbVRoZW1lQ2hhbmdlZDogXCJ3aW5kb3dzOlN5c3RlbVRoZW1lQ2hhbmdlZFwiLFxuXHRcdFdlYlZpZXdOYXZpZ2F0aW9uQ29tcGxldGVkOiBcIndpbmRvd3M6V2ViVmlld05hdmlnYXRpb25Db21wbGV0ZWRcIixcblx0XHRXaW5kb3dBY3RpdmU6IFwid2luZG93czpXaW5kb3dBY3RpdmVcIixcblx0XHRXaW5kb3dCYWNrZ3JvdW5kRXJhc2U6IFwid2luZG93czpXaW5kb3dCYWNrZ3JvdW5kRXJhc2VcIixcblx0XHRXaW5kb3dDbGlja0FjdGl2ZTogXCJ3aW5kb3dzOldpbmRvd0NsaWNrQWN0aXZlXCIsXG5cdFx0V2luZG93Q2xvc2luZzogXCJ3aW5kb3dzOldpbmRvd0Nsb3NpbmdcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcIndpbmRvd3M6V2luZG93RGlkTW92ZVwiLFxuXHRcdFdpbmRvd0RpZFJlc2l6ZTogXCJ3aW5kb3dzOldpbmRvd0RpZFJlc2l6ZVwiLFxuXHRcdFdpbmRvd0RQSUNoYW5nZWQ6IFwid2luZG93czpXaW5kb3dEUElDaGFuZ2VkXCIsXG5cdFx0V2luZG93RHJhZ0Ryb3A6IFwid2luZG93czpXaW5kb3dEcmFnRHJvcFwiLFxuXHRcdFdpbmRvd0RyYWdFbnRlcjogXCJ3aW5kb3dzOldpbmRvd0RyYWdFbnRlclwiLFxuXHRcdFdpbmRvd0RyYWdMZWF2ZTogXCJ3aW5kb3dzOldpbmRvd0RyYWdMZWF2ZVwiLFxuXHRcdFdpbmRvd0RyYWdPdmVyOiBcIndpbmRvd3M6V2luZG93RHJhZ092ZXJcIixcblx0XHRXaW5kb3dFbmRNb3ZlOiBcIndpbmRvd3M6V2luZG93RW5kTW92ZVwiLFxuXHRcdFdpbmRvd0VuZFJlc2l6ZTogXCJ3aW5kb3dzOldpbmRvd0VuZFJlc2l6ZVwiLFxuXHRcdFdpbmRvd0Z1bGxzY3JlZW46IFwid2luZG93czpXaW5kb3dGdWxsc2NyZWVuXCIsXG5cdFx0V2luZG93SGlkZTogXCJ3aW5kb3dzOldpbmRvd0hpZGVcIixcblx0XHRXaW5kb3dJbmFjdGl2ZTogXCJ3aW5kb3dzOldpbmRvd0luYWN0aXZlXCIsXG5cdFx0V2luZG93S2V5RG93bjogXCJ3aW5kb3dzOldpbmRvd0tleURvd25cIixcblx0XHRXaW5kb3dLZXlVcDogXCJ3aW5kb3dzOldpbmRvd0tleVVwXCIsXG5cdFx0V2luZG93S2lsbEZvY3VzOiBcIndpbmRvd3M6V2luZG93S2lsbEZvY3VzXCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50SGl0OiBcIndpbmRvd3M6V2luZG93Tm9uQ2xpZW50SGl0XCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50TW91c2VEb3duOiBcIndpbmRvd3M6V2luZG93Tm9uQ2xpZW50TW91c2VEb3duXCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50TW91c2VMZWF2ZTogXCJ3aW5kb3dzOldpbmRvd05vbkNsaWVudE1vdXNlTGVhdmVcIixcblx0XHRXaW5kb3dOb25DbGllbnRNb3VzZU1vdmU6IFwid2luZG93czpXaW5kb3dOb25DbGllbnRNb3VzZU1vdmVcIixcblx0XHRXaW5kb3dOb25DbGllbnRNb3VzZVVwOiBcIndpbmRvd3M6V2luZG93Tm9uQ2xpZW50TW91c2VVcFwiLFxuXHRcdFdpbmRvd1BhaW50OiBcIndpbmRvd3M6V2luZG93UGFpbnRcIixcblx0XHRXaW5kb3dSZXN0b3JlOiBcIndpbmRvd3M6V2luZG93UmVzdG9yZVwiLFxuXHRcdFdpbmRvd1NldEZvY3VzOiBcIndpbmRvd3M6V2luZG93U2V0Rm9jdXNcIixcblx0XHRXaW5kb3dTaG93OiBcIndpbmRvd3M6V2luZG93U2hvd1wiLFxuXHRcdFdpbmRvd1N0YXJ0TW92ZTogXCJ3aW5kb3dzOldpbmRvd1N0YXJ0TW92ZVwiLFxuXHRcdFdpbmRvd1N0YXJ0UmVzaXplOiBcIndpbmRvd3M6V2luZG93U3RhcnRSZXNpemVcIixcblx0XHRXaW5kb3dVbkZ1bGxzY3JlZW46IFwid2luZG93czpXaW5kb3dVbkZ1bGxzY3JlZW5cIixcblx0XHRXaW5kb3daT3JkZXJDaGFuZ2VkOiBcIndpbmRvd3M6V2luZG93Wk9yZGVyQ2hhbmdlZFwiLFxuXHRcdFdpbmRvd01pbmltaXNlOiBcIndpbmRvd3M6V2luZG93TWluaW1pc2VcIixcblx0XHRXaW5kb3dVbk1pbmltaXNlOiBcIndpbmRvd3M6V2luZG93VW5NaW5pbWlzZVwiLFxuXHRcdFdpbmRvd01heGltaXNlOiBcIndpbmRvd3M6V2luZG93TWF4aW1pc2VcIixcblx0XHRXaW5kb3dVbk1heGltaXNlOiBcIndpbmRvd3M6V2luZG93VW5NYXhpbWlzZVwiLFxuXHR9KSxcblx0TWFjOiBPYmplY3QuZnJlZXplKHtcblx0XHRBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTogXCJtYWM6QXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzXCIsXG5cdFx0QXBwbGljYXRpb25EaWRDaGFuZ2VFZmZlY3RpdmVBcHBlYXJhbmNlOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZUVmZmVjdGl2ZUFwcGVhcmFuY2VcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZUljb246IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlSWNvblwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGU6IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGVcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyc1wiLFxuXHRcdEFwcGxpY2F0aW9uRGlkQ2hhbmdlU3RhdHVzQmFyRnJhbWU6IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlU3RhdHVzQmFyRnJhbWVcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZVN0YXR1c0Jhck9yaWVudGF0aW9uOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZVN0YXR1c0Jhck9yaWVudGF0aW9uXCIsXG5cdFx0QXBwbGljYXRpb25EaWRDaGFuZ2VUaGVtZTogXCJtYWM6QXBwbGljYXRpb25EaWRDaGFuZ2VUaGVtZVwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkRmluaXNoTGF1bmNoaW5nOiBcIm1hYzpBcHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZ1wiLFxuXHRcdEFwcGxpY2F0aW9uRGlkSGlkZTogXCJtYWM6QXBwbGljYXRpb25EaWRIaWRlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmU6IFwibWFjOkFwcGxpY2F0aW9uRGlkUmVzaWduQWN0aXZlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRVbmhpZGU6IFwibWFjOkFwcGxpY2F0aW9uRGlkVW5oaWRlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRVcGRhdGU6IFwibWFjOkFwcGxpY2F0aW9uRGlkVXBkYXRlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRXYWtlOiBcIm1hYzpBcHBsaWNhdGlvbkRpZFdha2VcIixcblx0XHRBcHBsaWNhdGlvblNjcmVlbnNEaWRTbGVlcDogXCJtYWM6QXBwbGljYXRpb25TY3JlZW5zRGlkU2xlZXBcIixcblx0XHRBcHBsaWNhdGlvblNjcmVlbnNEaWRXYWtlOiBcIm1hYzpBcHBsaWNhdGlvblNjcmVlbnNEaWRXYWtlXCIsXG5cdFx0QXBwbGljYXRpb25TaG91bGRIYW5kbGVSZW9wZW46IFwibWFjOkFwcGxpY2F0aW9uU2hvdWxkSGFuZGxlUmVvcGVuXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsQmVjb21lQWN0aXZlOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxCZWNvbWVBY3RpdmVcIixcblx0XHRBcHBsaWNhdGlvbldpbGxGaW5pc2hMYXVuY2hpbmc6IFwibWFjOkFwcGxpY2F0aW9uV2lsbEZpbmlzaExhdW5jaGluZ1wiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbEhpZGU6IFwibWFjOkFwcGxpY2F0aW9uV2lsbEhpZGVcIixcblx0XHRBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6IFwibWFjOkFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZVwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFNsZWVwOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxTbGVlcFwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZTogXCJtYWM6QXBwbGljYXRpb25XaWxsVGVybWluYXRlXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsVW5oaWRlOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxVbmhpZGVcIixcblx0XHRBcHBsaWNhdGlvbldpbGxVcGRhdGU6IFwibWFjOkFwcGxpY2F0aW9uV2lsbFVwZGF0ZVwiLFxuXHRcdE1lbnVEaWRBZGRJdGVtOiBcIm1hYzpNZW51RGlkQWRkSXRlbVwiLFxuXHRcdE1lbnVEaWRCZWdpblRyYWNraW5nOiBcIm1hYzpNZW51RGlkQmVnaW5UcmFja2luZ1wiLFxuXHRcdE1lbnVEaWRDbG9zZTogXCJtYWM6TWVudURpZENsb3NlXCIsXG5cdFx0TWVudURpZERpc3BsYXlJdGVtOiBcIm1hYzpNZW51RGlkRGlzcGxheUl0ZW1cIixcblx0XHRNZW51RGlkRW5kVHJhY2tpbmc6IFwibWFjOk1lbnVEaWRFbmRUcmFja2luZ1wiLFxuXHRcdE1lbnVEaWRIaWdobGlnaHRJdGVtOiBcIm1hYzpNZW51RGlkSGlnaGxpZ2h0SXRlbVwiLFxuXHRcdE1lbnVEaWRPcGVuOiBcIm1hYzpNZW51RGlkT3BlblwiLFxuXHRcdE1lbnVEaWRQb3BVcDogXCJtYWM6TWVudURpZFBvcFVwXCIsXG5cdFx0TWVudURpZFJlbW92ZUl0ZW06IFwibWFjOk1lbnVEaWRSZW1vdmVJdGVtXCIsXG5cdFx0TWVudURpZFNlbmRBY3Rpb246IFwibWFjOk1lbnVEaWRTZW5kQWN0aW9uXCIsXG5cdFx0TWVudURpZFNlbmRBY3Rpb25Ub0l0ZW06IFwibWFjOk1lbnVEaWRTZW5kQWN0aW9uVG9JdGVtXCIsXG5cdFx0TWVudURpZFVwZGF0ZTogXCJtYWM6TWVudURpZFVwZGF0ZVwiLFxuXHRcdE1lbnVXaWxsQWRkSXRlbTogXCJtYWM6TWVudVdpbGxBZGRJdGVtXCIsXG5cdFx0TWVudVdpbGxCZWdpblRyYWNraW5nOiBcIm1hYzpNZW51V2lsbEJlZ2luVHJhY2tpbmdcIixcblx0XHRNZW51V2lsbERpc3BsYXlJdGVtOiBcIm1hYzpNZW51V2lsbERpc3BsYXlJdGVtXCIsXG5cdFx0TWVudVdpbGxFbmRUcmFja2luZzogXCJtYWM6TWVudVdpbGxFbmRUcmFja2luZ1wiLFxuXHRcdE1lbnVXaWxsSGlnaGxpZ2h0SXRlbTogXCJtYWM6TWVudVdpbGxIaWdobGlnaHRJdGVtXCIsXG5cdFx0TWVudVdpbGxPcGVuOiBcIm1hYzpNZW51V2lsbE9wZW5cIixcblx0XHRNZW51V2lsbFBvcFVwOiBcIm1hYzpNZW51V2lsbFBvcFVwXCIsXG5cdFx0TWVudVdpbGxSZW1vdmVJdGVtOiBcIm1hYzpNZW51V2lsbFJlbW92ZUl0ZW1cIixcblx0XHRNZW51V2lsbFNlbmRBY3Rpb246IFwibWFjOk1lbnVXaWxsU2VuZEFjdGlvblwiLFxuXHRcdE1lbnVXaWxsU2VuZEFjdGlvblRvSXRlbTogXCJtYWM6TWVudVdpbGxTZW5kQWN0aW9uVG9JdGVtXCIsXG5cdFx0TWVudVdpbGxVcGRhdGU6IFwibWFjOk1lbnVXaWxsVXBkYXRlXCIsXG5cdFx0V2ViVmlld0RpZENvbW1pdE5hdmlnYXRpb246IFwibWFjOldlYlZpZXdEaWRDb21taXROYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZEZpbmlzaE5hdmlnYXRpb246IFwibWFjOldlYlZpZXdEaWRGaW5pc2hOYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbjogXCJtYWM6V2ViVmlld0RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvblwiLFxuXHRcdFdlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbjogXCJtYWM6V2ViVmlld0RpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uXCIsXG5cdFx0V2luZG93RGlkQmVjb21lS2V5OiBcIm1hYzpXaW5kb3dEaWRCZWNvbWVLZXlcIixcblx0XHRXaW5kb3dEaWRCZWNvbWVNYWluOiBcIm1hYzpXaW5kb3dEaWRCZWNvbWVNYWluXCIsXG5cdFx0V2luZG93RGlkQmVnaW5TaGVldDogXCJtYWM6V2luZG93RGlkQmVnaW5TaGVldFwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZUFscGhhOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VBbHBoYVwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZUJhY2tpbmdMb2NhdGlvbjogXCJtYWM6V2luZG93RGlkQ2hhbmdlQmFja2luZ0xvY2F0aW9uXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlQmFja2luZ1Byb3BlcnRpZXM6IFwibWFjOldpbmRvd0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlQ29sbGVjdGlvbkJlaGF2aW9yOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VDb2xsZWN0aW9uQmVoYXZpb3JcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VFZmZlY3RpdmVBcHBlYXJhbmNlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VFZmZlY3RpdmVBcHBlYXJhbmNlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGU6IFwibWFjOldpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlT3JkZXJpbmdNb2RlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VPcmRlcmluZ01vZGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTY3JlZW46IFwibWFjOldpbmRvd0RpZENoYW5nZVNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6IFwibWFjOldpbmRvd0RpZENoYW5nZVNjcmVlblBhcmFtZXRlcnNcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTY3JlZW5Qcm9maWxlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VTY3JlZW5Qcm9maWxlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlU2NyZWVuU3BhY2U6IFwibWFjOldpbmRvd0RpZENoYW5nZVNjcmVlblNwYWNlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlU2NyZWVuU3BhY2VQcm9wZXJ0aWVzOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VTY3JlZW5TcGFjZVByb3BlcnRpZXNcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTaGFyaW5nVHlwZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlU2hhcmluZ1R5cGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTcGFjZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlU3BhY2VcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTcGFjZU9yZGVyaW5nTW9kZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlU3BhY2VPcmRlcmluZ01vZGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VUaXRsZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlVGl0bGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VUb29sYmFyOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VUb29sYmFyXCIsXG5cdFx0V2luZG93RGlkRGVtaW5pYXR1cml6ZTogXCJtYWM6V2luZG93RGlkRGVtaW5pYXR1cml6ZVwiLFxuXHRcdFdpbmRvd0RpZEVuZFNoZWV0OiBcIm1hYzpXaW5kb3dEaWRFbmRTaGVldFwiLFxuXHRcdFdpbmRvd0RpZEVudGVyRnVsbFNjcmVlbjogXCJtYWM6V2luZG93RGlkRW50ZXJGdWxsU2NyZWVuXCIsXG5cdFx0V2luZG93RGlkRW50ZXJWZXJzaW9uQnJvd3NlcjogXCJtYWM6V2luZG93RGlkRW50ZXJWZXJzaW9uQnJvd3NlclwiLFxuXHRcdFdpbmRvd0RpZEV4aXRGdWxsU2NyZWVuOiBcIm1hYzpXaW5kb3dEaWRFeGl0RnVsbFNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZEV4aXRWZXJzaW9uQnJvd3NlcjogXCJtYWM6V2luZG93RGlkRXhpdFZlcnNpb25Ccm93c2VyXCIsXG5cdFx0V2luZG93RGlkRXhwb3NlOiBcIm1hYzpXaW5kb3dEaWRFeHBvc2VcIixcblx0XHRXaW5kb3dEaWRGb2N1czogXCJtYWM6V2luZG93RGlkRm9jdXNcIixcblx0XHRXaW5kb3dEaWRNaW5pYXR1cml6ZTogXCJtYWM6V2luZG93RGlkTWluaWF0dXJpemVcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcIm1hYzpXaW5kb3dEaWRNb3ZlXCIsXG5cdFx0V2luZG93RGlkT3JkZXJPZmZTY3JlZW46IFwibWFjOldpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuXCIsXG5cdFx0V2luZG93RGlkT3JkZXJPblNjcmVlbjogXCJtYWM6V2luZG93RGlkT3JkZXJPblNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZFJlc2lnbktleTogXCJtYWM6V2luZG93RGlkUmVzaWduS2V5XCIsXG5cdFx0V2luZG93RGlkUmVzaWduTWFpbjogXCJtYWM6V2luZG93RGlkUmVzaWduTWFpblwiLFxuXHRcdFdpbmRvd0RpZFJlc2l6ZTogXCJtYWM6V2luZG93RGlkUmVzaXplXCIsXG5cdFx0V2luZG93RGlkVXBkYXRlOiBcIm1hYzpXaW5kb3dEaWRVcGRhdGVcIixcblx0XHRXaW5kb3dEaWRVcGRhdGVBbHBoYTogXCJtYWM6V2luZG93RGlkVXBkYXRlQWxwaGFcIixcblx0XHRXaW5kb3dEaWRVcGRhdGVDb2xsZWN0aW9uQmVoYXZpb3I6IFwibWFjOldpbmRvd0RpZFVwZGF0ZUNvbGxlY3Rpb25CZWhhdmlvclwiLFxuXHRcdFdpbmRvd0RpZFVwZGF0ZUNvbGxlY3Rpb25Qcm9wZXJ0aWVzOiBcIm1hYzpXaW5kb3dEaWRVcGRhdGVDb2xsZWN0aW9uUHJvcGVydGllc1wiLFxuXHRcdFdpbmRvd0RpZFVwZGF0ZVNoYWRvdzogXCJtYWM6V2luZG93RGlkVXBkYXRlU2hhZG93XCIsXG5cdFx0V2luZG93RGlkVXBkYXRlVGl0bGU6IFwibWFjOldpbmRvd0RpZFVwZGF0ZVRpdGxlXCIsXG5cdFx0V2luZG93RGlkVXBkYXRlVG9vbGJhcjogXCJtYWM6V2luZG93RGlkVXBkYXRlVG9vbGJhclwiLFxuXHRcdFdpbmRvd0RpZFpvb206IFwibWFjOldpbmRvd0RpZFpvb21cIixcblx0XHRXaW5kb3dGaWxlRHJhZ2dpbmdFbnRlcmVkOiBcIm1hYzpXaW5kb3dGaWxlRHJhZ2dpbmdFbnRlcmVkXCIsXG5cdFx0V2luZG93RmlsZURyYWdnaW5nRXhpdGVkOiBcIm1hYzpXaW5kb3dGaWxlRHJhZ2dpbmdFeGl0ZWRcIixcblx0XHRXaW5kb3dGaWxlRHJhZ2dpbmdQZXJmb3JtZWQ6IFwibWFjOldpbmRvd0ZpbGVEcmFnZ2luZ1BlcmZvcm1lZFwiLFxuXHRcdFdpbmRvd0hpZGU6IFwibWFjOldpbmRvd0hpZGVcIixcblx0XHRXaW5kb3dNYXhpbWlzZTogXCJtYWM6V2luZG93TWF4aW1pc2VcIixcblx0XHRXaW5kb3dVbk1heGltaXNlOiBcIm1hYzpXaW5kb3dVbk1heGltaXNlXCIsXG5cdFx0V2luZG93TWluaW1pc2U6IFwibWFjOldpbmRvd01pbmltaXNlXCIsXG5cdFx0V2luZG93VW5NaW5pbWlzZTogXCJtYWM6V2luZG93VW5NaW5pbWlzZVwiLFxuXHRcdFdpbmRvd1Nob3VsZENsb3NlOiBcIm1hYzpXaW5kb3dTaG91bGRDbG9zZVwiLFxuXHRcdFdpbmRvd1Nob3c6IFwibWFjOldpbmRvd1Nob3dcIixcblx0XHRXaW5kb3dXaWxsQmVjb21lS2V5OiBcIm1hYzpXaW5kb3dXaWxsQmVjb21lS2V5XCIsXG5cdFx0V2luZG93V2lsbEJlY29tZU1haW46IFwibWFjOldpbmRvd1dpbGxCZWNvbWVNYWluXCIsXG5cdFx0V2luZG93V2lsbEJlZ2luU2hlZXQ6IFwibWFjOldpbmRvd1dpbGxCZWdpblNoZWV0XCIsXG5cdFx0V2luZG93V2lsbENoYW5nZU9yZGVyaW5nTW9kZTogXCJtYWM6V2luZG93V2lsbENoYW5nZU9yZGVyaW5nTW9kZVwiLFxuXHRcdFdpbmRvd1dpbGxDbG9zZTogXCJtYWM6V2luZG93V2lsbENsb3NlXCIsXG5cdFx0V2luZG93V2lsbERlbWluaWF0dXJpemU6IFwibWFjOldpbmRvd1dpbGxEZW1pbmlhdHVyaXplXCIsXG5cdFx0V2luZG93V2lsbEVudGVyRnVsbFNjcmVlbjogXCJtYWM6V2luZG93V2lsbEVudGVyRnVsbFNjcmVlblwiLFxuXHRcdFdpbmRvd1dpbGxFbnRlclZlcnNpb25Ccm93c2VyOiBcIm1hYzpXaW5kb3dXaWxsRW50ZXJWZXJzaW9uQnJvd3NlclwiLFxuXHRcdFdpbmRvd1dpbGxFeGl0RnVsbFNjcmVlbjogXCJtYWM6V2luZG93V2lsbEV4aXRGdWxsU2NyZWVuXCIsXG5cdFx0V2luZG93V2lsbEV4aXRWZXJzaW9uQnJvd3NlcjogXCJtYWM6V2luZG93V2lsbEV4aXRWZXJzaW9uQnJvd3NlclwiLFxuXHRcdFdpbmRvd1dpbGxGb2N1czogXCJtYWM6V2luZG93V2lsbEZvY3VzXCIsXG5cdFx0V2luZG93V2lsbE1pbmlhdHVyaXplOiBcIm1hYzpXaW5kb3dXaWxsTWluaWF0dXJpemVcIixcblx0XHRXaW5kb3dXaWxsTW92ZTogXCJtYWM6V2luZG93V2lsbE1vdmVcIixcblx0XHRXaW5kb3dXaWxsT3JkZXJPZmZTY3JlZW46IFwibWFjOldpbmRvd1dpbGxPcmRlck9mZlNjcmVlblwiLFxuXHRcdFdpbmRvd1dpbGxPcmRlck9uU2NyZWVuOiBcIm1hYzpXaW5kb3dXaWxsT3JkZXJPblNjcmVlblwiLFxuXHRcdFdpbmRvd1dpbGxSZXNpZ25NYWluOiBcIm1hYzpXaW5kb3dXaWxsUmVzaWduTWFpblwiLFxuXHRcdFdpbmRvd1dpbGxSZXNpemU6IFwibWFjOldpbmRvd1dpbGxSZXNpemVcIixcblx0XHRXaW5kb3dXaWxsVW5mb2N1czogXCJtYWM6V2luZG93V2lsbFVuZm9jdXNcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlXCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZUFscGhhOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlQWxwaGFcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlQ29sbGVjdGlvbkJlaGF2aW9yOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlQ29sbGVjdGlvbkJlaGF2aW9yXCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZUNvbGxlY3Rpb25Qcm9wZXJ0aWVzOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlQ29sbGVjdGlvblByb3BlcnRpZXNcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlU2hhZG93OiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlU2hhZG93XCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZVRpdGxlOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlVGl0bGVcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlVG9vbGJhcjogXCJtYWM6V2luZG93V2lsbFVwZGF0ZVRvb2xiYXJcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlVmlzaWJpbGl0eTogXCJtYWM6V2luZG93V2lsbFVwZGF0ZVZpc2liaWxpdHlcIixcblx0XHRXaW5kb3dXaWxsVXNlU3RhbmRhcmRGcmFtZTogXCJtYWM6V2luZG93V2lsbFVzZVN0YW5kYXJkRnJhbWVcIixcblx0XHRXaW5kb3dab29tSW46IFwibWFjOldpbmRvd1pvb21JblwiLFxuXHRcdFdpbmRvd1pvb21PdXQ6IFwibWFjOldpbmRvd1pvb21PdXRcIixcblx0XHRXaW5kb3dab29tUmVzZXQ6IFwibWFjOldpbmRvd1pvb21SZXNldFwiLFxuXHRcdFdlYlZpZXdXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZTogXCJtYWM6V2ViVmlld1dlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlXCIsXG5cdH0pLFxuXHRMaW51eDogT2JqZWN0LmZyZWV6ZSh7XG5cdFx0QXBwbGljYXRpb25TdGFydHVwOiBcImxpbnV4OkFwcGxpY2F0aW9uU3RhcnR1cFwiLFxuXHRcdFN5c3RlbURpZFdha2U6IFwibGludXg6U3lzdGVtRGlkV2FrZVwiLFxuXHRcdFN5c3RlbVRoZW1lQ2hhbmdlZDogXCJsaW51eDpTeXN0ZW1UaGVtZUNoYW5nZWRcIixcblx0XHRTeXN0ZW1XaWxsU2xlZXA6IFwibGludXg6U3lzdGVtV2lsbFNsZWVwXCIsXG5cdFx0V2luZG93RGVsZXRlRXZlbnQ6IFwibGludXg6V2luZG93RGVsZXRlRXZlbnRcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcImxpbnV4OldpbmRvd0RpZE1vdmVcIixcblx0XHRXaW5kb3dEaWRSZXNpemU6IFwibGludXg6V2luZG93RGlkUmVzaXplXCIsXG5cdFx0V2luZG93Rm9jdXNJbjogXCJsaW51eDpXaW5kb3dGb2N1c0luXCIsXG5cdFx0V2luZG93Rm9jdXNPdXQ6IFwibGludXg6V2luZG93Rm9jdXNPdXRcIixcblx0XHRXaW5kb3dMb2FkU3RhcnRlZDogXCJsaW51eDpXaW5kb3dMb2FkU3RhcnRlZFwiLFxuXHRcdFdpbmRvd0xvYWRSZWRpcmVjdGVkOiBcImxpbnV4OldpbmRvd0xvYWRSZWRpcmVjdGVkXCIsXG5cdFx0V2luZG93TG9hZENvbW1pdHRlZDogXCJsaW51eDpXaW5kb3dMb2FkQ29tbWl0dGVkXCIsXG5cdFx0V2luZG93TG9hZEZpbmlzaGVkOiBcImxpbnV4OldpbmRvd0xvYWRGaW5pc2hlZFwiLFxuXHR9KSxcblx0aU9TOiBPYmplY3QuZnJlZXplKHtcblx0XHRBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTogXCJpb3M6QXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVcIixcblx0XHRBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDogXCJpb3M6QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRcIixcblx0XHRBcHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZzogXCJpb3M6QXBwbGljYXRpb25EaWRGaW5pc2hMYXVuY2hpbmdcIixcblx0XHRBcHBsaWNhdGlvbkRpZFJlY2VpdmVNZW1vcnlXYXJuaW5nOiBcImlvczpBcHBsaWNhdGlvbkRpZFJlY2VpdmVNZW1vcnlXYXJuaW5nXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOiBcImlvczpBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRcIixcblx0XHRBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6IFwiaW9zOkFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZVwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZTogXCJpb3M6QXBwbGljYXRpb25XaWxsVGVybWluYXRlXCIsXG5cdFx0V2luZG93RGlkTG9hZDogXCJpb3M6V2luZG93RGlkTG9hZFwiLFxuXHRcdFdpbmRvd1dpbGxBcHBlYXI6IFwiaW9zOldpbmRvd1dpbGxBcHBlYXJcIixcblx0XHRXaW5kb3dEaWRBcHBlYXI6IFwiaW9zOldpbmRvd0RpZEFwcGVhclwiLFxuXHRcdFdpbmRvd1dpbGxEaXNhcHBlYXI6IFwiaW9zOldpbmRvd1dpbGxEaXNhcHBlYXJcIixcblx0XHRXaW5kb3dEaWREaXNhcHBlYXI6IFwiaW9zOldpbmRvd0RpZERpc2FwcGVhclwiLFxuXHRcdFdpbmRvd1NhZmVBcmVhSW5zZXRzQ2hhbmdlZDogXCJpb3M6V2luZG93U2FmZUFyZWFJbnNldHNDaGFuZ2VkXCIsXG5cdFx0V2luZG93T3JpZW50YXRpb25DaGFuZ2VkOiBcImlvczpXaW5kb3dPcmllbnRhdGlvbkNoYW5nZWRcIixcblx0XHRXaW5kb3dUb3VjaEJlZ2FuOiBcImlvczpXaW5kb3dUb3VjaEJlZ2FuXCIsXG5cdFx0V2luZG93VG91Y2hNb3ZlZDogXCJpb3M6V2luZG93VG91Y2hNb3ZlZFwiLFxuXHRcdFdpbmRvd1RvdWNoRW5kZWQ6IFwiaW9zOldpbmRvd1RvdWNoRW5kZWRcIixcblx0XHRXaW5kb3dUb3VjaENhbmNlbGxlZDogXCJpb3M6V2luZG93VG91Y2hDYW5jZWxsZWRcIixcblx0XHRXZWJWaWV3RGlkU3RhcnROYXZpZ2F0aW9uOiBcImlvczpXZWJWaWV3RGlkU3RhcnROYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZEZpbmlzaE5hdmlnYXRpb246IFwiaW9zOldlYlZpZXdEaWRGaW5pc2hOYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZEZhaWxOYXZpZ2F0aW9uOiBcImlvczpXZWJWaWV3RGlkRmFpbE5hdmlnYXRpb25cIixcblx0XHRXZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjogXCJpb3M6V2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25cIixcblx0XHRCYXR0ZXJ5Q2hhbmdlZDogXCJpb3M6QmF0dGVyeUNoYW5nZWRcIixcblx0XHROZXR3b3JrQ2hhbmdlZDogXCJpb3M6TmV0d29ya0NoYW5nZWRcIixcblx0XHRUaGVtZUNoYW5nZWQ6IFwiaW9zOlRoZW1lQ2hhbmdlZFwiLFxuXHRcdFNjcmVlbkxvY2tlZDogXCJpb3M6U2NyZWVuTG9ja2VkXCIsXG5cdFx0U2NyZWVuVW5sb2NrZWQ6IFwiaW9zOlNjcmVlblVubG9ja2VkXCIsXG5cdH0pLFxuXHRBbmRyb2lkOiBPYmplY3QuZnJlZXplKHtcblx0XHRBY3Rpdml0eUNyZWF0ZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eUNyZWF0ZWRcIixcblx0XHRBY3Rpdml0eVN0YXJ0ZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eVN0YXJ0ZWRcIixcblx0XHRBY3Rpdml0eVJlc3VtZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eVJlc3VtZWRcIixcblx0XHRBY3Rpdml0eVBhdXNlZDogXCJhbmRyb2lkOkFjdGl2aXR5UGF1c2VkXCIsXG5cdFx0QWN0aXZpdHlTdG9wcGVkOiBcImFuZHJvaWQ6QWN0aXZpdHlTdG9wcGVkXCIsXG5cdFx0QWN0aXZpdHlEZXN0cm95ZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eURlc3Ryb3llZFwiLFxuXHRcdEFwcGxpY2F0aW9uTG93TWVtb3J5OiBcImFuZHJvaWQ6QXBwbGljYXRpb25Mb3dNZW1vcnlcIixcblx0XHRXZWJWaWV3UGFnZVN0YXJ0ZWQ6IFwiYW5kcm9pZDpXZWJWaWV3UGFnZVN0YXJ0ZWRcIixcblx0XHRXZWJWaWV3UGFnZUZpbmlzaGVkOiBcImFuZHJvaWQ6V2ViVmlld1BhZ2VGaW5pc2hlZFwiLFxuXHRcdEJhdHRlcnlDaGFuZ2VkOiBcImFuZHJvaWQ6QmF0dGVyeUNoYW5nZWRcIixcblx0XHROZXR3b3JrQ2hhbmdlZDogXCJhbmRyb2lkOk5ldHdvcmtDaGFuZ2VkXCIsXG5cdFx0VGhlbWVDaGFuZ2VkOiBcImFuZHJvaWQ6VGhlbWVDaGFuZ2VkXCIsXG5cdFx0U2NyZWVuTG9ja2VkOiBcImFuZHJvaWQ6U2NyZWVuTG9ja2VkXCIsXG5cdFx0U2NyZWVuVW5sb2NrZWQ6IFwiYW5kcm9pZDpTY3JlZW5VbmxvY2tlZFwiLFxuXHR9KSxcblx0Q29tbW9uOiBPYmplY3QuZnJlZXplKHtcblx0XHRBcHBsaWNhdGlvbk9wZW5lZFdpdGhGaWxlOiBcImNvbW1vbjpBcHBsaWNhdGlvbk9wZW5lZFdpdGhGaWxlXCIsXG5cdFx0QXBwbGljYXRpb25TdGFydGVkOiBcImNvbW1vbjpBcHBsaWNhdGlvblN0YXJ0ZWRcIixcblx0XHRBcHBsaWNhdGlvbkxhdW5jaGVkV2l0aFVybDogXCJjb21tb246QXBwbGljYXRpb25MYXVuY2hlZFdpdGhVcmxcIixcblx0XHRUaGVtZUNoYW5nZWQ6IFwiY29tbW9uOlRoZW1lQ2hhbmdlZFwiLFxuXHRcdFN5c3RlbURpZFdha2U6IFwiY29tbW9uOlN5c3RlbURpZFdha2VcIixcblx0XHRTeXN0ZW1XaWxsU2xlZXA6IFwiY29tbW9uOlN5c3RlbVdpbGxTbGVlcFwiLFxuXHRcdFdpbmRvd0Nsb3Npbmc6IFwiY29tbW9uOldpbmRvd0Nsb3NpbmdcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcImNvbW1vbjpXaW5kb3dEaWRNb3ZlXCIsXG5cdFx0V2luZG93RGlkUmVzaXplOiBcImNvbW1vbjpXaW5kb3dEaWRSZXNpemVcIixcblx0XHRXaW5kb3dEUElDaGFuZ2VkOiBcImNvbW1vbjpXaW5kb3dEUElDaGFuZ2VkXCIsXG5cdFx0V2luZG93RmlsZXNEcm9wcGVkOiBcImNvbW1vbjpXaW5kb3dGaWxlc0Ryb3BwZWRcIixcblx0XHRXaW5kb3dGb2N1czogXCJjb21tb246V2luZG93Rm9jdXNcIixcblx0XHRXaW5kb3dGdWxsc2NyZWVuOiBcImNvbW1vbjpXaW5kb3dGdWxsc2NyZWVuXCIsXG5cdFx0V2luZG93SGlkZTogXCJjb21tb246V2luZG93SGlkZVwiLFxuXHRcdFdpbmRvd0xvc3RGb2N1czogXCJjb21tb246V2luZG93TG9zdEZvY3VzXCIsXG5cdFx0V2luZG93TWF4aW1pc2U6IFwiY29tbW9uOldpbmRvd01heGltaXNlXCIsXG5cdFx0V2luZG93TWluaW1pc2U6IFwiY29tbW9uOldpbmRvd01pbmltaXNlXCIsXG5cdFx0V2luZG93VG9nZ2xlRnJhbWVsZXNzOiBcImNvbW1vbjpXaW5kb3dUb2dnbGVGcmFtZWxlc3NcIixcblx0XHRXaW5kb3dSZXN0b3JlOiBcImNvbW1vbjpXaW5kb3dSZXN0b3JlXCIsXG5cdFx0V2luZG93UnVudGltZVJlYWR5OiBcImNvbW1vbjpXaW5kb3dSdW50aW1lUmVhZHlcIixcblx0XHRXaW5kb3dTaG93OiBcImNvbW1vbjpXaW5kb3dTaG93XCIsXG5cdFx0V2luZG93VW5GdWxsc2NyZWVuOiBcImNvbW1vbjpXaW5kb3dVbkZ1bGxzY3JlZW5cIixcblx0XHRXaW5kb3dVbk1heGltaXNlOiBcImNvbW1vbjpXaW5kb3dVbk1heGltaXNlXCIsXG5cdFx0V2luZG93VW5NaW5pbWlzZTogXCJjb21tb246V2luZG93VW5NaW5pbWlzZVwiLFxuXHRcdFdpbmRvd1pvb206IFwiY29tbW9uOldpbmRvd1pvb21cIixcblx0XHRXaW5kb3dab29tSW46IFwiY29tbW9uOldpbmRvd1pvb21JblwiLFxuXHRcdFdpbmRvd1pvb21PdXQ6IFwiY29tbW9uOldpbmRvd1pvb21PdXRcIixcblx0XHRXaW5kb3dab29tUmVzZXQ6IFwiY29tbW9uOldpbmRvd1pvb21SZXNldFwiLFxuXHRcdEJhdHRlcnlDaGFuZ2VkOiBcImNvbW1vbjpCYXR0ZXJ5Q2hhbmdlZFwiLFxuXHRcdE5ldHdvcmtDaGFuZ2VkOiBcImNvbW1vbjpOZXR3b3JrQ2hhbmdlZFwiLFxuXHRcdFNjcmVlbkxvY2tlZDogXCJjb21tb246U2NyZWVuTG9ja2VkXCIsXG5cdFx0U2NyZWVuVW5sb2NrZWQ6IFwiY29tbW9uOlNjcmVlblVubG9ja2VkXCIsXG5cdFx0TG93TWVtb3J5OiBcImNvbW1vbjpMb3dNZW1vcnlcIixcblx0fSksXG59KTtcbiIsICIvKlxuIF8gICAgIF9fICAgICBfIF9fXG58IHwgIC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLyoqXG4gKiBMb2dzIGEgbWVzc2FnZSB0byB0aGUgY29uc29sZSB3aXRoIGN1c3RvbSBmb3JtYXR0aW5nLlxuICpcbiAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIG1lc3NhZ2UgdG8gYmUgbG9nZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVidWdMb2cobWVzc2FnZTogYW55KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgY29uc29sZS5sb2coXG4gICAgICAgICclYyB3YWlsczMgJWMgJyArIG1lc3NhZ2UgKyAnICcsXG4gICAgICAgICdiYWNrZ3JvdW5kOiAjYWEwMDAwOyBjb2xvcjogI2ZmZjsgYm9yZGVyLXJhZGl1czogM3B4IDBweCAwcHggM3B4OyBwYWRkaW5nOiAxcHg7IGZvbnQtc2l6ZTogMC43cmVtJyxcbiAgICAgICAgJ2JhY2tncm91bmQ6ICMwMDk5MDA7IGNvbG9yOiAjZmZmOyBib3JkZXItcmFkaXVzOiAwcHggM3B4IDNweCAwcHg7IHBhZGRpbmc6IDFweDsgZm9udC1zaXplOiAwLjdyZW0nXG4gICAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgd2VidmlldyBzdXBwb3J0cyB0aGUge0BsaW5rIE1vdXNlRXZlbnQjYnV0dG9uc30gcHJvcGVydHkuXG4gKiBMb29raW5nIGF0IHlvdSBtYWNPUyBIaWdoIFNpZXJyYSFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhblRyYWNrQnV0dG9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKSkuYnV0dG9ucyA9PT0gMDtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgYnJvd3NlciBzdXBwb3J0cyByZW1vdmluZyBsaXN0ZW5lcnMgYnkgdHJpZ2dlcmluZyBhbiBBYm9ydFNpZ25hbFxuICogKHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRUYXJnZXQvYWRkRXZlbnRMaXN0ZW5lciNzaWduYWwpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuQWJvcnRMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKCFFdmVudFRhcmdldCB8fCAhQWJvcnRTaWduYWwgfHwgIUFib3J0Q29udHJvbGxlcilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG5cbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgRXZlbnRUYXJnZXQoKTtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0ZXN0JywgKCkgPT4geyByZXN1bHQgPSBmYWxzZTsgfSwgeyBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsIH0pO1xuICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3Rlc3QnKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBjbG9zZXN0IEhUTUxFbGVtZW50IGFuY2VzdG9yIG9mIGFuIGV2ZW50J3MgdGFyZ2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRUYXJnZXQoZXZlbnQ6IEV2ZW50KTogSFRNTEVsZW1lbnQge1xuICAgIGlmIChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnQudGFyZ2V0O1xuICAgIH0gZWxzZSBpZiAoIShldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgJiYgZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSkge1xuICAgICAgICByZXR1cm4gZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQgPz8gZG9jdW1lbnQuYm9keTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keTtcbiAgICB9XG59XG5cbi8qKipcbiBUaGlzIHRlY2huaXF1ZSBmb3IgcHJvcGVyIGxvYWQgZGV0ZWN0aW9uIGlzIHRha2VuIGZyb20gSFRNWDpcblxuIEJTRCAyLUNsYXVzZSBMaWNlbnNlXG5cbiBDb3B5cmlnaHQgKGMpIDIwMjAsIEJpZyBTa3kgU29mdHdhcmVcbiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXNcbiBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG4gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIlxuIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFXG4gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUlxuIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSXG4gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSxcbiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRVxuIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG5cbiAqKiovXG5cbmxldCBpc1JlYWR5ID0gZmFsc2U7XG5pbXBvcnQgeyBoYXNET00gfSBmcm9tIFwiLi9lbnZpcm9ubWVudC5qc1wiO1xuXG5pZiAoaGFzRE9NKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpID0+IHsgaXNSZWFkeSA9IHRydWUgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aGVuUmVhZHkoY2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcbiAgICBpZiAoaXNSZWFkeSB8fCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGNhbGxiYWNrKTtcbiAgICB9XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7bmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXN9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmltcG9ydCB0eXBlIHsgU2NyZWVuIH0gZnJvbSBcIi4vc2NyZWVucy5qc1wiO1xuXG4vLyBEcm9wIHRhcmdldCBjb25zdGFudHNcbmNvbnN0IERST1BfVEFSR0VUX0FUVFJJQlVURSA9ICdkYXRhLWZpbGUtZHJvcC10YXJnZXQnO1xuY29uc3QgRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTID0gJ2ZpbGUtZHJvcC10YXJnZXQtYWN0aXZlJztcbmxldCBjdXJyZW50RHJvcFRhcmdldDogRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG5jb25zdCBQb3NpdGlvbk1ldGhvZCAgICAgICAgICAgICAgICAgICAgPSAwO1xuY29uc3QgQ2VudGVyTWV0aG9kICAgICAgICAgICAgICAgICAgICAgID0gMTtcbmNvbnN0IENsb3NlTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICA9IDI7XG5jb25zdCBEaXNhYmxlU2l6ZUNvbnN0cmFpbnRzTWV0aG9kICAgICAgPSAzO1xuY29uc3QgRW5hYmxlU2l6ZUNvbnN0cmFpbnRzTWV0aG9kICAgICAgID0gNDtcbmNvbnN0IEZvY3VzTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICA9IDU7XG5jb25zdCBGb3JjZVJlbG9hZE1ldGhvZCAgICAgICAgICAgICAgICAgPSA2O1xuY29uc3QgRnVsbHNjcmVlbk1ldGhvZCAgICAgICAgICAgICAgICAgID0gNztcbmNvbnN0IEdldFNjcmVlbk1ldGhvZCAgICAgICAgICAgICAgICAgICA9IDg7XG5jb25zdCBHZXRab29tTWV0aG9kICAgICAgICAgICAgICAgICAgICAgPSA5O1xuY29uc3QgSGVpZ2h0TWV0aG9kICAgICAgICAgICAgICAgICAgICAgID0gMTA7XG5jb25zdCBIaWRlTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICAgPSAxMTtcbmNvbnN0IElzRm9jdXNlZE1ldGhvZCAgICAgICAgICAgICAgICAgICA9IDEyO1xuY29uc3QgSXNGdWxsc2NyZWVuTWV0aG9kICAgICAgICAgICAgICAgID0gMTM7XG5jb25zdCBJc01heGltaXNlZE1ldGhvZCAgICAgICAgICAgICAgICAgPSAxNDtcbmNvbnN0IElzTWluaW1pc2VkTWV0aG9kICAgICAgICAgICAgICAgICA9IDE1O1xuY29uc3QgTWF4aW1pc2VNZXRob2QgICAgICAgICAgICAgICAgICAgID0gMTY7XG5jb25zdCBNaW5pbWlzZU1ldGhvZCAgICAgICAgICAgICAgICAgICAgPSAxNztcbmNvbnN0IE5hbWVNZXRob2QgICAgICAgICAgICAgICAgICAgICAgICA9IDE4O1xuY29uc3QgT3BlbkRldlRvb2xzTWV0aG9kICAgICAgICAgICAgICAgID0gMTk7XG5jb25zdCBSZWxhdGl2ZVBvc2l0aW9uTWV0aG9kICAgICAgICAgICAgPSAyMDtcbmNvbnN0IFJlbG9hZE1ldGhvZCAgICAgICAgICAgICAgICAgICAgICA9IDIxO1xuY29uc3QgUmVzaXphYmxlTWV0aG9kICAgICAgICAgICAgICAgICAgID0gMjI7XG5jb25zdCBSZXN0b3JlTWV0aG9kICAgICAgICAgICAgICAgICAgICAgPSAyMztcbmNvbnN0IFNldFBvc2l0aW9uTWV0aG9kICAgICAgICAgICAgICAgICA9IDI0O1xuY29uc3QgU2V0QWx3YXlzT25Ub3BNZXRob2QgICAgICAgICAgICAgID0gMjU7XG5jb25zdCBTZXRCYWNrZ3JvdW5kQ29sb3VyTWV0aG9kICAgICAgICAgPSAyNjtcbmNvbnN0IFNldEZyYW1lbGVzc01ldGhvZCAgICAgICAgICAgICAgICA9IDI3O1xuY29uc3QgU2V0RnVsbHNjcmVlbkJ1dHRvbkVuYWJsZWRNZXRob2QgID0gMjg7XG5jb25zdCBTZXRNYXhTaXplTWV0aG9kICAgICAgICAgICAgICAgICAgPSAyOTtcbmNvbnN0IFNldE1pblNpemVNZXRob2QgICAgICAgICAgICAgICAgICA9IDMwO1xuY29uc3QgU2V0UmVsYXRpdmVQb3NpdGlvbk1ldGhvZCAgICAgICAgID0gMzE7XG5jb25zdCBTZXRSZXNpemFibGVNZXRob2QgICAgICAgICAgICAgICAgPSAzMjtcbmNvbnN0IFNldFNpemVNZXRob2QgICAgICAgICAgICAgICAgICAgICA9IDMzO1xuY29uc3QgU2V0VGl0bGVNZXRob2QgICAgICAgICAgICAgICAgICAgID0gMzQ7XG5jb25zdCBTZXRab29tTWV0aG9kICAgICAgICAgICAgICAgICAgICAgPSAzNTtcbmNvbnN0IFNob3dNZXRob2QgICAgICAgICAgICAgICAgICAgICAgICA9IDM2O1xuY29uc3QgU2l6ZU1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgID0gMzc7XG5jb25zdCBUb2dnbGVGdWxsc2NyZWVuTWV0aG9kICAgICAgICAgICAgPSAzODtcbmNvbnN0IFRvZ2dsZU1heGltaXNlTWV0aG9kICAgICAgICAgICAgICA9IDM5O1xuY29uc3QgVG9nZ2xlRnJhbWVsZXNzTWV0aG9kICAgICAgICAgICAgID0gNDA7IFxuY29uc3QgVW5GdWxsc2NyZWVuTWV0aG9kICAgICAgICAgICAgICAgID0gNDE7XG5jb25zdCBVbk1heGltaXNlTWV0aG9kICAgICAgICAgICAgICAgICAgPSA0MjtcbmNvbnN0IFVuTWluaW1pc2VNZXRob2QgICAgICAgICAgICAgICAgICA9IDQzO1xuY29uc3QgV2lkdGhNZXRob2QgICAgICAgICAgICAgICAgICAgICAgID0gNDQ7XG5jb25zdCBab29tTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICAgPSA0NTtcbmNvbnN0IFpvb21Jbk1ldGhvZCAgICAgICAgICAgICAgICAgICAgICA9IDQ2O1xuY29uc3QgWm9vbU91dE1ldGhvZCAgICAgICAgICAgICAgICAgICAgID0gNDc7XG5jb25zdCBab29tUmVzZXRNZXRob2QgICAgICAgICAgICAgICAgICAgPSA0ODtcbmNvbnN0IFNuYXBBc3Npc3RNZXRob2QgICAgICAgICAgICAgICAgICA9IDQ5O1xuY29uc3QgRmlsZXNEcm9wcGVkICAgICAgICAgICAgICAgICAgICAgID0gNTA7XG5jb25zdCBQcmludE1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgPSA1MTtcbmNvbnN0IFNldFNjcmVlbk1ldGhvZCAgICAgICAgICAgICAgICAgICA9IDUyO1xuXG4vKipcbiAqIEZpbmRzIHRoZSBuZWFyZXN0IGRyb3AgdGFyZ2V0IGVsZW1lbnQgYnkgd2Fsa2luZyB1cCB0aGUgRE9NIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIGdldERyb3BUYXJnZXRFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsKTogRWxlbWVudCB8IG51bGwge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnQuY2xvc2VzdChgWyR7RFJPUF9UQVJHRVRfQVRUUklCVVRFfV1gKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB3ZSBjYW4gdXNlIFdlYlZpZXcyJ3MgcG9zdE1lc3NhZ2VXaXRoQWRkaXRpb25hbE9iamVjdHMgKFdpbmRvd3MpXG4gKiBBbHNvIGNoZWNrcyB0aGF0IEVuYWJsZUZpbGVEcm9wIGlzIHRydWUgZm9yIHRoaXMgd2luZG93LlxuICovXG5mdW5jdGlvbiBjYW5SZXNvbHZlRmlsZVBhdGhzKCk6IGJvb2xlYW4ge1xuICAgIC8vIE11c3QgaGF2ZSBXZWJWaWV3MidzIHBvc3RNZXNzYWdlV2l0aEFkZGl0aW9uYWxPYmplY3RzIEFQSSAoV2luZG93cyBvbmx5KVxuICAgIGlmICgod2luZG93IGFzIGFueSkuY2hyb21lPy53ZWJ2aWV3Py5wb3N0TWVzc2FnZVdpdGhBZGRpdGlvbmFsT2JqZWN0cyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gTXVzdCBoYXZlIEVuYWJsZUZpbGVEcm9wIHNldCB0byB0cnVlIGZvciB0aGlzIHdpbmRvd1xuICAgIC8vIFRoaXMgZmxhZyBpcyBzZXQgYnkgdGhlIEdvIGJhY2tlbmQgZHVyaW5nIHJ1bnRpbWUgaW5pdGlhbGl6YXRpb25cbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSB0cnVlO1xufVxuXG4vKipcbiAqIFNlbmQgZmlsZSBkcm9wIHRvIGJhY2tlbmQgdmlhIFdlYlZpZXcyIChXaW5kb3dzIG9ubHkpXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVGaWxlUGF0aHMoeDogbnVtYmVyLCB5OiBudW1iZXIsIGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcbiAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLmNocm9tZT8ud2Vidmlldz8ucG9zdE1lc3NhZ2VXaXRoQWRkaXRpb25hbE9iamVjdHMpIHtcbiAgICAgICAgKHdpbmRvdyBhcyBhbnkpLmNocm9tZS53ZWJ2aWV3LnBvc3RNZXNzYWdlV2l0aEFkZGl0aW9uYWxPYmplY3RzKGBmaWxlOmRyb3A6JHt4fToke3l9YCwgZmlsZXMpO1xuICAgIH1cbn1cblxuLy8gTmF0aXZlIGRyYWcgc3RhdGUgKExpbnV4L21hY09TIGludGVyY2VwdCBET00gZHJhZyBldmVudHMpXG5sZXQgbmF0aXZlRHJhZ0FjdGl2ZSA9IGZhbHNlO1xuXG4vKipcbiAqIENsZWFucyB1cCBuYXRpdmUgZHJhZyBzdGF0ZSBhbmQgaG92ZXIgZWZmZWN0cy5cbiAqIENhbGxlZCBvbiBkcm9wIG9yIHdoZW4gZHJhZyBsZWF2ZXMgdGhlIHdpbmRvdy5cbiAqL1xuZnVuY3Rpb24gY2xlYW51cE5hdGl2ZURyYWcoKTogdm9pZCB7XG4gICAgbmF0aXZlRHJhZ0FjdGl2ZSA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50RHJvcFRhcmdldCkge1xuICAgICAgICBjdXJyZW50RHJvcFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICB9XG59XG5cbi8qKlxuICogQ2FsbGVkIGZyb20gR28gd2hlbiBhIGZpbGUgZHJhZyBlbnRlcnMgdGhlIHdpbmRvdyBvbiBMaW51eC9tYWNPUy5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlRHJhZ0VudGVyKCk6IHZvaWQge1xuICAgIC8vIENoZWNrIGlmIGZpbGUgZHJvcHMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgd2luZG93XG4gICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBkb24ndCBhY3RpdmF0ZSBkcmFnIHN0YXRlXG4gICAgfVxuICAgIG5hdGl2ZURyYWdBY3RpdmUgPSB0cnVlO1xufVxuXG4vKipcbiAqIENhbGxlZCBmcm9tIEdvIHdoZW4gYSBmaWxlIGRyYWcgbGVhdmVzIHRoZSB3aW5kb3cgb24gTGludXgvbWFjT1MuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZURyYWdMZWF2ZSgpOiB2b2lkIHtcbiAgICBjbGVhbnVwTmF0aXZlRHJhZygpO1xufVxuXG4vKipcbiAqIENhbGxlZCBmcm9tIEdvIGR1cmluZyBmaWxlIGRyYWcgdG8gdXBkYXRlIGhvdmVyIHN0YXRlIG9uIExpbnV4L21hY09TLlxuICogQHBhcmFtIHggLSBYIGNvb3JkaW5hdGUgaW4gQ1NTIHBpeGVsc1xuICogQHBhcmFtIHkgLSBZIGNvb3JkaW5hdGUgaW4gQ1NTIHBpeGVsc1xuICovXG5mdW5jdGlvbiBoYW5kbGVEcmFnT3Zlcih4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghbmF0aXZlRHJhZ0FjdGl2ZSkgcmV0dXJuO1xuICAgIFxuICAgIC8vIENoZWNrIGlmIGZpbGUgZHJvcHMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgd2luZG93XG4gICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBkb24ndCBzaG93IGhvdmVyIGVmZmVjdHNcbiAgICB9XG4gICAgXG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7XG4gICAgY29uc3QgZHJvcFRhcmdldCA9IGdldERyb3BUYXJnZXRFbGVtZW50KHRhcmdldEVsZW1lbnQpO1xuICAgIFxuICAgIGlmIChjdXJyZW50RHJvcFRhcmdldCAmJiBjdXJyZW50RHJvcFRhcmdldCAhPT0gZHJvcFRhcmdldCkge1xuICAgICAgICBjdXJyZW50RHJvcFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgfVxuICAgIFxuICAgIGlmIChkcm9wVGFyZ2V0KSB7XG4gICAgICAgIGRyb3BUYXJnZXQuY2xhc3NMaXN0LmFkZChEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IGRyb3BUYXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudERyb3BUYXJnZXQgPSBudWxsO1xuICAgIH1cbn1cblxuXG5cbi8vIEV4cG9ydCB0aGUgaGFuZGxlcnMgZm9yIHVzZSBieSBHbyB2aWEgaW5kZXgudHNcbmV4cG9ydCB7IGhhbmRsZURyYWdFbnRlciwgaGFuZGxlRHJhZ0xlYXZlLCBoYW5kbGVEcmFnT3ZlciB9O1xuXG4vKipcbiAqIEEgcmVjb3JkIGRlc2NyaWJpbmcgdGhlIHBvc2l0aW9uIG9mIGEgd2luZG93LlxuICovXG5pbnRlcmZhY2UgUG9zaXRpb24ge1xuICAgIC8qKiBUaGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgd2luZG93LiAqL1xuICAgIHg6IG51bWJlcjtcbiAgICAvKiogVGhlIHZlcnRpY2FsIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuICovXG4gICAgeTogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgcmVjb3JkIGRlc2NyaWJpbmcgdGhlIHNpemUgb2YgYSB3aW5kb3cuXG4gKi9cbmludGVyZmFjZSBTaXplIHtcbiAgICAvKiogVGhlIHdpZHRoIG9mIHRoZSB3aW5kb3cuICovXG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICAvKiogVGhlIGhlaWdodCBvZiB0aGUgd2luZG93LiAqL1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuXG4vLyBQcml2YXRlIGZpZWxkIG5hbWVzLlxuY29uc3QgY2FsbGVyU3ltID0gU3ltYm9sKFwiY2FsbGVyXCIpO1xuXG5jbGFzcyBXaW5kb3cge1xuICAgIC8vIFByaXZhdGUgZmllbGRzLlxuICAgIHByaXZhdGUgW2NhbGxlclN5bV06IChtZXNzYWdlOiBudW1iZXIsIGFyZ3M/OiBhbnkpID0+IFByb21pc2U8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpc2VzIGEgd2luZG93IG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFyZ2V0IHdpbmRvdy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcgPSAnJykge1xuICAgICAgICB0aGlzW2NhbGxlclN5bV0gPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLldpbmRvdywgbmFtZSlcblxuICAgICAgICAvLyBiaW5kIGluc3RhbmNlIG1ldGhvZCB0byBtYWtlIHRoZW0gZWFzaWx5IHVzYWJsZSBpbiBldmVudCBoYW5kbGVyc1xuICAgICAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhXaW5kb3cucHJvdG90eXBlKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG1ldGhvZCAhPT0gXCJjb25zdHJ1Y3RvclwiXG4gICAgICAgICAgICAgICAgJiYgdHlwZW9mICh0aGlzIGFzIGFueSlbbWV0aG9kXSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAodGhpcyBhcyBhbnkpW21ldGhvZF0gPSAodGhpcyBhcyBhbnkpW21ldGhvZF0uYmluZCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNwZWNpZmllZCB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3aW5kb3cgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIHdpbmRvdyBvYmplY3QuXG4gICAgICovXG4gICAgR2V0KG5hbWU6IHN0cmluZyk6IFdpbmRvdyB7XG4gICAgICAgIHJldHVybiBuZXcgV2luZG93KG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFBvc2l0aW9uKCk6IFByb21pc2U8UG9zaXRpb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShQb3NpdGlvbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2VudGVycyB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uXG4gICAgICovXG4gICAgQ2VudGVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKENlbnRlck1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgQ2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oQ2xvc2VNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc2FibGVzIG1pbi9tYXggc2l6ZSBjb25zdHJhaW50cy5cbiAgICAgKi9cbiAgICBEaXNhYmxlU2l6ZUNvbnN0cmFpbnRzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKERpc2FibGVTaXplQ29uc3RyYWludHNNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgbWluL21heCBzaXplIGNvbnN0cmFpbnRzLlxuICAgICAqL1xuICAgIEVuYWJsZVNpemVDb25zdHJhaW50cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShFbmFibGVTaXplQ29uc3RyYWludHNNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY3VzZXMgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBGb2N1cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShGb2N1c01ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9yY2VzIHRoZSB3aW5kb3cgdG8gcmVsb2FkIHRoZSBwYWdlIGFzc2V0cy5cbiAgICAgKi9cbiAgICBGb3JjZVJlbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShGb3JjZVJlbG9hZE1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3dpdGNoZXMgdGhlIHdpbmRvdyB0byBmdWxsc2NyZWVuIG1vZGUuXG4gICAgICovXG4gICAgRnVsbHNjcmVlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShGdWxsc2NyZWVuTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzY3JlZW4gdGhhdCB0aGUgd2luZG93IGlzIG9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHNjcmVlbiB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBvbi5cbiAgICAgKi9cbiAgICBHZXRTY3JlZW4oKTogUHJvbWlzZTxTY3JlZW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShHZXRTY3JlZW5NZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgem9vbSBsZXZlbCBvZiB0aGUgd2luZG93LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgem9vbSBsZXZlbC5cbiAgICAgKi9cbiAgICBHZXRab29tKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oR2V0Wm9vbU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBIZWlnaHQoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShIZWlnaHRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGVzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgSGlkZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShIaWRlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHdpbmRvdyBpcyBmb2N1c2VkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBmb2N1c2VkLlxuICAgICAqL1xuICAgIElzRm9jdXNlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShJc0ZvY3VzZWRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2luZG93IGlzIGZ1bGxzY3JlZW4uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB3aW5kb3cgaXMgY3VycmVudGx5IGZ1bGxzY3JlZW4uXG4gICAgICovXG4gICAgSXNGdWxsc2NyZWVuKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKElzRnVsbHNjcmVlbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB3aW5kb3cgaXMgbWF4aW1pc2VkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBtYXhpbWlzZWQuXG4gICAgICovXG4gICAgSXNNYXhpbWlzZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oSXNNYXhpbWlzZWRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2luZG93IGlzIG1pbmltaXNlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHdpbmRvdyBpcyBjdXJyZW50bHkgbWluaW1pc2VkLlxuICAgICAqL1xuICAgIElzTWluaW1pc2VkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKElzTWluaW1pc2VkTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYXhpbWlzZXMgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBNYXhpbWlzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShNYXhpbWlzZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWluaW1pc2VzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgTWluaW1pc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oTWluaW1pc2VNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgTmFtZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKE5hbWVNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBkZXZlbG9wbWVudCB0b29scyBwYW5lLlxuICAgICAqL1xuICAgIE9wZW5EZXZUb29scygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShPcGVuRGV2VG9vbHNNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgdG8gdGhlIHNjcmVlbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgUmVsYXRpdmVQb3NpdGlvbigpOiBQcm9taXNlPFBvc2l0aW9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oUmVsYXRpdmVQb3NpdGlvbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVsb2FkcyB0aGUgcGFnZSBhc3NldHMuXG4gICAgICovXG4gICAgUmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFJlbG9hZE1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB3aW5kb3cgaXMgcmVzaXphYmxlLlxuICAgICAqXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgd2luZG93IGlzIGN1cnJlbnRseSByZXNpemFibGUuXG4gICAgICovXG4gICAgUmVzaXphYmxlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFJlc2l6YWJsZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzdG9yZXMgdGhlIHdpbmRvdyB0byBpdHMgcHJldmlvdXMgc3RhdGUgaWYgaXQgd2FzIHByZXZpb3VzbHkgbWluaW1pc2VkLCBtYXhpbWlzZWQgb3IgZnVsbHNjcmVlbi5cbiAgICAgKi9cbiAgICBSZXN0b3JlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFJlc3RvcmVNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0geCAtIFRoZSBkZXNpcmVkIGhvcml6b250YWwgYWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdy5cbiAgICAgKiBAcGFyYW0geSAtIFRoZSBkZXNpcmVkIHZlcnRpY2FsIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgU2V0UG9zaXRpb24oeDogbnVtYmVyLCB5OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRQb3NpdGlvbk1ldGhvZCwgeyB4LCB5IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHdpbmRvdyB0byBiZSBhbHdheXMgb24gdG9wLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFsd2F5c09uVG9wIC0gV2hldGhlciB0aGUgd2luZG93IHNob3VsZCBzdGF5IG9uIHRvcC5cbiAgICAgKi9cbiAgICBTZXRBbHdheXNPblRvcChhbHdheXNPblRvcDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldEFsd2F5c09uVG9wTWV0aG9kLCB7IGFsd2F5c09uVG9wIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJhY2tncm91bmQgY29sb3VyIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gciAtIFRoZSBkZXNpcmVkIHJlZCBjb21wb25lbnQgb2YgdGhlIHdpbmRvdyBiYWNrZ3JvdW5kLlxuICAgICAqIEBwYXJhbSBnIC0gVGhlIGRlc2lyZWQgZ3JlZW4gY29tcG9uZW50IG9mIHRoZSB3aW5kb3cgYmFja2dyb3VuZC5cbiAgICAgKiBAcGFyYW0gYiAtIFRoZSBkZXNpcmVkIGJsdWUgY29tcG9uZW50IG9mIHRoZSB3aW5kb3cgYmFja2dyb3VuZC5cbiAgICAgKiBAcGFyYW0gYSAtIFRoZSBkZXNpcmVkIGFscGhhIGNvbXBvbmVudCBvZiB0aGUgd2luZG93IGJhY2tncm91bmQuXG4gICAgICovXG4gICAgU2V0QmFja2dyb3VuZENvbG91cihyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyLCBhOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRCYWNrZ3JvdW5kQ29sb3VyTWV0aG9kLCB7IHIsIGcsIGIsIGEgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgd2luZG93IGZyYW1lIGFuZCB0aXRsZSBiYXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZnJhbWVsZXNzIC0gV2hldGhlciB0aGUgd2luZG93IHNob3VsZCBiZSBmcmFtZWxlc3MuXG4gICAgICovXG4gICAgU2V0RnJhbWVsZXNzKGZyYW1lbGVzczogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldEZyYW1lbGVzc01ldGhvZCwgeyBmcmFtZWxlc3MgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgdGhlIHN5c3RlbSBmdWxsc2NyZWVuIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbmFibGVkIC0gV2hldGhlciB0aGUgZnVsbHNjcmVlbiBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWQuXG4gICAgICovXG4gICAgU2V0RnVsbHNjcmVlbkJ1dHRvbkVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldEZ1bGxzY3JlZW5CdXR0b25FbmFibGVkTWV0aG9kLCB7IGVuYWJsZWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gd2lkdGggLSBUaGUgZGVzaXJlZCBtYXhpbXVtIHdpZHRoIG9mIHRoZSB3aW5kb3cuXG4gICAgICogQHBhcmFtIGhlaWdodCAtIFRoZSBkZXNpcmVkIG1heGltdW0gaGVpZ2h0IG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgU2V0TWF4U2l6ZSh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldE1heFNpemVNZXRob2QsIHsgd2lkdGgsIGhlaWdodCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBtaW5pbXVtIHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB3aWR0aCAtIFRoZSBkZXNpcmVkIG1pbmltdW0gd2lkdGggb2YgdGhlIHdpbmRvdy5cbiAgICAgKiBAcGFyYW0gaGVpZ2h0IC0gVGhlIGRlc2lyZWQgbWluaW11bSBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRNaW5TaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0TWluU2l6ZU1ldGhvZCwgeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgdG8gdGhlIHNjcmVlbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB4IC0gVGhlIGRlc2lyZWQgaG9yaXpvbnRhbCByZWxhdGl2ZSBwb3NpdGlvbiBvZiB0aGUgd2luZG93LlxuICAgICAqIEBwYXJhbSB5IC0gVGhlIGRlc2lyZWQgdmVydGljYWwgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRSZWxhdGl2ZVBvc2l0aW9uKHg6IG51bWJlciwgeTogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0UmVsYXRpdmVQb3NpdGlvbk1ldGhvZCwgeyB4LCB5IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgd2hldGhlciB0aGUgd2luZG93IGlzIHJlc2l6YWJsZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXNpemFibGUgLSBXaGV0aGVyIHRoZSB3aW5kb3cgc2hvdWxkIGJlIHJlc2l6YWJsZS5cbiAgICAgKi9cbiAgICBTZXRSZXNpemFibGUocmVzaXphYmxlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0UmVzaXphYmxlTWV0aG9kLCB7IHJlc2l6YWJsZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzaXplIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gd2lkdGggLSBUaGUgZGVzaXJlZCB3aWR0aCBvZiB0aGUgd2luZG93LlxuICAgICAqIEBwYXJhbSBoZWlnaHQgLSBUaGUgZGVzaXJlZCBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRTaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0U2l6ZU1ldGhvZCwgeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRpdGxlIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGl0bGUgLSBUaGUgZGVzaXJlZCB0aXRsZSBvZiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFNldFRpdGxlKHRpdGxlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRUaXRsZU1ldGhvZCwgeyB0aXRsZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB6b29tIGxldmVsIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gem9vbSAtIFRoZSBkZXNpcmVkIHpvb20gbGV2ZWwuXG4gICAgICovXG4gICAgU2V0Wm9vbSh6b29tOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRab29tTWV0aG9kLCB7IHpvb20gfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvd3MgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTaG93KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNob3dNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTaXplKCk6IFByb21pc2U8U2l6ZT4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNpemVNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIHdpbmRvdyBiZXR3ZWVuIGZ1bGxzY3JlZW4gYW5kIG5vcm1hbC5cbiAgICAgKi9cbiAgICBUb2dnbGVGdWxsc2NyZWVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFRvZ2dsZUZ1bGxzY3JlZW5NZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIHdpbmRvdyBiZXR3ZWVuIG1heGltaXNlZCBhbmQgbm9ybWFsLlxuICAgICAqL1xuICAgIFRvZ2dsZU1heGltaXNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFRvZ2dsZU1heGltaXNlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIHRoZSB3aW5kb3cgYmV0d2VlbiBmcmFtZWxlc3MgYW5kIG5vcm1hbC5cbiAgICAgKi9cbiAgICBUb2dnbGVGcmFtZWxlc3MoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oVG9nZ2xlRnJhbWVsZXNzTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbi1mdWxsc2NyZWVucyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFVuRnVsbHNjcmVlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShVbkZ1bGxzY3JlZW5NZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVuLW1heGltaXNlcyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFVuTWF4aW1pc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oVW5NYXhpbWlzZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVW4tbWluaW1pc2VzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgVW5NaW5pbWlzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShVbk1pbmltaXNlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB3aWR0aCBvZiB0aGUgd2luZG93LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgd2lkdGggb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBXaWR0aCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFdpZHRoTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBab29tcyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFpvb20oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oWm9vbU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5jcmVhc2VzIHRoZSB6b29tIGxldmVsIG9mIHRoZSB3ZWJ2aWV3IGNvbnRlbnQuXG4gICAgICovXG4gICAgWm9vbUluKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFpvb21Jbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVjcmVhc2VzIHRoZSB6b29tIGxldmVsIG9mIHRoZSB3ZWJ2aWV3IGNvbnRlbnQuXG4gICAgICovXG4gICAgWm9vbU91dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShab29tT3V0TWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldHMgdGhlIHpvb20gbGV2ZWwgb2YgdGhlIHdlYnZpZXcgY29udGVudC5cbiAgICAgKi9cbiAgICBab29tUmVzZXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oWm9vbVJlc2V0TWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGZpbGUgZHJvcHMgb3JpZ2luYXRpbmcgZnJvbSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIChlLmcuLCBtYWNPUy9MaW51eCBuYXRpdmUgZHJhZy1hbmQtZHJvcCkuXG4gICAgICogR2F0aGVycyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZHJvcCB0YXJnZXQgZWxlbWVudCBhbmQgc2VuZHMgaXQgYmFjayB0byB0aGUgR28gYmFja2VuZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlbmFtZXMgLSBBbiBhcnJheSBvZiBmaWxlIHBhdGhzIChzdHJpbmdzKSB0aGF0IHdlcmUgZHJvcHBlZC5cbiAgICAgKiBAcGFyYW0geCAtIFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIGRyb3AgZXZlbnQsIGluIGxvZ2ljYWwgKENTUykgcGl4ZWxzIHJlbGF0aXZlIHRvIHRoZSB3ZWJ2aWV3LlxuICAgICAqIEBwYXJhbSB5IC0gVGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgZHJvcCBldmVudCwgaW4gbG9naWNhbCAoQ1NTKSBwaXhlbHMgcmVsYXRpdmUgdG8gdGhlIHdlYnZpZXcuXG4gICAgICovXG4gICAgSGFuZGxlUGxhdGZvcm1GaWxlRHJvcChmaWxlbmFtZXM6IHN0cmluZ1tdLCB4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBDaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBpZ25vcmUgdGhlIGRyb3BcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7XG4gICAgICAgIGNvbnN0IGRyb3BUYXJnZXQgPSBnZXREcm9wVGFyZ2V0RWxlbWVudChlbGVtZW50KTtcblxuICAgICAgICBpZiAoIWRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIC8vIERyb3Agd2FzIG5vdCBvbiBhIGRlc2lnbmF0ZWQgZHJvcCB0YXJnZXQgLSBpZ25vcmVcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnREZXRhaWxzID0ge1xuICAgICAgICAgICAgaWQ6IGRyb3BUYXJnZXQuaWQsXG4gICAgICAgICAgICBjbGFzc0xpc3Q6IEFycmF5LmZyb20oZHJvcFRhcmdldC5jbGFzc0xpc3QpLFxuICAgICAgICAgICAgYXR0cmlidXRlczoge30gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkcm9wVGFyZ2V0LmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBkcm9wVGFyZ2V0LmF0dHJpYnV0ZXNbaV07XG4gICAgICAgICAgICBlbGVtZW50RGV0YWlscy5hdHRyaWJ1dGVzW2F0dHIubmFtZV0gPSBhdHRyLnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgICAgIGZpbGVuYW1lcyxcbiAgICAgICAgICAgIHgsXG4gICAgICAgICAgICB5LFxuICAgICAgICAgICAgZWxlbWVudERldGFpbHMsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpc1tjYWxsZXJTeW1dKEZpbGVzRHJvcHBlZCwgcGF5bG9hZCk7XG4gICAgICAgIFxuICAgICAgICAvLyBDbGVhbiB1cCBuYXRpdmUgZHJhZyBzdGF0ZSBhZnRlciBkcm9wXG4gICAgICAgIGNsZWFudXBOYXRpdmVEcmFnKCk7XG4gICAgfVxuICBcbiAgICAvKipcbiAgICAgKiBNb3ZlcyB0aGUgd2luZG93IHRvIHRoZSBjZW50ZXIgb2YgdGhlIHNwZWNpZmllZCBzY3JlZW4ncyB3b3JrIGFyZWEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NyZWVuSUQgLSBUaGUgSUQgb2YgdGhlIHRhcmdldCBzY3JlZW4uXG4gICAgICovXG4gICAgU2V0U2NyZWVuKHNjcmVlbklEOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRTY3JlZW5NZXRob2QsIHsgc2NyZWVuSUQgfSk7XG4gICAgfVxuXG4gICAgLyogVHJpZ2dlcnMgV2luZG93cyAxMSBTbmFwIEFzc2lzdCBmZWF0dXJlIChXaW5kb3dzIG9ubHkpLlxuICAgICAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byBwcmVzc2luZyBXaW4rWiBhbmQgc2hvd3Mgc25hcCBsYXlvdXQgb3B0aW9ucy5cbiAgICAgKi9cbiAgICBTbmFwQXNzaXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNuYXBBc3Npc3RNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBwcmludCBkaWFsb2cgZm9yIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgUHJpbnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oUHJpbnRNZXRob2QpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgd2luZG93IHdpdGhpbiB3aGljaCB0aGUgc2NyaXB0IGlzIHJ1bm5pbmcuXG4gKi9cbmNvbnN0IHRoaXNXaW5kb3cgPSBuZXcgV2luZG93KCcnKTtcblxuLyoqXG4gKiBTZXRzIHVwIGdsb2JhbCBkcmFnIGFuZCBkcm9wIGV2ZW50IGxpc3RlbmVycyBmb3IgZmlsZSBkcm9wcy5cbiAqIEhhbmRsZXMgdmlzdWFsIGZlZWRiYWNrIChob3ZlciBzdGF0ZSkgYW5kIGZpbGUgZHJvcCBwcm9jZXNzaW5nLlxuICovXG5mdW5jdGlvbiBzZXR1cERyb3BUYXJnZXRMaXN0ZW5lcnMoKSB7XG4gICAgY29uc3QgZG9jRWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBsZXQgZHJhZ0VudGVyQ291bnRlciA9IDA7XG5cbiAgICBkb2NFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoIWV2ZW50LmRhdGFUcmFuc2Zlcj8udHlwZXMuaW5jbHVkZXMoJ0ZpbGVzJykpIHtcbiAgICAgICAgICAgIHJldHVybjsgLy8gT25seSBoYW5kbGUgZmlsZSBkcmFncywgbGV0IG90aGVyIGRyYWdzIHBhc3MgdGhyb3VnaFxuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIEFsd2F5cyBwcmV2ZW50IGRlZmF1bHQgdG8gc3RvcCBicm93c2VyIG5hdmlnYXRpb25cbiAgICAgICAgLy8gT24gV2luZG93cywgY2hlY2sgaWYgZmlsZSBkcm9wcyBhcmUgZW5hYmxlZCBmb3IgdGhpcyB3aW5kb3dcbiAgICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ25vbmUnOyAvLyBTaG93IFwibm8gZHJvcFwiIGN1cnNvclxuICAgICAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBkb24ndCBzaG93IGhvdmVyIGVmZmVjdHNcbiAgICAgICAgfVxuICAgICAgICBkcmFnRW50ZXJDb3VudGVyKys7XG4gICAgICAgIFxuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKTtcbiAgICAgICAgY29uc3QgZHJvcFRhcmdldCA9IGdldERyb3BUYXJnZXRFbGVtZW50KHRhcmdldEVsZW1lbnQpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBob3ZlciBzdGF0ZVxuICAgICAgICBpZiAoY3VycmVudERyb3BUYXJnZXQgJiYgY3VycmVudERyb3BUYXJnZXQgIT09IGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICBkcm9wVGFyZ2V0LmNsYXNzTGlzdC5hZGQoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ2NvcHknO1xuICAgICAgICAgICAgY3VycmVudERyb3BUYXJnZXQgPSBkcm9wVGFyZ2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbm9uZSc7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9LCBmYWxzZSk7XG5cbiAgICBkb2NFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBPbmx5IGhhbmRsZSBmaWxlIGRyYWdzXG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gQWx3YXlzIHByZXZlbnQgZGVmYXVsdCB0byBzdG9wIGJyb3dzZXIgbmF2aWdhdGlvblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBjaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbm9uZSc7IC8vIFNob3cgXCJubyBkcm9wXCIgY3Vyc29yXG4gICAgICAgICAgICByZXR1cm47IC8vIEZpbGUgZHJvcHMgZGlzYWJsZWQsIGRvbid0IHNob3cgaG92ZXIgZWZmZWN0c1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgZHJvcCB0YXJnZXQgYXMgY3Vyc29yIG1vdmVzXG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xuICAgICAgICBjb25zdCBkcm9wVGFyZ2V0ID0gZ2V0RHJvcFRhcmdldEVsZW1lbnQodGFyZ2V0RWxlbWVudCk7XG4gICAgICAgIFxuICAgICAgICBpZiAoY3VycmVudERyb3BUYXJnZXQgJiYgY3VycmVudERyb3BUYXJnZXQgIT09IGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGlmICghZHJvcFRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKSkge1xuICAgICAgICAgICAgICAgIGRyb3BUYXJnZXQuY2xhc3NMaXN0LmFkZChEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSc7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IGRyb3BUYXJnZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sIGZhbHNlKTtcblxuICAgIGRvY0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIEFsd2F5cyBwcmV2ZW50IGRlZmF1bHQgdG8gc3RvcCBicm93c2VyIG5hdmlnYXRpb25cbiAgICAgICAgLy8gT24gV2luZG93cywgY2hlY2sgaWYgZmlsZSBkcm9wcyBhcmUgZW5hYmxlZCBmb3IgdGhpcyB3aW5kb3dcbiAgICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gT24gTGludXgvV2ViS2l0R1RLIGFuZCBtYWNPUywgZHJhZ2xlYXZlIGZpcmVzIGltbWVkaWF0ZWx5IHdpdGggcmVsYXRlZFRhcmdldD1udWxsIHdoZW4gbmF0aXZlXG4gICAgICAgIC8vIGRyYWcgaGFuZGxpbmcgaXMgaW52b2x2ZWQuIElnbm9yZSB0aGVzZSBzcHVyaW91cyBldmVudHMgLSB3ZSdsbCBjbGVhbiB1cCBvbiBkcm9wIGluc3RlYWQuXG4gICAgICAgIGlmIChldmVudC5yZWxhdGVkVGFyZ2V0ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGRyYWdFbnRlckNvdW50ZXItLTtcbiAgICAgICAgXG4gICAgICAgIGlmIChkcmFnRW50ZXJDb3VudGVyID09PSAwIHx8IFxuICAgICAgICAgICAgKGN1cnJlbnREcm9wVGFyZ2V0ICYmICFjdXJyZW50RHJvcFRhcmdldC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpKSkge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnREcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgY3VycmVudERyb3BUYXJnZXQuY2xhc3NMaXN0LnJlbW92ZShEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRyYWdFbnRlckNvdW50ZXIgPSAwO1xuICAgICAgICB9XG4gICAgfSwgZmFsc2UpO1xuXG4gICAgZG9jRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBPbmx5IGhhbmRsZSBmaWxlIGRyb3BzXG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gQWx3YXlzIHByZXZlbnQgZGVmYXVsdCB0byBzdG9wIGJyb3dzZXIgbmF2aWdhdGlvblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBjaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRyYWdFbnRlckNvdW50ZXIgPSAwO1xuICAgICAgICBcbiAgICAgICAgaWYgKGN1cnJlbnREcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBoYW5kbGUgZmlsZSBkcm9wcyB2aWEgSmF2YVNjcmlwdFxuICAgICAgICAvLyBPbiBtYWNPUy9MaW51eCwgbmF0aXZlIGNvZGUgd2lsbCBjYWxsIEhhbmRsZVBsYXRmb3JtRmlsZURyb3BcbiAgICAgICAgaWYgKGNhblJlc29sdmVGaWxlUGF0aHMoKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZXM6IEZpbGVbXSA9IFtdO1xuICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ua2luZCA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gaXRlbS5nZXRBc0ZpbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlKSBmaWxlcy5wdXNoKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzLnB1c2goZmlsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmVGaWxlUGF0aHMoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSwgZmlsZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgZmFsc2UpO1xufVxuXG4vLyBJbml0aWFsaXplIGxpc3RlbmVycyB3aGVuIHRoZSBzY3JpcHQgbG9hZHNcbmlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHNldHVwRHJvcFRhcmdldExpc3RlbmVycygpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0aGlzV2luZG93O1xuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgKiBhcyBSdW50aW1lIGZyb20gXCIuLi9Ad2FpbHNpby9ydW50aW1lL3NyY1wiO1xuXG4vLyBOT1RFOiB0aGUgZm9sbG93aW5nIG1ldGhvZHMgTVVTVCBiZSBpbXBvcnRlZCBleHBsaWNpdGx5IGJlY2F1c2Ugb2YgaG93IGVzYnVpbGQgaW5qZWN0aW9uIHdvcmtzXG5pbXBvcnQgeyBFbmFibGUgYXMgRW5hYmxlV01MIH0gZnJvbSBcIi4uL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3dtbFwiO1xuaW1wb3J0IHsgZGVidWdMb2cgfSBmcm9tIFwiLi4vQHdhaWxzaW8vcnVudGltZS9zcmMvdXRpbHNcIjtcblxud2luZG93LndhaWxzID0gUnVudGltZTtcbkVuYWJsZVdNTCgpO1xuXG5pZiAoREVCVUcpIHtcbiAgICBkZWJ1Z0xvZyhcIldhaWxzIFJ1bnRpbWUgTG9hZGVkXCIpXG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5TeXN0ZW0pO1xuXG5jb25zdCBTeXN0ZW1Jc0RhcmtNb2RlID0gMDtcbmNvbnN0IFN5c3RlbUVudmlyb25tZW50ID0gMTtcbmNvbnN0IFN5c3RlbUNhcGFiaWxpdGllcyA9IDI7XG5cbmNvbnN0IF9pbnZva2UgPSAoZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIFdpbmRvd3MgV2ViVmlldzJcbiAgICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5jaHJvbWU/LndlYnZpZXc/LnBvc3RNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLmNocm9tZS53ZWJ2aWV3LnBvc3RNZXNzYWdlLmJpbmQoKHdpbmRvdyBhcyBhbnkpLmNocm9tZS53ZWJ2aWV3KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBtYWNPUy9pT1MgV0tXZWJWaWV3XG4gICAgICAgIGVsc2UgaWYgKCh3aW5kb3cgYXMgYW55KS53ZWJraXQ/Lm1lc3NhZ2VIYW5kbGVycz8uWydleHRlcm5hbCddPy5wb3N0TWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS53ZWJraXQubWVzc2FnZUhhbmRsZXJzWydleHRlcm5hbCddLnBvc3RNZXNzYWdlLmJpbmQoKHdpbmRvdyBhcyBhbnkpLndlYmtpdC5tZXNzYWdlSGFuZGxlcnNbJ2V4dGVybmFsJ10pO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFuZHJvaWQgV2ViVmlldyAtIHVzZXMgYWRkSmF2YXNjcmlwdEludGVyZmFjZSB3aGljaCBleHBvc2VzIHdpbmRvdy53YWlscy5pbnZva2VcbiAgICAgICAgZWxzZSBpZiAoKHdpbmRvdyBhcyBhbnkpLndhaWxzPy5pbnZva2UpIHtcbiAgICAgICAgICAgIHJldHVybiAobXNnOiBhbnkpID0+ICh3aW5kb3cgYXMgYW55KS53YWlscy5pbnZva2UodHlwZW9mIG1zZyA9PT0gJ3N0cmluZycgPyBtc2cgOiBKU09OLnN0cmluZ2lmeShtc2cpKTtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2goZSkge31cblxuICAgIGNvbnNvbGUud2FybignXFxuJWNcdTI2QTBcdUZFMEYgQnJvd3NlciBFbnZpcm9ubWVudCBEZXRlY3RlZCAlY1xcblxcbiVjT25seSBVSSBwcmV2aWV3cyBhcmUgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyLiBGb3IgZnVsbCBmdW5jdGlvbmFsaXR5LCBwbGVhc2UgcnVuIHRoZSBhcHBsaWNhdGlvbiBpbiBkZXNrdG9wIG1vZGUuXFxuTW9yZSBpbmZvcm1hdGlvbiBhdDogaHR0cHM6Ly92My53YWlscy5pby9sZWFybi9idWlsZC8jdXNpbmctYS1icm93c2VyLWZvci1kZXZlbG9wbWVudFxcbicsXG4gICAgICAgICdiYWNrZ3JvdW5kOiAjZmZmZmZmOyBjb2xvcjogIzAwMDAwMDsgZm9udC13ZWlnaHQ6IGJvbGQ7IHBhZGRpbmc6IDRweCA4cHg7IGJvcmRlci1yYWRpdXM6IDRweDsgYm9yZGVyOiAycHggc29saWQgIzAwMDAwMDsnLFxuICAgICAgICAnYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7JyxcbiAgICAgICAgJ2NvbG9yOiAjZmZmZmZmOyBmb250LXN0eWxlOiBpdGFsaWM7IGZvbnQtd2VpZ2h0OiBib2xkOycpO1xuICAgIHJldHVybiBudWxsO1xufSkoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZShtc2c6IGFueSk6IHZvaWQge1xuICAgIF9pbnZva2U/Lihtc2cpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgc3lzdGVtIGRhcmsgbW9kZSBzdGF0dXMuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgaWYgdGhlIHN5c3RlbSBpcyBpbiBkYXJrIG1vZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc0RhcmtNb2RlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBjYWxsKFN5c3RlbUlzRGFya01vZGUpO1xufVxuXG4vKipcbiAqIEZldGNoZXMgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgYXBwbGljYXRpb24gZnJvbSB0aGUgc2VydmVyLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBjYXBhYmlsaXRpZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBDYXBhYmlsaXRpZXMoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgcmV0dXJuIGNhbGwoU3lzdGVtQ2FwYWJpbGl0aWVzKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPU0luZm8ge1xuICAgIC8qKiBUaGUgYnJhbmRpbmcgb2YgdGhlIE9TLiAqL1xuICAgIEJyYW5kaW5nOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBJRCBvZiB0aGUgT1MuICovXG4gICAgSUQ6IHN0cmluZztcbiAgICAvKiogVGhlIG5hbWUgb2YgdGhlIE9TLiAqL1xuICAgIE5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIHZlcnNpb24gb2YgdGhlIE9TLiAqL1xuICAgIFZlcnNpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudEluZm8ge1xuICAgIC8qKiBUaGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBzeXN0ZW0uICovXG4gICAgQXJjaDogc3RyaW5nO1xuICAgIC8qKiBUcnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nIGluIGRlYnVnIG1vZGUsIG90aGVyd2lzZSBmYWxzZS4gKi9cbiAgICBEZWJ1ZzogYm9vbGVhbjtcbiAgICAvKiogVGhlIG9wZXJhdGluZyBzeXN0ZW0gaW4gdXNlLiAqL1xuICAgIE9TOiBzdHJpbmc7XG4gICAgLyoqIERldGFpbHMgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICovXG4gICAgT1NJbmZvOiBPU0luZm87XG4gICAgLyoqIEFkZGl0aW9uYWwgcGxhdGZvcm0gaW5mb3JtYXRpb24uICovXG4gICAgUGxhdGZvcm1JbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBlbnZpcm9ubWVudCBkZXRhaWxzLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9iamVjdCBjb250YWluaW5nIE9TIGFuZCBzeXN0ZW0gYXJjaGl0ZWN0dXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRW52aXJvbm1lbnQoKTogUHJvbWlzZTxFbnZpcm9ubWVudEluZm8+IHtcbiAgICByZXR1cm4gY2FsbChTeXN0ZW1FbnZpcm9ubWVudCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0gaXMgV2luZG93cy5cbiAqXG4gKiBAcmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaXMgV2luZG93cywgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNXaW5kb3dzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1MgPT09IFwid2luZG93c1wiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtIGlzIExpbnV4LlxuICpcbiAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtIGlzIExpbnV4LCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc0xpbnV4KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1MgPT09IFwibGludXhcIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgYSBtYWNPUyBvcGVyYXRpbmcgc3lzdGVtLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGVudmlyb25tZW50IGlzIG1hY09TLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc01hYygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZW52aXJvbm1lbnQ/Lk9TID09PSBcImRhcndpblwiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtIGlzIGlPUy5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGlzIGlPUywgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNJT1MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmVudmlyb25tZW50Py5PUyA9PT0gXCJpb3NcIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbSBpcyBBbmRyb2lkLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaXMgQW5kcm9pZCwgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNBbmRyb2lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1MgPT09IFwiYW5kcm9pZFwiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgYXBwIGlzIHJ1bm5pbmcgb24gYSBtb2JpbGUgT1MgKGlPUyBvciBBbmRyb2lkKS5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIG9uIGlPUyBvciBBbmRyb2lkLCBvdGhlcndpc2UgZmFsc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gSXNJT1MoKSB8fCBJc0FuZHJvaWQoKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGFwcCBpcyBydW5uaW5nIG9uIGEgZGVza3RvcCBPUyAobWFjT1MsIFdpbmRvd3Mgb3IgTGludXgpLlxuICpcbiAqIEByZXR1cm5zIFRydWUgb24gbWFjT1MsIFdpbmRvd3Mgb3IgTGludXgsIG90aGVyd2lzZSBmYWxzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzRGVza3RvcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gSXNNYWMoKSB8fCBJc1dpbmRvd3MoKSB8fCBJc0xpbnV4KCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGFyY2hpdGVjdHVyZSBpcyBBTUQ2NC5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGFyY2hpdGVjdHVyZSBpcyBBTUQ2NCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNBTUQ2NCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZW52aXJvbm1lbnQ/LkFyY2ggPT09IFwiYW1kNjRcIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgYXJjaGl0ZWN0dXJlIGlzIEFSTS5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjdXJyZW50IGFyY2hpdGVjdHVyZSBpcyBBUk0sIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzQVJNKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uQXJjaCA9PT0gXCJhcm1cIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgQVJNNjQgYXJjaGl0ZWN0dXJlLlxuICpcbiAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgZW52aXJvbm1lbnQgaXMgQVJNNjQgYXJjaGl0ZWN0dXJlLCBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzQVJNNjQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmVudmlyb25tZW50Py5BcmNoID09PSBcImFybTY0XCI7XG59XG5cbi8qKlxuICogUmVwb3J0cyB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgcnVuIGluIGRlYnVnIG1vZGUuXG4gKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgYXBwIGlzIGJlaW5nIHJ1biBpbiBkZWJ1ZyBtb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNEZWJ1ZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbigod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uRGVidWcpO1xufVxuXG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuaW1wb3J0IHsgSXNEZWJ1ZyB9IGZyb20gXCIuL3N5c3RlbS5qc1wiO1xuaW1wb3J0IHsgZXZlbnRUYXJnZXQgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG4vLyBzZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIGNvbnRleHRNZW51SGFuZGxlcik7XG59XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkNvbnRleHRNZW51KTtcblxuY29uc3QgQ29udGV4dE1lbnVPcGVuID0gMDtcblxuZnVuY3Rpb24gb3BlbkNvbnRleHRNZW51KGlkOiBzdHJpbmcsIHg6IG51bWJlciwgeTogbnVtYmVyLCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB2b2lkIGNhbGwoQ29udGV4dE1lbnVPcGVuLCB7aWQsIHgsIHksIGRhdGF9KTtcbn1cblxuZnVuY3Rpb24gY29udGV4dE1lbnVIYW5kbGVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnRUYXJnZXQoZXZlbnQpO1xuXG4gICAgLy8gQ2hlY2sgZm9yIGN1c3RvbSBjb250ZXh0IG1lbnVcbiAgICBjb25zdCBjdXN0b21Db250ZXh0TWVudSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRhcmdldCkuZ2V0UHJvcGVydHlWYWx1ZShcIi0tY3VzdG9tLWNvbnRleHRtZW51XCIpLnRyaW0oKTtcblxuICAgIGlmIChjdXN0b21Db250ZXh0TWVudSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBkYXRhID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1jdXN0b20tY29udGV4dG1lbnUtZGF0YVwiKTtcbiAgICAgICAgb3BlbkNvbnRleHRNZW51KGN1c3RvbUNvbnRleHRNZW51LCBldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZLCBkYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzRGVmYXVsdENvbnRleHRNZW51KGV2ZW50LCB0YXJnZXQpO1xuICAgIH1cbn1cblxuXG4vKlxuLS1kZWZhdWx0LWNvbnRleHRtZW51OiBhdXRvOyAoZGVmYXVsdCkgd2lsbCBzaG93IHRoZSBkZWZhdWx0IGNvbnRleHQgbWVudSBpZiBjb250ZW50RWRpdGFibGUgaXMgdHJ1ZSBPUiB0ZXh0IGhhcyBiZWVuIHNlbGVjdGVkIE9SIGVsZW1lbnQgaXMgaW5wdXQgb3IgdGV4dGFyZWFcbi0tZGVmYXVsdC1jb250ZXh0bWVudTogc2hvdzsgd2lsbCBhbHdheXMgc2hvdyB0aGUgZGVmYXVsdCBjb250ZXh0IG1lbnVcbi0tZGVmYXVsdC1jb250ZXh0bWVudTogaGlkZTsgd2lsbCBhbHdheXMgaGlkZSB0aGUgZGVmYXVsdCBjb250ZXh0IG1lbnVcblxuVGhpcyBydWxlIGlzIGluaGVyaXRlZCBsaWtlIG5vcm1hbCBDU1MgcnVsZXMsIHNvIG5lc3Rpbmcgd29ya3MgYXMgZXhwZWN0ZWRcbiovXG5mdW5jdGlvbiBwcm9jZXNzRGVmYXVsdENvbnRleHRNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCB0YXJnZXQ6IEhUTUxFbGVtZW50KSB7XG4gICAgLy8gRGVidWcgYnVpbGRzIGFsd2F5cyBzaG93IHRoZSBtZW51XG4gICAgaWYgKElzRGVidWcoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzcyBkZWZhdWx0IGNvbnRleHQgbWVudVxuICAgIHN3aXRjaCAod2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1kZWZhdWx0LWNvbnRleHRtZW51XCIpLnRyaW0oKSkge1xuICAgICAgICBjYXNlICdzaG93JzpcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAnaGlkZSc6XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGNvbnRlbnRFZGl0YWJsZSBpcyB0cnVlXG4gICAgaWYgKHRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdGV4dCBoYXMgYmVlbiBzZWxlY3RlZFxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBjb25zdCBoYXNTZWxlY3Rpb24gPSBzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnRvU3RyaW5nKCkubGVuZ3RoID4gMDtcbiAgICBpZiAoaGFzU2VsZWN0aW9uKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0aW9uLnJhbmdlQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdChpKTtcbiAgICAgICAgICAgIGNvbnN0IHJlY3RzID0gcmFuZ2UuZ2V0Q2xpZW50UmVjdHMoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcmVjdHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0gcmVjdHNbal07XG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQocmVjdC5sZWZ0LCByZWN0LnRvcCkgPT09IHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdGFnIGlzIGlucHV0IG9yIHRleHRhcmVhLlxuICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8IHRhcmdldCBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKGhhc1NlbGVjdGlvbiB8fCAoIXRhcmdldC5yZWFkT25seSAmJiAhdGFyZ2V0LmRpc2FibGVkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gaGlkZSBkZWZhdWx0IGNvbnRleHQgbWVudVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZnJvbSB0aGUgZmxhZyBtYXAuXG4gKlxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gcmV0cmlldmUgdGhlIHZhbHVlIGZvci5cbiAqIEByZXR1cm4gVGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldEZsYWcoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuX3dhaWxzLmZsYWdzW2tleV07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gcmV0cmlldmUgZmxhZyAnXCIgKyBrZXkgKyBcIic6IFwiICsgZSwgeyBjYXVzZTogZSB9KTtcbiAgICB9XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IGludm9rZSwgSXNXaW5kb3dzLCBJc0xpbnV4IH0gZnJvbSBcIi4vc3lzdGVtLmpzXCI7XG5pbXBvcnQgeyBHZXRGbGFnIH0gZnJvbSBcIi4vZmxhZ3MuanNcIjtcbmltcG9ydCB7IGNhblRyYWNrQnV0dG9ucywgZXZlbnRUYXJnZXQgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG4vLyBTZXR1cFxubGV0IGNhbkRyYWcgPSBmYWxzZTtcbmxldCBkcmFnZ2luZyA9IGZhbHNlO1xuXG5sZXQgcmVzaXphYmxlID0gZmFsc2U7XG5sZXQgY2FuUmVzaXplID0gZmFsc2U7XG5sZXQgcmVzaXppbmcgPSBmYWxzZTtcbmxldCByZXNpemVFZGdlOiBzdHJpbmcgPSBcIlwiO1xubGV0IGRlZmF1bHRDdXJzb3IgPSBcImF1dG9cIjtcblxubGV0IGJ1dHRvbnMgPSAwO1xuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxubGV0IGJ1dHRvbnNUcmFja2VkID0gZmFsc2U7XG5cbmlmIChoYXNET00pIHtcbiAgICBidXR0b25zVHJhY2tlZCA9IGNhblRyYWNrQnV0dG9ucygpO1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xuICAgIHdpbmRvdy5fd2FpbHMuc2V0UmVzaXphYmxlID0gKHZhbHVlOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIHJlc2l6YWJsZSA9IHZhbHVlO1xuICAgICAgICBpZiAoIXJlc2l6YWJsZSkge1xuICAgICAgICAgICAgLy8gU3RvcCByZXNpemluZyBpZiBpbiBwcm9ncmVzcy5cbiAgICAgICAgICAgIGNhblJlc2l6ZSA9IHJlc2l6aW5nID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRSZXNpemUoKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbi8vIERlZmVyIGF0dGFjaGluZyBtb3VzZSBsaXN0ZW5lcnMgdW50aWwgd2Uga25vdyB3ZSdyZSBub3Qgb24gbW9iaWxlLlxubGV0IGRyYWdJbml0RG9uZSA9IGZhbHNlO1xuZnVuY3Rpb24gaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgb3MgPSAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1M7XG4gICAgaWYgKG9zID09PSBcImlvc1wiIHx8IG9zID09PSBcImFuZHJvaWRcIikgcmV0dXJuIHRydWU7XG4gICAgLy8gRmFsbGJhY2sgaGV1cmlzdGljIGlmIGVudmlyb25tZW50IG5vdCB5ZXQgc2V0XG4gICAgY29uc3QgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50IHx8IG5hdmlnYXRvci52ZW5kb3IgfHwgKHdpbmRvdyBhcyBhbnkpLm9wZXJhIHx8IFwiXCI7XG4gICAgcmV0dXJuIC9hbmRyb2lkfGlwaG9uZXxpcGFkfGlwb2R8aWVtb2JpbGV8d3BkZXNrdG9wL2kudGVzdCh1YSk7XG59XG5mdW5jdGlvbiB0cnlJbml0RHJhZ0hhbmRsZXJzKCk6IHZvaWQge1xuICAgIGlmIChkcmFnSW5pdERvbmUpIHJldHVybjtcbiAgICBpZiAoaXNNb2JpbGUoKSkgcmV0dXJuO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB1cGRhdGUsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdXBkYXRlLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB1cGRhdGUsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICBmb3IgKGNvbnN0IGV2IG9mIFsnY2xpY2snLCAnY29udGV4dG1lbnUnLCAnZGJsY2xpY2snXSkge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihldiwgc3VwcHJlc3NFdmVudCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgIH1cbiAgICBkcmFnSW5pdERvbmUgPSB0cnVlO1xufVxuaWYgKGhhc0RPTSkge1xuICAgIC8vIEF0dGVtcHQgaW1tZWRpYXRlIGluaXQgKGluIGNhc2UgZW52aXJvbm1lbnQgYWxyZWFkeSBwcmVzZW50KVxuICAgIHRyeUluaXREcmFnSGFuZGxlcnMoKTtcbiAgICAvLyBBbHNvIGF0dGVtcHQgb24gRE9NIHJlYWR5XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIHRyeUluaXREcmFnSGFuZGxlcnMsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICAvLyBBcyBhIGxhc3QgcmVzb3J0LCBwb2xsIGZvciBlbnZpcm9ubWVudCBmb3IgYSBzaG9ydCBwZXJpb2RcbiAgICBsZXQgZHJhZ0VudlBvbGxzID0gMDtcbiAgICBjb25zdCBkcmFnRW52UG9sbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGlmIChkcmFnSW5pdERvbmUpIHsgd2luZG93LmNsZWFySW50ZXJ2YWwoZHJhZ0VudlBvbGwpOyByZXR1cm47IH1cbiAgICAgICAgdHJ5SW5pdERyYWdIYW5kbGVycygpO1xuICAgICAgICBpZiAoKytkcmFnRW52UG9sbHMgPiAxMDApIHsgd2luZG93LmNsZWFySW50ZXJ2YWwoZHJhZ0VudlBvbGwpOyB9XG4gICAgfSwgNTApO1xufVxuXG5mdW5jdGlvbiBzdXBwcmVzc0V2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIC8vIFN1cHByZXNzIGNsaWNrIGV2ZW50cyB3aGlsZSByZXNpemluZyBvciBkcmFnZ2luZy5cbiAgICBpZiAoZHJhZ2dpbmcgfHwgcmVzaXppbmcpIHtcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbn1cblxuLy8gVXNlIGNvbnN0YW50cyB0byBhdm9pZCBjb21wYXJpbmcgc3RyaW5ncyBtdWx0aXBsZSB0aW1lcy5cbmNvbnN0IE1vdXNlRG93biA9IDA7XG5jb25zdCBNb3VzZVVwICAgPSAxO1xuY29uc3QgTW91c2VNb3ZlID0gMjtcblxuZnVuY3Rpb24gdXBkYXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgLy8gV2luZG93cyBzdXBwcmVzc2VzIG1vdXNlIGV2ZW50cyBhdCB0aGUgZW5kIG9mIGRyYWdnaW5nIG9yIHJlc2l6aW5nLFxuICAgIC8vIHNvIHdlIG5lZWQgdG8gYmUgc21hcnQgYW5kIHN5bnRoZXNpemUgYnV0dG9uIGV2ZW50cy5cblxuICAgIGxldCBldmVudFR5cGU6IG51bWJlciwgZXZlbnRCdXR0b25zID0gZXZlbnQuYnV0dG9ucztcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnbW91c2Vkb3duJzpcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IE1vdXNlRG93bjtcbiAgICAgICAgICAgIGlmICghYnV0dG9uc1RyYWNrZWQpIHsgZXZlbnRCdXR0b25zID0gYnV0dG9ucyB8ICgxIDw8IGV2ZW50LmJ1dHRvbik7IH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtb3VzZXVwJzpcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IE1vdXNlVXA7XG4gICAgICAgICAgICBpZiAoIWJ1dHRvbnNUcmFja2VkKSB7IGV2ZW50QnV0dG9ucyA9IGJ1dHRvbnMgJiB+KDEgPDwgZXZlbnQuYnV0dG9uKTsgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBldmVudFR5cGUgPSBNb3VzZU1vdmU7XG4gICAgICAgICAgICBpZiAoIWJ1dHRvbnNUcmFja2VkKSB7IGV2ZW50QnV0dG9ucyA9IGJ1dHRvbnM7IH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxldCByZWxlYXNlZCA9IGJ1dHRvbnMgJiB+ZXZlbnRCdXR0b25zO1xuICAgIGxldCBwcmVzc2VkID0gZXZlbnRCdXR0b25zICYgfmJ1dHRvbnM7XG5cbiAgICBidXR0b25zID0gZXZlbnRCdXR0b25zO1xuXG4gICAgLy8gU3ludGhlc2l6ZSBhIHJlbGVhc2UtcHJlc3Mgc2VxdWVuY2UgaWYgd2UgZGV0ZWN0IGEgcHJlc3Mgb2YgYW4gYWxyZWFkeSBwcmVzc2VkIGJ1dHRvbi5cbiAgICBpZiAoZXZlbnRUeXBlID09PSBNb3VzZURvd24gJiYgIShwcmVzc2VkICYgZXZlbnQuYnV0dG9uKSkge1xuICAgICAgICByZWxlYXNlZCB8PSAoMSA8PCBldmVudC5idXR0b24pO1xuICAgICAgICBwcmVzc2VkIHw9ICgxIDw8IGV2ZW50LmJ1dHRvbik7XG4gICAgfVxuXG4gICAgLy8gU3VwcHJlc3MgYWxsIGJ1dHRvbiBldmVudHMgZHVyaW5nIGRyYWdnaW5nIGFuZCByZXNpemluZyxcbiAgICAvLyB1bmxlc3MgdGhpcyBpcyBhIG1vdXNldXAgZXZlbnQgdGhhdCBpcyBlbmRpbmcgYSBkcmFnIGFjdGlvbi5cbiAgICBpZiAoXG4gICAgICAgIGV2ZW50VHlwZSAhPT0gTW91c2VNb3ZlIC8vIEZhc3QgcGF0aCBmb3IgbW91c2Vtb3ZlXG4gICAgICAgICYmIHJlc2l6aW5nXG4gICAgICAgIHx8IChcbiAgICAgICAgICAgIGRyYWdnaW5nXG4gICAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAgICAgZXZlbnRUeXBlID09PSBNb3VzZURvd25cbiAgICAgICAgICAgICAgICB8fCBldmVudC5idXR0b24gIT09IDBcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICkge1xuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHJlbGVhc2VzXG4gICAgaWYgKHJlbGVhc2VkICYgMSkgeyBwcmltYXJ5VXAoZXZlbnQpOyB9XG4gICAgLy8gSGFuZGxlIHByZXNzZXNcbiAgICBpZiAocHJlc3NlZCAmIDEpIHsgcHJpbWFyeURvd24oZXZlbnQpOyB9XG5cbiAgICAvLyBIYW5kbGUgbW91c2Vtb3ZlXG4gICAgaWYgKGV2ZW50VHlwZSA9PT0gTW91c2VNb3ZlKSB7IG9uTW91c2VNb3ZlKGV2ZW50KTsgfTtcbn1cblxuZnVuY3Rpb24gcHJpbWFyeURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBSZXNldCByZWFkaW5lc3Mgc3RhdGUuXG4gICAgY2FuRHJhZyA9IGZhbHNlO1xuICAgIGNhblJlc2l6ZSA9IGZhbHNlO1xuXG4gICAgLy8gSWdub3JlIHJlcGVhdGVkIGNsaWNrcyBvbiBtYWNPUyBhbmQgTGludXguXG4gICAgaWYgKCFJc1dpbmRvd3MoKSkge1xuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21vdXNlZG93bicgJiYgZXZlbnQuYnV0dG9uID09PSAwICYmIGV2ZW50LmRldGFpbCAhPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc2l6ZUVkZ2UpIHtcbiAgICAgICAgLy8gUmVhZHkgdG8gcmVzaXplIGlmIHRoZSBwcmltYXJ5IGJ1dHRvbiB3YXMgcHJlc3NlZCBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gICAgICAgIGNhblJlc2l6ZSA9IHRydWU7XG4gICAgICAgIC8vIERvIG5vdCBzdGFydCBkcmFnIG9wZXJhdGlvbnMgd2hlbiBvbiByZXNpemUgZWRnZXMuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZXRyaWV2ZSB0YXJnZXQgZWxlbWVudFxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50VGFyZ2V0KGV2ZW50KTtcblxuICAgIC8vIFJlYWR5IHRvIGRyYWcgaWYgdGhlIHByaW1hcnkgYnV0dG9uIHdhcyBwcmVzc2VkIGZvciB0aGUgZmlyc3QgdGltZSBvbiBhIGRyYWdnYWJsZSBlbGVtZW50LlxuICAgIC8vIElnbm9yZSBjbGlja3Mgb24gdGhlIHNjcm9sbGJhci5cbiAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRhcmdldCk7XG4gICAgY2FuRHJhZyA9IChcbiAgICAgICAgc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcIi0td2FpbHMtZHJhZ2dhYmxlXCIpLnRyaW0oKSA9PT0gXCJkcmFnXCJcbiAgICAgICAgJiYgKFxuICAgICAgICAgICAgZXZlbnQub2Zmc2V0WCAtIHBhcnNlRmxvYXQoc3R5bGUucGFkZGluZ0xlZnQpIDwgdGFyZ2V0LmNsaWVudFdpZHRoXG4gICAgICAgICAgICAmJiBldmVudC5vZmZzZXRZIC0gcGFyc2VGbG9hdChzdHlsZS5wYWRkaW5nVG9wKSA8IHRhcmdldC5jbGllbnRIZWlnaHRcbiAgICAgICAgKVxuICAgICk7XG59XG5cbmZ1bmN0aW9uIHByaW1hcnlVcChldmVudDogTW91c2VFdmVudCkge1xuICAgIC8vIFN0b3AgZHJhZ2dpbmcgYW5kIHJlc2l6aW5nLlxuICAgIGNhbkRyYWcgPSBmYWxzZTtcbiAgICBkcmFnZ2luZyA9IGZhbHNlO1xuICAgIGNhblJlc2l6ZSA9IGZhbHNlO1xuICAgIHJlc2l6aW5nID0gZmFsc2U7XG59XG5cbmNvbnN0IGN1cnNvckZvckVkZ2UgPSBPYmplY3QuZnJlZXplKHtcbiAgICBcInNlLXJlc2l6ZVwiOiBcIm53c2UtcmVzaXplXCIsXG4gICAgXCJzdy1yZXNpemVcIjogXCJuZXN3LXJlc2l6ZVwiLFxuICAgIFwibnctcmVzaXplXCI6IFwibndzZS1yZXNpemVcIixcbiAgICBcIm5lLXJlc2l6ZVwiOiBcIm5lc3ctcmVzaXplXCIsXG4gICAgXCJ3LXJlc2l6ZVwiOiBcImV3LXJlc2l6ZVwiLFxuICAgIFwibi1yZXNpemVcIjogXCJucy1yZXNpemVcIixcbiAgICBcInMtcmVzaXplXCI6IFwibnMtcmVzaXplXCIsXG4gICAgXCJlLXJlc2l6ZVwiOiBcImV3LXJlc2l6ZVwiLFxufSlcblxuZnVuY3Rpb24gc2V0UmVzaXplKGVkZ2U/OiBrZXlvZiB0eXBlb2YgY3Vyc29yRm9yRWRnZSk6IHZvaWQge1xuICAgIGlmIChlZGdlKSB7XG4gICAgICAgIGlmICghcmVzaXplRWRnZSkgeyBkZWZhdWx0Q3Vyc29yID0gZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3I7IH1cbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSBjdXJzb3JGb3JFZGdlW2VkZ2VdO1xuICAgIH0gZWxzZSBpZiAoIWVkZ2UgJiYgcmVzaXplRWRnZSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IGRlZmF1bHRDdXJzb3I7XG4gICAgfVxuXG4gICAgcmVzaXplRWRnZSA9IGVkZ2UgfHwgXCJcIjtcbn1cblxuZnVuY3Rpb24gb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoY2FuUmVzaXplICYmIHJlc2l6ZUVkZ2UpIHtcbiAgICAgICAgLy8gU3RhcnQgcmVzaXppbmcuXG4gICAgICAgIHJlc2l6aW5nID0gdHJ1ZTtcbiAgICAgICAgaW52b2tlKFwid2FpbHM6cmVzaXplOlwiICsgcmVzaXplRWRnZSk7XG4gICAgfSBlbHNlIGlmIChjYW5EcmFnKSB7XG4gICAgICAgIC8vIFN0YXJ0IGRyYWdnaW5nLlxuICAgICAgICBkcmFnZ2luZyA9IHRydWU7XG4gICAgICAgIGludm9rZShcIndhaWxzOmRyYWdcIik7XG4gICAgfVxuXG4gICAgaWYgKGRyYWdnaW5nIHx8IHJlc2l6aW5nKSB7XG4gICAgICAgIC8vIEVpdGhlciBkcmFnIG9yIHJlc2l6ZSBpcyBvbmdvaW5nLFxuICAgICAgICAvLyByZXNldCByZWFkaW5lc3MgYW5kIHN0b3AgcHJvY2Vzc2luZy5cbiAgICAgICAgY2FuRHJhZyA9IGNhblJlc2l6ZSA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFyZXNpemFibGUgfHwgKCFJc1dpbmRvd3MoKSAmJiAhKElzTGludXgoKSAmJiBHZXRGbGFnKFwiZnJhbWVsZXNzXCIpKSkpIHtcbiAgICAgICAgaWYgKHJlc2l6ZUVkZ2UpIHsgc2V0UmVzaXplKCk7IH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc2l6ZUhhbmRsZUhlaWdodCA9IEdldEZsYWcoXCJzeXN0ZW0ucmVzaXplSGFuZGxlSGVpZ2h0XCIpIHx8IDU7XG4gICAgY29uc3QgcmVzaXplSGFuZGxlV2lkdGggPSBHZXRGbGFnKFwic3lzdGVtLnJlc2l6ZUhhbmRsZVdpZHRoXCIpIHx8IDU7XG5cbiAgICAvLyBFeHRyYSBwaXhlbHMgZm9yIHRoZSBjb3JuZXIgYXJlYXMuXG4gICAgY29uc3QgY29ybmVyRXh0cmEgPSBHZXRGbGFnKFwicmVzaXplQ29ybmVyRXh0cmFcIikgfHwgMTA7XG5cbiAgICAvLyBXaGVuIGEgc2Nyb2xsYmFyIGlzIHByZXNlbnQgYXQgdGhlIHdpbmRvdyBlZGdlIGl0IGNvbnN1bWVzIG1vdXNlIGV2ZW50cyBpbiB0aGF0IHN0cmlwLlxuICAgIC8vIFNoaWZ0IHRoZSBlZmZlY3RpdmUgY29udGVudCBlZGdlIGlud2FyZCBzbyB0aGUgcmVzaXplIHpvbmUgc2l0cyBqdXN0IGJlZm9yZSB0aGUgc2Nyb2xsYmFyLlxuICAgIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gTWF0aC5tYXgoMCwgd2luZG93LmlubmVyV2lkdGggLSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpO1xuICAgIGNvbnN0IHNjcm9sbGJhckhlaWdodCA9IE1hdGgubWF4KDAsIHdpbmRvdy5pbm5lckhlaWdodCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpO1xuICAgIGNvbnN0IHJpZ2h0Q29udGVudEVkZ2UgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIHNjcm9sbGJhcldpZHRoO1xuICAgIGNvbnN0IGJvdHRvbUNvbnRlbnRFZGdlID0gd2luZG93LmlubmVySGVpZ2h0IC0gc2Nyb2xsYmFySGVpZ2h0O1xuXG4gICAgY29uc3QgcmlnaHRCb3JkZXIgPSBldmVudC5jbGllbnRYIDwgcmlnaHRDb250ZW50RWRnZSAmJiAocmlnaHRDb250ZW50RWRnZSAtIGV2ZW50LmNsaWVudFgpIDwgcmVzaXplSGFuZGxlV2lkdGg7XG4gICAgY29uc3QgbGVmdEJvcmRlciA9IGV2ZW50LmNsaWVudFggPCByZXNpemVIYW5kbGVXaWR0aDtcbiAgICBjb25zdCB0b3BCb3JkZXIgPSBldmVudC5jbGllbnRZIDwgcmVzaXplSGFuZGxlSGVpZ2h0O1xuICAgIGNvbnN0IGJvdHRvbUJvcmRlciA9IGV2ZW50LmNsaWVudFkgPCBib3R0b21Db250ZW50RWRnZSAmJiAoYm90dG9tQ29udGVudEVkZ2UgLSBldmVudC5jbGllbnRZKSA8IHJlc2l6ZUhhbmRsZUhlaWdodDtcblxuICAgIC8vIEFkanVzdCBmb3IgY29ybmVyIGFyZWFzLlxuICAgIGNvbnN0IHJpZ2h0Q29ybmVyID0gZXZlbnQuY2xpZW50WCA8IHJpZ2h0Q29udGVudEVkZ2UgJiYgKHJpZ2h0Q29udGVudEVkZ2UgLSBldmVudC5jbGllbnRYKSA8IChyZXNpemVIYW5kbGVXaWR0aCArIGNvcm5lckV4dHJhKTtcbiAgICBjb25zdCBsZWZ0Q29ybmVyID0gZXZlbnQuY2xpZW50WCA8IChyZXNpemVIYW5kbGVXaWR0aCArIGNvcm5lckV4dHJhKTtcbiAgICBjb25zdCB0b3BDb3JuZXIgPSBldmVudC5jbGllbnRZIDwgKHJlc2l6ZUhhbmRsZUhlaWdodCArIGNvcm5lckV4dHJhKTtcbiAgICBjb25zdCBib3R0b21Db3JuZXIgPSBldmVudC5jbGllbnRZIDwgYm90dG9tQ29udGVudEVkZ2UgJiYgKGJvdHRvbUNvbnRlbnRFZGdlIC0gZXZlbnQuY2xpZW50WSkgPCAocmVzaXplSGFuZGxlSGVpZ2h0ICsgY29ybmVyRXh0cmEpO1xuXG4gICAgaWYgKCFsZWZ0Q29ybmVyICYmICF0b3BDb3JuZXIgJiYgIWJvdHRvbUNvcm5lciAmJiAhcmlnaHRDb3JuZXIpIHtcbiAgICAgICAgLy8gT3B0aW1pc2F0aW9uOiBvdXQgb2YgYWxsIGNvcm5lciBhcmVhcyBpbXBsaWVzIG91dCBvZiBib3JkZXJzLlxuICAgICAgICBzZXRSZXNpemUoKTtcbiAgICB9XG4gICAgLy8gRGV0ZWN0IGNvcm5lcnMuXG4gICAgZWxzZSBpZiAocmlnaHRDb3JuZXIgJiYgYm90dG9tQ29ybmVyKSBzZXRSZXNpemUoXCJzZS1yZXNpemVcIik7XG4gICAgZWxzZSBpZiAobGVmdENvcm5lciAmJiBib3R0b21Db3JuZXIpIHNldFJlc2l6ZShcInN3LXJlc2l6ZVwiKTtcbiAgICBlbHNlIGlmIChsZWZ0Q29ybmVyICYmIHRvcENvcm5lcikgc2V0UmVzaXplKFwibnctcmVzaXplXCIpO1xuICAgIGVsc2UgaWYgKHRvcENvcm5lciAmJiByaWdodENvcm5lcikgc2V0UmVzaXplKFwibmUtcmVzaXplXCIpO1xuICAgIC8vIERldGVjdCBib3JkZXJzLlxuICAgIGVsc2UgaWYgKGxlZnRCb3JkZXIpIHNldFJlc2l6ZShcInctcmVzaXplXCIpO1xuICAgIGVsc2UgaWYgKHRvcEJvcmRlcikgc2V0UmVzaXplKFwibi1yZXNpemVcIik7XG4gICAgZWxzZSBpZiAoYm90dG9tQm9yZGVyKSBzZXRSZXNpemUoXCJzLXJlc2l6ZVwiKTtcbiAgICBlbHNlIGlmIChyaWdodEJvcmRlcikgc2V0UmVzaXplKFwiZS1yZXNpemVcIik7XG4gICAgLy8gT3V0IG9mIGJvcmRlciBhcmVhLlxuICAgIGVsc2Ugc2V0UmVzaXplKCk7XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuY29uc3QgY2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuQXBwbGljYXRpb24pO1xuXG5jb25zdCBIaWRlTWV0aG9kID0gMDtcbmNvbnN0IFNob3dNZXRob2QgPSAxO1xuY29uc3QgUXVpdE1ldGhvZCA9IDI7XG5cbi8qKlxuICogSGlkZXMgYSBjZXJ0YWluIG1ldGhvZCBieSBjYWxsaW5nIHRoZSBIaWRlTWV0aG9kIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSGlkZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gY2FsbChIaWRlTWV0aG9kKTtcbn1cblxuLyoqXG4gKiBDYWxscyB0aGUgU2hvd01ldGhvZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gU2hvdygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gY2FsbChTaG93TWV0aG9kKTtcbn1cblxuLyoqXG4gKiBDYWxscyB0aGUgUXVpdE1ldGhvZCB0byB0ZXJtaW5hdGUgdGhlIHByb2dyYW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBRdWl0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBjYWxsKFF1aXRNZXRob2QpO1xufVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBDYW5jZWxsYWJsZVByb21pc2UsIHR5cGUgQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVycyB9IGZyb20gXCIuL2NhbmNlbGxhYmxlLmpzXCI7XG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gXCIuL25hbm9pZC5qc1wiO1xuXG4vLyBTZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xufVxuXG50eXBlIFByb21pc2VSZXNvbHZlcnMgPSBPbWl0PENhbmNlbGxhYmxlUHJvbWlzZVdpdGhSZXNvbHZlcnM8YW55PiwgXCJwcm9taXNlXCIgfCBcIm9uY2FuY2VsbGVkXCI+XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkNhbGwpO1xuY29uc3QgY2FuY2VsQ2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuQ2FuY2VsQ2FsbCk7XG5jb25zdCBjYWxsUmVzcG9uc2VzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2VSZXNvbHZlcnM+KCk7XG5cbmNvbnN0IENhbGxCaW5kaW5nID0gMDtcbmNvbnN0IENhbmNlbE1ldGhvZCA9IDBcblxuLyoqXG4gKiBIb2xkcyBhbGwgcmVxdWlyZWQgaW5mb3JtYXRpb24gZm9yIGEgYmluZGluZyBjYWxsLlxuICogTWF5IHByb3ZpZGUgZWl0aGVyIGEgbWV0aG9kIElEIG9yIGEgbWV0aG9kIG5hbWUsIGJ1dCBub3QgYm90aC5cbiAqL1xuZXhwb3J0IHR5cGUgQ2FsbE9wdGlvbnMgPSB7XG4gICAgLyoqIFRoZSBudW1lcmljIElEIG9mIHRoZSBib3VuZCBtZXRob2QgdG8gY2FsbC4gKi9cbiAgICBtZXRob2RJRDogbnVtYmVyO1xuICAgIC8qKiBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGJvdW5kIG1ldGhvZCB0byBjYWxsLiAqL1xuICAgIG1ldGhvZE5hbWU/OiBuZXZlcjtcbiAgICAvKiogQXJndW1lbnRzIHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBib3VuZCBtZXRob2QuICovXG4gICAgYXJnczogYW55W107XG59IHwge1xuICAgIC8qKiBUaGUgbnVtZXJpYyBJRCBvZiB0aGUgYm91bmQgbWV0aG9kIHRvIGNhbGwuICovXG4gICAgbWV0aG9kSUQ/OiBuZXZlcjtcbiAgICAvKiogVGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBib3VuZCBtZXRob2QgdG8gY2FsbC4gKi9cbiAgICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gICAgLyoqIEFyZ3VtZW50cyB0byBiZSBwYXNzZWQgaW50byB0aGUgYm91bmQgbWV0aG9kLiAqL1xuICAgIGFyZ3M6IGFueVtdO1xufTtcblxuLyoqXG4gKiBFeGNlcHRpb24gY2xhc3MgdGhhdCB3aWxsIGJlIHRocm93biBpbiBjYXNlIHRoZSBib3VuZCBtZXRob2QgcmV0dXJucyBhbiBlcnJvci5cbiAqIFRoZSB2YWx1ZSBvZiB0aGUge0BsaW5rIFJ1bnRpbWVFcnJvciNuYW1lfSBwcm9wZXJ0eSBpcyBcIlJ1bnRpbWVFcnJvclwiLlxuICovXG5leHBvcnQgY2xhc3MgUnVudGltZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgUnVudGltZUVycm9yIGluc3RhbmNlLlxuICAgICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIHRvIGJlIGZvcndhcmRlZCB0byB0aGUgRXJyb3IgY29uc3RydWN0b3IuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZywgb3B0aW9ucz86IEVycm9yT3B0aW9ucykge1xuICAgICAgICBzdXBlcihtZXNzYWdlLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5uYW1lID0gXCJSdW50aW1lRXJyb3JcIjtcbiAgICB9XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgdW5pcXVlIElEIHVzaW5nIHRoZSBuYW5vaWQgbGlicmFyeS5cbiAqXG4gKiBAcmV0dXJucyBBIHVuaXF1ZSBJRCB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBjYWxsUmVzcG9uc2VzIHNldC5cbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVJRCgpOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQ7XG4gICAgZG8ge1xuICAgICAgICByZXN1bHQgPSBuYW5vaWQoKTtcbiAgICB9IHdoaWxlIChjYWxsUmVzcG9uc2VzLmhhcyhyZXN1bHQpKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIENhbGwgYSBib3VuZCBtZXRob2QgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBjYWxsIG9wdGlvbnMuXG4gKlxuICogSW4gY2FzZSBvZiBmYWlsdXJlLCB0aGUgcmV0dXJuZWQgcHJvbWlzZSB3aWxsIHJlamVjdCB3aXRoIGFuIGV4Y2VwdGlvblxuICogYW1vbmcgUmVmZXJlbmNlRXJyb3IgKHVua25vd24gbWV0aG9kKSwgVHlwZUVycm9yICh3cm9uZyBhcmd1bWVudCBjb3VudCBvciB0eXBlKSxcbiAqIHtAbGluayBSdW50aW1lRXJyb3J9IChtZXRob2QgcmV0dXJuZWQgYW4gZXJyb3IpLCBvciBvdGhlciAobmV0d29yayBvciBpbnRlcm5hbCBlcnJvcnMpLlxuICogVGhlIGV4Y2VwdGlvbiBtaWdodCBoYXZlIGEgXCJjYXVzZVwiIGZpZWxkIHdpdGggdGhlIHZhbHVlIHJldHVybmVkXG4gKiBieSB0aGUgYXBwbGljYXRpb24tIG9yIHNlcnZpY2UtbGV2ZWwgZXJyb3IgbWFyc2hhbGluZyBmdW5jdGlvbnMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBBIG1ldGhvZCBjYWxsIGRlc2NyaXB0b3IuXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBjYWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ2FsbChvcHRpb25zOiBDYWxsT3B0aW9ucyk6IENhbmNlbGxhYmxlUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBpZCA9IGdlbmVyYXRlSUQoKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IENhbmNlbGxhYmxlUHJvbWlzZS53aXRoUmVzb2x2ZXJzPGFueT4oKTtcbiAgICBjYWxsUmVzcG9uc2VzLnNldChpZCwgeyByZXNvbHZlOiByZXN1bHQucmVzb2x2ZSwgcmVqZWN0OiByZXN1bHQucmVqZWN0IH0pO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IGNhbGwoQ2FsbEJpbmRpbmcsIE9iamVjdC5hc3NpZ24oeyBcImNhbGwtaWRcIjogaWQgfSwgb3B0aW9ucykpO1xuICAgIGxldCBydW5uaW5nID0gdHJ1ZTtcblxuICAgIHJlcXVlc3QudGhlbigocmVzKSA9PiB7XG4gICAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgY2FsbFJlc3BvbnNlcy5kZWxldGUoaWQpO1xuICAgICAgICByZXN1bHQucmVzb2x2ZShyZXMpO1xuICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgcnVubmluZyA9IGZhbHNlO1xuICAgICAgICBjYWxsUmVzcG9uc2VzLmRlbGV0ZShpZCk7XG4gICAgICAgIHJlc3VsdC5yZWplY3QoZXJyKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNhbmNlbCA9ICgpID0+IHtcbiAgICAgICAgY2FsbFJlc3BvbnNlcy5kZWxldGUoaWQpO1xuICAgICAgICByZXR1cm4gY2FuY2VsQ2FsbChDYW5jZWxNZXRob2QsIHtcImNhbGwtaWRcIjogaWR9KS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3Igd2hpbGUgcmVxdWVzdGluZyBiaW5kaW5nIGNhbGwgY2FuY2VsbGF0aW9uOlwiLCBlcnIpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmVzdWx0Lm9uY2FuY2VsbGVkID0gKCkgPT4ge1xuICAgICAgICBpZiAocnVubmluZykge1xuICAgICAgICAgICAgcmV0dXJuIGNhbmNlbCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3QudGhlbihjYW5jZWwpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiByZXN1bHQucHJvbWlzZTtcbn1cblxuLyoqXG4gKiBDYWxscyBhIGJvdW5kIG1ldGhvZCBieSBuYW1lIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudHMuXG4gKiBTZWUge0BsaW5rIENhbGx9IGZvciBkZXRhaWxzLlxuICpcbiAqIEBwYXJhbSBtZXRob2ROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIG1ldGhvZCBpbiB0aGUgZm9ybWF0ICdwYWNrYWdlLnN0cnVjdC5tZXRob2QnLlxuICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIG1ldGhvZCBjYWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQnlOYW1lKG1ldGhvZE5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBDYW5jZWxsYWJsZVByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIENhbGwoeyBtZXRob2ROYW1lLCBhcmdzIH0pO1xufVxuXG4vKipcbiAqIENhbGxzIGEgbWV0aG9kIGJ5IGl0cyBudW1lcmljIElEIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudHMuXG4gKiBTZWUge0BsaW5rIENhbGx9IGZvciBkZXRhaWxzLlxuICpcbiAqIEBwYXJhbSBtZXRob2RJRCAtIFRoZSBJRCBvZiB0aGUgbWV0aG9kIHRvIGNhbGwuXG4gKiBAcGFyYW0gYXJncyAtIFRoZSBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICogQHJldHVybiBUaGUgcmVzdWx0IG9mIHRoZSBtZXRob2QgY2FsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJ5SUQobWV0aG9kSUQ6IG51bWJlciwgLi4uYXJnczogYW55W10pOiBDYW5jZWxsYWJsZVByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIENhbGwoeyBtZXRob2RJRCwgYXJncyB9KTtcbn1cbiIsICIvLyBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9pbnNwZWN0LWpzL2lzLWNhbGxhYmxlXG5cbi8vIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuLy9cbi8vIENvcHlyaWdodCAoYykgMjAxNSBKb3JkYW4gSGFyYmFuZFxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbi8vIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuLy8gU09GVFdBUkUuXG5cbnZhciBmblRvU3RyID0gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIHJlZmxlY3RBcHBseTogdHlwZW9mIFJlZmxlY3QuYXBwbHkgfCBmYWxzZSB8IG51bGwgPSB0eXBlb2YgUmVmbGVjdCA9PT0gJ29iamVjdCcgJiYgUmVmbGVjdCAhPT0gbnVsbCAmJiBSZWZsZWN0LmFwcGx5O1xudmFyIGJhZEFycmF5TGlrZTogYW55O1xudmFyIGlzQ2FsbGFibGVNYXJrZXI6IGFueTtcbmlmICh0eXBlb2YgcmVmbGVjdEFwcGx5ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydHkgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgICBiYWRBcnJheUxpa2UgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdsZW5ndGgnLCB7XG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBpc0NhbGxhYmxlTWFya2VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaXNDYWxsYWJsZU1hcmtlciA9IHt9O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICAgICAgICByZWZsZWN0QXBwbHkoZnVuY3Rpb24gKCkgeyB0aHJvdyA0MjsgfSwgbnVsbCwgYmFkQXJyYXlMaWtlKTtcbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgIGlmIChfICE9PSBpc0NhbGxhYmxlTWFya2VyKSB7XG4gICAgICAgICAgICByZWZsZWN0QXBwbHkgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufSBlbHNlIHtcbiAgICByZWZsZWN0QXBwbHkgPSBudWxsO1xufVxuXG52YXIgY29uc3RydWN0b3JSZWdleCA9IC9eXFxzKmNsYXNzXFxiLztcbnZhciBpc0VTNkNsYXNzRm4gPSBmdW5jdGlvbiBpc0VTNkNsYXNzRnVuY3Rpb24odmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBmblN0ciA9IGZuVG9TdHIuY2FsbCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBjb25zdHJ1Y3RvclJlZ2V4LnRlc3QoZm5TdHIpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBub3QgYSBmdW5jdGlvblxuICAgIH1cbn07XG5cbnZhciB0cnlGdW5jdGlvbk9iamVjdCA9IGZ1bmN0aW9uIHRyeUZ1bmN0aW9uVG9TdHIodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICAgIGlmIChpc0VTNkNsYXNzRm4odmFsdWUpKSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICBmblRvU3RyLmNhbGwodmFsdWUpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59O1xudmFyIHRvU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbnZhciBvYmplY3RDbGFzcyA9ICdbb2JqZWN0IE9iamVjdF0nO1xudmFyIGZuQ2xhc3MgPSAnW29iamVjdCBGdW5jdGlvbl0nO1xudmFyIGdlbkNsYXNzID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJztcbnZhciBkZGFDbGFzcyA9ICdbb2JqZWN0IEhUTUxBbGxDb2xsZWN0aW9uXSc7IC8vIElFIDExXG52YXIgZGRhQ2xhc3MyID0gJ1tvYmplY3QgSFRNTCBkb2N1bWVudC5hbGwgY2xhc3NdJztcbnZhciBkZGFDbGFzczMgPSAnW29iamVjdCBIVE1MQ29sbGVjdGlvbl0nOyAvLyBJRSA5LTEwXG52YXIgaGFzVG9TdHJpbmdUYWcgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmICEhU3ltYm9sLnRvU3RyaW5nVGFnOyAvLyBiZXR0ZXI6IHVzZSBgaGFzLXRvc3RyaW5ndGFnYFxuXG52YXIgaXNJRTY4ID0gISgwIGluIFssXSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc3BhcnNlLWFycmF5cywgY29tbWEtc3BhY2luZ1xuXG52YXIgaXNEREE6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuID0gZnVuY3Rpb24gaXNEb2N1bWVudERvdEFsbCgpIHsgcmV0dXJuIGZhbHNlOyB9O1xuaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBGaXJlZm94IDMgY2Fub25pY2FsaXplcyBEREEgdG8gdW5kZWZpbmVkIHdoZW4gaXQncyBub3QgYWNjZXNzZWQgZGlyZWN0bHlcbiAgICB2YXIgYWxsID0gZG9jdW1lbnQuYWxsO1xuICAgIGlmICh0b1N0ci5jYWxsKGFsbCkgPT09IHRvU3RyLmNhbGwoZG9jdW1lbnQuYWxsKSkge1xuICAgICAgICBpc0REQSA9IGZ1bmN0aW9uIGlzRG9jdW1lbnREb3RBbGwodmFsdWUpIHtcbiAgICAgICAgICAgIC8qIGdsb2JhbHMgZG9jdW1lbnQ6IGZhbHNlICovXG4gICAgICAgICAgICAvLyBpbiBJRSA2LTgsIHR5cGVvZiBkb2N1bWVudC5hbGwgaXMgXCJvYmplY3RcIiBhbmQgaXQncyB0cnV0aHlcbiAgICAgICAgICAgIGlmICgoaXNJRTY4IHx8ICF2YWx1ZSkgJiYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JykpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3RyID0gdG9TdHIuY2FsbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgPT09IGRkYUNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBzdHIgPT09IGRkYUNsYXNzMlxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RyID09PSBkZGFDbGFzczMgLy8gb3BlcmEgMTIuMTZcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0ciA9PT0gb2JqZWN0Q2xhc3MgLy8gSUUgNi04XG4gICAgICAgICAgICAgICAgICAgICkgJiYgdmFsdWUoJycpID09IG51bGw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAvKiovIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzQ2FsbGFibGVSZWZBcHBseTxUPih2YWx1ZTogVCB8IHVua25vd24pOiB2YWx1ZSBpcyAoLi4uYXJnczogYW55W10pID0+IGFueSAge1xuICAgIGlmIChpc0REQSh2YWx1ZSkpIHsgcmV0dXJuIHRydWU7IH1cbiAgICBpZiAoIXZhbHVlKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgeyByZXR1cm4gZmFsc2U7IH1cbiAgICB0cnkge1xuICAgICAgICAocmVmbGVjdEFwcGx5IGFzIGFueSkodmFsdWUsIG51bGwsIGJhZEFycmF5TGlrZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZSAhPT0gaXNDYWxsYWJsZU1hcmtlcikgeyByZXR1cm4gZmFsc2U7IH1cbiAgICB9XG4gICAgcmV0dXJuICFpc0VTNkNsYXNzRm4odmFsdWUpICYmIHRyeUZ1bmN0aW9uT2JqZWN0KHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gaXNDYWxsYWJsZU5vUmVmQXBwbHk8VD4odmFsdWU6IFQgfCB1bmtub3duKTogdmFsdWUgaXMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkge1xuICAgIGlmIChpc0REQSh2YWx1ZSkpIHsgcmV0dXJuIHRydWU7IH1cbiAgICBpZiAoIXZhbHVlKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBpZiAoaGFzVG9TdHJpbmdUYWcpIHsgcmV0dXJuIHRyeUZ1bmN0aW9uT2JqZWN0KHZhbHVlKTsgfVxuICAgIGlmIChpc0VTNkNsYXNzRm4odmFsdWUpKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIHZhciBzdHJDbGFzcyA9IHRvU3RyLmNhbGwodmFsdWUpO1xuICAgIGlmIChzdHJDbGFzcyAhPT0gZm5DbGFzcyAmJiBzdHJDbGFzcyAhPT0gZ2VuQ2xhc3MgJiYgISgvXlxcW29iamVjdCBIVE1MLykudGVzdChzdHJDbGFzcykpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgcmV0dXJuIHRyeUZ1bmN0aW9uT2JqZWN0KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHJlZmxlY3RBcHBseSA/IGlzQ2FsbGFibGVSZWZBcHBseSA6IGlzQ2FsbGFibGVOb1JlZkFwcGx5O1xuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgaXNDYWxsYWJsZSBmcm9tIFwiLi9jYWxsYWJsZS5qc1wiO1xuXG4vKipcbiAqIEV4Y2VwdGlvbiBjbGFzcyB0aGF0IHdpbGwgYmUgdXNlZCBhcyByZWplY3Rpb24gcmVhc29uXG4gKiBpbiBjYXNlIGEge0BsaW5rIENhbmNlbGxhYmxlUHJvbWlzZX0gaXMgY2FuY2VsbGVkIHN1Y2Nlc3NmdWxseS5cbiAqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIHtAbGluayBuYW1lfSBwcm9wZXJ0eSBpcyB0aGUgc3RyaW5nIGBcIkNhbmNlbEVycm9yXCJgLlxuICogVGhlIHZhbHVlIG9mIHRoZSB7QGxpbmsgY2F1c2V9IHByb3BlcnR5IGlzIHRoZSBjYXVzZSBwYXNzZWQgdG8gdGhlIGNhbmNlbCBtZXRob2QsIGlmIGFueS5cbiAqL1xuZXhwb3J0IGNsYXNzIENhbmNlbEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgYENhbmNlbEVycm9yYCBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyB0byBiZSBmb3J3YXJkZWQgdG8gdGhlIEVycm9yIGNvbnN0cnVjdG9yLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcsIG9wdGlvbnM/OiBFcnJvck9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSwgb3B0aW9ucyk7XG4gICAgICAgIHRoaXMubmFtZSA9IFwiQ2FuY2VsRXJyb3JcIjtcbiAgICB9XG59XG5cbi8qKlxuICogRXhjZXB0aW9uIGNsYXNzIHRoYXQgd2lsbCBiZSByZXBvcnRlZCBhcyBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uXG4gKiBpbiBjYXNlIGEge0BsaW5rIENhbmNlbGxhYmxlUHJvbWlzZX0gcmVqZWN0cyBhZnRlciBiZWluZyBjYW5jZWxsZWQsXG4gKiBvciB3aGVuIHRoZSBgb25jYW5jZWxsZWRgIGNhbGxiYWNrIHRocm93cyBvciByZWplY3RzLlxuICpcbiAqIFRoZSB2YWx1ZSBvZiB0aGUge0BsaW5rIG5hbWV9IHByb3BlcnR5IGlzIHRoZSBzdHJpbmcgYFwiQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3JcImAuXG4gKiBUaGUgdmFsdWUgb2YgdGhlIHtAbGluayBjYXVzZX0gcHJvcGVydHkgaXMgdGhlIHJlYXNvbiB0aGUgcHJvbWlzZSByZWplY3RlZCB3aXRoLlxuICpcbiAqIEJlY2F1c2UgdGhlIG9yaWdpbmFsIHByb21pc2Ugd2FzIGNhbmNlbGxlZCxcbiAqIGEgd3JhcHBlciBwcm9taXNlIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSB1bmhhbmRsZWQgcmVqZWN0aW9uIGxpc3RlbmVyIGluc3RlYWQuXG4gKiBUaGUge0BsaW5rIHByb21pc2V9IHByb3BlcnR5IGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBwcm9taXNlLlxuICovXG5leHBvcnQgY2xhc3MgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgLyoqXG4gICAgICogSG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIHByb21pc2UgdGhhdCB3YXMgY2FuY2VsbGVkIGFuZCB0aGVuIHJlamVjdGVkLlxuICAgICAqL1xuICAgIHByb21pc2U6IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPjtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgYENhbmNlbGxlZFJlamVjdGlvbkVycm9yYCBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0gcHJvbWlzZSAtIFRoZSBwcm9taXNlIHRoYXQgY2F1c2VkIHRoZSBlcnJvciBvcmlnaW5hbGx5LlxuICAgICAqIEBwYXJhbSByZWFzb24gLSBUaGUgcmVqZWN0aW9uIHJlYXNvbi5cbiAgICAgKiBAcGFyYW0gaW5mbyAtIEFuIG9wdGlvbmFsIGluZm9ybWF0aXZlIG1lc3NhZ2Ugc3BlY2lmeWluZyB0aGUgY2lyY3Vtc3RhbmNlcyBpbiB3aGljaCB0aGUgZXJyb3Igd2FzIHRocm93bi5cbiAgICAgKiAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIHRoZSBzdHJpbmcgYFwiVW5oYW5kbGVkIHJlamVjdGlvbiBpbiBjYW5jZWxsZWQgcHJvbWlzZS5cImAuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJvbWlzZTogQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+LCByZWFzb24/OiBhbnksIGluZm8/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoKGluZm8gPz8gXCJVbmhhbmRsZWQgcmVqZWN0aW9uIGluIGNhbmNlbGxlZCBwcm9taXNlLlwiKSArIFwiIFJlYXNvbjogXCIgKyBlcnJvck1lc3NhZ2UocmVhc29uKSwgeyBjYXVzZTogcmVhc29uIH0pO1xuICAgICAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIkNhbmNlbGxlZFJlamVjdGlvbkVycm9yXCI7XG4gICAgfVxufVxuXG50eXBlIENhbmNlbGxhYmxlUHJvbWlzZVJlc29sdmVyPFQ+ID0gKHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4gfCBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFQ+KSA9PiB2b2lkO1xudHlwZSBDYW5jZWxsYWJsZVByb21pc2VSZWplY3RvciA9IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG50eXBlIENhbmNlbGxhYmxlUHJvbWlzZUNhbmNlbGxlciA9IChjYXVzZT86IGFueSkgPT4gdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+O1xudHlwZSBDYW5jZWxsYWJsZVByb21pc2VFeGVjdXRvcjxUPiA9IChyZXNvbHZlOiBDYW5jZWxsYWJsZVByb21pc2VSZXNvbHZlcjxUPiwgcmVqZWN0OiBDYW5jZWxsYWJsZVByb21pc2VSZWplY3RvcikgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFQ+IHtcbiAgICB0aGVuPFRSZXN1bHQxID0gVCwgVFJlc3VsdDIgPSBuZXZlcj4ob25mdWxmaWxsZWQ/OiAoKHZhbHVlOiBUKSA9PiBUUmVzdWx0MSB8IFByb21pc2VMaWtlPFRSZXN1bHQxPiB8IENhbmNlbGxhYmxlUHJvbWlzZUxpa2U8VFJlc3VsdDE+KSB8IHVuZGVmaW5lZCB8IG51bGwsIG9ucmVqZWN0ZWQ/OiAoKHJlYXNvbjogYW55KSA9PiBUUmVzdWx0MiB8IFByb21pc2VMaWtlPFRSZXN1bHQyPiB8IENhbmNlbGxhYmxlUHJvbWlzZUxpa2U8VFJlc3VsdDI+KSB8IHVuZGVmaW5lZCB8IG51bGwpOiBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFRSZXN1bHQxIHwgVFJlc3VsdDI+O1xuICAgIGNhbmNlbChjYXVzZT86IGFueSk6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBXcmFwcyBhIGNhbmNlbGxhYmxlIHByb21pc2UgYWxvbmcgd2l0aCBpdHMgcmVzb2x1dGlvbiBtZXRob2RzLlxuICogVGhlIGBvbmNhbmNlbGxlZGAgZmllbGQgd2lsbCBiZSBudWxsIGluaXRpYWxseSBidXQgbWF5IGJlIHNldCB0byBwcm92aWRlIGEgY3VzdG9tIGNhbmNlbGxhdGlvbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+IHtcbiAgICBwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2U8VD47XG4gICAgcmVzb2x2ZTogQ2FuY2VsbGFibGVQcm9taXNlUmVzb2x2ZXI8VD47XG4gICAgcmVqZWN0OiBDYW5jZWxsYWJsZVByb21pc2VSZWplY3RvcjtcbiAgICBvbmNhbmNlbGxlZDogQ2FuY2VsbGFibGVQcm9taXNlQ2FuY2VsbGVyIHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIENhbmNlbGxhYmxlUHJvbWlzZVN0YXRlIHtcbiAgICByZWFkb25seSByb290OiBDYW5jZWxsYWJsZVByb21pc2VTdGF0ZTtcbiAgICByZXNvbHZpbmc6IGJvb2xlYW47XG4gICAgc2V0dGxlZDogYm9vbGVhbjtcbiAgICByZWFzb24/OiBDYW5jZWxFcnJvcjtcbn1cblxuLy8gUHJpdmF0ZSBmaWVsZCBuYW1lcy5cbmNvbnN0IGJhcnJpZXJTeW0gPSBTeW1ib2woXCJiYXJyaWVyXCIpO1xuY29uc3QgY2FuY2VsSW1wbFN5bSA9IFN5bWJvbChcImNhbmNlbEltcGxcIik7XG5jb25zdCBzcGVjaWVzOiB0eXBlb2YgU3ltYm9sLnNwZWNpZXMgPSBTeW1ib2wuc3BlY2llcyA/PyBTeW1ib2woXCJzcGVjaWVzUG9seWZpbGxcIik7XG5cbi8qKlxuICogQSBwcm9taXNlIHdpdGggYW4gYXR0YWNoZWQgbWV0aG9kIGZvciBjYW5jZWxsaW5nIGxvbmctcnVubmluZyBvcGVyYXRpb25zIChzZWUge0BsaW5rIENhbmNlbGxhYmxlUHJvbWlzZSNjYW5jZWx9KS5cbiAqIENhbmNlbGxhdGlvbiBjYW4gb3B0aW9uYWxseSBiZSBib3VuZCB0byBhbiB7QGxpbmsgQWJvcnRTaWduYWx9XG4gKiBmb3IgYmV0dGVyIGNvbXBvc2FiaWxpdHkgKHNlZSB7QGxpbmsgQ2FuY2VsbGFibGVQcm9taXNlI2NhbmNlbE9ufSkuXG4gKlxuICogQ2FuY2VsbGluZyBhIHBlbmRpbmcgcHJvbWlzZSB3aWxsIHJlc3VsdCBpbiBhbiBpbW1lZGlhdGUgcmVqZWN0aW9uXG4gKiB3aXRoIGFuIGluc3RhbmNlIG9mIHtAbGluayBDYW5jZWxFcnJvcn0gYXMgcmVhc29uLFxuICogYnV0IHdob2V2ZXIgc3RhcnRlZCB0aGUgcHJvbWlzZSB3aWxsIGJlIHJlc3BvbnNpYmxlXG4gKiBmb3IgYWN0dWFsbHkgYWJvcnRpbmcgdGhlIHVuZGVybHlpbmcgb3BlcmF0aW9uLlxuICogVG8gdGhpcyBwdXJwb3NlLCB0aGUgY29uc3RydWN0b3IgYW5kIGFsbCBjaGFpbmluZyBtZXRob2RzXG4gKiBhY2NlcHQgb3B0aW9uYWwgY2FuY2VsbGF0aW9uIGNhbGxiYWNrcy5cbiAqXG4gKiBJZiBhIGBDYW5jZWxsYWJsZVByb21pc2VgIHN0aWxsIHJlc29sdmVzIGFmdGVyIGhhdmluZyBiZWVuIGNhbmNlbGxlZCxcbiAqIHRoZSByZXN1bHQgd2lsbCBiZSBkaXNjYXJkZWQuIElmIGl0IHJlamVjdHMsIHRoZSByZWFzb25cbiAqIHdpbGwgYmUgcmVwb3J0ZWQgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbixcbiAqIHdyYXBwZWQgaW4gYSB7QGxpbmsgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3J9IGluc3RhbmNlLlxuICogVG8gZmFjaWxpdGF0ZSB0aGUgaGFuZGxpbmcgb2YgY2FuY2VsbGF0aW9uIHJlcXVlc3RzLFxuICogY2FuY2VsbGVkIGBDYW5jZWxsYWJsZVByb21pc2VgcyB3aWxsIF9ub3RfIHJlcG9ydCB1bmhhbmRsZWQgYENhbmNlbEVycm9yYHNcbiAqIHdob3NlIGBjYXVzZWAgZmllbGQgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSB3aXRoIHdoaWNoIHRoZSBjdXJyZW50IHByb21pc2Ugd2FzIGNhbmNlbGxlZC5cbiAqXG4gKiBBbGwgdXN1YWwgcHJvbWlzZSBtZXRob2RzIGFyZSBkZWZpbmVkIGFuZCByZXR1cm4gYSBgQ2FuY2VsbGFibGVQcm9taXNlYFxuICogd2hvc2UgY2FuY2VsIG1ldGhvZCB3aWxsIGNhbmNlbCB0aGUgcGFyZW50IG9wZXJhdGlvbiBhcyB3ZWxsLCBwcm9wYWdhdGluZyB0aGUgY2FuY2VsbGF0aW9uIHJlYXNvblxuICogdXB3YXJkcyB0aHJvdWdoIHByb21pc2UgY2hhaW5zLlxuICogQ29udmVyc2VseSwgY2FuY2VsbGluZyBhIHByb21pc2Ugd2lsbCBub3QgYXV0b21hdGljYWxseSBjYW5jZWwgZGVwZW5kZW50IHByb21pc2VzIGRvd25zdHJlYW06XG4gKiBgYGB0c1xuICogbGV0IHJvb3QgPSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgLi4uIH0pO1xuICogbGV0IGNoaWxkMSA9IHJvb3QudGhlbigoKSA9PiB7IC4uLiB9KTtcbiAqIGxldCBjaGlsZDIgPSBjaGlsZDEudGhlbigoKSA9PiB7IC4uLiB9KTtcbiAqIGxldCBjaGlsZDMgPSByb290LmNhdGNoKCgpID0+IHsgLi4uIH0pO1xuICogY2hpbGQxLmNhbmNlbCgpOyAvLyBDYW5jZWxzIGNoaWxkMSBhbmQgcm9vdCwgYnV0IG5vdCBjaGlsZDIgb3IgY2hpbGQzXG4gKiBgYGBcbiAqIENhbmNlbGxpbmcgYSBwcm9taXNlIHRoYXQgaGFzIGFscmVhZHkgc2V0dGxlZCBpcyBzYWZlIGFuZCBoYXMgbm8gY29uc2VxdWVuY2UuXG4gKlxuICogVGhlIGBjYW5jZWxgIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IF9hbHdheXMgZnVsZmlsbHNfXG4gKiBhZnRlciB0aGUgd2hvbGUgY2hhaW4gaGFzIHByb2Nlc3NlZCB0aGUgY2FuY2VsIHJlcXVlc3RcbiAqIGFuZCBhbGwgYXR0YWNoZWQgY2FsbGJhY2tzIHVwIHRvIHRoYXQgbW9tZW50IGhhdmUgcnVuLlxuICpcbiAqIEFsbCBFUzIwMjQgcHJvbWlzZSBtZXRob2RzIChzdGF0aWMgYW5kIGluc3RhbmNlKSBhcmUgZGVmaW5lZCBvbiBDYW5jZWxsYWJsZVByb21pc2UsXG4gKiBidXQgYWN0dWFsIGF2YWlsYWJpbGl0eSBtYXkgdmFyeSB3aXRoIE9TL3dlYnZpZXcgdmVyc2lvbi5cbiAqXG4gKiBJbiBsaW5lIHdpdGggdGhlIHByb3Bvc2FsIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXJtLWJ1aWx0aW4tc3ViY2xhc3NpbmcsXG4gKiBgQ2FuY2VsbGFibGVQcm9taXNlYCBkb2VzIG5vdCBzdXBwb3J0IHRyYW5zcGFyZW50IHN1YmNsYXNzaW5nLlxuICogRXh0ZW5kZXJzIHNob3VsZCB0YWtlIGNhcmUgdG8gcHJvdmlkZSB0aGVpciBvd24gbWV0aG9kIGltcGxlbWVudGF0aW9ucy5cbiAqIFRoaXMgbWlnaHQgYmUgcmVjb25zaWRlcmVkIGluIGNhc2UgdGhlIHByb3Bvc2FsIGlzIHJldGlyZWQuXG4gKlxuICogQ2FuY2VsbGFibGVQcm9taXNlIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlIERPTSBQcm9taXNlIG9iamVjdFxuICogYW5kIGlzIGNvbXBsaWFudCB3aXRoIHRoZSBbUHJvbWlzZXMvQSsgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8pXG4gKiAoaXQgcGFzc2VzIHRoZSBbY29tcGxpYW5jZSBzdWl0ZV0oaHR0cHM6Ly9naXRodWIuY29tL3Byb21pc2VzLWFwbHVzL3Byb21pc2VzLXRlc3RzKSlcbiAqIGlmIHNvIGlzIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQ2FuY2VsbGFibGVQcm9taXNlPFQ+IGV4dGVuZHMgUHJvbWlzZTxUPiBpbXBsZW1lbnRzIFByb21pc2VMaWtlPFQ+LCBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFQ+IHtcbiAgICAvLyBQcml2YXRlIGZpZWxkcy5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgcHJpdmF0ZSBbYmFycmllclN5bV0hOiBQYXJ0aWFsPFByb21pc2VXaXRoUmVzb2x2ZXJzPHZvaWQ+PiB8IG51bGw7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgW2NhbmNlbEltcGxTeW1dITogKHJlYXNvbjogQ2FuY2VsRXJyb3IpID0+IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYENhbmNlbGxhYmxlUHJvbWlzZWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXhlY3V0b3IgLSBBIGNhbGxiYWNrIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcHJvbWlzZS4gVGhpcyBjYWxsYmFjayBpcyBwYXNzZWQgdHdvIGFyZ3VtZW50czpcbiAgICAgKiAgICAgICAgICAgICAgICAgICBhIGByZXNvbHZlYCBjYWxsYmFjayB1c2VkIHRvIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aCBhIHZhbHVlXG4gICAgICogICAgICAgICAgICAgICAgICAgb3IgdGhlIHJlc3VsdCBvZiBhbm90aGVyIHByb21pc2UgKHBvc3NpYmx5IGNhbmNlbGxhYmxlKSxcbiAgICAgKiAgICAgICAgICAgICAgICAgICBhbmQgYSBgcmVqZWN0YCBjYWxsYmFjayB1c2VkIHRvIHJlamVjdCB0aGUgcHJvbWlzZSB3aXRoIGEgcHJvdmlkZWQgcmVhc29uIG9yIGVycm9yLlxuICAgICAqICAgICAgICAgICAgICAgICAgIElmIHRoZSB2YWx1ZSBwcm92aWRlZCB0byB0aGUgYHJlc29sdmVgIGNhbGxiYWNrIGlzIGEgdGhlbmFibGUgX2FuZF8gY2FuY2VsbGFibGUgb2JqZWN0XG4gICAgICogICAgICAgICAgICAgICAgICAgKGl0IGhhcyBhIGB0aGVuYCBfYW5kXyBhIGBjYW5jZWxgIG1ldGhvZCksXG4gICAgICogICAgICAgICAgICAgICAgICAgY2FuY2VsbGF0aW9uIHJlcXVlc3RzIHdpbGwgYmUgZm9yd2FyZGVkIHRvIHRoYXQgb2JqZWN0IGFuZCB0aGUgb25jYW5jZWxsZWQgd2lsbCBub3QgYmUgaW52b2tlZCBhbnltb3JlLlxuICAgICAqICAgICAgICAgICAgICAgICAgIElmIGFueSBvbmUgb2YgdGhlIHR3byBjYWxsYmFja3MgaXMgY2FsbGVkIF9hZnRlcl8gdGhlIHByb21pc2UgaGFzIGJlZW4gY2FuY2VsbGVkLFxuICAgICAqICAgICAgICAgICAgICAgICAgIHRoZSBwcm92aWRlZCB2YWx1ZXMgd2lsbCBiZSBjYW5jZWxsZWQgYW5kIHJlc29sdmVkIGFzIHVzdWFsLFxuICAgICAqICAgICAgICAgICAgICAgICAgIGJ1dCB0aGVpciByZXN1bHRzIHdpbGwgYmUgZGlzY2FyZGVkLlxuICAgICAqICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHRoZSByZXNvbHV0aW9uIHByb2Nlc3MgdWx0aW1hdGVseSBlbmRzIHVwIGluIGEgcmVqZWN0aW9uXG4gICAgICogICAgICAgICAgICAgICAgICAgdGhhdCBpcyBub3QgZHVlIHRvIGNhbmNlbGxhdGlvbiwgdGhlIHJlamVjdGlvbiByZWFzb25cbiAgICAgKiAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHdyYXBwZWQgaW4gYSB7QGxpbmsgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3J9XG4gICAgICogICAgICAgICAgICAgICAgICAgYW5kIGJ1YmJsZWQgdXAgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbi5cbiAgICAgKiBAcGFyYW0gb25jYW5jZWxsZWQgLSBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQgYW55IG9wZXJhdGlvblxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ZWQgYnkgdGhlIGV4ZWN1dG9yIGlzIHByb3Blcmx5IGhhbHRlZCB1cG9uIGNhbmNlbGxhdGlvbi5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbmFsIGNhbGxiYWNrIGNhbiBiZSB1c2VkIHRvIHRoYXQgcHVycG9zZS5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBJdCB3aWxsIGJlIGNhbGxlZCBfc3luY2hyb25vdXNseV8gd2l0aCBhIGNhbmNlbGxhdGlvbiBjYXVzZVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIHdoZW4gY2FuY2VsbGF0aW9uIGlzIHJlcXVlc3RlZCwgX2FmdGVyXyB0aGUgcHJvbWlzZSBoYXMgYWxyZWFkeSByZWplY3RlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIHdpdGggYSB7QGxpbmsgQ2FuY2VsRXJyb3J9LCBidXQgX2JlZm9yZV9cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBhbnkge0BsaW5rIHRoZW59L3tAbGluayBjYXRjaH0ve0BsaW5rIGZpbmFsbHl9IGNhbGxiYWNrIHJ1bnMuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGNhbGxiYWNrIHJldHVybnMgYSB0aGVuYWJsZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSB7QGxpbmsgY2FuY2VsfVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIHdpbGwgb25seSBmdWxmaWxsIGFmdGVyIHRoZSBmb3JtZXIgaGFzIHNldHRsZWQuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgVW5oYW5kbGVkIGV4Y2VwdGlvbnMgb3IgcmVqZWN0aW9ucyBmcm9tIHRoZSBjYWxsYmFjayB3aWxsIGJlIHdyYXBwZWRcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBpbiBhIHtAbGluayBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcn0gYW5kIGJ1YmJsZWQgdXAgYXMgdW5oYW5kbGVkIHJlamVjdGlvbnMuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGByZXNvbHZlYCBjYWxsYmFjayBpcyBjYWxsZWQgYmVmb3JlIGNhbmNlbGxhdGlvbiB3aXRoIGEgY2FuY2VsbGFibGUgcHJvbWlzZSxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxsYXRpb24gcmVxdWVzdHMgb24gdGhpcyBwcm9taXNlIHdpbGwgYmUgZGl2ZXJ0ZWQgdG8gdGhhdCBwcm9taXNlLFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgb3JpZ2luYWwgYG9uY2FuY2VsbGVkYCBjYWxsYmFjayB3aWxsIGJlIGRpc2NhcmRlZC5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihleGVjdXRvcjogQ2FuY2VsbGFibGVQcm9taXNlRXhlY3V0b3I8VD4sIG9uY2FuY2VsbGVkPzogQ2FuY2VsbGFibGVQcm9taXNlQ2FuY2VsbGVyKSB7XG4gICAgICAgIGxldCByZXNvbHZlITogKHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQ7XG4gICAgICAgIGxldCByZWplY3QhOiAocmVhc29uPzogYW55KSA9PiB2b2lkO1xuICAgICAgICBzdXBlcigocmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJlczsgcmVqZWN0ID0gcmVqOyB9KTtcblxuICAgICAgICBpZiAoKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KVtzcGVjaWVzXSAhPT0gUHJvbWlzZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbmNlbGxhYmxlUHJvbWlzZSBkb2VzIG5vdCBzdXBwb3J0IHRyYW5zcGFyZW50IHN1YmNsYXNzaW5nLiBQbGVhc2UgcmVmcmFpbiBmcm9tIG92ZXJyaWRpbmcgdGhlIFtTeW1ib2wuc3BlY2llc10gc3RhdGljIHByb3BlcnR5LlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+ID0ge1xuICAgICAgICAgICAgcHJvbWlzZTogdGhpcyxcbiAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICByZWplY3QsXG4gICAgICAgICAgICBnZXQgb25jYW5jZWxsZWQoKSB7IHJldHVybiBvbmNhbmNlbGxlZCA/PyBudWxsOyB9LFxuICAgICAgICAgICAgc2V0IG9uY2FuY2VsbGVkKGNiKSB7IG9uY2FuY2VsbGVkID0gY2IgPz8gdW5kZWZpbmVkOyB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3RhdGU6IENhbmNlbGxhYmxlUHJvbWlzZVN0YXRlID0ge1xuICAgICAgICAgICAgZ2V0IHJvb3QoKSB7IHJldHVybiBzdGF0ZTsgfSxcbiAgICAgICAgICAgIHJlc29sdmluZzogZmFsc2UsXG4gICAgICAgICAgICBzZXR0bGVkOiBmYWxzZVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFNldHVwIGNhbmNlbGxhdGlvbiBzeXN0ZW0uXG4gICAgICAgIHZvaWQgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcywge1xuICAgICAgICAgICAgW2JhcnJpZXJTeW1dOiB7XG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtjYW5jZWxJbXBsU3ltXToge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjYW5jZWxsZXJGb3IocHJvbWlzZSwgc3RhdGUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFJ1biB0aGUgYWN0dWFsIGV4ZWN1dG9yLlxuICAgICAgICBjb25zdCByZWplY3RvciA9IHJlamVjdG9yRm9yKHByb21pc2UsIHN0YXRlKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGV4ZWN1dG9yKHJlc29sdmVyRm9yKHByb21pc2UsIHN0YXRlKSwgcmVqZWN0b3IpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5yZXNvbHZpbmcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlVuaGFuZGxlZCBleGNlcHRpb24gaW4gQ2FuY2VsbGFibGVQcm9taXNlIGV4ZWN1dG9yLlwiLCBlcnIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZWplY3RvcihlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FuY2VscyBpbW1lZGlhdGVseSB0aGUgZXhlY3V0aW9uIG9mIHRoZSBvcGVyYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgcHJvbWlzZS5cbiAgICAgKiBUaGUgcHJvbWlzZSByZWplY3RzIHdpdGggYSB7QGxpbmsgQ2FuY2VsRXJyb3J9IGluc3RhbmNlIGFzIHJlYXNvbixcbiAgICAgKiB3aXRoIHRoZSB7QGxpbmsgQ2FuY2VsRXJyb3IjY2F1c2V9IHByb3BlcnR5IHNldCB0byB0aGUgZ2l2ZW4gYXJndW1lbnQsIGlmIGFueS5cbiAgICAgKlxuICAgICAqIEhhcyBubyBlZmZlY3QgaWYgY2FsbGVkIGFmdGVyIHRoZSBwcm9taXNlIGhhcyBhbHJlYWR5IHNldHRsZWQ7XG4gICAgICogcmVwZWF0ZWQgY2FsbHMgaW4gcGFydGljdWxhciBhcmUgc2FmZSwgYnV0IG9ubHkgdGhlIGZpcnN0IG9uZVxuICAgICAqIHdpbGwgc2V0IHRoZSBjYW5jZWxsYXRpb24gY2F1c2UuXG4gICAgICpcbiAgICAgKiBUaGUgYENhbmNlbEVycm9yYCBleGNlcHRpb24gX25lZWQgbm90XyBiZSBoYW5kbGVkIGV4cGxpY2l0bHkgX29uIHRoZSBwcm9taXNlcyB0aGF0IGFyZSBiZWluZyBjYW5jZWxsZWQ6X1xuICAgICAqIGNhbmNlbGxpbmcgYSBwcm9taXNlIHdpdGggbm8gYXR0YWNoZWQgcmVqZWN0aW9uIGhhbmRsZXIgZG9lcyBub3QgdHJpZ2dlciBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uIGV2ZW50LlxuICAgICAqIFRoZXJlZm9yZSwgdGhlIGZvbGxvd2luZyBpZGlvbXMgYXJlIGFsbCBlcXVhbGx5IGNvcnJlY3Q6XG4gICAgICogYGBgdHNcbiAgICAgKiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgLi4uIH0pLmNhbmNlbCgpO1xuICAgICAqIG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyAuLi4gfSkudGhlbiguLi4pLmNhbmNlbCgpO1xuICAgICAqIG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyAuLi4gfSkudGhlbiguLi4pLmNhdGNoKC4uLikuY2FuY2VsKCk7XG4gICAgICogYGBgXG4gICAgICogV2hlbmV2ZXIgc29tZSBjYW5jZWxsZWQgcHJvbWlzZSBpbiBhIGNoYWluIHJlamVjdHMgd2l0aCBhIGBDYW5jZWxFcnJvcmBcbiAgICAgKiB3aXRoIHRoZSBzYW1lIGNhbmNlbGxhdGlvbiBjYXVzZSBhcyBpdHNlbGYsIHRoZSBlcnJvciB3aWxsIGJlIGRpc2NhcmRlZCBzaWxlbnRseS5cbiAgICAgKiBIb3dldmVyLCB0aGUgYENhbmNlbEVycm9yYCBfd2lsbCBzdGlsbCBiZSBkZWxpdmVyZWRfIHRvIGFsbCBhdHRhY2hlZCByZWplY3Rpb24gaGFuZGxlcnNcbiAgICAgKiBhZGRlZCBieSB7QGxpbmsgdGhlbn0gYW5kIHJlbGF0ZWQgbWV0aG9kczpcbiAgICAgKiBgYGB0c1xuICAgICAqIGxldCBjYW5jZWxsYWJsZSA9IG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyAuLi4gfSk7XG4gICAgICogY2FuY2VsbGFibGUudGhlbigoKSA9PiB7IC4uLiB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gICAgICogY2FuY2VsbGFibGUuY2FuY2VsKCk7IC8vIEEgQ2FuY2VsRXJyb3IgaXMgcHJpbnRlZCB0byB0aGUgY29uc29sZS5cbiAgICAgKiBgYGBcbiAgICAgKiBJZiB0aGUgYENhbmNlbEVycm9yYCBpcyBub3QgaGFuZGxlZCBkb3duc3RyZWFtIGJ5IHRoZSB0aW1lIGl0IHJlYWNoZXNcbiAgICAgKiBhIF9ub24tY2FuY2VsbGVkXyBwcm9taXNlLCBpdCBfd2lsbF8gdHJpZ2dlciBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uIGV2ZW50LFxuICAgICAqIGp1c3QgbGlrZSBub3JtYWwgcmVqZWN0aW9ucyB3b3VsZDpcbiAgICAgKiBgYGB0c1xuICAgICAqIGxldCBjYW5jZWxsYWJsZSA9IG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyAuLi4gfSk7XG4gICAgICogbGV0IGNoYWluZWQgPSBjYW5jZWxsYWJsZS50aGVuKCgpID0+IHsgLi4uIH0pLnRoZW4oKCkgPT4geyAuLi4gfSk7IC8vIE5vIGNhdGNoLi4uXG4gICAgICogY2FuY2VsbGFibGUuY2FuY2VsKCk7IC8vIFVuaGFuZGxlZCByZWplY3Rpb24gZXZlbnQgb24gY2hhaW5lZCFcbiAgICAgKiBgYGBcbiAgICAgKiBUaGVyZWZvcmUsIGl0IGlzIGltcG9ydGFudCB0byBlaXRoZXIgY2FuY2VsIHdob2xlIHByb21pc2UgY2hhaW5zIGZyb20gdGhlaXIgdGFpbCxcbiAgICAgKiBhcyBzaG93biBpbiB0aGUgY29ycmVjdCBpZGlvbXMgYWJvdmUsIG9yIHRha2UgY2FyZSBvZiBoYW5kbGluZyBlcnJvcnMgZXZlcnl3aGVyZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgY2FuY2VsbGFibGUgcHJvbWlzZSB0aGF0IF9mdWxmaWxsc18gYWZ0ZXIgdGhlIGNhbmNlbCBjYWxsYmFjayAoaWYgYW55KVxuICAgICAqIGFuZCBhbGwgaGFuZGxlcnMgYXR0YWNoZWQgdXAgdG8gdGhlIGNhbGwgdG8gY2FuY2VsIGhhdmUgcnVuLlxuICAgICAqIElmIHRoZSBjYW5jZWwgY2FsbGJhY2sgcmV0dXJucyBhIHRoZW5hYmxlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSBgY2FuY2VsYFxuICAgICAqIHdpbGwgYWxzbyB3YWl0IGZvciB0aGF0IHRoZW5hYmxlIHRvIHNldHRsZS5cbiAgICAgKiBUaGlzIGVuYWJsZXMgY2FsbGVycyB0byB3YWl0IGZvciB0aGUgY2FuY2VsbGVkIG9wZXJhdGlvbiB0byB0ZXJtaW5hdGVcbiAgICAgKiB3aXRob3V0IGJlaW5nIGZvcmNlZCB0byBoYW5kbGUgcG90ZW50aWFsIGVycm9ycyBhdCB0aGUgY2FsbCBzaXRlLlxuICAgICAqIGBgYHRzXG4gICAgICogY2FuY2VsbGFibGUuY2FuY2VsKCkudGhlbigoKSA9PiB7XG4gICAgICogICAgIC8vIENsZWFudXAgZmluaXNoZWQsIGl0J3Mgc2FmZSB0byBkbyBzb21ldGhpbmcgZWxzZS5cbiAgICAgKiB9LCAoZXJyKSA9PiB7XG4gICAgICogICAgIC8vIFVucmVhY2hhYmxlOiB0aGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIGNhbmNlbCB3aWxsIG5ldmVyIHJlamVjdC5cbiAgICAgKiB9KTtcbiAgICAgKiBgYGBcbiAgICAgKiBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHByb21pc2Ugd2lsbCBfbm90XyBoYW5kbGUgaW1wbGljaXRseSBhbnkgcmVqZWN0aW9uXG4gICAgICogdGhhdCBtaWdodCBoYXZlIG9jY3VycmVkIGFscmVhZHkgaW4gdGhlIGNhbmNlbGxlZCBjaGFpbi5cbiAgICAgKiBJdCB3aWxsIGp1c3QgdHJhY2sgd2hldGhlciByZWdpc3RlcmVkIGhhbmRsZXJzIGhhdmUgYmVlbiBleGVjdXRlZCBvciBub3QuXG4gICAgICogVGhlcmVmb3JlLCB1bmhhbmRsZWQgcmVqZWN0aW9ucyB3aWxsIG5ldmVyIGJlIHNpbGVudGx5IGhhbmRsZWQgYnkgY2FsbGluZyBjYW5jZWwuXG4gICAgICovXG4gICAgY2FuY2VsKGNhdXNlPzogYW55KTogQ2FuY2VsbGFibGVQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYW5jZWxsYWJsZVByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIC8vIElOVkFSSUFOVDogdGhlIHJlc3VsdCBvZiB0aGlzW2NhbmNlbEltcGxTeW1dIGFuZCB0aGUgYmFycmllciBkbyBub3QgZXZlciByZWplY3QuXG4gICAgICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5IG1hY09TIEhpZ2ggU2llcnJhIGRvZXMgbm90IHN1cHBvcnQgUHJvbWlzZS5hbGxTZXR0bGVkLlxuICAgICAgICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgIHRoaXNbY2FuY2VsSW1wbFN5bV0obmV3IENhbmNlbEVycm9yKFwiUHJvbWlzZSBjYW5jZWxsZWQuXCIsIHsgY2F1c2UgfSkpLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRCYXJyaWVyKHRoaXMpXG4gICAgICAgICAgICBdKS50aGVuKCgpID0+IHJlc29sdmUoKSwgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQmluZHMgcHJvbWlzZSBjYW5jZWxsYXRpb24gdG8gdGhlIGFib3J0IGV2ZW50IG9mIHRoZSBnaXZlbiB7QGxpbmsgQWJvcnRTaWduYWx9LlxuICAgICAqIElmIHRoZSBzaWduYWwgaGFzIGFscmVhZHkgYWJvcnRlZCwgdGhlIHByb21pc2Ugd2lsbCBiZSBjYW5jZWxsZWQgaW1tZWRpYXRlbHkuXG4gICAgICogV2hlbiBlaXRoZXIgY29uZGl0aW9uIGlzIHZlcmlmaWVkLCB0aGUgY2FuY2VsbGF0aW9uIGNhdXNlIHdpbGwgYmUgc2V0XG4gICAgICogdG8gdGhlIHNpZ25hbCdzIGFib3J0IHJlYXNvbiAoc2VlIHtAbGluayBBYm9ydFNpZ25hbCNyZWFzb259KS5cbiAgICAgKlxuICAgICAqIEhhcyBubyBlZmZlY3QgaWYgY2FsbGVkIChvciBpZiB0aGUgc2lnbmFsIGFib3J0cykgX2FmdGVyXyB0aGUgcHJvbWlzZSBoYXMgYWxyZWFkeSBzZXR0bGVkLlxuICAgICAqIE9ubHkgdGhlIGZpcnN0IHNpZ25hbCB0byBhYm9ydCB3aWxsIHNldCB0aGUgY2FuY2VsbGF0aW9uIGNhdXNlLlxuICAgICAqXG4gICAgICogRm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgY2FuY2VsbGF0aW9uIHByb2Nlc3MsXG4gICAgICogc2VlIHtAbGluayBjYW5jZWx9IGFuZCB0aGUgYENhbmNlbGxhYmxlUHJvbWlzZWAgY29uc3RydWN0b3IuXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBlbmFibGVzIGBhd2FpdGBpbmcgY2FuY2VsbGFibGUgcHJvbWlzZXMgd2l0aG91dCBoYXZpbmdcbiAgICAgKiB0byBzdG9yZSB0aGVtIGZvciBmdXR1cmUgY2FuY2VsbGF0aW9uLCBlLmcuOlxuICAgICAqIGBgYHRzXG4gICAgICogYXdhaXQgbG9uZ1J1bm5pbmdPcGVyYXRpb24oKS5jYW5jZWxPbihzaWduYWwpO1xuICAgICAqIGBgYFxuICAgICAqIGluc3RlYWQgb2Y6XG4gICAgICogYGBgdHNcbiAgICAgKiBsZXQgcHJvbWlzZVRvQmVDYW5jZWxsZWQgPSBsb25nUnVubmluZ09wZXJhdGlvbigpO1xuICAgICAqIGF3YWl0IHByb21pc2VUb0JlQ2FuY2VsbGVkO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhpcyBwcm9taXNlLCBmb3IgbWV0aG9kIGNoYWluaW5nLlxuICAgICAqL1xuICAgIGNhbmNlbE9uKHNpZ25hbDogQWJvcnRTaWduYWwpOiBDYW5jZWxsYWJsZVByb21pc2U8VD4ge1xuICAgICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5jYW5jZWwoc2lnbmFsLnJlYXNvbilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IHZvaWQgdGhpcy5jYW5jZWwoc2lnbmFsLnJlYXNvbiksIHtjYXB0dXJlOiB0cnVlfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBjYWxsYmFja3MgZm9yIHRoZSByZXNvbHV0aW9uIGFuZC9vciByZWplY3Rpb24gb2YgdGhlIGBDYW5jZWxsYWJsZVByb21pc2VgLlxuICAgICAqXG4gICAgICogVGhlIG9wdGlvbmFsIGBvbmNhbmNlbGxlZGAgYXJndW1lbnQgd2lsbCBiZSBpbnZva2VkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLFxuICAgICAqIHdpdGggdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSBgb25jYW5jZWxsZWRgIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBXaGVuIHRoZSBwYXJlbnQgcHJvbWlzZSByZWplY3RzIG9yIGlzIGNhbmNlbGxlZCwgdGhlIGBvbnJlamVjdGVkYCBjYWxsYmFjayB3aWxsIHJ1bixcbiAgICAgKiBfZXZlbiBhZnRlciB0aGUgcmV0dXJuZWQgcHJvbWlzZSBoYXMgYmVlbiBjYW5jZWxsZWQ6X1xuICAgICAqIGluIHRoYXQgY2FzZSwgc2hvdWxkIGl0IHJlamVjdCBvciB0aHJvdywgdGhlIHJlYXNvbiB3aWxsIGJlIHdyYXBwZWRcbiAgICAgKiBpbiBhIHtAbGluayBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcn0gYW5kIGJ1YmJsZWQgdXAgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvbmZ1bGZpbGxlZCBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZSB3aGVuIHRoZSBQcm9taXNlIGlzIHJlc29sdmVkLlxuICAgICAqIEBwYXJhbSBvbnJlamVjdGVkIFRoZSBjYWxsYmFjayB0byBleGVjdXRlIHdoZW4gdGhlIFByb21pc2UgaXMgcmVqZWN0ZWQuXG4gICAgICogQHJldHVybnMgQSBgQ2FuY2VsbGFibGVQcm9taXNlYCBmb3IgdGhlIGNvbXBsZXRpb24gb2Ygd2hpY2hldmVyIGNhbGxiYWNrIGlzIGV4ZWN1dGVkLlxuICAgICAqIFRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGhvb2tlZCB1cCB0byBwcm9wYWdhdGUgY2FuY2VsbGF0aW9uIHJlcXVlc3RzIHVwIHRoZSBjaGFpbiwgYnV0IG5vdCBkb3duOlxuICAgICAqXG4gICAgICogICAtIGlmIHRoZSBwYXJlbnQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsIHRoZSBgb25yZWplY3RlZGAgaGFuZGxlciB3aWxsIGJlIGludm9rZWQgd2l0aCBhIGBDYW5jZWxFcnJvcmBcbiAgICAgKiAgICAgYW5kIHRoZSByZXR1cm5lZCBwcm9taXNlIF93aWxsIHJlc29sdmUgcmVndWxhcmx5XyB3aXRoIGl0cyByZXN1bHQ7XG4gICAgICogICAtIGNvbnZlcnNlbHksIGlmIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGNhbmNlbGxlZCwgX3RoZSBwYXJlbnQgcHJvbWlzZSBpcyBjYW5jZWxsZWQgdG9vO19cbiAgICAgKiAgICAgdGhlIGBvbnJlamVjdGVkYCBoYW5kbGVyIHdpbGwgc3RpbGwgYmUgaW52b2tlZCB3aXRoIHRoZSBwYXJlbnQncyBgQ2FuY2VsRXJyb3JgLFxuICAgICAqICAgICBidXQgaXRzIHJlc3VsdCB3aWxsIGJlIGRpc2NhcmRlZFxuICAgICAqICAgICBhbmQgdGhlIHJldHVybmVkIHByb21pc2Ugd2lsbCByZWplY3Qgd2l0aCBhIGBDYW5jZWxFcnJvcmAgYXMgd2VsbC5cbiAgICAgKlxuICAgICAqIFRoZSBwcm9taXNlIHJldHVybmVkIGZyb20ge0BsaW5rIGNhbmNlbH0gd2lsbCBmdWxmaWxsIG9ubHkgYWZ0ZXIgYWxsIGF0dGFjaGVkIGhhbmRsZXJzXG4gICAgICogdXAgdGhlIGVudGlyZSBwcm9taXNlIGNoYWluIGhhdmUgYmVlbiBydW4uXG4gICAgICpcbiAgICAgKiBJZiBlaXRoZXIgY2FsbGJhY2sgcmV0dXJucyBhIGNhbmNlbGxhYmxlIHByb21pc2UsXG4gICAgICogY2FuY2VsbGF0aW9uIHJlcXVlc3RzIHdpbGwgYmUgZGl2ZXJ0ZWQgdG8gaXQsXG4gICAgICogYW5kIHRoZSBzcGVjaWZpZWQgYG9uY2FuY2VsbGVkYCBjYWxsYmFjayB3aWxsIGJlIGRpc2NhcmRlZC5cbiAgICAgKi9cbiAgICB0aGVuPFRSZXN1bHQxID0gVCwgVFJlc3VsdDIgPSBuZXZlcj4ob25mdWxmaWxsZWQ/OiAoKHZhbHVlOiBUKSA9PiBUUmVzdWx0MSB8IFByb21pc2VMaWtlPFRSZXN1bHQxPiB8IENhbmNlbGxhYmxlUHJvbWlzZUxpa2U8VFJlc3VsdDE+KSB8IHVuZGVmaW5lZCB8IG51bGwsIG9ucmVqZWN0ZWQ/OiAoKHJlYXNvbjogYW55KSA9PiBUUmVzdWx0MiB8IFByb21pc2VMaWtlPFRSZXN1bHQyPiB8IENhbmNlbGxhYmxlUHJvbWlzZUxpa2U8VFJlc3VsdDI+KSB8IHVuZGVmaW5lZCB8IG51bGwsIG9uY2FuY2VsbGVkPzogQ2FuY2VsbGFibGVQcm9taXNlQ2FuY2VsbGVyKTogQ2FuY2VsbGFibGVQcm9taXNlPFRSZXN1bHQxIHwgVFJlc3VsdDI+IHtcbiAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIENhbmNlbGxhYmxlUHJvbWlzZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5jZWxsYWJsZVByb21pc2UucHJvdG90eXBlLnRoZW4gY2FsbGVkIG9uIGFuIGludmFsaWQgb2JqZWN0LlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5PVEU6IFR5cGVTY3JpcHQncyBidWlsdC1pbiB0eXBlIGZvciB0aGVuIGlzIGJyb2tlbixcbiAgICAgICAgLy8gYXMgaXQgYWxsb3dzIHNwZWNpZnlpbmcgYW4gYXJiaXRyYXJ5IFRSZXN1bHQxICE9IFQgZXZlbiB3aGVuIG9uZnVsZmlsbGVkIGlzIG5vdCBhIGZ1bmN0aW9uLlxuICAgICAgICAvLyBXZSBjYW5ub3QgZml4IGl0IGlmIHdlIHdhbnQgdG8gQ2FuY2VsbGFibGVQcm9taXNlIHRvIGltcGxlbWVudCBQcm9taXNlTGlrZTxUPi5cblxuICAgICAgICBpZiAoIWlzQ2FsbGFibGUob25mdWxmaWxsZWQpKSB7IG9uZnVsZmlsbGVkID0gaWRlbnRpdHkgYXMgYW55OyB9XG4gICAgICAgIGlmICghaXNDYWxsYWJsZShvbnJlamVjdGVkKSkgeyBvbnJlamVjdGVkID0gdGhyb3dlcjsgfVxuXG4gICAgICAgIGlmIChvbmZ1bGZpbGxlZCA9PT0gaWRlbnRpdHkgJiYgb25yZWplY3RlZCA9PSB0aHJvd2VyKSB7XG4gICAgICAgICAgICAvLyBTaG9ydGN1dCBmb3IgdHJpdmlhbCBhcmd1bWVudHMuXG4gICAgICAgICAgICByZXR1cm4gbmV3IENhbmNlbGxhYmxlUHJvbWlzZSgocmVzb2x2ZSkgPT4gcmVzb2x2ZSh0aGlzIGFzIGFueSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmFycmllcjogUGFydGlhbDxQcm9taXNlV2l0aFJlc29sdmVyczx2b2lkPj4gPSB7fTtcbiAgICAgICAgdGhpc1tiYXJyaWVyU3ltXSA9IGJhcnJpZXI7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBDYW5jZWxsYWJsZVByb21pc2U8VFJlc3VsdDEgfCBUUmVzdWx0Mj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdm9pZCBzdXBlci50aGVuKFxuICAgICAgICAgICAgICAgICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1tiYXJyaWVyU3ltXSA9PT0gYmFycmllcikgeyB0aGlzW2JhcnJpZXJTeW1dID0gbnVsbDsgfVxuICAgICAgICAgICAgICAgICAgICBiYXJyaWVyLnJlc29sdmU/LigpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9uZnVsZmlsbGVkISh2YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAocmVhc29uPykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1tiYXJyaWVyU3ltXSA9PT0gYmFycmllcikgeyB0aGlzW2JhcnJpZXJTeW1dID0gbnVsbDsgfVxuICAgICAgICAgICAgICAgICAgICBiYXJyaWVyLnJlc29sdmU/LigpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9ucmVqZWN0ZWQhKHJlYXNvbikpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSwgYXN5bmMgKGNhdXNlPykgPT4ge1xuICAgICAgICAgICAgLy9jYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb25jYW5jZWxsZWQ/LihjYXVzZSk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2FuY2VsKGNhdXNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgYSBjYWxsYmFjayBmb3Igb25seSB0aGUgcmVqZWN0aW9uIG9mIHRoZSBQcm9taXNlLlxuICAgICAqXG4gICAgICogVGhlIG9wdGlvbmFsIGBvbmNhbmNlbGxlZGAgYXJndW1lbnQgd2lsbCBiZSBpbnZva2VkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLFxuICAgICAqIHdpdGggdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSBgb25jYW5jZWxsZWRgIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBXaGVuIHRoZSBwYXJlbnQgcHJvbWlzZSByZWplY3RzIG9yIGlzIGNhbmNlbGxlZCwgdGhlIGBvbnJlamVjdGVkYCBjYWxsYmFjayB3aWxsIHJ1bixcbiAgICAgKiBfZXZlbiBhZnRlciB0aGUgcmV0dXJuZWQgcHJvbWlzZSBoYXMgYmVlbiBjYW5jZWxsZWQ6X1xuICAgICAqIGluIHRoYXQgY2FzZSwgc2hvdWxkIGl0IHJlamVjdCBvciB0aHJvdywgdGhlIHJlYXNvbiB3aWxsIGJlIHdyYXBwZWRcbiAgICAgKiBpbiBhIHtAbGluayBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcn0gYW5kIGJ1YmJsZWQgdXAgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbi5cbiAgICAgKlxuICAgICAqIEl0IGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgKiBgYGB0c1xuICAgICAqIGNhbmNlbGxhYmxlUHJvbWlzZS50aGVuKHVuZGVmaW5lZCwgb25yZWplY3RlZCwgb25jYW5jZWxsZWQpO1xuICAgICAqIGBgYFxuICAgICAqIGFuZCB0aGUgc2FtZSBjYXZlYXRzIGFwcGx5LlxuICAgICAqXG4gICAgICogQHJldHVybnMgQSBQcm9taXNlIGZvciB0aGUgY29tcGxldGlvbiBvZiB0aGUgY2FsbGJhY2suXG4gICAgICogQ2FuY2VsbGF0aW9uIHJlcXVlc3RzIG9uIHRoZSByZXR1cm5lZCBwcm9taXNlXG4gICAgICogd2lsbCBwcm9wYWdhdGUgdXAgdGhlIGNoYWluIHRvIHRoZSBwYXJlbnQgcHJvbWlzZSxcbiAgICAgKiBidXQgbm90IGluIHRoZSBvdGhlciBkaXJlY3Rpb24uXG4gICAgICpcbiAgICAgKiBUaGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIHtAbGluayBjYW5jZWx9IHdpbGwgZnVsZmlsbCBvbmx5IGFmdGVyIGFsbCBhdHRhY2hlZCBoYW5kbGVyc1xuICAgICAqIHVwIHRoZSBlbnRpcmUgcHJvbWlzZSBjaGFpbiBoYXZlIGJlZW4gcnVuLlxuICAgICAqXG4gICAgICogSWYgYG9ucmVqZWN0ZWRgIHJldHVybnMgYSBjYW5jZWxsYWJsZSBwcm9taXNlLFxuICAgICAqIGNhbmNlbGxhdGlvbiByZXF1ZXN0cyB3aWxsIGJlIGRpdmVydGVkIHRvIGl0LFxuICAgICAqIGFuZCB0aGUgc3BlY2lmaWVkIGBvbmNhbmNlbGxlZGAgY2FsbGJhY2sgd2lsbCBiZSBkaXNjYXJkZWQuXG4gICAgICogU2VlIHtAbGluayB0aGVufSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqL1xuICAgIGNhdGNoPFRSZXN1bHQgPSBuZXZlcj4ob25yZWplY3RlZD86ICgocmVhc29uOiBhbnkpID0+IChQcm9taXNlTGlrZTxUUmVzdWx0PiB8IFRSZXN1bHQpKSB8IHVuZGVmaW5lZCB8IG51bGwsIG9uY2FuY2VsbGVkPzogQ2FuY2VsbGFibGVQcm9taXNlQ2FuY2VsbGVyKTogQ2FuY2VsbGFibGVQcm9taXNlPFQgfCBUUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvbnJlamVjdGVkLCBvbmNhbmNlbGxlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgYSBjYWxsYmFjayB0aGF0IGlzIGludm9rZWQgd2hlbiB0aGUgQ2FuY2VsbGFibGVQcm9taXNlIGlzIHNldHRsZWQgKGZ1bGZpbGxlZCBvciByZWplY3RlZCkuIFRoZVxuICAgICAqIHJlc29sdmVkIHZhbHVlIGNhbm5vdCBiZSBhY2Nlc3NlZCBvciBtb2RpZmllZCBmcm9tIHRoZSBjYWxsYmFjay5cbiAgICAgKiBUaGUgcmV0dXJuZWQgcHJvbWlzZSB3aWxsIHNldHRsZSBpbiB0aGUgc2FtZSBzdGF0ZSBhcyB0aGUgb3JpZ2luYWwgb25lXG4gICAgICogYWZ0ZXIgdGhlIHByb3ZpZGVkIGNhbGxiYWNrIGhhcyBjb21wbGV0ZWQgZXhlY3V0aW9uLFxuICAgICAqIHVubGVzcyB0aGUgY2FsbGJhY2sgdGhyb3dzIG9yIHJldHVybnMgYSByZWplY3RpbmcgcHJvbWlzZSxcbiAgICAgKiBpbiB3aGljaCBjYXNlIHRoZSByZXR1cm5lZCBwcm9taXNlIHdpbGwgcmVqZWN0IGFzIHdlbGwuXG4gICAgICpcbiAgICAgKiBUaGUgb3B0aW9uYWwgYG9uY2FuY2VsbGVkYCBhcmd1bWVudCB3aWxsIGJlIGludm9rZWQgd2hlbiB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsXG4gICAgICogd2l0aCB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGBvbmNhbmNlbGxlZGAgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIE9uY2UgdGhlIHBhcmVudCBwcm9taXNlIHNldHRsZXMsIHRoZSBgb25maW5hbGx5YCBjYWxsYmFjayB3aWxsIHJ1bixcbiAgICAgKiBfZXZlbiBhZnRlciB0aGUgcmV0dXJuZWQgcHJvbWlzZSBoYXMgYmVlbiBjYW5jZWxsZWQ6X1xuICAgICAqIGluIHRoYXQgY2FzZSwgc2hvdWxkIGl0IHJlamVjdCBvciB0aHJvdywgdGhlIHJlYXNvbiB3aWxsIGJlIHdyYXBwZWRcbiAgICAgKiBpbiBhIHtAbGluayBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcn0gYW5kIGJ1YmJsZWQgdXAgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbi5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIHtAbGluayB0aGVufSBhbmQgdGhlIHNhbWUgY2F2ZWF0cyBhcHBseS5cbiAgICAgKiBJdCBpcyBwb2x5ZmlsbGVkLCBoZW5jZSBhdmFpbGFibGUgaW4gZXZlcnkgT1Mvd2VidmlldyB2ZXJzaW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMgQSBQcm9taXNlIGZvciB0aGUgY29tcGxldGlvbiBvZiB0aGUgY2FsbGJhY2suXG4gICAgICogQ2FuY2VsbGF0aW9uIHJlcXVlc3RzIG9uIHRoZSByZXR1cm5lZCBwcm9taXNlXG4gICAgICogd2lsbCBwcm9wYWdhdGUgdXAgdGhlIGNoYWluIHRvIHRoZSBwYXJlbnQgcHJvbWlzZSxcbiAgICAgKiBidXQgbm90IGluIHRoZSBvdGhlciBkaXJlY3Rpb24uXG4gICAgICpcbiAgICAgKiBUaGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIHtAbGluayBjYW5jZWx9IHdpbGwgZnVsZmlsbCBvbmx5IGFmdGVyIGFsbCBhdHRhY2hlZCBoYW5kbGVyc1xuICAgICAqIHVwIHRoZSBlbnRpcmUgcHJvbWlzZSBjaGFpbiBoYXZlIGJlZW4gcnVuLlxuICAgICAqXG4gICAgICogSWYgYG9uZmluYWxseWAgcmV0dXJucyBhIGNhbmNlbGxhYmxlIHByb21pc2UsXG4gICAgICogY2FuY2VsbGF0aW9uIHJlcXVlc3RzIHdpbGwgYmUgZGl2ZXJ0ZWQgdG8gaXQsXG4gICAgICogYW5kIHRoZSBzcGVjaWZpZWQgYG9uY2FuY2VsbGVkYCBjYWxsYmFjayB3aWxsIGJlIGRpc2NhcmRlZC5cbiAgICAgKiBTZWUge0BsaW5rIHRoZW59IGZvciBtb3JlIGRldGFpbHMuXG4gICAgICovXG4gICAgZmluYWxseShvbmZpbmFsbHk/OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQgfCBudWxsLCBvbmNhbmNlbGxlZD86IENhbmNlbGxhYmxlUHJvbWlzZUNhbmNlbGxlcik6IENhbmNlbGxhYmxlUHJvbWlzZTxUPiB7XG4gICAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBDYW5jZWxsYWJsZVByb21pc2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2FuY2VsbGFibGVQcm9taXNlLnByb3RvdHlwZS5maW5hbGx5IGNhbGxlZCBvbiBhbiBpbnZhbGlkIG9iamVjdC5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzQ2FsbGFibGUob25maW5hbGx5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGhlbihvbmZpbmFsbHksIG9uZmluYWxseSwgb25jYW5jZWxsZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudGhlbihcbiAgICAgICAgICAgICh2YWx1ZSkgPT4gQ2FuY2VsbGFibGVQcm9taXNlLnJlc29sdmUob25maW5hbGx5KCkpLnRoZW4oKCkgPT4gdmFsdWUpLFxuICAgICAgICAgICAgKHJlYXNvbj8pID0+IENhbmNlbGxhYmxlUHJvbWlzZS5yZXNvbHZlKG9uZmluYWxseSgpKS50aGVuKCgpID0+IHsgdGhyb3cgcmVhc29uOyB9KSxcbiAgICAgICAgICAgIG9uY2FuY2VsbGVkLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdlIHVzZSB0aGUgYFtTeW1ib2wuc3BlY2llc11gIHN0YXRpYyBwcm9wZXJ0eSwgaWYgYXZhaWxhYmxlLFxuICAgICAqIHRvIGRpc2FibGUgdGhlIGJ1aWx0LWluIGF1dG9tYXRpYyBzdWJjbGFzc2luZyBmZWF0dXJlcyBmcm9tIHtAbGluayBQcm9taXNlfS5cbiAgICAgKiBJdCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyB0aGF0IGV4dGVuZGVycyBkbyBub3Qgb3ZlcnJpZGUgdGhpcy5cbiAgICAgKiBPbmNlIHRoZSBwcm9wb3NhbCBhdCBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1ybS1idWlsdGluLXN1YmNsYXNzaW5nXG4gICAgICogaXMgZWl0aGVyIGFjY2VwdGVkIG9yIHJldGlyZWQsIHRoaXMgaW1wbGVtZW50YXRpb24gd2lsbCBoYXZlIHRvIGJlIHJldmlzZWQgYWNjb3JkaW5nbHkuXG4gICAgICpcbiAgICAgKiBAaWdub3JlXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgc3RhdGljIGdldCBbc3BlY2llc10oKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBDYW5jZWxsYWJsZVByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIGFuIGFycmF5IG9mIHJlc3VsdHNcbiAgICAgKiB3aGVuIGFsbCBvZiB0aGUgcHJvdmlkZWQgUHJvbWlzZXMgcmVzb2x2ZSwgb3IgcmVqZWN0ZWQgd2hlbiBhbnkgUHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICAgKlxuICAgICAqIEV2ZXJ5IG9uZSBvZiB0aGUgcHJvdmlkZWQgb2JqZWN0cyB0aGF0IGlzIGEgdGhlbmFibGUgX2FuZF8gY2FuY2VsbGFibGUgb2JqZWN0XG4gICAgICogd2lsbCBiZSBjYW5jZWxsZWQgd2hlbiB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsIHdpdGggdGhlIHNhbWUgY2F1c2UuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgYWxsPFQ+KHZhbHVlczogSXRlcmFibGU8VCB8IFByb21pc2VMaWtlPFQ+Pik6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFQ+W10+O1xuICAgIHN0YXRpYyBhbGw8VCBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSB8IFtdPih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8eyAtcmVhZG9ubHkgW1AgaW4ga2V5b2YgVF06IEF3YWl0ZWQ8VFtQXT47IH0+O1xuICAgIHN0YXRpYyBhbGw8VCBleHRlbmRzIEl0ZXJhYmxlPHVua25vd24+IHwgQXJyYXlMaWtlPHVua25vd24+Pih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBsZXQgY29sbGVjdGVkID0gQXJyYXkuZnJvbSh2YWx1ZXMpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gY29sbGVjdGVkLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyBDYW5jZWxsYWJsZVByb21pc2UucmVzb2x2ZShjb2xsZWN0ZWQpXG4gICAgICAgICAgICA6IG5ldyBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIHZvaWQgUHJvbWlzZS5hbGwoY29sbGVjdGVkKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICB9LCAoY2F1c2U/KTogUHJvbWlzZTx2b2lkPiA9PiBjYW5jZWxBbGwocHJvbWlzZSwgY29sbGVjdGVkLCBjYXVzZSkpO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgQ2FuY2VsbGFibGVQcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhbiBhcnJheSBvZiByZXN1bHRzXG4gICAgICogd2hlbiBhbGwgb2YgdGhlIHByb3ZpZGVkIFByb21pc2VzIHJlc29sdmUgb3IgcmVqZWN0LlxuICAgICAqXG4gICAgICogRXZlcnkgb25lIG9mIHRoZSBwcm92aWRlZCBvYmplY3RzIHRoYXQgaXMgYSB0aGVuYWJsZSBfYW5kXyBjYW5jZWxsYWJsZSBvYmplY3RcbiAgICAgKiB3aWxsIGJlIGNhbmNlbGxlZCB3aGVuIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGNhbmNlbGxlZCwgd2l0aCB0aGUgc2FtZSBjYXVzZS5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyBhbGxTZXR0bGVkPFQ+KHZhbHVlczogSXRlcmFibGU8VCB8IFByb21pc2VMaWtlPFQ+Pik6IENhbmNlbGxhYmxlUHJvbWlzZTxQcm9taXNlU2V0dGxlZFJlc3VsdDxBd2FpdGVkPFQ+PltdPjtcbiAgICBzdGF0aWMgYWxsU2V0dGxlZDxUIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdIHwgW10+KHZhbHVlczogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTx7IC1yZWFkb25seSBbUCBpbiBrZXlvZiBUXTogUHJvbWlzZVNldHRsZWRSZXN1bHQ8QXdhaXRlZDxUW1BdPj47IH0+O1xuICAgIHN0YXRpYyBhbGxTZXR0bGVkPFQgZXh0ZW5kcyBJdGVyYWJsZTx1bmtub3duPiB8IEFycmF5TGlrZTx1bmtub3duPj4odmFsdWVzOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgbGV0IGNvbGxlY3RlZCA9IEFycmF5LmZyb20odmFsdWVzKTtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IGNvbGxlY3RlZC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gQ2FuY2VsbGFibGVQcm9taXNlLnJlc29sdmUoY29sbGVjdGVkKVxuICAgICAgICAgICAgOiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICB2b2lkIFByb21pc2UuYWxsU2V0dGxlZChjb2xsZWN0ZWQpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgIH0sIChjYXVzZT8pOiBQcm9taXNlPHZvaWQ+ID0+IGNhbmNlbEFsbChwcm9taXNlLCBjb2xsZWN0ZWQsIGNhdXNlKSk7XG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBhbnkgZnVuY3Rpb24gcmV0dXJucyBhIHByb21pc2UgdGhhdCBpcyBmdWxmaWxsZWQgYnkgdGhlIGZpcnN0IGdpdmVuIHByb21pc2UgdG8gYmUgZnVsZmlsbGVkLFxuICAgICAqIG9yIHJlamVjdGVkIHdpdGggYW4gQWdncmVnYXRlRXJyb3IgY29udGFpbmluZyBhbiBhcnJheSBvZiByZWplY3Rpb24gcmVhc29uc1xuICAgICAqIGlmIGFsbCBvZiB0aGUgZ2l2ZW4gcHJvbWlzZXMgYXJlIHJlamVjdGVkLlxuICAgICAqIEl0IHJlc29sdmVzIGFsbCBlbGVtZW50cyBvZiB0aGUgcGFzc2VkIGl0ZXJhYmxlIHRvIHByb21pc2VzIGFzIGl0IHJ1bnMgdGhpcyBhbGdvcml0aG0uXG4gICAgICpcbiAgICAgKiBFdmVyeSBvbmUgb2YgdGhlIHByb3ZpZGVkIG9iamVjdHMgdGhhdCBpcyBhIHRoZW5hYmxlIF9hbmRfIGNhbmNlbGxhYmxlIG9iamVjdFxuICAgICAqIHdpbGwgYmUgY2FuY2VsbGVkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLCB3aXRoIHRoZSBzYW1lIGNhdXNlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIGFueTxUPih2YWx1ZXM6IEl0ZXJhYmxlPFQgfCBQcm9taXNlTGlrZTxUPj4pOiBDYW5jZWxsYWJsZVByb21pc2U8QXdhaXRlZDxUPj47XG4gICAgc3RhdGljIGFueTxUIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdIHwgW10+KHZhbHVlczogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFRbbnVtYmVyXT4+O1xuICAgIHN0YXRpYyBhbnk8VCBleHRlbmRzIEl0ZXJhYmxlPHVua25vd24+IHwgQXJyYXlMaWtlPHVua25vd24+Pih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBsZXQgY29sbGVjdGVkID0gQXJyYXkuZnJvbSh2YWx1ZXMpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gY29sbGVjdGVkLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyBDYW5jZWxsYWJsZVByb21pc2UucmVzb2x2ZShjb2xsZWN0ZWQpXG4gICAgICAgICAgICA6IG5ldyBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIHZvaWQgUHJvbWlzZS5hbnkoY29sbGVjdGVkKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICB9LCAoY2F1c2U/KTogUHJvbWlzZTx2b2lkPiA9PiBjYW5jZWxBbGwocHJvbWlzZSwgY29sbGVjdGVkLCBjYXVzZSkpO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIG9yIHJlamVjdGVkIHdoZW4gYW55IG9mIHRoZSBwcm92aWRlZCBQcm9taXNlcyBhcmUgcmVzb2x2ZWQgb3IgcmVqZWN0ZWQuXG4gICAgICpcbiAgICAgKiBFdmVyeSBvbmUgb2YgdGhlIHByb3ZpZGVkIG9iamVjdHMgdGhhdCBpcyBhIHRoZW5hYmxlIF9hbmRfIGNhbmNlbGxhYmxlIG9iamVjdFxuICAgICAqIHdpbGwgYmUgY2FuY2VsbGVkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLCB3aXRoIHRoZSBzYW1lIGNhdXNlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHJhY2U8VD4odmFsdWVzOiBJdGVyYWJsZTxUIHwgUHJvbWlzZUxpa2U8VD4+KTogQ2FuY2VsbGFibGVQcm9taXNlPEF3YWl0ZWQ8VD4+O1xuICAgIHN0YXRpYyByYWNlPFQgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gfCBbXT4odmFsdWVzOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPEF3YWl0ZWQ8VFtudW1iZXJdPj47XG4gICAgc3RhdGljIHJhY2U8VCBleHRlbmRzIEl0ZXJhYmxlPHVua25vd24+IHwgQXJyYXlMaWtlPHVua25vd24+Pih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBsZXQgY29sbGVjdGVkID0gQXJyYXkuZnJvbSh2YWx1ZXMpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB2b2lkIFByb21pc2UucmFjZShjb2xsZWN0ZWQpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSwgKGNhdXNlPyk6IFByb21pc2U8dm9pZD4gPT4gY2FuY2VsQWxsKHByb21pc2UsIGNvbGxlY3RlZCwgY2F1c2UpKTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBjYW5jZWxsZWQgQ2FuY2VsbGFibGVQcm9taXNlIGZvciB0aGUgcHJvdmlkZWQgY2F1c2UuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgY2FuY2VsPFQgPSBuZXZlcj4oY2F1c2U/OiBhbnkpOiBDYW5jZWxsYWJsZVByb21pc2U8VD4ge1xuICAgICAgICBjb25zdCBwID0gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTxUPigoKSA9PiB7fSk7XG4gICAgICAgIHAuY2FuY2VsKGNhdXNlKTtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBDYW5jZWxsYWJsZVByb21pc2UgdGhhdCBjYW5jZWxzXG4gICAgICogYWZ0ZXIgdGhlIHNwZWNpZmllZCB0aW1lb3V0LCB3aXRoIHRoZSBwcm92aWRlZCBjYXVzZS5cbiAgICAgKlxuICAgICAqIElmIHRoZSB7QGxpbmsgQWJvcnRTaWduYWwudGltZW91dH0gZmFjdG9yeSBtZXRob2QgaXMgYXZhaWxhYmxlLFxuICAgICAqIGl0IGlzIHVzZWQgdG8gYmFzZSB0aGUgdGltZW91dCBvbiBfYWN0aXZlXyB0aW1lIHJhdGhlciB0aGFuIF9lbGFwc2VkXyB0aW1lLlxuICAgICAqIE90aGVyd2lzZSwgYHRpbWVvdXRgIGZhbGxzIGJhY2sgdG8ge0BsaW5rIHNldFRpbWVvdXR9LlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHRpbWVvdXQ8VCA9IG5ldmVyPihtaWxsaXNlY29uZHM6IG51bWJlciwgY2F1c2U/OiBhbnkpOiBDYW5jZWxsYWJsZVByb21pc2U8VD4ge1xuICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTxUPigoKSA9PiB7fSk7XG4gICAgICAgIGlmIChBYm9ydFNpZ25hbCAmJiB0eXBlb2YgQWJvcnRTaWduYWwgPT09ICdmdW5jdGlvbicgJiYgQWJvcnRTaWduYWwudGltZW91dCAmJiB0eXBlb2YgQWJvcnRTaWduYWwudGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgQWJvcnRTaWduYWwudGltZW91dChtaWxsaXNlY29uZHMpLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4gdm9pZCBwcm9taXNlLmNhbmNlbChjYXVzZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB2b2lkIHByb21pc2UuY2FuY2VsKGNhdXNlKSwgbWlsbGlzZWNvbmRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IENhbmNlbGxhYmxlUHJvbWlzZSB0aGF0IHJlc29sdmVzIGFmdGVyIHRoZSBzcGVjaWZpZWQgdGltZW91dC5cbiAgICAgKiBUaGUgcmV0dXJuZWQgcHJvbWlzZSBjYW4gYmUgY2FuY2VsbGVkIHdpdGhvdXQgY29uc2VxdWVuY2VzLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHNsZWVwKG1pbGxpc2Vjb25kczogbnVtYmVyKTogQ2FuY2VsbGFibGVQcm9taXNlPHZvaWQ+O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlIHRoYXQgcmVzb2x2ZXMgYWZ0ZXJcbiAgICAgKiB0aGUgc3BlY2lmaWVkIHRpbWVvdXQsIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlLlxuICAgICAqIFRoZSByZXR1cm5lZCBwcm9taXNlIGNhbiBiZSBjYW5jZWxsZWQgd2l0aG91dCBjb25zZXF1ZW5jZXMuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgc2xlZXA8VD4obWlsbGlzZWNvbmRzOiBudW1iZXIsIHZhbHVlOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+O1xuICAgIHN0YXRpYyBzbGVlcDxUID0gdm9pZD4obWlsbGlzZWNvbmRzOiBudW1iZXIsIHZhbHVlPzogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPFQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUodmFsdWUhKSwgbWlsbGlzZWNvbmRzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyByZWplY3RlZCBDYW5jZWxsYWJsZVByb21pc2UgZm9yIHRoZSBwcm92aWRlZCByZWFzb24uXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgcmVqZWN0PFQgPSBuZXZlcj4ocmVhc29uPzogYW55KTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYW5jZWxsYWJsZVByb21pc2U8VD4oKF8sIHJlamVjdCkgPT4gcmVqZWN0KHJlYXNvbikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcmVzb2x2ZWQgQ2FuY2VsbGFibGVQcm9taXNlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHJlc29sdmUoKTogQ2FuY2VsbGFibGVQcm9taXNlPHZvaWQ+O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcmVzb2x2ZWQgQ2FuY2VsbGFibGVQcm9taXNlIGZvciB0aGUgcHJvdmlkZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgcmVzb2x2ZTxUPih2YWx1ZTogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFQ+PjtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHJlc29sdmVkIENhbmNlbGxhYmxlUHJvbWlzZSBmb3IgdGhlIHByb3ZpZGVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHJlc29sdmU8VD4odmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPik6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFQ+PjtcbiAgICBzdGF0aWMgcmVzb2x2ZTxUID0gdm9pZD4odmFsdWU/OiBUIHwgUHJvbWlzZUxpa2U8VD4pOiBDYW5jZWxsYWJsZVByb21pc2U8QXdhaXRlZDxUPj4ge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBDYW5jZWxsYWJsZVByb21pc2UpIHtcbiAgICAgICAgICAgIC8vIE9wdGltaXNlIGZvciBjYW5jZWxsYWJsZSBwcm9taXNlcy5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTxhbnk+KChyZXNvbHZlKSA9PiByZXNvbHZlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBDYW5jZWxsYWJsZVByb21pc2UgYW5kIHJldHVybnMgaXQgaW4gYW4gb2JqZWN0LCBhbG9uZyB3aXRoIGl0cyByZXNvbHZlIGFuZCByZWplY3QgZnVuY3Rpb25zXG4gICAgICogYW5kIGEgZ2V0dGVyL3NldHRlciBmb3IgdGhlIGNhbmNlbGxhdGlvbiBjYWxsYmFjay5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHBvbHlmaWxsZWQsIGhlbmNlIGF2YWlsYWJsZSBpbiBldmVyeSBPUy93ZWJ2aWV3IHZlcnNpb24uXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgd2l0aFJlc29sdmVyczxUPigpOiBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+IHtcbiAgICAgICAgbGV0IHJlc3VsdDogQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxUPiA9IHsgb25jYW5jZWxsZWQ6IG51bGwgfSBhcyBhbnk7XG4gICAgICAgIHJlc3VsdC5wcm9taXNlID0gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTxUPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICByZXN1bHQucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgICAgICByZXN1bHQucmVqZWN0ID0gcmVqZWN0O1xuICAgICAgICB9LCAoY2F1c2U/OiBhbnkpID0+IHsgcmVzdWx0Lm9uY2FuY2VsbGVkPy4oY2F1c2UpOyB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGNhbGxiYWNrIHRoYXQgaW1wbGVtZW50cyB0aGUgY2FuY2VsbGF0aW9uIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGNhbmNlbGxhYmxlIHByb21pc2UuXG4gKiBUaGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIHRoZSByZXN1bHRpbmcgZnVuY3Rpb24gZG9lcyBub3QgcmVqZWN0LlxuICovXG5mdW5jdGlvbiBjYW5jZWxsZXJGb3I8VD4ocHJvbWlzZTogQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxUPiwgc3RhdGU6IENhbmNlbGxhYmxlUHJvbWlzZVN0YXRlKSB7XG4gICAgbGV0IGNhbmNlbGxhdGlvblByb21pc2U6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPiA9IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiAocmVhc29uOiBDYW5jZWxFcnJvcik6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPiA9PiB7XG4gICAgICAgIGlmICghc3RhdGUuc2V0dGxlZCkge1xuICAgICAgICAgICAgc3RhdGUuc2V0dGxlZCA9IHRydWU7XG4gICAgICAgICAgICBzdGF0ZS5yZWFzb24gPSByZWFzb247XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdChyZWFzb24pO1xuXG4gICAgICAgICAgICAvLyBBdHRhY2ggYW4gZXJyb3IgaGFuZGxlciB0aGF0IGlnbm9yZXMgdGhpcyBzcGVjaWZpYyByZWplY3Rpb24gcmVhc29uIGFuZCBub3RoaW5nIGVsc2UuXG4gICAgICAgICAgICAvLyBJbiB0aGVvcnksIGEgc2FuZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIGF0IHRoaXMgcG9pbnRcbiAgICAgICAgICAgIC8vIHNob3VsZCBhbHdheXMgcmVqZWN0IHdpdGggb3VyIGNhbmNlbGxhdGlvbiByZWFzb24sXG4gICAgICAgICAgICAvLyBoZW5jZSB0aGUgaGFuZGxlciB3aWxsIG5ldmVyIHRocm93LlxuICAgICAgICAgICAgdm9pZCBQcm9taXNlLnByb3RvdHlwZS50aGVuLmNhbGwocHJvbWlzZS5wcm9taXNlLCB1bmRlZmluZWQsIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyICE9PSByZWFzb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgcmVhc29uIGlzIG5vdCBzZXQsIHRoZSBwcm9taXNlIHJlc29sdmVkIHJlZ3VsYXJseSwgaGVuY2Ugd2UgbXVzdCBub3QgY2FsbCBvbmNhbmNlbGxlZC5cbiAgICAgICAgLy8gSWYgb25jYW5jZWxsZWQgaXMgdW5zZXQsIG5vIG5lZWQgdG8gZ28gYW55IGZ1cnRoZXIuXG4gICAgICAgIGlmICghc3RhdGUucmVhc29uIHx8ICFwcm9taXNlLm9uY2FuY2VsbGVkKSB7IHJldHVybjsgfVxuXG4gICAgICAgIGNhbmNlbGxhdGlvblByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHByb21pc2Uub25jYW5jZWxsZWQhKHN0YXRlLnJlYXNvbiEuY2F1c2UpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIFByb21pc2UucmVqZWN0KG5ldyBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcihwcm9taXNlLnByb21pc2UsIGVyciwgXCJVbmhhbmRsZWQgZXhjZXB0aW9uIGluIG9uY2FuY2VsbGVkIGNhbGxiYWNrLlwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKChyZWFzb24/KSA9PiB7XG4gICAgICAgICAgICBQcm9taXNlLnJlamVjdChuZXcgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3IocHJvbWlzZS5wcm9taXNlLCByZWFzb24sIFwiVW5oYW5kbGVkIHJlamVjdGlvbiBpbiBvbmNhbmNlbGxlZCBjYWxsYmFjay5cIikpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBVbnNldCBvbmNhbmNlbGxlZCB0byBwcmV2ZW50IHJlcGVhdGVkIGNhbGxzLlxuICAgICAgICBwcm9taXNlLm9uY2FuY2VsbGVkID0gbnVsbDtcblxuICAgICAgICByZXR1cm4gY2FuY2VsbGF0aW9uUHJvbWlzZTtcbiAgICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGNhbGxiYWNrIHRoYXQgaW1wbGVtZW50cyB0aGUgcmVzb2x1dGlvbiBhbGdvcml0aG0gZm9yIHRoZSBnaXZlbiBjYW5jZWxsYWJsZSBwcm9taXNlLlxuICovXG5mdW5jdGlvbiByZXNvbHZlckZvcjxUPihwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+LCBzdGF0ZTogQ2FuY2VsbGFibGVQcm9taXNlU3RhdGUpOiBDYW5jZWxsYWJsZVByb21pc2VSZXNvbHZlcjxUPiB7XG4gICAgcmV0dXJuICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoc3RhdGUucmVzb2x2aW5nKSB7IHJldHVybjsgfVxuICAgICAgICBzdGF0ZS5yZXNvbHZpbmcgPSB0cnVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gcHJvbWlzZS5wcm9taXNlKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuc2V0dGxlZCkgeyByZXR1cm47IH1cbiAgICAgICAgICAgIHN0YXRlLnNldHRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcihcIkEgcHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdHNlbGYuXCIpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgICAgIGxldCB0aGVuOiBhbnk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRoZW4gPSAodmFsdWUgYXMgYW55KS50aGVuO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuc2V0dGxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc0NhbGxhYmxlKHRoZW4pKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNhbmNlbCA9ICh2YWx1ZSBhcyBhbnkpLmNhbmNlbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ2FsbGFibGUoY2FuY2VsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb25jYW5jZWxsZWQgPSAoY2F1c2U/OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZsZWN0LmFwcGx5KGNhbmNlbCwgdmFsdWUsIFtjYXVzZV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5yZWFzb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBhbHJlYWR5IGNhbmNlbGxlZCwgcHJvcGFnYXRlIGNhbmNlbGxhdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIHRoZSBjYW5jZWxsZXIgYWxnb3JpdGhtIGRvZXMgbm90IHJlamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIGl0IGNhbiBiZSBkaXNjYXJkZWQgc2FmZWx5LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgY2FuY2VsbGVyRm9yKHsgLi4ucHJvbWlzZSwgb25jYW5jZWxsZWQgfSwgc3RhdGUpKHN0YXRlLnJlYXNvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2Uub25jYW5jZWxsZWQgPSBvbmNhbmNlbGxlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2gge31cblxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlOiBDYW5jZWxsYWJsZVByb21pc2VTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgcm9vdDogc3RhdGUucm9vdCxcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2aW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0IHNldHRsZWQoKSB7IHJldHVybiB0aGlzLnJvb3Quc2V0dGxlZCB9LFxuICAgICAgICAgICAgICAgICAgICBzZXQgc2V0dGxlZCh2YWx1ZSkgeyB0aGlzLnJvb3Quc2V0dGxlZCA9IHZhbHVlOyB9LFxuICAgICAgICAgICAgICAgICAgICBnZXQgcmVhc29uKCkgeyByZXR1cm4gdGhpcy5yb290LnJlYXNvbiB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlamVjdG9yID0gcmVqZWN0b3JGb3IocHJvbWlzZSwgbmV3U3RhdGUpO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIFJlZmxlY3QuYXBwbHkodGhlbiwgdmFsdWUsIFtyZXNvbHZlckZvcihwcm9taXNlLCBuZXdTdGF0ZSksIHJlamVjdG9yXSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdG9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjsgLy8gSU1QT1JUQU5UIVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlLnNldHRsZWQpIHsgcmV0dXJuOyB9XG4gICAgICAgIHN0YXRlLnNldHRsZWQgPSB0cnVlO1xuICAgICAgICBwcm9taXNlLnJlc29sdmUodmFsdWUpO1xuICAgIH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGNhbGxiYWNrIHRoYXQgaW1wbGVtZW50cyB0aGUgcmVqZWN0aW9uIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGNhbmNlbGxhYmxlIHByb21pc2UuXG4gKi9cbmZ1bmN0aW9uIHJlamVjdG9yRm9yPFQ+KHByb21pc2U6IENhbmNlbGxhYmxlUHJvbWlzZVdpdGhSZXNvbHZlcnM8VD4sIHN0YXRlOiBDYW5jZWxsYWJsZVByb21pc2VTdGF0ZSk6IENhbmNlbGxhYmxlUHJvbWlzZVJlamVjdG9yIHtcbiAgICByZXR1cm4gKHJlYXNvbj8pID0+IHtcbiAgICAgICAgaWYgKHN0YXRlLnJlc29sdmluZykgeyByZXR1cm47IH1cbiAgICAgICAgc3RhdGUucmVzb2x2aW5nID0gdHJ1ZTtcblxuICAgICAgICBpZiAoc3RhdGUuc2V0dGxlZCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAocmVhc29uIGluc3RhbmNlb2YgQ2FuY2VsRXJyb3IgJiYgc3RhdGUucmVhc29uIGluc3RhbmNlb2YgQ2FuY2VsRXJyb3IgJiYgT2JqZWN0LmlzKHJlYXNvbi5jYXVzZSwgc3RhdGUucmVhc29uLmNhdXNlKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBTd2FsbG93IGxhdGUgcmVqZWN0aW9ucyB0aGF0IGFyZSBDYW5jZWxFcnJvcnMgd2hvc2UgY2FuY2VsbGF0aW9uIGNhdXNlIGlzIHRoZSBzYW1lIGFzIG91cnMuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHt9XG5cbiAgICAgICAgICAgIHZvaWQgUHJvbWlzZS5yZWplY3QobmV3IENhbmNlbGxlZFJlamVjdGlvbkVycm9yKHByb21pc2UucHJvbWlzZSwgcmVhc29uKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGF0ZS5zZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogQ2FuY2VscyBhbGwgdmFsdWVzIGluIGFuIGFycmF5IHRoYXQgbG9vayBsaWtlIGNhbmNlbGxhYmxlIHRoZW5hYmxlcy5cbiAqIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgb25jZSBhbGwgY2FuY2VsbGF0aW9uIHByb2NlZHVyZXMgZm9yIHRoZSBnaXZlbiB2YWx1ZXMgaGF2ZSBzZXR0bGVkLlxuICovXG5mdW5jdGlvbiBjYW5jZWxBbGwocGFyZW50OiBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4sIHZhbHVlczogYW55W10sIGNhdXNlPzogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVzdWx0czogUHJvbWlzZTx2b2lkPltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgICBsZXQgY2FuY2VsOiBDYW5jZWxsYWJsZVByb21pc2VDYW5jZWxsZXI7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIWlzQ2FsbGFibGUodmFsdWUudGhlbikpIHsgY29udGludWU7IH1cbiAgICAgICAgICAgIGNhbmNlbCA9IHZhbHVlLmNhbmNlbDtcbiAgICAgICAgICAgIGlmICghaXNDYWxsYWJsZShjYW5jZWwpKSB7IGNvbnRpbnVlOyB9XG4gICAgICAgIH0gY2F0Y2ggeyBjb250aW51ZTsgfVxuXG4gICAgICAgIGxldCByZXN1bHQ6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IFJlZmxlY3QuYXBwbHkoY2FuY2VsLCB2YWx1ZSwgW2NhdXNlXSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgUHJvbWlzZS5yZWplY3QobmV3IENhbmNlbGxlZFJlamVjdGlvbkVycm9yKHBhcmVudCwgZXJyLCBcIlVuaGFuZGxlZCBleGNlcHRpb24gaW4gY2FuY2VsIG1ldGhvZC5cIikpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJlc3VsdCkgeyBjb250aW51ZTsgfVxuICAgICAgICByZXN1bHRzLnB1c2goXG4gICAgICAgICAgICAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSAgPyByZXN1bHQgOiBQcm9taXNlLnJlc29sdmUocmVzdWx0KSkuY2F0Y2goKHJlYXNvbj8pID0+IHtcbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlamVjdChuZXcgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3IocGFyZW50LCByZWFzb24sIFwiVW5oYW5kbGVkIHJlamVjdGlvbiBpbiBjYW5jZWwgbWV0aG9kLlwiKSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLmFsbChyZXN1bHRzKSBhcyBhbnk7XG59XG5cbi8qKlxuICogUmV0dXJucyBpdHMgYXJndW1lbnQuXG4gKi9cbmZ1bmN0aW9uIGlkZW50aXR5PFQ+KHg6IFQpOiBUIHtcbiAgICByZXR1cm4geDtcbn1cblxuLyoqXG4gKiBUaHJvd3MgaXRzIGFyZ3VtZW50LlxuICovXG5mdW5jdGlvbiB0aHJvd2VyKHJlYXNvbj86IGFueSk6IG5ldmVyIHtcbiAgICB0aHJvdyByZWFzb247XG59XG5cbi8qKlxuICogQXR0ZW1wdHMgdmFyaW91cyBzdHJhdGVnaWVzIHRvIGNvbnZlcnQgYW4gZXJyb3IgdG8gYSBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGVycm9yTWVzc2FnZShlcnI6IGFueSk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yIHx8IHR5cGVvZiBlcnIgIT09ICdvYmplY3QnIHx8IGVyci50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyBlcnI7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIHt9XG5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZXJyKTtcbiAgICB9IGNhdGNoIHt9XG5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGVycik7XG4gICAgfSBjYXRjaCB7fVxuXG4gICAgcmV0dXJuIFwiPGNvdWxkIG5vdCBjb252ZXJ0IGVycm9yIHRvIHN0cmluZz5cIjtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBjdXJyZW50IGJhcnJpZXIgcHJvbWlzZSBmb3IgdGhlIGdpdmVuIGNhbmNlbGxhYmxlIHByb21pc2UuIElmIG5lY2Vzc2FyeSwgaW5pdGlhbGlzZXMgdGhlIGJhcnJpZXIuXG4gKi9cbmZ1bmN0aW9uIGN1cnJlbnRCYXJyaWVyPFQ+KHByb21pc2U6IENhbmNlbGxhYmxlUHJvbWlzZTxUPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBwd3I6IFBhcnRpYWw8UHJvbWlzZVdpdGhSZXNvbHZlcnM8dm9pZD4+ID0gcHJvbWlzZVtiYXJyaWVyU3ltXSA/PyB7fTtcbiAgICBpZiAoISgncHJvbWlzZScgaW4gcHdyKSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHB3ciwgcHJvbWlzZVdpdGhSZXNvbHZlcnM8dm9pZD4oKSk7XG4gICAgfVxuICAgIGlmIChwcm9taXNlW2JhcnJpZXJTeW1dID09IG51bGwpIHtcbiAgICAgICAgcHdyLnJlc29sdmUhKCk7XG4gICAgICAgIHByb21pc2VbYmFycmllclN5bV0gPSBwd3I7XG4gICAgfVxuICAgIHJldHVybiBwd3IucHJvbWlzZSE7XG59XG5cbi8vIFBvbHlmaWxsIFByb21pc2Uud2l0aFJlc29sdmVycy5cbmxldCBwcm9taXNlV2l0aFJlc29sdmVycyA9IFByb21pc2Uud2l0aFJlc29sdmVycztcbmlmIChwcm9taXNlV2l0aFJlc29sdmVycyAmJiB0eXBlb2YgcHJvbWlzZVdpdGhSZXNvbHZlcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBwcm9taXNlV2l0aFJlc29sdmVycyA9IHByb21pc2VXaXRoUmVzb2x2ZXJzLmJpbmQoUHJvbWlzZSk7XG59IGVsc2Uge1xuICAgIHByb21pc2VXaXRoUmVzb2x2ZXJzID0gZnVuY3Rpb24gPFQ+KCk6IFByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+IHtcbiAgICAgICAgbGV0IHJlc29sdmUhOiAodmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPikgPT4gdm9pZDtcbiAgICAgICAgbGV0IHJlamVjdCE6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxUPigocmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJlczsgcmVqZWN0ID0gcmVqOyB9KTtcbiAgICAgICAgcmV0dXJuIHsgcHJvbWlzZSwgcmVzb2x2ZSwgcmVqZWN0IH07XG4gICAgfVxufVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQge25ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkNsaXBib2FyZCk7XG5cbmNvbnN0IENsaXBib2FyZFNldFRleHQgPSAwO1xuY29uc3QgQ2xpcGJvYXJkVGV4dCA9IDE7XG5cbi8qKlxuICogU2V0cyB0aGUgdGV4dCB0byB0aGUgQ2xpcGJvYXJkLlxuICpcbiAqIEBwYXJhbSB0ZXh0IC0gVGhlIHRleHQgdG8gYmUgc2V0IHRvIHRoZSBDbGlwYm9hcmQuXG4gKiBAcmV0dXJuIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBzdWNjZXNzZnVsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gU2V0VGV4dCh0ZXh0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gY2FsbChDbGlwYm9hcmRTZXRUZXh0LCB7dGV4dH0pO1xufVxuXG4vKipcbiAqIEdldCB0aGUgQ2xpcGJvYXJkIHRleHRcbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0ZXh0IGZyb20gdGhlIENsaXBib2FyZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gY2FsbChDbGlwYm9hcmRUZXh0KTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuZXhwb3J0IGludGVyZmFjZSBTaXplIHtcbiAgICAvKiogVGhlIHdpZHRoIG9mIGEgcmVjdGFuZ3VsYXIgYXJlYS4gKi9cbiAgICBXaWR0aDogbnVtYmVyO1xuICAgIC8qKiBUaGUgaGVpZ2h0IG9mIGEgcmVjdGFuZ3VsYXIgYXJlYS4gKi9cbiAgICBIZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWN0IHtcbiAgICAvKiogVGhlIFggY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luLiAqL1xuICAgIFg6IG51bWJlcjtcbiAgICAvKiogVGhlIFkgY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luLiAqL1xuICAgIFk6IG51bWJlcjtcbiAgICAvKiogVGhlIHdpZHRoIG9mIHRoZSByZWN0YW5nbGUuICovXG4gICAgV2lkdGg6IG51bWJlcjtcbiAgICAvKiogVGhlIGhlaWdodCBvZiB0aGUgcmVjdGFuZ2xlLiAqL1xuICAgIEhlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmVlbiB7XG4gICAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc2NyZWVuLiAqL1xuICAgIElEOiBzdHJpbmc7XG4gICAgLyoqIEh1bWFuLXJlYWRhYmxlIG5hbWUgb2YgdGhlIHNjcmVlbi4gKi9cbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBzY2FsZSBmYWN0b3Igb2YgdGhlIHNjcmVlbiAoRFBJLzk2KS4gMSA9IHN0YW5kYXJkIERQSSwgMiA9IEhpRFBJIChSZXRpbmEpLCBldGMuICovXG4gICAgU2NhbGVGYWN0b3I6IG51bWJlcjtcbiAgICAvKiogVGhlIFggY29vcmRpbmF0ZSBvZiB0aGUgc2NyZWVuLiAqL1xuICAgIFg6IG51bWJlcjtcbiAgICAvKiogVGhlIFkgY29vcmRpbmF0ZSBvZiB0aGUgc2NyZWVuLiAqL1xuICAgIFk6IG51bWJlcjtcbiAgICAvKiogQ29udGFpbnMgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHNjcmVlbi4gKi9cbiAgICBTaXplOiBTaXplO1xuICAgIC8qKiBDb250YWlucyB0aGUgYm91bmRzIG9mIHRoZSBzY3JlZW4gaW4gdGVybXMgb2YgWCwgWSwgV2lkdGgsIGFuZCBIZWlnaHQuICovXG4gICAgQm91bmRzOiBSZWN0O1xuICAgIC8qKiBDb250YWlucyB0aGUgcGh5c2ljYWwgYm91bmRzIG9mIHRoZSBzY3JlZW4gaW4gdGVybXMgb2YgWCwgWSwgV2lkdGgsIGFuZCBIZWlnaHQgKGJlZm9yZSBzY2FsaW5nKS4gKi9cbiAgICBQaHlzaWNhbEJvdW5kczogUmVjdDtcbiAgICAvKiogQ29udGFpbnMgdGhlIGFyZWEgb2YgdGhlIHNjcmVlbiB0aGF0IGlzIGFjdHVhbGx5IHVzYWJsZSAoZXhjbHVkaW5nIHRhc2tiYXIgYW5kIG90aGVyIHN5c3RlbSBVSSkuICovXG4gICAgV29ya0FyZWE6IFJlY3Q7XG4gICAgLyoqIENvbnRhaW5zIHRoZSBwaHlzaWNhbCBXb3JrQXJlYSBvZiB0aGUgc2NyZWVuIChiZWZvcmUgc2NhbGluZykuICovXG4gICAgUGh5c2ljYWxXb3JrQXJlYTogUmVjdDtcbiAgICAvKiogVHJ1ZSBpZiB0aGlzIGlzIHRoZSBwcmltYXJ5IG1vbml0b3Igc2VsZWN0ZWQgYnkgdGhlIHVzZXIgaW4gdGhlIG9wZXJhdGluZyBzeXN0ZW0uICovXG4gICAgSXNQcmltYXJ5OiBib29sZWFuO1xuICAgIC8qKiBUaGUgcm90YXRpb24gb2YgdGhlIHNjcmVlbi4gKi9cbiAgICBSb3RhdGlvbjogbnVtYmVyO1xufVxuXG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLlNjcmVlbnMpO1xuXG5jb25zdCBnZXRBbGwgPSAwO1xuY29uc3QgZ2V0UHJpbWFyeSA9IDE7XG5jb25zdCBnZXRDdXJyZW50ID0gMjtcbmNvbnN0IGdldEJ5SUQgPSAzO1xuY29uc3QgZ2V0QnlJbmRleCA9IDQ7XG5cbi8qKlxuICogR2V0cyBhbGwgc2NyZWVucy5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBvZiBTY3JlZW4gb2JqZWN0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldEFsbCgpOiBQcm9taXNlPFNjcmVlbltdPiB7XG4gICAgcmV0dXJuIGNhbGwoZ2V0QWxsKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBwcmltYXJ5IHNjcmVlbi5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcHJpbWFyeSBzY3JlZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBHZXRQcmltYXJ5KCk6IFByb21pc2U8U2NyZWVuPiB7XG4gICAgcmV0dXJuIGNhbGwoZ2V0UHJpbWFyeSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgY3VycmVudCBhY3RpdmUgc2NyZWVuLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGN1cnJlbnQgYWN0aXZlIHNjcmVlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldEN1cnJlbnQoKTogUHJvbWlzZTxTY3JlZW4+IHtcbiAgICByZXR1cm4gY2FsbChnZXRDdXJyZW50KTtcbn1cblxuLyoqXG4gKiBHZXRzIGEgc2NyZWVuIGJ5IGl0cyB1bmlxdWUgZGlzcGxheSBJRC5cbiAqXG4gKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHNjcmVlbi5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBtYXRjaGluZyBTY3JlZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBHZXRCeUlEKGlkOiBzdHJpbmcpOiBQcm9taXNlPFNjcmVlbj4ge1xuICAgIHJldHVybiBjYWxsKGdldEJ5SUQsIHsgaWQgfSk7XG59XG5cbi8qKlxuICogR2V0cyBhIHNjcmVlbiBieSBpdHMgaW5kZXggaW4gdGhlIHNjcmVlbiBsaXN0LlxuICpcbiAqIEBwYXJhbSBpbmRleCAtIFRoZSB6ZXJvLWJhc2VkIGluZGV4IG9mIHRoZSBzY3JlZW4uXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbWF0Y2hpbmcgU2NyZWVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gR2V0QnlJbmRleChpbmRleDogbnVtYmVyKTogUHJvbWlzZTxTY3JlZW4+IHtcbiAgICByZXR1cm4gY2FsbChnZXRCeUluZGV4LCB7IGluZGV4IH0pO1xufVxuIiwgIi8qXG4gXyAgICAgX18gICAgIF8gX19cbnwgfCAgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcblxuY29uc3QgY2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuSU9TKTtcblxuLy8gTWV0aG9kIElEc1xuY29uc3QgSGFwdGljc0ltcGFjdCA9IDA7XG5jb25zdCBEZXZpY2VJbmZvID0gMTtcblxuZXhwb3J0IG5hbWVzcGFjZSBIYXB0aWNzIHtcbiAgICBleHBvcnQgdHlwZSBJbXBhY3RTdHlsZSA9IFwibGlnaHRcInxcIm1lZGl1bVwifFwiaGVhdnlcInxcInNvZnRcInxcInJpZ2lkXCI7XG4gICAgZXhwb3J0IGZ1bmN0aW9uIEltcGFjdChzdHlsZTogSW1wYWN0U3R5bGUgPSBcIm1lZGl1bVwiKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBjYWxsKEhhcHRpY3NJbXBhY3QsIHsgc3R5bGUgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIERldmljZSB7XG4gICAgZXhwb3J0IGludGVyZmFjZSBJbmZvIHtcbiAgICAgICAgbW9kZWw6IHN0cmluZztcbiAgICAgICAgc3lzdGVtTmFtZTogc3RyaW5nO1xuICAgICAgICBzeXN0ZW1WZXJzaW9uOiBzdHJpbmc7XG4gICAgICAgIGlzU2ltdWxhdG9yOiBib29sZWFuO1xuICAgIH1cbiAgICBleHBvcnQgZnVuY3Rpb24gSW5mbygpOiBQcm9taXNlPEluZm8+IHtcbiAgICAgICAgcmV0dXJuIGNhbGwoRGV2aWNlSW5mbyk7XG4gICAgfVxufVxuIiwgIi8qXG4gXyAgICAgX18gICAgIF8gX19cbnwgfCAgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcblxuY29uc3QgY2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuQW5kcm9pZCk7XG5cbi8vIE1ldGhvZCBJRHMgKG11c3QgbWF0Y2ggbWVzc2FnZXByb2Nlc3Nvcl9hbmRyb2lkLmdvKVxuY29uc3QgSGFwdGljc1ZpYnJhdGUgPSAwO1xuY29uc3QgRGV2aWNlSW5mbyA9IDE7XG5jb25zdCBUb2FzdFNob3cgPSAyO1xuXG5leHBvcnQgbmFtZXNwYWNlIEhhcHRpY3Mge1xuICAgIC8qKiBWaWJyYXRlIHRoZSBkZXZpY2UgZm9yIHRoZSBnaXZlbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIFZpYnJhdGUoZHVyYXRpb25NczogbnVtYmVyID0gMTAwKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBjYWxsKEhhcHRpY3NWaWJyYXRlLCB7IGR1cmF0aW9uOiBkdXJhdGlvbk1zIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBEZXZpY2Uge1xuICAgIGV4cG9ydCBpbnRlcmZhY2UgSW5mbyB7XG4gICAgICAgIHBsYXRmb3JtOiBzdHJpbmc7XG4gICAgICAgIG1hbnVmYWN0dXJlcjogc3RyaW5nO1xuICAgICAgICBicmFuZDogc3RyaW5nO1xuICAgICAgICBtb2RlbDogc3RyaW5nO1xuICAgICAgICBkZXZpY2U6IHN0cmluZztcbiAgICAgICAgdmVyc2lvbjogc3RyaW5nO1xuICAgICAgICBzZGtJbnQ6IG51bWJlcjtcbiAgICB9XG4gICAgLyoqIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQW5kcm9pZCBkZXZpY2UuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIEluZm8oKTogUHJvbWlzZTxJbmZvPiB7XG4gICAgICAgIHJldHVybiBjYWxsKERldmljZUluZm8pO1xuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBUb2FzdCB7XG4gICAgLyoqIFNob3cgYSBzaG9ydCBBbmRyb2lkIHRvYXN0IG1lc3NhZ2UuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIFNob3cobWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBjYWxsKFRvYXN0U2hvdywgeyBtZXNzYWdlIH0pO1xuICAgIH1cbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLyoqXG4gKiBVcGRhdGVyIGV2ZW50IG5hbWUgY29uc3RhbnRzLlxuICpcbiAqIFVzZSB0aGVzZSBpbnN0ZWFkIG9mIGhhcmQtY29kaW5nIHN0cmluZyBsaXRlcmFscyB3aGVuIHN1YnNjcmliaW5nIHRvXG4gKiB1cGRhdGVyIGV2ZW50cyBmcm9tIEphdmFTY3JpcHQ6XG4gKlxuICogICAgIGltcG9ydCB7IEV2ZW50cywgVXBkYXRlciB9IGZyb20gXCJAd2FpbHNpby9ydW50aW1lXCI7XG4gKlxuICogICAgIEV2ZW50cy5PbihVcGRhdGVyLkV2ZW50cy5VcGRhdGVBdmFpbGFibGUsIChlKSA9PiB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKFwidXBkYXRlIGZvdW5kOlwiLCBlLmRhdGEudmVyc2lvbik7XG4gKiAgICAgfSk7XG4gKlxuICogICAgIEV2ZW50cy5PbihVcGRhdGVyLkV2ZW50cy5Eb3dubG9hZFByb2dyZXNzLCAoZSkgPT4ge1xuICogICAgICAgICBjb25zdCBwID0gZS5kYXRhO1xuICogICAgICAgICBjb25zb2xlLmxvZyhgJHtwLndyaXR0ZW59IC8gJHtwLnRvdGFsfSBieXRlc2ApO1xuICogICAgIH0pO1xuICpcbiAqIE1pcnJvcnMgdGhlIEdvLXNpZGUgY29uc3RhbnRzIGluIGBwa2cvdXBkYXRlci9ldmVudHMuZ29gIGFuZCB0aGVcbiAqIHVzZXItYWN0aW9uIGNvbnN0YW50cyBpbiBgcGtnL3VwZGF0ZXIvd2luZG93X2xpZmVjeWNsZS5nb2AuIEFueVxuICogY2hhbmdlcyBoZXJlIG11c3Qgc3RheSBpbiBzeW5jIHdpdGggdGhvc2UgZmlsZXMgXHUyMDE0IHRoZXJlJ3MgYW5cbiAqIGludGVncmF0aW9uIHRlc3QgdGhhdCBhc3NlcnRzIHRoZSBzdHJpbmdzIG1hdGNoLlxuICovXG5leHBvcnQgY29uc3QgRXZlbnRzID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgLyoqIEEgQ2hlY2sgcm91bmQtdHJpcCBpcyBzdGFydGluZy4gUGF5bG9hZDogbnVsbC4gKi9cbiAgICBDaGVja1N0YXJ0ZWQ6IFwid2FpbHM6dXBkYXRlcjpjaGVjay1zdGFydGVkXCIsXG4gICAgLyoqIENoZWNrIGZvdW5kIGEgbmV3ZXIgcmVsZWFzZS4gUGF5bG9hZDogUmVsZWFzZS4gKi9cbiAgICBVcGRhdGVBdmFpbGFibGU6IFwid2FpbHM6dXBkYXRlcjp1cGRhdGUtYXZhaWxhYmxlXCIsXG4gICAgLyoqIENoZWNrIGNvbmZpcm1lZCB0aGUgY2FsbGVyIGlzIHVwIHRvIGRhdGUuIFBheWxvYWQ6IG51bGwuICovXG4gICAgTm9VcGRhdGU6IFwid2FpbHM6dXBkYXRlcjpuby11cGRhdGVcIixcbiAgICAvKiogRG93bmxvYWQgaXMgc3RhcnRpbmcuIFBheWxvYWQ6IFJlbGVhc2UuICovXG4gICAgRG93bmxvYWRTdGFydGVkOiBcIndhaWxzOnVwZGF0ZXI6ZG93bmxvYWQtc3RhcnRlZFwiLFxuICAgIC8qKiBQZXJpb2RpYyBwcm9ncmVzcyB0aWNrIGR1cmluZyBkb3dubG9hZCAofjEwIEh6KS4gUGF5bG9hZDogUHJvZ3Jlc3MuICovXG4gICAgRG93bmxvYWRQcm9ncmVzczogXCJ3YWlsczp1cGRhdGVyOmRvd25sb2FkLXByb2dyZXNzXCIsXG4gICAgLyoqIEFsbCBieXRlcyBhcmUgb24gZGlzaywgYnV0IHZlcmlmaWNhdGlvbiBoYXMgbm90IHlldCBzdGFydGVkLiBQYXlsb2FkOiBSZWxlYXNlLiAqL1xuICAgIERvd25sb2FkQ29tcGxldGU6IFwid2FpbHM6dXBkYXRlcjpkb3dubG9hZC1jb21wbGV0ZVwiLFxuICAgIC8qKiBTaWduYXR1cmUgLyBkaWdlc3QgdmVyaWZpY2F0aW9uIGhhcyBzdGFydGVkLiBQYXlsb2FkOiBSZWxlYXNlLiAqL1xuICAgIFZlcmlmeWluZzogXCJ3YWlsczp1cGRhdGVyOnZlcmlmeWluZ1wiLFxuICAgIC8qKiBUaGUgVXBkYXRlciBpcyBzd2FwcGluZyB0aGUgYmluYXJ5IGludG8gcGxhY2UuIFBheWxvYWQ6IFJlbGVhc2UuICovXG4gICAgSW5zdGFsbGluZzogXCJ3YWlsczp1cGRhdGVyOmluc3RhbGxpbmdcIixcbiAgICAvKiogVXBkYXRlIGlzIHN0YWdlZCBhbmQgYSByZXN0YXJ0IGlzIHBlbmRpbmcuIFBheWxvYWQ6IFJlbGVhc2UuICovXG4gICAgVXBkYXRlUmVhZHk6IFwid2FpbHM6dXBkYXRlcjp1cGRhdGUtcmVhZHlcIixcbiAgICAvKiogU29tZXRoaW5nIGZhaWxlZC4gUGF5bG9hZDogRXJyb3JJbmZvIHsgc3RhZ2UsIG1lc3NhZ2UsIHByb3ZpZGVyIH0uICovXG4gICAgRXJyb3I6IFwid2FpbHM6dXBkYXRlcjplcnJvclwiLFxuICAgIC8qKiBIb3N0LXNpZGUgY29udGV4dCBkZWxpdmVyZWQgb25jZSBwZXIgc2Vzc2lvbi4gUGF5bG9hZDogTWV0YSB7IGN1cnJlbnRWZXJzaW9uLCBza2lwcGVkVmVyc2lvbiB9LiAqL1xuICAgIE1ldGE6IFwid2FpbHM6dXBkYXRlcjptZXRhXCIsXG5cbiAgICAvKiogU3ViLW5hbWVzcGFjZTogdXNlci1hY3Rpb24gZXZlbnRzIHRoYXQgdGhlIFVJIGVtaXRzIEJBQ0sgdG8gdGhlIGhvc3QuICovXG4gICAgVXNlcjogT2JqZWN0LmZyZWV6ZSh7XG4gICAgICAgIC8qKiBVc2VyIGNsaWNrZWQgSW5zdGFsbCBvbiBhbiBBdmFpbGFibGUgdXBkYXRlLiAqL1xuICAgICAgICBJbnN0YWxsOiBcIndhaWxzOnVwZGF0ZXI6dXNlcjppbnN0YWxsXCIsXG4gICAgICAgIC8qKiBVc2VyIGNsaWNrZWQgUmVzdGFydCAmIEFwcGx5IG9uIGEgUmVhZHkgdXBkYXRlLiAqL1xuICAgICAgICBSZXN0YXJ0OiBcIndhaWxzOnVwZGF0ZXI6dXNlcjpyZXN0YXJ0XCIsXG4gICAgICAgIC8qKiBVc2VyIGNsaWNrZWQgU2tpcCBUaGlzIFZlcnNpb24uICovXG4gICAgICAgIFNraXA6IFwid2FpbHM6dXBkYXRlcjp1c2VyOnNraXBcIixcbiAgICAgICAgLyoqIFVzZXIgY2xpY2tlZCBSZW1pbmQgTWUgTGF0ZXIuICovXG4gICAgICAgIFJlbWluZDogXCJ3YWlsczp1cGRhdGVyOnVzZXI6cmVtaW5kXCIsXG4gICAgICAgIC8qKiBVc2VyIGNsaWNrZWQgQ2xvc2UgLyBDYW5jZWwuICovXG4gICAgICAgIENhbmNlbDogXCJ3YWlsczp1cGRhdGVyOnVzZXI6Y2FuY2VsXCIsXG4gICAgfSksXG5cbiAgICAvKiogU3ViLW5hbWVzcGFjZTogZnJhbWV3b3JrLWludGVybmFsIGV2ZW50cyB0aGUgVUkgZW1pdHMgdG8gY29vcmRpbmF0ZVxuICAgICAqICB3aXRoIHRoZSBob3N0LiBNb3N0IGFwcCBjb2RlIGNhbiBpZ25vcmUgdGhlc2UuICovXG4gICAgV2luZG93OiBPYmplY3QuZnJlZXplKHtcbiAgICAgICAgLyoqIFRoZSB3aW5kb3cgZmluaXNoZWQgbG9hZGluZyBhbmQgYXNrcyB0aGUgaG9zdCB0byByZXBsYXkgY3VycmVudCBzdGF0ZS4gKi9cbiAgICAgICAgUmVhZHk6IFwid2FpbHM6dXBkYXRlcjp3aW5kb3c6cmVhZHlcIixcbiAgICB9KSxcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ0FBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ0FBO0FBQUE7QUFBQTtBQUFBOzs7QUM2QkEsSUFBTSxjQUNGO0FBRUcsU0FBUyxPQUFPLE9BQWUsSUFBWTtBQUM5QyxNQUFJLEtBQUs7QUFFVCxNQUFJLElBQUksT0FBTztBQUNmLFNBQU8sS0FBSztBQUVSLFVBQU0sWUFBYSxLQUFLLE9BQU8sSUFBSSxLQUFNLENBQUM7QUFBQSxFQUM5QztBQUNBLFNBQU87QUFDWDs7O0FDeEJPLElBQU0sU0FBUyxPQUFPLFdBQVcsZUFBZSxPQUFPLGFBQWE7OztBQ0YzRSxTQUFTLGFBQXFCO0FBQzFCLFNBQU8sT0FBTyxTQUFTLFNBQVM7QUFDcEM7QUFHQSxJQUFNLGtCQUFrQixNQUFNO0FBTXZCLElBQU0sY0FBYyxPQUFPLE9BQU87QUFBQSxFQUNyQyxNQUFNO0FBQUEsRUFDTixXQUFXO0FBQUEsRUFDWCxhQUFhO0FBQUEsRUFDYixRQUFRO0FBQUEsRUFDUixhQUFh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ZTtBQUFBLElBQ2Ysb0JBQW9CO0FBQUEsSUFDcEIsb0JBQW9CO0FBQUEsSUFDcEIsMEJBQTBCO0FBQUEsSUFDMUIsZ0JBQWdCO0FBQUEsSUFDaEIsNEJBQTRCO0FBQUEsSUFDNUIsNEJBQTRCO0FBQUEsSUFDNUIseURBQXlEO0FBQUEsSUFDekQsc0NBQXNDO0FBQUEsSUFDdEMsb0JBQW9CO0FBQUEsSUFDcEIscUJBQXFCO0FBQUEsSUFDckIscUJBQXFCO0FBQUEsSUFDckIsc0JBQXNCO0FBQUEsSUFDdEIsZ0NBQWdDO0FBQUEsSUFDaEMsa0NBQWtDO0FBQUEsSUFDbEMsbUNBQW1DO0FBQUEsSUFDbkMsb0NBQW9DO0FBQUEsSUFDcEMsK0JBQStCO0FBQUEsSUFDL0IsNkJBQTZCO0FBQUEsSUFDN0IsdUJBQXVCO0FBQUEsSUFDdkIsaUNBQWlDO0FBQUEsSUFDakMsOEJBQThCO0FBQUEsSUFDOUIsNEJBQTRCO0FBQUEsSUFDNUIsc0NBQXNDO0FBQUEsSUFDdEMsNEJBQTRCO0FBQUEsSUFDNUIsc0JBQXNCO0FBQUEsSUFDdEIsa0NBQWtDO0FBQUEsSUFDbEMsc0JBQXNCO0FBQUEsSUFDdEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsbUJBQW1CO0FBQUEsSUFDbkIsMEJBQTBCO0FBQUEsSUFDMUIsOEJBQThCO0FBQUEsSUFDOUIseUJBQXlCO0FBQUEsSUFDekIsNkJBQTZCO0FBQUEsSUFDN0IsaUJBQWlCO0FBQUEsSUFDakIsZ0JBQWdCO0FBQUEsSUFDaEIsc0JBQXNCO0FBQUEsSUFDdEIsZUFBZTtBQUFBLElBQ2YseUJBQXlCO0FBQUEsSUFDekIsd0JBQXdCO0FBQUEsSUFDeEIsb0JBQW9CO0FBQUEsSUFDcEIscUJBQXFCO0FBQUEsSUFDckIsaUJBQWlCO0FBQUEsSUFDakIsaUJBQWlCO0FBQUEsSUFDakIsc0JBQXNCO0FBQUEsSUFDdEIsbUNBQW1DO0FBQUEsSUFDbkMscUNBQXFDO0FBQUEsSUFDckMsdUJBQXVCO0FBQUEsSUFDdkIsc0JBQXNCO0FBQUEsSUFDdEIsd0JBQXdCO0FB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ZSxTQUFTLFFBQVEsSUFBSSxjQUFjLEtBQUssSUFBSSxZQUFZO0FBQzdFLFVBQUksWUFBWSxTQUFTLFlBQVksR0FBRztBQUNwQyxjQUFNLFNBQVMsU0FBUyxjQUFjLFFBQVE7QUFDOUMsZUFBTyxNQUFNO0FBQ2IsaUJBQVMsS0FBSyxZQUFZLE1BQU07QUFBQSxNQUNwQztBQUFBLElBQ0o7QUFBQSxFQUNKLENBQUMsRUFDQSxNQUFNLE1BQU07QUFBQSxFQUFDLENBQUM7QUFDdkI7QUFHQSxJQUFJLFFBQVE7QUFDUixxQkFBbUIsa0JBQWtCO0FBQ3pDOyIsCiAgIm5hbWVzIjogWyJfYSIsICJFcnJvciIsICJjYWxsIiwgIkVycm9yIiwgIl9hIiwgIkFycmF5IiwgIk1hcCIsICJBcnJheSIsICJNYXAiLCAia2V5IiwgImNhbGwiLCAiX2EiLCAiX2EiLCAicmVzaXphYmxlIiwgIl9hIiwgImNhbGwiLCAiX2EiLCAiY2FsbCIsICJfYSIsICJjYWxsIiwgIkhpZGVNZXRob2QiLCAiU2hvd01ldGhvZCIsICJpc0RvY3VtZW50RG90QWxsIiwgIl9hIiwgInJlYXNvbiIsICJ2YWx1ZSIsICJjYWxsIiwgImNhbGwiLCAiY2FsbCIsICJjYWxsIiwgIkhhcHRpY3MiLCAiRGV2aWNlIiwgIkluZm8iLCAiRGV2aWNlIiwgIkhhcHRpY3MiLCAiY2FsbCIsICJEZXZpY2VJbmZvIiwgIkhhcHRpY3MiLCAiRGV2aWNlIiwgIkluZm8iLCAiVG9hc3QiLCAiU2hvdyIsICJFdmVudHMiLCAiRXZlbnRzIl0KfQo= diff --git a/v3/internal/assetserver/bundledassets/runtime.js b/v3/internal/assetserver/bundledassets/runtime.js index cb897597d2c..7fc6b8a82de 100644 --- a/v3/internal/assetserver/bundledassets/runtime.js +++ b/v3/internal/assetserver/bundledassets/runtime.js @@ -1 +1 @@ -var ln=Object.defineProperty,zn=Object.defineProperties;var Hn=Object.getOwnPropertyDescriptors;var an=Object.getOwnPropertySymbols;var Vn=Object.prototype.hasOwnProperty,Zn=Object.prototype.propertyIsEnumerable;var sn=(n,e,i)=>e in n?ln(n,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[e]=i,N=(n,e)=>{for(var i in e||(e={}))Vn.call(e,i)&&sn(n,i,e[i]);if(an)for(var i of an(e))Zn.call(e,i)&&sn(n,i,e[i]);return n},j=(n,e)=>zn(n,Hn(e));var p=(n,e)=>{for(var i in e)ln(n,i,{get:e[i],enumerable:!0})};var Te={};p(Te,{Android:()=>on,Application:()=>Ne,Browser:()=>we,Call:()=>Ge,CancelError:()=>B,CancellablePromise:()=>Y,CancelledRejectionError:()=>D,Clipboard:()=>Ye,Create:()=>ge,Dialogs:()=>fe,Events:()=>be,Flags:()=>Re,IOS:()=>qe,Screens:()=>Xe,System:()=>Ae,Updater:()=>rn,WML:()=>Se,Window:()=>A,clientId:()=>x,getTransport:()=>un,loadOptionalScript:()=>jn,objectNames:()=>c,setTransport:()=>mn});var Se={};p(Se,{Enable:()=>Pe,Reload:()=>Pn});var we={};p(we,{OpenURL:()=>ue});var _n="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";function M(n=21){let e="",i=n|0;for(;i--;)e+=_n[Math.random()*64|0];return e}var w=typeof window<"u"&&typeof document<"u";function Kn(){return window.location.origin+"/wails/runtime"}var z=512*1024;var c=Object.freeze({Call:0,Clipboard:1,Application:2,Events:3,ContextMenu:4,Dialog:5,Window:6,Screens:7,System:8,Browser:9,CancelCall:10,IOS:11,Android:12}),x=M(),H=null;function mn(n){H=n}function un(){return H}function u(n,e=""){return function(i,t=null){return Gn(n,i,e,t)}}async function Gn(n,e,i,t){var f,y;if(H)return H.call(n,e,i,t);let o=new URL(Kn()),a={object:n,method:e};t!=null&&(a.args=t);let r={"x-wails-client-id":x,"Content-Type":"application/json"};i&&(r["x-wails-window-name"]=i);let l=JSON.stringify(a),d;if(l.length>z?d=await Yn(o,r,l):d=await fetch(o,{method:"POST",headers:r,body:l}),!d.ok)throw new Error(await d.text());return((y=(f=d.headers.get("Content-Type"))==null?void 0:f.indexOf("application/json"))!=null?y:-1)!==-1?d.json():d.text()}async function Yn(n,e,i){let t=M(),o=new TextEncoder().encode(i),a=Math.ceil(o.length/z);for(let r=0;r{var a;let o=n.get(e);if(o){if(n.delete(e),t){o.reject(new Error(t));return}try{let r=JSON.parse(i!=null?i:"{}");if(!r.ok){o.reject(new Error((a=r.error)!=null?a:"unknown runtime call error"));return}o.resolve("text"in r?r.text:r.data)}catch(r){o.reject(r)}}},H={call(e,i,t,o){return new Promise((a,r)=>{let l=M();n.set(l,{resolve:a,reject:r});try{dn.invokeAsync(l,JSON.stringify({object:e,method:i,windowName:t,args:o!=null?o:null,clientId:x}))}catch(d){n.delete(l),r(d)}})}}}var Xn=u(c.Browser),Jn=0;function ue(n){return Xn(Jn,{url:n.toString()})}var fe={};p(fe,{Error:()=>ai,Info:()=>oi,OpenFile:()=>si,Question:()=>pe,SaveFile:()=>li,Warning:()=>ri});w&&(window._wails=window._wails||{});var Qn=u(c.Dialog),qn=0,$n=1,ei=2,ni=3,ii=4,ti=5;function E(n,e={}){return Qn(n,e)}function oi(n){return E(qn,n)}function ri(n){return E($n,n)}function ai(n){return E(ei,n)}function pe(n){return E(ni,n)}function si(n){var e;return(e=E(ii,n))!=null?e:[]}function li(n){return E(ti,n)}var be={};p(be,{Emit:()=>We,Off:()=>yi,OffAll:()=>vi,On:()=>Wi,OnMultiple:()=>he,Once:()=>bi,Types:()=>pi,WailsEvent:()=>V});var g=new Map,q=class{constructor(e,i,t){this.eventName=e,this.callback=i,this.maxCallbacks=t||-1}dispatch(e){try{this.callback(e)}catch(i){}return this.maxCallbacks===-1?!1:(this.maxCallbacks-=1,this.maxCallbacks===0)}};function wn(n){let e=g.get(n.eventName);e&&(e=e.filter(i=>i!==n),e.length===0?g.delete(n.eventName):g.set(n.eventName,e))}var ge={};p(ge,{Any:()=>C,Array:()=>ci,ByteSlice:()=>di,Events:()=>$,Map:()=>mi,Nullable:()=>ui,Struct:()=>wi});function C(n){return n}function di(n){return n==null?"":n}function ci(n){return n===C?e=>e===null?[]:e:e=>{if(e===null)return[];for(let i=0;ii===null?{}:i:i=>{if(i===null)return{};for(let t in i)i[t]=e(i[t]);return i}}function ui(n){return n===C?C:e=>e===null?null:n(e)}function wi(n){let e=!0;for(let i in n)if(n[i]!==C){e=!1;break}return e?C:i=>{for(let t in n)t in i&&(i[t]=n[t](i[t]));return i}}var $={};var pi=Object.freeze({Windows:Object.freeze({APMPowerSettingChange:"windows:APMPowerSettingChange",APMPowerStatusChange:"windows:APMPowerStatusChange",APMResumeAutomatic:"windows:APMResumeAutomatic",APMResumeSuspend:"windows:APMResumeSuspend",APMSuspend:"windows:APMSuspend",ApplicationStarted:"windows:ApplicationStarted",SystemThemeChanged:"windows:SystemThemeChanged",WebViewNavigationCompleted:"windows:WebViewNavigationCompleted",WindowActive:"windows:WindowActive",WindowBackgroundErase:"windows:WindowBackgroundErase",WindowClickActive:"windows:WindowClickActive",WindowClosing:"windows:WindowClosing",WindowDidMove:"windows:WindowDidMove",WindowDidResize:"windows:WindowDidResize",WindowDPIChanged:"windows:WindowDPIChanged",WindowDragDrop:"windows:WindowDragDrop",WindowDragEnter:"windows:WindowDragEnter",WindowDragLeave:"windows:WindowDragLeave",WindowDragOver:"windows:WindowDragOver",WindowEndMove:"windows:WindowEndMove",WindowEndResize:"windows:WindowEndResize",WindowFullscreen:"windows:WindowFullscreen",WindowHide:"windows:WindowHide",WindowInactive:"windows:WindowInactive",WindowKeyDown:"windows:WindowKeyDown",WindowKeyUp:"windows:WindowKeyUp",WindowKillFocus:"windows:WindowKillFocus",WindowNonClientHit:"windows:WindowNonClientHit",WindowNonClientMouseDown:"windows:WindowNonClientMouseDown",WindowNonClientMouseLeave:"windows:WindowNonClientMouseLeave",WindowNonClientMouseMove:"windows:WindowNonClientMouseMove",WindowNonClientMouseUp:"windows:WindowNonClientMouseUp",WindowPaint:"windows:WindowPaint",WindowRestore:"windows:WindowRestore",WindowSetFocus:"windows:WindowSetFocus",WindowShow:"windows:WindowShow",WindowStartMove:"windows:WindowStartMove",WindowStartResize:"windows:WindowStartResize",WindowUnFullscreen:"windows:WindowUnFullscreen",WindowZOrderChanged:"windows:WindowZOrderChanged",WindowMinimise:"windows:WindowMinimise",WindowUnMinimise:"windows:WindowUnMinimise",WindowMaximise:"windows:WindowMaximise",WindowUnMaximise:"windows:WindowUnMaximise"}),Mac:Object.freeze({ApplicationDidBecomeActive:"mac:ApplicationDidBecomeActive",ApplicationDidChangeBackingProperties:"mac:ApplicationDidChangeBackingProperties",ApplicationDidChangeEffectiveAppearance:"mac:ApplicationDidChangeEffectiveAppearance",ApplicationDidChangeIcon:"mac:ApplicationDidChangeIcon",ApplicationDidChangeOcclusionState:"mac:ApplicationDidChangeOcclusionState",ApplicationDidChangeScreenParameters:"mac:ApplicationDidChangeScreenParameters",ApplicationDidChangeStatusBarFrame:"mac:ApplicationDidChangeStatusBarFrame",ApplicationDidChangeStatusBarOrientation:"mac:ApplicationDidChangeStatusBarOrientation",ApplicationDidChangeTheme:"mac:ApplicationDidChangeTheme",ApplicationDidFinishLaunching:"mac:ApplicationDidFinishLaunching",ApplicationDidHide:"mac:ApplicationDidHide",ApplicationDidResignActive:"mac:ApplicationDidResignActive",ApplicationDidUnhide:"mac:ApplicationDidUnhide",ApplicationDidUpdate:"mac:ApplicationDidUpdate",ApplicationDidWake:"mac:ApplicationDidWake",ApplicationScreensDidSleep:"mac:ApplicationScreensDidSleep",ApplicationScreensDidWake:"mac:ApplicationScreensDidWake",ApplicationShouldHandleReopen:"mac:ApplicationShouldHandleReopen",ApplicationWillBecomeActive:"mac:ApplicationWillBecomeActive",ApplicationWillFinishLaunching:"mac:ApplicationWillFinishLaunching",ApplicationWillHide:"mac:ApplicationWillHide",ApplicationWillResignActive:"mac:ApplicationWillResignActive",ApplicationWillSleep:"mac:ApplicationWillSleep",ApplicationWillTerminate:"mac:ApplicationWillTerminate",ApplicationWillUnhide:"mac:ApplicationWillUnhide",ApplicationWillUpdate:"mac:ApplicationWillUpdate",MenuDidAddItem:"mac:MenuDidAddItem",MenuDidBeginTracking:"mac:MenuDidBeginTracking",MenuDidClose:"mac:MenuDidClose",MenuDidDisplayItem:"mac:MenuDidDisplayItem",MenuDidEndTracking:"mac:MenuDidEndTracking",MenuDidHighlightItem:"mac:MenuDidHighlightItem",MenuDidOpen:"mac:MenuDidOpen",MenuDidPopUp:"mac:MenuDidPopUp",MenuDidRemoveItem:"mac:MenuDidRemoveItem",MenuDidSendAction:"mac:MenuDidSendAction",MenuDidSendActionToItem:"mac:MenuDidSendActionToItem",MenuDidUpdate:"mac:MenuDidUpdate",MenuWillAddItem:"mac:MenuWillAddItem",MenuWillBeginTracking:"mac:MenuWillBeginTracking",MenuWillDisplayItem:"mac:MenuWillDisplayItem",MenuWillEndTracking:"mac:MenuWillEndTracking",MenuWillHighlightItem:"mac:MenuWillHighlightItem",MenuWillOpen:"mac:MenuWillOpen",MenuWillPopUp:"mac:MenuWillPopUp",MenuWillRemoveItem:"mac:MenuWillRemoveItem",MenuWillSendAction:"mac:MenuWillSendAction",MenuWillSendActionToItem:"mac:MenuWillSendActionToItem",MenuWillUpdate:"mac:MenuWillUpdate",WebViewDidCommitNavigation:"mac:WebViewDidCommitNavigation",WebViewDidFinishNavigation:"mac:WebViewDidFinishNavigation",WebViewDidReceiveServerRedirectForProvisionalNavigation:"mac:WebViewDidReceiveServerRedirectForProvisionalNavigation",WebViewDidStartProvisionalNavigation:"mac:WebViewDidStartProvisionalNavigation",WindowDidBecomeKey:"mac:WindowDidBecomeKey",WindowDidBecomeMain:"mac:WindowDidBecomeMain",WindowDidBeginSheet:"mac:WindowDidBeginSheet",WindowDidChangeAlpha:"mac:WindowDidChangeAlpha",WindowDidChangeBackingLocation:"mac:WindowDidChangeBackingLocation",WindowDidChangeBackingProperties:"mac:WindowDidChangeBackingProperties",WindowDidChangeCollectionBehavior:"mac:WindowDidChangeCollectionBehavior",WindowDidChangeEffectiveAppearance:"mac:WindowDidChangeEffectiveAppearance",WindowDidChangeOcclusionState:"mac:WindowDidChangeOcclusionState",WindowDidChangeOrderingMode:"mac:WindowDidChangeOrderingMode",WindowDidChangeScreen:"mac:WindowDidChangeScreen",WindowDidChangeScreenParameters:"mac:WindowDidChangeScreenParameters",WindowDidChangeScreenProfile:"mac:WindowDidChangeScreenProfile",WindowDidChangeScreenSpace:"mac:WindowDidChangeScreenSpace",WindowDidChangeScreenSpaceProperties:"mac:WindowDidChangeScreenSpaceProperties",WindowDidChangeSharingType:"mac:WindowDidChangeSharingType",WindowDidChangeSpace:"mac:WindowDidChangeSpace",WindowDidChangeSpaceOrderingMode:"mac:WindowDidChangeSpaceOrderingMode",WindowDidChangeTitle:"mac:WindowDidChangeTitle",WindowDidChangeToolbar:"mac:WindowDidChangeToolbar",WindowDidDeminiaturize:"mac:WindowDidDeminiaturize",WindowDidEndSheet:"mac:WindowDidEndSheet",WindowDidEnterFullScreen:"mac:WindowDidEnterFullScreen",WindowDidEnterVersionBrowser:"mac:WindowDidEnterVersionBrowser",WindowDidExitFullScreen:"mac:WindowDidExitFullScreen",WindowDidExitVersionBrowser:"mac:WindowDidExitVersionBrowser",WindowDidExpose:"mac:WindowDidExpose",WindowDidFocus:"mac:WindowDidFocus",WindowDidMiniaturize:"mac:WindowDidMiniaturize",WindowDidMove:"mac:WindowDidMove",WindowDidOrderOffScreen:"mac:WindowDidOrderOffScreen",WindowDidOrderOnScreen:"mac:WindowDidOrderOnScreen",WindowDidResignKey:"mac:WindowDidResignKey",WindowDidResignMain:"mac:WindowDidResignMain",WindowDidResize:"mac:WindowDidResize",WindowDidUpdate:"mac:WindowDidUpdate",WindowDidUpdateAlpha:"mac:WindowDidUpdateAlpha",WindowDidUpdateCollectionBehavior:"mac:WindowDidUpdateCollectionBehavior",WindowDidUpdateCollectionProperties:"mac:WindowDidUpdateCollectionProperties",WindowDidUpdateShadow:"mac:WindowDidUpdateShadow",WindowDidUpdateTitle:"mac:WindowDidUpdateTitle",WindowDidUpdateToolbar:"mac:WindowDidUpdateToolbar",WindowDidZoom:"mac:WindowDidZoom",WindowFileDraggingEntered:"mac:WindowFileDraggingEntered",WindowFileDraggingExited:"mac:WindowFileDraggingExited",WindowFileDraggingPerformed:"mac:WindowFileDraggingPerformed",WindowHide:"mac:WindowHide",WindowMaximise:"mac:WindowMaximise",WindowUnMaximise:"mac:WindowUnMaximise",WindowMinimise:"mac:WindowMinimise",WindowUnMinimise:"mac:WindowUnMinimise",WindowShouldClose:"mac:WindowShouldClose",WindowShow:"mac:WindowShow",WindowWillBecomeKey:"mac:WindowWillBecomeKey",WindowWillBecomeMain:"mac:WindowWillBecomeMain",WindowWillBeginSheet:"mac:WindowWillBeginSheet",WindowWillChangeOrderingMode:"mac:WindowWillChangeOrderingMode",WindowWillClose:"mac:WindowWillClose",WindowWillDeminiaturize:"mac:WindowWillDeminiaturize",WindowWillEnterFullScreen:"mac:WindowWillEnterFullScreen",WindowWillEnterVersionBrowser:"mac:WindowWillEnterVersionBrowser",WindowWillExitFullScreen:"mac:WindowWillExitFullScreen",WindowWillExitVersionBrowser:"mac:WindowWillExitVersionBrowser",WindowWillFocus:"mac:WindowWillFocus",WindowWillMiniaturize:"mac:WindowWillMiniaturize",WindowWillMove:"mac:WindowWillMove",WindowWillOrderOffScreen:"mac:WindowWillOrderOffScreen",WindowWillOrderOnScreen:"mac:WindowWillOrderOnScreen",WindowWillResignMain:"mac:WindowWillResignMain",WindowWillResize:"mac:WindowWillResize",WindowWillUnfocus:"mac:WindowWillUnfocus",WindowWillUpdate:"mac:WindowWillUpdate",WindowWillUpdateAlpha:"mac:WindowWillUpdateAlpha",WindowWillUpdateCollectionBehavior:"mac:WindowWillUpdateCollectionBehavior",WindowWillUpdateCollectionProperties:"mac:WindowWillUpdateCollectionProperties",WindowWillUpdateShadow:"mac:WindowWillUpdateShadow",WindowWillUpdateTitle:"mac:WindowWillUpdateTitle",WindowWillUpdateToolbar:"mac:WindowWillUpdateToolbar",WindowWillUpdateVisibility:"mac:WindowWillUpdateVisibility",WindowWillUseStandardFrame:"mac:WindowWillUseStandardFrame",WindowZoomIn:"mac:WindowZoomIn",WindowZoomOut:"mac:WindowZoomOut",WindowZoomReset:"mac:WindowZoomReset"}),Linux:Object.freeze({ApplicationStartup:"linux:ApplicationStartup",SystemDidWake:"linux:SystemDidWake",SystemThemeChanged:"linux:SystemThemeChanged",SystemWillSleep:"linux:SystemWillSleep",WindowDeleteEvent:"linux:WindowDeleteEvent",WindowDidMove:"linux:WindowDidMove",WindowDidResize:"linux:WindowDidResize",WindowFocusIn:"linux:WindowFocusIn",WindowFocusOut:"linux:WindowFocusOut",WindowLoadStarted:"linux:WindowLoadStarted",WindowLoadRedirected:"linux:WindowLoadRedirected",WindowLoadCommitted:"linux:WindowLoadCommitted",WindowLoadFinished:"linux:WindowLoadFinished"}),iOS:Object.freeze({ApplicationDidBecomeActive:"ios:ApplicationDidBecomeActive",ApplicationDidEnterBackground:"ios:ApplicationDidEnterBackground",ApplicationDidFinishLaunching:"ios:ApplicationDidFinishLaunching",ApplicationDidReceiveMemoryWarning:"ios:ApplicationDidReceiveMemoryWarning",ApplicationWillEnterForeground:"ios:ApplicationWillEnterForeground",ApplicationWillResignActive:"ios:ApplicationWillResignActive",ApplicationWillTerminate:"ios:ApplicationWillTerminate",WindowDidLoad:"ios:WindowDidLoad",WindowWillAppear:"ios:WindowWillAppear",WindowDidAppear:"ios:WindowDidAppear",WindowWillDisappear:"ios:WindowWillDisappear",WindowDidDisappear:"ios:WindowDidDisappear",WindowSafeAreaInsetsChanged:"ios:WindowSafeAreaInsetsChanged",WindowOrientationChanged:"ios:WindowOrientationChanged",WindowTouchBegan:"ios:WindowTouchBegan",WindowTouchMoved:"ios:WindowTouchMoved",WindowTouchEnded:"ios:WindowTouchEnded",WindowTouchCancelled:"ios:WindowTouchCancelled",WebViewDidStartNavigation:"ios:WebViewDidStartNavigation",WebViewDidFinishNavigation:"ios:WebViewDidFinishNavigation",WebViewDidFailNavigation:"ios:WebViewDidFailNavigation",WebViewDecidePolicyForNavigationAction:"ios:WebViewDecidePolicyForNavigationAction",BatteryChanged:"ios:BatteryChanged",NetworkChanged:"ios:NetworkChanged",ThemeChanged:"ios:ThemeChanged",ScreenLocked:"ios:ScreenLocked",ScreenUnlocked:"ios:ScreenUnlocked"}),Android:Object.freeze({ActivityCreated:"android:ActivityCreated",ActivityStarted:"android:ActivityStarted",ActivityResumed:"android:ActivityResumed",ActivityPaused:"android:ActivityPaused",ActivityStopped:"android:ActivityStopped",ActivityDestroyed:"android:ActivityDestroyed",ApplicationLowMemory:"android:ApplicationLowMemory",WebViewPageStarted:"android:WebViewPageStarted",WebViewPageFinished:"android:WebViewPageFinished",BatteryChanged:"android:BatteryChanged",NetworkChanged:"android:NetworkChanged",ThemeChanged:"android:ThemeChanged",ScreenLocked:"android:ScreenLocked",ScreenUnlocked:"android:ScreenUnlocked"}),Common:Object.freeze({ApplicationOpenedWithFile:"common:ApplicationOpenedWithFile",ApplicationStarted:"common:ApplicationStarted",ApplicationLaunchedWithUrl:"common:ApplicationLaunchedWithUrl",ThemeChanged:"common:ThemeChanged",SystemDidWake:"common:SystemDidWake",SystemWillSleep:"common:SystemWillSleep",WindowClosing:"common:WindowClosing",WindowDidMove:"common:WindowDidMove",WindowDidResize:"common:WindowDidResize",WindowDPIChanged:"common:WindowDPIChanged",WindowFilesDropped:"common:WindowFilesDropped",WindowFocus:"common:WindowFocus",WindowFullscreen:"common:WindowFullscreen",WindowHide:"common:WindowHide",WindowLostFocus:"common:WindowLostFocus",WindowMaximise:"common:WindowMaximise",WindowMinimise:"common:WindowMinimise",WindowToggleFrameless:"common:WindowToggleFrameless",WindowRestore:"common:WindowRestore",WindowRuntimeReady:"common:WindowRuntimeReady",WindowShow:"common:WindowShow",WindowUnFullscreen:"common:WindowUnFullscreen",WindowUnMaximise:"common:WindowUnMaximise",WindowUnMinimise:"common:WindowUnMinimise",WindowZoom:"common:WindowZoom",WindowZoomIn:"common:WindowZoomIn",WindowZoomOut:"common:WindowZoomOut",WindowZoomReset:"common:WindowZoomReset",BatteryChanged:"common:BatteryChanged",NetworkChanged:"common:NetworkChanged",ScreenLocked:"common:ScreenLocked",ScreenUnlocked:"common:ScreenUnlocked",LowMemory:"common:LowMemory"})});w&&(window._wails=window._wails||{},window._wails.dispatchWailsEvent=hi);var fi=u(c.Events),gi=0,V=class{constructor(e,i){this.name=e,this.data=i!=null?i:null}};function hi(n){let e=g.get(n.name);if(!e)return;let i=new V(n.name,n.name in $?$[n.name](n.data):n.data);"sender"in n&&(i.sender=n.sender);let t=new Set;for(let o of e.slice())o.dispatch(i)&&t.add(o);if(t.size>0){let o=g.get(n.name);if(o){let a=o.filter(r=>!t.has(r));a.length===0?g.delete(n.name):g.set(n.name,a)}}}function he(n,e,i){let t=g.get(n)||[],o=new q(n,e,i);return t.push(o),g.set(n,t),()=>wn(o)}function Wi(n,e){return he(n,e,-1)}function bi(n,e){return he(n,e,1)}function yi(...n){n.forEach(e=>g.delete(e))}function vi(){g.clear()}function We(n,e){return fi(gi,new V(n,e))}function pn(){return new MouseEvent("mousedown").buttons===0}function fn(){if(!EventTarget||!AbortSignal||!AbortController)return!1;let n=!0,e=new EventTarget,i=new AbortController;return e.addEventListener("test",()=>{n=!1},{signal:i.signal}),i.abort(),e.dispatchEvent(new CustomEvent("test")),n}function ee(n){var e;return n.target instanceof HTMLElement?n.target:!(n.target instanceof HTMLElement)&&n.target instanceof Node&&(e=n.target.parentElement)!=null?e:document.body}var gn=!1;w&&document.addEventListener("DOMContentLoaded",()=>{gn=!0});function hn(n){gn||document.readyState==="complete"?n():document.addEventListener("DOMContentLoaded",n)}var Di="data-file-drop-target",W="file-drop-target-active",m=null,Ci=0,Pi=1,Si=2,Ti=3,Mi=4,xi=5,Ei=6,Ai=7,Ri=8,ki=9,Oi=10,Fi=11,Li=12,Ii=13,Ui=14,Bi=15,Ni=16,ji=17,zi=18,Hi=19,Vi=20,Zi=21,_i=22,Ki=23,Gi=24,Yi=25,Xi=26,Ji=27,Qi=28,qi=29,$i=30,et=31,nt=32,it=33,tt=34,ot=35,rt=36,at=37,st=38,lt=39,dt=40,ct=41,mt=42,ut=43,wt=44,pt=45,ft=46,gt=47,ht=48,Wt=49,bt=50,yt=51,vt=52;function ne(n){return n?n.closest("[".concat(Di,"]")):null}function Dt(){var n,e,i,t;return((e=(n=window.chrome)==null?void 0:n.webview)==null?void 0:e.postMessageWithAdditionalObjects)==null?!1:((t=(i=window._wails)==null?void 0:i.flags)==null?void 0:t.enableFileDrop)===!0}function Ct(n,e,i){var t,o;(o=(t=window.chrome)==null?void 0:t.webview)!=null&&o.postMessageWithAdditionalObjects&&window.chrome.webview.postMessageWithAdditionalObjects("file:drop:".concat(n,":").concat(e),i)}var ve=!1;function Wn(){ve=!1,m&&(m.classList.remove(W),m=null)}function bn(){var n,e;((e=(n=window._wails)==null?void 0:n.flags)==null?void 0:e.enableFileDrop)!==!1&&(ve=!0)}function yn(){Wn()}function vn(n,e){var o,a;if(!ve||((a=(o=window._wails)==null?void 0:o.flags)==null?void 0:a.enableFileDrop)===!1)return;let i=document.elementFromPoint(n,e),t=ne(i);m&&m!==t&&m.classList.remove(W),t?(t.classList.add(W),m=t):m=null}var s=Symbol("caller"),ie=class ie{constructor(e=""){this[s]=u(c.Window,e);for(let i of Object.getOwnPropertyNames(ie.prototype))i!=="constructor"&&typeof this[i]=="function"&&(this[i]=this[i].bind(this))}Get(e){return new ie(e)}Position(){return this[s](Ci)}Center(){return this[s](Pi)}Close(){return this[s](Si)}DisableSizeConstraints(){return this[s](Ti)}EnableSizeConstraints(){return this[s](Mi)}Focus(){return this[s](xi)}ForceReload(){return this[s](Ei)}Fullscreen(){return this[s](Ai)}GetScreen(){return this[s](Ri)}GetZoom(){return this[s](ki)}Height(){return this[s](Oi)}Hide(){return this[s](Fi)}IsFocused(){return this[s](Li)}IsFullscreen(){return this[s](Ii)}IsMaximised(){return this[s](Ui)}IsMinimised(){return this[s](Bi)}Maximise(){return this[s](Ni)}Minimise(){return this[s](ji)}Name(){return this[s](zi)}OpenDevTools(){return this[s](Hi)}RelativePosition(){return this[s](Vi)}Reload(){return this[s](Zi)}Resizable(){return this[s](_i)}Restore(){return this[s](Ki)}SetPosition(e,i){return this[s](Gi,{x:e,y:i})}SetAlwaysOnTop(e){return this[s](Yi,{alwaysOnTop:e})}SetBackgroundColour(e,i,t,o){return this[s](Xi,{r:e,g:i,b:t,a:o})}SetFrameless(e){return this[s](Ji,{frameless:e})}SetFullscreenButtonEnabled(e){return this[s](Qi,{enabled:e})}SetMaxSize(e,i){return this[s](qi,{width:e,height:i})}SetMinSize(e,i){return this[s]($i,{width:e,height:i})}SetRelativePosition(e,i){return this[s](et,{x:e,y:i})}SetResizable(e){return this[s](nt,{resizable:e})}SetSize(e,i){return this[s](it,{width:e,height:i})}SetTitle(e){return this[s](tt,{title:e})}SetZoom(e){return this[s](ot,{zoom:e})}Show(){return this[s](rt)}Size(){return this[s](at)}ToggleFullscreen(){return this[s](st)}ToggleMaximise(){return this[s](lt)}ToggleFrameless(){return this[s](dt)}UnFullscreen(){return this[s](ct)}UnMaximise(){return this[s](mt)}UnMinimise(){return this[s](ut)}Width(){return this[s](wt)}Zoom(){return this[s](pt)}ZoomIn(){return this[s](ft)}ZoomOut(){return this[s](gt)}ZoomReset(){return this[s](ht)}HandlePlatformFileDrop(e,i,t){var d,f;if(((f=(d=window._wails)==null?void 0:d.flags)==null?void 0:f.enableFileDrop)===!1)return;let o=document.elementFromPoint(i,t),a=ne(o);if(!a)return;let r={id:a.id,classList:Array.from(a.classList),attributes:{}};for(let y=0;y{var a,r,l;if(!((a=i.dataTransfer)!=null&&a.types.includes("Files")))return;if(i.preventDefault(),((l=(r=window._wails)==null?void 0:r.flags)==null?void 0:l.enableFileDrop)===!1){i.dataTransfer.dropEffect="none";return}e++;let t=document.elementFromPoint(i.clientX,i.clientY),o=ne(t);m&&m!==o&&m.classList.remove(W),o?(o.classList.add(W),i.dataTransfer.dropEffect="copy",m=o):(i.dataTransfer.dropEffect="none",m=null)},!1),n.addEventListener("dragover",i=>{var a,r,l;if(!((a=i.dataTransfer)!=null&&a.types.includes("Files")))return;if(i.preventDefault(),((l=(r=window._wails)==null?void 0:r.flags)==null?void 0:l.enableFileDrop)===!1){i.dataTransfer.dropEffect="none";return}let t=document.elementFromPoint(i.clientX,i.clientY),o=ne(t);m&&m!==o&&m.classList.remove(W),o?(o.classList.contains(W)||o.classList.add(W),i.dataTransfer.dropEffect="copy",m=o):(i.dataTransfer.dropEffect="none",m=null)},!1),n.addEventListener("dragleave",i=>{var t,o,a;(t=i.dataTransfer)!=null&&t.types.includes("Files")&&(i.preventDefault(),((a=(o=window._wails)==null?void 0:o.flags)==null?void 0:a.enableFileDrop)!==!1&&i.relatedTarget!==null&&(e--,(e===0||m&&!m.contains(i.relatedTarget))&&(m&&(m.classList.remove(W),m=null),e=0)))},!1),n.addEventListener("drop",i=>{var t,o,a;if((t=i.dataTransfer)!=null&&t.types.includes("Files")&&(i.preventDefault(),((a=(o=window._wails)==null?void 0:o.flags)==null?void 0:a.enableFileDrop)!==!1&&(e=0,m&&(m.classList.remove(W),m=null),Dt()))){let r=[];if(i.dataTransfer.items){for(let l of i.dataTransfer.items)if(l.kind==="file"){let d=l.getAsFile();d&&r.push(d)}}else if(i.dataTransfer.files)for(let l of i.dataTransfer.files)r.push(l);r.length>0&&Ct(i.clientX,i.clientY,r)}},!1)}typeof window<"u"&&typeof document<"u"&&St();var A=Pt;function Tt(n,e=null){We(n,e)}function Mt(n,e){let i=A.Get(n),t=i[e];if(typeof t=="function")try{t.call(i)}catch(o){}}function Dn(n){let e=n.currentTarget;function i(o="Yes"){if(o!=="Yes")return;let a=e.getAttribute("wml-event")||e.getAttribute("data-wml-event"),r=e.getAttribute("wml-target-window")||e.getAttribute("data-wml-target-window")||"",l=e.getAttribute("wml-window")||e.getAttribute("data-wml-window"),d=e.getAttribute("wml-openurl")||e.getAttribute("data-wml-openurl");a!==null&&Tt(a),l!==null&&Mt(r,l),d!==null&&ue(d)}let t=e.getAttribute("wml-confirm")||e.getAttribute("data-wml-confirm");t?pe({Title:"Confirm",Message:t,Detached:!1,Buttons:[{Label:"Yes"},{Label:"No",IsDefault:!0}]}).then(i):i()}var Z=Symbol("controller"),R=Symbol("triggerMap"),P=Symbol("elementCount"),De=class{constructor(){this[Z]=new AbortController}set(e,i){return{signal:this[Z].signal}}reset(){this[Z].abort(),this[Z]=new AbortController}},Ce=class{constructor(){this[R]=new WeakMap,this[P]=0}set(e,i){return this[R].has(e)||this[P]++,this[R].set(e,i),{}}reset(){if(!(this[P]<=0)){for(let e of document.body.querySelectorAll("*")){if(this[P]<=0)break;let i=this[R].get(e);i!=null&&this[P]--;for(let t of i||[])e.removeEventListener(t,Dn)}this[R]=new WeakMap,this[P]=0}}},Cn=fn()?new De:new Ce;function xt(n){let e=/\S+/g,i=n.getAttribute("wml-trigger")||n.getAttribute("data-wml-trigger")||"click",t=[],o;for(;(o=e.exec(i))!==null;)t.push(o[0]);let a=Cn.set(n,t);for(let r of t)n.addEventListener(r,Dn,a)}function Pe(){hn(Pn)}function Pn(){Cn.reset(),document.body.querySelectorAll("[wml-event], [wml-window], [wml-openurl], [data-wml-event], [data-wml-window], [data-wml-openurl]").forEach(xt)}window.wails=Te;Pe();var Ae={};p(Ae,{Capabilities:()=>Ot,Environment:()=>Ft,IsAMD64:()=>Ut,IsARM:()=>Bt,IsARM64:()=>Nt,IsAndroid:()=>Mn,IsDarkMode:()=>kt,IsDebug:()=>Ee,IsDesktop:()=>It,IsIOS:()=>Tn,IsLinux:()=>te,IsMac:()=>Sn,IsMobile:()=>Lt,IsWindows:()=>_,invoke:()=>S});var xe=u(c.System),Et=0,At=1,Rt=2,Me=(function(){var n,e,i,t,o,a;try{if((e=(n=window.chrome)==null?void 0:n.webview)!=null&&e.postMessage)return window.chrome.webview.postMessage.bind(window.chrome.webview);if((o=(t=(i=window.webkit)==null?void 0:i.messageHandlers)==null?void 0:t.external)!=null&&o.postMessage)return window.webkit.messageHandlers.external.postMessage.bind(window.webkit.messageHandlers.external);if((a=window.wails)!=null&&a.invoke)return r=>window.wails.invoke(typeof r=="string"?r:JSON.stringify(r))}catch(r){}return null})();function S(n){Me==null||Me(n)}function kt(){return xe(Et)}async function Ot(){return xe(Rt)}function Ft(){return xe(At)}function _(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="windows"}function te(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="linux"}function Sn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="darwin"}function Tn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="ios"}function Mn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="android"}function Lt(){return Tn()||Mn()}function It(){return Sn()||_()||te()}function Ut(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="amd64"}function Bt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="arm"}function Nt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="arm64"}function Ee(){var n,e;return!!((e=(n=window._wails)==null?void 0:n.environment)!=null&&e.Debug)}w&&window.addEventListener("contextmenu",Vt);var jt=u(c.ContextMenu),zt=0;function Ht(n,e,i,t){jt(zt,{id:n,x:e,y:i,data:t})}function Vt(n){let e=ee(n),i=window.getComputedStyle(e).getPropertyValue("--custom-contextmenu").trim();if(i){n.preventDefault();let t=window.getComputedStyle(e).getPropertyValue("--custom-contextmenu-data");Ht(i,n.clientX,n.clientY,t)}else Zt(n,e)}function Zt(n,e){if(Ee())return;switch(window.getComputedStyle(e).getPropertyValue("--default-contextmenu").trim()){case"show":return;case"hide":n.preventDefault();return}if(e.isContentEditable)return;let i=window.getSelection(),t=i&&i.toString().length>0;if(t)for(let o=0;ok});function k(n){try{return window._wails.flags[n]}catch(e){throw new Error("Unable to retrieve flag '"+n+"': "+e,{cause:e})}}var K=!1,G=!1,Ie=!1,F=!1,L=!1,T="",xn="auto",O=0,oe=!1;w&&(oe=pn(),window._wails=window._wails||{},window._wails.setResizable=n=>{Ie=n,Ie||(F=L=!1,h())});var Ue=!1;function _t(){var i,t;let n=(t=(i=window._wails)==null?void 0:i.environment)==null?void 0:t.OS;if(n==="ios"||n==="android")return!0;let e=navigator.userAgent||navigator.vendor||window.opera||"";return/android|iphone|ipad|ipod|iemobile|wpdesktop/i.test(e)}function ke(){if(!Ue&&!_t()){window.addEventListener("mousedown",Le,{capture:!0}),window.addEventListener("mousemove",Le,{capture:!0}),window.addEventListener("mouseup",Le,{capture:!0});for(let n of["click","contextmenu","dblclick"])window.addEventListener(n,Kt,{capture:!0});Ue=!0}}if(w){ke(),document.addEventListener("DOMContentLoaded",ke,{once:!0});let n=0,e=window.setInterval(()=>{if(Ue){window.clearInterval(e);return}ke(),++n>100&&window.clearInterval(e)},50)}function Kt(n){(G||L)&&(n.stopImmediatePropagation(),n.stopPropagation(),n.preventDefault())}var Oe=0,Gt=1,Fe=2;function Le(n){let e,i=n.buttons;switch(n.type){case"mousedown":e=Oe,oe||(i=O|1<no,Quit:()=>to,Show:()=>io});var Be=u(c.Application),qt=0,$t=1,eo=2;function no(){return Be(qt)}function io(){return Be($t)}function to(){return Be(eo)}var Ge={};p(Ge,{ByID:()=>Po,ByName:()=>Co,Call:()=>Ke,RuntimeError:()=>_e});var An=Function.prototype.toString,I=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,je,re;if(typeof I=="function"&&typeof Object.defineProperty=="function")try{je=Object.defineProperty({},"length",{get:function(){throw re}}),re={},I(function(){throw 42},null,je)}catch(n){n!==re&&(I=null)}else I=null;var oo=/^\s*class\b/,He=function(e){try{var i=An.call(e);return oo.test(i)}catch(t){return!1}},ze=function(e){try{return He(e)?!1:(An.call(e),!0)}catch(i){return!1}},ae=Object.prototype.toString,ro="[object Object]",ao="[object Function]",so="[object GeneratorFunction]",lo="[object HTMLAllCollection]",co="[object HTML document.all class]",mo="[object HTMLCollection]",uo=typeof Symbol=="function"&&!!Symbol.toStringTag,wo=!(0 in[,]),Ve=function(){return!1};typeof document=="object"&&(En=document.all,ae.call(En)===ae.call(document.all)&&(Ve=function(e){if((wo||!e)&&(typeof e>"u"||typeof e=="object"))try{var i=ae.call(e);return(i===lo||i===co||i===mo||i===ro)&&e("")==null}catch(t){}return!1}));var En;function po(n){if(Ve(n))return!0;if(!n||typeof n!="function"&&typeof n!="object")return!1;try{I(n,null,je)}catch(e){if(e!==re)return!1}return!He(n)&&ze(n)}function fo(n){if(Ve(n))return!0;if(!n||typeof n!="function"&&typeof n!="object")return!1;if(uo)return ze(n);if(He(n))return!1;var e=ae.call(n);return e!==ao&&e!==so&&!/^\[object HTML/.test(e)?!1:ze(n)}var v=I?po:fo;var B=class extends Error{constructor(e,i){super(e,i),this.name="CancelError"}},D=class extends Error{constructor(e,i,t){super((t!=null?t:"Unhandled rejection in cancelled promise.")+" Reason: "+go(i),{cause:i}),this.promise=e,this.name="CancelledRejectionError"}},b=Symbol("barrier"),Ze=Symbol("cancelImpl"),Fn,Rn=(Fn=Symbol.species)!=null?Fn:Symbol("speciesPolyfill"),Y=class n extends Promise{constructor(e,i){let t,o;if(super((d,f)=>{t=d,o=f}),this.constructor[Rn]!==Promise)throw new TypeError("CancellablePromise does not support transparent subclassing. Please refrain from overriding the [Symbol.species] static property.");let a={promise:this,resolve:t,reject:o,get oncancelled(){return i!=null?i:null},set oncancelled(d){i=d!=null?d:void 0}},r={get root(){return r},resolving:!1,settled:!1};Object.defineProperties(this,{[b]:{configurable:!1,enumerable:!1,writable:!0,value:null},[Ze]:{configurable:!1,enumerable:!1,writable:!1,value:Ln(a,r)}});let l=Un(a,r);try{e(In(a,r),l)}catch(d){r.resolving||l(d)}}cancel(e){return new n(i=>{Promise.all([this[Ze](new B("Promise cancelled.",{cause:e})),ho(this)]).then(()=>i(),()=>i())})}cancelOn(e){return e.aborted?this.cancel(e.reason):e.addEventListener("abort",()=>{this.cancel(e.reason)},{capture:!0}),this}then(e,i,t){if(!(this instanceof n))throw new TypeError("CancellablePromise.prototype.then called on an invalid object.");if(v(e)||(e=kn),v(i)||(i=On),e===kn&&i==On)return new n(a=>a(this));let o={};return this[b]=o,new n((a,r)=>{super.then(l=>{var d;this[b]===o&&(this[b]=null),(d=o.resolve)==null||d.call(o);try{a(e(l))}catch(f){r(f)}},l=>{var d;this[b]===o&&(this[b]=null),(d=o.resolve)==null||d.call(o);try{a(i(l))}catch(f){r(f)}})},async a=>{try{return t==null?void 0:t(a)}finally{await this.cancel(a)}})}catch(e,i){return this.then(void 0,e,i)}finally(e,i){if(!(this instanceof n))throw new TypeError("CancellablePromise.prototype.finally called on an invalid object.");return v(e)?this.then(t=>n.resolve(e()).then(()=>t),t=>n.resolve(e()).then(()=>{throw t}),i):this.then(e,e,i)}static get[(b,Ze,Rn)](){return Promise}static all(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,a)=>{Promise.all(i).then(o,a)},o=>se(t,i,o));return t}static allSettled(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,a)=>{Promise.allSettled(i).then(o,a)},o=>se(t,i,o));return t}static any(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,a)=>{Promise.any(i).then(o,a)},o=>se(t,i,o));return t}static race(e){let i=Array.from(e),t=new n((o,a)=>{Promise.race(i).then(o,a)},o=>se(t,i,o));return t}static cancel(e){let i=new n(()=>{});return i.cancel(e),i}static timeout(e,i){let t=new n(()=>{});return AbortSignal&&typeof AbortSignal=="function"&&AbortSignal.timeout&&typeof AbortSignal.timeout=="function"?AbortSignal.timeout(e).addEventListener("abort",()=>{t.cancel(i)}):setTimeout(()=>{t.cancel(i)},e),t}static sleep(e,i){return new n(t=>{setTimeout(()=>t(i),e)})}static reject(e){return new n((i,t)=>t(e))}static resolve(e){return e instanceof n?e:new n(i=>i(e))}static withResolvers(){let e={oncancelled:null};return e.promise=new n((i,t)=>{e.resolve=i,e.reject=t},i=>{var t;(t=e.oncancelled)==null||t.call(e,i)}),e}};function Ln(n,e){let i;return t=>{if(e.settled||(e.settled=!0,e.reason=t,n.reject(t),Promise.prototype.then.call(n.promise,void 0,o=>{if(o!==t)throw o})),!(!e.reason||!n.oncancelled))return i=new Promise(o=>{try{o(n.oncancelled(e.reason.cause))}catch(a){Promise.reject(new D(n.promise,a,"Unhandled exception in oncancelled callback."))}}).catch(o=>{Promise.reject(new D(n.promise,o,"Unhandled rejection in oncancelled callback."))}),n.oncancelled=null,i}}function In(n,e){return i=>{if(!e.resolving){if(e.resolving=!0,i===n.promise){if(e.settled)return;e.settled=!0,n.reject(new TypeError("A promise cannot be resolved with itself."));return}if(i!=null&&(typeof i=="object"||typeof i=="function")){let t;try{t=i.then}catch(o){e.settled=!0,n.reject(o);return}if(v(t)){try{let r=i.cancel;if(v(r)){let l=d=>{Reflect.apply(r,i,[d])};e.reason?Ln(j(N({},n),{oncancelled:l}),e)(e.reason):n.oncancelled=l}}catch(r){}let o={root:e.root,resolving:!1,get settled(){return this.root.settled},set settled(r){this.root.settled=r},get reason(){return this.root.reason}},a=Un(n,o);try{Reflect.apply(t,i,[In(n,o),a])}catch(r){a(r)}return}}e.settled||(e.settled=!0,n.resolve(i))}}}function Un(n,e){return i=>{if(!e.resolving)if(e.resolving=!0,e.settled){try{if(i instanceof B&&e.reason instanceof B&&Object.is(i.cause,e.reason.cause))return}catch(t){}Promise.reject(new D(n.promise,i))}else e.settled=!0,n.reject(i)}}function se(n,e,i){let t=[];for(let o of e){let a;try{if(!v(o.then)||(a=o.cancel,!v(a)))continue}catch(l){continue}let r;try{r=Reflect.apply(a,o,[i])}catch(l){Promise.reject(new D(n,l,"Unhandled exception in cancel method."));continue}r&&t.push((r instanceof Promise?r:Promise.resolve(r)).catch(l=>{Promise.reject(new D(n,l,"Unhandled rejection in cancel method."))}))}return Promise.all(t)}function kn(n){return n}function On(n){throw n}function go(n){try{if(n instanceof Error||typeof n!="object"||n.toString!==Object.prototype.toString)return""+n}catch(e){}try{return JSON.stringify(n)}catch(e){}try{return Object.prototype.toString.call(n)}catch(e){}return""}function ho(n){var i;let e=(i=n[b])!=null?i:{};return"promise"in e||Object.assign(e,U()),n[b]==null&&(e.resolve(),n[b]=e),e.promise}var U=Promise.withResolvers;U&&typeof U=="function"?U=U.bind(Promise):U=function(){let n,e;return{promise:new Promise((t,o)=>{n=t,e=o}),resolve:n,reject:e}};w&&(window._wails=window._wails||{});var Wo=u(c.Call),bo=u(c.CancelCall),X=new Map,yo=0,vo=0,_e=class extends Error{constructor(e,i){super(e,i),this.name="RuntimeError"}};function Do(){let n;do n=M();while(X.has(n));return n}function Ke(n){let e=Do(),i=Y.withResolvers();X.set(e,{resolve:i.resolve,reject:i.reject});let t=Wo(yo,Object.assign({"call-id":e},n)),o=!0;t.then(r=>{o=!1,X.delete(e),i.resolve(r)},r=>{o=!1,X.delete(e),i.reject(r)});let a=()=>(X.delete(e),bo(vo,{"call-id":e}).catch(r=>{}));return i.oncancelled=()=>o?a():t.then(a),i.promise}function Co(n,...e){return Ke({methodName:n,args:e})}function Po(n,...e){return Ke({methodID:n,args:e})}var Ye={};p(Ye,{SetText:()=>Mo,Text:()=>xo});var Bn=u(c.Clipboard),So=0,To=1;function Mo(n){return Bn(So,{text:n})}function xo(){return Bn(To)}var Xe={};p(Xe,{GetAll:()=>Fo,GetByID:()=>Uo,GetByIndex:()=>Bo,GetCurrent:()=>Io,GetPrimary:()=>Lo});var J=u(c.Screens),Eo=0,Ao=1,Ro=2,ko=3,Oo=4;function Fo(){return J(Eo)}function Lo(){return J(Ao)}function Io(){return J(Ro)}function Uo(n){return J(ko,{id:n})}function Bo(n){return J(Oo,{index:n})}var qe={};p(qe,{Device:()=>Qe,Haptics:()=>Je});var Nn=u(c.IOS),No=0,jo=1,Je;(e=>{function n(i="medium"){return Nn(No,{style:i})}e.Impact=n})(Je||(Je={}));var Qe;(e=>{function n(){return Nn(jo)}e.Info=n})(Qe||(Qe={}));var on={};p(on,{Device:()=>en,Haptics:()=>$e,Toast:()=>nn});var tn=u(c.Android),zo=0,Ho=1,Vo=2,$e;(e=>{function n(i=100){return tn(zo,{duration:i})}e.Vibrate=n})($e||($e={}));var en;(e=>{function n(){return tn(Ho)}e.Info=n})(en||(en={}));var nn;(e=>{function n(i){return tn(Vo,{message:i})}e.Show=n})(nn||(nn={}));var rn={};p(rn,{Events:()=>Zo});var Zo=Object.freeze({CheckStarted:"wails:updater:check-started",UpdateAvailable:"wails:updater:update-available",NoUpdate:"wails:updater:no-update",DownloadStarted:"wails:updater:download-started",DownloadProgress:"wails:updater:download-progress",DownloadComplete:"wails:updater:download-complete",Verifying:"wails:updater:verifying",Installing:"wails:updater:installing",UpdateReady:"wails:updater:update-ready",Error:"wails:updater:error",Meta:"wails:updater:meta",User:Object.freeze({Install:"wails:updater:user:install",Restart:"wails:updater:user:restart",Skip:"wails:updater:user:skip",Remind:"wails:updater:user:remind",Cancel:"wails:updater:user:cancel"}),Window:Object.freeze({Ready:"wails:updater:window:ready"})});w&&(window._wails=window._wails||{});w&&(window._wails.invoke=S,window._wails.clientId=x);w&&(window._wails.handlePlatformFileDrop=A.HandlePlatformFileDrop.bind(A));w&&(window._wails.handleDragEnter=bn,window._wails.handleDragLeave=yn,window._wails.handleDragOver=vn);w&&S("wails:runtime:ready");function jn(n){return fetch(n,{method:"HEAD"}).then(e=>{if(e.ok&&(e.headers.get("content-type")||"").toLowerCase().includes("javascript")){let t=document.createElement("script");t.src=n,document.head.appendChild(t)}}).catch(()=>{})}w&&jn("/wails/custom.js");export{on as Android,Ne as Application,we as Browser,Ge as Call,B as CancelError,Y as CancellablePromise,D as CancelledRejectionError,Ye as Clipboard,ge as Create,fe as Dialogs,be as Events,Re as Flags,qe as IOS,Xe as Screens,Ae as System,rn as Updater,Se as WML,A as Window,x as clientId,un as getTransport,jn as loadOptionalScript,c as objectNames,mn as setTransport}; +var ln=Object.defineProperty,zn=Object.defineProperties;var Hn=Object.getOwnPropertyDescriptors;var an=Object.getOwnPropertySymbols;var Vn=Object.prototype.hasOwnProperty,Zn=Object.prototype.propertyIsEnumerable;var sn=(n,e,i)=>e in n?ln(n,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[e]=i,N=(n,e)=>{for(var i in e||(e={}))Vn.call(e,i)&&sn(n,i,e[i]);if(an)for(var i of an(e))Zn.call(e,i)&&sn(n,i,e[i]);return n},j=(n,e)=>zn(n,Hn(e));var p=(n,e)=>{for(var i in e)ln(n,i,{get:e[i],enumerable:!0})};var Te={};p(Te,{Android:()=>on,Application:()=>Ne,Browser:()=>we,Call:()=>Ge,CancelError:()=>B,CancellablePromise:()=>Y,CancelledRejectionError:()=>D,Clipboard:()=>Ye,Create:()=>ge,Dialogs:()=>fe,Events:()=>be,Flags:()=>Re,IOS:()=>qe,Screens:()=>Xe,System:()=>Ae,Updater:()=>rn,WML:()=>Se,Window:()=>A,clientId:()=>x,getTransport:()=>un,loadOptionalScript:()=>jn,objectNames:()=>c,setTransport:()=>mn});var Se={};p(Se,{Enable:()=>Pe,Reload:()=>Pn});var we={};p(we,{OpenURL:()=>ue});var _n="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";function M(n=21){let e="",i=n|0;for(;i--;)e+=_n[Math.random()*64|0];return e}var w=typeof window<"u"&&typeof document<"u";function Kn(){return window.location.origin+"/wails/runtime"}var z=512*1024;var c=Object.freeze({Call:0,Clipboard:1,Application:2,Events:3,ContextMenu:4,Dialog:5,Window:6,Screens:7,System:8,Browser:9,CancelCall:10,IOS:11,Android:12}),x=M(),H=null;function mn(n){H=n}function un(){return H}function u(n,e=""){return function(i,t=null){return Gn(n,i,e,t)}}async function Gn(n,e,i,t){var f,y;if(H)return H.call(n,e,i,t);let o=new URL(Kn()),a={object:n,method:e};t!=null&&(a.args=t);let r={"x-wails-client-id":x,"Content-Type":"application/json"};i&&(r["x-wails-window-name"]=i);let l=JSON.stringify(a),d;if(l.length>z?d=await Yn(o,r,l):d=await fetch(o,{method:"POST",headers:r,body:l}),!d.ok)throw new Error(await d.text());return((y=(f=d.headers.get("Content-Type"))==null?void 0:f.indexOf("application/json"))!=null?y:-1)!==-1?d.json():d.text()}async function Yn(n,e,i){let t=M(),o=new TextEncoder().encode(i),a=Math.ceil(o.length/z);for(let r=0;r{var a;let o=n.get(e);if(o){if(n.delete(e),t){o.reject(new Error(t));return}try{let r=JSON.parse(i!=null?i:"{}");if(!r.ok){o.reject(new Error((a=r.error)!=null?a:"unknown runtime call error"));return}o.resolve("text"in r?r.text:r.data)}catch(r){o.reject(r)}}},H={call(e,i,t,o){return new Promise((a,r)=>{let l=M();n.set(l,{resolve:a,reject:r});try{dn.invokeAsync(l,JSON.stringify({object:e,method:i,windowName:t,args:o!=null?o:null,clientId:x}))}catch(d){n.delete(l),r(d)}})}}}var Xn=u(c.Browser),Jn=0;function ue(n){return Xn(Jn,{url:n.toString()})}var fe={};p(fe,{Error:()=>ai,Info:()=>oi,OpenFile:()=>si,Question:()=>pe,SaveFile:()=>li,Warning:()=>ri});w&&(window._wails=window._wails||{});var Qn=u(c.Dialog),qn=0,$n=1,ei=2,ni=3,ii=4,ti=5;function E(n,e={}){return Qn(n,e)}function oi(n){return E(qn,n)}function ri(n){return E($n,n)}function ai(n){return E(ei,n)}function pe(n){return E(ni,n)}function si(n){var e;return(e=E(ii,n))!=null?e:[]}function li(n){return E(ti,n)}var be={};p(be,{Emit:()=>We,Off:()=>vi,OffAll:()=>Di,On:()=>bi,OnMultiple:()=>he,Once:()=>yi,Types:()=>fi,WailsEvent:()=>V});var g=new Map,q=class{constructor(e,i,t){this.eventName=e,this.callback=i,this.maxCallbacks=t||-1}dispatch(e){try{this.callback(e)}catch(i){}return this.maxCallbacks===-1?!1:(this.maxCallbacks-=1,this.maxCallbacks===0)}};function wn(n){let e=g.get(n.eventName);e&&(e=e.filter(i=>i!==n),e.length===0?g.delete(n.eventName):g.set(n.eventName,e))}var ge={};p(ge,{Any:()=>C,Array:()=>ci,ByteSlice:()=>di,DateFromTime:()=>pi,Events:()=>$,Map:()=>mi,Nullable:()=>ui,Struct:()=>wi});function C(n){return n}function di(n){return n==null?"":n}function ci(n){return n===C?e=>e===null?[]:e:e=>{if(e===null)return[];for(let i=0;ii===null?{}:i:i=>{if(i===null)return{};for(let t in i)i[t]=e(i[t]);return i}}function ui(n){return n===C?C:e=>e===null?null:n(e)}function wi(n){let e=!0;for(let i in n)if(n[i]!==C){e=!1;break}return e?C:i=>{for(let t in n)t in i&&(i[t]=n[t](i[t]));return i}}function pi(n){return new Date(n)}var $={};var fi=Object.freeze({Windows:Object.freeze({APMPowerSettingChange:"windows:APMPowerSettingChange",APMPowerStatusChange:"windows:APMPowerStatusChange",APMResumeAutomatic:"windows:APMResumeAutomatic",APMResumeSuspend:"windows:APMResumeSuspend",APMSuspend:"windows:APMSuspend",ApplicationStarted:"windows:ApplicationStarted",SystemThemeChanged:"windows:SystemThemeChanged",WebViewNavigationCompleted:"windows:WebViewNavigationCompleted",WindowActive:"windows:WindowActive",WindowBackgroundErase:"windows:WindowBackgroundErase",WindowClickActive:"windows:WindowClickActive",WindowClosing:"windows:WindowClosing",WindowDidMove:"windows:WindowDidMove",WindowDidResize:"windows:WindowDidResize",WindowDPIChanged:"windows:WindowDPIChanged",WindowDragDrop:"windows:WindowDragDrop",WindowDragEnter:"windows:WindowDragEnter",WindowDragLeave:"windows:WindowDragLeave",WindowDragOver:"windows:WindowDragOver",WindowEndMove:"windows:WindowEndMove",WindowEndResize:"windows:WindowEndResize",WindowFullscreen:"windows:WindowFullscreen",WindowHide:"windows:WindowHide",WindowInactive:"windows:WindowInactive",WindowKeyDown:"windows:WindowKeyDown",WindowKeyUp:"windows:WindowKeyUp",WindowKillFocus:"windows:WindowKillFocus",WindowNonClientHit:"windows:WindowNonClientHit",WindowNonClientMouseDown:"windows:WindowNonClientMouseDown",WindowNonClientMouseLeave:"windows:WindowNonClientMouseLeave",WindowNonClientMouseMove:"windows:WindowNonClientMouseMove",WindowNonClientMouseUp:"windows:WindowNonClientMouseUp",WindowPaint:"windows:WindowPaint",WindowRestore:"windows:WindowRestore",WindowSetFocus:"windows:WindowSetFocus",WindowShow:"windows:WindowShow",WindowStartMove:"windows:WindowStartMove",WindowStartResize:"windows:WindowStartResize",WindowUnFullscreen:"windows:WindowUnFullscreen",WindowZOrderChanged:"windows:WindowZOrderChanged",WindowMinimise:"windows:WindowMinimise",WindowUnMinimise:"windows:WindowUnMinimise",WindowMaximise:"windows:WindowMaximise",WindowUnMaximise:"windows:WindowUnMaximise"}),Mac:Object.freeze({ApplicationDidBecomeActive:"mac:ApplicationDidBecomeActive",ApplicationDidChangeBackingProperties:"mac:ApplicationDidChangeBackingProperties",ApplicationDidChangeEffectiveAppearance:"mac:ApplicationDidChangeEffectiveAppearance",ApplicationDidChangeIcon:"mac:ApplicationDidChangeIcon",ApplicationDidChangeOcclusionState:"mac:ApplicationDidChangeOcclusionState",ApplicationDidChangeScreenParameters:"mac:ApplicationDidChangeScreenParameters",ApplicationDidChangeStatusBarFrame:"mac:ApplicationDidChangeStatusBarFrame",ApplicationDidChangeStatusBarOrientation:"mac:ApplicationDidChangeStatusBarOrientation",ApplicationDidChangeTheme:"mac:ApplicationDidChangeTheme",ApplicationDidFinishLaunching:"mac:ApplicationDidFinishLaunching",ApplicationDidHide:"mac:ApplicationDidHide",ApplicationDidResignActive:"mac:ApplicationDidResignActive",ApplicationDidUnhide:"mac:ApplicationDidUnhide",ApplicationDidUpdate:"mac:ApplicationDidUpdate",ApplicationDidWake:"mac:ApplicationDidWake",ApplicationScreensDidSleep:"mac:ApplicationScreensDidSleep",ApplicationScreensDidWake:"mac:ApplicationScreensDidWake",ApplicationShouldHandleReopen:"mac:ApplicationShouldHandleReopen",ApplicationWillBecomeActive:"mac:ApplicationWillBecomeActive",ApplicationWillFinishLaunching:"mac:ApplicationWillFinishLaunching",ApplicationWillHide:"mac:ApplicationWillHide",ApplicationWillResignActive:"mac:ApplicationWillResignActive",ApplicationWillSleep:"mac:ApplicationWillSleep",ApplicationWillTerminate:"mac:ApplicationWillTerminate",ApplicationWillUnhide:"mac:ApplicationWillUnhide",ApplicationWillUpdate:"mac:ApplicationWillUpdate",MenuDidAddItem:"mac:MenuDidAddItem",MenuDidBeginTracking:"mac:MenuDidBeginTracking",MenuDidClose:"mac:MenuDidClose",MenuDidDisplayItem:"mac:MenuDidDisplayItem",MenuDidEndTracking:"mac:MenuDidEndTracking",MenuDidHighlightItem:"mac:MenuDidHighlightItem",MenuDidOpen:"mac:MenuDidOpen",MenuDidPopUp:"mac:MenuDidPopUp",MenuDidRemoveItem:"mac:MenuDidRemoveItem",MenuDidSendAction:"mac:MenuDidSendAction",MenuDidSendActionToItem:"mac:MenuDidSendActionToItem",MenuDidUpdate:"mac:MenuDidUpdate",MenuWillAddItem:"mac:MenuWillAddItem",MenuWillBeginTracking:"mac:MenuWillBeginTracking",MenuWillDisplayItem:"mac:MenuWillDisplayItem",MenuWillEndTracking:"mac:MenuWillEndTracking",MenuWillHighlightItem:"mac:MenuWillHighlightItem",MenuWillOpen:"mac:MenuWillOpen",MenuWillPopUp:"mac:MenuWillPopUp",MenuWillRemoveItem:"mac:MenuWillRemoveItem",MenuWillSendAction:"mac:MenuWillSendAction",MenuWillSendActionToItem:"mac:MenuWillSendActionToItem",MenuWillUpdate:"mac:MenuWillUpdate",WebViewDidCommitNavigation:"mac:WebViewDidCommitNavigation",WebViewDidFinishNavigation:"mac:WebViewDidFinishNavigation",WebViewDidReceiveServerRedirectForProvisionalNavigation:"mac:WebViewDidReceiveServerRedirectForProvisionalNavigation",WebViewDidStartProvisionalNavigation:"mac:WebViewDidStartProvisionalNavigation",WindowDidBecomeKey:"mac:WindowDidBecomeKey",WindowDidBecomeMain:"mac:WindowDidBecomeMain",WindowDidBeginSheet:"mac:WindowDidBeginSheet",WindowDidChangeAlpha:"mac:WindowDidChangeAlpha",WindowDidChangeBackingLocation:"mac:WindowDidChangeBackingLocation",WindowDidChangeBackingProperties:"mac:WindowDidChangeBackingProperties",WindowDidChangeCollectionBehavior:"mac:WindowDidChangeCollectionBehavior",WindowDidChangeEffectiveAppearance:"mac:WindowDidChangeEffectiveAppearance",WindowDidChangeOcclusionState:"mac:WindowDidChangeOcclusionState",WindowDidChangeOrderingMode:"mac:WindowDidChangeOrderingMode",WindowDidChangeScreen:"mac:WindowDidChangeScreen",WindowDidChangeScreenParameters:"mac:WindowDidChangeScreenParameters",WindowDidChangeScreenProfile:"mac:WindowDidChangeScreenProfile",WindowDidChangeScreenSpace:"mac:WindowDidChangeScreenSpace",WindowDidChangeScreenSpaceProperties:"mac:WindowDidChangeScreenSpaceProperties",WindowDidChangeSharingType:"mac:WindowDidChangeSharingType",WindowDidChangeSpace:"mac:WindowDidChangeSpace",WindowDidChangeSpaceOrderingMode:"mac:WindowDidChangeSpaceOrderingMode",WindowDidChangeTitle:"mac:WindowDidChangeTitle",WindowDidChangeToolbar:"mac:WindowDidChangeToolbar",WindowDidDeminiaturize:"mac:WindowDidDeminiaturize",WindowDidEndSheet:"mac:WindowDidEndSheet",WindowDidEnterFullScreen:"mac:WindowDidEnterFullScreen",WindowDidEnterVersionBrowser:"mac:WindowDidEnterVersionBrowser",WindowDidExitFullScreen:"mac:WindowDidExitFullScreen",WindowDidExitVersionBrowser:"mac:WindowDidExitVersionBrowser",WindowDidExpose:"mac:WindowDidExpose",WindowDidFocus:"mac:WindowDidFocus",WindowDidMiniaturize:"mac:WindowDidMiniaturize",WindowDidMove:"mac:WindowDidMove",WindowDidOrderOffScreen:"mac:WindowDidOrderOffScreen",WindowDidOrderOnScreen:"mac:WindowDidOrderOnScreen",WindowDidResignKey:"mac:WindowDidResignKey",WindowDidResignMain:"mac:WindowDidResignMain",WindowDidResize:"mac:WindowDidResize",WindowDidUpdate:"mac:WindowDidUpdate",WindowDidUpdateAlpha:"mac:WindowDidUpdateAlpha",WindowDidUpdateCollectionBehavior:"mac:WindowDidUpdateCollectionBehavior",WindowDidUpdateCollectionProperties:"mac:WindowDidUpdateCollectionProperties",WindowDidUpdateShadow:"mac:WindowDidUpdateShadow",WindowDidUpdateTitle:"mac:WindowDidUpdateTitle",WindowDidUpdateToolbar:"mac:WindowDidUpdateToolbar",WindowDidZoom:"mac:WindowDidZoom",WindowFileDraggingEntered:"mac:WindowFileDraggingEntered",WindowFileDraggingExited:"mac:WindowFileDraggingExited",WindowFileDraggingPerformed:"mac:WindowFileDraggingPerformed",WindowHide:"mac:WindowHide",WindowMaximise:"mac:WindowMaximise",WindowUnMaximise:"mac:WindowUnMaximise",WindowMinimise:"mac:WindowMinimise",WindowUnMinimise:"mac:WindowUnMinimise",WindowShouldClose:"mac:WindowShouldClose",WindowShow:"mac:WindowShow",WindowWillBecomeKey:"mac:WindowWillBecomeKey",WindowWillBecomeMain:"mac:WindowWillBecomeMain",WindowWillBeginSheet:"mac:WindowWillBeginSheet",WindowWillChangeOrderingMode:"mac:WindowWillChangeOrderingMode",WindowWillClose:"mac:WindowWillClose",WindowWillDeminiaturize:"mac:WindowWillDeminiaturize",WindowWillEnterFullScreen:"mac:WindowWillEnterFullScreen",WindowWillEnterVersionBrowser:"mac:WindowWillEnterVersionBrowser",WindowWillExitFullScreen:"mac:WindowWillExitFullScreen",WindowWillExitVersionBrowser:"mac:WindowWillExitVersionBrowser",WindowWillFocus:"mac:WindowWillFocus",WindowWillMiniaturize:"mac:WindowWillMiniaturize",WindowWillMove:"mac:WindowWillMove",WindowWillOrderOffScreen:"mac:WindowWillOrderOffScreen",WindowWillOrderOnScreen:"mac:WindowWillOrderOnScreen",WindowWillResignMain:"mac:WindowWillResignMain",WindowWillResize:"mac:WindowWillResize",WindowWillUnfocus:"mac:WindowWillUnfocus",WindowWillUpdate:"mac:WindowWillUpdate",WindowWillUpdateAlpha:"mac:WindowWillUpdateAlpha",WindowWillUpdateCollectionBehavior:"mac:WindowWillUpdateCollectionBehavior",WindowWillUpdateCollectionProperties:"mac:WindowWillUpdateCollectionProperties",WindowWillUpdateShadow:"mac:WindowWillUpdateShadow",WindowWillUpdateTitle:"mac:WindowWillUpdateTitle",WindowWillUpdateToolbar:"mac:WindowWillUpdateToolbar",WindowWillUpdateVisibility:"mac:WindowWillUpdateVisibility",WindowWillUseStandardFrame:"mac:WindowWillUseStandardFrame",WindowZoomIn:"mac:WindowZoomIn",WindowZoomOut:"mac:WindowZoomOut",WindowZoomReset:"mac:WindowZoomReset",WebViewWebContentProcessDidTerminate:"mac:WebViewWebContentProcessDidTerminate"}),Linux:Object.freeze({ApplicationStartup:"linux:ApplicationStartup",SystemDidWake:"linux:SystemDidWake",SystemThemeChanged:"linux:SystemThemeChanged",SystemWillSleep:"linux:SystemWillSleep",WindowDeleteEvent:"linux:WindowDeleteEvent",WindowDidMove:"linux:WindowDidMove",WindowDidResize:"linux:WindowDidResize",WindowFocusIn:"linux:WindowFocusIn",WindowFocusOut:"linux:WindowFocusOut",WindowLoadStarted:"linux:WindowLoadStarted",WindowLoadRedirected:"linux:WindowLoadRedirected",WindowLoadCommitted:"linux:WindowLoadCommitted",WindowLoadFinished:"linux:WindowLoadFinished"}),iOS:Object.freeze({ApplicationDidBecomeActive:"ios:ApplicationDidBecomeActive",ApplicationDidEnterBackground:"ios:ApplicationDidEnterBackground",ApplicationDidFinishLaunching:"ios:ApplicationDidFinishLaunching",ApplicationDidReceiveMemoryWarning:"ios:ApplicationDidReceiveMemoryWarning",ApplicationWillEnterForeground:"ios:ApplicationWillEnterForeground",ApplicationWillResignActive:"ios:ApplicationWillResignActive",ApplicationWillTerminate:"ios:ApplicationWillTerminate",WindowDidLoad:"ios:WindowDidLoad",WindowWillAppear:"ios:WindowWillAppear",WindowDidAppear:"ios:WindowDidAppear",WindowWillDisappear:"ios:WindowWillDisappear",WindowDidDisappear:"ios:WindowDidDisappear",WindowSafeAreaInsetsChanged:"ios:WindowSafeAreaInsetsChanged",WindowOrientationChanged:"ios:WindowOrientationChanged",WindowTouchBegan:"ios:WindowTouchBegan",WindowTouchMoved:"ios:WindowTouchMoved",WindowTouchEnded:"ios:WindowTouchEnded",WindowTouchCancelled:"ios:WindowTouchCancelled",WebViewDidStartNavigation:"ios:WebViewDidStartNavigation",WebViewDidFinishNavigation:"ios:WebViewDidFinishNavigation",WebViewDidFailNavigation:"ios:WebViewDidFailNavigation",WebViewDecidePolicyForNavigationAction:"ios:WebViewDecidePolicyForNavigationAction",BatteryChanged:"ios:BatteryChanged",NetworkChanged:"ios:NetworkChanged",ThemeChanged:"ios:ThemeChanged",ScreenLocked:"ios:ScreenLocked",ScreenUnlocked:"ios:ScreenUnlocked"}),Android:Object.freeze({ActivityCreated:"android:ActivityCreated",ActivityStarted:"android:ActivityStarted",ActivityResumed:"android:ActivityResumed",ActivityPaused:"android:ActivityPaused",ActivityStopped:"android:ActivityStopped",ActivityDestroyed:"android:ActivityDestroyed",ApplicationLowMemory:"android:ApplicationLowMemory",WebViewPageStarted:"android:WebViewPageStarted",WebViewPageFinished:"android:WebViewPageFinished",BatteryChanged:"android:BatteryChanged",NetworkChanged:"android:NetworkChanged",ThemeChanged:"android:ThemeChanged",ScreenLocked:"android:ScreenLocked",ScreenUnlocked:"android:ScreenUnlocked"}),Common:Object.freeze({ApplicationOpenedWithFile:"common:ApplicationOpenedWithFile",ApplicationStarted:"common:ApplicationStarted",ApplicationLaunchedWithUrl:"common:ApplicationLaunchedWithUrl",ThemeChanged:"common:ThemeChanged",SystemDidWake:"common:SystemDidWake",SystemWillSleep:"common:SystemWillSleep",WindowClosing:"common:WindowClosing",WindowDidMove:"common:WindowDidMove",WindowDidResize:"common:WindowDidResize",WindowDPIChanged:"common:WindowDPIChanged",WindowFilesDropped:"common:WindowFilesDropped",WindowFocus:"common:WindowFocus",WindowFullscreen:"common:WindowFullscreen",WindowHide:"common:WindowHide",WindowLostFocus:"common:WindowLostFocus",WindowMaximise:"common:WindowMaximise",WindowMinimise:"common:WindowMinimise",WindowToggleFrameless:"common:WindowToggleFrameless",WindowRestore:"common:WindowRestore",WindowRuntimeReady:"common:WindowRuntimeReady",WindowShow:"common:WindowShow",WindowUnFullscreen:"common:WindowUnFullscreen",WindowUnMaximise:"common:WindowUnMaximise",WindowUnMinimise:"common:WindowUnMinimise",WindowZoom:"common:WindowZoom",WindowZoomIn:"common:WindowZoomIn",WindowZoomOut:"common:WindowZoomOut",WindowZoomReset:"common:WindowZoomReset",BatteryChanged:"common:BatteryChanged",NetworkChanged:"common:NetworkChanged",ScreenLocked:"common:ScreenLocked",ScreenUnlocked:"common:ScreenUnlocked",LowMemory:"common:LowMemory"})});w&&(window._wails=window._wails||{},window._wails.dispatchWailsEvent=Wi);var gi=u(c.Events),hi=0,V=class{constructor(e,i){this.name=e,this.data=i!=null?i:null}};function Wi(n){let e=g.get(n.name);if(!e)return;let i=new V(n.name,n.name in $?$[n.name](n.data):n.data);"sender"in n&&(i.sender=n.sender);let t=new Set;for(let o of e.slice())o.dispatch(i)&&t.add(o);if(t.size>0){let o=g.get(n.name);if(o){let a=o.filter(r=>!t.has(r));a.length===0?g.delete(n.name):g.set(n.name,a)}}}function he(n,e,i){let t=g.get(n)||[],o=new q(n,e,i);return t.push(o),g.set(n,t),()=>wn(o)}function bi(n,e){return he(n,e,-1)}function yi(n,e){return he(n,e,1)}function vi(...n){n.forEach(e=>g.delete(e))}function Di(){g.clear()}function We(n,e){return gi(hi,new V(n,e))}function pn(){return new MouseEvent("mousedown").buttons===0}function fn(){if(!EventTarget||!AbortSignal||!AbortController)return!1;let n=!0,e=new EventTarget,i=new AbortController;return e.addEventListener("test",()=>{n=!1},{signal:i.signal}),i.abort(),e.dispatchEvent(new CustomEvent("test")),n}function ee(n){var e;return n.target instanceof HTMLElement?n.target:!(n.target instanceof HTMLElement)&&n.target instanceof Node&&(e=n.target.parentElement)!=null?e:document.body}var gn=!1;w&&document.addEventListener("DOMContentLoaded",()=>{gn=!0});function hn(n){gn||document.readyState==="complete"?n():document.addEventListener("DOMContentLoaded",n)}var Ci="data-file-drop-target",W="file-drop-target-active",m=null,Pi=0,Si=1,Ti=2,Mi=3,xi=4,Ei=5,Ai=6,Ri=7,ki=8,Oi=9,Fi=10,Li=11,Ii=12,Ui=13,Bi=14,Ni=15,ji=16,zi=17,Hi=18,Vi=19,Zi=20,_i=21,Ki=22,Gi=23,Yi=24,Xi=25,Ji=26,Qi=27,qi=28,$i=29,et=30,nt=31,it=32,tt=33,ot=34,rt=35,at=36,st=37,lt=38,dt=39,ct=40,mt=41,ut=42,wt=43,pt=44,ft=45,gt=46,ht=47,Wt=48,bt=49,yt=50,vt=51,Dt=52;function ne(n){return n?n.closest("[".concat(Ci,"]")):null}function Ct(){var n,e,i,t;return((e=(n=window.chrome)==null?void 0:n.webview)==null?void 0:e.postMessageWithAdditionalObjects)==null?!1:((t=(i=window._wails)==null?void 0:i.flags)==null?void 0:t.enableFileDrop)===!0}function Pt(n,e,i){var t,o;(o=(t=window.chrome)==null?void 0:t.webview)!=null&&o.postMessageWithAdditionalObjects&&window.chrome.webview.postMessageWithAdditionalObjects("file:drop:".concat(n,":").concat(e),i)}var ve=!1;function Wn(){ve=!1,m&&(m.classList.remove(W),m=null)}function bn(){var n,e;((e=(n=window._wails)==null?void 0:n.flags)==null?void 0:e.enableFileDrop)!==!1&&(ve=!0)}function yn(){Wn()}function vn(n,e){var o,a;if(!ve||((a=(o=window._wails)==null?void 0:o.flags)==null?void 0:a.enableFileDrop)===!1)return;let i=document.elementFromPoint(n,e),t=ne(i);m&&m!==t&&m.classList.remove(W),t?(t.classList.add(W),m=t):m=null}var s=Symbol("caller"),ie=class ie{constructor(e=""){this[s]=u(c.Window,e);for(let i of Object.getOwnPropertyNames(ie.prototype))i!=="constructor"&&typeof this[i]=="function"&&(this[i]=this[i].bind(this))}Get(e){return new ie(e)}Position(){return this[s](Pi)}Center(){return this[s](Si)}Close(){return this[s](Ti)}DisableSizeConstraints(){return this[s](Mi)}EnableSizeConstraints(){return this[s](xi)}Focus(){return this[s](Ei)}ForceReload(){return this[s](Ai)}Fullscreen(){return this[s](Ri)}GetScreen(){return this[s](ki)}GetZoom(){return this[s](Oi)}Height(){return this[s](Fi)}Hide(){return this[s](Li)}IsFocused(){return this[s](Ii)}IsFullscreen(){return this[s](Ui)}IsMaximised(){return this[s](Bi)}IsMinimised(){return this[s](Ni)}Maximise(){return this[s](ji)}Minimise(){return this[s](zi)}Name(){return this[s](Hi)}OpenDevTools(){return this[s](Vi)}RelativePosition(){return this[s](Zi)}Reload(){return this[s](_i)}Resizable(){return this[s](Ki)}Restore(){return this[s](Gi)}SetPosition(e,i){return this[s](Yi,{x:e,y:i})}SetAlwaysOnTop(e){return this[s](Xi,{alwaysOnTop:e})}SetBackgroundColour(e,i,t,o){return this[s](Ji,{r:e,g:i,b:t,a:o})}SetFrameless(e){return this[s](Qi,{frameless:e})}SetFullscreenButtonEnabled(e){return this[s](qi,{enabled:e})}SetMaxSize(e,i){return this[s]($i,{width:e,height:i})}SetMinSize(e,i){return this[s](et,{width:e,height:i})}SetRelativePosition(e,i){return this[s](nt,{x:e,y:i})}SetResizable(e){return this[s](it,{resizable:e})}SetSize(e,i){return this[s](tt,{width:e,height:i})}SetTitle(e){return this[s](ot,{title:e})}SetZoom(e){return this[s](rt,{zoom:e})}Show(){return this[s](at)}Size(){return this[s](st)}ToggleFullscreen(){return this[s](lt)}ToggleMaximise(){return this[s](dt)}ToggleFrameless(){return this[s](ct)}UnFullscreen(){return this[s](mt)}UnMaximise(){return this[s](ut)}UnMinimise(){return this[s](wt)}Width(){return this[s](pt)}Zoom(){return this[s](ft)}ZoomIn(){return this[s](gt)}ZoomOut(){return this[s](ht)}ZoomReset(){return this[s](Wt)}HandlePlatformFileDrop(e,i,t){var d,f;if(((f=(d=window._wails)==null?void 0:d.flags)==null?void 0:f.enableFileDrop)===!1)return;let o=document.elementFromPoint(i,t),a=ne(o);if(!a)return;let r={id:a.id,classList:Array.from(a.classList),attributes:{}};for(let y=0;y{var a,r,l;if(!((a=i.dataTransfer)!=null&&a.types.includes("Files")))return;if(i.preventDefault(),((l=(r=window._wails)==null?void 0:r.flags)==null?void 0:l.enableFileDrop)===!1){i.dataTransfer.dropEffect="none";return}e++;let t=document.elementFromPoint(i.clientX,i.clientY),o=ne(t);m&&m!==o&&m.classList.remove(W),o?(o.classList.add(W),i.dataTransfer.dropEffect="copy",m=o):(i.dataTransfer.dropEffect="none",m=null)},!1),n.addEventListener("dragover",i=>{var a,r,l;if(!((a=i.dataTransfer)!=null&&a.types.includes("Files")))return;if(i.preventDefault(),((l=(r=window._wails)==null?void 0:r.flags)==null?void 0:l.enableFileDrop)===!1){i.dataTransfer.dropEffect="none";return}let t=document.elementFromPoint(i.clientX,i.clientY),o=ne(t);m&&m!==o&&m.classList.remove(W),o?(o.classList.contains(W)||o.classList.add(W),i.dataTransfer.dropEffect="copy",m=o):(i.dataTransfer.dropEffect="none",m=null)},!1),n.addEventListener("dragleave",i=>{var t,o,a;(t=i.dataTransfer)!=null&&t.types.includes("Files")&&(i.preventDefault(),((a=(o=window._wails)==null?void 0:o.flags)==null?void 0:a.enableFileDrop)!==!1&&i.relatedTarget!==null&&(e--,(e===0||m&&!m.contains(i.relatedTarget))&&(m&&(m.classList.remove(W),m=null),e=0)))},!1),n.addEventListener("drop",i=>{var t,o,a;if((t=i.dataTransfer)!=null&&t.types.includes("Files")&&(i.preventDefault(),((a=(o=window._wails)==null?void 0:o.flags)==null?void 0:a.enableFileDrop)!==!1&&(e=0,m&&(m.classList.remove(W),m=null),Ct()))){let r=[];if(i.dataTransfer.items){for(let l of i.dataTransfer.items)if(l.kind==="file"){let d=l.getAsFile();d&&r.push(d)}}else if(i.dataTransfer.files)for(let l of i.dataTransfer.files)r.push(l);r.length>0&&Pt(i.clientX,i.clientY,r)}},!1)}typeof window<"u"&&typeof document<"u"&&Tt();var A=St;function Mt(n,e=null){We(n,e)}function xt(n,e){let i=A.Get(n),t=i[e];if(typeof t=="function")try{t.call(i)}catch(o){}}function Dn(n){let e=n.currentTarget;function i(o="Yes"){if(o!=="Yes")return;let a=e.getAttribute("wml-event")||e.getAttribute("data-wml-event"),r=e.getAttribute("wml-target-window")||e.getAttribute("data-wml-target-window")||"",l=e.getAttribute("wml-window")||e.getAttribute("data-wml-window"),d=e.getAttribute("wml-openurl")||e.getAttribute("data-wml-openurl");a!==null&&Mt(a),l!==null&&xt(r,l),d!==null&&ue(d)}let t=e.getAttribute("wml-confirm")||e.getAttribute("data-wml-confirm");t?pe({Title:"Confirm",Message:t,Detached:!1,Buttons:[{Label:"Yes"},{Label:"No",IsDefault:!0}]}).then(i):i()}var Z=Symbol("controller"),R=Symbol("triggerMap"),P=Symbol("elementCount"),De=class{constructor(){this[Z]=new AbortController}set(e,i){return{signal:this[Z].signal}}reset(){this[Z].abort(),this[Z]=new AbortController}},Ce=class{constructor(){this[R]=new WeakMap,this[P]=0}set(e,i){return this[R].has(e)||this[P]++,this[R].set(e,i),{}}reset(){if(!(this[P]<=0)){for(let e of document.body.querySelectorAll("*")){if(this[P]<=0)break;let i=this[R].get(e);i!=null&&this[P]--;for(let t of i||[])e.removeEventListener(t,Dn)}this[R]=new WeakMap,this[P]=0}}},Cn=fn()?new De:new Ce;function Et(n){let e=/\S+/g,i=n.getAttribute("wml-trigger")||n.getAttribute("data-wml-trigger")||"click",t=[],o;for(;(o=e.exec(i))!==null;)t.push(o[0]);let a=Cn.set(n,t);for(let r of t)n.addEventListener(r,Dn,a)}function Pe(){hn(Pn)}function Pn(){Cn.reset(),document.body.querySelectorAll("[wml-event], [wml-window], [wml-openurl], [data-wml-event], [data-wml-window], [data-wml-openurl]").forEach(Et)}window.wails=Te;Pe();var Ae={};p(Ae,{Capabilities:()=>Ft,Environment:()=>Lt,IsAMD64:()=>Bt,IsARM:()=>Nt,IsARM64:()=>jt,IsAndroid:()=>Mn,IsDarkMode:()=>Ot,IsDebug:()=>Ee,IsDesktop:()=>Ut,IsIOS:()=>Tn,IsLinux:()=>te,IsMac:()=>Sn,IsMobile:()=>It,IsWindows:()=>_,invoke:()=>S});var xe=u(c.System),At=0,Rt=1,kt=2,Me=(function(){var n,e,i,t,o,a;try{if((e=(n=window.chrome)==null?void 0:n.webview)!=null&&e.postMessage)return window.chrome.webview.postMessage.bind(window.chrome.webview);if((o=(t=(i=window.webkit)==null?void 0:i.messageHandlers)==null?void 0:t.external)!=null&&o.postMessage)return window.webkit.messageHandlers.external.postMessage.bind(window.webkit.messageHandlers.external);if((a=window.wails)!=null&&a.invoke)return r=>window.wails.invoke(typeof r=="string"?r:JSON.stringify(r))}catch(r){}return null})();function S(n){Me==null||Me(n)}function Ot(){return xe(At)}async function Ft(){return xe(kt)}function Lt(){return xe(Rt)}function _(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="windows"}function te(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="linux"}function Sn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="darwin"}function Tn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="ios"}function Mn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="android"}function It(){return Tn()||Mn()}function Ut(){return Sn()||_()||te()}function Bt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="amd64"}function Nt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="arm"}function jt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="arm64"}function Ee(){var n,e;return!!((e=(n=window._wails)==null?void 0:n.environment)!=null&&e.Debug)}w&&window.addEventListener("contextmenu",Zt);var zt=u(c.ContextMenu),Ht=0;function Vt(n,e,i,t){zt(Ht,{id:n,x:e,y:i,data:t})}function Zt(n){let e=ee(n),i=window.getComputedStyle(e).getPropertyValue("--custom-contextmenu").trim();if(i){n.preventDefault();let t=window.getComputedStyle(e).getPropertyValue("--custom-contextmenu-data");Vt(i,n.clientX,n.clientY,t)}else _t(n,e)}function _t(n,e){if(Ee())return;switch(window.getComputedStyle(e).getPropertyValue("--default-contextmenu").trim()){case"show":return;case"hide":n.preventDefault();return}if(e.isContentEditable)return;let i=window.getSelection(),t=i&&i.toString().length>0;if(t)for(let o=0;ok});function k(n){try{return window._wails.flags[n]}catch(e){throw new Error("Unable to retrieve flag '"+n+"': "+e,{cause:e})}}var K=!1,G=!1,Ie=!1,F=!1,L=!1,T="",xn="auto",O=0,oe=!1;w&&(oe=pn(),window._wails=window._wails||{},window._wails.setResizable=n=>{Ie=n,Ie||(F=L=!1,h())});var Ue=!1;function Kt(){var i,t;let n=(t=(i=window._wails)==null?void 0:i.environment)==null?void 0:t.OS;if(n==="ios"||n==="android")return!0;let e=navigator.userAgent||navigator.vendor||window.opera||"";return/android|iphone|ipad|ipod|iemobile|wpdesktop/i.test(e)}function ke(){if(!Ue&&!Kt()){window.addEventListener("mousedown",Le,{capture:!0}),window.addEventListener("mousemove",Le,{capture:!0}),window.addEventListener("mouseup",Le,{capture:!0});for(let n of["click","contextmenu","dblclick"])window.addEventListener(n,Gt,{capture:!0});Ue=!0}}if(w){ke(),document.addEventListener("DOMContentLoaded",ke,{once:!0});let n=0,e=window.setInterval(()=>{if(Ue){window.clearInterval(e);return}ke(),++n>100&&window.clearInterval(e)},50)}function Gt(n){(G||L)&&(n.stopImmediatePropagation(),n.stopPropagation(),n.preventDefault())}var Oe=0,Yt=1,Fe=2;function Le(n){let e,i=n.buttons;switch(n.type){case"mousedown":e=Oe,oe||(i=O|1<io,Quit:()=>oo,Show:()=>to});var Be=u(c.Application),$t=0,eo=1,no=2;function io(){return Be($t)}function to(){return Be(eo)}function oo(){return Be(no)}var Ge={};p(Ge,{ByID:()=>So,ByName:()=>Po,Call:()=>Ke,RuntimeError:()=>_e});var An=Function.prototype.toString,I=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,je,re;if(typeof I=="function"&&typeof Object.defineProperty=="function")try{je=Object.defineProperty({},"length",{get:function(){throw re}}),re={},I(function(){throw 42},null,je)}catch(n){n!==re&&(I=null)}else I=null;var ro=/^\s*class\b/,He=function(e){try{var i=An.call(e);return ro.test(i)}catch(t){return!1}},ze=function(e){try{return He(e)?!1:(An.call(e),!0)}catch(i){return!1}},ae=Object.prototype.toString,ao="[object Object]",so="[object Function]",lo="[object GeneratorFunction]",co="[object HTMLAllCollection]",mo="[object HTML document.all class]",uo="[object HTMLCollection]",wo=typeof Symbol=="function"&&!!Symbol.toStringTag,po=!(0 in[,]),Ve=function(){return!1};typeof document=="object"&&(En=document.all,ae.call(En)===ae.call(document.all)&&(Ve=function(e){if((po||!e)&&(typeof e>"u"||typeof e=="object"))try{var i=ae.call(e);return(i===co||i===mo||i===uo||i===ao)&&e("")==null}catch(t){}return!1}));var En;function fo(n){if(Ve(n))return!0;if(!n||typeof n!="function"&&typeof n!="object")return!1;try{I(n,null,je)}catch(e){if(e!==re)return!1}return!He(n)&&ze(n)}function go(n){if(Ve(n))return!0;if(!n||typeof n!="function"&&typeof n!="object")return!1;if(wo)return ze(n);if(He(n))return!1;var e=ae.call(n);return e!==so&&e!==lo&&!/^\[object HTML/.test(e)?!1:ze(n)}var v=I?fo:go;var B=class extends Error{constructor(e,i){super(e,i),this.name="CancelError"}},D=class extends Error{constructor(e,i,t){super((t!=null?t:"Unhandled rejection in cancelled promise.")+" Reason: "+ho(i),{cause:i}),this.promise=e,this.name="CancelledRejectionError"}},b=Symbol("barrier"),Ze=Symbol("cancelImpl"),Fn,Rn=(Fn=Symbol.species)!=null?Fn:Symbol("speciesPolyfill"),Y=class n extends Promise{constructor(e,i){let t,o;if(super((d,f)=>{t=d,o=f}),this.constructor[Rn]!==Promise)throw new TypeError("CancellablePromise does not support transparent subclassing. Please refrain from overriding the [Symbol.species] static property.");let a={promise:this,resolve:t,reject:o,get oncancelled(){return i!=null?i:null},set oncancelled(d){i=d!=null?d:void 0}},r={get root(){return r},resolving:!1,settled:!1};Object.defineProperties(this,{[b]:{configurable:!1,enumerable:!1,writable:!0,value:null},[Ze]:{configurable:!1,enumerable:!1,writable:!1,value:Ln(a,r)}});let l=Un(a,r);try{e(In(a,r),l)}catch(d){r.resolving||l(d)}}cancel(e){return new n(i=>{Promise.all([this[Ze](new B("Promise cancelled.",{cause:e})),Wo(this)]).then(()=>i(),()=>i())})}cancelOn(e){return e.aborted?this.cancel(e.reason):e.addEventListener("abort",()=>{this.cancel(e.reason)},{capture:!0}),this}then(e,i,t){if(!(this instanceof n))throw new TypeError("CancellablePromise.prototype.then called on an invalid object.");if(v(e)||(e=kn),v(i)||(i=On),e===kn&&i==On)return new n(a=>a(this));let o={};return this[b]=o,new n((a,r)=>{super.then(l=>{var d;this[b]===o&&(this[b]=null),(d=o.resolve)==null||d.call(o);try{a(e(l))}catch(f){r(f)}},l=>{var d;this[b]===o&&(this[b]=null),(d=o.resolve)==null||d.call(o);try{a(i(l))}catch(f){r(f)}})},async a=>{try{return t==null?void 0:t(a)}finally{await this.cancel(a)}})}catch(e,i){return this.then(void 0,e,i)}finally(e,i){if(!(this instanceof n))throw new TypeError("CancellablePromise.prototype.finally called on an invalid object.");return v(e)?this.then(t=>n.resolve(e()).then(()=>t),t=>n.resolve(e()).then(()=>{throw t}),i):this.then(e,e,i)}static get[(b,Ze,Rn)](){return Promise}static all(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,a)=>{Promise.all(i).then(o,a)},o=>se(t,i,o));return t}static allSettled(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,a)=>{Promise.allSettled(i).then(o,a)},o=>se(t,i,o));return t}static any(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,a)=>{Promise.any(i).then(o,a)},o=>se(t,i,o));return t}static race(e){let i=Array.from(e),t=new n((o,a)=>{Promise.race(i).then(o,a)},o=>se(t,i,o));return t}static cancel(e){let i=new n(()=>{});return i.cancel(e),i}static timeout(e,i){let t=new n(()=>{});return AbortSignal&&typeof AbortSignal=="function"&&AbortSignal.timeout&&typeof AbortSignal.timeout=="function"?AbortSignal.timeout(e).addEventListener("abort",()=>{t.cancel(i)}):setTimeout(()=>{t.cancel(i)},e),t}static sleep(e,i){return new n(t=>{setTimeout(()=>t(i),e)})}static reject(e){return new n((i,t)=>t(e))}static resolve(e){return e instanceof n?e:new n(i=>i(e))}static withResolvers(){let e={oncancelled:null};return e.promise=new n((i,t)=>{e.resolve=i,e.reject=t},i=>{var t;(t=e.oncancelled)==null||t.call(e,i)}),e}};function Ln(n,e){let i;return t=>{if(e.settled||(e.settled=!0,e.reason=t,n.reject(t),Promise.prototype.then.call(n.promise,void 0,o=>{if(o!==t)throw o})),!(!e.reason||!n.oncancelled))return i=new Promise(o=>{try{o(n.oncancelled(e.reason.cause))}catch(a){Promise.reject(new D(n.promise,a,"Unhandled exception in oncancelled callback."))}}).catch(o=>{Promise.reject(new D(n.promise,o,"Unhandled rejection in oncancelled callback."))}),n.oncancelled=null,i}}function In(n,e){return i=>{if(!e.resolving){if(e.resolving=!0,i===n.promise){if(e.settled)return;e.settled=!0,n.reject(new TypeError("A promise cannot be resolved with itself."));return}if(i!=null&&(typeof i=="object"||typeof i=="function")){let t;try{t=i.then}catch(o){e.settled=!0,n.reject(o);return}if(v(t)){try{let r=i.cancel;if(v(r)){let l=d=>{Reflect.apply(r,i,[d])};e.reason?Ln(j(N({},n),{oncancelled:l}),e)(e.reason):n.oncancelled=l}}catch(r){}let o={root:e.root,resolving:!1,get settled(){return this.root.settled},set settled(r){this.root.settled=r},get reason(){return this.root.reason}},a=Un(n,o);try{Reflect.apply(t,i,[In(n,o),a])}catch(r){a(r)}return}}e.settled||(e.settled=!0,n.resolve(i))}}}function Un(n,e){return i=>{if(!e.resolving)if(e.resolving=!0,e.settled){try{if(i instanceof B&&e.reason instanceof B&&Object.is(i.cause,e.reason.cause))return}catch(t){}Promise.reject(new D(n.promise,i))}else e.settled=!0,n.reject(i)}}function se(n,e,i){let t=[];for(let o of e){let a;try{if(!v(o.then)||(a=o.cancel,!v(a)))continue}catch(l){continue}let r;try{r=Reflect.apply(a,o,[i])}catch(l){Promise.reject(new D(n,l,"Unhandled exception in cancel method."));continue}r&&t.push((r instanceof Promise?r:Promise.resolve(r)).catch(l=>{Promise.reject(new D(n,l,"Unhandled rejection in cancel method."))}))}return Promise.all(t)}function kn(n){return n}function On(n){throw n}function ho(n){try{if(n instanceof Error||typeof n!="object"||n.toString!==Object.prototype.toString)return""+n}catch(e){}try{return JSON.stringify(n)}catch(e){}try{return Object.prototype.toString.call(n)}catch(e){}return""}function Wo(n){var i;let e=(i=n[b])!=null?i:{};return"promise"in e||Object.assign(e,U()),n[b]==null&&(e.resolve(),n[b]=e),e.promise}var U=Promise.withResolvers;U&&typeof U=="function"?U=U.bind(Promise):U=function(){let n,e;return{promise:new Promise((t,o)=>{n=t,e=o}),resolve:n,reject:e}};w&&(window._wails=window._wails||{});var bo=u(c.Call),yo=u(c.CancelCall),X=new Map,vo=0,Do=0,_e=class extends Error{constructor(e,i){super(e,i),this.name="RuntimeError"}};function Co(){let n;do n=M();while(X.has(n));return n}function Ke(n){let e=Co(),i=Y.withResolvers();X.set(e,{resolve:i.resolve,reject:i.reject});let t=bo(vo,Object.assign({"call-id":e},n)),o=!0;t.then(r=>{o=!1,X.delete(e),i.resolve(r)},r=>{o=!1,X.delete(e),i.reject(r)});let a=()=>(X.delete(e),yo(Do,{"call-id":e}).catch(r=>{}));return i.oncancelled=()=>o?a():t.then(a),i.promise}function Po(n,...e){return Ke({methodName:n,args:e})}function So(n,...e){return Ke({methodID:n,args:e})}var Ye={};p(Ye,{SetText:()=>xo,Text:()=>Eo});var Bn=u(c.Clipboard),To=0,Mo=1;function xo(n){return Bn(To,{text:n})}function Eo(){return Bn(Mo)}var Xe={};p(Xe,{GetAll:()=>Lo,GetByID:()=>Bo,GetByIndex:()=>No,GetCurrent:()=>Uo,GetPrimary:()=>Io});var J=u(c.Screens),Ao=0,Ro=1,ko=2,Oo=3,Fo=4;function Lo(){return J(Ao)}function Io(){return J(Ro)}function Uo(){return J(ko)}function Bo(n){return J(Oo,{id:n})}function No(n){return J(Fo,{index:n})}var qe={};p(qe,{Device:()=>Qe,Haptics:()=>Je});var Nn=u(c.IOS),jo=0,zo=1,Je;(e=>{function n(i="medium"){return Nn(jo,{style:i})}e.Impact=n})(Je||(Je={}));var Qe;(e=>{function n(){return Nn(zo)}e.Info=n})(Qe||(Qe={}));var on={};p(on,{Device:()=>en,Haptics:()=>$e,Toast:()=>nn});var tn=u(c.Android),Ho=0,Vo=1,Zo=2,$e;(e=>{function n(i=100){return tn(Ho,{duration:i})}e.Vibrate=n})($e||($e={}));var en;(e=>{function n(){return tn(Vo)}e.Info=n})(en||(en={}));var nn;(e=>{function n(i){return tn(Zo,{message:i})}e.Show=n})(nn||(nn={}));var rn={};p(rn,{Events:()=>_o});var _o=Object.freeze({CheckStarted:"wails:updater:check-started",UpdateAvailable:"wails:updater:update-available",NoUpdate:"wails:updater:no-update",DownloadStarted:"wails:updater:download-started",DownloadProgress:"wails:updater:download-progress",DownloadComplete:"wails:updater:download-complete",Verifying:"wails:updater:verifying",Installing:"wails:updater:installing",UpdateReady:"wails:updater:update-ready",Error:"wails:updater:error",Meta:"wails:updater:meta",User:Object.freeze({Install:"wails:updater:user:install",Restart:"wails:updater:user:restart",Skip:"wails:updater:user:skip",Remind:"wails:updater:user:remind",Cancel:"wails:updater:user:cancel"}),Window:Object.freeze({Ready:"wails:updater:window:ready"})});w&&(window._wails=window._wails||{});w&&(window._wails.invoke=S,window._wails.clientId=x);w&&(window._wails.handlePlatformFileDrop=A.HandlePlatformFileDrop.bind(A));w&&(window._wails.handleDragEnter=bn,window._wails.handleDragLeave=yn,window._wails.handleDragOver=vn);w&&S("wails:runtime:ready");function jn(n){return fetch(n,{method:"HEAD"}).then(e=>{if(e.ok&&(e.headers.get("content-type")||"").toLowerCase().includes("javascript")){let t=document.createElement("script");t.src=n,document.head.appendChild(t)}}).catch(()=>{})}w&&jn("/wails/custom.js");export{on as Android,Ne as Application,we as Browser,Ge as Call,B as CancelError,Y as CancellablePromise,D as CancelledRejectionError,Ye as Clipboard,ge as Create,fe as Dialogs,be as Events,Re as Flags,qe as IOS,Xe as Screens,Ae as System,rn as Updater,Se as WML,A as Window,x as clientId,un as getTransport,jn as loadOptionalScript,c as objectNames,mn as setTransport}; diff --git a/v3/internal/runtime/Taskfile.yaml b/v3/internal/runtime/Taskfile.yaml index 4a2a2ccf3af..c871d03fa12 100644 --- a/v3/internal/runtime/Taskfile.yaml +++ b/v3/internal/runtime/Taskfile.yaml @@ -2,9 +2,15 @@ version: "3" +vars: + ESBUILD: desktop/@wailsio/runtime/node_modules/.bin/esbuild + tasks: install-deps: internal: true + # once: build:debug and build:production dep on this in parallel; two + # concurrent npm installs in the same directory corrupt node_modules. + run: once dir: desktop/@wailsio/runtime sources: - package.json @@ -27,13 +33,17 @@ tasks: build:debug: internal: true + deps: + - install-deps cmds: - - npx esbuild@latest desktop/@wailsio/runtime/src/index.ts --inject:desktop/compiled/main.js --format=esm --target=safari11 --bundle --ignore-annotations --tree-shaking=true --sourcemap=inline --outfile=../assetserver/bundledassets/runtime.debug.js --define:DEBUG=true + - "{{.ESBUILD}} desktop/@wailsio/runtime/src/index.ts --inject:desktop/compiled/main.js --format=esm --target=safari11 --bundle --ignore-annotations --tree-shaking=true --sourcemap=inline --outfile=../assetserver/bundledassets/runtime.debug.js --define:DEBUG=true" build:production: internal: true + deps: + - install-deps cmds: - - npx esbuild@latest desktop/@wailsio/runtime/src/index.ts --inject:desktop/compiled/main.js --format=esm --target=safari11 --bundle --ignore-annotations --tree-shaking=true --minify --outfile=../assetserver/bundledassets/runtime.js --define:DEBUG=false --drop:console + - "{{.ESBUILD}} desktop/@wailsio/runtime/src/index.ts --inject:desktop/compiled/main.js --format=esm --target=safari11 --bundle --ignore-annotations --tree-shaking=true --minify --outfile=../assetserver/bundledassets/runtime.js --define:DEBUG=false --drop:console" build:docs: internal: true @@ -51,6 +61,12 @@ tasks: cmds: - npm run build:docs:md + build:assets: + desc: Rebuild only the embedded runtime bundles (bundledassets); CI verifies PR bundles against this exact output. + deps: + - build:debug + - build:production + build:runtime: internal: true deps: diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/package-lock.json b/v3/internal/runtime/desktop/@wailsio/runtime/package-lock.json index c12ca8e5e2d..88cf4d0e597 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/package-lock.json +++ b/v3/internal/runtime/desktop/@wailsio/runtime/package-lock.json @@ -9,6 +9,7 @@ "version": "3.0.0-alpha.95", "license": "MIT", "devDependencies": { + "esbuild": "0.28.1", "happy-dom": "^20.9.0", "promises-aplus-tests": "2.1.2", "rimraf": "^6.0.1", @@ -55,6 +56,448 @@ "tslib": "^2.4.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", + "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@gerrit0/mini-shiki": { "version": "3.23.0", "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.23.0.tgz", @@ -1032,6 +1475,48 @@ "dev": true, "license": "MIT" }, + "node_modules/esbuild": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", + "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.1", + "@esbuild/android-arm": "0.28.1", + "@esbuild/android-arm64": "0.28.1", + "@esbuild/android-x64": "0.28.1", + "@esbuild/darwin-arm64": "0.28.1", + "@esbuild/darwin-x64": "0.28.1", + "@esbuild/freebsd-arm64": "0.28.1", + "@esbuild/freebsd-x64": "0.28.1", + "@esbuild/linux-arm": "0.28.1", + "@esbuild/linux-arm64": "0.28.1", + "@esbuild/linux-ia32": "0.28.1", + "@esbuild/linux-loong64": "0.28.1", + "@esbuild/linux-mips64el": "0.28.1", + "@esbuild/linux-ppc64": "0.28.1", + "@esbuild/linux-riscv64": "0.28.1", + "@esbuild/linux-s390x": "0.28.1", + "@esbuild/linux-x64": "0.28.1", + "@esbuild/netbsd-arm64": "0.28.1", + "@esbuild/netbsd-x64": "0.28.1", + "@esbuild/openbsd-arm64": "0.28.1", + "@esbuild/openbsd-x64": "0.28.1", + "@esbuild/openharmony-arm64": "0.28.1", + "@esbuild/sunos-x64": "0.28.1", + "@esbuild/win32-arm64": "0.28.1", + "@esbuild/win32-ia32": "0.28.1", + "@esbuild/win32-x64": "0.28.1" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/package.json b/v3/internal/runtime/desktop/@wailsio/runtime/package.json index 50ca01b8fe5..e11ed55c03a 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/package.json +++ b/v3/internal/runtime/desktop/@wailsio/runtime/package.json @@ -48,6 +48,7 @@ "prepack": "npm run build" }, "devDependencies": { + "esbuild": "0.28.1", "happy-dom": "^20.9.0", "promises-aplus-tests": "2.1.2", "rimraf": "^6.0.1", From fd231e9af7cbad64ad8a69c36787f7d30eae0274 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 6 Jul 2026 05:56:57 +0000 Subject: [PATCH 05/29] [skip ci] Publish @wailsio/runtime v3.0.0-alpha.96 --- .../@wailsio/runtime/docs/assets/hierarchy.js | 2 +- .../docs/classes/_internal_.Window.html | 4 +- .../@wailsio/runtime/docs/hierarchy.html | 2 +- .../runtime/docs/variables/Events.Types.html | 2 +- .../@wailsio/runtime/package-lock.json | 4 +- .../desktop/@wailsio/runtime/package.json | 2 +- v3/pkg/events/events.go | 1049 ++++++++--------- 7 files changed, 532 insertions(+), 533 deletions(-) diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/docs/assets/hierarchy.js b/v3/internal/runtime/desktop/@wailsio/runtime/docs/assets/hierarchy.js index 846a32cf3aa..5240fa47cd8 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/docs/assets/hierarchy.js +++ b/v3/internal/runtime/desktop/@wailsio/runtime/docs/assets/hierarchy.js @@ -1 +1 @@ -window.hierarchyData = "eJylj7EKg0AQRP9l6otB0ajXpk2RXkQuuuLhesLdpRL/PWiIpDAhkGZZdpidNxPsOHoHWcSZyJOoFLDUMtVej8ZBToizZRo1ECTOytTErG5MVzsO2tFF9wSBXpsGMkpOAnfLkNDGk21VTe64bwo6PzAEalbOQcK75rB8OWzORew0N5YMZJGG5SyQhl9pNpIwyl4ka8AuxkeE52EWyJPoLe/3ytW6G8VV8GfleX4AEQ+NYw==" \ No newline at end of file +window.hierarchyData = "eJylj80KwjAQhN9lzrFSsT/m6tWDdyklpisGtwkk8VTy7tKKxUMVwcuy7DA73wzwzsUAedrWYleUjYCnC5OOxtkAOWBbj9OqniCxV1YTszozHb3rTaCDuREEbsZ2kJuiFLh7hoSxkfxFaQrrZVN2jT1DQLMKARIxdKvxy2p2juLVcOfJQp6qvEkCVf6VZibJN/WLZApYxPiI8DwkgV1RvuX9Xrmddqu4zf6snNIDGWeNaw==" \ No newline at end of file diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/docs/classes/_internal_.Window.html b/v3/internal/runtime/desktop/@wailsio/runtime/docs/classes/_internal_.Window.html index 88b140ec613..fd2b1aa40ba 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/docs/classes/_internal_.Window.html +++ b/v3/internal/runtime/desktop/@wailsio/runtime/docs/classes/_internal_.Window.html @@ -69,8 +69,8 @@
  • Handles file drops originating from platform-specific code (e.g., macOS/Linux native drag-and-drop). Gathers information about the drop target element and sends it back to the Go backend.

    Parameters

    • filenames: string[]

      An array of file paths (strings) that were dropped.

      -
    • x: number

      The x-coordinate of the drop event (CSS pixels).

      -
    • y: number

      The y-coordinate of the drop event (CSS pixels).

      +
    • x: number

      The x-coordinate of the drop event, in logical (CSS) pixels relative to the webview.

      +
    • y: number

      The y-coordinate of the drop event, in logical (CSS) pixels relative to the webview.

    Returns void

  • Hides the window.

    diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/docs/hierarchy.html b/v3/internal/runtime/desktop/@wailsio/runtime/docs/hierarchy.html index 280f8921da6..dde2eb5948a 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/docs/hierarchy.html +++ b/v3/internal/runtime/desktop/@wailsio/runtime/docs/hierarchy.html @@ -1 +1 @@ -@wailsio/runtime
    @wailsio/runtime
      Preparing search index...
      +@wailsio/runtime
      @wailsio/runtime
        Preparing search index...
        diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/docs/variables/Events.Types.html b/v3/internal/runtime/desktop/@wailsio/runtime/docs/variables/Events.Types.html index 6c808e97f30..61d84b5b349 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/docs/variables/Events.Types.html +++ b/v3/internal/runtime/desktop/@wailsio/runtime/docs/variables/Events.Types.html @@ -1 +1 @@ -Types | @wailsio/runtime
        @wailsio/runtime
          Preparing search index...

          Variable TypesConst

          Types: Readonly<
              {
                  Android: Readonly<
                      {
                          ActivityCreated: "android:ActivityCreated";
                          ActivityDestroyed: "android:ActivityDestroyed";
                          ActivityPaused: "android:ActivityPaused";
                          ActivityResumed: "android:ActivityResumed";
                          ActivityStarted: "android:ActivityStarted";
                          ActivityStopped: "android:ActivityStopped";
                          ApplicationLowMemory: "android:ApplicationLowMemory";
                          BatteryChanged: "android:BatteryChanged";
                          NetworkChanged: "android:NetworkChanged";
                          ScreenLocked: "android:ScreenLocked";
                          ScreenUnlocked: "android:ScreenUnlocked";
                          ThemeChanged: "android:ThemeChanged";
                          WebViewPageFinished: "android:WebViewPageFinished";
                          WebViewPageStarted: "android:WebViewPageStarted";
                      },
                  >;
                  Common: Readonly<
                      {
                          ApplicationLaunchedWithUrl: "common:ApplicationLaunchedWithUrl";
                          ApplicationOpenedWithFile: "common:ApplicationOpenedWithFile";
                          ApplicationStarted: "common:ApplicationStarted";
                          BatteryChanged: "common:BatteryChanged";
                          LowMemory: "common:LowMemory";
                          NetworkChanged: "common:NetworkChanged";
                          ScreenLocked: "common:ScreenLocked";
                          ScreenUnlocked: "common:ScreenUnlocked";
                          SystemDidWake: "common:SystemDidWake";
                          SystemWillSleep: "common:SystemWillSleep";
                          ThemeChanged: "common:ThemeChanged";
                          WindowClosing: "common:WindowClosing";
                          WindowDidMove: "common:WindowDidMove";
                          WindowDidResize: "common:WindowDidResize";
                          WindowDPIChanged: "common:WindowDPIChanged";
                          WindowFilesDropped: "common:WindowFilesDropped";
                          WindowFocus: "common:WindowFocus";
                          WindowFullscreen: "common:WindowFullscreen";
                          WindowHide: "common:WindowHide";
                          WindowLostFocus: "common:WindowLostFocus";
                          WindowMaximise: "common:WindowMaximise";
                          WindowMinimise: "common:WindowMinimise";
                          WindowRestore: "common:WindowRestore";
                          WindowRuntimeReady: "common:WindowRuntimeReady";
                          WindowShow: "common:WindowShow";
                          WindowToggleFrameless: "common:WindowToggleFrameless";
                          WindowUnFullscreen: "common:WindowUnFullscreen";
                          WindowUnMaximise: "common:WindowUnMaximise";
                          WindowUnMinimise: "common:WindowUnMinimise";
                          WindowZoom: "common:WindowZoom";
                          WindowZoomIn: "common:WindowZoomIn";
                          WindowZoomOut: "common:WindowZoomOut";
                          WindowZoomReset: "common:WindowZoomReset";
                      },
                  >;
                  iOS: Readonly<
                      {
                          ApplicationDidBecomeActive: "ios:ApplicationDidBecomeActive";
                          ApplicationDidEnterBackground: "ios:ApplicationDidEnterBackground";
                          ApplicationDidFinishLaunching: "ios:ApplicationDidFinishLaunching";
                          ApplicationDidReceiveMemoryWarning: "ios:ApplicationDidReceiveMemoryWarning";
                          ApplicationWillEnterForeground: "ios:ApplicationWillEnterForeground";
                          ApplicationWillResignActive: "ios:ApplicationWillResignActive";
                          ApplicationWillTerminate: "ios:ApplicationWillTerminate";
                          BatteryChanged: "ios:BatteryChanged";
                          NetworkChanged: "ios:NetworkChanged";
                          ScreenLocked: "ios:ScreenLocked";
                          ScreenUnlocked: "ios:ScreenUnlocked";
                          ThemeChanged: "ios:ThemeChanged";
                          WebViewDecidePolicyForNavigationAction: "ios:WebViewDecidePolicyForNavigationAction";
                          WebViewDidFailNavigation: "ios:WebViewDidFailNavigation";
                          WebViewDidFinishNavigation: "ios:WebViewDidFinishNavigation";
                          WebViewDidStartNavigation: "ios:WebViewDidStartNavigation";
                          WindowDidAppear: "ios:WindowDidAppear";
                          WindowDidDisappear: "ios:WindowDidDisappear";
                          WindowDidLoad: "ios:WindowDidLoad";
                          WindowOrientationChanged: "ios:WindowOrientationChanged";
                          WindowSafeAreaInsetsChanged: "ios:WindowSafeAreaInsetsChanged";
                          WindowTouchBegan: "ios:WindowTouchBegan";
                          WindowTouchCancelled: "ios:WindowTouchCancelled";
                          WindowTouchEnded: "ios:WindowTouchEnded";
                          WindowTouchMoved: "ios:WindowTouchMoved";
                          WindowWillAppear: "ios:WindowWillAppear";
                          WindowWillDisappear: "ios:WindowWillDisappear";
                      },
                  >;
                  Linux: Readonly<
                      {
                          ApplicationStartup: "linux:ApplicationStartup";
                          SystemDidWake: "linux:SystemDidWake";
                          SystemThemeChanged: "linux:SystemThemeChanged";
                          SystemWillSleep: "linux:SystemWillSleep";
                          WindowDeleteEvent: "linux:WindowDeleteEvent";
                          WindowDidMove: "linux:WindowDidMove";
                          WindowDidResize: "linux:WindowDidResize";
                          WindowFocusIn: "linux:WindowFocusIn";
                          WindowFocusOut: "linux:WindowFocusOut";
                          WindowLoadCommitted: "linux:WindowLoadCommitted";
                          WindowLoadFinished: "linux:WindowLoadFinished";
                          WindowLoadRedirected: "linux:WindowLoadRedirected";
                          WindowLoadStarted: "linux:WindowLoadStarted";
                      },
                  >;
                  Mac: Readonly<
                      {
                          ApplicationDidBecomeActive: "mac:ApplicationDidBecomeActive";
                          ApplicationDidChangeBackingProperties: "mac:ApplicationDidChangeBackingProperties";
                          ApplicationDidChangeEffectiveAppearance: "mac:ApplicationDidChangeEffectiveAppearance";
                          ApplicationDidChangeIcon: "mac:ApplicationDidChangeIcon";
                          ApplicationDidChangeOcclusionState: "mac:ApplicationDidChangeOcclusionState";
                          ApplicationDidChangeScreenParameters: "mac:ApplicationDidChangeScreenParameters";
                          ApplicationDidChangeStatusBarFrame: "mac:ApplicationDidChangeStatusBarFrame";
                          ApplicationDidChangeStatusBarOrientation: "mac:ApplicationDidChangeStatusBarOrientation";
                          ApplicationDidChangeTheme: "mac:ApplicationDidChangeTheme";
                          ApplicationDidFinishLaunching: "mac:ApplicationDidFinishLaunching";
                          ApplicationDidHide: "mac:ApplicationDidHide";
                          ApplicationDidResignActive: "mac:ApplicationDidResignActive";
                          ApplicationDidUnhide: "mac:ApplicationDidUnhide";
                          ApplicationDidUpdate: "mac:ApplicationDidUpdate";
                          ApplicationDidWake: "mac:ApplicationDidWake";
                          ApplicationScreensDidSleep: "mac:ApplicationScreensDidSleep";
                          ApplicationScreensDidWake: "mac:ApplicationScreensDidWake";
                          ApplicationShouldHandleReopen: "mac:ApplicationShouldHandleReopen";
                          ApplicationWillBecomeActive: "mac:ApplicationWillBecomeActive";
                          ApplicationWillFinishLaunching: "mac:ApplicationWillFinishLaunching";
                          ApplicationWillHide: "mac:ApplicationWillHide";
                          ApplicationWillResignActive: "mac:ApplicationWillResignActive";
                          ApplicationWillSleep: "mac:ApplicationWillSleep";
                          ApplicationWillTerminate: "mac:ApplicationWillTerminate";
                          ApplicationWillUnhide: "mac:ApplicationWillUnhide";
                          ApplicationWillUpdate: "mac:ApplicationWillUpdate";
                          MenuDidAddItem: "mac:MenuDidAddItem";
                          MenuDidBeginTracking: "mac:MenuDidBeginTracking";
                          MenuDidClose: "mac:MenuDidClose";
                          MenuDidDisplayItem: "mac:MenuDidDisplayItem";
                          MenuDidEndTracking: "mac:MenuDidEndTracking";
                          MenuDidHighlightItem: "mac:MenuDidHighlightItem";
                          MenuDidOpen: "mac:MenuDidOpen";
                          MenuDidPopUp: "mac:MenuDidPopUp";
                          MenuDidRemoveItem: "mac:MenuDidRemoveItem";
                          MenuDidSendAction: "mac:MenuDidSendAction";
                          MenuDidSendActionToItem: "mac:MenuDidSendActionToItem";
                          MenuDidUpdate: "mac:MenuDidUpdate";
                          MenuWillAddItem: "mac:MenuWillAddItem";
                          MenuWillBeginTracking: "mac:MenuWillBeginTracking";
                          MenuWillDisplayItem: "mac:MenuWillDisplayItem";
                          MenuWillEndTracking: "mac:MenuWillEndTracking";
                          MenuWillHighlightItem: "mac:MenuWillHighlightItem";
                          MenuWillOpen: "mac:MenuWillOpen";
                          MenuWillPopUp: "mac:MenuWillPopUp";
                          MenuWillRemoveItem: "mac:MenuWillRemoveItem";
                          MenuWillSendAction: "mac:MenuWillSendAction";
                          MenuWillSendActionToItem: "mac:MenuWillSendActionToItem";
                          MenuWillUpdate: "mac:MenuWillUpdate";
                          WebViewDidCommitNavigation: "mac:WebViewDidCommitNavigation";
                          WebViewDidFinishNavigation: "mac:WebViewDidFinishNavigation";
                          WebViewDidReceiveServerRedirectForProvisionalNavigation: "mac:WebViewDidReceiveServerRedirectForProvisionalNavigation";
                          WebViewDidStartProvisionalNavigation: "mac:WebViewDidStartProvisionalNavigation";
                          WindowDidBecomeKey: "mac:WindowDidBecomeKey";
                          WindowDidBecomeMain: "mac:WindowDidBecomeMain";
                          WindowDidBeginSheet: "mac:WindowDidBeginSheet";
                          WindowDidChangeAlpha: "mac:WindowDidChangeAlpha";
                          WindowDidChangeBackingLocation: "mac:WindowDidChangeBackingLocation";
                          WindowDidChangeBackingProperties: "mac:WindowDidChangeBackingProperties";
                          WindowDidChangeCollectionBehavior: "mac:WindowDidChangeCollectionBehavior";
                          WindowDidChangeEffectiveAppearance: "mac:WindowDidChangeEffectiveAppearance";
                          WindowDidChangeOcclusionState: "mac:WindowDidChangeOcclusionState";
                          WindowDidChangeOrderingMode: "mac:WindowDidChangeOrderingMode";
                          WindowDidChangeScreen: "mac:WindowDidChangeScreen";
                          WindowDidChangeScreenParameters: "mac:WindowDidChangeScreenParameters";
                          WindowDidChangeScreenProfile: "mac:WindowDidChangeScreenProfile";
                          WindowDidChangeScreenSpace: "mac:WindowDidChangeScreenSpace";
                          WindowDidChangeScreenSpaceProperties: "mac:WindowDidChangeScreenSpaceProperties";
                          WindowDidChangeSharingType: "mac:WindowDidChangeSharingType";
                          WindowDidChangeSpace: "mac:WindowDidChangeSpace";
                          WindowDidChangeSpaceOrderingMode: "mac:WindowDidChangeSpaceOrderingMode";
                          WindowDidChangeTitle: "mac:WindowDidChangeTitle";
                          WindowDidChangeToolbar: "mac:WindowDidChangeToolbar";
                          WindowDidDeminiaturize: "mac:WindowDidDeminiaturize";
                          WindowDidEndSheet: "mac:WindowDidEndSheet";
                          WindowDidEnterFullScreen: "mac:WindowDidEnterFullScreen";
                          WindowDidEnterVersionBrowser: "mac:WindowDidEnterVersionBrowser";
                          WindowDidExitFullScreen: "mac:WindowDidExitFullScreen";
                          WindowDidExitVersionBrowser: "mac:WindowDidExitVersionBrowser";
                          WindowDidExpose: "mac:WindowDidExpose";
                          WindowDidFocus: "mac:WindowDidFocus";
                          WindowDidMiniaturize: "mac:WindowDidMiniaturize";
                          WindowDidMove: "mac:WindowDidMove";
                          WindowDidOrderOffScreen: "mac:WindowDidOrderOffScreen";
                          WindowDidOrderOnScreen: "mac:WindowDidOrderOnScreen";
                          WindowDidResignKey: "mac:WindowDidResignKey";
                          WindowDidResignMain: "mac:WindowDidResignMain";
                          WindowDidResize: "mac:WindowDidResize";
                          WindowDidUpdate: "mac:WindowDidUpdate";
                          WindowDidUpdateAlpha: "mac:WindowDidUpdateAlpha";
                          WindowDidUpdateCollectionBehavior: "mac:WindowDidUpdateCollectionBehavior";
                          WindowDidUpdateCollectionProperties: "mac:WindowDidUpdateCollectionProperties";
                          WindowDidUpdateShadow: "mac:WindowDidUpdateShadow";
                          WindowDidUpdateTitle: "mac:WindowDidUpdateTitle";
                          WindowDidUpdateToolbar: "mac:WindowDidUpdateToolbar";
                          WindowDidZoom: "mac:WindowDidZoom";
                          WindowFileDraggingEntered: "mac:WindowFileDraggingEntered";
                          WindowFileDraggingExited: "mac:WindowFileDraggingExited";
                          WindowFileDraggingPerformed: "mac:WindowFileDraggingPerformed";
                          WindowHide: "mac:WindowHide";
                          WindowMaximise: "mac:WindowMaximise";
                          WindowMinimise: "mac:WindowMinimise";
                          WindowShouldClose: "mac:WindowShouldClose";
                          WindowShow: "mac:WindowShow";
                          WindowUnMaximise: "mac:WindowUnMaximise";
                          WindowUnMinimise: "mac:WindowUnMinimise";
                          WindowWillBecomeKey: "mac:WindowWillBecomeKey";
                          WindowWillBecomeMain: "mac:WindowWillBecomeMain";
                          WindowWillBeginSheet: "mac:WindowWillBeginSheet";
                          WindowWillChangeOrderingMode: "mac:WindowWillChangeOrderingMode";
                          WindowWillClose: "mac:WindowWillClose";
                          WindowWillDeminiaturize: "mac:WindowWillDeminiaturize";
                          WindowWillEnterFullScreen: "mac:WindowWillEnterFullScreen";
                          WindowWillEnterVersionBrowser: "mac:WindowWillEnterVersionBrowser";
                          WindowWillExitFullScreen: "mac:WindowWillExitFullScreen";
                          WindowWillExitVersionBrowser: "mac:WindowWillExitVersionBrowser";
                          WindowWillFocus: "mac:WindowWillFocus";
                          WindowWillMiniaturize: "mac:WindowWillMiniaturize";
                          WindowWillMove: "mac:WindowWillMove";
                          WindowWillOrderOffScreen: "mac:WindowWillOrderOffScreen";
                          WindowWillOrderOnScreen: "mac:WindowWillOrderOnScreen";
                          WindowWillResignMain: "mac:WindowWillResignMain";
                          WindowWillResize: "mac:WindowWillResize";
                          WindowWillUnfocus: "mac:WindowWillUnfocus";
                          WindowWillUpdate: "mac:WindowWillUpdate";
                          WindowWillUpdateAlpha: "mac:WindowWillUpdateAlpha";
                          WindowWillUpdateCollectionBehavior: "mac:WindowWillUpdateCollectionBehavior";
                          WindowWillUpdateCollectionProperties: "mac:WindowWillUpdateCollectionProperties";
                          WindowWillUpdateShadow: "mac:WindowWillUpdateShadow";
                          WindowWillUpdateTitle: "mac:WindowWillUpdateTitle";
                          WindowWillUpdateToolbar: "mac:WindowWillUpdateToolbar";
                          WindowWillUpdateVisibility: "mac:WindowWillUpdateVisibility";
                          WindowWillUseStandardFrame: "mac:WindowWillUseStandardFrame";
                          WindowZoomIn: "mac:WindowZoomIn";
                          WindowZoomOut: "mac:WindowZoomOut";
                          WindowZoomReset: "mac:WindowZoomReset";
                      },
                  >;
                  Windows: Readonly<
                      {
                          APMPowerSettingChange: "windows:APMPowerSettingChange";
                          APMPowerStatusChange: "windows:APMPowerStatusChange";
                          APMResumeAutomatic: "windows:APMResumeAutomatic";
                          APMResumeSuspend: "windows:APMResumeSuspend";
                          APMSuspend: "windows:APMSuspend";
                          ApplicationStarted: "windows:ApplicationStarted";
                          SystemThemeChanged: "windows:SystemThemeChanged";
                          WebViewNavigationCompleted: "windows:WebViewNavigationCompleted";
                          WindowActive: "windows:WindowActive";
                          WindowBackgroundErase: "windows:WindowBackgroundErase";
                          WindowClickActive: "windows:WindowClickActive";
                          WindowClosing: "windows:WindowClosing";
                          WindowDidMove: "windows:WindowDidMove";
                          WindowDidResize: "windows:WindowDidResize";
                          WindowDPIChanged: "windows:WindowDPIChanged";
                          WindowDragDrop: "windows:WindowDragDrop";
                          WindowDragEnter: "windows:WindowDragEnter";
                          WindowDragLeave: "windows:WindowDragLeave";
                          WindowDragOver: "windows:WindowDragOver";
                          WindowEndMove: "windows:WindowEndMove";
                          WindowEndResize: "windows:WindowEndResize";
                          WindowFullscreen: "windows:WindowFullscreen";
                          WindowHide: "windows:WindowHide";
                          WindowInactive: "windows:WindowInactive";
                          WindowKeyDown: "windows:WindowKeyDown";
                          WindowKeyUp: "windows:WindowKeyUp";
                          WindowKillFocus: "windows:WindowKillFocus";
                          WindowMaximise: "windows:WindowMaximise";
                          WindowMinimise: "windows:WindowMinimise";
                          WindowNonClientHit: "windows:WindowNonClientHit";
                          WindowNonClientMouseDown: "windows:WindowNonClientMouseDown";
                          WindowNonClientMouseLeave: "windows:WindowNonClientMouseLeave";
                          WindowNonClientMouseMove: "windows:WindowNonClientMouseMove";
                          WindowNonClientMouseUp: "windows:WindowNonClientMouseUp";
                          WindowPaint: "windows:WindowPaint";
                          WindowRestore: "windows:WindowRestore";
                          WindowSetFocus: "windows:WindowSetFocus";
                          WindowShow: "windows:WindowShow";
                          WindowStartMove: "windows:WindowStartMove";
                          WindowStartResize: "windows:WindowStartResize";
                          WindowUnFullscreen: "windows:WindowUnFullscreen";
                          WindowUnMaximise: "windows:WindowUnMaximise";
                          WindowUnMinimise: "windows:WindowUnMinimise";
                          WindowZOrderChanged: "windows:WindowZOrderChanged";
                      },
                  >;
              },
          > = ...
          +Types | @wailsio/runtime
          @wailsio/runtime
            Preparing search index...

            Variable TypesConst

            Types: Readonly<
                {
                    Android: Readonly<
                        {
                            ActivityCreated: "android:ActivityCreated";
                            ActivityDestroyed: "android:ActivityDestroyed";
                            ActivityPaused: "android:ActivityPaused";
                            ActivityResumed: "android:ActivityResumed";
                            ActivityStarted: "android:ActivityStarted";
                            ActivityStopped: "android:ActivityStopped";
                            ApplicationLowMemory: "android:ApplicationLowMemory";
                            BatteryChanged: "android:BatteryChanged";
                            NetworkChanged: "android:NetworkChanged";
                            ScreenLocked: "android:ScreenLocked";
                            ScreenUnlocked: "android:ScreenUnlocked";
                            ThemeChanged: "android:ThemeChanged";
                            WebViewPageFinished: "android:WebViewPageFinished";
                            WebViewPageStarted: "android:WebViewPageStarted";
                        },
                    >;
                    Common: Readonly<
                        {
                            ApplicationLaunchedWithUrl: "common:ApplicationLaunchedWithUrl";
                            ApplicationOpenedWithFile: "common:ApplicationOpenedWithFile";
                            ApplicationStarted: "common:ApplicationStarted";
                            BatteryChanged: "common:BatteryChanged";
                            LowMemory: "common:LowMemory";
                            NetworkChanged: "common:NetworkChanged";
                            ScreenLocked: "common:ScreenLocked";
                            ScreenUnlocked: "common:ScreenUnlocked";
                            SystemDidWake: "common:SystemDidWake";
                            SystemWillSleep: "common:SystemWillSleep";
                            ThemeChanged: "common:ThemeChanged";
                            WindowClosing: "common:WindowClosing";
                            WindowDidMove: "common:WindowDidMove";
                            WindowDidResize: "common:WindowDidResize";
                            WindowDPIChanged: "common:WindowDPIChanged";
                            WindowFilesDropped: "common:WindowFilesDropped";
                            WindowFocus: "common:WindowFocus";
                            WindowFullscreen: "common:WindowFullscreen";
                            WindowHide: "common:WindowHide";
                            WindowLostFocus: "common:WindowLostFocus";
                            WindowMaximise: "common:WindowMaximise";
                            WindowMinimise: "common:WindowMinimise";
                            WindowRestore: "common:WindowRestore";
                            WindowRuntimeReady: "common:WindowRuntimeReady";
                            WindowShow: "common:WindowShow";
                            WindowToggleFrameless: "common:WindowToggleFrameless";
                            WindowUnFullscreen: "common:WindowUnFullscreen";
                            WindowUnMaximise: "common:WindowUnMaximise";
                            WindowUnMinimise: "common:WindowUnMinimise";
                            WindowZoom: "common:WindowZoom";
                            WindowZoomIn: "common:WindowZoomIn";
                            WindowZoomOut: "common:WindowZoomOut";
                            WindowZoomReset: "common:WindowZoomReset";
                        },
                    >;
                    iOS: Readonly<
                        {
                            ApplicationDidBecomeActive: "ios:ApplicationDidBecomeActive";
                            ApplicationDidEnterBackground: "ios:ApplicationDidEnterBackground";
                            ApplicationDidFinishLaunching: "ios:ApplicationDidFinishLaunching";
                            ApplicationDidReceiveMemoryWarning: "ios:ApplicationDidReceiveMemoryWarning";
                            ApplicationWillEnterForeground: "ios:ApplicationWillEnterForeground";
                            ApplicationWillResignActive: "ios:ApplicationWillResignActive";
                            ApplicationWillTerminate: "ios:ApplicationWillTerminate";
                            BatteryChanged: "ios:BatteryChanged";
                            NetworkChanged: "ios:NetworkChanged";
                            ScreenLocked: "ios:ScreenLocked";
                            ScreenUnlocked: "ios:ScreenUnlocked";
                            ThemeChanged: "ios:ThemeChanged";
                            WebViewDecidePolicyForNavigationAction: "ios:WebViewDecidePolicyForNavigationAction";
                            WebViewDidFailNavigation: "ios:WebViewDidFailNavigation";
                            WebViewDidFinishNavigation: "ios:WebViewDidFinishNavigation";
                            WebViewDidStartNavigation: "ios:WebViewDidStartNavigation";
                            WindowDidAppear: "ios:WindowDidAppear";
                            WindowDidDisappear: "ios:WindowDidDisappear";
                            WindowDidLoad: "ios:WindowDidLoad";
                            WindowOrientationChanged: "ios:WindowOrientationChanged";
                            WindowSafeAreaInsetsChanged: "ios:WindowSafeAreaInsetsChanged";
                            WindowTouchBegan: "ios:WindowTouchBegan";
                            WindowTouchCancelled: "ios:WindowTouchCancelled";
                            WindowTouchEnded: "ios:WindowTouchEnded";
                            WindowTouchMoved: "ios:WindowTouchMoved";
                            WindowWillAppear: "ios:WindowWillAppear";
                            WindowWillDisappear: "ios:WindowWillDisappear";
                        },
                    >;
                    Linux: Readonly<
                        {
                            ApplicationStartup: "linux:ApplicationStartup";
                            SystemDidWake: "linux:SystemDidWake";
                            SystemThemeChanged: "linux:SystemThemeChanged";
                            SystemWillSleep: "linux:SystemWillSleep";
                            WindowDeleteEvent: "linux:WindowDeleteEvent";
                            WindowDidMove: "linux:WindowDidMove";
                            WindowDidResize: "linux:WindowDidResize";
                            WindowFocusIn: "linux:WindowFocusIn";
                            WindowFocusOut: "linux:WindowFocusOut";
                            WindowLoadCommitted: "linux:WindowLoadCommitted";
                            WindowLoadFinished: "linux:WindowLoadFinished";
                            WindowLoadRedirected: "linux:WindowLoadRedirected";
                            WindowLoadStarted: "linux:WindowLoadStarted";
                        },
                    >;
                    Mac: Readonly<
                        {
                            ApplicationDidBecomeActive: "mac:ApplicationDidBecomeActive";
                            ApplicationDidChangeBackingProperties: "mac:ApplicationDidChangeBackingProperties";
                            ApplicationDidChangeEffectiveAppearance: "mac:ApplicationDidChangeEffectiveAppearance";
                            ApplicationDidChangeIcon: "mac:ApplicationDidChangeIcon";
                            ApplicationDidChangeOcclusionState: "mac:ApplicationDidChangeOcclusionState";
                            ApplicationDidChangeScreenParameters: "mac:ApplicationDidChangeScreenParameters";
                            ApplicationDidChangeStatusBarFrame: "mac:ApplicationDidChangeStatusBarFrame";
                            ApplicationDidChangeStatusBarOrientation: "mac:ApplicationDidChangeStatusBarOrientation";
                            ApplicationDidChangeTheme: "mac:ApplicationDidChangeTheme";
                            ApplicationDidFinishLaunching: "mac:ApplicationDidFinishLaunching";
                            ApplicationDidHide: "mac:ApplicationDidHide";
                            ApplicationDidResignActive: "mac:ApplicationDidResignActive";
                            ApplicationDidUnhide: "mac:ApplicationDidUnhide";
                            ApplicationDidUpdate: "mac:ApplicationDidUpdate";
                            ApplicationDidWake: "mac:ApplicationDidWake";
                            ApplicationScreensDidSleep: "mac:ApplicationScreensDidSleep";
                            ApplicationScreensDidWake: "mac:ApplicationScreensDidWake";
                            ApplicationShouldHandleReopen: "mac:ApplicationShouldHandleReopen";
                            ApplicationWillBecomeActive: "mac:ApplicationWillBecomeActive";
                            ApplicationWillFinishLaunching: "mac:ApplicationWillFinishLaunching";
                            ApplicationWillHide: "mac:ApplicationWillHide";
                            ApplicationWillResignActive: "mac:ApplicationWillResignActive";
                            ApplicationWillSleep: "mac:ApplicationWillSleep";
                            ApplicationWillTerminate: "mac:ApplicationWillTerminate";
                            ApplicationWillUnhide: "mac:ApplicationWillUnhide";
                            ApplicationWillUpdate: "mac:ApplicationWillUpdate";
                            MenuDidAddItem: "mac:MenuDidAddItem";
                            MenuDidBeginTracking: "mac:MenuDidBeginTracking";
                            MenuDidClose: "mac:MenuDidClose";
                            MenuDidDisplayItem: "mac:MenuDidDisplayItem";
                            MenuDidEndTracking: "mac:MenuDidEndTracking";
                            MenuDidHighlightItem: "mac:MenuDidHighlightItem";
                            MenuDidOpen: "mac:MenuDidOpen";
                            MenuDidPopUp: "mac:MenuDidPopUp";
                            MenuDidRemoveItem: "mac:MenuDidRemoveItem";
                            MenuDidSendAction: "mac:MenuDidSendAction";
                            MenuDidSendActionToItem: "mac:MenuDidSendActionToItem";
                            MenuDidUpdate: "mac:MenuDidUpdate";
                            MenuWillAddItem: "mac:MenuWillAddItem";
                            MenuWillBeginTracking: "mac:MenuWillBeginTracking";
                            MenuWillDisplayItem: "mac:MenuWillDisplayItem";
                            MenuWillEndTracking: "mac:MenuWillEndTracking";
                            MenuWillHighlightItem: "mac:MenuWillHighlightItem";
                            MenuWillOpen: "mac:MenuWillOpen";
                            MenuWillPopUp: "mac:MenuWillPopUp";
                            MenuWillRemoveItem: "mac:MenuWillRemoveItem";
                            MenuWillSendAction: "mac:MenuWillSendAction";
                            MenuWillSendActionToItem: "mac:MenuWillSendActionToItem";
                            MenuWillUpdate: "mac:MenuWillUpdate";
                            WebViewDidCommitNavigation: "mac:WebViewDidCommitNavigation";
                            WebViewDidFinishNavigation: "mac:WebViewDidFinishNavigation";
                            WebViewDidReceiveServerRedirectForProvisionalNavigation: "mac:WebViewDidReceiveServerRedirectForProvisionalNavigation";
                            WebViewDidStartProvisionalNavigation: "mac:WebViewDidStartProvisionalNavigation";
                            WebViewWebContentProcessDidTerminate: "mac:WebViewWebContentProcessDidTerminate";
                            WindowDidBecomeKey: "mac:WindowDidBecomeKey";
                            WindowDidBecomeMain: "mac:WindowDidBecomeMain";
                            WindowDidBeginSheet: "mac:WindowDidBeginSheet";
                            WindowDidChangeAlpha: "mac:WindowDidChangeAlpha";
                            WindowDidChangeBackingLocation: "mac:WindowDidChangeBackingLocation";
                            WindowDidChangeBackingProperties: "mac:WindowDidChangeBackingProperties";
                            WindowDidChangeCollectionBehavior: "mac:WindowDidChangeCollectionBehavior";
                            WindowDidChangeEffectiveAppearance: "mac:WindowDidChangeEffectiveAppearance";
                            WindowDidChangeOcclusionState: "mac:WindowDidChangeOcclusionState";
                            WindowDidChangeOrderingMode: "mac:WindowDidChangeOrderingMode";
                            WindowDidChangeScreen: "mac:WindowDidChangeScreen";
                            WindowDidChangeScreenParameters: "mac:WindowDidChangeScreenParameters";
                            WindowDidChangeScreenProfile: "mac:WindowDidChangeScreenProfile";
                            WindowDidChangeScreenSpace: "mac:WindowDidChangeScreenSpace";
                            WindowDidChangeScreenSpaceProperties: "mac:WindowDidChangeScreenSpaceProperties";
                            WindowDidChangeSharingType: "mac:WindowDidChangeSharingType";
                            WindowDidChangeSpace: "mac:WindowDidChangeSpace";
                            WindowDidChangeSpaceOrderingMode: "mac:WindowDidChangeSpaceOrderingMode";
                            WindowDidChangeTitle: "mac:WindowDidChangeTitle";
                            WindowDidChangeToolbar: "mac:WindowDidChangeToolbar";
                            WindowDidDeminiaturize: "mac:WindowDidDeminiaturize";
                            WindowDidEndSheet: "mac:WindowDidEndSheet";
                            WindowDidEnterFullScreen: "mac:WindowDidEnterFullScreen";
                            WindowDidEnterVersionBrowser: "mac:WindowDidEnterVersionBrowser";
                            WindowDidExitFullScreen: "mac:WindowDidExitFullScreen";
                            WindowDidExitVersionBrowser: "mac:WindowDidExitVersionBrowser";
                            WindowDidExpose: "mac:WindowDidExpose";
                            WindowDidFocus: "mac:WindowDidFocus";
                            WindowDidMiniaturize: "mac:WindowDidMiniaturize";
                            WindowDidMove: "mac:WindowDidMove";
                            WindowDidOrderOffScreen: "mac:WindowDidOrderOffScreen";
                            WindowDidOrderOnScreen: "mac:WindowDidOrderOnScreen";
                            WindowDidResignKey: "mac:WindowDidResignKey";
                            WindowDidResignMain: "mac:WindowDidResignMain";
                            WindowDidResize: "mac:WindowDidResize";
                            WindowDidUpdate: "mac:WindowDidUpdate";
                            WindowDidUpdateAlpha: "mac:WindowDidUpdateAlpha";
                            WindowDidUpdateCollectionBehavior: "mac:WindowDidUpdateCollectionBehavior";
                            WindowDidUpdateCollectionProperties: "mac:WindowDidUpdateCollectionProperties";
                            WindowDidUpdateShadow: "mac:WindowDidUpdateShadow";
                            WindowDidUpdateTitle: "mac:WindowDidUpdateTitle";
                            WindowDidUpdateToolbar: "mac:WindowDidUpdateToolbar";
                            WindowDidZoom: "mac:WindowDidZoom";
                            WindowFileDraggingEntered: "mac:WindowFileDraggingEntered";
                            WindowFileDraggingExited: "mac:WindowFileDraggingExited";
                            WindowFileDraggingPerformed: "mac:WindowFileDraggingPerformed";
                            WindowHide: "mac:WindowHide";
                            WindowMaximise: "mac:WindowMaximise";
                            WindowMinimise: "mac:WindowMinimise";
                            WindowShouldClose: "mac:WindowShouldClose";
                            WindowShow: "mac:WindowShow";
                            WindowUnMaximise: "mac:WindowUnMaximise";
                            WindowUnMinimise: "mac:WindowUnMinimise";
                            WindowWillBecomeKey: "mac:WindowWillBecomeKey";
                            WindowWillBecomeMain: "mac:WindowWillBecomeMain";
                            WindowWillBeginSheet: "mac:WindowWillBeginSheet";
                            WindowWillChangeOrderingMode: "mac:WindowWillChangeOrderingMode";
                            WindowWillClose: "mac:WindowWillClose";
                            WindowWillDeminiaturize: "mac:WindowWillDeminiaturize";
                            WindowWillEnterFullScreen: "mac:WindowWillEnterFullScreen";
                            WindowWillEnterVersionBrowser: "mac:WindowWillEnterVersionBrowser";
                            WindowWillExitFullScreen: "mac:WindowWillExitFullScreen";
                            WindowWillExitVersionBrowser: "mac:WindowWillExitVersionBrowser";
                            WindowWillFocus: "mac:WindowWillFocus";
                            WindowWillMiniaturize: "mac:WindowWillMiniaturize";
                            WindowWillMove: "mac:WindowWillMove";
                            WindowWillOrderOffScreen: "mac:WindowWillOrderOffScreen";
                            WindowWillOrderOnScreen: "mac:WindowWillOrderOnScreen";
                            WindowWillResignMain: "mac:WindowWillResignMain";
                            WindowWillResize: "mac:WindowWillResize";
                            WindowWillUnfocus: "mac:WindowWillUnfocus";
                            WindowWillUpdate: "mac:WindowWillUpdate";
                            WindowWillUpdateAlpha: "mac:WindowWillUpdateAlpha";
                            WindowWillUpdateCollectionBehavior: "mac:WindowWillUpdateCollectionBehavior";
                            WindowWillUpdateCollectionProperties: "mac:WindowWillUpdateCollectionProperties";
                            WindowWillUpdateShadow: "mac:WindowWillUpdateShadow";
                            WindowWillUpdateTitle: "mac:WindowWillUpdateTitle";
                            WindowWillUpdateToolbar: "mac:WindowWillUpdateToolbar";
                            WindowWillUpdateVisibility: "mac:WindowWillUpdateVisibility";
                            WindowWillUseStandardFrame: "mac:WindowWillUseStandardFrame";
                            WindowZoomIn: "mac:WindowZoomIn";
                            WindowZoomOut: "mac:WindowZoomOut";
                            WindowZoomReset: "mac:WindowZoomReset";
                        },
                    >;
                    Windows: Readonly<
                        {
                            APMPowerSettingChange: "windows:APMPowerSettingChange";
                            APMPowerStatusChange: "windows:APMPowerStatusChange";
                            APMResumeAutomatic: "windows:APMResumeAutomatic";
                            APMResumeSuspend: "windows:APMResumeSuspend";
                            APMSuspend: "windows:APMSuspend";
                            ApplicationStarted: "windows:ApplicationStarted";
                            SystemThemeChanged: "windows:SystemThemeChanged";
                            WebViewNavigationCompleted: "windows:WebViewNavigationCompleted";
                            WindowActive: "windows:WindowActive";
                            WindowBackgroundErase: "windows:WindowBackgroundErase";
                            WindowClickActive: "windows:WindowClickActive";
                            WindowClosing: "windows:WindowClosing";
                            WindowDidMove: "windows:WindowDidMove";
                            WindowDidResize: "windows:WindowDidResize";
                            WindowDPIChanged: "windows:WindowDPIChanged";
                            WindowDragDrop: "windows:WindowDragDrop";
                            WindowDragEnter: "windows:WindowDragEnter";
                            WindowDragLeave: "windows:WindowDragLeave";
                            WindowDragOver: "windows:WindowDragOver";
                            WindowEndMove: "windows:WindowEndMove";
                            WindowEndResize: "windows:WindowEndResize";
                            WindowFullscreen: "windows:WindowFullscreen";
                            WindowHide: "windows:WindowHide";
                            WindowInactive: "windows:WindowInactive";
                            WindowKeyDown: "windows:WindowKeyDown";
                            WindowKeyUp: "windows:WindowKeyUp";
                            WindowKillFocus: "windows:WindowKillFocus";
                            WindowMaximise: "windows:WindowMaximise";
                            WindowMinimise: "windows:WindowMinimise";
                            WindowNonClientHit: "windows:WindowNonClientHit";
                            WindowNonClientMouseDown: "windows:WindowNonClientMouseDown";
                            WindowNonClientMouseLeave: "windows:WindowNonClientMouseLeave";
                            WindowNonClientMouseMove: "windows:WindowNonClientMouseMove";
                            WindowNonClientMouseUp: "windows:WindowNonClientMouseUp";
                            WindowPaint: "windows:WindowPaint";
                            WindowRestore: "windows:WindowRestore";
                            WindowSetFocus: "windows:WindowSetFocus";
                            WindowShow: "windows:WindowShow";
                            WindowStartMove: "windows:WindowStartMove";
                            WindowStartResize: "windows:WindowStartResize";
                            WindowUnFullscreen: "windows:WindowUnFullscreen";
                            WindowUnMaximise: "windows:WindowUnMaximise";
                            WindowUnMinimise: "windows:WindowUnMinimise";
                            WindowZOrderChanged: "windows:WindowZOrderChanged";
                        },
                    >;
                },
            > = ...
            diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/package-lock.json b/v3/internal/runtime/desktop/@wailsio/runtime/package-lock.json index 88cf4d0e597..83e4808f194 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/package-lock.json +++ b/v3/internal/runtime/desktop/@wailsio/runtime/package-lock.json @@ -1,12 +1,12 @@ { "name": "@wailsio/runtime", - "version": "3.0.0-alpha.95", + "version": "3.0.0-alpha.96", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@wailsio/runtime", - "version": "3.0.0-alpha.95", + "version": "3.0.0-alpha.96", "license": "MIT", "devDependencies": { "esbuild": "0.28.1", diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/package.json b/v3/internal/runtime/desktop/@wailsio/runtime/package.json index e11ed55c03a..fcec2289954 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/package.json +++ b/v3/internal/runtime/desktop/@wailsio/runtime/package.json @@ -1,7 +1,7 @@ { "name": "@wailsio/runtime", "type": "module", - "version": "3.0.0-alpha.95", + "version": "3.0.0-alpha.96", "description": "Wails Runtime", "types": "types/index.d.ts", "exports": { diff --git a/v3/pkg/events/events.go b/v3/pkg/events/events.go index f24a85fb5cb..d09ae67ecee 100644 --- a/v3/pkg/events/events.go +++ b/v3/pkg/events/events.go @@ -1,601 +1,601 @@ package events type ApplicationEventType uint -type WindowEventType uint +type WindowEventType uint var Common = newCommonEvents() type commonEvents struct { - ApplicationOpenedWithFile ApplicationEventType - ApplicationStarted ApplicationEventType + ApplicationOpenedWithFile ApplicationEventType + ApplicationStarted ApplicationEventType ApplicationLaunchedWithUrl ApplicationEventType - ThemeChanged ApplicationEventType - SystemDidWake ApplicationEventType - SystemWillSleep ApplicationEventType - WindowClosing WindowEventType - WindowDidMove WindowEventType - WindowDidResize WindowEventType - WindowDPIChanged WindowEventType - WindowFilesDropped WindowEventType - WindowFocus WindowEventType - WindowFullscreen WindowEventType - WindowHide WindowEventType - WindowLostFocus WindowEventType - WindowMaximise WindowEventType - WindowMinimise WindowEventType - WindowToggleFrameless WindowEventType - WindowRestore WindowEventType - WindowRuntimeReady WindowEventType - WindowShow WindowEventType - WindowUnFullscreen WindowEventType - WindowUnMaximise WindowEventType - WindowUnMinimise WindowEventType - WindowZoom WindowEventType - WindowZoomIn WindowEventType - WindowZoomOut WindowEventType - WindowZoomReset WindowEventType - BatteryChanged ApplicationEventType - NetworkChanged ApplicationEventType - ScreenLocked ApplicationEventType - ScreenUnlocked ApplicationEventType - LowMemory ApplicationEventType + ThemeChanged ApplicationEventType + SystemDidWake ApplicationEventType + SystemWillSleep ApplicationEventType + WindowClosing WindowEventType + WindowDidMove WindowEventType + WindowDidResize WindowEventType + WindowDPIChanged WindowEventType + WindowFilesDropped WindowEventType + WindowFocus WindowEventType + WindowFullscreen WindowEventType + WindowHide WindowEventType + WindowLostFocus WindowEventType + WindowMaximise WindowEventType + WindowMinimise WindowEventType + WindowToggleFrameless WindowEventType + WindowRestore WindowEventType + WindowRuntimeReady WindowEventType + WindowShow WindowEventType + WindowUnFullscreen WindowEventType + WindowUnMaximise WindowEventType + WindowUnMinimise WindowEventType + WindowZoom WindowEventType + WindowZoomIn WindowEventType + WindowZoomOut WindowEventType + WindowZoomReset WindowEventType + BatteryChanged ApplicationEventType + NetworkChanged ApplicationEventType + ScreenLocked ApplicationEventType + ScreenUnlocked ApplicationEventType + LowMemory ApplicationEventType } func newCommonEvents() commonEvents { return commonEvents{ - ApplicationOpenedWithFile: 1024, - ApplicationStarted: 1025, + ApplicationOpenedWithFile: 1024, + ApplicationStarted: 1025, ApplicationLaunchedWithUrl: 1026, - ThemeChanged: 1027, - SystemDidWake: 1028, - SystemWillSleep: 1029, - WindowClosing: 1030, - WindowDidMove: 1031, - WindowDidResize: 1032, - WindowDPIChanged: 1033, - WindowFilesDropped: 1034, - WindowFocus: 1035, - WindowFullscreen: 1036, - WindowHide: 1037, - WindowLostFocus: 1038, - WindowMaximise: 1039, - WindowMinimise: 1040, - WindowToggleFrameless: 1041, - WindowRestore: 1042, - WindowRuntimeReady: 1043, - WindowShow: 1044, - WindowUnFullscreen: 1045, - WindowUnMaximise: 1046, - WindowUnMinimise: 1047, - WindowZoom: 1048, - WindowZoomIn: 1049, - WindowZoomOut: 1050, - WindowZoomReset: 1051, - BatteryChanged: 1287, - NetworkChanged: 1288, - ScreenLocked: 1289, - ScreenUnlocked: 1290, - LowMemory: 1291, + ThemeChanged: 1027, + SystemDidWake: 1028, + SystemWillSleep: 1029, + WindowClosing: 1030, + WindowDidMove: 1031, + WindowDidResize: 1032, + WindowDPIChanged: 1033, + WindowFilesDropped: 1034, + WindowFocus: 1035, + WindowFullscreen: 1036, + WindowHide: 1037, + WindowLostFocus: 1038, + WindowMaximise: 1039, + WindowMinimise: 1040, + WindowToggleFrameless: 1041, + WindowRestore: 1042, + WindowRuntimeReady: 1043, + WindowShow: 1044, + WindowUnFullscreen: 1045, + WindowUnMaximise: 1046, + WindowUnMinimise: 1047, + WindowZoom: 1048, + WindowZoomIn: 1049, + WindowZoomOut: 1050, + WindowZoomReset: 1051, + BatteryChanged: 1287, + NetworkChanged: 1288, + ScreenLocked: 1289, + ScreenUnlocked: 1290, + LowMemory: 1291, } } var Linux = newLinuxEvents() type linuxEvents struct { - ApplicationStartup ApplicationEventType - SystemDidWake ApplicationEventType - SystemThemeChanged ApplicationEventType - SystemWillSleep ApplicationEventType - WindowDeleteEvent WindowEventType - WindowDidMove WindowEventType - WindowDidResize WindowEventType - WindowFocusIn WindowEventType - WindowFocusOut WindowEventType - WindowLoadStarted WindowEventType + ApplicationStartup ApplicationEventType + SystemDidWake ApplicationEventType + SystemThemeChanged ApplicationEventType + SystemWillSleep ApplicationEventType + WindowDeleteEvent WindowEventType + WindowDidMove WindowEventType + WindowDidResize WindowEventType + WindowFocusIn WindowEventType + WindowFocusOut WindowEventType + WindowLoadStarted WindowEventType WindowLoadRedirected WindowEventType - WindowLoadCommitted WindowEventType - WindowLoadFinished WindowEventType + WindowLoadCommitted WindowEventType + WindowLoadFinished WindowEventType } func newLinuxEvents() linuxEvents { return linuxEvents{ - ApplicationStartup: 1052, - SystemDidWake: 1053, - SystemThemeChanged: 1054, - SystemWillSleep: 1055, - WindowDeleteEvent: 1056, - WindowDidMove: 1057, - WindowDidResize: 1058, - WindowFocusIn: 1059, - WindowFocusOut: 1060, - WindowLoadStarted: 1061, + ApplicationStartup: 1052, + SystemDidWake: 1053, + SystemThemeChanged: 1054, + SystemWillSleep: 1055, + WindowDeleteEvent: 1056, + WindowDidMove: 1057, + WindowDidResize: 1058, + WindowFocusIn: 1059, + WindowFocusOut: 1060, + WindowLoadStarted: 1061, WindowLoadRedirected: 1062, - WindowLoadCommitted: 1063, - WindowLoadFinished: 1064, + WindowLoadCommitted: 1063, + WindowLoadFinished: 1064, } } var Mac = newMacEvents() type macEvents struct { - ApplicationDidBecomeActive ApplicationEventType - ApplicationDidChangeBackingProperties ApplicationEventType - ApplicationDidChangeEffectiveAppearance ApplicationEventType - ApplicationDidChangeIcon ApplicationEventType - ApplicationDidChangeOcclusionState ApplicationEventType - ApplicationDidChangeScreenParameters ApplicationEventType - ApplicationDidChangeStatusBarFrame ApplicationEventType - ApplicationDidChangeStatusBarOrientation ApplicationEventType - ApplicationDidChangeTheme ApplicationEventType - ApplicationDidFinishLaunching ApplicationEventType - ApplicationDidHide ApplicationEventType - ApplicationDidResignActive ApplicationEventType - ApplicationDidUnhide ApplicationEventType - ApplicationDidUpdate ApplicationEventType - ApplicationDidWake ApplicationEventType - ApplicationScreensDidSleep ApplicationEventType - ApplicationScreensDidWake ApplicationEventType - ApplicationShouldHandleReopen ApplicationEventType - ApplicationWillBecomeActive ApplicationEventType - ApplicationWillFinishLaunching ApplicationEventType - ApplicationWillHide ApplicationEventType - ApplicationWillResignActive ApplicationEventType - ApplicationWillSleep ApplicationEventType - ApplicationWillTerminate ApplicationEventType - ApplicationWillUnhide ApplicationEventType - ApplicationWillUpdate ApplicationEventType - MenuDidAddItem ApplicationEventType - MenuDidBeginTracking ApplicationEventType - MenuDidClose ApplicationEventType - MenuDidDisplayItem ApplicationEventType - MenuDidEndTracking ApplicationEventType - MenuDidHighlightItem ApplicationEventType - MenuDidOpen ApplicationEventType - MenuDidPopUp ApplicationEventType - MenuDidRemoveItem ApplicationEventType - MenuDidSendAction ApplicationEventType - MenuDidSendActionToItem ApplicationEventType - MenuDidUpdate ApplicationEventType - MenuWillAddItem ApplicationEventType - MenuWillBeginTracking ApplicationEventType - MenuWillDisplayItem ApplicationEventType - MenuWillEndTracking ApplicationEventType - MenuWillHighlightItem ApplicationEventType - MenuWillOpen ApplicationEventType - MenuWillPopUp ApplicationEventType - MenuWillRemoveItem ApplicationEventType - MenuWillSendAction ApplicationEventType - MenuWillSendActionToItem ApplicationEventType - MenuWillUpdate ApplicationEventType - WebViewDidCommitNavigation WindowEventType - WebViewDidFinishNavigation WindowEventType + ApplicationDidBecomeActive ApplicationEventType + ApplicationDidChangeBackingProperties ApplicationEventType + ApplicationDidChangeEffectiveAppearance ApplicationEventType + ApplicationDidChangeIcon ApplicationEventType + ApplicationDidChangeOcclusionState ApplicationEventType + ApplicationDidChangeScreenParameters ApplicationEventType + ApplicationDidChangeStatusBarFrame ApplicationEventType + ApplicationDidChangeStatusBarOrientation ApplicationEventType + ApplicationDidChangeTheme ApplicationEventType + ApplicationDidFinishLaunching ApplicationEventType + ApplicationDidHide ApplicationEventType + ApplicationDidResignActive ApplicationEventType + ApplicationDidUnhide ApplicationEventType + ApplicationDidUpdate ApplicationEventType + ApplicationDidWake ApplicationEventType + ApplicationScreensDidSleep ApplicationEventType + ApplicationScreensDidWake ApplicationEventType + ApplicationShouldHandleReopen ApplicationEventType + ApplicationWillBecomeActive ApplicationEventType + ApplicationWillFinishLaunching ApplicationEventType + ApplicationWillHide ApplicationEventType + ApplicationWillResignActive ApplicationEventType + ApplicationWillSleep ApplicationEventType + ApplicationWillTerminate ApplicationEventType + ApplicationWillUnhide ApplicationEventType + ApplicationWillUpdate ApplicationEventType + MenuDidAddItem ApplicationEventType + MenuDidBeginTracking ApplicationEventType + MenuDidClose ApplicationEventType + MenuDidDisplayItem ApplicationEventType + MenuDidEndTracking ApplicationEventType + MenuDidHighlightItem ApplicationEventType + MenuDidOpen ApplicationEventType + MenuDidPopUp ApplicationEventType + MenuDidRemoveItem ApplicationEventType + MenuDidSendAction ApplicationEventType + MenuDidSendActionToItem ApplicationEventType + MenuDidUpdate ApplicationEventType + MenuWillAddItem ApplicationEventType + MenuWillBeginTracking ApplicationEventType + MenuWillDisplayItem ApplicationEventType + MenuWillEndTracking ApplicationEventType + MenuWillHighlightItem ApplicationEventType + MenuWillOpen ApplicationEventType + MenuWillPopUp ApplicationEventType + MenuWillRemoveItem ApplicationEventType + MenuWillSendAction ApplicationEventType + MenuWillSendActionToItem ApplicationEventType + MenuWillUpdate ApplicationEventType + WebViewDidCommitNavigation WindowEventType + WebViewDidFinishNavigation WindowEventType WebViewDidReceiveServerRedirectForProvisionalNavigation WindowEventType - WebViewDidStartProvisionalNavigation WindowEventType - WindowDidBecomeKey WindowEventType - WindowDidBecomeMain WindowEventType - WindowDidBeginSheet WindowEventType - WindowDidChangeAlpha WindowEventType - WindowDidChangeBackingLocation WindowEventType - WindowDidChangeBackingProperties WindowEventType - WindowDidChangeCollectionBehavior WindowEventType - WindowDidChangeEffectiveAppearance WindowEventType - WindowDidChangeOcclusionState WindowEventType - WindowDidChangeOrderingMode WindowEventType - WindowDidChangeScreen WindowEventType - WindowDidChangeScreenParameters WindowEventType - WindowDidChangeScreenProfile WindowEventType - WindowDidChangeScreenSpace WindowEventType - WindowDidChangeScreenSpaceProperties WindowEventType - WindowDidChangeSharingType WindowEventType - WindowDidChangeSpace WindowEventType - WindowDidChangeSpaceOrderingMode WindowEventType - WindowDidChangeTitle WindowEventType - WindowDidChangeToolbar WindowEventType - WindowDidDeminiaturize WindowEventType - WindowDidEndSheet WindowEventType - WindowDidEnterFullScreen WindowEventType - WindowDidEnterVersionBrowser WindowEventType - WindowDidExitFullScreen WindowEventType - WindowDidExitVersionBrowser WindowEventType - WindowDidExpose WindowEventType - WindowDidFocus WindowEventType - WindowDidMiniaturize WindowEventType - WindowDidMove WindowEventType - WindowDidOrderOffScreen WindowEventType - WindowDidOrderOnScreen WindowEventType - WindowDidResignKey WindowEventType - WindowDidResignMain WindowEventType - WindowDidResize WindowEventType - WindowDidUpdate WindowEventType - WindowDidUpdateAlpha WindowEventType - WindowDidUpdateCollectionBehavior WindowEventType - WindowDidUpdateCollectionProperties WindowEventType - WindowDidUpdateShadow WindowEventType - WindowDidUpdateTitle WindowEventType - WindowDidUpdateToolbar WindowEventType - WindowDidZoom WindowEventType - WindowFileDraggingEntered WindowEventType - WindowFileDraggingExited WindowEventType - WindowFileDraggingPerformed WindowEventType - WindowHide WindowEventType - WindowMaximise WindowEventType - WindowUnMaximise WindowEventType - WindowMinimise WindowEventType - WindowUnMinimise WindowEventType - WindowShouldClose WindowEventType - WindowShow WindowEventType - WindowWillBecomeKey WindowEventType - WindowWillBecomeMain WindowEventType - WindowWillBeginSheet WindowEventType - WindowWillChangeOrderingMode WindowEventType - WindowWillClose WindowEventType - WindowWillDeminiaturize WindowEventType - WindowWillEnterFullScreen WindowEventType - WindowWillEnterVersionBrowser WindowEventType - WindowWillExitFullScreen WindowEventType - WindowWillExitVersionBrowser WindowEventType - WindowWillFocus WindowEventType - WindowWillMiniaturize WindowEventType - WindowWillMove WindowEventType - WindowWillOrderOffScreen WindowEventType - WindowWillOrderOnScreen WindowEventType - WindowWillResignMain WindowEventType - WindowWillResize WindowEventType - WindowWillUnfocus WindowEventType - WindowWillUpdate WindowEventType - WindowWillUpdateAlpha WindowEventType - WindowWillUpdateCollectionBehavior WindowEventType - WindowWillUpdateCollectionProperties WindowEventType - WindowWillUpdateShadow WindowEventType - WindowWillUpdateTitle WindowEventType - WindowWillUpdateToolbar WindowEventType - WindowWillUpdateVisibility WindowEventType - WindowWillUseStandardFrame WindowEventType - WindowZoomIn WindowEventType - WindowZoomOut WindowEventType - WindowZoomReset WindowEventType - WebViewWebContentProcessDidTerminate WindowEventType + WebViewDidStartProvisionalNavigation WindowEventType + WindowDidBecomeKey WindowEventType + WindowDidBecomeMain WindowEventType + WindowDidBeginSheet WindowEventType + WindowDidChangeAlpha WindowEventType + WindowDidChangeBackingLocation WindowEventType + WindowDidChangeBackingProperties WindowEventType + WindowDidChangeCollectionBehavior WindowEventType + WindowDidChangeEffectiveAppearance WindowEventType + WindowDidChangeOcclusionState WindowEventType + WindowDidChangeOrderingMode WindowEventType + WindowDidChangeScreen WindowEventType + WindowDidChangeScreenParameters WindowEventType + WindowDidChangeScreenProfile WindowEventType + WindowDidChangeScreenSpace WindowEventType + WindowDidChangeScreenSpaceProperties WindowEventType + WindowDidChangeSharingType WindowEventType + WindowDidChangeSpace WindowEventType + WindowDidChangeSpaceOrderingMode WindowEventType + WindowDidChangeTitle WindowEventType + WindowDidChangeToolbar WindowEventType + WindowDidDeminiaturize WindowEventType + WindowDidEndSheet WindowEventType + WindowDidEnterFullScreen WindowEventType + WindowDidEnterVersionBrowser WindowEventType + WindowDidExitFullScreen WindowEventType + WindowDidExitVersionBrowser WindowEventType + WindowDidExpose WindowEventType + WindowDidFocus WindowEventType + WindowDidMiniaturize WindowEventType + WindowDidMove WindowEventType + WindowDidOrderOffScreen WindowEventType + WindowDidOrderOnScreen WindowEventType + WindowDidResignKey WindowEventType + WindowDidResignMain WindowEventType + WindowDidResize WindowEventType + WindowDidUpdate WindowEventType + WindowDidUpdateAlpha WindowEventType + WindowDidUpdateCollectionBehavior WindowEventType + WindowDidUpdateCollectionProperties WindowEventType + WindowDidUpdateShadow WindowEventType + WindowDidUpdateTitle WindowEventType + WindowDidUpdateToolbar WindowEventType + WindowDidZoom WindowEventType + WindowFileDraggingEntered WindowEventType + WindowFileDraggingExited WindowEventType + WindowFileDraggingPerformed WindowEventType + WindowHide WindowEventType + WindowMaximise WindowEventType + WindowUnMaximise WindowEventType + WindowMinimise WindowEventType + WindowUnMinimise WindowEventType + WindowShouldClose WindowEventType + WindowShow WindowEventType + WindowWillBecomeKey WindowEventType + WindowWillBecomeMain WindowEventType + WindowWillBeginSheet WindowEventType + WindowWillChangeOrderingMode WindowEventType + WindowWillClose WindowEventType + WindowWillDeminiaturize WindowEventType + WindowWillEnterFullScreen WindowEventType + WindowWillEnterVersionBrowser WindowEventType + WindowWillExitFullScreen WindowEventType + WindowWillExitVersionBrowser WindowEventType + WindowWillFocus WindowEventType + WindowWillMiniaturize WindowEventType + WindowWillMove WindowEventType + WindowWillOrderOffScreen WindowEventType + WindowWillOrderOnScreen WindowEventType + WindowWillResignMain WindowEventType + WindowWillResize WindowEventType + WindowWillUnfocus WindowEventType + WindowWillUpdate WindowEventType + WindowWillUpdateAlpha WindowEventType + WindowWillUpdateCollectionBehavior WindowEventType + WindowWillUpdateCollectionProperties WindowEventType + WindowWillUpdateShadow WindowEventType + WindowWillUpdateTitle WindowEventType + WindowWillUpdateToolbar WindowEventType + WindowWillUpdateVisibility WindowEventType + WindowWillUseStandardFrame WindowEventType + WindowZoomIn WindowEventType + WindowZoomOut WindowEventType + WindowZoomReset WindowEventType + WebViewWebContentProcessDidTerminate WindowEventType } func newMacEvents() macEvents { return macEvents{ - ApplicationDidBecomeActive: 1065, - ApplicationDidChangeBackingProperties: 1066, - ApplicationDidChangeEffectiveAppearance: 1067, - ApplicationDidChangeIcon: 1068, - ApplicationDidChangeOcclusionState: 1069, - ApplicationDidChangeScreenParameters: 1070, - ApplicationDidChangeStatusBarFrame: 1071, + ApplicationDidBecomeActive: 1065, + ApplicationDidChangeBackingProperties: 1066, + ApplicationDidChangeEffectiveAppearance: 1067, + ApplicationDidChangeIcon: 1068, + ApplicationDidChangeOcclusionState: 1069, + ApplicationDidChangeScreenParameters: 1070, + ApplicationDidChangeStatusBarFrame: 1071, ApplicationDidChangeStatusBarOrientation: 1072, - ApplicationDidChangeTheme: 1073, - ApplicationDidFinishLaunching: 1074, - ApplicationDidHide: 1075, - ApplicationDidResignActive: 1076, - ApplicationDidUnhide: 1077, - ApplicationDidUpdate: 1078, - ApplicationDidWake: 1079, - ApplicationScreensDidSleep: 1080, - ApplicationScreensDidWake: 1081, - ApplicationShouldHandleReopen: 1082, - ApplicationWillBecomeActive: 1083, - ApplicationWillFinishLaunching: 1084, - ApplicationWillHide: 1085, - ApplicationWillResignActive: 1086, - ApplicationWillSleep: 1087, - ApplicationWillTerminate: 1088, - ApplicationWillUnhide: 1089, - ApplicationWillUpdate: 1090, - MenuDidAddItem: 1091, - MenuDidBeginTracking: 1092, - MenuDidClose: 1093, - MenuDidDisplayItem: 1094, - MenuDidEndTracking: 1095, - MenuDidHighlightItem: 1096, - MenuDidOpen: 1097, - MenuDidPopUp: 1098, - MenuDidRemoveItem: 1099, - MenuDidSendAction: 1100, - MenuDidSendActionToItem: 1101, - MenuDidUpdate: 1102, - MenuWillAddItem: 1103, - MenuWillBeginTracking: 1104, - MenuWillDisplayItem: 1105, - MenuWillEndTracking: 1106, - MenuWillHighlightItem: 1107, - MenuWillOpen: 1108, - MenuWillPopUp: 1109, - MenuWillRemoveItem: 1110, - MenuWillSendAction: 1111, - MenuWillSendActionToItem: 1112, - MenuWillUpdate: 1113, - WebViewDidCommitNavigation: 1114, - WebViewDidFinishNavigation: 1115, + ApplicationDidChangeTheme: 1073, + ApplicationDidFinishLaunching: 1074, + ApplicationDidHide: 1075, + ApplicationDidResignActive: 1076, + ApplicationDidUnhide: 1077, + ApplicationDidUpdate: 1078, + ApplicationDidWake: 1079, + ApplicationScreensDidSleep: 1080, + ApplicationScreensDidWake: 1081, + ApplicationShouldHandleReopen: 1082, + ApplicationWillBecomeActive: 1083, + ApplicationWillFinishLaunching: 1084, + ApplicationWillHide: 1085, + ApplicationWillResignActive: 1086, + ApplicationWillSleep: 1087, + ApplicationWillTerminate: 1088, + ApplicationWillUnhide: 1089, + ApplicationWillUpdate: 1090, + MenuDidAddItem: 1091, + MenuDidBeginTracking: 1092, + MenuDidClose: 1093, + MenuDidDisplayItem: 1094, + MenuDidEndTracking: 1095, + MenuDidHighlightItem: 1096, + MenuDidOpen: 1097, + MenuDidPopUp: 1098, + MenuDidRemoveItem: 1099, + MenuDidSendAction: 1100, + MenuDidSendActionToItem: 1101, + MenuDidUpdate: 1102, + MenuWillAddItem: 1103, + MenuWillBeginTracking: 1104, + MenuWillDisplayItem: 1105, + MenuWillEndTracking: 1106, + MenuWillHighlightItem: 1107, + MenuWillOpen: 1108, + MenuWillPopUp: 1109, + MenuWillRemoveItem: 1110, + MenuWillSendAction: 1111, + MenuWillSendActionToItem: 1112, + MenuWillUpdate: 1113, + WebViewDidCommitNavigation: 1114, + WebViewDidFinishNavigation: 1115, WebViewDidReceiveServerRedirectForProvisionalNavigation: 1116, - WebViewDidStartProvisionalNavigation: 1117, - WindowDidBecomeKey: 1118, - WindowDidBecomeMain: 1119, - WindowDidBeginSheet: 1120, - WindowDidChangeAlpha: 1121, - WindowDidChangeBackingLocation: 1122, - WindowDidChangeBackingProperties: 1123, - WindowDidChangeCollectionBehavior: 1124, - WindowDidChangeEffectiveAppearance: 1125, - WindowDidChangeOcclusionState: 1126, - WindowDidChangeOrderingMode: 1127, - WindowDidChangeScreen: 1128, - WindowDidChangeScreenParameters: 1129, - WindowDidChangeScreenProfile: 1130, - WindowDidChangeScreenSpace: 1131, - WindowDidChangeScreenSpaceProperties: 1132, - WindowDidChangeSharingType: 1133, - WindowDidChangeSpace: 1134, - WindowDidChangeSpaceOrderingMode: 1135, - WindowDidChangeTitle: 1136, - WindowDidChangeToolbar: 1137, - WindowDidDeminiaturize: 1138, - WindowDidEndSheet: 1139, - WindowDidEnterFullScreen: 1140, - WindowDidEnterVersionBrowser: 1141, - WindowDidExitFullScreen: 1142, - WindowDidExitVersionBrowser: 1143, - WindowDidExpose: 1144, - WindowDidFocus: 1145, - WindowDidMiniaturize: 1146, - WindowDidMove: 1147, - WindowDidOrderOffScreen: 1148, - WindowDidOrderOnScreen: 1149, - WindowDidResignKey: 1150, - WindowDidResignMain: 1151, - WindowDidResize: 1152, - WindowDidUpdate: 1153, - WindowDidUpdateAlpha: 1154, - WindowDidUpdateCollectionBehavior: 1155, - WindowDidUpdateCollectionProperties: 1156, - WindowDidUpdateShadow: 1157, - WindowDidUpdateTitle: 1158, - WindowDidUpdateToolbar: 1159, - WindowDidZoom: 1160, - WindowFileDraggingEntered: 1161, - WindowFileDraggingExited: 1162, - WindowFileDraggingPerformed: 1163, - WindowHide: 1164, - WindowMaximise: 1165, - WindowUnMaximise: 1166, - WindowMinimise: 1167, - WindowUnMinimise: 1168, - WindowShouldClose: 1169, - WindowShow: 1170, - WindowWillBecomeKey: 1171, - WindowWillBecomeMain: 1172, - WindowWillBeginSheet: 1173, - WindowWillChangeOrderingMode: 1174, - WindowWillClose: 1175, - WindowWillDeminiaturize: 1176, - WindowWillEnterFullScreen: 1177, - WindowWillEnterVersionBrowser: 1178, - WindowWillExitFullScreen: 1179, - WindowWillExitVersionBrowser: 1180, - WindowWillFocus: 1181, - WindowWillMiniaturize: 1182, - WindowWillMove: 1183, - WindowWillOrderOffScreen: 1184, - WindowWillOrderOnScreen: 1185, - WindowWillResignMain: 1186, - WindowWillResize: 1187, - WindowWillUnfocus: 1188, - WindowWillUpdate: 1189, - WindowWillUpdateAlpha: 1190, - WindowWillUpdateCollectionBehavior: 1191, - WindowWillUpdateCollectionProperties: 1192, - WindowWillUpdateShadow: 1193, - WindowWillUpdateTitle: 1194, - WindowWillUpdateToolbar: 1195, - WindowWillUpdateVisibility: 1196, - WindowWillUseStandardFrame: 1197, - WindowZoomIn: 1198, - WindowZoomOut: 1199, - WindowZoomReset: 1200, - WebViewWebContentProcessDidTerminate: 1267, + WebViewDidStartProvisionalNavigation: 1117, + WindowDidBecomeKey: 1118, + WindowDidBecomeMain: 1119, + WindowDidBeginSheet: 1120, + WindowDidChangeAlpha: 1121, + WindowDidChangeBackingLocation: 1122, + WindowDidChangeBackingProperties: 1123, + WindowDidChangeCollectionBehavior: 1124, + WindowDidChangeEffectiveAppearance: 1125, + WindowDidChangeOcclusionState: 1126, + WindowDidChangeOrderingMode: 1127, + WindowDidChangeScreen: 1128, + WindowDidChangeScreenParameters: 1129, + WindowDidChangeScreenProfile: 1130, + WindowDidChangeScreenSpace: 1131, + WindowDidChangeScreenSpaceProperties: 1132, + WindowDidChangeSharingType: 1133, + WindowDidChangeSpace: 1134, + WindowDidChangeSpaceOrderingMode: 1135, + WindowDidChangeTitle: 1136, + WindowDidChangeToolbar: 1137, + WindowDidDeminiaturize: 1138, + WindowDidEndSheet: 1139, + WindowDidEnterFullScreen: 1140, + WindowDidEnterVersionBrowser: 1141, + WindowDidExitFullScreen: 1142, + WindowDidExitVersionBrowser: 1143, + WindowDidExpose: 1144, + WindowDidFocus: 1145, + WindowDidMiniaturize: 1146, + WindowDidMove: 1147, + WindowDidOrderOffScreen: 1148, + WindowDidOrderOnScreen: 1149, + WindowDidResignKey: 1150, + WindowDidResignMain: 1151, + WindowDidResize: 1152, + WindowDidUpdate: 1153, + WindowDidUpdateAlpha: 1154, + WindowDidUpdateCollectionBehavior: 1155, + WindowDidUpdateCollectionProperties: 1156, + WindowDidUpdateShadow: 1157, + WindowDidUpdateTitle: 1158, + WindowDidUpdateToolbar: 1159, + WindowDidZoom: 1160, + WindowFileDraggingEntered: 1161, + WindowFileDraggingExited: 1162, + WindowFileDraggingPerformed: 1163, + WindowHide: 1164, + WindowMaximise: 1165, + WindowUnMaximise: 1166, + WindowMinimise: 1167, + WindowUnMinimise: 1168, + WindowShouldClose: 1169, + WindowShow: 1170, + WindowWillBecomeKey: 1171, + WindowWillBecomeMain: 1172, + WindowWillBeginSheet: 1173, + WindowWillChangeOrderingMode: 1174, + WindowWillClose: 1175, + WindowWillDeminiaturize: 1176, + WindowWillEnterFullScreen: 1177, + WindowWillEnterVersionBrowser: 1178, + WindowWillExitFullScreen: 1179, + WindowWillExitVersionBrowser: 1180, + WindowWillFocus: 1181, + WindowWillMiniaturize: 1182, + WindowWillMove: 1183, + WindowWillOrderOffScreen: 1184, + WindowWillOrderOnScreen: 1185, + WindowWillResignMain: 1186, + WindowWillResize: 1187, + WindowWillUnfocus: 1188, + WindowWillUpdate: 1189, + WindowWillUpdateAlpha: 1190, + WindowWillUpdateCollectionBehavior: 1191, + WindowWillUpdateCollectionProperties: 1192, + WindowWillUpdateShadow: 1193, + WindowWillUpdateTitle: 1194, + WindowWillUpdateToolbar: 1195, + WindowWillUpdateVisibility: 1196, + WindowWillUseStandardFrame: 1197, + WindowZoomIn: 1198, + WindowZoomOut: 1199, + WindowZoomReset: 1200, + WebViewWebContentProcessDidTerminate: 1267, } } var Windows = newWindowsEvents() type windowsEvents struct { - APMPowerSettingChange ApplicationEventType - APMPowerStatusChange ApplicationEventType - APMResumeAutomatic ApplicationEventType - APMResumeSuspend ApplicationEventType - APMSuspend ApplicationEventType - ApplicationStarted ApplicationEventType - SystemThemeChanged ApplicationEventType + APMPowerSettingChange ApplicationEventType + APMPowerStatusChange ApplicationEventType + APMResumeAutomatic ApplicationEventType + APMResumeSuspend ApplicationEventType + APMSuspend ApplicationEventType + ApplicationStarted ApplicationEventType + SystemThemeChanged ApplicationEventType WebViewNavigationCompleted WindowEventType - WindowActive WindowEventType - WindowBackgroundErase WindowEventType - WindowClickActive WindowEventType - WindowClosing WindowEventType - WindowDidMove WindowEventType - WindowDidResize WindowEventType - WindowDPIChanged WindowEventType - WindowDragDrop WindowEventType - WindowDragEnter WindowEventType - WindowDragLeave WindowEventType - WindowDragOver WindowEventType - WindowEndMove WindowEventType - WindowEndResize WindowEventType - WindowFullscreen WindowEventType - WindowHide WindowEventType - WindowInactive WindowEventType - WindowKeyDown WindowEventType - WindowKeyUp WindowEventType - WindowKillFocus WindowEventType - WindowNonClientHit WindowEventType - WindowNonClientMouseDown WindowEventType - WindowNonClientMouseLeave WindowEventType - WindowNonClientMouseMove WindowEventType - WindowNonClientMouseUp WindowEventType - WindowPaint WindowEventType - WindowRestore WindowEventType - WindowSetFocus WindowEventType - WindowShow WindowEventType - WindowStartMove WindowEventType - WindowStartResize WindowEventType - WindowUnFullscreen WindowEventType - WindowZOrderChanged WindowEventType - WindowMinimise WindowEventType - WindowUnMinimise WindowEventType - WindowMaximise WindowEventType - WindowUnMaximise WindowEventType + WindowActive WindowEventType + WindowBackgroundErase WindowEventType + WindowClickActive WindowEventType + WindowClosing WindowEventType + WindowDidMove WindowEventType + WindowDidResize WindowEventType + WindowDPIChanged WindowEventType + WindowDragDrop WindowEventType + WindowDragEnter WindowEventType + WindowDragLeave WindowEventType + WindowDragOver WindowEventType + WindowEndMove WindowEventType + WindowEndResize WindowEventType + WindowFullscreen WindowEventType + WindowHide WindowEventType + WindowInactive WindowEventType + WindowKeyDown WindowEventType + WindowKeyUp WindowEventType + WindowKillFocus WindowEventType + WindowNonClientHit WindowEventType + WindowNonClientMouseDown WindowEventType + WindowNonClientMouseLeave WindowEventType + WindowNonClientMouseMove WindowEventType + WindowNonClientMouseUp WindowEventType + WindowPaint WindowEventType + WindowRestore WindowEventType + WindowSetFocus WindowEventType + WindowShow WindowEventType + WindowStartMove WindowEventType + WindowStartResize WindowEventType + WindowUnFullscreen WindowEventType + WindowZOrderChanged WindowEventType + WindowMinimise WindowEventType + WindowUnMinimise WindowEventType + WindowMaximise WindowEventType + WindowUnMaximise WindowEventType } func newWindowsEvents() windowsEvents { return windowsEvents{ - APMPowerSettingChange: 1201, - APMPowerStatusChange: 1202, - APMResumeAutomatic: 1203, - APMResumeSuspend: 1204, - APMSuspend: 1205, - ApplicationStarted: 1206, - SystemThemeChanged: 1207, + APMPowerSettingChange: 1201, + APMPowerStatusChange: 1202, + APMResumeAutomatic: 1203, + APMResumeSuspend: 1204, + APMSuspend: 1205, + ApplicationStarted: 1206, + SystemThemeChanged: 1207, WebViewNavigationCompleted: 1208, - WindowActive: 1209, - WindowBackgroundErase: 1210, - WindowClickActive: 1211, - WindowClosing: 1212, - WindowDidMove: 1213, - WindowDidResize: 1214, - WindowDPIChanged: 1215, - WindowDragDrop: 1216, - WindowDragEnter: 1217, - WindowDragLeave: 1218, - WindowDragOver: 1219, - WindowEndMove: 1220, - WindowEndResize: 1221, - WindowFullscreen: 1222, - WindowHide: 1223, - WindowInactive: 1224, - WindowKeyDown: 1225, - WindowKeyUp: 1226, - WindowKillFocus: 1227, - WindowNonClientHit: 1228, - WindowNonClientMouseDown: 1229, - WindowNonClientMouseLeave: 1230, - WindowNonClientMouseMove: 1231, - WindowNonClientMouseUp: 1232, - WindowPaint: 1233, - WindowRestore: 1234, - WindowSetFocus: 1235, - WindowShow: 1236, - WindowStartMove: 1237, - WindowStartResize: 1238, - WindowUnFullscreen: 1239, - WindowZOrderChanged: 1240, - WindowMinimise: 1241, - WindowUnMinimise: 1242, - WindowMaximise: 1243, - WindowUnMaximise: 1244, + WindowActive: 1209, + WindowBackgroundErase: 1210, + WindowClickActive: 1211, + WindowClosing: 1212, + WindowDidMove: 1213, + WindowDidResize: 1214, + WindowDPIChanged: 1215, + WindowDragDrop: 1216, + WindowDragEnter: 1217, + WindowDragLeave: 1218, + WindowDragOver: 1219, + WindowEndMove: 1220, + WindowEndResize: 1221, + WindowFullscreen: 1222, + WindowHide: 1223, + WindowInactive: 1224, + WindowKeyDown: 1225, + WindowKeyUp: 1226, + WindowKillFocus: 1227, + WindowNonClientHit: 1228, + WindowNonClientMouseDown: 1229, + WindowNonClientMouseLeave: 1230, + WindowNonClientMouseMove: 1231, + WindowNonClientMouseUp: 1232, + WindowPaint: 1233, + WindowRestore: 1234, + WindowSetFocus: 1235, + WindowShow: 1236, + WindowStartMove: 1237, + WindowStartResize: 1238, + WindowUnFullscreen: 1239, + WindowZOrderChanged: 1240, + WindowMinimise: 1241, + WindowUnMinimise: 1242, + WindowMaximise: 1243, + WindowUnMaximise: 1244, } } var IOS = newIOSEvents() type iosEvents struct { - ApplicationDidBecomeActive ApplicationEventType - ApplicationDidEnterBackground ApplicationEventType - ApplicationDidFinishLaunching ApplicationEventType - ApplicationDidReceiveMemoryWarning ApplicationEventType - ApplicationWillEnterForeground ApplicationEventType - ApplicationWillResignActive ApplicationEventType - ApplicationWillTerminate ApplicationEventType - WindowDidLoad WindowEventType - WindowWillAppear WindowEventType - WindowDidAppear WindowEventType - WindowWillDisappear WindowEventType - WindowDidDisappear WindowEventType - WindowSafeAreaInsetsChanged WindowEventType - WindowOrientationChanged WindowEventType - WindowTouchBegan WindowEventType - WindowTouchMoved WindowEventType - WindowTouchEnded WindowEventType - WindowTouchCancelled WindowEventType - WebViewDidStartNavigation WindowEventType - WebViewDidFinishNavigation WindowEventType - WebViewDidFailNavigation WindowEventType + ApplicationDidBecomeActive ApplicationEventType + ApplicationDidEnterBackground ApplicationEventType + ApplicationDidFinishLaunching ApplicationEventType + ApplicationDidReceiveMemoryWarning ApplicationEventType + ApplicationWillEnterForeground ApplicationEventType + ApplicationWillResignActive ApplicationEventType + ApplicationWillTerminate ApplicationEventType + WindowDidLoad WindowEventType + WindowWillAppear WindowEventType + WindowDidAppear WindowEventType + WindowWillDisappear WindowEventType + WindowDidDisappear WindowEventType + WindowSafeAreaInsetsChanged WindowEventType + WindowOrientationChanged WindowEventType + WindowTouchBegan WindowEventType + WindowTouchMoved WindowEventType + WindowTouchEnded WindowEventType + WindowTouchCancelled WindowEventType + WebViewDidStartNavigation WindowEventType + WebViewDidFinishNavigation WindowEventType + WebViewDidFailNavigation WindowEventType WebViewDecidePolicyForNavigationAction WindowEventType - BatteryChanged ApplicationEventType - NetworkChanged ApplicationEventType - ThemeChanged ApplicationEventType - ScreenLocked ApplicationEventType - ScreenUnlocked ApplicationEventType + BatteryChanged ApplicationEventType + NetworkChanged ApplicationEventType + ThemeChanged ApplicationEventType + ScreenLocked ApplicationEventType + ScreenUnlocked ApplicationEventType } func newIOSEvents() iosEvents { return iosEvents{ - ApplicationDidBecomeActive: 1245, - ApplicationDidEnterBackground: 1246, - ApplicationDidFinishLaunching: 1247, - ApplicationDidReceiveMemoryWarning: 1248, - ApplicationWillEnterForeground: 1249, - ApplicationWillResignActive: 1250, - ApplicationWillTerminate: 1251, - WindowDidLoad: 1252, - WindowWillAppear: 1253, - WindowDidAppear: 1254, - WindowWillDisappear: 1255, - WindowDidDisappear: 1256, - WindowSafeAreaInsetsChanged: 1257, - WindowOrientationChanged: 1258, - WindowTouchBegan: 1259, - WindowTouchMoved: 1260, - WindowTouchEnded: 1261, - WindowTouchCancelled: 1262, - WebViewDidStartNavigation: 1263, - WebViewDidFinishNavigation: 1264, - WebViewDidFailNavigation: 1265, + ApplicationDidBecomeActive: 1245, + ApplicationDidEnterBackground: 1246, + ApplicationDidFinishLaunching: 1247, + ApplicationDidReceiveMemoryWarning: 1248, + ApplicationWillEnterForeground: 1249, + ApplicationWillResignActive: 1250, + ApplicationWillTerminate: 1251, + WindowDidLoad: 1252, + WindowWillAppear: 1253, + WindowDidAppear: 1254, + WindowWillDisappear: 1255, + WindowDidDisappear: 1256, + WindowSafeAreaInsetsChanged: 1257, + WindowOrientationChanged: 1258, + WindowTouchBegan: 1259, + WindowTouchMoved: 1260, + WindowTouchEnded: 1261, + WindowTouchCancelled: 1262, + WebViewDidStartNavigation: 1263, + WebViewDidFinishNavigation: 1264, + WebViewDidFailNavigation: 1265, WebViewDecidePolicyForNavigationAction: 1266, - BatteryChanged: 1277, - NetworkChanged: 1278, - ThemeChanged: 1279, - ScreenLocked: 1280, - ScreenUnlocked: 1281, + BatteryChanged: 1277, + NetworkChanged: 1278, + ThemeChanged: 1279, + ScreenLocked: 1280, + ScreenUnlocked: 1281, } } var Android = newAndroidEvents() type androidEvents struct { - ActivityCreated ApplicationEventType - ActivityStarted ApplicationEventType - ActivityResumed ApplicationEventType - ActivityPaused ApplicationEventType - ActivityStopped ApplicationEventType - ActivityDestroyed ApplicationEventType + ActivityCreated ApplicationEventType + ActivityStarted ApplicationEventType + ActivityResumed ApplicationEventType + ActivityPaused ApplicationEventType + ActivityStopped ApplicationEventType + ActivityDestroyed ApplicationEventType ApplicationLowMemory ApplicationEventType - WebViewPageStarted WindowEventType - WebViewPageFinished WindowEventType - BatteryChanged ApplicationEventType - NetworkChanged ApplicationEventType - ThemeChanged ApplicationEventType - ScreenLocked ApplicationEventType - ScreenUnlocked ApplicationEventType + WebViewPageStarted WindowEventType + WebViewPageFinished WindowEventType + BatteryChanged ApplicationEventType + NetworkChanged ApplicationEventType + ThemeChanged ApplicationEventType + ScreenLocked ApplicationEventType + ScreenUnlocked ApplicationEventType } func newAndroidEvents() androidEvents { return androidEvents{ - ActivityCreated: 1268, - ActivityStarted: 1269, - ActivityResumed: 1270, - ActivityPaused: 1271, - ActivityStopped: 1272, - ActivityDestroyed: 1273, + ActivityCreated: 1268, + ActivityStarted: 1269, + ActivityResumed: 1270, + ActivityPaused: 1271, + ActivityStopped: 1272, + ActivityDestroyed: 1273, ApplicationLowMemory: 1274, - WebViewPageStarted: 1275, - WebViewPageFinished: 1276, - BatteryChanged: 1282, - NetworkChanged: 1283, - ThemeChanged: 1284, - ScreenLocked: 1285, - ScreenUnlocked: 1286, + WebViewPageStarted: 1275, + WebViewPageFinished: 1276, + BatteryChanged: 1282, + NetworkChanged: 1283, + ThemeChanged: 1284, + ScreenLocked: 1285, + ScreenUnlocked: 1286, } } @@ -873,4 +873,3 @@ var eventToJS = map[uint]string{ 1290: "common:ScreenUnlocked", 1291: "common:LowMemory", } - From 78254efed1532614ea4ed4ac52f97fa8183fb17d Mon Sep 17 00:00:00 2001 From: mbaklor <78748463+mbaklor@users.noreply.github.com> Date: Mon, 6 Jul 2026 09:12:39 +0300 Subject: [PATCH 06/29] fix(v3): return error to frontend as dedicated Error objects instead of stringified JSON (#5690) * fix(bindings): returned error parsed as text instead of json * chore: updated UNRELEASED_CHANGELOG with PR number * fix(runtime): use error types as supplied by the backend for calls * fix(runtime): unbreak the public Call API * docs(v3): document typed binding call errors and structured error data Expand the Error Handling section of the method bindings docs to cover the new behaviour from #5690: failed calls reject with TypeError, RuntimeError or Error based on the error kind reported by the backend, with the Go error message on .message and the serialised Go error on .cause. Add a section on returning custom error types and customising serialisation with ServiceOptions.MarshalError. * chore(runtime): regenerate bundled runtime assets The bundled runtime is verified against a clean rebuild of the runtime source by CI, so the calls/runtime changes in this PR need the regenerated bundles committed alongside them. Built with npm ci + task runtime:build:assets per .github/workflows/verify-runtime-assets.yml. --------- Co-authored-by: taliesin-ai --- .../docs/features/bindings/methods.mdx | 103 +++++++++++++++++- v3/UNRELEASED_CHANGELOG.md | 1 + .../bundledassets/runtime.debug.js | 44 ++++++-- .../assetserver/bundledassets/runtime.js | 2 +- .../desktop/@wailsio/runtime/src/calls.ts | 19 +--- .../desktop/@wailsio/runtime/src/runtime.ts | 37 ++++++- 6 files changed, 171 insertions(+), 35 deletions(-) diff --git a/docs/src/content/docs/features/bindings/methods.mdx b/docs/src/content/docs/features/bindings/methods.mdx index 986f9847dfe..1997a6ae78b 100644 --- a/docs/src/content/docs/features/bindings/methods.mdx +++ b/docs/src/content/docs/features/bindings/methods.mdx @@ -400,6 +400,8 @@ func (d *DatabaseService) GetUser(id int) (*User, error) { ### JavaScript Side +When a bound method fails, the returned promise rejects with a JavaScript `Error` object: + ```javascript import { GetUser } from './bindings/changeme/databaseservice' @@ -407,15 +409,104 @@ try { const user = await GetUser(123) console.log("User:", user) } catch (error) { - console.error("Error:", error) - // Error: "user 123 not found" + console.error(error.message) + // "user 123 not found" +} +``` + +The runtime throws a different error type depending on what went wrong: + +| Error type | Thrown when | +|----------------|------------------------------------------------------------------------------------------------| +| `TypeError` | The call has the wrong number of arguments, or an argument cannot be converted to the Go type | +| `RuntimeError` | The method returned an error, or panicked while running | +| `Error` | Any other failure, for example a call to a method that does not exist | + +Every error provides: +- `name`: the error type from the table above +- `message`: the message of the Go error +- `cause`: the Go error serialised as JSON, where available. If the method returned multiple errors, `cause` is an array with one entry per error. + +The `RuntimeError` class is exported by the `@wailsio/runtime` package, so you can distinguish errors returned by your Go code from other failures: + +```javascript +import { Call } from '@wailsio/runtime' +import { GetUser } from './bindings/changeme/databaseservice' + +try { + const user = await GetUser(123) +} catch (error) { + if (error instanceof Call.RuntimeError) { + // GetUser returned an error + } else { + // The call itself failed + } +} +``` + +:::note +In earlier versions of the runtime, every failed call rejected with a plain `Error` whose message contained the raw JSON of the underlying error. +::: + +### Structured Error Data + +Returning a custom error type from Go makes its JSON form available on the `cause` property of the thrown error: + +```go +type ValidationError struct { + Field string `json:"field"` + Reason string `json:"reason"` +} + +func (e *ValidationError) Error() string { + return fmt.Sprintf("%s: %s", e.Field, e.Reason) +} + +func (s *UserService) UpdateEmail(id int, email string) error { + if !strings.Contains(email, "@") { + return &ValidationError{Field: "email", Reason: "invalid email address"} + } + // ... + return nil +} +``` + +```javascript +import { UpdateEmail } from './bindings/changeme/userservice' + +try { + await UpdateEmail(1, "not-an-email") +} catch (error) { + console.log(error.message) // "email: invalid email address" + console.log(error.cause) // { field: "email", reason: "invalid email address" } } ``` -**Error types:** -- Go `error` → JavaScript exception -- Error message preserved -- Stack trace available +Errors are serialised with the standard `encoding/json` package, so only exported fields are included. Errors created with `errors.New` or `fmt.Errorf` have no exported fields and serialise as an empty object. + +For full control over how errors are serialised, provide a `MarshalError` function in the service options: + +```go +app := application.New(application.Options{ + Services: []application.Service{ + application.NewServiceWithOptions(&UserService{}, application.ServiceOptions{ + MarshalError: func(err error) []byte { + var validationErr *ValidationError + if errors.As(err, &validationErr) { + data, _ := json.Marshal(map[string]string{ + "type": "validation", + "field": validationErr.Field, + }) + return data + } + return nil // fall back to the default serialisation + }, + }), + }, +}) +``` + +`MarshalError` must return valid JSON, or `nil` to fall back to the default serialisation. ## Performance diff --git a/v3/UNRELEASED_CHANGELOG.md b/v3/UNRELEASED_CHANGELOG.md index 9dbbd19eb8e..0fb0852fdbc 100644 --- a/v3/UNRELEASED_CHANGELOG.md +++ b/v3/UNRELEASED_CHANGELOG.md @@ -23,6 +23,7 @@ After processing, the content will be moved to the main changelog and this file ## Fixed +- Fix frontend bindings error always parses as text by @mbaklor in #5690 - Fix Windows build failure when using the `server` build tag, caused by Windows GUI files missing the `!server` build constraint that the macOS and Linux equivalents already have (#5680) ## Deprecated diff --git a/v3/internal/assetserver/bundledassets/runtime.debug.js b/v3/internal/assetserver/bundledassets/runtime.debug.js index 95588245fd7..0c473d866e8 100644 --- a/v3/internal/assetserver/bundledassets/runtime.debug.js +++ b/v3/internal/assetserver/bundledassets/runtime.debug.js @@ -82,6 +82,17 @@ function runtimeURL() { return window.location.origin + "/wails/runtime"; } var CHUNK_THRESHOLD = 512 * 1024; +var RuntimeError = class extends Error { + /** + * Constructs a new RuntimeError instance. + * @param message - The error message. + * @param options - Options to be forwarded to the Error constructor. + */ + constructor(message, options) { + super(message, options); + this.name = "RuntimeError"; + } +}; var objectNames = Object.freeze({ Call: 0, Clipboard: 1, @@ -138,6 +149,26 @@ async function runtimeCallWithID(objectID, method, windowName, args) { response = await fetch(url, { method: "POST", headers, body: bodyStr }); } if (!response.ok) { + const ct = response.headers.get("Content-Type"); + if (ct == null ? void 0 : ct.includes("application/json")) { + const json = await response.json(); + let err; + switch (json.kind) { + case "ReferenceError": + err = new ReferenceError(json.message); + break; + case "TypeError": + err = new TypeError(json.message); + break; + case "RuntimeError": + err = new RuntimeError(json.message); + break; + default: + err = new Error(json.message); + } + err.cause = json.cause; + throw err; + } throw new Error(await response.text()); } if (((_b = (_a3 = response.headers.get("Content-Type")) == null ? void 0 : _a3.indexOf("application/json")) != null ? _b : -1) !== -1) { @@ -2793,17 +2824,6 @@ var cancelCall = newRuntimeCaller(objectNames.CancelCall); var callResponses = /* @__PURE__ */ new Map(); var CallBinding = 0; var CancelMethod = 0; -var RuntimeError = class extends Error { - /** - * Constructs a new RuntimeError instance. - * @param message - The error message. - * @param options - Options to be forwarded to the Error constructor. - */ - constructor(message, options) { - super(message, options); - this.name = "RuntimeError"; - } -}; function generateID() { let result; do { @@ -3061,4 +3081,4 @@ export { objectNames, setTransport }; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2luZGV4LnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy93bWwudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2Jyb3dzZXIudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL25hbm9pZC50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvZW52aXJvbm1lbnQudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3J1bnRpbWUudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2RpYWxvZ3MudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2V2ZW50cy50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvbGlzdGVuZXIudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2NyZWF0ZS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvZXZlbnRfdHlwZXMudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3V0aWxzLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy93aW5kb3cudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL2NvbXBpbGVkL21haW4uanMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3N5c3RlbS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY29udGV4dG1lbnUudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2ZsYWdzLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9kcmFnLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9hcHBsaWNhdGlvbi50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY2FsbHMudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2NhbGxhYmxlLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9jYW5jZWxsYWJsZS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY2xpcGJvYXJkLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9zY3JlZW5zLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9pb3MudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2FuZHJvaWQudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3VwZGF0ZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG4vLyBTZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xufVxuXG5pbXBvcnQgXCIuL2NvbnRleHRtZW51LmpzXCI7XG5pbXBvcnQgXCIuL2RyYWcuanNcIjtcblxuLy8gUmUtZXhwb3J0IHB1YmxpYyBBUElcbmltcG9ydCAqIGFzIEFwcGxpY2F0aW9uIGZyb20gXCIuL2FwcGxpY2F0aW9uLmpzXCI7XG5pbXBvcnQgKiBhcyBCcm93c2VyIGZyb20gXCIuL2Jyb3dzZXIuanNcIjtcbmltcG9ydCAqIGFzIENhbGwgZnJvbSBcIi4vY2FsbHMuanNcIjtcbmltcG9ydCAqIGFzIENsaXBib2FyZCBmcm9tIFwiLi9jbGlwYm9hcmQuanNcIjtcbmltcG9ydCAqIGFzIENyZWF0ZSBmcm9tIFwiLi9jcmVhdGUuanNcIjtcbmltcG9ydCAqIGFzIERpYWxvZ3MgZnJvbSBcIi4vZGlhbG9ncy5qc1wiO1xuaW1wb3J0ICogYXMgRXZlbnRzIGZyb20gXCIuL2V2ZW50cy5qc1wiO1xuaW1wb3J0ICogYXMgRmxhZ3MgZnJvbSBcIi4vZmxhZ3MuanNcIjtcbmltcG9ydCAqIGFzIFNjcmVlbnMgZnJvbSBcIi4vc2NyZWVucy5qc1wiO1xuaW1wb3J0ICogYXMgU3lzdGVtIGZyb20gXCIuL3N5c3RlbS5qc1wiO1xuaW1wb3J0ICogYXMgSU9TIGZyb20gXCIuL2lvcy5qc1wiO1xuaW1wb3J0ICogYXMgQW5kcm9pZCBmcm9tIFwiLi9hbmRyb2lkLmpzXCI7XG5pbXBvcnQgKiBhcyBVcGRhdGVyIGZyb20gXCIuL3VwZGF0ZXIuanNcIjtcbmltcG9ydCBXaW5kb3csIHsgaGFuZGxlRHJhZ0VudGVyLCBoYW5kbGVEcmFnTGVhdmUsIGhhbmRsZURyYWdPdmVyIH0gZnJvbSBcIi4vd2luZG93LmpzXCI7XG5pbXBvcnQgKiBhcyBXTUwgZnJvbSBcIi4vd21sLmpzXCI7XG5cbmV4cG9ydCB7XG4gICAgQXBwbGljYXRpb24sXG4gICAgQnJvd3NlcixcbiAgICBDYWxsLFxuICAgIENsaXBib2FyZCxcbiAgICBEaWFsb2dzLFxuICAgIEV2ZW50cyxcbiAgICBGbGFncyxcbiAgICBTY3JlZW5zLFxuICAgIFN5c3RlbSxcbiAgICBJT1MsXG4gICAgQW5kcm9pZCxcbiAgICBVcGRhdGVyLFxuICAgIFdpbmRvdyxcbiAgICBXTUxcbn07XG5cbi8qKlxuICogQW4gaW50ZXJuYWwgdXRpbGl0eSBjb25zdW1lZCBieSB0aGUgYmluZGluZyBnZW5lcmF0b3IuXG4gKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgeyBDcmVhdGUgfTtcblxuZXhwb3J0ICogZnJvbSBcIi4vY2FuY2VsbGFibGUuanNcIjtcblxuLy8gRXhwb3J0IHRyYW5zcG9ydCBpbnRlcmZhY2VzIGFuZCB1dGlsaXRpZXNcbmV4cG9ydCB7XG4gICAgc2V0VHJhbnNwb3J0LFxuICAgIGdldFRyYW5zcG9ydCxcbiAgICB0eXBlIFJ1bnRpbWVUcmFuc3BvcnQsXG4gICAgb2JqZWN0TmFtZXMsXG4gICAgY2xpZW50SWQsXG59IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcblxuaW1wb3J0IHsgY2xpZW50SWQgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbi8vIE5vdGlmeSBiYWNrZW5kXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5pbnZva2UgPSBTeXN0ZW0uaW52b2tlO1xuICAgIHdpbmRvdy5fd2FpbHMuY2xpZW50SWQgPSBjbGllbnRJZDtcbn1cblxuLy8gUmVnaXN0ZXIgcGxhdGZvcm0gaGFuZGxlcnMgKGludGVybmFsIEFQSSlcbi8vIE5vdGU6IFdpbmRvdyBpcyB0aGUgdGhpc1dpbmRvdyBpbnN0YW5jZSAoZGVmYXVsdCBleHBvcnQgZnJvbSB3aW5kb3cudHMpXG4vLyBCaW5kaW5nIGVuc3VyZXMgJ3RoaXMnIGNvcnJlY3RseSByZWZlcnMgdG8gdGhlIGN1cnJlbnQgd2luZG93IGluc3RhbmNlXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVQbGF0Zm9ybUZpbGVEcm9wID0gV2luZG93LkhhbmRsZVBsYXRmb3JtRmlsZURyb3AuYmluZChXaW5kb3cpO1xufVxuXG4vLyBMaW51eC1zcGVjaWZpYyBkcmFnIGhhbmRsZXJzIChHVEsgaW50ZXJjZXB0cyBET00gZHJhZyBldmVudHMpXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnRW50ZXIgPSBoYW5kbGVEcmFnRW50ZXI7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnTGVhdmUgPSBoYW5kbGVEcmFnTGVhdmU7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnT3ZlciA9IGhhbmRsZURyYWdPdmVyO1xufVxuXG5pZiAoaGFzRE9NKSB7XG4gICAgU3lzdGVtLmludm9rZShcIndhaWxzOnJ1bnRpbWU6cmVhZHlcIik7XG59XG5cbi8qKlxuICogTG9hZHMgYSBzY3JpcHQgZnJvbSB0aGUgZ2l2ZW4gVVJMIGlmIGl0IGV4aXN0cy5cbiAqIFVzZXMgSEVBRCByZXF1ZXN0IHRvIGNoZWNrIGV4aXN0ZW5jZSwgdGhlbiBpbmplY3RzIGEgc2NyaXB0IHRhZy5cbiAqIFNpbGVudGx5IGlnbm9yZXMgaWYgdGhlIHNjcmlwdCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZE9wdGlvbmFsU2NyaXB0KHVybDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZldGNoKHVybCwgeyBtZXRob2Q6ICdIRUFEJyB9KVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICAvLyBWZXJpZnkgdGhlIHJlc3BvbnNlIGlzIGFjdHVhbGx5IEphdmFTY3JpcHQgYW5kIG5vdCBhbiBIVE1MIGZhbGxiYWNrXG4gICAgICAgICAgICAgICAgLy8gKGUuZy4gVml0ZSBkZXYgc2VydmVyIHJldHVybnMgaW5kZXguaHRtbCBmb3IgdW5rbm93biByb3V0ZXMpXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSAocmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZS5pbmNsdWRlcygnamF2YXNjcmlwdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHQuc3JjID0gdXJsO1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4ge30pOyAvLyBTaWxlbnRseSBpZ25vcmUgLSBzY3JpcHQgaXMgb3B0aW9uYWxcbn1cblxuLy8gTG9hZCBjdXN0b20uanMgaWYgYXZhaWxhYmxlICh1c2VkIGJ5IHNlcnZlciBtb2RlIGZvciBXZWJTb2NrZXQgZXZlbnRzLCBldGMuKVxuaWYgKGhhc0RPTSkge1xuICAgIGxvYWRPcHRpb25hbFNjcmlwdCgnL3dhaWxzL2N1c3RvbS5qcycpO1xufVxuIiwgIi8qXG4gXyAgICAgX18gICAgIF8gX19cbnwgfCAgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBPcGVuVVJMIH0gZnJvbSBcIi4vYnJvd3Nlci5qc1wiO1xuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tIFwiLi9kaWFsb2dzLmpzXCI7XG5pbXBvcnQgeyBFbWl0IH0gZnJvbSBcIi4vZXZlbnRzLmpzXCI7XG5pbXBvcnQgeyBjYW5BYm9ydExpc3RlbmVycywgd2hlblJlYWR5IH0gZnJvbSBcIi4vdXRpbHMuanNcIjtcbmltcG9ydCBXaW5kb3cgZnJvbSBcIi4vd2luZG93LmpzXCI7XG5cbi8qKlxuICogU2VuZHMgYW4gZXZlbnQgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBhbmQgb3B0aW9uYWwgZGF0YS5cbiAqXG4gKiBAcGFyYW0gZXZlbnROYW1lIC0gLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQgdG8gc2VuZC5cbiAqIEBwYXJhbSBbZGF0YT1udWxsXSAtIC0gT3B0aW9uYWwgZGF0YSB0byBzZW5kIGFsb25nIHdpdGggdGhlIGV2ZW50LlxuICovXG5mdW5jdGlvbiBzZW5kRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIGRhdGE6IGFueSA9IG51bGwpOiB2b2lkIHtcbiAgICBFbWl0KGV2ZW50TmFtZSwgZGF0YSk7XG59XG5cbi8qKlxuICogQ2FsbHMgYSBtZXRob2Qgb24gYSBzcGVjaWZpZWQgd2luZG93LlxuICpcbiAqIEBwYXJhbSB3aW5kb3dOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHdpbmRvdyB0byBjYWxsIHRoZSBtZXRob2Qgb24uXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QgdG8gY2FsbC5cbiAqL1xuZnVuY3Rpb24gY2FsbFdpbmRvd01ldGhvZCh3aW5kb3dOYW1lOiBzdHJpbmcsIG1ldGhvZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRhcmdldFdpbmRvdyA9IFdpbmRvdy5HZXQod2luZG93TmFtZSk7XG4gICAgY29uc3QgbWV0aG9kID0gKHRhcmdldFdpbmRvdyBhcyBhbnkpW21ldGhvZE5hbWVdO1xuXG4gICAgaWYgKHR5cGVvZiBtZXRob2QgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBXaW5kb3cgbWV0aG9kICcke21ldGhvZE5hbWV9JyBub3QgZm91bmRgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIG1ldGhvZC5jYWxsKHRhcmdldFdpbmRvdyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBjYWxsaW5nIHdpbmRvdyBtZXRob2QgJyR7bWV0aG9kTmFtZX0nOiBgLCBlKTtcbiAgICB9XG59XG5cbi8qKlxuICogUmVzcG9uZHMgdG8gYSB0cmlnZ2VyaW5nIGV2ZW50IGJ5IHJ1bm5pbmcgYXBwcm9wcmlhdGUgV01MIGFjdGlvbnMgZm9yIHRoZSBjdXJyZW50IHRhcmdldC5cbiAqL1xuZnVuY3Rpb24gb25XTUxUcmlnZ2VyZWQoZXY6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IGV2LmN1cnJlbnRUYXJnZXQgYXMgRWxlbWVudDtcblxuICAgIGZ1bmN0aW9uIHJ1bkVmZmVjdChjaG9pY2UgPSBcIlllc1wiKSB7XG4gICAgICAgIGlmIChjaG9pY2UgIT09IFwiWWVzXCIpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZXZlbnRUeXBlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3dtbC1ldmVudCcpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXdtbC1ldmVudCcpO1xuICAgICAgICBjb25zdCB0YXJnZXRXaW5kb3cgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLXRhcmdldC13aW5kb3cnKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtdGFyZ2V0LXdpbmRvdycpIHx8IFwiXCI7XG4gICAgICAgIGNvbnN0IHdpbmRvd01ldGhvZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd3bWwtd2luZG93JykgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtd21sLXdpbmRvdycpO1xuICAgICAgICBjb25zdCB1cmwgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLW9wZW51cmwnKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtb3BlbnVybCcpO1xuXG4gICAgICAgIGlmIChldmVudFR5cGUgIT09IG51bGwpXG4gICAgICAgICAgICBzZW5kRXZlbnQoZXZlbnRUeXBlKTtcbiAgICAgICAgaWYgKHdpbmRvd01ldGhvZCAhPT0gbnVsbClcbiAgICAgICAgICAgIGNhbGxXaW5kb3dNZXRob2QodGFyZ2V0V2luZG93LCB3aW5kb3dNZXRob2QpO1xuICAgICAgICBpZiAodXJsICE9PSBudWxsKVxuICAgICAgICAgICAgdm9pZCBPcGVuVVJMKHVybCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlybSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd3bWwtY29uZmlybScpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXdtbC1jb25maXJtJyk7XG5cbiAgICBpZiAoY29uZmlybSkge1xuICAgICAgICBRdWVzdGlvbih7XG4gICAgICAgICAgICBUaXRsZTogXCJDb25maXJtXCIsXG4gICAgICAgICAgICBNZXNzYWdlOiBjb25maXJtLFxuICAgICAgICAgICAgRGV0YWNoZWQ6IGZhbHNlLFxuICAgICAgICAgICAgQnV0dG9uczogW1xuICAgICAgICAgICAgICAgIHsgTGFiZWw6IFwiWWVzXCIgfSxcbiAgICAgICAgICAgICAgICB7IExhYmVsOiBcIk5vXCIsIElzRGVmYXVsdDogdHJ1ZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0pLnRoZW4ocnVuRWZmZWN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBydW5FZmZlY3QoKTtcbiAgICB9XG59XG5cbi8vIFByaXZhdGUgZmllbGQgbmFtZXMuXG5jb25zdCBjb250cm9sbGVyU3ltID0gU3ltYm9sKFwiY29udHJvbGxlclwiKTtcbmNvbnN0IHRyaWdnZXJNYXBTeW0gPSBTeW1ib2woXCJ0cmlnZ2VyTWFwXCIpO1xuY29uc3QgZWxlbWVudENvdW50U3ltID0gU3ltYm9sKFwiZWxlbWVudENvdW50XCIpO1xuXG4vKipcbiAqIEFib3J0Q29udHJvbGxlclJlZ2lzdHJ5IGRvZXMgbm90IGFjdHVhbGx5IHJlbWVtYmVyIGFjdGl2ZSBldmVudCBsaXN0ZW5lcnM6IGluc3RlYWRcbiAqIGl0IHRpZXMgdGhlbSB0byBhbiBBYm9ydFNpZ25hbCBhbmQgdXNlcyBhbiBBYm9ydENvbnRyb2xsZXIgdG8gcmVtb3ZlIHRoZW0gYWxsIGF0IG9uY2UuXG4gKi9cbmNsYXNzIEFib3J0Q29udHJvbGxlclJlZ2lzdHJ5IHtcbiAgICAvLyBQcml2YXRlIGZpZWxkcy5cbiAgICBbY29udHJvbGxlclN5bV06IEFib3J0Q29udHJvbGxlcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzW2NvbnRyb2xsZXJTeW1dID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gb3B0aW9ucyBvYmplY3QgZm9yIGFkZEV2ZW50TGlzdGVuZXIgdGhhdCB0aWVzIHRoZSBsaXN0ZW5lclxuICAgICAqIHRvIHRoZSBBYm9ydFNpZ25hbCBmcm9tIHRoZSBjdXJyZW50IEFib3J0Q29udHJvbGxlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbGVtZW50IC0gQW4gSFRNTCBlbGVtZW50XG4gICAgICogQHBhcmFtIHRyaWdnZXJzIC0gVGhlIGxpc3Qgb2YgYWN0aXZlIFdNTCB0cmlnZ2VyIGV2ZW50cyBmb3IgdGhlIHNwZWNpZmllZCBlbGVtZW50c1xuICAgICAqL1xuICAgIHNldChlbGVtZW50OiBFbGVtZW50LCB0cmlnZ2Vyczogc3RyaW5nW10pOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB7IHNpZ25hbDogdGhpc1tjb250cm9sbGVyU3ltXS5zaWduYWwgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCByZWdpc3RlcmVkIGV2ZW50IGxpc3RlbmVycyBhbmQgcmVzZXRzIHRoZSByZWdpc3RyeS5cbiAgICAgKi9cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpc1tjb250cm9sbGVyU3ltXS5hYm9ydCgpO1xuICAgICAgICB0aGlzW2NvbnRyb2xsZXJTeW1dID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBXZWFrTWFwUmVnaXN0cnkgbWFwcyBhY3RpdmUgdHJpZ2dlciBldmVudHMgdG8gZWFjaCBET00gZWxlbWVudCB0aHJvdWdoIGEgV2Vha01hcC5cbiAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBtYXBwaW5nIHJlbWFpbnMgcHJpdmF0ZSB0byB0aGlzIG1vZHVsZSwgd2hpbGUgc3RpbGwgYWxsb3dpbmcgZ2FyYmFnZVxuICogY29sbGVjdGlvbiBvZiB0aGUgaW52b2x2ZWQgZWxlbWVudHMuXG4gKi9cbmNsYXNzIFdlYWtNYXBSZWdpc3RyeSB7XG4gICAgLyoqIFN0b3JlcyB0aGUgY3VycmVudCBlbGVtZW50LXRvLXRyaWdnZXIgbWFwcGluZy4gKi9cbiAgICBbdHJpZ2dlck1hcFN5bV06IFdlYWtNYXA8RWxlbWVudCwgc3RyaW5nW10+O1xuICAgIC8qKiBDb3VudHMgdGhlIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIGFjdGl2ZSBXTUwgdHJpZ2dlcnMuICovXG4gICAgW2VsZW1lbnRDb3VudFN5bV06IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzW3RyaWdnZXJNYXBTeW1dID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgICAgdGhpc1tlbGVtZW50Q291bnRTeW1dID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGFjdGl2ZSB0cmlnZ2VycyBmb3IgdGhlIHNwZWNpZmllZCBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIGVsZW1lbnQgLSBBbiBIVE1MIGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gdHJpZ2dlcnMgLSBUaGUgbGlzdCBvZiBhY3RpdmUgV01MIHRyaWdnZXIgZXZlbnRzIGZvciB0aGUgc3BlY2lmaWVkIGVsZW1lbnRcbiAgICAgKi9cbiAgICBzZXQoZWxlbWVudDogRWxlbWVudCwgdHJpZ2dlcnM6IHN0cmluZ1tdKTogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMge1xuICAgICAgICBpZiAoIXRoaXNbdHJpZ2dlck1hcFN5bV0uaGFzKGVsZW1lbnQpKSB7IHRoaXNbZWxlbWVudENvdW50U3ltXSsrOyB9XG4gICAgICAgIHRoaXNbdHJpZ2dlck1hcFN5bV0uc2V0KGVsZW1lbnQsIHRyaWdnZXJzKTtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIHJlZ2lzdGVyZWQgZXZlbnQgbGlzdGVuZXJzLlxuICAgICAqL1xuICAgIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpc1tlbGVtZW50Q291bnRTeW1dIDw9IDApXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgnKicpKSB7XG4gICAgICAgICAgICBpZiAodGhpc1tlbGVtZW50Q291bnRTeW1dIDw9IDApXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJzID0gdGhpc1t0cmlnZ2VyTWFwU3ltXS5nZXQoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAodHJpZ2dlcnMgIT0gbnVsbCkgeyB0aGlzW2VsZW1lbnRDb3VudFN5bV0tLTsgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMgfHwgW10pXG4gICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHRyaWdnZXIsIG9uV01MVHJpZ2dlcmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXNbdHJpZ2dlck1hcFN5bV0gPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICB0aGlzW2VsZW1lbnRDb3VudFN5bV0gPSAwO1xuICAgIH1cbn1cblxuY29uc3QgdHJpZ2dlclJlZ2lzdHJ5ID0gY2FuQWJvcnRMaXN0ZW5lcnMoKSA/IG5ldyBBYm9ydENvbnRyb2xsZXJSZWdpc3RyeSgpIDogbmV3IFdlYWtNYXBSZWdpc3RyeSgpO1xuXG4vKipcbiAqIEFkZHMgZXZlbnQgbGlzdGVuZXJzIHRvIHRoZSBzcGVjaWZpZWQgZWxlbWVudC5cbiAqL1xuZnVuY3Rpb24gYWRkV01MTGlzdGVuZXJzKGVsZW1lbnQ6IEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0cmlnZ2VyUmVnRXhwID0gL1xcUysvZztcbiAgICBjb25zdCB0cmlnZ2VyQXR0ciA9IChlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLXRyaWdnZXInKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtdHJpZ2dlcicpIHx8IFwiY2xpY2tcIik7XG4gICAgY29uc3QgdHJpZ2dlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBsZXQgbWF0Y2g7XG4gICAgd2hpbGUgKChtYXRjaCA9IHRyaWdnZXJSZWdFeHAuZXhlYyh0cmlnZ2VyQXR0cikpICE9PSBudWxsKVxuICAgICAgICB0cmlnZ2Vycy5wdXNoKG1hdGNoWzBdKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB0cmlnZ2VyUmVnaXN0cnkuc2V0KGVsZW1lbnQsIHRyaWdnZXJzKTtcbiAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMpXG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0cmlnZ2VyLCBvbldNTFRyaWdnZXJlZCwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogU2NoZWR1bGVzIGFuIGF1dG9tYXRpYyByZWxvYWQgb2YgV01MIHRvIGJlIHBlcmZvcm1lZCBhcyBzb29uIGFzIHRoZSBkb2N1bWVudCBpcyBmdWxseSBsb2FkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbmFibGUoKTogdm9pZCB7XG4gICAgd2hlblJlYWR5KFJlbG9hZCk7XG59XG5cbi8qKlxuICogUmVsb2FkcyB0aGUgV01MIHBhZ2UgYnkgYWRkaW5nIG5lY2Vzc2FyeSBldmVudCBsaXN0ZW5lcnMgYW5kIGJyb3dzZXIgbGlzdGVuZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gUmVsb2FkKCk6IHZvaWQge1xuICAgIHRyaWdnZXJSZWdpc3RyeS5yZXNldCgpO1xuICAgIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgnW3dtbC1ldmVudF0sIFt3bWwtd2luZG93XSwgW3dtbC1vcGVudXJsXSwgW2RhdGEtd21sLWV2ZW50XSwgW2RhdGEtd21sLXdpbmRvd10sIFtkYXRhLXdtbC1vcGVudXJsXScpLmZvckVhY2goYWRkV01MTGlzdGVuZXJzKTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHsgbmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXMgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkJyb3dzZXIpO1xuXG5jb25zdCBCcm93c2VyT3BlblVSTCA9IDA7XG5cbi8qKlxuICogT3BlbiBhIGJyb3dzZXIgd2luZG93IHRvIHRoZSBnaXZlbiBVUkwuXG4gKlxuICogQHBhcmFtIHVybCAtIFRoZSBVUkwgdG8gb3BlblxuICovXG5leHBvcnQgZnVuY3Rpb24gT3BlblVSTCh1cmw6IHN0cmluZyB8IFVSTCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBjYWxsKEJyb3dzZXJPcGVuVVJMLCB7dXJsOiB1cmwudG9TdHJpbmcoKX0pO1xufVxuIiwgIi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2FpL25hbm9pZFxuXG4vLyBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbi8vXG4vLyBDb3B5cmlnaHQgMjAxNyBBbmRyZXkgU2l0bmlrIDxhbmRyZXlAc2l0bmlrLnJ1PlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2Zcbi8vIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW5cbi8vIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG9cbi8vIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mXG4vLyB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sXG4vLyAgICAgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gICAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuLy8gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyAgICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1Ncbi8vIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUlxuLy8gQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSXG4vLyBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTlxuLy8gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gVGhpcyBhbHBoYWJldCB1c2VzIGBBLVphLXowLTlfLWAgc3ltYm9scy5cbi8vIFRoZSBvcmRlciBvZiBjaGFyYWN0ZXJzIGlzIG9wdGltaXplZCBmb3IgYmV0dGVyIGd6aXAgYW5kIGJyb3RsaSBjb21wcmVzc2lvbi5cbi8vIFJlZmVyZW5jZXMgdG8gdGhlIHNhbWUgZmlsZSAod29ya3MgYm90aCBmb3IgZ3ppcCBhbmQgYnJvdGxpKTpcbi8vIGAndXNlYCwgYGFuZG9tYCwgYW5kIGByaWN0J2Bcbi8vIFJlZmVyZW5jZXMgdG8gdGhlIGJyb3RsaSBkZWZhdWx0IGRpY3Rpb25hcnk6XG4vLyBgLTI2VGAsIGAxOTgzYCwgYDQwcHhgLCBgNzVweGAsIGBidXNoYCwgYGphY2tgLCBgbWluZGAsIGB2ZXJ5YCwgYW5kIGB3b2xmYFxuY29uc3QgdXJsQWxwaGFiZXQgPVxuICAgICd1c2VhbmRvbS0yNlQxOTgzNDBQWDc1cHhKQUNLVkVSWU1JTkRCVVNIV09MRl9HUVpiZmdoamtscXZ3eXpyaWN0J1xuXG5leHBvcnQgZnVuY3Rpb24gbmFub2lkKHNpemU6IG51bWJlciA9IDIxKTogc3RyaW5nIHtcbiAgICBsZXQgaWQgPSAnJ1xuICAgIC8vIEEgY29tcGFjdCBhbHRlcm5hdGl2ZSBmb3IgYGZvciAodmFyIGkgPSAwOyBpIDwgc3RlcDsgaSsrKWAuXG4gICAgbGV0IGkgPSBzaXplIHwgMFxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgLy8gYHwgMGAgaXMgbW9yZSBjb21wYWN0IGFuZCBmYXN0ZXIgdGhhbiBgTWF0aC5mbG9vcigpYC5cbiAgICAgICAgaWQgKz0gdXJsQWxwaGFiZXRbKE1hdGgucmFuZG9tKCkgKiA2NCkgfCAwXVxuICAgIH1cbiAgICByZXR1cm4gaWRcbn1cbiIsICIvKlxuIF8gICAgIF9fICAgICBfIF9fXG58IHwgIC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLyoqXG4gKiBUcnVlIHdoZW4gcnVubmluZyBpbnNpZGUgYSBicm93c2VyL3dlYnZpZXcgd2l0aCBhIERPTSBhdmFpbGFibGUuXG4gKiBGYWxzZSB1bmRlciBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgKGUuZy4gYG5leHQgYnVpbGRgIHByZXJlbmRlcmluZyksXG4gKiB3aGVyZSBhcHBsaWNhdGlvbiBjb2RlIG1heSBpbXBvcnQgdGhlIHJ1bnRpbWUgbW9kdWxlIGV2ZW4gdGhvdWdoIG5vXG4gKiBXYWlscyBBUElzIGNhbiBhY3R1YWxseSBiZSB1c2VkICgjNDY3OSkuIE1vZHVsZXMgbXVzdCBub3QgdG91Y2hcbiAqIGB3aW5kb3dgL2Bkb2N1bWVudGAgYXQgaW1wb3J0IHRpbWUgZXhjZXB0IGJlaGluZCB0aGlzIGd1YXJkLlxuICovXG5leHBvcnQgY29uc3QgaGFzRE9NID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCI7XG4iLCAiLypcbiBfICAgICBfXyAgICAgXyBfX1xufCB8ICAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gXCIuL25hbm9pZC5qc1wiO1xuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuLy8gUmVzb2x2ZWQgbGF6aWx5OiB3aW5kb3cgZG9lcyBub3QgZXhpc3Qgd2hlbiB0aGUgbW9kdWxlIGlzIGltcG9ydGVkIGR1cmluZ1xuLy8gc2VydmVyLXNpZGUgcmVuZGVyaW5nICgjNDY3OSksIGFuZCBub3RoaW5nIGNhbiBjYWxsIHRoZSBydW50aW1lIHRoZXJlLlxuZnVuY3Rpb24gcnVudGltZVVSTCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgXCIvd2FpbHMvcnVudGltZVwiO1xufVxuXG4vLyBTdGF5IHVuZGVyIFdlYlZpZXcyJ3MgfjJNQiByZXF1ZXN0IGJvZHkgYnVmZmVyaW5nIGxpbWl0IGluIFdlYlJlc291cmNlUmVxdWVzdGVkLlxuY29uc3QgQ0hVTktfVEhSRVNIT0xEID0gNTEyICogMTAyNDtcblxuLy8gUmUtZXhwb3J0IG5hbm9pZCBmb3IgY3VzdG9tIHRyYW5zcG9ydCBpbXBsZW1lbnRhdGlvbnNcbmV4cG9ydCB7IG5hbm9pZCB9O1xuXG4vLyBPYmplY3QgTmFtZXNcbmV4cG9ydCBjb25zdCBvYmplY3ROYW1lcyA9IE9iamVjdC5mcmVlemUoe1xuICAgIENhbGw6IDAsXG4gICAgQ2xpcGJvYXJkOiAxLFxuICAgIEFwcGxpY2F0aW9uOiAyLFxuICAgIEV2ZW50czogMyxcbiAgICBDb250ZXh0TWVudTogNCxcbiAgICBEaWFsb2c6IDUsXG4gICAgV2luZG93OiA2LFxuICAgIFNjcmVlbnM6IDcsXG4gICAgU3lzdGVtOiA4LFxuICAgIEJyb3dzZXI6IDksXG4gICAgQ2FuY2VsQ2FsbDogMTAsXG4gICAgSU9TOiAxMSxcbiAgICBBbmRyb2lkOiAxMixcbn0pO1xuZXhwb3J0IGxldCBjbGllbnRJZCA9IG5hbm9pZCgpO1xuXG4vKipcbiAqIFJ1bnRpbWVUcmFuc3BvcnQgZGVmaW5lcyB0aGUgaW50ZXJmYWNlIGZvciBjdXN0b20gSVBDIHRyYW5zcG9ydCBpbXBsZW1lbnRhdGlvbnMuXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdG8gdXNlIFdlYlNvY2tldHMsIGN1c3RvbSBwcm90b2NvbHMsIG9yIGFueSBvdGhlclxuICogdHJhbnNwb3J0IG1lY2hhbmlzbSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IEhUVFAgZmV0Y2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVudGltZVRyYW5zcG9ydCB7XG4gICAgLyoqXG4gICAgICogU2VuZCBhIHJ1bnRpbWUgY2FsbCBhbmQgcmV0dXJuIHRoZSByZXNwb25zZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvYmplY3RJRCAtIFRoZSBXYWlscyBvYmplY3QgSUQgKDA9Q2FsbCwgMT1DbGlwYm9hcmQsIGV0Yy4pXG4gICAgICogQHBhcmFtIG1ldGhvZCAtIFRoZSBtZXRob2QgSUQgdG8gY2FsbFxuICAgICAqIEBwYXJhbSB3aW5kb3dOYW1lIC0gT3B0aW9uYWwgd2luZG93IG5hbWVcbiAgICAgKiBAcGFyYW0gYXJncyAtIEFyZ3VtZW50cyB0byBwYXNzICh3aWxsIGJlIEpTT04gc3RyaW5naWZpZWQgaWYgcHJlc2VudClcbiAgICAgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgcmVzcG9uc2UgZGF0YVxuICAgICAqL1xuICAgIGNhbGwob2JqZWN0SUQ6IG51bWJlciwgbWV0aG9kOiBudW1iZXIsIHdpbmRvd05hbWU6IHN0cmluZywgYXJnczogYW55KTogUHJvbWlzZTxhbnk+O1xufVxuXG4vKipcbiAqIEN1c3RvbSB0cmFuc3BvcnQgaW1wbGVtZW50YXRpb24gKGNhbiBiZSBzZXQgYnkgdXNlcilcbiAqL1xubGV0IGN1c3RvbVRyYW5zcG9ydDogUnVudGltZVRyYW5zcG9ydCB8IG51bGwgPSBudWxsO1xuXG4vKipcbiAqIFNldCBhIGN1c3RvbSB0cmFuc3BvcnQgZm9yIGFsbCBXYWlscyBydW50aW1lIGNhbGxzLlxuICogVGhpcyBhbGxvd3MgeW91IHRvIHJlcGxhY2UgdGhlIGRlZmF1bHQgSFRUUCBmZXRjaCB0cmFuc3BvcnQgd2l0aFxuICogV2ViU29ja2V0cywgY3VzdG9tIHByb3RvY29scywgb3IgYW55IG90aGVyIG1lY2hhbmlzbS5cbiAqXG4gKiBAcGFyYW0gdHJhbnNwb3J0IC0gWW91ciBjdXN0b20gdHJhbnNwb3J0IGltcGxlbWVudGF0aW9uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IHNldFRyYW5zcG9ydCB9IGZyb20gJy93YWlscy9ydW50aW1lLmpzJztcbiAqXG4gKiBjb25zdCB3c1RyYW5zcG9ydCA9IHtcbiAqICAgY2FsbDogYXN5bmMgKG9iamVjdElELCBtZXRob2QsIHdpbmRvd05hbWUsIGFyZ3MpID0+IHtcbiAqICAgICAvLyBZb3VyIFdlYlNvY2tldCBpbXBsZW1lbnRhdGlvblxuICogICB9XG4gKiB9O1xuICpcbiAqIHNldFRyYW5zcG9ydCh3c1RyYW5zcG9ydCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFRyYW5zcG9ydCh0cmFuc3BvcnQ6IFJ1bnRpbWVUcmFuc3BvcnQgfCBudWxsKTogdm9pZCB7XG4gICAgY3VzdG9tVHJhbnNwb3J0ID0gdHJhbnNwb3J0O1xufVxuXG4vKipcbiAqIEdldCB0aGUgY3VycmVudCB0cmFuc3BvcnQgKHVzZWZ1bCBmb3IgZXh0ZW5kaW5nL3dyYXBwaW5nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNwb3J0KCk6IFJ1bnRpbWVUcmFuc3BvcnQgfCBudWxsIHtcbiAgICByZXR1cm4gY3VzdG9tVHJhbnNwb3J0O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgcnVudGltZSBjYWxsZXIgd2l0aCBzcGVjaWZpZWQgSUQuXG4gKlxuICogQHBhcmFtIG9iamVjdCAtIFRoZSBvYmplY3QgdG8gaW52b2tlIHRoZSBtZXRob2Qgb24uXG4gKiBAcGFyYW0gd2luZG93TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3aW5kb3cuXG4gKiBAcmV0dXJuIFRoZSBuZXcgcnVudGltZSBjYWxsZXIgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdDogbnVtYmVyLCB3aW5kb3dOYW1lOiBzdHJpbmcgPSAnJykge1xuICAgIHJldHVybiBmdW5jdGlvbiAobWV0aG9kOiBudW1iZXIsIGFyZ3M6IGFueSA9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJ1bnRpbWVDYWxsV2l0aElEKG9iamVjdCwgbWV0aG9kLCB3aW5kb3dOYW1lLCBhcmdzKTtcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBydW50aW1lQ2FsbFdpdGhJRChvYmplY3RJRDogbnVtYmVyLCBtZXRob2Q6IG51bWJlciwgd2luZG93TmFtZTogc3RyaW5nLCBhcmdzOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIC8vIFVzZSBjdXN0b20gdHJhbnNwb3J0IGlmIGF2YWlsYWJsZVxuICAgIGlmIChjdXN0b21UcmFuc3BvcnQpIHtcbiAgICAgICAgcmV0dXJuIGN1c3RvbVRyYW5zcG9ydC5jYWxsKG9iamVjdElELCBtZXRob2QsIHdpbmRvd05hbWUsIGFyZ3MpO1xuICAgIH1cblxuICAgIC8vIERlZmF1bHQgSFRUUCBmZXRjaCB0cmFuc3BvcnRcbiAgICBsZXQgdXJsID0gbmV3IFVSTChydW50aW1lVVJMKCkpO1xuXG4gICAgbGV0IGJvZHk6IHsgb2JqZWN0OiBudW1iZXI7IG1ldGhvZDogbnVtYmVyLCBhcmdzPzogYW55IH0gPSB7XG4gICAgICBvYmplY3Q6IG9iamVjdElELFxuICAgICAgbWV0aG9kXG4gICAgfVxuICAgIGlmIChhcmdzICE9PSBudWxsICYmIGFyZ3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYm9keS5hcmdzID0gYXJncztcbiAgICB9XG5cbiAgICBsZXQgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgW1wieC13YWlscy1jbGllbnQtaWRcIl06IGNsaWVudElkLFxuICAgICAgICBbXCJDb250ZW50LVR5cGVcIl06IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgfVxuICAgIGlmICh3aW5kb3dOYW1lKSB7XG4gICAgICAgIGhlYWRlcnNbXCJ4LXdhaWxzLXdpbmRvdy1uYW1lXCJdID0gd2luZG93TmFtZTtcbiAgICB9XG5cbiAgICBjb25zdCBib2R5U3RyID0gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG4gICAgbGV0IHJlc3BvbnNlOiBSZXNwb25zZTtcbiAgICBpZiAoYm9keVN0ci5sZW5ndGggPiBDSFVOS19USFJFU0hPTEQpIHtcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCBzZW5kQ2h1bmtlZCh1cmwsIGhlYWRlcnMsIGJvZHlTdHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7IG1ldGhvZDogJ1BPU1QnLCBoZWFkZXJzLCBib2R5OiBib2R5U3RyIH0pO1xuICAgIH1cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihhd2FpdCByZXNwb25zZS50ZXh0KCkpO1xuICAgIH1cblxuICAgIGlmICgocmVzcG9uc2UuaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIik/LmluZGV4T2YoXCJhcHBsaWNhdGlvbi9qc29uXCIpID8/IC0xKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpO1xuICAgIH1cbn1cblxuLy8gc2VuZENodW5rZWQgc3BsaXRzIGEgbGFyZ2Ugc2VyaWFsaXNlZCByZXF1ZXN0IGJvZHkgaW50byBDSFVOS19USFJFU0hPTEQtc2l6ZWRcbi8vIGJ5dGUgY2h1bmtzIGFuZCBzZW5kcyB0aGVtIHNlcmlhbGx5LiAgRW5jb2RpbmcgdG8gVVRGLTggYnl0ZXMgYmVmb3JlIHNsaWNpbmdcbi8vIHByZXZlbnRzIGNvcnJ1cHRpb24gb2Ygbm9uLUJNUCBjaGFyYWN0ZXJzIChzdXJyb2dhdGUgcGFpcnMpIHRoYXQgd291bGQgb2NjdXJcbi8vIHdoZW4gc3BsaXR0aW5nIGF0IEphdmFTY3JpcHQgc3RyaW5nIGluZGljZXMuICBUaGUgR28gdHJhbnNwb3J0IGFzc2VtYmxlcyB0aGVcbi8vIHJhdyBieXRlcyBiZWZvcmUgcHJvY2Vzc2luZy4gIE9ubHkgdGhlIGZpbmFsIGNodW5rJ3MgcmVzcG9uc2UgY2FycmllcyB0aGUgUlBDIHJlc3VsdC5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRDaHVua2VkKHVybDogVVJMLCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBib2R5U3RyOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgY2h1bmtJZCA9IG5hbm9pZCgpO1xuICAgIGNvbnN0IGJvZHlCeXRlcyA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShib2R5U3RyKTtcbiAgICBjb25zdCB0b3RhbENodW5rcyA9IE1hdGguY2VpbChib2R5Qnl0ZXMubGVuZ3RoIC8gQ0hVTktfVEhSRVNIT0xEKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG90YWxDaHVua3MgLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2h1bmsgPSBib2R5Qnl0ZXMuc3ViYXJyYXkoaSAqIENIVU5LX1RIUkVTSE9MRCwgKGkgKyAxKSAqIENIVU5LX1RIUkVTSE9MRCk7XG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgJ3gtd2FpbHMtY2h1bmstaWQnOiBjaHVua0lkLFxuICAgICAgICAgICAgICAgICd4LXdhaWxzLWNodW5rLWluZGV4JzogU3RyaW5nKGkpLFxuICAgICAgICAgICAgICAgICd4LXdhaWxzLWNodW5rLXRvdGFsJzogU3RyaW5nKHRvdGFsQ2h1bmtzKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib2R5OiBjaHVuayxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcmVzcC5vaykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGF3YWl0IHJlc3AudGV4dCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICAgICAgICAneC13YWlscy1jaHVuay1pZCc6IGNodW5rSWQsXG4gICAgICAgICAgICAneC13YWlscy1jaHVuay1pbmRleCc6IFN0cmluZyh0b3RhbENodW5rcyAtIDEpLFxuICAgICAgICAgICAgJ3gtd2FpbHMtY2h1bmstdG90YWwnOiBTdHJpbmcodG90YWxDaHVua3MpLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBib2R5Qnl0ZXMuc3ViYXJyYXkoKHRvdGFsQ2h1bmtzIC0gMSkgKiBDSFVOS19USFJFU0hPTEQpLFxuICAgIH0pO1xufVxuXG4vKipcbiAqIEFuZHJvaWQgV2ViVmlldyBjYW5ub3QgZGVsaXZlciBmZXRjaCgpIFBPU1QgYm9kaWVzIHRvXG4gKiBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0LCBzbyB0aGUgZGVmYXVsdCBIVFRQIHRyYW5zcG9ydCBjYW5ub3QgcmVhY2ggR28uXG4gKiBXaGVuIHRoZSBBbmRyb2lkIEphdmFzY3JpcHRJbnRlcmZhY2UgYnJpZGdlICh3aW5kb3cud2FpbHMpIGlzIHByZXNlbnQsXG4gKiByb3V0ZSBydW50aW1lIGNhbGxzIHRocm91Z2ggaXQgaW5zdGVhZC4gUmVzcG9uc2VzIGFycml2ZSB2aWFcbiAqIHdpbmRvdy5fd2FpbHNBbmRyb2lkQ2FsbGJhY2ssIGludm9rZWQgYnkgdGhlIEphdmEgc2lkZS5cbiAqL1xuaW50ZXJmYWNlIEFuZHJvaWRKU0JyaWRnZSB7XG4gICAgaW52b2tlQXN5bmMoY2FsbGJhY2tJRDogc3RyaW5nLCBwYXlsb2FkOiBzdHJpbmcpOiB2b2lkO1xufVxuXG5jb25zdCBhbmRyb2lkQnJpZGdlOiBBbmRyb2lkSlNCcmlkZ2UgfCBudWxsID0gaGFzRE9NICYmXG4gICAgdHlwZW9mICh3aW5kb3cgYXMgYW55KS53YWlscz8uaW52b2tlQXN5bmMgPT09IFwiZnVuY3Rpb25cIiA/ICh3aW5kb3cgYXMgYW55KS53YWlscyA6IG51bGw7XG5cbmlmIChhbmRyb2lkQnJpZGdlKSB7XG4gICAgY29uc3QgcGVuZGluZyA9IG5ldyBNYXA8c3RyaW5nLCB7IHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkOyByZWplY3Q6IChyZWFzb246IGFueSkgPT4gdm9pZCB9PigpO1xuXG4gICAgKHdpbmRvdyBhcyBhbnkpLl93YWlsc0FuZHJvaWRDYWxsYmFjayA9IChpZDogc3RyaW5nLCByZXNwb25zZTogc3RyaW5nIHwgbnVsbCwgZXJyb3I6IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IHBlbmRpbmcuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFwcm9taXNlKSByZXR1cm47XG4gICAgICAgIHBlbmRpbmcuZGVsZXRlKGlkKTtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdChuZXcgRXJyb3IoZXJyb3IpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZW52ZWxvcGUgPSBKU09OLnBhcnNlKHJlc3BvbnNlID8/IFwie31cIik7XG4gICAgICAgICAgICBpZiAoIWVudmVsb3BlLm9rKSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGVudmVsb3BlLmVycm9yID8/IFwidW5rbm93biBydW50aW1lIGNhbGwgZXJyb3JcIikpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShcInRleHRcIiBpbiBlbnZlbG9wZSA/IGVudmVsb3BlLnRleHQgOiBlbnZlbG9wZS5kYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY3VzdG9tVHJhbnNwb3J0ID0ge1xuICAgICAgICBjYWxsKG9iamVjdElEOiBudW1iZXIsIG1ldGhvZDogbnVtYmVyLCB3aW5kb3dOYW1lOiBzdHJpbmcsIGFyZ3M6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gbmFub2lkKCk7XG4gICAgICAgICAgICAgICAgcGVuZGluZy5zZXQoaWQsIHsgcmVzb2x2ZSwgcmVqZWN0IH0pO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGFuZHJvaWRCcmlkZ2UuaW52b2tlQXN5bmMoaWQsIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogb2JqZWN0SUQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd05hbWU6IHdpbmRvd05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzOiBhcmdzID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWQsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGxlYWsgdGhlIHBlbmRpbmcgZW50cnkgaWYgZGlzcGF0Y2ggdGhyb3dzIHN5bmNocm9ub3VzbHlcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZy5kZWxldGUoaWQpO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHtuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lc30gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG4vLyBzZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xufVxuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5EaWFsb2cpO1xuXG4vLyBEZWZpbmUgY29uc3RhbnRzIGZyb20gdGhlIGBtZXRob2RzYCBvYmplY3QgaW4gVGl0bGUgQ2FzZVxuY29uc3QgRGlhbG9nSW5mbyA9IDA7XG5jb25zdCBEaWFsb2dXYXJuaW5nID0gMTtcbmNvbnN0IERpYWxvZ0Vycm9yID0gMjtcbmNvbnN0IERpYWxvZ1F1ZXN0aW9uID0gMztcbmNvbnN0IERpYWxvZ09wZW5GaWxlID0gNDtcbmNvbnN0IERpYWxvZ1NhdmVGaWxlID0gNTtcblxuZXhwb3J0IGludGVyZmFjZSBPcGVuRmlsZURpYWxvZ09wdGlvbnMge1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZGlyZWN0b3JpZXMgY2FuIGJlIGNob3Nlbi4gKi9cbiAgICBDYW5DaG9vc2VEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBmaWxlcyBjYW4gYmUgY2hvc2VuLiAqL1xuICAgIENhbkNob29zZUZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGRpcmVjdG9yaWVzIGNhbiBiZSBjcmVhdGVkLiAqL1xuICAgIENhbkNyZWF0ZURpcmVjdG9yaWVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGhpZGRlbiBmaWxlcyBzaG91bGQgYmUgc2hvd24uICovXG4gICAgU2hvd0hpZGRlbkZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGFsaWFzZXMgc2hvdWxkIGJlIHJlc29sdmVkLiAqL1xuICAgIFJlc29sdmVzQWxpYXNlcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBtdWx0aXBsZSBzZWxlY3Rpb24gaXMgYWxsb3dlZC4gKi9cbiAgICBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZXh0ZW5zaW9uIHNob3VsZCBiZSBoaWRkZW4uICovXG4gICAgSGlkZUV4dGVuc2lvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBoaWRkZW4gZXh0ZW5zaW9ucyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gICAgQ2FuU2VsZWN0SGlkZGVuRXh0ZW5zaW9uPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGZpbGUgcGFja2FnZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZGlyZWN0b3JpZXMuICovXG4gICAgVHJlYXRzRmlsZVBhY2thZ2VzQXNEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBvdGhlciBmaWxlIHR5cGVzIGFyZSBhbGxvd2VkLiAqL1xuICAgIEFsbG93c090aGVyRmlsZXR5cGVzPzogYm9vbGVhbjtcbiAgICAvKiogQXJyYXkgb2YgZmlsZSBmaWx0ZXJzLiAqL1xuICAgIEZpbHRlcnM/OiBGaWxlRmlsdGVyW107XG4gICAgLyoqIFRpdGxlIG9mIHRoZSBkaWFsb2cuICovXG4gICAgVGl0bGU/OiBzdHJpbmc7XG4gICAgLyoqIE1lc3NhZ2UgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIE1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgLyoqIFRleHQgdG8gZGlzcGxheSBvbiB0aGUgYnV0dG9uLiAqL1xuICAgIEJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gICAgLyoqIERpcmVjdG9yeSB0byBvcGVuIGluIHRoZSBkaWFsb2cuICovXG4gICAgRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGRpYWxvZyBzaG91bGQgYXBwZWFyIGRldGFjaGVkIGZyb20gdGhlIG1haW4gd2luZG93LiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYXZlRmlsZURpYWxvZ09wdGlvbnMge1xuICAgIC8qKiBEZWZhdWx0IGZpbGVuYW1lIHRvIHVzZSBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIEZpbGVuYW1lPzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZGlyZWN0b3JpZXMgY2FuIGJlIGNob3Nlbi4gKi9cbiAgICBDYW5DaG9vc2VEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBmaWxlcyBjYW4gYmUgY2hvc2VuLiAqL1xuICAgIENhbkNob29zZUZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGRpcmVjdG9yaWVzIGNhbiBiZSBjcmVhdGVkLiAqL1xuICAgIENhbkNyZWF0ZURpcmVjdG9yaWVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGhpZGRlbiBmaWxlcyBzaG91bGQgYmUgc2hvd24uICovXG4gICAgU2hvd0hpZGRlbkZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGFsaWFzZXMgc2hvdWxkIGJlIHJlc29sdmVkLiAqL1xuICAgIFJlc29sdmVzQWxpYXNlcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZXh0ZW5zaW9uIHNob3VsZCBiZSBoaWRkZW4uICovXG4gICAgSGlkZUV4dGVuc2lvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBoaWRkZW4gZXh0ZW5zaW9ucyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gICAgQ2FuU2VsZWN0SGlkZGVuRXh0ZW5zaW9uPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGZpbGUgcGFja2FnZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZGlyZWN0b3JpZXMuICovXG4gICAgVHJlYXRzRmlsZVBhY2thZ2VzQXNEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBvdGhlciBmaWxlIHR5cGVzIGFyZSBhbGxvd2VkLiAqL1xuICAgIEFsbG93c090aGVyRmlsZXR5cGVzPzogYm9vbGVhbjtcbiAgICAvKiogQXJyYXkgb2YgZmlsZSBmaWx0ZXJzLiAqL1xuICAgIEZpbHRlcnM/OiBGaWxlRmlsdGVyW107XG4gICAgLyoqIFRpdGxlIG9mIHRoZSBkaWFsb2cuICovXG4gICAgVGl0bGU/OiBzdHJpbmc7XG4gICAgLyoqIE1lc3NhZ2UgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIE1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgLyoqIFRleHQgdG8gZGlzcGxheSBvbiB0aGUgYnV0dG9uLiAqL1xuICAgIEJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gICAgLyoqIERpcmVjdG9yeSB0byBvcGVuIGluIHRoZSBkaWFsb2cuICovXG4gICAgRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGRpYWxvZyBzaG91bGQgYXBwZWFyIGRldGFjaGVkIGZyb20gdGhlIG1haW4gd2luZG93LiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlRGlhbG9nT3B0aW9ucyB7XG4gICAgLyoqIFRoZSB0aXRsZSBvZiB0aGUgZGlhbG9nIHdpbmRvdy4gKi9cbiAgICBUaXRsZT86IHN0cmluZztcbiAgICAvKiogVGhlIG1haW4gbWVzc2FnZSB0byBzaG93IGluIHRoZSBkaWFsb2cuICovXG4gICAgTWVzc2FnZT86IHN0cmluZztcbiAgICAvKiogQXJyYXkgb2YgYnV0dG9uIG9wdGlvbnMgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIEJ1dHRvbnM/OiBCdXR0b25bXTtcbiAgICAvKiogVHJ1ZSBpZiB0aGUgZGlhbG9nIHNob3VsZCBhcHBlYXIgZGV0YWNoZWQgZnJvbSB0aGUgbWFpbiB3aW5kb3cgKGlmIGFwcGxpY2FibGUpLiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b24ge1xuICAgIC8qKiBUZXh0IHRoYXQgYXBwZWFycyB3aXRoaW4gdGhlIGJ1dHRvbi4gKi9cbiAgICBMYWJlbD86IHN0cmluZztcbiAgICAvKiogVHJ1ZSBpZiB0aGUgYnV0dG9uIHNob3VsZCBjYW5jZWwgYW4gb3BlcmF0aW9uIHdoZW4gY2xpY2tlZC4gKi9cbiAgICBJc0NhbmNlbD86IGJvb2xlYW47XG4gICAgLyoqIFRydWUgaWYgdGhlIGJ1dHRvbiBzaG91bGQgYmUgdGhlIGRlZmF1bHQgYWN0aW9uIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBlbnRlci4gKi9cbiAgICBJc0RlZmF1bHQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVGaWx0ZXIge1xuICAgIC8qKiBEaXNwbGF5IG5hbWUgZm9yIHRoZSBmaWx0ZXIsIGl0IGNvdWxkIGJlIFwiVGV4dCBGaWxlc1wiLCBcIkltYWdlc1wiIGV0Yy4gKi9cbiAgICBEaXNwbGF5TmFtZT86IHN0cmluZztcbiAgICAvKiogUGF0dGVybiB0byBtYXRjaCBmb3IgdGhlIGZpbHRlciwgZS5nLiBcIioudHh0OyoubWRcIiBmb3IgdGV4dCBtYXJrZG93biBmaWxlcy4gKi9cbiAgICBQYXR0ZXJuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByZXNlbnRzIGEgZGlhbG9nIG9mIHNwZWNpZmllZCB0eXBlIHdpdGggdGhlIGdpdmVuIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHR5cGUgLSBEaWFsb2cgdHlwZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgdGhlIGRpYWxvZy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggcmVzdWx0IG9mIGRpYWxvZy5cbiAqL1xuZnVuY3Rpb24gZGlhbG9nKHR5cGU6IG51bWJlciwgb3B0aW9uczogTWVzc2FnZURpYWxvZ09wdGlvbnMgfCBPcGVuRmlsZURpYWxvZ09wdGlvbnMgfCBTYXZlRmlsZURpYWxvZ09wdGlvbnMgPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGNhbGwodHlwZSwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogUHJlc2VudHMgYW4gaW5mbyBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9uc1xuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbGFiZWwgb2YgdGhlIGNob3NlbiBidXR0b24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJbmZvKG9wdGlvbnM6IE1lc3NhZ2VEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHsgcmV0dXJuIGRpYWxvZyhEaWFsb2dJbmZvLCBvcHRpb25zKTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgd2FybmluZyBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGxhYmVsIG9mIHRoZSBjaG9zZW4gYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gV2FybmluZyhvcHRpb25zOiBNZXNzYWdlRGlhbG9nT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7IHJldHVybiBkaWFsb2coRGlhbG9nV2FybmluZywgb3B0aW9ucyk7IH1cblxuLyoqXG4gKiBQcmVzZW50cyBhbiBlcnJvciBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGxhYmVsIG9mIHRoZSBjaG9zZW4gYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRXJyb3Iob3B0aW9uczogTWVzc2FnZURpYWxvZ09wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4geyByZXR1cm4gZGlhbG9nKERpYWxvZ0Vycm9yLCBvcHRpb25zKTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgcXVlc3Rpb24gZGlhbG9nLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gRGlhbG9nIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBsYWJlbCBvZiB0aGUgY2hvc2VuIGJ1dHRvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFF1ZXN0aW9uKG9wdGlvbnM6IE1lc3NhZ2VEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHsgcmV0dXJuIGRpYWxvZyhEaWFsb2dRdWVzdGlvbiwgb3B0aW9ucyk7IH1cblxuLyoqXG4gKiBQcmVzZW50cyBhIGZpbGUgc2VsZWN0aW9uIGRpYWxvZyB0byBwaWNrIG9uZSBvciBtb3JlIGZpbGVzIHRvIG9wZW4uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFNlbGVjdGVkIGZpbGUgb3IgbGlzdCBvZiBmaWxlcywgb3IgYSBibGFuayBzdHJpbmcvZW1wdHkgbGlzdCBpZiBubyBmaWxlIGhhcyBiZWVuIHNlbGVjdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zICYgeyBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjogdHJ1ZSB9KTogUHJvbWlzZTxzdHJpbmdbXT47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zICYgeyBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbj86IGZhbHNlIHwgdW5kZWZpbmVkIH0pOiBQcm9taXNlPHN0cmluZz47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCBzdHJpbmdbXT47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCBzdHJpbmdbXT4geyByZXR1cm4gZGlhbG9nKERpYWxvZ09wZW5GaWxlLCBvcHRpb25zKSA/PyBbXTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgZmlsZSBzZWxlY3Rpb24gZGlhbG9nIHRvIHBpY2sgYSBmaWxlIHRvIHNhdmUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFNlbGVjdGVkIGZpbGUsIG9yIGEgYmxhbmsgc3RyaW5nIGlmIG5vIGZpbGUgaGFzIGJlZW4gc2VsZWN0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTYXZlRmlsZShvcHRpb25zOiBTYXZlRmlsZURpYWxvZ09wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4geyByZXR1cm4gZGlhbG9nKERpYWxvZ1NhdmVGaWxlLCBvcHRpb25zKTsgfVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmltcG9ydCB7IGV2ZW50TGlzdGVuZXJzLCBMaXN0ZW5lciwgbGlzdGVuZXJPZmYgfSBmcm9tIFwiLi9saXN0ZW5lci5qc1wiO1xuaW1wb3J0IHsgRXZlbnRzIGFzIENyZWF0ZSB9IGZyb20gXCIuL2NyZWF0ZS5qc1wiO1xuaW1wb3J0IHsgVHlwZXMgfSBmcm9tIFwiLi9ldmVudF90eXBlcy5qc1wiO1xuXG4vLyBTZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xuICAgIHdpbmRvdy5fd2FpbHMuZGlzcGF0Y2hXYWlsc0V2ZW50ID0gZGlzcGF0Y2hXYWlsc0V2ZW50O1xufVxuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5FdmVudHMpO1xuY29uc3QgRW1pdE1ldGhvZCA9IDA7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2V2ZW50X3R5cGVzLmpzXCI7XG5cbi8qKlxuICogQSB0YWJsZSBvZiBkYXRhIHR5cGVzIGZvciBhbGwga25vd24gZXZlbnRzLlxuICogV2lsbCBiZSBtb25rZXktcGF0Y2hlZCBieSB0aGUgYmluZGluZyBnZW5lcmF0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tRXZlbnRzIHt9XG5cbi8qKlxuICogRWl0aGVyIGEga25vd24gZXZlbnQgbmFtZSBvciBhbiBhcmJpdHJhcnkgc3RyaW5nLlxuICovXG5leHBvcnQgdHlwZSBXYWlsc0V2ZW50TmFtZTxFIGV4dGVuZHMga2V5b2YgQ3VzdG9tRXZlbnRzID0ga2V5b2YgQ3VzdG9tRXZlbnRzPiA9IEUgfCAoc3RyaW5nICYge30pO1xuXG4vKipcbiAqIFVuaW9uIG9mIGFsbCBrbm93biBzeXN0ZW0gZXZlbnQgbmFtZXMuXG4gKi9cbnR5cGUgU3lzdGVtRXZlbnROYW1lID0ge1xuICAgIFtLIGluIGtleW9mICh0eXBlb2YgVHlwZXMpXTogKHR5cGVvZiBUeXBlcylbS11ba2V5b2YgKCh0eXBlb2YgVHlwZXMpW0tdKV1cbn0gZXh0ZW5kcyAoaW5mZXIgTSkgPyBNW2tleW9mIE1dIDogbmV2ZXI7XG5cbi8qKlxuICogVGhlIGRhdGEgdHlwZSBhc3NvY2lhdGVkIHRvIGEgZ2l2ZW4gZXZlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFdhaWxzRXZlbnREYXRhPEUgZXh0ZW5kcyBXYWlsc0V2ZW50TmFtZSA9IFdhaWxzRXZlbnROYW1lPiA9XG4gICAgRSBleHRlbmRzIGtleW9mIEN1c3RvbUV2ZW50cyA/IEN1c3RvbUV2ZW50c1tFXSA6IChFIGV4dGVuZHMgU3lzdGVtRXZlbnROYW1lID8gdm9pZCA6IGFueSk7XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgaGFuZGxlcnMgZm9yIGEgZ2l2ZW4gZXZlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFdhaWxzRXZlbnRDYWxsYmFjazxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4gPSAoZXY6IFdhaWxzRXZlbnQ8RT4pID0+IHZvaWQ7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHN5c3RlbSBldmVudCBvciBhIGN1c3RvbSBldmVudCBlbWl0dGVkIHRocm91Z2ggd2FpbHMtcHJvdmlkZWQgZmFjaWxpdGllcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFdhaWxzRXZlbnQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAgICovXG4gICAgbmFtZTogRTtcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbWl0dGVkIGV2ZW50LlxuICAgICAqL1xuICAgIGRhdGE6IFdhaWxzRXZlbnREYXRhPEU+O1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgb3JpZ2luYXRpbmcgd2luZG93LiBPbWl0dGVkIGZvciBhcHBsaWNhdGlvbiBldmVudHMuXG4gICAgICogV2lsbCBiZSBvdmVycmlkZGVuIGlmIHNldCBtYW51YWxseS5cbiAgICAgKi9cbiAgICBzZW5kZXI/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBFLCBkYXRhOiBXYWlsc0V2ZW50RGF0YTxFPik7XG4gICAgY29uc3RydWN0b3IobmFtZTogV2FpbHNFdmVudERhdGE8RT4gZXh0ZW5kcyBudWxsIHwgdm9pZCA/IEUgOiBuZXZlcilcbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBFLCBkYXRhPzogYW55KSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGEgPz8gbnVsbDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoV2FpbHNFdmVudChldmVudDogYW55KSB7XG4gICAgbGV0IGxpc3RlbmVycyA9IGV2ZW50TGlzdGVuZXJzLmdldChldmVudC5uYW1lKTtcbiAgICBpZiAoIWxpc3RlbmVycykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHdhaWxzRXZlbnQgPSBuZXcgV2FpbHNFdmVudChcbiAgICAgICAgZXZlbnQubmFtZSxcbiAgICAgICAgKGV2ZW50Lm5hbWUgaW4gQ3JlYXRlKSA/IENyZWF0ZVtldmVudC5uYW1lXShldmVudC5kYXRhKSA6IGV2ZW50LmRhdGFcbiAgICApO1xuICAgIGlmICgnc2VuZGVyJyBpbiBldmVudCkge1xuICAgICAgICB3YWlsc0V2ZW50LnNlbmRlciA9IGV2ZW50LnNlbmRlcjtcbiAgICB9XG5cbiAgICAvLyBEaXNwYXRjaCB0byBhIHNuYXBzaG90LCB0aGVuIHJlbW92ZSBhbGwgZXhwaXJlZCBsaXN0ZW5lcnMgaW4gYSBzaW5nbGVcbiAgICAvLyBwb3N0LWRpc3BhdGNoIGZpbHRlciBvZiB0aGUgbGl2ZSBtYXAuXG4gICAgLy8gLSBXcml0aW5nIHRoZSBzbmFwc2hvdCBiYWNrIHdob2xlc2FsZSB3b3VsZCB1bmRvIHN1YnNjcmlwdGlvbiBjaGFuZ2VzXG4gICAgLy8gICBtYWRlIGluc2lkZSBhIGhhbmRsZXIgKCM0MzkzKS5cbiAgICAvLyAtIENhbGxpbmcgbGlzdGVuZXJPZmYoKSBwZXIgZXhwaXJlZCBsaXN0ZW5lciBpbnNpZGUgdGhlIGxvb3AgaXMgTyhuXHUwMEIyKVxuICAgIC8vICAgd2hlbiBtYW55IGxpc3RlbmVycyBleHBpcmUgb24gdGhlIHNhbWUgZXZlbnQuXG4gICAgLy8gRmlsdGVyaW5nIHRoZSBsaXZlIGFycmF5IG9uY2UgYWZ0ZXIgZGlzcGF0Y2ggaXMgTyhuKSBhbmQgc3RpbGwgaG9ub3Vyc1xuICAgIC8vIGFueSBsaXN0ZW5lcnMgYWRkZWQgb3IgcmVtb3ZlZCBieSBoYW5kbGVycyBkdXJpbmcgZGlzcGF0Y2guXG4gICAgY29uc3QgZXhwaXJlZCA9IG5ldyBTZXQ8TGlzdGVuZXI+KCk7XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMuc2xpY2UoKSkge1xuICAgICAgICBpZiAobGlzdGVuZXIuZGlzcGF0Y2god2FpbHNFdmVudCkpIHtcbiAgICAgICAgICAgIGV4cGlyZWQuYWRkKGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXhwaXJlZC5zaXplID4gMCkge1xuICAgICAgICBjb25zdCBsaXZlID0gZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50Lm5hbWUpO1xuICAgICAgICBpZiAobGl2ZSkge1xuICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nID0gbGl2ZS5maWx0ZXIobCA9PiAhZXhwaXJlZC5oYXMobCkpO1xuICAgICAgICAgICAgaWYgKHJlbWFpbmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBldmVudExpc3RlbmVycy5kZWxldGUoZXZlbnQubmFtZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV2ZW50TGlzdGVuZXJzLnNldChldmVudC5uYW1lLCByZW1haW5pbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGZvciBhIHNwZWNpZmljIGV2ZW50LlxuICpcbiAqIEBwYXJhbSBldmVudE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQgdG8gcmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZvci5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICogQHBhcmFtIG1heENhbGxiYWNrcyAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0aGUgY2FsbGJhY2sgY2FuIGJlIGNhbGxlZCBmb3IgdGhlIGV2ZW50LiBPbmNlIHRoZSBtYXhpbXVtIG51bWJlciBpcyByZWFjaGVkLCB0aGUgY2FsbGJhY2sgd2lsbCBubyBsb25nZXIgYmUgY2FsbGVkLlxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0LCB3aGVuIGNhbGxlZCwgd2lsbCB1bnJlZ2lzdGVyIHRoZSBjYWxsYmFjayBmcm9tIHRoZSBldmVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE9uTXVsdGlwbGU8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KGV2ZW50TmFtZTogRSwgY2FsbGJhY2s6IFdhaWxzRXZlbnRDYWxsYmFjazxFPiwgbWF4Q2FsbGJhY2tzOiBudW1iZXIpIHtcbiAgICBsZXQgbGlzdGVuZXJzID0gZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50TmFtZSkgfHwgW107XG4gICAgY29uc3QgdGhpc0xpc3RlbmVyID0gbmV3IExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2ssIG1heENhbGxiYWNrcyk7XG4gICAgbGlzdGVuZXJzLnB1c2godGhpc0xpc3RlbmVyKTtcbiAgICBldmVudExpc3RlbmVycy5zZXQoZXZlbnROYW1lLCBsaXN0ZW5lcnMpO1xuICAgIHJldHVybiAoKSA9PiBsaXN0ZW5lck9mZih0aGlzTGlzdGVuZXIpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIHNwZWNpZmllZCBldmVudCBvY2N1cnMuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudCB0byByZWdpc3RlciB0aGUgY2FsbGJhY2sgZm9yLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLCB3aWxsIHVucmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZyb20gdGhlIGV2ZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gT248RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KGV2ZW50TmFtZTogRSwgY2FsbGJhY2s6IFdhaWxzRXZlbnRDYWxsYmFjazxFPik6ICgpID0+IHZvaWQge1xuICAgIHJldHVybiBPbk11bHRpcGxlKGV2ZW50TmFtZSwgY2FsbGJhY2ssIC0xKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBvbmx5IG9uY2UgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudCB0byByZWdpc3RlciB0aGUgY2FsbGJhY2sgZm9yLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLCB3aWxsIHVucmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZyb20gdGhlIGV2ZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gT25jZTxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4oZXZlbnROYW1lOiBFLCBjYWxsYmFjazogV2FpbHNFdmVudENhbGxiYWNrPEU+KTogKCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIE9uTXVsdGlwbGUoZXZlbnROYW1lLCBjYWxsYmFjaywgMSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBldmVudCBsaXN0ZW5lcnMgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQgbmFtZXMuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZXMgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnRzIHRvIHJlbW92ZSBsaXN0ZW5lcnMgZm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT2ZmKC4uLmV2ZW50TmFtZXM6IFtXYWlsc0V2ZW50TmFtZSwgLi4uV2FpbHNFdmVudE5hbWVbXV0pOiB2b2lkIHtcbiAgICBldmVudE5hbWVzLmZvckVhY2goZXZlbnROYW1lID0+IGV2ZW50TGlzdGVuZXJzLmRlbGV0ZShldmVudE5hbWUpKTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBldmVudCBsaXN0ZW5lcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBPZmZBbGwoKTogdm9pZCB7XG4gICAgZXZlbnRMaXN0ZW5lcnMuY2xlYXIoKTtcbn1cblxuLyoqXG4gKiBFbWl0cyBhbiBldmVudC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCB3aWxsIGJlIGZ1bGZpbGxlZCBvbmNlIHRoZSBldmVudCBoYXMgYmVlbiBlbWl0dGVkLiAgUmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGUgZXZlbnQgd2FzIGNhbmNlbGxlZC5cbiAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50IHRvIGVtaXRcbiAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgdGhhdCB3aWxsIGJlIHNlbnQgd2l0aCB0aGUgZXZlbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVtaXQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KG5hbWU6IEUsIGRhdGE6IFdhaWxzRXZlbnREYXRhPEU+KTogUHJvbWlzZTxib29sZWFuPlxuZXhwb3J0IGZ1bmN0aW9uIEVtaXQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KG5hbWU6IFdhaWxzRXZlbnREYXRhPEU+IGV4dGVuZHMgbnVsbCB8IHZvaWQgPyBFIDogbmV2ZXIpOiBQcm9taXNlPGJvb2xlYW4+XG5leHBvcnQgZnVuY3Rpb24gRW1pdDxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4obmFtZTogV2FpbHNFdmVudERhdGE8RT4sIGRhdGE/OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gY2FsbChFbWl0TWV0aG9kLCAgbmV3IFdhaWxzRXZlbnQobmFtZSwgZGF0YSkpXG59XG5cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLy8gVGhlIGZvbGxvd2luZyB1dGlsaXRpZXMgaGF2ZSBiZWVuIGZhY3RvcmVkIG91dCBvZiAuL2V2ZW50cy50c1xuLy8gZm9yIHRlc3RpbmcgcHVycG9zZXMuXG5cbmV4cG9ydCBjb25zdCBldmVudExpc3RlbmVycyA9IG5ldyBNYXA8c3RyaW5nLCBMaXN0ZW5lcltdPigpO1xuXG5leHBvcnQgY2xhc3MgTGlzdGVuZXIge1xuICAgIGV2ZW50TmFtZTogc3RyaW5nO1xuICAgIGNhbGxiYWNrOiAoZGF0YTogYW55KSA9PiB2b2lkO1xuICAgIG1heENhbGxiYWNrczogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IoZXZlbnROYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoZGF0YTogYW55KSA9PiB2b2lkLCBtYXhDYWxsYmFja3M6IG51bWJlcikge1xuICAgICAgICB0aGlzLmV2ZW50TmFtZSA9IGV2ZW50TmFtZTtcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgICB0aGlzLm1heENhbGxiYWNrcyA9IG1heENhbGxiYWNrcyB8fCAtMTtcbiAgICB9XG5cbiAgICBkaXNwYXRjaChkYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2soZGF0YSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWF4Q2FsbGJhY2tzID09PSAtMSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0aGlzLm1heENhbGxiYWNrcyAtPSAxO1xuICAgICAgICByZXR1cm4gdGhpcy5tYXhDYWxsYmFja3MgPT09IDA7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuZXJPZmYobGlzdGVuZXI6IExpc3RlbmVyKTogdm9pZCB7XG4gICAgbGV0IGxpc3RlbmVycyA9IGV2ZW50TGlzdGVuZXJzLmdldChsaXN0ZW5lci5ldmVudE5hbWUpO1xuICAgIGlmICghbGlzdGVuZXJzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnMuZmlsdGVyKGwgPT4gbCAhPT0gbGlzdGVuZXIpO1xuICAgIGlmIChsaXN0ZW5lcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50TGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lci5ldmVudE5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGV2ZW50TGlzdGVuZXJzLnNldChsaXN0ZW5lci5ldmVudE5hbWUsIGxpc3RlbmVycyk7XG4gICAgfVxufVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG4vKipcbiAqIEFueSBpcyBhIGR1bW15IGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBzaW1wbGUgb3IgdW5rbm93biB0eXBlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFueTxUID0gYW55Pihzb3VyY2U6IGFueSk6IFQge1xuICAgIHJldHVybiBzb3VyY2U7XG59XG5cbi8qKlxuICogQnl0ZVNsaWNlIGlzIGEgY3JlYXRpb24gZnVuY3Rpb24gdGhhdCByZXBsYWNlc1xuICogbnVsbCBzdHJpbmdzIHdpdGggZW1wdHkgc3RyaW5ncy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJ5dGVTbGljZShzb3VyY2U6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuICgoc291cmNlID09IG51bGwpID8gXCJcIiA6IHNvdXJjZSk7XG59XG5cbi8qKlxuICogQXJyYXkgdGFrZXMgYSBjcmVhdGlvbiBmdW5jdGlvbiBmb3IgYW4gYXJiaXRyYXJ5IHR5cGVcbiAqIGFuZCByZXR1cm5zIGFuIGluLXBsYWNlIGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBhbiBhcnJheVxuICogd2hvc2UgZWxlbWVudHMgYXJlIG9mIHRoYXQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFycmF5PFQgPSBhbnk+KGVsZW1lbnQ6IChzb3VyY2U6IGFueSkgPT4gVCk6IChzb3VyY2U6IGFueSkgPT4gVFtdIHtcbiAgICBpZiAoZWxlbWVudCA9PT0gQW55KSB7XG4gICAgICAgIHJldHVybiAoc291cmNlKSA9PiAoc291cmNlID09PSBudWxsID8gW10gOiBzb3VyY2UpO1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiB7XG4gICAgICAgIGlmIChzb3VyY2UgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc291cmNlW2ldID0gZWxlbWVudChzb3VyY2VbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBNYXAgdGFrZXMgY3JlYXRpb24gZnVuY3Rpb25zIGZvciB0d28gYXJiaXRyYXJ5IHR5cGVzXG4gKiBhbmQgcmV0dXJucyBhbiBpbi1wbGFjZSBjcmVhdGlvbiBmdW5jdGlvbiBmb3IgYW4gb2JqZWN0XG4gKiB3aG9zZSBrZXlzIGFuZCB2YWx1ZXMgYXJlIG9mIHRob3NlIHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gTWFwPEsgZXh0ZW5kcyBQcm9wZXJ0eUtleSA9IGFueSwgViA9IGFueT4oa2V5OiAoc291cmNlOiBhbnkpID0+IEssIHZhbHVlOiAoc291cmNlOiBhbnkpID0+IFYpOiAoc291cmNlOiBhbnkpID0+IFJlY29yZDxLLCBWPiB7XG4gICAgaWYgKHZhbHVlID09PSBBbnkpIHtcbiAgICAgICAgcmV0dXJuIChzb3VyY2UpID0+IChzb3VyY2UgPT09IG51bGwgPyB7fSA6IHNvdXJjZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChzb3VyY2UpID0+IHtcbiAgICAgICAgaWYgKHNvdXJjZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgICAgICAgICAgc291cmNlW2tleV0gPSB2YWx1ZShzb3VyY2Vba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9O1xufVxuXG4vKipcbiAqIE51bGxhYmxlIHRha2VzIGEgY3JlYXRpb24gZnVuY3Rpb24gZm9yIGFuIGFyYml0cmFyeSB0eXBlXG4gKiBhbmQgcmV0dXJucyBhIGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBhIG51bGxhYmxlIHZhbHVlIG9mIHRoYXQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE51bGxhYmxlPFQgPSBhbnk+KGVsZW1lbnQ6IChzb3VyY2U6IGFueSkgPT4gVCk6IChzb3VyY2U6IGFueSkgPT4gKFQgfCBudWxsKSB7XG4gICAgaWYgKGVsZW1lbnQgPT09IEFueSkge1xuICAgICAgICByZXR1cm4gQW55O1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiAoc291cmNlID09PSBudWxsID8gbnVsbCA6IGVsZW1lbnQoc291cmNlKSk7XG59XG5cbi8qKlxuICogU3RydWN0IHRha2VzIGFuIG9iamVjdCBtYXBwaW5nIGZpZWxkIG5hbWVzIHRvIGNyZWF0aW9uIGZ1bmN0aW9uc1xuICogYW5kIHJldHVybnMgYW4gaW4tcGxhY2UgY3JlYXRpb24gZnVuY3Rpb24gZm9yIGEgc3RydWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gU3RydWN0KGNyZWF0ZUZpZWxkOiBSZWNvcmQ8c3RyaW5nLCAoc291cmNlOiBhbnkpID0+IGFueT4pOlxuICAgIDxVIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IGFueT4oc291cmNlOiBhbnkpID0+IFVcbntcbiAgICBsZXQgYWxsQW55ID0gdHJ1ZTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgaW4gY3JlYXRlRmllbGQpIHtcbiAgICAgICAgaWYgKGNyZWF0ZUZpZWxkW25hbWVdICE9PSBBbnkpIHtcbiAgICAgICAgICAgIGFsbEFueSA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFsbEFueSkge1xuICAgICAgICByZXR1cm4gQW55O1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBjcmVhdGVGaWVsZCkge1xuICAgICAgICAgICAgaWYgKG5hbWUgaW4gc291cmNlKSB7XG4gICAgICAgICAgICAgICAgc291cmNlW25hbWVdID0gY3JlYXRlRmllbGRbbmFtZV0oc291cmNlW25hbWVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIH07XG59XG5cbi8qKlxuICogRGF0ZUZyb21UaW1lIGlzIGEgY3JlYXRpb24gZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBSRkMzMzM5IHN0cmluZ3NcbiAqIChmcm9tIEdvJ3MgdGltZS5UaW1lIEpTT04gbWFyc2hhbGluZykgdG8gSmF2YVNjcmlwdCBEYXRlIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEYXRlRnJvbVRpbWUoc291cmNlOiBhbnkpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoc291cmNlKTtcbn1cblxuLyoqXG4gKiBNYXBzIGtub3duIGV2ZW50IG5hbWVzIHRvIGNyZWF0aW9uIGZ1bmN0aW9ucyBmb3IgdGhlaXIgZGF0YSB0eXBlcy5cbiAqIFdpbGwgYmUgbW9ua2V5LXBhdGNoZWQgYnkgdGhlIGJpbmRpbmcgZ2VuZXJhdG9yLlxuICovXG5leHBvcnQgY29uc3QgRXZlbnRzOiBSZWNvcmQ8c3RyaW5nLCAoc291cmNlOiBhbnkpID0+IGFueT4gPSB7fTtcbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLy8gQ3luaHlyY2h3eWQgeSBmZmVpbCBob24geW4gYXd0b21hdGlnLiBQRUlESVdDSCBcdTAwQzIgTU9ESVdMXG4vLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuIERPIE5PVCBFRElUXG5cbmV4cG9ydCBjb25zdCBUeXBlcyA9IE9iamVjdC5mcmVlemUoe1xuXHRXaW5kb3dzOiBPYmplY3QuZnJlZXplKHtcblx0XHRBUE1Qb3dlclNldHRpbmdDaGFuZ2U6IFwid2luZG93czpBUE1Qb3dlclNldHRpbmdDaGFuZ2VcIixcblx0XHRBUE1Qb3dlclN0YXR1c0NoYW5nZTogXCJ3aW5kb3dzOkFQTVBvd2VyU3RhdHVzQ2hhbmdlXCIsXG5cdFx0QVBNUmVzdW1lQXV0b21hdGljOiBcIndpbmRvd3M6QVBNUmVzdW1lQXV0b21hdGljXCIsXG5cdFx0QVBNUmVzdW1lU3VzcGVuZDogXCJ3aW5kb3dzOkFQTVJlc3VtZVN1c3BlbmRcIixcblx0XHRBUE1TdXNwZW5kOiBcIndpbmRvd3M6QVBNU3VzcGVuZFwiLFxuXHRcdEFwcGxpY2F0aW9uU3RhcnRlZDogXCJ3aW5kb3dzOkFwcGxpY2F0aW9uU3RhcnRlZFwiLFxuXHRcdFN5c3RlbVRoZW1lQ2hhbmdlZDogXCJ3aW5kb3dzOlN5c3RlbVRoZW1lQ2hhbmdlZFwiLFxuXHRcdFdlYlZpZXdOYXZpZ2F0aW9uQ29tcGxldGVkOiBcIndpbmRvd3M6V2ViVmlld05hdmlnYXRpb25Db21wbGV0ZWRcIixcblx0XHRXaW5kb3dBY3RpdmU6IFwid2luZG93czpXaW5kb3dBY3RpdmVcIixcblx0XHRXaW5kb3dCYWNrZ3JvdW5kRXJhc2U6IFwid2luZG93czpXaW5kb3dCYWNrZ3JvdW5kRXJhc2VcIixcblx0XHRXaW5kb3dDbGlja0FjdGl2ZTogXCJ3aW5kb3dzOldpbmRvd0NsaWNrQWN0aXZlXCIsXG5cdFx0V2luZG93Q2xvc2luZzogXCJ3aW5kb3dzOldpbmRvd0Nsb3NpbmdcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcIndpbmRvd3M6V2luZG93RGlkTW92ZVwiLFxuXHRcdFdpbmRvd0RpZFJlc2l6ZTogXCJ3aW5kb3dzOldpbmRvd0RpZFJlc2l6ZVwiLFxuXHRcdFdpbmRvd0RQSUNoYW5nZWQ6IFwid2luZG93czpXaW5kb3dEUElDaGFuZ2VkXCIsXG5cdFx0V2luZG93RHJhZ0Ryb3A6IFwid2luZG93czpXaW5kb3dEcmFnRHJvcFwiLFxuXHRcdFdpbmRvd0RyYWdFbnRlcjogXCJ3aW5kb3dzOldpbmRvd0RyYWdFbnRlclwiLFxuXHRcdFdpbmRvd0RyYWdMZWF2ZTogXCJ3aW5kb3dzOldpbmRvd0RyYWdMZWF2ZVwiLFxuXHRcdFdpbmRvd0RyYWdPdmVyOiBcIndpbmRvd3M6V2luZG93RHJhZ092ZXJcIixcblx0XHRXaW5kb3dFbmRNb3ZlOiBcIndpbmRvd3M6V2luZG93RW5kTW92ZVwiLFxuXHRcdFdpbmRvd0VuZFJlc2l6ZTogXCJ3aW5kb3dzOldpbmRvd0VuZFJlc2l6ZVwiLFxuXHRcdFdpbmRvd0Z1bGxzY3JlZW46IFwid2luZG93czpXaW5kb3dGdWxsc2NyZWVuXCIsXG5cdFx0V2luZG93SGlkZTogXCJ3aW5kb3dzOldpbmRvd0hpZGVcIixcblx0XHRXaW5kb3dJbmFjdGl2ZTogXCJ3aW5kb3dzOldpbmRvd0luYWN0aXZlXCIsXG5cdFx0V2luZG93S2V5RG93bjogXCJ3aW5kb3dzOldpbmRvd0tleURvd25cIixcblx0XHRXaW5kb3dLZXlVcDogXCJ3aW5kb3dzOldpbmRvd0tleVVwXCIsXG5cdFx0V2luZG93S2lsbEZvY3VzOiBcIndpbmRvd3M6V2luZG93S2lsbEZvY3VzXCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50SGl0OiBcIndpbmRvd3M6V2luZG93Tm9uQ2xpZW50SGl0XCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50TW91c2VEb3duOiBcIndpbmRvd3M6V2luZG93Tm9uQ2xpZW50TW91c2VEb3duXCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50TW91c2VMZWF2ZTogXCJ3aW5kb3dzOldpbmRvd05vbkNsaWVudE1vdXNlTGVhdmVcIixcblx0XHRXaW5kb3dOb25DbGllbnRNb3VzZU1vdmU6IFwid2luZG93czpXaW5kb3dOb25DbGllbnRNb3VzZU1vdmVcIixcblx0XHRXaW5kb3dOb25DbGllbnRNb3VzZVVwOiBcIndpbmRvd3M6V2luZG93Tm9uQ2xpZW50TW91c2VVcFwiLFxuXHRcdFdpbmRvd1BhaW50OiBcIndpbmRvd3M6V2luZG93UGFpbnRcIixcblx0XHRXaW5kb3dSZXN0b3JlOiBcIndpbmRvd3M6V2luZG93UmVzdG9yZVwiLFxuXHRcdFdpbmRvd1NldEZvY3VzOiBcIndpbmRvd3M6V2luZG93U2V0Rm9jdXNcIixcblx0XHRXaW5kb3dTaG93OiBcIndpbmRvd3M6V2luZG93U2hvd1wiLFxuXHRcdFdpbmRvd1N0YXJ0TW92ZTogXCJ3aW5kb3dzOldpbmRvd1N0YXJ0TW92ZVwiLFxuXHRcdFdpbmRvd1N0YXJ0UmVzaXplOiBcIndpbmRvd3M6V2luZG93U3RhcnRSZXNpemVcIixcblx0XHRXaW5kb3dVbkZ1bGxzY3JlZW46IFwid2luZG93czpXaW5kb3dVbkZ1bGxzY3JlZW5cIixcblx0XHRXaW5kb3daT3JkZXJDaGFuZ2VkOiBcIndpbmRvd3M6V2luZG93Wk9yZGVyQ2hhbmdlZFwiLFxuXHRcdFdpbmRvd01pbmltaXNlOiBcIndpbmRvd3M6V2luZG93TWluaW1pc2VcIixcblx0XHRXaW5kb3dVbk1pbmltaXNlOiBcIndpbmRvd3M6V2luZG93VW5NaW5pbWlzZVwiLFxuXHRcdFdpbmRvd01heGltaXNlOiBcIndpbmRvd3M6V2luZG93TWF4aW1pc2VcIixcblx0XHRXaW5kb3dVbk1heGltaXNlOiBcIndpbmRvd3M6V2luZG93VW5NYXhpbWlzZVwiLFxuXHR9KSxcblx0TWFjOiBPYmplY3QuZnJlZXplKHtcblx0XHRBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTogXCJtYWM6QXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzXCIsXG5cdFx0QXBwbGljYXRpb25EaWRDaGFuZ2VFZmZlY3RpdmVBcHBlYXJhbmNlOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZUVmZmVjdGl2ZUFwcGVhcmFuY2VcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZUljb246IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlSWNvblwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGU6IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGVcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyc1wiLFxuXHRcdEFwcGxpY2F0aW9uRGlkQ2hhbmdlU3RhdHVzQmFyRnJhbWU6IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlU3RhdHVzQmFyRnJhbWVcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZVN0YXR1c0Jhck9yaWVudGF0aW9uOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZVN0YXR1c0Jhck9yaWVudGF0aW9uXCIsXG5cdFx0QXBwbGljYXRpb25EaWRDaGFuZ2VUaGVtZTogXCJtYWM6QXBwbGljYXRpb25EaWRDaGFuZ2VUaGVtZVwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkRmluaXNoTGF1bmNoaW5nOiBcIm1hYzpBcHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZ1wiLFxuXHRcdEFwcGxpY2F0aW9uRGlkSGlkZTogXCJtYWM6QXBwbGljYXRpb25EaWRIaWRlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmU6IFwibWFjOkFwcGxpY2F0aW9uRGlkUmVzaWduQWN0aXZlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRVbmhpZGU6IFwibWFjOkFwcGxpY2F0aW9uRGlkVW5oaWRlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRVcGRhdGU6IFwibWFjOkFwcGxpY2F0aW9uRGlkVXBkYXRlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRXYWtlOiBcIm1hYzpBcHBsaWNhdGlvbkRpZFdha2VcIixcblx0XHRBcHBsaWNhdGlvblNjcmVlbnNEaWRTbGVlcDogXCJtYWM6QXBwbGljYXRpb25TY3JlZW5zRGlkU2xlZXBcIixcblx0XHRBcHBsaWNhdGlvblNjcmVlbnNEaWRXYWtlOiBcIm1hYzpBcHBsaWNhdGlvblNjcmVlbnNEaWRXYWtlXCIsXG5cdFx0QXBwbGljYXRpb25TaG91bGRIYW5kbGVSZW9wZW46IFwibWFjOkFwcGxpY2F0aW9uU2hvdWxkSGFuZGxlUmVvcGVuXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsQmVjb21lQWN0aXZlOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxCZWNvbWVBY3RpdmVcIixcblx0XHRBcHBsaWNhdGlvbldpbGxGaW5pc2hMYXVuY2hpbmc6IFwibWFjOkFwcGxpY2F0aW9uV2lsbEZpbmlzaExhdW5jaGluZ1wiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbEhpZGU6IFwibWFjOkFwcGxpY2F0aW9uV2lsbEhpZGVcIixcblx0XHRBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6IFwibWFjOkFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZVwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFNsZWVwOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxTbGVlcFwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZTogXCJtYWM6QXBwbGljYXRpb25XaWxsVGVybWluYXRlXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsVW5oaWRlOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxVbmhpZGVcIixcblx0XHRBcHBsaWNhdGlvbldpbGxVcGRhdGU6IFwibWFjOkFwcGxpY2F0aW9uV2lsbFVwZGF0ZVwiLFxuXHRcdE1lbnVEaWRBZGRJdGVtOiBcIm1hYzpNZW51RGlkQWRkSXRlbVwiLFxuXHRcdE1lbnVEaWRCZWdpblRyYWNraW5nOiBcIm1hYzpNZW51RGlkQmVnaW5UcmFja2luZ1wiLFxuXHRcdE1lbnVEaWRDbG9zZTogXCJtYWM6TWVudURpZENsb3NlXCIsXG5cdFx0TWVudURpZERpc3BsYXlJdGVtOiBcIm1hYzpNZW51RGlkRGlzcGxheUl0ZW1cIixcblx0XHRNZW51RGlkRW5kVHJhY2tpbmc6IFwibWFjOk1lbnVEaWRFbmRUcmFja2luZ1wiLFxuXHRcdE1lbnVEaWRIaWdobGlnaHRJdGVtOiBcIm1hYzpNZW51RGlkSGlnaGxpZ2h0SXRlbVwiLFxuXHRcdE1lbnVEaWRPcGVuOiBcIm1hYzpNZW51RGlkT3BlblwiLFxuXHRcdE1lbnVEaWRQb3BVcDogXCJtYWM6TWVudURpZFBvcFVwXCIsXG5cdFx0TWVudURpZFJlbW92ZUl0ZW06IFwibWFjOk1lbnVEaWRSZW1vdmVJdGVtXCIsXG5cdFx0TWVudURpZFNlbmRBY3Rpb246IFwibWFjOk1lbnVEaWRTZW5kQWN0aW9uXCIsXG5cdFx0TWVudURpZFNlbmRBY3Rpb25Ub0l0ZW06IFwibWFjOk1lbnVEaWRTZW5kQWN0aW9uVG9JdGVtXCIsXG5cdFx0TWVudURpZFVwZGF0ZTogXCJtYWM6TWVudURpZFVwZGF0ZVwiLFxuXHRcdE1lbnVXaWxsQWRkSXRlbTogXCJtYWM6TWVudVdpbGxBZGRJdGVtXCIsXG5cdFx0TWVudVdpbGxCZWdpblRyYWNraW5nOiBcIm1hYzpNZW51V2lsbEJlZ2luVHJhY2tpbmdcIixcblx0XHRNZW51V2lsbERpc3BsYXlJdGVtOiBcIm1hYzpNZW51V2lsbERpc3BsYXlJdGVtXCIsXG5cdFx0TWVudVdpbGxFbmRUcmFja2luZzogXCJtYWM6TWVudVdpbGxFbmRUcmFja2luZ1wiLFxuXHRcdE1lbnVXaWxsSGlnaGxpZ2h0SXRlbTogXCJtYWM6TWVudVdpbGxIaWdobGlnaHRJdGVtXCIsXG5cdFx0TWVudVdpbGxPcGVuOiBcIm1hYzpNZW51V2lsbE9wZW5cIixcblx0XHRNZW51V2lsbFBvcFVwOiBcIm1hYzpNZW51V2lsbFBvcFVwXCIsXG5cdFx0TWVudVdpbGxSZW1vdmVJdGVtOiBcIm1hYzpNZW51V2lsbFJlbW92ZUl0ZW1cIixcblx0XHRNZW51V2lsbFNlbmRBY3Rpb246IFwibWFjOk1lbnVXaWxsU2VuZEFjdGlvblwiLFxuXHRcdE1lbnVXaWxsU2VuZEFjdGlvblRvSXRlbTogXCJtYWM6TWVudVdpbGxTZW5kQWN0aW9uVG9JdGVtXCIsXG5cdFx0TWVudVdpbGxVcGRhdGU6IFwibWFjOk1lbnVXaWxsVXBkYXRlXCIsXG5cdFx0V2ViVmlld0RpZENvbW1pdE5hdmlnYXRpb246IFwibWFjOldlYlZpZXdEaWRDb21taXROYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZEZpbmlzaE5hdmlnYXRpb246IFwibWFjOldlYlZpZXdEaWRGaW5pc2hOYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbjogXCJtYWM6V2ViVmlld0RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvblwiLFxuXHRcdFdlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbjogXCJtYWM6V2ViVmlld0RpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uXCIsXG5cdFx0V2luZG93RGlkQmVjb21lS2V5OiBcIm1hYzpXaW5kb3dEaWRCZWNvbWVLZXlcIixcblx0XHRXaW5kb3dEaWRCZWNvbWVNYWluOiBcIm1hYzpXaW5kb3dEaWRCZWNvbWVNYWluXCIsXG5cdFx0V2luZG93RGlkQmVnaW5TaGVldDogXCJtYWM6V2luZG93RGlkQmVnaW5TaGVldFwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZUFscGhhOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VBbHBoYVwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZUJhY2tpbmdMb2NhdGlvbjogXCJtYWM6V2luZG93RGlkQ2hhbmdlQmFja2luZ0xvY2F0aW9uXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlQmFja2luZ1Byb3BlcnRpZXM6IFwibWFjOldpbmRvd0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlQ29sbGVjdGlvbkJlaGF2aW9yOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VDb2xsZWN0aW9uQmVoYXZpb3JcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VFZmZlY3RpdmVBcHBlYXJhbmNlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VFZmZlY3RpdmVBcHBlYXJhbmNlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGU6IFwibWFjOldpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlT3JkZXJpbmdNb2RlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VPcmRlcmluZ01vZGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTY3JlZW46IFwibWFjOldpbmRvd0RpZENoYW5nZVNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6IFwibWFjOldpbmRvd0RpZENoYW5nZVNjcmVlblBhcmFtZXRlcnNcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTY3JlZW5Qcm9maWxlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VTY3JlZW5Qcm9maWxlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlU2NyZWVuU3BhY2U6IFwibWFjOldpbmRvd0RpZENoYW5nZVNjcmVlblNwYWNlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlU2NyZWVuU3BhY2VQcm9wZXJ0aWVzOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VTY3JlZW5TcGFjZVByb3BlcnRpZXNcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTaGFyaW5nVHlwZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlU2hhcmluZ1R5cGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTcGFjZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlU3BhY2VcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTcGFjZU9yZGVyaW5nTW9kZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlU3BhY2VPcmRlcmluZ01vZGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VUaXRsZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlVGl0bGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VUb29sYmFyOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VUb29sYmFyXCIsXG5cdFx0V2luZG93RGlkRGVtaW5pYXR1cml6ZTogXCJtYWM6V2luZG93RGlkRGVtaW5pYXR1cml6ZVwiLFxuXHRcdFdpbmRvd0RpZEVuZFNoZWV0OiBcIm1hYzpXaW5kb3dEaWRFbmRTaGVldFwiLFxuXHRcdFdpbmRvd0RpZEVudGVyRnVsbFNjcmVlbjogXCJtYWM6V2luZG93RGlkRW50ZXJGdWxsU2NyZWVuXCIsXG5cdFx0V2luZG93RGlkRW50ZXJWZXJzaW9uQnJvd3NlcjogXCJtYWM6V2luZG93RGlkRW50ZXJWZXJzaW9uQnJvd3NlclwiLFxuXHRcdFdpbmRvd0RpZEV4aXRGdWxsU2NyZWVuOiBcIm1hYzpXaW5kb3dEaWRFeGl0RnVsbFNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZEV4aXRWZXJzaW9uQnJvd3NlcjogXCJtYWM6V2luZG93RGlkRXhpdFZlcnNpb25Ccm93c2VyXCIsXG5cdFx0V2luZG93RGlkRXhwb3NlOiBcIm1hYzpXaW5kb3dEaWRFeHBvc2VcIixcblx0XHRXaW5kb3dEaWRGb2N1czogXCJtYWM6V2luZG93RGlkRm9jdXNcIixcblx0XHRXaW5kb3dEaWRNaW5pYXR1cml6ZTogXCJtYWM6V2luZG93RGlkTWluaWF0dXJpemVcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcIm1hYzpXaW5kb3dEaWRNb3ZlXCIsXG5cdFx0V2luZG93RGlkT3JkZXJPZmZTY3JlZW46IFwibWFjOldpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuXCIsXG5cdFx0V2luZG93RGlkT3JkZXJPblNjcmVlbjogXCJtYWM6V2luZG93RGlkT3JkZXJPblNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZFJlc2lnbktleTogXCJtYWM6V2luZG93RGlkUmVzaWduS2V5XCIsXG5cdFx0V2luZG93RGlkUmVzaWduTWFpbjogXCJtYWM6V2luZG93RGlkUmVzaWduTWFpblwiLFxuXHRcdFdpbmRvd0RpZFJlc2l6ZTogXCJtYWM6V2luZG93RGlkUmVzaXplXCIsXG5cdFx0V2luZG93RGlkVXBkYXRlOiBcIm1hYzpXaW5kb3dEaWRVcGRhdGVcIixcblx0XHRXaW5kb3dEaWRVcGRhdGVBbHBoYTogXCJtYWM6V2luZG93RGlkVXBkYXRlQWxwaGFcIixcblx0XHRXaW5kb3dEaWRVcGRhdGVDb2xsZWN0aW9uQmVoYXZpb3I6IFwibWFjOldpbmRvd0RpZFVwZGF0ZUNvbGxlY3Rpb25CZWhhdmlvclwiLFxuXHRcdFdpbmRvd0RpZFVwZGF0ZUNvbGxlY3Rpb25Qcm9wZXJ0aWVzOiBcIm1hYzpXaW5kb3dEaWRVcGRhdGVDb2xsZWN0aW9uUHJvcGVydGllc1wiLFxuXHRcdFdpbmRvd0RpZFVwZGF0ZVNoYWRvdzogXCJtYWM6V2luZG93RGlkVXBkYXRlU2hhZG93XCIsXG5cdFx0V2luZG93RGlkVXBkYXRlVGl0bGU6IFwibWFjOldpbmRvd0RpZFVwZGF0ZVRpdGxlXCIsXG5cdFx0V2luZG93RGlkVXBkYXRlVG9vbGJhcjogXCJtYWM6V2luZG93RGlkVXBkYXRlVG9vbGJhclwiLFxuXHRcdFdpbmRvd0RpZFpvb206IFwibWFjOldpbmRvd0RpZFpvb21cIixcblx0XHRXaW5kb3dGaWxlRHJhZ2dpbmdFbnRlcmVkOiBcIm1hYzpXaW5kb3dGaWxlRHJhZ2dpbmdFbnRlcmVkXCIsXG5cdFx0V2luZG93RmlsZURyYWdnaW5nRXhpdGVkOiBcIm1hYzpXaW5kb3dGaWxlRHJhZ2dpbmdFeGl0ZWRcIixcblx0XHRXaW5kb3dGaWxlRHJhZ2dpbmdQZXJmb3JtZWQ6IFwibWFjOldpbmRvd0ZpbGVEcmFnZ2luZ1BlcmZvcm1lZFwiLFxuXHRcdFdpbmRvd0hpZGU6IFwibWFjOldpbmRvd0hpZGVcIixcblx0XHRXaW5kb3dNYXhpbWlzZTogXCJtYWM6V2luZG93TWF4aW1pc2VcIixcblx0XHRXaW5kb3dVbk1heGltaXNlOiBcIm1hYzpXaW5kb3dVbk1heGltaXNlXCIsXG5cdFx0V2luZG93TWluaW1pc2U6IFwibWFjOldpbmRvd01pbmltaXNlXCIsXG5cdFx0V2luZG93VW5NaW5pbWlzZTogXCJtYWM6V2luZG93VW5NaW5pbWlzZVwiLFxuXHRcdFdpbmRvd1Nob3VsZENsb3NlOiBcIm1hYzpXaW5kb3dTaG91bGRDbG9zZVwiLFxuXHRcdFdpbmRvd1Nob3c6IFwibWFjOldpbmRvd1Nob3dcIixcblx0XHRXaW5kb3dXaWxsQmVjb21lS2V5OiBcIm1hYzpXaW5kb3dXaWxsQmVjb21lS2V5XCIsXG5cdFx0V2luZG93V2lsbEJlY29tZU1haW46IFwibWFjOldpbmRvd1dpbGxCZWNvbWVNYWluXCIsXG5cdFx0V2luZG93V2lsbEJlZ2luU2hlZXQ6IFwibWFjOldpbmRvd1dpbGxCZWdpblNoZWV0XCIsXG5cdFx0V2luZG93V2lsbENoYW5nZU9yZGVyaW5nTW9kZTogXCJtYWM6V2luZG93V2lsbENoYW5nZU9yZGVyaW5nTW9kZVwiLFxuXHRcdFdpbmRvd1dpbGxDbG9zZTogXCJtYWM6V2luZG93V2lsbENsb3NlXCIsXG5cdFx0V2luZG93V2lsbERlbWluaWF0dXJpemU6IFwibWFjOldpbmRvd1dpbGxEZW1pbmlhdHVyaXplXCIsXG5cdFx0V2luZG93V2lsbEVudGVyRnVsbFNjcmVlbjogXCJtYWM6V2luZG93V2lsbEVudGVyRnVsbFNjcmVlblwiLFxuXHRcdFdpbmRvd1dpbGxFbnRlclZlcnNpb25Ccm93c2VyOiBcIm1hYzpXaW5kb3dXaWxsRW50ZXJWZXJzaW9uQnJvd3NlclwiLFxuXHRcdFdpbmRvd1dpbGxFeGl0RnVsbFNjcmVlbjogXCJtYWM6V2luZG93V2lsbEV4aXRGdWxsU2NyZWVuXCIsXG5cdFx0V2luZG93V2lsbEV4aXRWZXJzaW9uQnJvd3NlcjogXCJtYWM6V2luZG93V2lsbEV4aXRWZXJzaW9uQnJvd3NlclwiLFxuXHRcdFdpbmRvd1dpbGxGb2N1czogXCJtYWM6V2luZG93V2lsbEZvY3VzXCIsXG5cdFx0V2luZG93V2lsbE1pbmlhdHVyaXplOiBcIm1hYzpXaW5kb3dXaWxsTWluaWF0dXJpemVcIixcblx0XHRXaW5kb3dXaWxsTW92ZTogXCJtYWM6V2luZG93V2lsbE1vdmVcIixcblx0XHRXaW5kb3dXaWxsT3JkZXJPZmZTY3JlZW46IFwibWFjOldpbmRvd1dpbGxPcmRlck9mZlNjcmVlblwiLFxuXHRcdFdpbmRvd1dpbGxPcmRlck9uU2NyZWVuOiBcIm1hYzpXaW5kb3dXaWxsT3JkZXJPblNjcmVlblwiLFxuXHRcdFdpbmRvd1dpbGxSZXNpZ25NYWluOiBcIm1hYzpXaW5kb3dXaWxsUmVzaWduTWFpblwiLFxuXHRcdFdpbmRvd1dpbGxSZXNpemU6IFwibWFjOldpbmRvd1dpbGxSZXNpemVcIixcblx0XHRXaW5kb3dXaWxsVW5mb2N1czogXCJtYWM6V2luZG93V2lsbFVuZm9jdXNcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlXCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZUFscGhhOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlQWxwaGFcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlQ29sbGVjdGlvbkJlaGF2aW9yOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlQ29sbGVjdGlvbkJlaGF2aW9yXCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZUNvbGxlY3Rpb25Qcm9wZXJ0aWVzOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlQ29sbGVjdGlvblByb3BlcnRpZXNcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlU2hhZG93OiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlU2hhZG93XCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZVRpdGxlOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlVGl0bGVcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlVG9vbGJhcjogXCJtYWM6V2luZG93V2lsbFVwZGF0ZVRvb2xiYXJcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlVmlzaWJpbGl0eTogXCJtYWM6V2luZG93V2lsbFVwZGF0ZVZpc2liaWxpdHlcIixcblx0XHRXaW5kb3dXaWxsVXNlU3RhbmRhcmRGcmFtZTogXCJtYWM6V2luZG93V2lsbFVzZVN0YW5kYXJkRnJhbWVcIixcblx0XHRXaW5kb3dab29tSW46IFwibWFjOldpbmRvd1pvb21JblwiLFxuXHRcdFdpbmRvd1pvb21PdXQ6IFwibWFjOldpbmRvd1pvb21PdXRcIixcblx0XHRXaW5kb3dab29tUmVzZXQ6IFwibWFjOldpbmRvd1pvb21SZXNldFwiLFxuXHRcdFdlYlZpZXdXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZTogXCJtYWM6V2ViVmlld1dlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlXCIsXG5cdH0pLFxuXHRMaW51eDogT2JqZWN0LmZyZWV6ZSh7XG5cdFx0QXBwbGljYXRpb25TdGFydHVwOiBcImxpbnV4OkFwcGxpY2F0aW9uU3RhcnR1cFwiLFxuXHRcdFN5c3RlbURpZFdha2U6IFwibGludXg6U3lzdGVtRGlkV2FrZVwiLFxuXHRcdFN5c3RlbVRoZW1lQ2hhbmdlZDogXCJsaW51eDpTeXN0ZW1UaGVtZUNoYW5nZWRcIixcblx0XHRTeXN0ZW1XaWxsU2xlZXA6IFwibGludXg6U3lzdGVtV2lsbFNsZWVwXCIsXG5cdFx0V2luZG93RGVsZXRlRXZlbnQ6IFwibGludXg6V2luZG93RGVsZXRlRXZlbnRcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcImxpbnV4OldpbmRvd0RpZE1vdmVcIixcblx0XHRXaW5kb3dEaWRSZXNpemU6IFwibGludXg6V2luZG93RGlkUmVzaXplXCIsXG5cdFx0V2luZG93Rm9jdXNJbjogXCJsaW51eDpXaW5kb3dGb2N1c0luXCIsXG5cdFx0V2luZG93Rm9jdXNPdXQ6IFwibGludXg6V2luZG93Rm9jdXNPdXRcIixcblx0XHRXaW5kb3dMb2FkU3RhcnRlZDogXCJsaW51eDpXaW5kb3dMb2FkU3RhcnRlZFwiLFxuXHRcdFdpbmRvd0xvYWRSZWRpcmVjdGVkOiBcImxpbnV4OldpbmRvd0xvYWRSZWRpcmVjdGVkXCIsXG5cdFx0V2luZG93TG9hZENvbW1pdHRlZDogXCJsaW51eDpXaW5kb3dMb2FkQ29tbWl0dGVkXCIsXG5cdFx0V2luZG93TG9hZEZpbmlzaGVkOiBcImxpbnV4OldpbmRvd0xvYWRGaW5pc2hlZFwiLFxuXHR9KSxcblx0aU9TOiBPYmplY3QuZnJlZXplKHtcblx0XHRBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTogXCJpb3M6QXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVcIixcblx0XHRBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDogXCJpb3M6QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRcIixcblx0XHRBcHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZzogXCJpb3M6QXBwbGljYXRpb25EaWRGaW5pc2hMYXVuY2hpbmdcIixcblx0XHRBcHBsaWNhdGlvbkRpZFJlY2VpdmVNZW1vcnlXYXJuaW5nOiBcImlvczpBcHBsaWNhdGlvbkRpZFJlY2VpdmVNZW1vcnlXYXJuaW5nXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOiBcImlvczpBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRcIixcblx0XHRBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6IFwiaW9zOkFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZVwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZTogXCJpb3M6QXBwbGljYXRpb25XaWxsVGVybWluYXRlXCIsXG5cdFx0V2luZG93RGlkTG9hZDogXCJpb3M6V2luZG93RGlkTG9hZFwiLFxuXHRcdFdpbmRvd1dpbGxBcHBlYXI6IFwiaW9zOldpbmRvd1dpbGxBcHBlYXJcIixcblx0XHRXaW5kb3dEaWRBcHBlYXI6IFwiaW9zOldpbmRvd0RpZEFwcGVhclwiLFxuXHRcdFdpbmRvd1dpbGxEaXNhcHBlYXI6IFwiaW9zOldpbmRvd1dpbGxEaXNhcHBlYXJcIixcblx0XHRXaW5kb3dEaWREaXNhcHBlYXI6IFwiaW9zOldpbmRvd0RpZERpc2FwcGVhclwiLFxuXHRcdFdpbmRvd1NhZmVBcmVhSW5zZXRzQ2hhbmdlZDogXCJpb3M6V2luZG93U2FmZUFyZWFJbnNldHNDaGFuZ2VkXCIsXG5cdFx0V2luZG93T3JpZW50YXRpb25DaGFuZ2VkOiBcImlvczpXaW5kb3dPcmllbnRhdGlvbkNoYW5nZWRcIixcblx0XHRXaW5kb3dUb3VjaEJlZ2FuOiBcImlvczpXaW5kb3dUb3VjaEJlZ2FuXCIsXG5cdFx0V2luZG93VG91Y2hNb3ZlZDogXCJpb3M6V2luZG93VG91Y2hNb3ZlZFwiLFxuXHRcdFdpbmRvd1RvdWNoRW5kZWQ6IFwiaW9zOldpbmRvd1RvdWNoRW5kZWRcIixcblx0XHRXaW5kb3dUb3VjaENhbmNlbGxlZDogXCJpb3M6V2luZG93VG91Y2hDYW5jZWxsZWRcIixcblx0XHRXZWJWaWV3RGlkU3RhcnROYXZpZ2F0aW9uOiBcImlvczpXZWJWaWV3RGlkU3RhcnROYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZEZpbmlzaE5hdmlnYXRpb246IFwiaW9zOldlYlZpZXdEaWRGaW5pc2hOYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZEZhaWxOYXZpZ2F0aW9uOiBcImlvczpXZWJWaWV3RGlkRmFpbE5hdmlnYXRpb25cIixcblx0XHRXZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjogXCJpb3M6V2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25cIixcblx0XHRCYXR0ZXJ5Q2hhbmdlZDogXCJpb3M6QmF0dGVyeUNoYW5nZWRcIixcblx0XHROZXR3b3JrQ2hhbmdlZDogXCJpb3M6TmV0d29ya0NoYW5nZWRcIixcblx0XHRUaGVtZUNoYW5nZWQ6IFwiaW9zOlRoZW1lQ2hhbmdlZFwiLFxuXHRcdFNjcmVlbkxvY2tlZDogXCJpb3M6U2NyZWVuTG9ja2VkXCIsXG5cdFx0U2NyZWVuVW5sb2NrZWQ6IFwiaW9zOlNjcmVlblVubG9ja2VkXCIsXG5cdH0pLFxuXHRBbmRyb2lkOiBPYmplY3QuZnJlZXplKHtcblx0XHRBY3Rpdml0eUNyZWF0ZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eUNyZWF0ZWRcIixcblx0XHRBY3Rpdml0eVN0YXJ0ZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eVN0YXJ0ZWRcIixcblx0XHRBY3Rpdml0eVJlc3VtZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eVJlc3VtZWRcIixcblx0XHRBY3Rpdml0eVBhdXNlZDogXCJhbmRyb2lkOkFjdGl2aXR5UGF1c2VkXCIsXG5cdFx0QWN0aXZpdHlTdG9wcGVkOiBcImFuZHJvaWQ6QWN0aXZpdHlTdG9wcGVkXCIsXG5cdFx0QWN0aXZpdHlEZXN0cm95ZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eURlc3Ryb3llZFwiLFxuXHRcdEFwcGxpY2F0aW9uTG93TWVtb3J5OiBcImFuZHJvaWQ6QXBwbGljYXRpb25Mb3dNZW1vcnlcIixcblx0XHRXZWJWaWV3UGFnZVN0YXJ0ZWQ6IFwiYW5kcm9pZDpXZWJWaWV3UGFnZVN0YXJ0ZWRcIixcblx0XHRXZWJWaWV3UGFnZUZpbmlzaGVkOiBcImFuZHJvaWQ6V2ViVmlld1BhZ2VGaW5pc2hlZFwiLFxuXHRcdEJhdHRlcnlDaGFuZ2VkOiBcImFuZHJvaWQ6QmF0dGVyeUNoYW5nZWRcIixcblx0XHROZXR3b3JrQ2hhbmdlZDogXCJhbmRyb2lkOk5ldHdvcmtDaGFuZ2VkXCIsXG5cdFx0VGhlbWVDaGFuZ2VkOiBcImFuZHJvaWQ6VGhlbWVDaGFuZ2VkXCIsXG5cdFx0U2NyZWVuTG9ja2VkOiBcImFuZHJvaWQ6U2NyZWVuTG9ja2VkXCIsXG5cdFx0U2NyZWVuVW5sb2NrZWQ6IFwiYW5kcm9pZDpTY3JlZW5VbmxvY2tlZFwiLFxuXHR9KSxcblx0Q29tbW9uOiBPYmplY3QuZnJlZXplKHtcblx0XHRBcHBsaWNhdGlvbk9wZW5lZFdpdGhGaWxlOiBcImNvbW1vbjpBcHBsaWNhdGlvbk9wZW5lZFdpdGhGaWxlXCIsXG5cdFx0QXBwbGljYXRpb25TdGFydGVkOiBcImNvbW1vbjpBcHBsaWNhdGlvblN0YXJ0ZWRcIixcblx0XHRBcHBsaWNhdGlvbkxhdW5jaGVkV2l0aFVybDogXCJjb21tb246QXBwbGljYXRpb25MYXVuY2hlZFdpdGhVcmxcIixcblx0XHRUaGVtZUNoYW5nZWQ6IFwiY29tbW9uOlRoZW1lQ2hhbmdlZFwiLFxuXHRcdFN5c3RlbURpZFdha2U6IFwiY29tbW9uOlN5c3RlbURpZFdha2VcIixcblx0XHRTeXN0ZW1XaWxsU2xlZXA6IFwiY29tbW9uOlN5c3RlbVdpbGxTbGVlcFwiLFxuXHRcdFdpbmRvd0Nsb3Npbmc6IFwiY29tbW9uOldpbmRvd0Nsb3NpbmdcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcImNvbW1vbjpXaW5kb3dEaWRNb3ZlXCIsXG5cdFx0V2luZG93RGlkUmVzaXplOiBcImNvbW1vbjpXaW5kb3dEaWRSZXNpemVcIixcblx0XHRXaW5kb3dEUElDaGFuZ2VkOiBcImNvbW1vbjpXaW5kb3dEUElDaGFuZ2VkXCIsXG5cdFx0V2luZG93RmlsZXNEcm9wcGVkOiBcImNvbW1vbjpXaW5kb3dGaWxlc0Ryb3BwZWRcIixcblx0XHRXaW5kb3dGb2N1czogXCJjb21tb246V2luZG93Rm9jdXNcIixcblx0XHRXaW5kb3dGdWxsc2NyZWVuOiBcImNvbW1vbjpXaW5kb3dGdWxsc2NyZWVuXCIsXG5cdFx0V2luZG93SGlkZTogXCJjb21tb246V2luZG93SGlkZVwiLFxuXHRcdFdpbmRvd0xvc3RGb2N1czogXCJjb21tb246V2luZG93TG9zdEZvY3VzXCIsXG5cdFx0V2luZG93TWF4aW1pc2U6IFwiY29tbW9uOldpbmRvd01heGltaXNlXCIsXG5cdFx0V2luZG93TWluaW1pc2U6IFwiY29tbW9uOldpbmRvd01pbmltaXNlXCIsXG5cdFx0V2luZG93VG9nZ2xlRnJhbWVsZXNzOiBcImNvbW1vbjpXaW5kb3dUb2dnbGVGcmFtZWxlc3NcIixcblx0XHRXaW5kb3dSZXN0b3JlOiBcImNvbW1vbjpXaW5kb3dSZXN0b3JlXCIsXG5cdFx0V2luZG93UnVudGltZVJlYWR5OiBcImNvbW1vbjpXaW5kb3dSdW50aW1lUmVhZHlcIixcblx0XHRXaW5kb3dTaG93OiBcImNvbW1vbjpXaW5kb3dTaG93XCIsXG5cdFx0V2luZG93VW5GdWxsc2NyZWVuOiBcImNvbW1vbjpXaW5kb3dVbkZ1bGxzY3JlZW5cIixcblx0XHRXaW5kb3dVbk1heGltaXNlOiBcImNvbW1vbjpXaW5kb3dVbk1heGltaXNlXCIsXG5cdFx0V2luZG93VW5NaW5pbWlzZTogXCJjb21tb246V2luZG93VW5NaW5pbWlzZVwiLFxuXHRcdFdpbmRvd1pvb206IFwiY29tbW9uOldpbmRvd1pvb21cIixcblx0XHRXaW5kb3dab29tSW46IFwiY29tbW9uOldpbmRvd1pvb21JblwiLFxuXHRcdFdpbmRvd1pvb21PdXQ6IFwiY29tbW9uOldpbmRvd1pvb21PdXRcIixcblx0XHRXaW5kb3dab29tUmVzZXQ6IFwiY29tbW9uOldpbmRvd1pvb21SZXNldFwiLFxuXHRcdEJhdHRlcnlDaGFuZ2VkOiBcImNvbW1vbjpCYXR0ZXJ5Q2hhbmdlZFwiLFxuXHRcdE5ldHdvcmtDaGFuZ2VkOiBcImNvbW1vbjpOZXR3b3JrQ2hhbmdlZFwiLFxuXHRcdFNjcmVlbkxvY2tlZDogXCJjb21tb246U2NyZWVuTG9ja2VkXCIsXG5cdFx0U2NyZWVuVW5sb2NrZWQ6IFwiY29tbW9uOlNjcmVlblVubG9ja2VkXCIsXG5cdFx0TG93TWVtb3J5OiBcImNvbW1vbjpMb3dNZW1vcnlcIixcblx0fSksXG59KTtcbiIsICIvKlxuIF8gICAgIF9fICAgICBfIF9fXG58IHwgIC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLyoqXG4gKiBMb2dzIGEgbWVzc2FnZSB0byB0aGUgY29uc29sZSB3aXRoIGN1c3RvbSBmb3JtYXR0aW5nLlxuICpcbiAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIG1lc3NhZ2UgdG8gYmUgbG9nZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVidWdMb2cobWVzc2FnZTogYW55KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgY29uc29sZS5sb2coXG4gICAgICAgICclYyB3YWlsczMgJWMgJyArIG1lc3NhZ2UgKyAnICcsXG4gICAgICAgICdiYWNrZ3JvdW5kOiAjYWEwMDAwOyBjb2xvcjogI2ZmZjsgYm9yZGVyLXJhZGl1czogM3B4IDBweCAwcHggM3B4OyBwYWRkaW5nOiAxcHg7IGZvbnQtc2l6ZTogMC43cmVtJyxcbiAgICAgICAgJ2JhY2tncm91bmQ6ICMwMDk5MDA7IGNvbG9yOiAjZmZmOyBib3JkZXItcmFkaXVzOiAwcHggM3B4IDNweCAwcHg7IHBhZGRpbmc6IDFweDsgZm9udC1zaXplOiAwLjdyZW0nXG4gICAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgd2VidmlldyBzdXBwb3J0cyB0aGUge0BsaW5rIE1vdXNlRXZlbnQjYnV0dG9uc30gcHJvcGVydHkuXG4gKiBMb29raW5nIGF0IHlvdSBtYWNPUyBIaWdoIFNpZXJyYSFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhblRyYWNrQnV0dG9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKSkuYnV0dG9ucyA9PT0gMDtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgYnJvd3NlciBzdXBwb3J0cyByZW1vdmluZyBsaXN0ZW5lcnMgYnkgdHJpZ2dlcmluZyBhbiBBYm9ydFNpZ25hbFxuICogKHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRUYXJnZXQvYWRkRXZlbnRMaXN0ZW5lciNzaWduYWwpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuQWJvcnRMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKCFFdmVudFRhcmdldCB8fCAhQWJvcnRTaWduYWwgfHwgIUFib3J0Q29udHJvbGxlcilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG5cbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgRXZlbnRUYXJnZXQoKTtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0ZXN0JywgKCkgPT4geyByZXN1bHQgPSBmYWxzZTsgfSwgeyBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsIH0pO1xuICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3Rlc3QnKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBjbG9zZXN0IEhUTUxFbGVtZW50IGFuY2VzdG9yIG9mIGFuIGV2ZW50J3MgdGFyZ2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRUYXJnZXQoZXZlbnQ6IEV2ZW50KTogSFRNTEVsZW1lbnQge1xuICAgIGlmIChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnQudGFyZ2V0O1xuICAgIH0gZWxzZSBpZiAoIShldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgJiYgZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSkge1xuICAgICAgICByZXR1cm4gZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQgPz8gZG9jdW1lbnQuYm9keTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keTtcbiAgICB9XG59XG5cbi8qKipcbiBUaGlzIHRlY2huaXF1ZSBmb3IgcHJvcGVyIGxvYWQgZGV0ZWN0aW9uIGlzIHRha2VuIGZyb20gSFRNWDpcblxuIEJTRCAyLUNsYXVzZSBMaWNlbnNlXG5cbiBDb3B5cmlnaHQgKGMpIDIwMjAsIEJpZyBTa3kgU29mdHdhcmVcbiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXNcbiBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG4gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIlxuIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFXG4gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUlxuIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSXG4gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSxcbiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRVxuIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG5cbiAqKiovXG5cbmxldCBpc1JlYWR5ID0gZmFsc2U7XG5pbXBvcnQgeyBoYXNET00gfSBmcm9tIFwiLi9lbnZpcm9ubWVudC5qc1wiO1xuXG5pZiAoaGFzRE9NKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpID0+IHsgaXNSZWFkeSA9IHRydWUgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aGVuUmVhZHkoY2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcbiAgICBpZiAoaXNSZWFkeSB8fCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGNhbGxiYWNrKTtcbiAgICB9XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7bmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXN9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmltcG9ydCB0eXBlIHsgU2NyZWVuIH0gZnJvbSBcIi4vc2NyZWVucy5qc1wiO1xuXG4vLyBEcm9wIHRhcmdldCBjb25zdGFudHNcbmNvbnN0IERST1BfVEFSR0VUX0FUVFJJQlVURSA9ICdkYXRhLWZpbGUtZHJvcC10YXJnZXQnO1xuY29uc3QgRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTID0gJ2ZpbGUtZHJvcC10YXJnZXQtYWN0aXZlJztcbmxldCBjdXJyZW50RHJvcFRhcmdldDogRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG5jb25zdCBQb3NpdGlvbk1ldGhvZCAgICAgICAgICAgICAgICAgICAgPSAwO1xuY29uc3QgQ2VudGVyTWV0aG9kICAgICAgICAgICAgICAgICAgICAgID0gMTtcbmNvbnN0IENsb3NlTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICA9IDI7XG5jb25zdCBEaXNhYmxlU2l6ZUNvbnN0cmFpbnRzTWV0aG9kICAgICAgPSAzO1xuY29uc3QgRW5hYmxlU2l6ZUNvbnN0cmFpbnRzTWV0aG9kICAgICAgID0gNDtcbmNvbnN0IEZvY3VzTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICA9IDU7XG5jb25zdCBGb3JjZVJlbG9hZE1ldGhvZCAgICAgICAgICAgICAgICAgPSA2O1xuY29uc3QgRnVsbHNjcmVlbk1ldGhvZCAgICAgICAgICAgICAgICAgID0gNztcbmNvbnN0IEdldFNjcmVlbk1ldGhvZCAgICAgICAgICAgICAgICAgICA9IDg7XG5jb25zdCBHZXRab29tTWV0aG9kICAgICAgICAgICAgICAgICAgICAgPSA5O1xuY29uc3QgSGVpZ2h0TWV0aG9kICAgICAgICAgICAgICAgICAgICAgID0gMTA7XG5jb25zdCBIaWRlTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICAgPSAxMTtcbmNvbnN0IElzRm9jdXNlZE1ldGhvZCAgICAgICAgICAgICAgICAgICA9IDEyO1xuY29uc3QgSXNGdWxsc2NyZWVuTWV0aG9kICAgICAgICAgICAgICAgID0gMTM7XG5jb25zdCBJc01heGltaXNlZE1ldGhvZCAgICAgICAgICAgICAgICAgPSAxNDtcbmNvbnN0IElzTWluaW1pc2VkTWV0aG9kICAgICAgICAgICAgICAgICA9IDE1O1xuY29uc3QgTWF4aW1pc2VNZXRob2QgICAgICAgICAgICAgICAgICAgID0gMTY7XG5jb25zdCBNaW5pbWlzZU1ldGhvZCAgICAgICAgICAgICAgICAgICAgPSAxNztcbmNvbnN0IE5hbWVNZXRob2QgICAgICAgICAgICAgICAgICAgICAgICA9IDE4O1xuY29uc3QgT3BlbkRldlRvb2xzTWV0aG9kICAgICAgICAgICAgICAgID0gMTk7XG5jb25zdCBSZWxhdGl2ZVBvc2l0aW9uTWV0aG9kICAgICAgICAgICAgPSAyMDtcbmNvbnN0IFJlbG9hZE1ldGhvZCAgICAgICAgICAgICAgICAgICAgICA9IDIxO1xuY29uc3QgUmVzaXphYmxlTWV0aG9kICAgICAgICAgICAgICAgICAgID0gMjI7XG5jb25zdCBSZXN0b3JlTWV0aG9kICAgICAgICAgICAgICAgICAgICAgPSAyMztcbmNvbnN0IFNldFBvc2l0aW9uTWV0aG9kICAgICAgICAgICAgICAgICA9IDI0O1xuY29uc3QgU2V0QWx3YXlzT25Ub3BNZXRob2QgICAgICAgICAgICAgID0gMjU7XG5jb25zdCBTZXRCYWNrZ3JvdW5kQ29sb3VyTWV0aG9kICAgICAgICAgPSAyNjtcbmNvbnN0IFNldEZyYW1lbGVzc01ldGhvZCAgICAgICAgICAgICAgICA9IDI3O1xuY29uc3QgU2V0RnVsbHNjcmVlbkJ1dHRvbkVuYWJsZWRNZXRob2QgID0gMjg7XG5jb25zdCBTZXRNYXhTaXplTWV0aG9kICAgICAgICAgICAgICAgICAgPSAyOTtcbmNvbnN0IFNldE1pblNpemVNZXRob2QgICAgICAgICAgICAgICAgICA9IDMwO1xuY29uc3QgU2V0UmVsYXRpdmVQb3NpdGlvbk1ldGhvZCAgICAgICAgID0gMzE7XG5jb25zdCBTZXRSZXNpemFibGVNZXRob2QgICAgICAgICAgICAgICAgPSAzMjtcbmNvbnN0IFNldFNpemVNZXRob2QgICAgICAgICAgICAgICAgICAgICA9IDMzO1xuY29uc3QgU2V0VGl0bGVNZXRob2QgICAgICAgICAgICAgICAgICAgID0gMzQ7XG5jb25zdCBTZXRab29tTWV0aG9kICAgICAgICAgICAgICAgICAgICAgPSAzNTtcbmNvbnN0IFNob3dNZXRob2QgICAgICAgICAgICAgICAgICAgICAgICA9IDM2O1xuY29uc3QgU2l6ZU1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgID0gMzc7XG5jb25zdCBUb2dnbGVGdWxsc2NyZWVuTWV0aG9kICAgICAgICAgICAgPSAzODtcbmNvbnN0IFRvZ2dsZU1heGltaXNlTWV0aG9kICAgICAgICAgICAgICA9IDM5O1xuY29uc3QgVG9nZ2xlRnJhbWVsZXNzTWV0aG9kICAgICAgICAgICAgID0gNDA7IFxuY29uc3QgVW5GdWxsc2NyZWVuTWV0aG9kICAgICAgICAgICAgICAgID0gNDE7XG5jb25zdCBVbk1heGltaXNlTWV0aG9kICAgICAgICAgICAgICAgICAgPSA0MjtcbmNvbnN0IFVuTWluaW1pc2VNZXRob2QgICAgICAgICAgICAgICAgICA9IDQzO1xuY29uc3QgV2lkdGhNZXRob2QgICAgICAgICAgICAgICAgICAgICAgID0gNDQ7XG5jb25zdCBab29tTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICAgPSA0NTtcbmNvbnN0IFpvb21Jbk1ldGhvZCAgICAgICAgICAgICAgICAgICAgICA9IDQ2O1xuY29uc3QgWm9vbU91dE1ldGhvZCAgICAgICAgICAgICAgICAgICAgID0gNDc7XG5jb25zdCBab29tUmVzZXRNZXRob2QgICAgICAgICAgICAgICAgICAgPSA0ODtcbmNvbnN0IFNuYXBBc3Npc3RNZXRob2QgICAgICAgICAgICAgICAgICA9IDQ5O1xuY29uc3QgRmlsZXNEcm9wcGVkICAgICAgICAgICAgICAgICAgICAgID0gNTA7XG5jb25zdCBQcmludE1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgPSA1MTtcbmNvbnN0IFNldFNjcmVlbk1ldGhvZCAgICAgICAgICAgICAgICAgICA9IDUyO1xuXG4vKipcbiAqIEZpbmRzIHRoZSBuZWFyZXN0IGRyb3AgdGFyZ2V0IGVsZW1lbnQgYnkgd2Fsa2luZyB1cCB0aGUgRE9NIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIGdldERyb3BUYXJnZXRFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsKTogRWxlbWVudCB8IG51bGwge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnQuY2xvc2VzdChgWyR7RFJPUF9UQVJHRVRfQVRUUklCVVRFfV1gKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB3ZSBjYW4gdXNlIFdlYlZpZXcyJ3MgcG9zdE1lc3NhZ2VXaXRoQWRkaXRpb25hbE9iamVjdHMgKFdpbmRvd3MpXG4gKiBBbHNvIGNoZWNrcyB0aGF0IEVuYWJsZUZpbGVEcm9wIGlzIHRydWUgZm9yIHRoaXMgd2luZG93LlxuICovXG5mdW5jdGlvbiBjYW5SZXNvbHZlRmlsZVBhdGhzKCk6IGJvb2xlYW4ge1xuICAgIC8vIE11c3QgaGF2ZSBXZWJWaWV3MidzIHBvc3RNZXNzYWdlV2l0aEFkZGl0aW9uYWxPYmplY3RzIEFQSSAoV2luZG93cyBvbmx5KVxuICAgIGlmICgod2luZG93IGFzIGFueSkuY2hyb21lPy53ZWJ2aWV3Py5wb3N0TWVzc2FnZVdpdGhBZGRpdGlvbmFsT2JqZWN0cyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gTXVzdCBoYXZlIEVuYWJsZUZpbGVEcm9wIHNldCB0byB0cnVlIGZvciB0aGlzIHdpbmRvd1xuICAgIC8vIFRoaXMgZmxhZyBpcyBzZXQgYnkgdGhlIEdvIGJhY2tlbmQgZHVyaW5nIHJ1bnRpbWUgaW5pdGlhbGl6YXRpb25cbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSB0cnVlO1xufVxuXG4vKipcbiAqIFNlbmQgZmlsZSBkcm9wIHRvIGJhY2tlbmQgdmlhIFdlYlZpZXcyIChXaW5kb3dzIG9ubHkpXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVGaWxlUGF0aHMoeDogbnVtYmVyLCB5OiBudW1iZXIsIGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcbiAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLmNocm9tZT8ud2Vidmlldz8ucG9zdE1lc3NhZ2VXaXRoQWRkaXRpb25hbE9iamVjdHMpIHtcbiAgICAgICAgKHdpbmRvdyBhcyBhbnkpLmNocm9tZS53ZWJ2aWV3LnBvc3RNZXNzYWdlV2l0aEFkZGl0aW9uYWxPYmplY3RzKGBmaWxlOmRyb3A6JHt4fToke3l9YCwgZmlsZXMpO1xuICAgIH1cbn1cblxuLy8gTmF0aXZlIGRyYWcgc3RhdGUgKExpbnV4L21hY09TIGludGVyY2VwdCBET00gZHJhZyBldmVudHMpXG5sZXQgbmF0aXZlRHJhZ0FjdGl2ZSA9IGZhbHNlO1xuXG4vKipcbiAqIENsZWFucyB1cCBuYXRpdmUgZHJhZyBzdGF0ZSBhbmQgaG92ZXIgZWZmZWN0cy5cbiAqIENhbGxlZCBvbiBkcm9wIG9yIHdoZW4gZHJhZyBsZWF2ZXMgdGhlIHdpbmRvdy5cbiAqL1xuZnVuY3Rpb24gY2xlYW51cE5hdGl2ZURyYWcoKTogdm9pZCB7XG4gICAgbmF0aXZlRHJhZ0FjdGl2ZSA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50RHJvcFRhcmdldCkge1xuICAgICAgICBjdXJyZW50RHJvcFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICB9XG59XG5cbi8qKlxuICogQ2FsbGVkIGZyb20gR28gd2hlbiBhIGZpbGUgZHJhZyBlbnRlcnMgdGhlIHdpbmRvdyBvbiBMaW51eC9tYWNPUy5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlRHJhZ0VudGVyKCk6IHZvaWQge1xuICAgIC8vIENoZWNrIGlmIGZpbGUgZHJvcHMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgd2luZG93XG4gICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBkb24ndCBhY3RpdmF0ZSBkcmFnIHN0YXRlXG4gICAgfVxuICAgIG5hdGl2ZURyYWdBY3RpdmUgPSB0cnVlO1xufVxuXG4vKipcbiAqIENhbGxlZCBmcm9tIEdvIHdoZW4gYSBmaWxlIGRyYWcgbGVhdmVzIHRoZSB3aW5kb3cgb24gTGludXgvbWFjT1MuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZURyYWdMZWF2ZSgpOiB2b2lkIHtcbiAgICBjbGVhbnVwTmF0aXZlRHJhZygpO1xufVxuXG4vKipcbiAqIENhbGxlZCBmcm9tIEdvIGR1cmluZyBmaWxlIGRyYWcgdG8gdXBkYXRlIGhvdmVyIHN0YXRlIG9uIExpbnV4L21hY09TLlxuICogQHBhcmFtIHggLSBYIGNvb3JkaW5hdGUgaW4gQ1NTIHBpeGVsc1xuICogQHBhcmFtIHkgLSBZIGNvb3JkaW5hdGUgaW4gQ1NTIHBpeGVsc1xuICovXG5mdW5jdGlvbiBoYW5kbGVEcmFnT3Zlcih4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghbmF0aXZlRHJhZ0FjdGl2ZSkgcmV0dXJuO1xuICAgIFxuICAgIC8vIENoZWNrIGlmIGZpbGUgZHJvcHMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgd2luZG93XG4gICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBkb24ndCBzaG93IGhvdmVyIGVmZmVjdHNcbiAgICB9XG4gICAgXG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7XG4gICAgY29uc3QgZHJvcFRhcmdldCA9IGdldERyb3BUYXJnZXRFbGVtZW50KHRhcmdldEVsZW1lbnQpO1xuICAgIFxuICAgIGlmIChjdXJyZW50RHJvcFRhcmdldCAmJiBjdXJyZW50RHJvcFRhcmdldCAhPT0gZHJvcFRhcmdldCkge1xuICAgICAgICBjdXJyZW50RHJvcFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgfVxuICAgIFxuICAgIGlmIChkcm9wVGFyZ2V0KSB7XG4gICAgICAgIGRyb3BUYXJnZXQuY2xhc3NMaXN0LmFkZChEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IGRyb3BUYXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudERyb3BUYXJnZXQgPSBudWxsO1xuICAgIH1cbn1cblxuXG5cbi8vIEV4cG9ydCB0aGUgaGFuZGxlcnMgZm9yIHVzZSBieSBHbyB2aWEgaW5kZXgudHNcbmV4cG9ydCB7IGhhbmRsZURyYWdFbnRlciwgaGFuZGxlRHJhZ0xlYXZlLCBoYW5kbGVEcmFnT3ZlciB9O1xuXG4vKipcbiAqIEEgcmVjb3JkIGRlc2NyaWJpbmcgdGhlIHBvc2l0aW9uIG9mIGEgd2luZG93LlxuICovXG5pbnRlcmZhY2UgUG9zaXRpb24ge1xuICAgIC8qKiBUaGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgd2luZG93LiAqL1xuICAgIHg6IG51bWJlcjtcbiAgICAvKiogVGhlIHZlcnRpY2FsIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuICovXG4gICAgeTogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgcmVjb3JkIGRlc2NyaWJpbmcgdGhlIHNpemUgb2YgYSB3aW5kb3cuXG4gKi9cbmludGVyZmFjZSBTaXplIHtcbiAgICAvKiogVGhlIHdpZHRoIG9mIHRoZSB3aW5kb3cuICovXG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICAvKiogVGhlIGhlaWdodCBvZiB0aGUgd2luZG93LiAqL1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuXG4vLyBQcml2YXRlIGZpZWxkIG5hbWVzLlxuY29uc3QgY2FsbGVyU3ltID0gU3ltYm9sKFwiY2FsbGVyXCIpO1xuXG5jbGFzcyBXaW5kb3cge1xuICAgIC8vIFByaXZhdGUgZmllbGRzLlxuICAgIHByaXZhdGUgW2NhbGxlclN5bV06IChtZXNzYWdlOiBudW1iZXIsIGFyZ3M/OiBhbnkpID0+IFByb21pc2U8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpc2VzIGEgd2luZG93IG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFyZ2V0IHdpbmRvdy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcgPSAnJykge1xuICAgICAgICB0aGlzW2NhbGxlclN5bV0gPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLldpbmRvdywgbmFtZSlcblxuICAgICAgICAvLyBiaW5kIGluc3RhbmNlIG1ldGhvZCB0byBtYWtlIHRoZW0gZWFzaWx5IHVzYWJsZSBpbiBldmVudCBoYW5kbGVyc1xuICAgICAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhXaW5kb3cucHJvdG90eXBlKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG1ldGhvZCAhPT0gXCJjb25zdHJ1Y3RvclwiXG4gICAgICAgICAgICAgICAgJiYgdHlwZW9mICh0aGlzIGFzIGFueSlbbWV0aG9kXSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAodGhpcyBhcyBhbnkpW21ldGhvZF0gPSAodGhpcyBhcyBhbnkpW21ldGhvZF0uYmluZCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNwZWNpZmllZCB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3aW5kb3cgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIHdpbmRvdyBvYmplY3QuXG4gICAgICovXG4gICAgR2V0KG5hbWU6IHN0cmluZyk6IFdpbmRvdyB7XG4gICAgICAgIHJldHVybiBuZXcgV2luZG93KG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFBvc2l0aW9uKCk6IFByb21pc2U8UG9zaXRpb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShQb3NpdGlvbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2VudGVycyB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uXG4gICAgICovXG4gICAgQ2VudGVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKENlbnRlck1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgQ2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oQ2xvc2VNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc2FibGVzIG1pbi9tYXggc2l6ZSBjb25zdHJhaW50cy5cbiAgICAgKi9cbiAgICBEaXNhYmxlU2l6ZUNvbnN0cmFpbnRzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKERpc2FibGVTaXplQ29uc3RyYWludHNNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgbWluL21heCBzaXplIGNvbnN0cmFpbnRzLlxuICAgICAqL1xuICAgIEVuYWJsZVNpemVDb25zdHJhaW50cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShFbmFibGVTaXplQ29uc3RyYWludHNNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY3VzZXMgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBGb2N1cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShGb2N1c01ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9yY2VzIHRoZSB3aW5kb3cgdG8gcmVsb2FkIHRoZSBwYWdlIGFzc2V0cy5cbiAgICAgKi9cbiAgICBGb3JjZVJlbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShGb3JjZVJlbG9hZE1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3dpdGNoZXMgdGhlIHdpbmRvdyB0byBmdWxsc2NyZWVuIG1vZGUuXG4gICAgICovXG4gICAgRnVsbHNjcmVlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShGdWxsc2NyZWVuTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzY3JlZW4gdGhhdCB0aGUgd2luZG93IGlzIG9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHNjcmVlbiB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBvbi5cbiAgICAgKi9cbiAgICBHZXRTY3JlZW4oKTogUHJvbWlzZTxTY3JlZW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShHZXRTY3JlZW5NZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgem9vbSBsZXZlbCBvZiB0aGUgd2luZG93LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgem9vbSBsZXZlbC5cbiAgICAgKi9cbiAgICBHZXRab29tKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oR2V0Wm9vbU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBIZWlnaHQoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShIZWlnaHRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGVzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgSGlkZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShIaWRlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHdpbmRvdyBpcyBmb2N1c2VkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBmb2N1c2VkLlxuICAgICAqL1xuICAgIElzRm9jdXNlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShJc0ZvY3VzZWRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2luZG93IGlzIGZ1bGxzY3JlZW4uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB3aW5kb3cgaXMgY3VycmVudGx5IGZ1bGxzY3JlZW4uXG4gICAgICovXG4gICAgSXNGdWxsc2NyZWVuKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKElzRnVsbHNjcmVlbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB3aW5kb3cgaXMgbWF4aW1pc2VkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBtYXhpbWlzZWQuXG4gICAgICovXG4gICAgSXNNYXhpbWlzZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oSXNNYXhpbWlzZWRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2luZG93IGlzIG1pbmltaXNlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHdpbmRvdyBpcyBjdXJyZW50bHkgbWluaW1pc2VkLlxuICAgICAqL1xuICAgIElzTWluaW1pc2VkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKElzTWluaW1pc2VkTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYXhpbWlzZXMgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBNYXhpbWlzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShNYXhpbWlzZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWluaW1pc2VzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgTWluaW1pc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oTWluaW1pc2VNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgTmFtZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKE5hbWVNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBkZXZlbG9wbWVudCB0b29scyBwYW5lLlxuICAgICAqL1xuICAgIE9wZW5EZXZUb29scygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShPcGVuRGV2VG9vbHNNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgdG8gdGhlIHNjcmVlbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgUmVsYXRpdmVQb3NpdGlvbigpOiBQcm9taXNlPFBvc2l0aW9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oUmVsYXRpdmVQb3NpdGlvbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVsb2FkcyB0aGUgcGFnZSBhc3NldHMuXG4gICAgICovXG4gICAgUmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFJlbG9hZE1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB3aW5kb3cgaXMgcmVzaXphYmxlLlxuICAgICAqXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgd2luZG93IGlzIGN1cnJlbnRseSByZXNpemFibGUuXG4gICAgICovXG4gICAgUmVzaXphYmxlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFJlc2l6YWJsZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzdG9yZXMgdGhlIHdpbmRvdyB0byBpdHMgcHJldmlvdXMgc3RhdGUgaWYgaXQgd2FzIHByZXZpb3VzbHkgbWluaW1pc2VkLCBtYXhpbWlzZWQgb3IgZnVsbHNjcmVlbi5cbiAgICAgKi9cbiAgICBSZXN0b3JlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFJlc3RvcmVNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0geCAtIFRoZSBkZXNpcmVkIGhvcml6b250YWwgYWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdy5cbiAgICAgKiBAcGFyYW0geSAtIFRoZSBkZXNpcmVkIHZlcnRpY2FsIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgU2V0UG9zaXRpb24oeDogbnVtYmVyLCB5OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRQb3NpdGlvbk1ldGhvZCwgeyB4LCB5IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHdpbmRvdyB0byBiZSBhbHdheXMgb24gdG9wLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFsd2F5c09uVG9wIC0gV2hldGhlciB0aGUgd2luZG93IHNob3VsZCBzdGF5IG9uIHRvcC5cbiAgICAgKi9cbiAgICBTZXRBbHdheXNPblRvcChhbHdheXNPblRvcDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldEFsd2F5c09uVG9wTWV0aG9kLCB7IGFsd2F5c09uVG9wIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJhY2tncm91bmQgY29sb3VyIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gciAtIFRoZSBkZXNpcmVkIHJlZCBjb21wb25lbnQgb2YgdGhlIHdpbmRvdyBiYWNrZ3JvdW5kLlxuICAgICAqIEBwYXJhbSBnIC0gVGhlIGRlc2lyZWQgZ3JlZW4gY29tcG9uZW50IG9mIHRoZSB3aW5kb3cgYmFja2dyb3VuZC5cbiAgICAgKiBAcGFyYW0gYiAtIFRoZSBkZXNpcmVkIGJsdWUgY29tcG9uZW50IG9mIHRoZSB3aW5kb3cgYmFja2dyb3VuZC5cbiAgICAgKiBAcGFyYW0gYSAtIFRoZSBkZXNpcmVkIGFscGhhIGNvbXBvbmVudCBvZiB0aGUgd2luZG93IGJhY2tncm91bmQuXG4gICAgICovXG4gICAgU2V0QmFja2dyb3VuZENvbG91cihyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyLCBhOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRCYWNrZ3JvdW5kQ29sb3VyTWV0aG9kLCB7IHIsIGcsIGIsIGEgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgd2luZG93IGZyYW1lIGFuZCB0aXRsZSBiYXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZnJhbWVsZXNzIC0gV2hldGhlciB0aGUgd2luZG93IHNob3VsZCBiZSBmcmFtZWxlc3MuXG4gICAgICovXG4gICAgU2V0RnJhbWVsZXNzKGZyYW1lbGVzczogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldEZyYW1lbGVzc01ldGhvZCwgeyBmcmFtZWxlc3MgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgdGhlIHN5c3RlbSBmdWxsc2NyZWVuIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbmFibGVkIC0gV2hldGhlciB0aGUgZnVsbHNjcmVlbiBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWQuXG4gICAgICovXG4gICAgU2V0RnVsbHNjcmVlbkJ1dHRvbkVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldEZ1bGxzY3JlZW5CdXR0b25FbmFibGVkTWV0aG9kLCB7IGVuYWJsZWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gd2lkdGggLSBUaGUgZGVzaXJlZCBtYXhpbXVtIHdpZHRoIG9mIHRoZSB3aW5kb3cuXG4gICAgICogQHBhcmFtIGhlaWdodCAtIFRoZSBkZXNpcmVkIG1heGltdW0gaGVpZ2h0IG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgU2V0TWF4U2l6ZSh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldE1heFNpemVNZXRob2QsIHsgd2lkdGgsIGhlaWdodCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBtaW5pbXVtIHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB3aWR0aCAtIFRoZSBkZXNpcmVkIG1pbmltdW0gd2lkdGggb2YgdGhlIHdpbmRvdy5cbiAgICAgKiBAcGFyYW0gaGVpZ2h0IC0gVGhlIGRlc2lyZWQgbWluaW11bSBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRNaW5TaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0TWluU2l6ZU1ldGhvZCwgeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgdG8gdGhlIHNjcmVlbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB4IC0gVGhlIGRlc2lyZWQgaG9yaXpvbnRhbCByZWxhdGl2ZSBwb3NpdGlvbiBvZiB0aGUgd2luZG93LlxuICAgICAqIEBwYXJhbSB5IC0gVGhlIGRlc2lyZWQgdmVydGljYWwgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRSZWxhdGl2ZVBvc2l0aW9uKHg6IG51bWJlciwgeTogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0UmVsYXRpdmVQb3NpdGlvbk1ldGhvZCwgeyB4LCB5IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgd2hldGhlciB0aGUgd2luZG93IGlzIHJlc2l6YWJsZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXNpemFibGUgLSBXaGV0aGVyIHRoZSB3aW5kb3cgc2hvdWxkIGJlIHJlc2l6YWJsZS5cbiAgICAgKi9cbiAgICBTZXRSZXNpemFibGUocmVzaXphYmxlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0UmVzaXphYmxlTWV0aG9kLCB7IHJlc2l6YWJsZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzaXplIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gd2lkdGggLSBUaGUgZGVzaXJlZCB3aWR0aCBvZiB0aGUgd2luZG93LlxuICAgICAqIEBwYXJhbSBoZWlnaHQgLSBUaGUgZGVzaXJlZCBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRTaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0U2l6ZU1ldGhvZCwgeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRpdGxlIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGl0bGUgLSBUaGUgZGVzaXJlZCB0aXRsZSBvZiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFNldFRpdGxlKHRpdGxlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRUaXRsZU1ldGhvZCwgeyB0aXRsZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB6b29tIGxldmVsIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gem9vbSAtIFRoZSBkZXNpcmVkIHpvb20gbGV2ZWwuXG4gICAgICovXG4gICAgU2V0Wm9vbSh6b29tOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRab29tTWV0aG9kLCB7IHpvb20gfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvd3MgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTaG93KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNob3dNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTaXplKCk6IFByb21pc2U8U2l6ZT4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNpemVNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIHdpbmRvdyBiZXR3ZWVuIGZ1bGxzY3JlZW4gYW5kIG5vcm1hbC5cbiAgICAgKi9cbiAgICBUb2dnbGVGdWxsc2NyZWVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFRvZ2dsZUZ1bGxzY3JlZW5NZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIHdpbmRvdyBiZXR3ZWVuIG1heGltaXNlZCBhbmQgbm9ybWFsLlxuICAgICAqL1xuICAgIFRvZ2dsZU1heGltaXNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFRvZ2dsZU1heGltaXNlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIHRoZSB3aW5kb3cgYmV0d2VlbiBmcmFtZWxlc3MgYW5kIG5vcm1hbC5cbiAgICAgKi9cbiAgICBUb2dnbGVGcmFtZWxlc3MoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oVG9nZ2xlRnJhbWVsZXNzTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbi1mdWxsc2NyZWVucyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFVuRnVsbHNjcmVlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShVbkZ1bGxzY3JlZW5NZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVuLW1heGltaXNlcyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFVuTWF4aW1pc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oVW5NYXhpbWlzZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVW4tbWluaW1pc2VzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgVW5NaW5pbWlzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShVbk1pbmltaXNlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB3aWR0aCBvZiB0aGUgd2luZG93LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgd2lkdGggb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBXaWR0aCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFdpZHRoTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBab29tcyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFpvb20oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oWm9vbU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5jcmVhc2VzIHRoZSB6b29tIGxldmVsIG9mIHRoZSB3ZWJ2aWV3IGNvbnRlbnQuXG4gICAgICovXG4gICAgWm9vbUluKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFpvb21Jbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVjcmVhc2VzIHRoZSB6b29tIGxldmVsIG9mIHRoZSB3ZWJ2aWV3IGNvbnRlbnQuXG4gICAgICovXG4gICAgWm9vbU91dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShab29tT3V0TWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldHMgdGhlIHpvb20gbGV2ZWwgb2YgdGhlIHdlYnZpZXcgY29udGVudC5cbiAgICAgKi9cbiAgICBab29tUmVzZXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oWm9vbVJlc2V0TWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGZpbGUgZHJvcHMgb3JpZ2luYXRpbmcgZnJvbSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIChlLmcuLCBtYWNPUy9MaW51eCBuYXRpdmUgZHJhZy1hbmQtZHJvcCkuXG4gICAgICogR2F0aGVycyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZHJvcCB0YXJnZXQgZWxlbWVudCBhbmQgc2VuZHMgaXQgYmFjayB0byB0aGUgR28gYmFja2VuZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlbmFtZXMgLSBBbiBhcnJheSBvZiBmaWxlIHBhdGhzIChzdHJpbmdzKSB0aGF0IHdlcmUgZHJvcHBlZC5cbiAgICAgKiBAcGFyYW0geCAtIFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIGRyb3AgZXZlbnQsIGluIGxvZ2ljYWwgKENTUykgcGl4ZWxzIHJlbGF0aXZlIHRvIHRoZSB3ZWJ2aWV3LlxuICAgICAqIEBwYXJhbSB5IC0gVGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgZHJvcCBldmVudCwgaW4gbG9naWNhbCAoQ1NTKSBwaXhlbHMgcmVsYXRpdmUgdG8gdGhlIHdlYnZpZXcuXG4gICAgICovXG4gICAgSGFuZGxlUGxhdGZvcm1GaWxlRHJvcChmaWxlbmFtZXM6IHN0cmluZ1tdLCB4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBDaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBpZ25vcmUgdGhlIGRyb3BcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7XG4gICAgICAgIGNvbnN0IGRyb3BUYXJnZXQgPSBnZXREcm9wVGFyZ2V0RWxlbWVudChlbGVtZW50KTtcblxuICAgICAgICBpZiAoIWRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIC8vIERyb3Agd2FzIG5vdCBvbiBhIGRlc2lnbmF0ZWQgZHJvcCB0YXJnZXQgLSBpZ25vcmVcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnREZXRhaWxzID0ge1xuICAgICAgICAgICAgaWQ6IGRyb3BUYXJnZXQuaWQsXG4gICAgICAgICAgICBjbGFzc0xpc3Q6IEFycmF5LmZyb20oZHJvcFRhcmdldC5jbGFzc0xpc3QpLFxuICAgICAgICAgICAgYXR0cmlidXRlczoge30gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkcm9wVGFyZ2V0LmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBkcm9wVGFyZ2V0LmF0dHJpYnV0ZXNbaV07XG4gICAgICAgICAgICBlbGVtZW50RGV0YWlscy5hdHRyaWJ1dGVzW2F0dHIubmFtZV0gPSBhdHRyLnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgICAgIGZpbGVuYW1lcyxcbiAgICAgICAgICAgIHgsXG4gICAgICAgICAgICB5LFxuICAgICAgICAgICAgZWxlbWVudERldGFpbHMsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpc1tjYWxsZXJTeW1dKEZpbGVzRHJvcHBlZCwgcGF5bG9hZCk7XG4gICAgICAgIFxuICAgICAgICAvLyBDbGVhbiB1cCBuYXRpdmUgZHJhZyBzdGF0ZSBhZnRlciBkcm9wXG4gICAgICAgIGNsZWFudXBOYXRpdmVEcmFnKCk7XG4gICAgfVxuICBcbiAgICAvKipcbiAgICAgKiBNb3ZlcyB0aGUgd2luZG93IHRvIHRoZSBjZW50ZXIgb2YgdGhlIHNwZWNpZmllZCBzY3JlZW4ncyB3b3JrIGFyZWEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NyZWVuSUQgLSBUaGUgSUQgb2YgdGhlIHRhcmdldCBzY3JlZW4uXG4gICAgICovXG4gICAgU2V0U2NyZWVuKHNjcmVlbklEOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRTY3JlZW5NZXRob2QsIHsgc2NyZWVuSUQgfSk7XG4gICAgfVxuXG4gICAgLyogVHJpZ2dlcnMgV2luZG93cyAxMSBTbmFwIEFzc2lzdCBmZWF0dXJlIChXaW5kb3dzIG9ubHkpLlxuICAgICAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byBwcmVzc2luZyBXaW4rWiBhbmQgc2hvd3Mgc25hcCBsYXlvdXQgb3B0aW9ucy5cbiAgICAgKi9cbiAgICBTbmFwQXNzaXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNuYXBBc3Npc3RNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBwcmludCBkaWFsb2cgZm9yIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgUHJpbnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oUHJpbnRNZXRob2QpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgd2luZG93IHdpdGhpbiB3aGljaCB0aGUgc2NyaXB0IGlzIHJ1bm5pbmcuXG4gKi9cbmNvbnN0IHRoaXNXaW5kb3cgPSBuZXcgV2luZG93KCcnKTtcblxuLyoqXG4gKiBTZXRzIHVwIGdsb2JhbCBkcmFnIGFuZCBkcm9wIGV2ZW50IGxpc3RlbmVycyBmb3IgZmlsZSBkcm9wcy5cbiAqIEhhbmRsZXMgdmlzdWFsIGZlZWRiYWNrIChob3ZlciBzdGF0ZSkgYW5kIGZpbGUgZHJvcCBwcm9jZXNzaW5nLlxuICovXG5mdW5jdGlvbiBzZXR1cERyb3BUYXJnZXRMaXN0ZW5lcnMoKSB7XG4gICAgY29uc3QgZG9jRWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBsZXQgZHJhZ0VudGVyQ291bnRlciA9IDA7XG5cbiAgICBkb2NFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoIWV2ZW50LmRhdGFUcmFuc2Zlcj8udHlwZXMuaW5jbHVkZXMoJ0ZpbGVzJykpIHtcbiAgICAgICAgICAgIHJldHVybjsgLy8gT25seSBoYW5kbGUgZmlsZSBkcmFncywgbGV0IG90aGVyIGRyYWdzIHBhc3MgdGhyb3VnaFxuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIEFsd2F5cyBwcmV2ZW50IGRlZmF1bHQgdG8gc3RvcCBicm93c2VyIG5hdmlnYXRpb25cbiAgICAgICAgLy8gT24gV2luZG93cywgY2hlY2sgaWYgZmlsZSBkcm9wcyBhcmUgZW5hYmxlZCBmb3IgdGhpcyB3aW5kb3dcbiAgICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ25vbmUnOyAvLyBTaG93IFwibm8gZHJvcFwiIGN1cnNvclxuICAgICAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBkb24ndCBzaG93IGhvdmVyIGVmZmVjdHNcbiAgICAgICAgfVxuICAgICAgICBkcmFnRW50ZXJDb3VudGVyKys7XG4gICAgICAgIFxuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKTtcbiAgICAgICAgY29uc3QgZHJvcFRhcmdldCA9IGdldERyb3BUYXJnZXRFbGVtZW50KHRhcmdldEVsZW1lbnQpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBob3ZlciBzdGF0ZVxuICAgICAgICBpZiAoY3VycmVudERyb3BUYXJnZXQgJiYgY3VycmVudERyb3BUYXJnZXQgIT09IGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICBkcm9wVGFyZ2V0LmNsYXNzTGlzdC5hZGQoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ2NvcHknO1xuICAgICAgICAgICAgY3VycmVudERyb3BUYXJnZXQgPSBkcm9wVGFyZ2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbm9uZSc7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9LCBmYWxzZSk7XG5cbiAgICBkb2NFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBPbmx5IGhhbmRsZSBmaWxlIGRyYWdzXG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gQWx3YXlzIHByZXZlbnQgZGVmYXVsdCB0byBzdG9wIGJyb3dzZXIgbmF2aWdhdGlvblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBjaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbm9uZSc7IC8vIFNob3cgXCJubyBkcm9wXCIgY3Vyc29yXG4gICAgICAgICAgICByZXR1cm47IC8vIEZpbGUgZHJvcHMgZGlzYWJsZWQsIGRvbid0IHNob3cgaG92ZXIgZWZmZWN0c1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgZHJvcCB0YXJnZXQgYXMgY3Vyc29yIG1vdmVzXG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xuICAgICAgICBjb25zdCBkcm9wVGFyZ2V0ID0gZ2V0RHJvcFRhcmdldEVsZW1lbnQodGFyZ2V0RWxlbWVudCk7XG4gICAgICAgIFxuICAgICAgICBpZiAoY3VycmVudERyb3BUYXJnZXQgJiYgY3VycmVudERyb3BUYXJnZXQgIT09IGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGlmICghZHJvcFRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKSkge1xuICAgICAgICAgICAgICAgIGRyb3BUYXJnZXQuY2xhc3NMaXN0LmFkZChEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSc7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IGRyb3BUYXJnZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sIGZhbHNlKTtcblxuICAgIGRvY0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIEFsd2F5cyBwcmV2ZW50IGRlZmF1bHQgdG8gc3RvcCBicm93c2VyIG5hdmlnYXRpb25cbiAgICAgICAgLy8gT24gV2luZG93cywgY2hlY2sgaWYgZmlsZSBkcm9wcyBhcmUgZW5hYmxlZCBmb3IgdGhpcyB3aW5kb3dcbiAgICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gT24gTGludXgvV2ViS2l0R1RLIGFuZCBtYWNPUywgZHJhZ2xlYXZlIGZpcmVzIGltbWVkaWF0ZWx5IHdpdGggcmVsYXRlZFRhcmdldD1udWxsIHdoZW4gbmF0aXZlXG4gICAgICAgIC8vIGRyYWcgaGFuZGxpbmcgaXMgaW52b2x2ZWQuIElnbm9yZSB0aGVzZSBzcHVyaW91cyBldmVudHMgLSB3ZSdsbCBjbGVhbiB1cCBvbiBkcm9wIGluc3RlYWQuXG4gICAgICAgIGlmIChldmVudC5yZWxhdGVkVGFyZ2V0ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGRyYWdFbnRlckNvdW50ZXItLTtcbiAgICAgICAgXG4gICAgICAgIGlmIChkcmFnRW50ZXJDb3VudGVyID09PSAwIHx8IFxuICAgICAgICAgICAgKGN1cnJlbnREcm9wVGFyZ2V0ICYmICFjdXJyZW50RHJvcFRhcmdldC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpKSkge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnREcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgY3VycmVudERyb3BUYXJnZXQuY2xhc3NMaXN0LnJlbW92ZShEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRyYWdFbnRlckNvdW50ZXIgPSAwO1xuICAgICAgICB9XG4gICAgfSwgZmFsc2UpO1xuXG4gICAgZG9jRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBPbmx5IGhhbmRsZSBmaWxlIGRyb3BzXG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gQWx3YXlzIHByZXZlbnQgZGVmYXVsdCB0byBzdG9wIGJyb3dzZXIgbmF2aWdhdGlvblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBjaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRyYWdFbnRlckNvdW50ZXIgPSAwO1xuICAgICAgICBcbiAgICAgICAgaWYgKGN1cnJlbnREcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBoYW5kbGUgZmlsZSBkcm9wcyB2aWEgSmF2YVNjcmlwdFxuICAgICAgICAvLyBPbiBtYWNPUy9MaW51eCwgbmF0aXZlIGNvZGUgd2lsbCBjYWxsIEhhbmRsZVBsYXRmb3JtRmlsZURyb3BcbiAgICAgICAgaWYgKGNhblJlc29sdmVGaWxlUGF0aHMoKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZXM6IEZpbGVbXSA9IFtdO1xuICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ua2luZCA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gaXRlbS5nZXRBc0ZpbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlKSBmaWxlcy5wdXNoKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzLnB1c2goZmlsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmVGaWxlUGF0aHMoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSwgZmlsZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgZmFsc2UpO1xufVxuXG4vLyBJbml0aWFsaXplIGxpc3RlbmVycyB3aGVuIHRoZSBzY3JpcHQgbG9hZHNcbmlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHNldHVwRHJvcFRhcmdldExpc3RlbmVycygpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0aGlzV2luZG93O1xuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgKiBhcyBSdW50aW1lIGZyb20gXCIuLi9Ad2FpbHNpby9ydW50aW1lL3NyY1wiO1xuXG4vLyBOT1RFOiB0aGUgZm9sbG93aW5nIG1ldGhvZHMgTVVTVCBiZSBpbXBvcnRlZCBleHBsaWNpdGx5IGJlY2F1c2Ugb2YgaG93IGVzYnVpbGQgaW5qZWN0aW9uIHdvcmtzXG5pbXBvcnQgeyBFbmFibGUgYXMgRW5hYmxlV01MIH0gZnJvbSBcIi4uL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3dtbFwiO1xuaW1wb3J0IHsgZGVidWdMb2cgfSBmcm9tIFwiLi4vQHdhaWxzaW8vcnVudGltZS9zcmMvdXRpbHNcIjtcblxud2luZG93LndhaWxzID0gUnVudGltZTtcbkVuYWJsZVdNTCgpO1xuXG5pZiAoREVCVUcpIHtcbiAgICBkZWJ1Z0xvZyhcIldhaWxzIFJ1bnRpbWUgTG9hZGVkXCIpXG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5TeXN0ZW0pO1xuXG5jb25zdCBTeXN0ZW1Jc0RhcmtNb2RlID0gMDtcbmNvbnN0IFN5c3RlbUVudmlyb25tZW50ID0gMTtcbmNvbnN0IFN5c3RlbUNhcGFiaWxpdGllcyA9IDI7XG5cbmNvbnN0IF9pbnZva2UgPSAoZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIFdpbmRvd3MgV2ViVmlldzJcbiAgICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5jaHJvbWU/LndlYnZpZXc/LnBvc3RNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLmNocm9tZS53ZWJ2aWV3LnBvc3RNZXNzYWdlLmJpbmQoKHdpbmRvdyBhcyBhbnkpLmNocm9tZS53ZWJ2aWV3KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBtYWNPUy9pT1MgV0tXZWJWaWV3XG4gICAgICAgIGVsc2UgaWYgKCh3aW5kb3cgYXMgYW55KS53ZWJraXQ/Lm1lc3NhZ2VIYW5kbGVycz8uWydleHRlcm5hbCddPy5wb3N0TWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS53ZWJraXQubWVzc2FnZUhhbmRsZXJzWydleHRlcm5hbCddLnBvc3RNZXNzYWdlLmJpbmQoKHdpbmRvdyBhcyBhbnkpLndlYmtpdC5tZXNzYWdlSGFuZGxlcnNbJ2V4dGVybmFsJ10pO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFuZHJvaWQgV2ViVmlldyAtIHVzZXMgYWRkSmF2YXNjcmlwdEludGVyZmFjZSB3aGljaCBleHBvc2VzIHdpbmRvdy53YWlscy5pbnZva2VcbiAgICAgICAgZWxzZSBpZiAoKHdpbmRvdyBhcyBhbnkpLndhaWxzPy5pbnZva2UpIHtcbiAgICAgICAgICAgIHJldHVybiAobXNnOiBhbnkpID0+ICh3aW5kb3cgYXMgYW55KS53YWlscy5pbnZva2UodHlwZW9mIG1zZyA9PT0gJ3N0cmluZycgPyBtc2cgOiBKU09OLnN0cmluZ2lmeShtc2cpKTtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2goZSkge31cblxuICAgIGNvbnNvbGUud2FybignXFxuJWNcdTI2QTBcdUZFMEYgQnJvd3NlciBFbnZpcm9ubWVudCBEZXRlY3RlZCAlY1xcblxcbiVjT25seSBVSSBwcmV2aWV3cyBhcmUgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyLiBGb3IgZnVsbCBmdW5jdGlvbmFsaXR5LCBwbGVhc2UgcnVuIHRoZSBhcHBsaWNhdGlvbiBpbiBkZXNrdG9wIG1vZGUuXFxuTW9yZSBpbmZvcm1hdGlvbiBhdDogaHR0cHM6Ly92My53YWlscy5pby9sZWFybi9idWlsZC8jdXNpbmctYS1icm93c2VyLWZvci1kZXZlbG9wbWVudFxcbicsXG4gICAgICAgICdiYWNrZ3JvdW5kOiAjZmZmZmZmOyBjb2xvcjogIzAwMDAwMDsgZm9udC13ZWlnaHQ6IGJvbGQ7IHBhZGRpbmc6IDRweCA4cHg7IGJvcmRlci1yYWRpdXM6IDRweDsgYm9yZGVyOiAycHggc29saWQgIzAwMDAwMDsnLFxuICAgICAgICAnYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7JyxcbiAgICAgICAgJ2NvbG9yOiAjZmZmZmZmOyBmb250LXN0eWxlOiBpdGFsaWM7IGZvbnQtd2VpZ2h0OiBib2xkOycpO1xuICAgIHJldHVybiBudWxsO1xufSkoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZShtc2c6IGFueSk6IHZvaWQge1xuICAgIF9pbnZva2U/Lihtc2cpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgc3lzdGVtIGRhcmsgbW9kZSBzdGF0dXMuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgaWYgdGhlIHN5c3RlbSBpcyBpbiBkYXJrIG1vZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc0RhcmtNb2RlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBjYWxsKFN5c3RlbUlzRGFya01vZGUpO1xufVxuXG4vKipcbiAqIEZldGNoZXMgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgYXBwbGljYXRpb24gZnJvbSB0aGUgc2VydmVyLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBjYXBhYmlsaXRpZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBDYXBhYmlsaXRpZXMoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgcmV0dXJuIGNhbGwoU3lzdGVtQ2FwYWJpbGl0aWVzKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPU0luZm8ge1xuICAgIC8qKiBUaGUgYnJhbmRpbmcgb2YgdGhlIE9TLiAqL1xuICAgIEJyYW5kaW5nOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBJRCBvZiB0aGUgT1MuICovXG4gICAgSUQ6IHN0cmluZztcbiAgICAvKiogVGhlIG5hbWUgb2YgdGhlIE9TLiAqL1xuICAgIE5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIHZlcnNpb24gb2YgdGhlIE9TLiAqL1xuICAgIFZlcnNpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudEluZm8ge1xuICAgIC8qKiBUaGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBzeXN0ZW0uICovXG4gICAgQXJjaDogc3RyaW5nO1xuICAgIC8qKiBUcnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nIGluIGRlYnVnIG1vZGUsIG90aGVyd2lzZSBmYWxzZS4gKi9cbiAgICBEZWJ1ZzogYm9vbGVhbjtcbiAgICAvKiogVGhlIG9wZXJhdGluZyBzeXN0ZW0gaW4gdXNlLiAqL1xuICAgIE9TOiBzdHJpbmc7XG4gICAgLyoqIERldGFpbHMgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICovXG4gICAgT1NJbmZvOiBPU0luZm87XG4gICAgLyoqIEFkZGl0aW9uYWwgcGxhdGZvcm0gaW5mb3JtYXRpb24uICovXG4gICAgUGxhdGZvcm1JbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBlbnZpcm9ubWVudCBkZXRhaWxzLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9iamVjdCBjb250YWluaW5nIE9TIGFuZCBzeXN0ZW0gYXJjaGl0ZWN0dXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRW52aXJvbm1lbnQoKTogUHJvbWlzZTxFbnZpcm9ubWVudEluZm8+IHtcbiAgICByZXR1cm4gY2FsbChTeXN0ZW1FbnZpcm9ubWVudCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0gaXMgV2luZG93cy5cbiAqXG4gKiBAcmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaXMgV2luZG93cywgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNXaW5kb3dzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1MgPT09IFwid2luZG93c1wiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtIGlzIExpbnV4LlxuICpcbiAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtIGlzIExpbnV4LCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc0xpbnV4KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1MgPT09IFwibGludXhcIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgYSBtYWNPUyBvcGVyYXRpbmcgc3lzdGVtLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGVudmlyb25tZW50IGlzIG1hY09TLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc01hYygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZW52aXJvbm1lbnQ/Lk9TID09PSBcImRhcndpblwiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtIGlzIGlPUy5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGlzIGlPUywgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNJT1MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmVudmlyb25tZW50Py5PUyA9PT0gXCJpb3NcIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbSBpcyBBbmRyb2lkLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaXMgQW5kcm9pZCwgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNBbmRyb2lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1MgPT09IFwiYW5kcm9pZFwiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgYXBwIGlzIHJ1bm5pbmcgb24gYSBtb2JpbGUgT1MgKGlPUyBvciBBbmRyb2lkKS5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIG9uIGlPUyBvciBBbmRyb2lkLCBvdGhlcndpc2UgZmFsc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gSXNJT1MoKSB8fCBJc0FuZHJvaWQoKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGFwcCBpcyBydW5uaW5nIG9uIGEgZGVza3RvcCBPUyAobWFjT1MsIFdpbmRvd3Mgb3IgTGludXgpLlxuICpcbiAqIEByZXR1cm5zIFRydWUgb24gbWFjT1MsIFdpbmRvd3Mgb3IgTGludXgsIG90aGVyd2lzZSBmYWxzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzRGVza3RvcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gSXNNYWMoKSB8fCBJc1dpbmRvd3MoKSB8fCBJc0xpbnV4KCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGFyY2hpdGVjdHVyZSBpcyBBTUQ2NC5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGFyY2hpdGVjdHVyZSBpcyBBTUQ2NCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNBTUQ2NCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZW52aXJvbm1lbnQ/LkFyY2ggPT09IFwiYW1kNjRcIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgYXJjaGl0ZWN0dXJlIGlzIEFSTS5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjdXJyZW50IGFyY2hpdGVjdHVyZSBpcyBBUk0sIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzQVJNKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uQXJjaCA9PT0gXCJhcm1cIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgQVJNNjQgYXJjaGl0ZWN0dXJlLlxuICpcbiAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgZW52aXJvbm1lbnQgaXMgQVJNNjQgYXJjaGl0ZWN0dXJlLCBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzQVJNNjQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmVudmlyb25tZW50Py5BcmNoID09PSBcImFybTY0XCI7XG59XG5cbi8qKlxuICogUmVwb3J0cyB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgcnVuIGluIGRlYnVnIG1vZGUuXG4gKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgYXBwIGlzIGJlaW5nIHJ1biBpbiBkZWJ1ZyBtb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNEZWJ1ZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbigod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uRGVidWcpO1xufVxuXG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuaW1wb3J0IHsgSXNEZWJ1ZyB9IGZyb20gXCIuL3N5c3RlbS5qc1wiO1xuaW1wb3J0IHsgZXZlbnRUYXJnZXQgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG4vLyBzZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIGNvbnRleHRNZW51SGFuZGxlcik7XG59XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkNvbnRleHRNZW51KTtcblxuY29uc3QgQ29udGV4dE1lbnVPcGVuID0gMDtcblxuZnVuY3Rpb24gb3BlbkNvbnRleHRNZW51KGlkOiBzdHJpbmcsIHg6IG51bWJlciwgeTogbnVtYmVyLCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB2b2lkIGNhbGwoQ29udGV4dE1lbnVPcGVuLCB7aWQsIHgsIHksIGRhdGF9KTtcbn1cblxuZnVuY3Rpb24gY29udGV4dE1lbnVIYW5kbGVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnRUYXJnZXQoZXZlbnQpO1xuXG4gICAgLy8gQ2hlY2sgZm9yIGN1c3RvbSBjb250ZXh0IG1lbnVcbiAgICBjb25zdCBjdXN0b21Db250ZXh0TWVudSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRhcmdldCkuZ2V0UHJvcGVydHlWYWx1ZShcIi0tY3VzdG9tLWNvbnRleHRtZW51XCIpLnRyaW0oKTtcblxuICAgIGlmIChjdXN0b21Db250ZXh0TWVudSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBkYXRhID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1jdXN0b20tY29udGV4dG1lbnUtZGF0YVwiKTtcbiAgICAgICAgb3BlbkNvbnRleHRNZW51KGN1c3RvbUNvbnRleHRNZW51LCBldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZLCBkYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzRGVmYXVsdENvbnRleHRNZW51KGV2ZW50LCB0YXJnZXQpO1xuICAgIH1cbn1cblxuXG4vKlxuLS1kZWZhdWx0LWNvbnRleHRtZW51OiBhdXRvOyAoZGVmYXVsdCkgd2lsbCBzaG93IHRoZSBkZWZhdWx0IGNvbnRleHQgbWVudSBpZiBjb250ZW50RWRpdGFibGUgaXMgdHJ1ZSBPUiB0ZXh0IGhhcyBiZWVuIHNlbGVjdGVkIE9SIGVsZW1lbnQgaXMgaW5wdXQgb3IgdGV4dGFyZWFcbi0tZGVmYXVsdC1jb250ZXh0bWVudTogc2hvdzsgd2lsbCBhbHdheXMgc2hvdyB0aGUgZGVmYXVsdCBjb250ZXh0IG1lbnVcbi0tZGVmYXVsdC1jb250ZXh0bWVudTogaGlkZTsgd2lsbCBhbHdheXMgaGlkZSB0aGUgZGVmYXVsdCBjb250ZXh0IG1lbnVcblxuVGhpcyBydWxlIGlzIGluaGVyaXRlZCBsaWtlIG5vcm1hbCBDU1MgcnVsZXMsIHNvIG5lc3Rpbmcgd29ya3MgYXMgZXhwZWN0ZWRcbiovXG5mdW5jdGlvbiBwcm9jZXNzRGVmYXVsdENvbnRleHRNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCB0YXJnZXQ6IEhUTUxFbGVtZW50KSB7XG4gICAgLy8gRGVidWcgYnVpbGRzIGFsd2F5cyBzaG93IHRoZSBtZW51XG4gICAgaWYgKElzRGVidWcoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzcyBkZWZhdWx0IGNvbnRleHQgbWVudVxuICAgIHN3aXRjaCAod2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1kZWZhdWx0LWNvbnRleHRtZW51XCIpLnRyaW0oKSkge1xuICAgICAgICBjYXNlICdzaG93JzpcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAnaGlkZSc6XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGNvbnRlbnRFZGl0YWJsZSBpcyB0cnVlXG4gICAgaWYgKHRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdGV4dCBoYXMgYmVlbiBzZWxlY3RlZFxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBjb25zdCBoYXNTZWxlY3Rpb24gPSBzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnRvU3RyaW5nKCkubGVuZ3RoID4gMDtcbiAgICBpZiAoaGFzU2VsZWN0aW9uKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0aW9uLnJhbmdlQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdChpKTtcbiAgICAgICAgICAgIGNvbnN0IHJlY3RzID0gcmFuZ2UuZ2V0Q2xpZW50UmVjdHMoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcmVjdHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0gcmVjdHNbal07XG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQocmVjdC5sZWZ0LCByZWN0LnRvcCkgPT09IHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdGFnIGlzIGlucHV0IG9yIHRleHRhcmVhLlxuICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8IHRhcmdldCBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKGhhc1NlbGVjdGlvbiB8fCAoIXRhcmdldC5yZWFkT25seSAmJiAhdGFyZ2V0LmRpc2FibGVkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gaGlkZSBkZWZhdWx0IGNvbnRleHQgbWVudVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZnJvbSB0aGUgZmxhZyBtYXAuXG4gKlxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gcmV0cmlldmUgdGhlIHZhbHVlIGZvci5cbiAqIEByZXR1cm4gVGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldEZsYWcoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuX3dhaWxzLmZsYWdzW2tleV07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gcmV0cmlldmUgZmxhZyAnXCIgKyBrZXkgKyBcIic6IFwiICsgZSwgeyBjYXVzZTogZSB9KTtcbiAgICB9XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IGludm9rZSwgSXNXaW5kb3dzLCBJc0xpbnV4IH0gZnJvbSBcIi4vc3lzdGVtLmpzXCI7XG5pbXBvcnQgeyBHZXRGbGFnIH0gZnJvbSBcIi4vZmxhZ3MuanNcIjtcbmltcG9ydCB7IGNhblRyYWNrQnV0dG9ucywgZXZlbnRUYXJnZXQgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG4vLyBTZXR1cFxubGV0IGNhbkRyYWcgPSBmYWxzZTtcbmxldCBkcmFnZ2luZyA9IGZhbHNlO1xuXG5sZXQgcmVzaXphYmxlID0gZmFsc2U7XG5sZXQgY2FuUmVzaXplID0gZmFsc2U7XG5sZXQgcmVzaXppbmcgPSBmYWxzZTtcbmxldCByZXNpemVFZGdlOiBzdHJpbmcgPSBcIlwiO1xubGV0IGRlZmF1bHRDdXJzb3IgPSBcImF1dG9cIjtcblxubGV0IGJ1dHRvbnMgPSAwO1xuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxubGV0IGJ1dHRvbnNUcmFja2VkID0gZmFsc2U7XG5cbmlmIChoYXNET00pIHtcbiAgICBidXR0b25zVHJhY2tlZCA9IGNhblRyYWNrQnV0dG9ucygpO1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xuICAgIHdpbmRvdy5fd2FpbHMuc2V0UmVzaXphYmxlID0gKHZhbHVlOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIHJlc2l6YWJsZSA9IHZhbHVlO1xuICAgICAgICBpZiAoIXJlc2l6YWJsZSkge1xuICAgICAgICAgICAgLy8gU3RvcCByZXNpemluZyBpZiBpbiBwcm9ncmVzcy5cbiAgICAgICAgICAgIGNhblJlc2l6ZSA9IHJlc2l6aW5nID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRSZXNpemUoKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbi8vIERlZmVyIGF0dGFjaGluZyBtb3VzZSBsaXN0ZW5lcnMgdW50aWwgd2Uga25vdyB3ZSdyZSBub3Qgb24gbW9iaWxlLlxubGV0IGRyYWdJbml0RG9uZSA9IGZhbHNlO1xuZnVuY3Rpb24gaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgb3MgPSAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1M7XG4gICAgaWYgKG9zID09PSBcImlvc1wiIHx8IG9zID09PSBcImFuZHJvaWRcIikgcmV0dXJuIHRydWU7XG4gICAgLy8gRmFsbGJhY2sgaGV1cmlzdGljIGlmIGVudmlyb25tZW50IG5vdCB5ZXQgc2V0XG4gICAgY29uc3QgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50IHx8IG5hdmlnYXRvci52ZW5kb3IgfHwgKHdpbmRvdyBhcyBhbnkpLm9wZXJhIHx8IFwiXCI7XG4gICAgcmV0dXJuIC9hbmRyb2lkfGlwaG9uZXxpcGFkfGlwb2R8aWVtb2JpbGV8d3BkZXNrdG9wL2kudGVzdCh1YSk7XG59XG5mdW5jdGlvbiB0cnlJbml0RHJhZ0hhbmRsZXJzKCk6IHZvaWQge1xuICAgIGlmIChkcmFnSW5pdERvbmUpIHJldHVybjtcbiAgICBpZiAoaXNNb2JpbGUoKSkgcmV0dXJuO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB1cGRhdGUsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdXBkYXRlLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB1cGRhdGUsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICBmb3IgKGNvbnN0IGV2IG9mIFsnY2xpY2snLCAnY29udGV4dG1lbnUnLCAnZGJsY2xpY2snXSkge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihldiwgc3VwcHJlc3NFdmVudCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgIH1cbiAgICBkcmFnSW5pdERvbmUgPSB0cnVlO1xufVxuaWYgKGhhc0RPTSkge1xuICAgIC8vIEF0dGVtcHQgaW1tZWRpYXRlIGluaXQgKGluIGNhc2UgZW52aXJvbm1lbnQgYWxyZWFkeSBwcmVzZW50KVxuICAgIHRyeUluaXREcmFnSGFuZGxlcnMoKTtcbiAgICAvLyBBbHNvIGF0dGVtcHQgb24gRE9NIHJlYWR5XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIHRyeUluaXREcmFnSGFuZGxlcnMsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICAvLyBBcyBhIGxhc3QgcmVzb3J0LCBwb2xsIGZvciBlbnZpcm9ubWVudCBmb3IgYSBzaG9ydCBwZXJpb2RcbiAgICBsZXQgZHJhZ0VudlBvbGxzID0gMDtcbiAgICBjb25zdCBkcmFnRW52UG9sbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGlmIChkcmFnSW5pdERvbmUpIHsgd2luZG93LmNsZWFySW50ZXJ2YWwoZHJhZ0VudlBvbGwpOyByZXR1cm47IH1cbiAgICAgICAgdHJ5SW5pdERyYWdIYW5kbGVycygpO1xuICAgICAgICBpZiAoKytkcmFnRW52UG9sbHMgPiAxMDApIHsgd2luZG93LmNsZWFySW50ZXJ2YWwoZHJhZ0VudlBvbGwpOyB9XG4gICAgfSwgNTApO1xufVxuXG5mdW5jdGlvbiBzdXBwcmVzc0V2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIC8vIFN1cHByZXNzIGNsaWNrIGV2ZW50cyB3aGlsZSByZXNpemluZyBvciBkcmFnZ2luZy5cbiAgICBpZiAoZHJhZ2dpbmcgfHwgcmVzaXppbmcpIHtcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbn1cblxuLy8gVXNlIGNvbnN0YW50cyB0byBhdm9pZCBjb21wYXJpbmcgc3RyaW5ncyBtdWx0aXBsZSB0aW1lcy5cbmNvbnN0IE1vdXNlRG93biA9IDA7XG5jb25zdCBNb3VzZVVwICAgPSAxO1xuY29uc3QgTW91c2VNb3ZlID0gMjtcblxuZnVuY3Rpb24gdXBkYXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgLy8gV2luZG93cyBzdXBwcmVzc2VzIG1vdXNlIGV2ZW50cyBhdCB0aGUgZW5kIG9mIGRyYWdnaW5nIG9yIHJlc2l6aW5nLFxuICAgIC8vIHNvIHdlIG5lZWQgdG8gYmUgc21hcnQgYW5kIHN5bnRoZXNpemUgYnV0dG9uIGV2ZW50cy5cblxuICAgIGxldCBldmVudFR5cGU6IG51bWJlciwgZXZlbnRCdXR0b25zID0gZXZlbnQuYnV0dG9ucztcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnbW91c2Vkb3duJzpcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IE1vdXNlRG93bjtcbiAgICAgICAgICAgIGlmICghYnV0dG9uc1RyYWNrZWQpIHsgZXZlbnRCdXR0b25zID0gYnV0dG9ucyB8ICgxIDw8IGV2ZW50LmJ1dHRvbik7IH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtb3VzZXVwJzpcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IE1vdXNlVXA7XG4gICAgICAgICAgICBpZiAoIWJ1dHRvbnNUcmFja2VkKSB7IGV2ZW50QnV0dG9ucyA9IGJ1dHRvbnMgJiB+KDEgPDwgZXZlbnQuYnV0dG9uKTsgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBldmVudFR5cGUgPSBNb3VzZU1vdmU7XG4gICAgICAgICAgICBpZiAoIWJ1dHRvbnNUcmFja2VkKSB7IGV2ZW50QnV0dG9ucyA9IGJ1dHRvbnM7IH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxldCByZWxlYXNlZCA9IGJ1dHRvbnMgJiB+ZXZlbnRCdXR0b25zO1xuICAgIGxldCBwcmVzc2VkID0gZXZlbnRCdXR0b25zICYgfmJ1dHRvbnM7XG5cbiAgICBidXR0b25zID0gZXZlbnRCdXR0b25zO1xuXG4gICAgLy8gU3ludGhlc2l6ZSBhIHJlbGVhc2UtcHJlc3Mgc2VxdWVuY2UgaWYgd2UgZGV0ZWN0IGEgcHJlc3Mgb2YgYW4gYWxyZWFkeSBwcmVzc2VkIGJ1dHRvbi5cbiAgICBpZiAoZXZlbnRUeXBlID09PSBNb3VzZURvd24gJiYgIShwcmVzc2VkICYgZXZlbnQuYnV0dG9uKSkge1xuICAgICAgICByZWxlYXNlZCB8PSAoMSA8PCBldmVudC5idXR0b24pO1xuICAgICAgICBwcmVzc2VkIHw9ICgxIDw8IGV2ZW50LmJ1dHRvbik7XG4gICAgfVxuXG4gICAgLy8gU3VwcHJlc3MgYWxsIGJ1dHRvbiBldmVudHMgZHVyaW5nIGRyYWdnaW5nIGFuZCByZXNpemluZyxcbiAgICAvLyB1bmxlc3MgdGhpcyBpcyBhIG1vdXNldXAgZXZlbnQgdGhhdCBpcyBlbmRpbmcgYSBkcmFnIGFjdGlvbi5cbiAgICBpZiAoXG4gICAgICAgIGV2ZW50VHlwZSAhPT0gTW91c2VNb3ZlIC8vIEZhc3QgcGF0aCBmb3IgbW91c2Vtb3ZlXG4gICAgICAgICYmIHJlc2l6aW5nXG4gICAgICAgIHx8IChcbiAgICAgICAgICAgIGRyYWdnaW5nXG4gICAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAgICAgZXZlbnRUeXBlID09PSBNb3VzZURvd25cbiAgICAgICAgICAgICAgICB8fCBldmVudC5idXR0b24gIT09IDBcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICkge1xuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHJlbGVhc2VzXG4gICAgaWYgKHJlbGVhc2VkICYgMSkgeyBwcmltYXJ5VXAoZXZlbnQpOyB9XG4gICAgLy8gSGFuZGxlIHByZXNzZXNcbiAgICBpZiAocHJlc3NlZCAmIDEpIHsgcHJpbWFyeURvd24oZXZlbnQpOyB9XG5cbiAgICAvLyBIYW5kbGUgbW91c2Vtb3ZlXG4gICAgaWYgKGV2ZW50VHlwZSA9PT0gTW91c2VNb3ZlKSB7IG9uTW91c2VNb3ZlKGV2ZW50KTsgfTtcbn1cblxuZnVuY3Rpb24gcHJpbWFyeURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBSZXNldCByZWFkaW5lc3Mgc3RhdGUuXG4gICAgY2FuRHJhZyA9IGZhbHNlO1xuICAgIGNhblJlc2l6ZSA9IGZhbHNlO1xuXG4gICAgLy8gSWdub3JlIHJlcGVhdGVkIGNsaWNrcyBvbiBtYWNPUyBhbmQgTGludXguXG4gICAgaWYgKCFJc1dpbmRvd3MoKSkge1xuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21vdXNlZG93bicgJiYgZXZlbnQuYnV0dG9uID09PSAwICYmIGV2ZW50LmRldGFpbCAhPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc2l6ZUVkZ2UpIHtcbiAgICAgICAgLy8gUmVhZHkgdG8gcmVzaXplIGlmIHRoZSBwcmltYXJ5IGJ1dHRvbiB3YXMgcHJlc3NlZCBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gICAgICAgIGNhblJlc2l6ZSA9IHRydWU7XG4gICAgICAgIC8vIERvIG5vdCBzdGFydCBkcmFnIG9wZXJhdGlvbnMgd2hlbiBvbiByZXNpemUgZWRnZXMuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZXRyaWV2ZSB0YXJnZXQgZWxlbWVudFxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50VGFyZ2V0KGV2ZW50KTtcblxuICAgIC8vIFJlYWR5IHRvIGRyYWcgaWYgdGhlIHByaW1hcnkgYnV0dG9uIHdhcyBwcmVzc2VkIGZvciB0aGUgZmlyc3QgdGltZSBvbiBhIGRyYWdnYWJsZSBlbGVtZW50LlxuICAgIC8vIElnbm9yZSBjbGlja3Mgb24gdGhlIHNjcm9sbGJhci5cbiAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRhcmdldCk7XG4gICAgY2FuRHJhZyA9IChcbiAgICAgICAgc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcIi0td2FpbHMtZHJhZ2dhYmxlXCIpLnRyaW0oKSA9PT0gXCJkcmFnXCJcbiAgICAgICAgJiYgKFxuICAgICAgICAgICAgZXZlbnQub2Zmc2V0WCAtIHBhcnNlRmxvYXQoc3R5bGUucGFkZGluZ0xlZnQpIDwgdGFyZ2V0LmNsaWVudFdpZHRoXG4gICAgICAgICAgICAmJiBldmVudC5vZmZzZXRZIC0gcGFyc2VGbG9hdChzdHlsZS5wYWRkaW5nVG9wKSA8IHRhcmdldC5jbGllbnRIZWlnaHRcbiAgICAgICAgKVxuICAgICk7XG59XG5cbmZ1bmN0aW9uIHByaW1hcnlVcChldmVudDogTW91c2VFdmVudCkge1xuICAgIC8vIFN0b3AgZHJhZ2dpbmcgYW5kIHJlc2l6aW5nLlxuICAgIGNhbkRyYWcgPSBmYWxzZTtcbiAgICBkcmFnZ2luZyA9IGZhbHNlO1xuICAgIGNhblJlc2l6ZSA9IGZhbHNlO1xuICAgIHJlc2l6aW5nID0gZmFsc2U7XG59XG5cbmNvbnN0IGN1cnNvckZvckVkZ2UgPSBPYmplY3QuZnJlZXplKHtcbiAgICBcInNlLXJlc2l6ZVwiOiBcIm53c2UtcmVzaXplXCIsXG4gICAgXCJzdy1yZXNpemVcIjogXCJuZXN3LXJlc2l6ZVwiLFxuICAgIFwibnctcmVzaXplXCI6IFwibndzZS1yZXNpemVcIixcbiAgICBcIm5lLXJlc2l6ZVwiOiBcIm5lc3ctcmVzaXplXCIsXG4gICAgXCJ3LXJlc2l6ZVwiOiBcImV3LXJlc2l6ZVwiLFxuICAgIFwibi1yZXNpemVcIjogXCJucy1yZXNpemVcIixcbiAgICBcInMtcmVzaXplXCI6IFwibnMtcmVzaXplXCIsXG4gICAgXCJlLXJlc2l6ZVwiOiBcImV3LXJlc2l6ZVwiLFxufSlcblxuZnVuY3Rpb24gc2V0UmVzaXplKGVkZ2U/OiBrZXlvZiB0eXBlb2YgY3Vyc29yRm9yRWRnZSk6IHZvaWQge1xuICAgIGlmIChlZGdlKSB7XG4gICAgICAgIGlmICghcmVzaXplRWRnZSkgeyBkZWZhdWx0Q3Vyc29yID0gZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3I7IH1cbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSBjdXJzb3JGb3JFZGdlW2VkZ2VdO1xuICAgIH0gZWxzZSBpZiAoIWVkZ2UgJiYgcmVzaXplRWRnZSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IGRlZmF1bHRDdXJzb3I7XG4gICAgfVxuXG4gICAgcmVzaXplRWRnZSA9IGVkZ2UgfHwgXCJcIjtcbn1cblxuZnVuY3Rpb24gb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoY2FuUmVzaXplICYmIHJlc2l6ZUVkZ2UpIHtcbiAgICAgICAgLy8gU3RhcnQgcmVzaXppbmcuXG4gICAgICAgIHJlc2l6aW5nID0gdHJ1ZTtcbiAgICAgICAgaW52b2tlKFwid2FpbHM6cmVzaXplOlwiICsgcmVzaXplRWRnZSk7XG4gICAgfSBlbHNlIGlmIChjYW5EcmFnKSB7XG4gICAgICAgIC8vIFN0YXJ0IGRyYWdnaW5nLlxuICAgICAgICBkcmFnZ2luZyA9IHRydWU7XG4gICAgICAgIGludm9rZShcIndhaWxzOmRyYWdcIik7XG4gICAgfVxuXG4gICAgaWYgKGRyYWdnaW5nIHx8IHJlc2l6aW5nKSB7XG4gICAgICAgIC8vIEVpdGhlciBkcmFnIG9yIHJlc2l6ZSBpcyBvbmdvaW5nLFxuICAgICAgICAvLyByZXNldCByZWFkaW5lc3MgYW5kIHN0b3AgcHJvY2Vzc2luZy5cbiAgICAgICAgY2FuRHJhZyA9IGNhblJlc2l6ZSA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFyZXNpemFibGUgfHwgKCFJc1dpbmRvd3MoKSAmJiAhKElzTGludXgoKSAmJiBHZXRGbGFnKFwiZnJhbWVsZXNzXCIpKSkpIHtcbiAgICAgICAgaWYgKHJlc2l6ZUVkZ2UpIHsgc2V0UmVzaXplKCk7IH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc2l6ZUhhbmRsZUhlaWdodCA9IEdldEZsYWcoXCJzeXN0ZW0ucmVzaXplSGFuZGxlSGVpZ2h0XCIpIHx8IDU7XG4gICAgY29uc3QgcmVzaXplSGFuZGxlV2lkdGggPSBHZXRGbGFnKFwic3lzdGVtLnJlc2l6ZUhhbmRsZVdpZHRoXCIpIHx8IDU7XG5cbiAgICAvLyBFeHRyYSBwaXhlbHMgZm9yIHRoZSBjb3JuZXIgYXJlYXMuXG4gICAgY29uc3QgY29ybmVyRXh0cmEgPSBHZXRGbGFnKFwicmVzaXplQ29ybmVyRXh0cmFcIikgfHwgMTA7XG5cbiAgICAvLyBXaGVuIGEgc2Nyb2xsYmFyIGlzIHByZXNlbnQgYXQgdGhlIHdpbmRvdyBlZGdlIGl0IGNvbnN1bWVzIG1vdXNlIGV2ZW50cyBpbiB0aGF0IHN0cmlwLlxuICAgIC8vIFNoaWZ0IHRoZSBlZmZlY3RpdmUgY29udGVudCBlZGdlIGlud2FyZCBzbyB0aGUgcmVzaXplIHpvbmUgc2l0cyBqdXN0IGJlZm9yZSB0aGUgc2Nyb2xsYmFyLlxuICAgIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gTWF0aC5tYXgoMCwgd2luZG93LmlubmVyV2lkdGggLSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpO1xuICAgIGNvbnN0IHNjcm9sbGJhckhlaWdodCA9IE1hdGgubWF4KDAsIHdpbmRvdy5pbm5lckhlaWdodCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpO1xuICAgIGNvbnN0IHJpZ2h0Q29udGVudEVkZ2UgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIHNjcm9sbGJhcldpZHRoO1xuICAgIGNvbnN0IGJvdHRvbUNvbnRlbnRFZGdlID0gd2luZG93LmlubmVySGVpZ2h0IC0gc2Nyb2xsYmFySGVpZ2h0O1xuXG4gICAgY29uc3QgcmlnaHRCb3JkZXIgPSBldmVudC5jbGllbnRYIDwgcmlnaHRDb250ZW50RWRnZSAmJiAocmlnaHRDb250ZW50RWRnZSAtIGV2ZW50LmNsaWVudFgpIDwgcmVzaXplSGFuZGxlV2lkdGg7XG4gICAgY29uc3QgbGVmdEJvcmRlciA9IGV2ZW50LmNsaWVudFggPCByZXNpemVIYW5kbGVXaWR0aDtcbiAgICBjb25zdCB0b3BCb3JkZXIgPSBldmVudC5jbGllbnRZIDwgcmVzaXplSGFuZGxlSGVpZ2h0O1xuICAgIGNvbnN0IGJvdHRvbUJvcmRlciA9IGV2ZW50LmNsaWVudFkgPCBib3R0b21Db250ZW50RWRnZSAmJiAoYm90dG9tQ29udGVudEVkZ2UgLSBldmVudC5jbGllbnRZKSA8IHJlc2l6ZUhhbmRsZUhlaWdodDtcblxuICAgIC8vIEFkanVzdCBmb3IgY29ybmVyIGFyZWFzLlxuICAgIGNvbnN0IHJpZ2h0Q29ybmVyID0gZXZlbnQuY2xpZW50WCA8IHJpZ2h0Q29udGVudEVkZ2UgJiYgKHJpZ2h0Q29udGVudEVkZ2UgLSBldmVudC5jbGllbnRYKSA8IChyZXNpemVIYW5kbGVXaWR0aCArIGNvcm5lckV4dHJhKTtcbiAgICBjb25zdCBsZWZ0Q29ybmVyID0gZXZlbnQuY2xpZW50WCA8IChyZXNpemVIYW5kbGVXaWR0aCArIGNvcm5lckV4dHJhKTtcbiAgICBjb25zdCB0b3BDb3JuZXIgPSBldmVudC5jbGllbnRZIDwgKHJlc2l6ZUhhbmRsZUhlaWdodCArIGNvcm5lckV4dHJhKTtcbiAgICBjb25zdCBib3R0b21Db3JuZXIgPSBldmVudC5jbGllbnRZIDwgYm90dG9tQ29udGVudEVkZ2UgJiYgKGJvdHRvbUNvbnRlbnRFZGdlIC0gZXZlbnQuY2xpZW50WSkgPCAocmVzaXplSGFuZGxlSGVpZ2h0ICsgY29ybmVyRXh0cmEpO1xuXG4gICAgaWYgKCFsZWZ0Q29ybmVyICYmICF0b3BDb3JuZXIgJiYgIWJvdHRvbUNvcm5lciAmJiAhcmlnaHRDb3JuZXIpIHtcbiAgICAgICAgLy8gT3B0aW1pc2F0aW9uOiBvdXQgb2YgYWxsIGNvcm5lciBhcmVhcyBpbXBsaWVzIG91dCBvZiBib3JkZXJzLlxuICAgICAgICBzZXRSZXNpemUoKTtcbiAgICB9XG4gICAgLy8gRGV0ZWN0IGNvcm5lcnMuXG4gICAgZWxzZSBpZiAocmlnaHRDb3JuZXIgJiYgYm90dG9tQ29ybmVyKSBzZXRSZXNpemUoXCJzZS1yZXNpemVcIik7XG4gICAgZWxzZSBpZiAobGVmdENvcm5lciAmJiBib3R0b21Db3JuZXIpIHNldFJlc2l6ZShcInN3LXJlc2l6ZVwiKTtcbiAgICBlbHNlIGlmIChsZWZ0Q29ybmVyICYmIHRvcENvcm5lcikgc2V0UmVzaXplKFwibnctcmVzaXplXCIpO1xuICAgIGVsc2UgaWYgKHRvcENvcm5lciAmJiByaWdodENvcm5lcikgc2V0UmVzaXplKFwibmUtcmVzaXplXCIpO1xuICAgIC8vIERldGVjdCBib3JkZXJzLlxuICAgIGVsc2UgaWYgKGxlZnRCb3JkZXIpIHNldFJlc2l6ZShcInctcmVzaXplXCIpO1xuICAgIGVsc2UgaWYgKHRvcEJvcmRlcikgc2V0UmVzaXplKFwibi1yZXNpemVcIik7XG4gICAgZWxzZSBpZiAoYm90dG9tQm9yZGVyKSBzZXRSZXNpemUoXCJzLXJlc2l6ZVwiKTtcbiAgICBlbHNlIGlmIChyaWdodEJvcmRlcikgc2V0UmVzaXplKFwiZS1yZXNpemVcIik7XG4gICAgLy8gT3V0IG9mIGJvcmRlciBhcmVhLlxuICAgIGVsc2Ugc2V0UmVzaXplKCk7XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuY29uc3QgY2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuQXBwbGljYXRpb24pO1xuXG5jb25zdCBIaWRlTWV0aG9kID0gMDtcbmNvbnN0IFNob3dNZXRob2QgPSAxO1xuY29uc3QgUXVpdE1ldGhvZCA9IDI7XG5cbi8qKlxuICogSGlkZXMgYSBjZXJ0YWluIG1ldGhvZCBieSBjYWxsaW5nIHRoZSBIaWRlTWV0aG9kIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSGlkZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gY2FsbChIaWRlTWV0aG9kKTtcbn1cblxuLyoqXG4gKiBDYWxscyB0aGUgU2hvd01ldGhvZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gU2hvdygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gY2FsbChTaG93TWV0aG9kKTtcbn1cblxuLyoqXG4gKiBDYWxscyB0aGUgUXVpdE1ldGhvZCB0byB0ZXJtaW5hdGUgdGhlIHByb2dyYW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBRdWl0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBjYWxsKFF1aXRNZXRob2QpO1xufVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBDYW5jZWxsYWJsZVByb21pc2UsIHR5cGUgQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVycyB9IGZyb20gXCIuL2NhbmNlbGxhYmxlLmpzXCI7XG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gXCIuL25hbm9pZC5qc1wiO1xuXG4vLyBTZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xufVxuXG50eXBlIFByb21pc2VSZXNvbHZlcnMgPSBPbWl0PENhbmNlbGxhYmxlUHJvbWlzZVdpdGhSZXNvbHZlcnM8YW55PiwgXCJwcm9taXNlXCIgfCBcIm9uY2FuY2VsbGVkXCI+XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkNhbGwpO1xuY29uc3QgY2FuY2VsQ2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuQ2FuY2VsQ2FsbCk7XG5jb25zdCBjYWxsUmVzcG9uc2VzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2VSZXNvbHZlcnM+KCk7XG5cbmNvbnN0IENhbGxCaW5kaW5nID0gMDtcbmNvbnN0IENhbmNlbE1ldGhvZCA9IDBcblxuLyoqXG4gKiBIb2xkcyBhbGwgcmVxdWlyZWQgaW5mb3JtYXRpb24gZm9yIGEgYmluZGluZyBjYWxsLlxuICogTWF5IHByb3ZpZGUgZWl0aGVyIGEgbWV0aG9kIElEIG9yIGEgbWV0aG9kIG5hbWUsIGJ1dCBub3QgYm90aC5cbiAqL1xuZXhwb3J0IHR5cGUgQ2FsbE9wdGlvbnMgPSB7XG4gICAgLyoqIFRoZSBudW1lcmljIElEIG9mIHRoZSBib3VuZCBtZXRob2QgdG8gY2FsbC4gKi9cbiAgICBtZXRob2RJRDogbnVtYmVyO1xuICAgIC8qKiBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGJvdW5kIG1ldGhvZCB0byBjYWxsLiAqL1xuICAgIG1ldGhvZE5hbWU/OiBuZXZlcjtcbiAgICAvKiogQXJndW1lbnRzIHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBib3VuZCBtZXRob2QuICovXG4gICAgYXJnczogYW55W107XG59IHwge1xuICAgIC8qKiBUaGUgbnVtZXJpYyBJRCBvZiB0aGUgYm91bmQgbWV0aG9kIHRvIGNhbGwuICovXG4gICAgbWV0aG9kSUQ/OiBuZXZlcjtcbiAgICAvKiogVGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBib3VuZCBtZXRob2QgdG8gY2FsbC4gKi9cbiAgICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gICAgLyoqIEFyZ3VtZW50cyB0byBiZSBwYXNzZWQgaW50byB0aGUgYm91bmQgbWV0aG9kLiAqL1xuICAgIGFyZ3M6IGFueVtdO1xufTtcblxuLyoqXG4gKiBFeGNlcHRpb24gY2xhc3MgdGhhdCB3aWxsIGJlIHRocm93biBpbiBjYXNlIHRoZSBib3VuZCBtZXRob2QgcmV0dXJucyBhbiBlcnJvci5cbiAqIFRoZSB2YWx1ZSBvZiB0aGUge0BsaW5rIFJ1bnRpbWVFcnJvciNuYW1lfSBwcm9wZXJ0eSBpcyBcIlJ1bnRpbWVFcnJvclwiLlxuICovXG5leHBvcnQgY2xhc3MgUnVudGltZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgUnVudGltZUVycm9yIGluc3RhbmNlLlxuICAgICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIHRvIGJlIGZvcndhcmRlZCB0byB0aGUgRXJyb3IgY29uc3RydWN0b3IuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZywgb3B0aW9ucz86IEVycm9yT3B0aW9ucykge1xuICAgICAgICBzdXBlcihtZXNzYWdlLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5uYW1lID0gXCJSdW50aW1lRXJyb3JcIjtcbiAgICB9XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgdW5pcXVlIElEIHVzaW5nIHRoZSBuYW5vaWQgbGlicmFyeS5cbiAqXG4gKiBAcmV0dXJucyBBIHVuaXF1ZSBJRCB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBjYWxsUmVzcG9uc2VzIHNldC5cbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVJRCgpOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQ7XG4gICAgZG8ge1xuICAgICAgICByZXN1bHQgPSBuYW5vaWQoKTtcbiAgICB9IHdoaWxlIChjYWxsUmVzcG9uc2VzLmhhcyhyZXN1bHQpKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIENhbGwgYSBib3VuZCBtZXRob2QgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBjYWxsIG9wdGlvbnMuXG4gKlxuICogSW4gY2FzZSBvZiBmYWlsdXJlLCB0aGUgcmV0dXJuZWQgcHJvbWlzZSB3aWxsIHJlamVjdCB3aXRoIGFuIGV4Y2VwdGlvblxuICogYW1vbmcgUmVmZXJlbmNlRXJyb3IgKHVua25vd24gbWV0aG9kKSwgVHlwZUVycm9yICh3cm9uZyBhcmd1bWVudCBjb3VudCBvciB0eXBlKSxcbiAqIHtAbGluayBSdW50aW1lRXJyb3J9IChtZXRob2QgcmV0dXJuZWQgYW4gZXJyb3IpLCBvciBvdGhlciAobmV0d29yayBvciBpbnRlcm5hbCBlcnJvcnMpLlxuICogVGhlIGV4Y2VwdGlvbiBtaWdodCBoYXZlIGEgXCJjYXVzZVwiIGZpZWxkIHdpdGggdGhlIHZhbHVlIHJldHVybmVkXG4gKiBieSB0aGUgYXBwbGljYXRpb24tIG9yIHNlcnZpY2UtbGV2ZWwgZXJyb3IgbWFyc2hhbGluZyBmdW5jdGlvbnMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBBIG1ldGhvZCBjYWxsIGRlc2NyaXB0b3IuXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBjYWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ2FsbChvcHRpb25zOiBDYWxsT3B0aW9ucyk6IENhbmNlbGxhYmxlUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBpZCA9IGdlbmVyYXRlSUQoKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IENhbmNlbGxhYmxlUHJvbWlzZS53aXRoUmVzb2x2ZXJzPGFueT4oKTtcbiAgICBjYWxsUmVzcG9uc2VzLnNldChpZCwgeyByZXNvbHZlOiByZXN1bHQucmVzb2x2ZSwgcmVqZWN0OiByZXN1bHQucmVqZWN0IH0pO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IGNhbGwoQ2FsbEJpbmRpbmcsIE9iamVjdC5hc3NpZ24oeyBcImNhbGwtaWRcIjogaWQgfSwgb3B0aW9ucykpO1xuICAgIGxldCBydW5uaW5nID0gdHJ1ZTtcblxuICAgIHJlcXVlc3QudGhlbigocmVzKSA9PiB7XG4gICAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgY2FsbFJlc3BvbnNlcy5kZWxldGUoaWQpO1xuICAgICAgICByZXN1bHQucmVzb2x2ZShyZXMpO1xuICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgcnVubmluZyA9IGZhbHNlO1xuICAgICAgICBjYWxsUmVzcG9uc2VzLmRlbGV0ZShpZCk7XG4gICAgICAgIHJlc3VsdC5yZWplY3QoZXJyKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNhbmNlbCA9ICgpID0+IHtcbiAgICAgICAgY2FsbFJlc3BvbnNlcy5kZWxldGUoaWQpO1xuICAgICAgICByZXR1cm4gY2FuY2VsQ2FsbChDYW5jZWxNZXRob2QsIHtcImNhbGwtaWRcIjogaWR9KS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3Igd2hpbGUgcmVxdWVzdGluZyBiaW5kaW5nIGNhbGwgY2FuY2VsbGF0aW9uOlwiLCBlcnIpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmVzdWx0Lm9uY2FuY2VsbGVkID0gKCkgPT4ge1xuICAgICAgICBpZiAocnVubmluZykge1xuICAgICAgICAgICAgcmV0dXJuIGNhbmNlbCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3QudGhlbihjYW5jZWwpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiByZXN1bHQucHJvbWlzZTtcbn1cblxuLyoqXG4gKiBDYWxscyBhIGJvdW5kIG1ldGhvZCBieSBuYW1lIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudHMuXG4gKiBTZWUge0BsaW5rIENhbGx9IGZvciBkZXRhaWxzLlxuICpcbiAqIEBwYXJhbSBtZXRob2ROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIG1ldGhvZCBpbiB0aGUgZm9ybWF0ICdwYWNrYWdlLnN0cnVjdC5tZXRob2QnLlxuICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIG1ldGhvZCBjYWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQnlOYW1lKG1ldGhvZE5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBDYW5jZWxsYWJsZVByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIENhbGwoeyBtZXRob2ROYW1lLCBhcmdzIH0pO1xufVxuXG4vKipcbiAqIENhbGxzIGEgbWV0aG9kIGJ5IGl0cyBudW1lcmljIElEIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudHMuXG4gKiBTZWUge0BsaW5rIENhbGx9IGZvciBkZXRhaWxzLlxuICpcbiAqIEBwYXJhbSBtZXRob2RJRCAtIFRoZSBJRCBvZiB0aGUgbWV0aG9kIHRvIGNhbGwuXG4gKiBAcGFyYW0gYXJncyAtIFRoZSBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICogQHJldHVybiBUaGUgcmVzdWx0IG9mIHRoZSBtZXRob2QgY2FsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJ5SUQobWV0aG9kSUQ6IG51bWJlciwgLi4uYXJnczogYW55W10pOiBDYW5jZWxsYWJsZVByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIENhbGwoeyBtZXRob2RJRCwgYXJncyB9KTtcbn1cbiIsICIvLyBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9pbnNwZWN0LWpzL2lzLWNhbGxhYmxlXG5cbi8vIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuLy9cbi8vIENvcHlyaWdodCAoYykgMjAxNSBKb3JkYW4gSGFyYmFuZFxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbi8vIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuLy8gU09GVFdBUkUuXG5cbnZhciBmblRvU3RyID0gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIHJlZmxlY3RBcHBseTogdHlwZW9mIFJlZmxlY3QuYXBwbHkgfCBmYWxzZSB8IG51bGwgPSB0eXBlb2YgUmVmbGVjdCA9PT0gJ29iamVjdCcgJiYgUmVmbGVjdCAhPT0gbnVsbCAmJiBSZWZsZWN0LmFwcGx5O1xudmFyIGJhZEFycmF5TGlrZTogYW55O1xudmFyIGlzQ2FsbGFibGVNYXJrZXI6IGFueTtcbmlmICh0eXBlb2YgcmVmbGVjdEFwcGx5ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydHkgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgICBiYWRBcnJheUxpa2UgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdsZW5ndGgnLCB7XG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBpc0NhbGxhYmxlTWFya2VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaXNDYWxsYWJsZU1hcmtlciA9IHt9O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICAgICAgICByZWZsZWN0QXBwbHkoZnVuY3Rpb24gKCkgeyB0aHJvdyA0MjsgfSwgbnVsbCwgYmFkQXJyYXlMaWtlKTtcbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgIGlmIChfICE9PSBpc0NhbGxhYmxlTWFya2VyKSB7XG4gICAgICAgICAgICByZWZsZWN0QXBwbHkgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufSBlbHNlIHtcbiAgICByZWZsZWN0QXBwbHkgPSBudWxsO1xufVxuXG52YXIgY29uc3RydWN0b3JSZWdleCA9IC9eXFxzKmNsYXNzXFxiLztcbnZhciBpc0VTNkNsYXNzRm4gPSBmdW5jdGlvbiBpc0VTNkNsYXNzRnVuY3Rpb24odmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBmblN0ciA9IGZuVG9TdHIuY2FsbCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBjb25zdHJ1Y3RvclJlZ2V4LnRlc3QoZm5TdHIpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBub3QgYSBmdW5jdGlvblxuICAgIH1cbn07XG5cbnZhciB0cnlGdW5jdGlvbk9iamVjdCA9IGZ1bmN0aW9uIHRyeUZ1bmN0aW9uVG9TdHIodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICAgIGlmIChpc0VTNkNsYXNzRm4odmFsdWUpKSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICBmblRvU3RyLmNhbGwodmFsdWUpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59O1xudmFyIHRvU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbnZhciBvYmplY3RDbGFzcyA9ICdbb2JqZWN0IE9iamVjdF0nO1xudmFyIGZuQ2xhc3MgPSAnW29iamVjdCBGdW5jdGlvbl0nO1xudmFyIGdlbkNsYXNzID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJztcbnZhciBkZGFDbGFzcyA9ICdbb2JqZWN0IEhUTUxBbGxDb2xsZWN0aW9uXSc7IC8vIElFIDExXG52YXIgZGRhQ2xhc3MyID0gJ1tvYmplY3QgSFRNTCBkb2N1bWVudC5hbGwgY2xhc3NdJztcbnZhciBkZGFDbGFzczMgPSAnW29iamVjdCBIVE1MQ29sbGVjdGlvbl0nOyAvLyBJRSA5LTEwXG52YXIgaGFzVG9TdHJpbmdUYWcgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmICEhU3ltYm9sLnRvU3RyaW5nVGFnOyAvLyBiZXR0ZXI6IHVzZSBgaGFzLXRvc3RyaW5ndGFnYFxuXG52YXIgaXNJRTY4ID0gISgwIGluIFssXSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc3BhcnNlLWFycmF5cywgY29tbWEtc3BhY2luZ1xuXG52YXIgaXNEREE6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuID0gZnVuY3Rpb24gaXNEb2N1bWVudERvdEFsbCgpIHsgcmV0dXJuIGZhbHNlOyB9O1xuaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBGaXJlZm94IDMgY2Fub25pY2FsaXplcyBEREEgdG8gdW5kZWZpbmVkIHdoZW4gaXQncyBub3QgYWNjZXNzZWQgZGlyZWN0bHlcbiAgICB2YXIgYWxsID0gZG9jdW1lbnQuYWxsO1xuICAgIGlmICh0b1N0ci5jYWxsKGFsbCkgPT09IHRvU3RyLmNhbGwoZG9jdW1lbnQuYWxsKSkge1xuICAgICAgICBpc0REQSA9IGZ1bmN0aW9uIGlzRG9jdW1lbnREb3RBbGwodmFsdWUpIHtcbiAgICAgICAgICAgIC8qIGdsb2JhbHMgZG9jdW1lbnQ6IGZhbHNlICovXG4gICAgICAgICAgICAvLyBpbiBJRSA2LTgsIHR5cGVvZiBkb2N1bWVudC5hbGwgaXMgXCJvYmplY3RcIiBhbmQgaXQncyB0cnV0aHlcbiAgICAgICAgICAgIGlmICgoaXNJRTY4IHx8ICF2YWx1ZSkgJiYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JykpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3RyID0gdG9TdHIuY2FsbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgPT09IGRkYUNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBzdHIgPT09IGRkYUNsYXNzMlxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RyID09PSBkZGFDbGFzczMgLy8gb3BlcmEgMTIuMTZcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0ciA9PT0gb2JqZWN0Q2xhc3MgLy8gSUUgNi04XG4gICAgICAgICAgICAgICAgICAgICkgJiYgdmFsdWUoJycpID09IG51bGw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAvKiovIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzQ2FsbGFibGVSZWZBcHBseTxUPih2YWx1ZTogVCB8IHVua25vd24pOiB2YWx1ZSBpcyAoLi4uYXJnczogYW55W10pID0+IGFueSAge1xuICAgIGlmIChpc0REQSh2YWx1ZSkpIHsgcmV0dXJuIHRydWU7IH1cbiAgICBpZiAoIXZhbHVlKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgeyByZXR1cm4gZmFsc2U7IH1cbiAgICB0cnkge1xuICAgICAgICAocmVmbGVjdEFwcGx5IGFzIGFueSkodmFsdWUsIG51bGwsIGJhZEFycmF5TGlrZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZSAhPT0gaXNDYWxsYWJsZU1hcmtlcikgeyByZXR1cm4gZmFsc2U7IH1cbiAgICB9XG4gICAgcmV0dXJuICFpc0VTNkNsYXNzRm4odmFsdWUpICYmIHRyeUZ1bmN0aW9uT2JqZWN0KHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gaXNDYWxsYWJsZU5vUmVmQXBwbHk8VD4odmFsdWU6IFQgfCB1bmtub3duKTogdmFsdWUgaXMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkge1xuICAgIGlmIChpc0REQSh2YWx1ZSkpIHsgcmV0dXJuIHRydWU7IH1cbiAgICBpZiAoIXZhbHVlKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBpZiAoaGFzVG9TdHJpbmdUYWcpIHsgcmV0dXJuIHRyeUZ1bmN0aW9uT2JqZWN0KHZhbHVlKTsgfVxuICAgIGlmIChpc0VTNkNsYXNzRm4odmFsdWUpKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIHZhciBzdHJDbGFzcyA9IHRvU3RyLmNhbGwodmFsdWUpO1xuICAgIGlmIChzdHJDbGFzcyAhPT0gZm5DbGFzcyAmJiBzdHJDbGFzcyAhPT0gZ2VuQ2xhc3MgJiYgISgvXlxcW29iamVjdCBIVE1MLykudGVzdChzdHJDbGFzcykpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgcmV0dXJuIHRyeUZ1bmN0aW9uT2JqZWN0KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHJlZmxlY3RBcHBseSA/IGlzQ2FsbGFibGVSZWZBcHBseSA6IGlzQ2FsbGFibGVOb1JlZkFwcGx5O1xuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgaXNDYWxsYWJsZSBmcm9tIFwiLi9jYWxsYWJsZS5qc1wiO1xuXG4vKipcbiAqIEV4Y2VwdGlvbiBjbGFzcyB0aGF0IHdpbGwgYmUgdXNlZCBhcyByZWplY3Rpb24gcmVhc29uXG4gKiBpbiBjYXNlIGEge0BsaW5rIENhbmNlbGxhYmxlUHJvbWlzZX0gaXMgY2FuY2VsbGVkIHN1Y2Nlc3NmdWxseS5cbiAqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIHtAbGluayBuYW1lfSBwcm9wZXJ0eSBpcyB0aGUgc3RyaW5nIGBcIkNhbmNlbEVycm9yXCJgLlxuICogVGhlIHZhbHVlIG9mIHRoZSB7QGxpbmsgY2F1c2V9IHByb3BlcnR5IGlzIHRoZSBjYXVzZSBwYXNzZWQgdG8gdGhlIGNhbmNlbCBtZXRob2QsIGlmIGFueS5cbiAqL1xuZXhwb3J0IGNsYXNzIENhbmNlbEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgYENhbmNlbEVycm9yYCBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyB0byBiZSBmb3J3YXJkZWQgdG8gdGhlIEVycm9yIGNvbnN0cnVjdG9yLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcsIG9wdGlvbnM/OiBFcnJvck9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSwgb3B0aW9ucyk7XG4gICAgICAgIHRoaXMubmFtZSA9IFwiQ2FuY2VsRXJyb3JcIjtcbiAgICB9XG59XG5cbi8qKlxuICogRXhjZXB0aW9uIGNsYXNzIHRoYXQgd2lsbCBiZSByZXBvcnRlZCBhcyBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uXG4gKiBpbiBjYXNlIGEge0BsaW5rIENhbmNlbGxhYmxlUHJvbWlzZX0gcmVqZWN0cyBhZnRlciBiZWluZyBjYW5jZWxsZWQsXG4gKiBvciB3aGVuIHRoZSBgb25jYW5jZWxsZWRgIGNhbGxiYWNrIHRocm93cyBvciByZWplY3RzLlxuICpcbiAqIFRoZSB2YWx1ZSBvZiB0aGUge0BsaW5rIG5hbWV9IHByb3BlcnR5IGlzIHRoZSBzdHJpbmcgYFwiQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3JcImAuXG4gKiBUaGUgdmFsdWUgb2YgdGhlIHtAbGluayBjYXVzZX0gcHJvcGVydHkgaXMgdGhlIHJlYXNvbiB0aGUgcHJvbWlzZSByZWplY3RlZCB3aXRoLlxuICpcbiAqIEJlY2F1c2UgdGhlIG9yaWdpbmFsIHByb21pc2Ugd2FzIGNhbmNlbGxlZCxcbiAqIGEgd3JhcHBlciBwcm9taXNlIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSB1bmhhbmRsZWQgcmVqZWN0aW9uIGxpc3RlbmVyIGluc3RlYWQuXG4gKiBUaGUge0BsaW5rIHByb21pc2V9IHByb3BlcnR5IGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBwcm9taXNlLlxuICovXG5leHBvcnQgY2xhc3MgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgLyoqXG4gICAgICogSG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIHByb21pc2UgdGhhdCB3YXMgY2FuY2VsbGVkIGFuZCB0aGVuIHJlamVjdGVkLlxuICAgICAqL1xuICAgIHByb21pc2U6IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPjtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgYENhbmNlbGxlZFJlamVjdGlvbkVycm9yYCBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0gcHJvbWlzZSAtIFRoZSBwcm9taXNlIHRoYXQgY2F1c2VkIHRoZSBlcnJvciBvcmlnaW5hbGx5LlxuICAgICAqIEBwYXJhbSByZWFzb24gLSBUaGUgcmVqZWN0aW9uIHJlYXNvbi5cbiAgICAgKiBAcGFyYW0gaW5mbyAtIEFuIG9wdGlvbmFsIGluZm9ybWF0aXZlIG1lc3NhZ2Ugc3BlY2lmeWluZyB0aGUgY2lyY3Vtc3RhbmNlcyBpbiB3aGljaCB0aGUgZXJyb3Igd2FzIHRocm93bi5cbiAgICAgKiAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIHRoZSBzdHJpbmcgYFwiVW5oYW5kbGVkIHJlamVjdGlvbiBpbiBjYW5jZWxsZWQgcHJvbWlzZS5cImAuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJvbWlzZTogQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+LCByZWFzb24/OiBhbnksIGluZm8/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoKGluZm8gPz8gXCJVbmhhbmRsZWQgcmVqZWN0aW9uIGluIGNhbmNlbGxlZCBwcm9taXNlLlwiKSArIFwiIFJlYXNvbjogXCIgKyBlcnJvck1lc3NhZ2UocmVhc29uKSwgeyBjYXVzZTogcmVhc29uIH0pO1xuICAgICAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIkNhbmNlbGxlZFJlamVjdGlvbkVycm9yXCI7XG4gICAgfVxufVxuXG50eXBlIENhbmNlbGxhYmxlUHJvbWlzZVJlc29sdmVyPFQ+ID0gKHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4gfCBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFQ+KSA9PiB2b2lkO1xudHlwZSBDYW5jZWxsYWJsZVByb21pc2VSZWplY3RvciA9IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG50eXBlIENhbmNlbGxhYmxlUHJvbWlzZUNhbmNlbGxlciA9IChjYXVzZT86IGFueSkgPT4gdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+O1xudHlwZSBDYW5jZWxsYWJsZVByb21pc2VFeGVjdXRvcjxUPiA9IChyZXNvbHZlOiBDYW5jZWxsYWJsZVByb21pc2VSZXNvbHZlcjxUPiwgcmVqZWN0OiBDYW5jZWxsYWJsZVByb21pc2VSZWplY3RvcikgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFQ+IHtcbiAgICB0aGVuPFRSZXN1bHQxID0gVCwgVFJlc3VsdDIgPSBuZXZlcj4ob25mdWxmaWxsZWQ/OiAoKHZhbHVlOiBUKSA9PiBUUmVzdWx0MSB8IFByb21pc2VMaWtlPFRSZXN1bHQxPiB8IENhbmNlbGxhYmxlUHJvbWlzZUxpa2U8VFJlc3VsdDE+KSB8IHVuZGVmaW5lZCB8IG51bGwsIG9ucmVqZWN0ZWQ/OiAoKHJlYXNvbjogYW55KSA9PiBUUmVzdWx0MiB8IFByb21pc2VMaWtlPFRSZXN1bHQyPiB8IENhbmNlbGxhYmxlUHJvbWlzZUxpa2U8VFJlc3VsdDI+KSB8IHVuZGVmaW5lZCB8IG51bGwpOiBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFRSZXN1bHQxIHwgVFJlc3VsdDI+O1xuICAgIGNhbmNlbChjYXVzZT86IGFueSk6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBXcmFwcyBhIGNhbmNlbGxhYmxlIHByb21pc2UgYWxvbmcgd2l0aCBpdHMgcmVzb2x1dGlvbiBtZXRob2RzLlxuICogVGhlIGBvbmNhbmNlbGxlZGAgZmllbGQgd2lsbCBiZSBudWxsIGluaXRpYWxseSBidXQgbWF5IGJlIHNldCB0byBwcm92aWRlIGEgY3VzdG9tIGNhbmNlbGxhdGlvbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+IHtcbiAgICBwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2U8VD47XG4gICAgcmVzb2x2ZTogQ2FuY2VsbGFibGVQcm9taXNlUmVzb2x2ZXI8VD47XG4gICAgcmVqZWN0OiBDYW5jZWxsYWJsZVByb21pc2VSZWplY3RvcjtcbiAgICBvbmNhbmNlbGxlZDogQ2FuY2VsbGFibGVQcm9taXNlQ2FuY2VsbGVyIHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIENhbmNlbGxhYmxlUHJvbWlzZVN0YXRlIHtcbiAgICByZWFkb25seSByb290OiBDYW5jZWxsYWJsZVByb21pc2VTdGF0ZTtcbiAgICByZXNvbHZpbmc6IGJvb2xlYW47XG4gICAgc2V0dGxlZDogYm9vbGVhbjtcbiAgICByZWFzb24/OiBDYW5jZWxFcnJvcjtcbn1cblxuLy8gUHJpdmF0ZSBmaWVsZCBuYW1lcy5cbmNvbnN0IGJhcnJpZXJTeW0gPSBTeW1ib2woXCJiYXJyaWVyXCIpO1xuY29uc3QgY2FuY2VsSW1wbFN5bSA9IFN5bWJvbChcImNhbmNlbEltcGxcIik7XG5jb25zdCBzcGVjaWVzOiB0eXBlb2YgU3ltYm9sLnNwZWNpZXMgPSBTeW1ib2wuc3BlY2llcyA/PyBTeW1ib2woXCJzcGVjaWVzUG9seWZpbGxcIik7XG5cbi8qKlxuICogQSBwcm9taXNlIHdpdGggYW4gYXR0YWNoZWQgbWV0aG9kIGZvciBjYW5jZWxsaW5nIGxvbmctcnVubmluZyBvcGVyYXRpb25zIChzZWUge0BsaW5rIENhbmNlbGxhYmxlUHJvbWlzZSNjYW5jZWx9KS5cbiAqIENhbmNlbGxhdGlvbiBjYW4gb3B0aW9uYWxseSBiZSBib3VuZCB0byBhbiB7QGxpbmsgQWJvcnRTaWduYWx9XG4gKiBmb3IgYmV0dGVyIGNvbXBvc2FiaWxpdHkgKHNlZSB7QGxpbmsgQ2FuY2VsbGFibGVQcm9taXNlI2NhbmNlbE9ufSkuXG4gKlxuICogQ2FuY2VsbGluZyBhIHBlbmRpbmcgcHJvbWlzZSB3aWxsIHJlc3VsdCBpbiBhbiBpbW1lZGlhdGUgcmVqZWN0aW9uXG4gKiB3aXRoIGFuIGluc3RhbmNlIG9mIHtAbGluayBDYW5jZWxFcnJvcn0gYXMgcmVhc29uLFxuICogYnV0IHdob2V2ZXIgc3RhcnRlZCB0aGUgcHJvbWlzZSB3aWxsIGJlIHJlc3BvbnNpYmxlXG4gKiBmb3IgYWN0dWFsbHkgYWJvcnRpbmcgdGhlIHVuZGVybHlpbmcgb3BlcmF0aW9uLlxuICogVG8gdGhpcyBwdXJwb3NlLCB0aGUgY29uc3RydWN0b3IgYW5kIGFsbCBjaGFpbmluZyBtZXRob2RzXG4gKiBhY2NlcHQgb3B0aW9uYWwgY2FuY2VsbGF0aW9uIGNhbGxiYWNrcy5cbiAqXG4gKiBJZiBhIGBDYW5jZWxsYWJsZVByb21pc2VgIHN0aWxsIHJlc29sdmVzIGFmdGVyIGhhdmluZyBiZWVuIGNhbmNlbGxlZCxcbiAqIHRoZSByZXN1bHQgd2lsbCBiZSBkaXNjYXJkZWQuIElmIGl0IHJlamVjdHMsIHRoZSByZWFzb25cbiAqIHdpbGwgYmUgcmVwb3J0ZWQgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbixcbiAqIHdyYXBwZWQgaW4gYSB7QGxpbmsgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3J9IGluc3RhbmNlLlxuICogVG8gZmFjaWxpdGF0ZSB0aGUgaGFuZGxpbmcgb2YgY2FuY2VsbGF0aW9uIHJlcXVlc3RzLFxuICogY2FuY2VsbGVkIGBDYW5jZWxsYWJsZVByb21pc2VgcyB3aWxsIF9ub3RfIHJlcG9ydCB1bmhhbmRsZWQgYENhbmNlbEVycm9yYHNcbiAqIHdob3NlIGBjYXVzZWAgZmllbGQgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSB3aXRoIHdoaWNoIHRoZSBjdXJyZW50IHByb21pc2Ugd2FzIGNhbmNlbGxlZC5cbiAqXG4gKiBBbGwgdXN1YWwgcHJvbWlzZSBtZXRob2RzIGFyZSBkZWZpbmVkIGFuZCByZXR1cm4gYSBgQ2FuY2VsbGFibGVQcm9taXNlYFxuICogd2hvc2UgY2FuY2VsIG1ldGhvZCB3aWxsIGNhbmNlbCB0aGUgcGFyZW50IG9wZXJhdGlvbiBhcyB3ZWxsLCBwcm9wYWdhdGluZyB0aGUgY2FuY2VsbGF0aW9uIHJlYXNvblxuICogdXB3YXJkcyB0aHJvdWdoIHByb21pc2UgY2hhaW5zLlxuICogQ29udmVyc2VseSwgY2FuY2VsbGluZyBhIHByb21pc2Ugd2lsbCBub3QgYXV0b21hdGljYWxseSBjYW5jZWwgZGVwZW5kZW50IHByb21pc2VzIGRvd25zdHJlYW06XG4gKiBgYGB0c1xuICogbGV0IHJvb3QgPSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgLi4uIH0pO1xuICogbGV0IGNoaWxkMSA9IHJvb3QudGhlbigoKSA9PiB7IC4uLiB9KTtcbiAqIGxldCBjaGlsZDIgPSBjaGlsZDEudGhlbigoKSA9PiB7IC4uLiB9KTtcbiAqIGxldCBjaGlsZDMgPSByb290LmNhdGNoKCgpID0+IHsgLi4uIH0pO1xuICogY2hpbGQxLmNhbmNlbCgpOyAvLyBDYW5jZWxzIGNoaWxkMSBhbmQgcm9vdCwgYnV0IG5vdCBjaGlsZDIgb3IgY2hpbGQzXG4gKiBgYGBcbiAqIENhbmNlbGxpbmcgYSBwcm9taXNlIHRoYXQgaGFzIGFscmVhZHkgc2V0dGxlZCBpcyBzYWZlIGFuZCBoYXMgbm8gY29uc2VxdWVuY2UuXG4gKlxuICogVGhlIGBjYW5jZWxgIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IF9hbHdheXMgZnVsZmlsbHNfXG4gKiBhZnRlciB0aGUgd2hvbGUgY2hhaW4gaGFzIHByb2Nlc3NlZCB0aGUgY2FuY2VsIHJlcXVlc3RcbiAqIGFuZCBhbGwgYXR0YWNoZWQgY2FsbGJhY2tzIHVwIHRvIHRoYXQgbW9tZW50IGhhdmUgcnVuLlxuICpcbiAqIEFsbCBFUzIwMjQgcHJvbWlzZSBtZXRob2RzIChzdGF0aWMgYW5kIGluc3RhbmNlKSBhcmUgZGVmaW5lZCBvbiBDYW5jZWxsYWJsZVByb21pc2UsXG4gKiBidXQgYWN0dWFsIGF2YWlsYWJpbGl0eSBtYXkgdmFyeSB3aXRoIE9TL3dlYnZpZXcgdmVyc2lvbi5cbiAqXG4gKiBJbiBsaW5lIHdpdGggdGhlIHByb3Bvc2FsIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXJtLWJ1aWx0aW4tc3ViY2xhc3NpbmcsXG4gKiBgQ2FuY2VsbGFibGVQcm9taXNlYCBkb2VzIG5vdCBzdXBwb3J0IHRyYW5zcGFyZW50IHN1YmNsYXNzaW5nLlxuICogRXh0ZW5kZXJzIHNob3VsZCB0YWtlIGNhcmUgdG8gcHJvdmlkZSB0aGVpciBvd24gbWV0aG9kIGltcGxlbWVudGF0aW9ucy5cbiAqIFRoaXMgbWlnaHQgYmUgcmVjb25zaWRlcmVkIGluIGNhc2UgdGhlIHByb3Bvc2FsIGlzIHJldGlyZWQuXG4gKlxuICogQ2FuY2VsbGFibGVQcm9taXNlIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlIERPTSBQcm9taXNlIG9iamVjdFxuICogYW5kIGlzIGNvbXBsaWFudCB3aXRoIHRoZSBbUHJvbWlzZXMvQSsgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8pXG4gKiAoaXQgcGFzc2VzIHRoZSBbY29tcGxpYW5jZSBzdWl0ZV0oaHR0cHM6Ly9naXRodWIuY29tL3Byb21pc2VzLWFwbHVzL3Byb21pc2VzLXRlc3RzKSlcbiAqIGlmIHNvIGlzIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQ2FuY2VsbGFibGVQcm9taXNlPFQ+IGV4dGVuZHMgUHJvbWlzZTxUPiBpbXBsZW1lbnRzIFByb21pc2VMaWtlPFQ+LCBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFQ+IHtcbiAgICAvLyBQcml2YXRlIGZpZWxkcy5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgcHJpdmF0ZSBbYmFycmllclN5bV0hOiBQYXJ0aWFsPFByb21pc2VXaXRoUmVzb2x2ZXJzPHZvaWQ+PiB8IG51bGw7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgW2NhbmNlbEltcGxTeW1dITogKHJlYXNvbjogQ2FuY2VsRXJyb3IpID0+IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYENhbmNlbGxhYmxlUHJvbWlzZWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXhlY3V0b3IgLSBBIGNhbGxiYWNrIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcHJvbWlzZS4gVGhpcyBjYWxsYmFjayBpcyBwYXNzZWQgdHdvIGFyZ3VtZW50czpcbiAgICAgKiAgICAgICAgICAgICAgICAgICBhIGByZXNvbHZlYCBjYWxsYmFjayB1c2VkIHRvIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aCBhIHZhbHVlXG4gICAgICogICAgICAgICAgICAgICAgICAgb3IgdGhlIHJlc3VsdCBvZiBhbm90aGVyIHByb21pc2UgKHBvc3NpYmx5IGNhbmNlbGxhYmxlKSxcbiAgICAgKiAgICAgICAgICAgICAgICAgICBhbmQgYSBgcmVqZWN0YCBjYWxsYmFjayB1c2VkIHRvIHJlamVjdCB0aGUgcHJvbWlzZSB3aXRoIGEgcHJvdmlkZWQgcmVhc29uIG9yIGVycm9yLlxuICAgICAqICAgICAgICAgICAgICAgICAgIElmIHRoZSB2YWx1ZSBwcm92aWRlZCB0byB0aGUgYHJlc29sdmVgIGNhbGxiYWNrIGlzIGEgdGhlbmFibGUgX2FuZF8gY2FuY2VsbGFibGUgb2JqZWN0XG4gICAgICogICAgICAgICAgICAgICAgICAgKGl0IGhhcyBhIGB0aGVuYCBfYW5kXyBhIGBjYW5jZWxgIG1ldGhvZCksXG4gICAgICogICAgICAgICAgICAgICAgICAgY2FuY2VsbGF0aW9uIHJlcXVlc3RzIHdpbGwgYmUgZm9yd2FyZGVkIHRvIHRoYXQgb2JqZWN0IGFuZCB0aGUgb25jYW5jZWxsZWQgd2lsbCBub3QgYmUgaW52b2tlZCBhbnltb3JlLlxuICAgICAqICAgICAgICAgICAgICAgICAgIElmIGFueSBvbmUgb2YgdGhlIHR3byBjYWxsYmFja3MgaXMgY2FsbGVkIF9hZnRlcl8gdGhlIHByb21pc2UgaGFzIGJlZW4gY2FuY2VsbGVkLFxuICAgICAqICAgICAgICAgICAgICAgICAgIHRoZSBwcm92aWRlZCB2YWx1ZXMgd2lsbCBiZSBjYW5jZWxsZWQgYW5kIHJlc29sdmVkIGFzIHVzdWFsLFxuICAgICAqICAgICAgICAgICAgICAgICAgIGJ1dCB0aGVpciByZXN1bHRzIHdpbGwgYmUgZGlzY2FyZGVkLlxuICAgICAqICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHRoZSByZXNvbHV0aW9uIHByb2Nlc3MgdWx0aW1hdGVseSBlbmRzIHVwIGluIGEgcmVqZWN0aW9uXG4gICAgICogICAgICAgICAgICAgICAgICAgdGhhdCBpcyBub3QgZHVlIHRvIGNhbmNlbGxhdGlvbiwgdGhlIHJlamVjdGlvbiByZWFzb25cbiAgICAgKiAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHdyYXBwZWQgaW4gYSB7QGxpbmsgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3J9XG4gICAgICogICAgICAgICAgICAgICAgICAgYW5kIGJ1YmJsZWQgdXAgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbi5cbiAgICAgKiBAcGFyYW0gb25jYW5jZWxsZWQgLSBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQgYW55IG9wZXJhdGlvblxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ZWQgYnkgdGhlIGV4ZWN1dG9yIGlzIHByb3Blcmx5IGhhbHRlZCB1cG9uIGNhbmNlbGxhdGlvbi5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbmFsIGNhbGxiYWNrIGNhbiBiZSB1c2VkIHRvIHRoYXQgcHVycG9zZS5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBJdCB3aWxsIGJlIGNhbGxlZCBfc3luY2hyb25vdXNseV8gd2l0aCBhIGNhbmNlbGxhdGlvbiBjYXVzZVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIHdoZW4gY2FuY2VsbGF0aW9uIGlzIHJlcXVlc3RlZCwgX2FmdGVyXyB0aGUgcHJvbWlzZSBoYXMgYWxyZWFkeSByZWplY3RlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIHdpdGggYSB7QGxpbmsgQ2FuY2VsRXJyb3J9LCBidXQgX2JlZm9yZV9cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBhbnkge0BsaW5rIHRoZW59L3tAbGluayBjYXRjaH0ve0BsaW5rIGZpbmFsbHl9IGNhbGxiYWNrIHJ1bnMuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGNhbGxiYWNrIHJldHVybnMgYSB0aGVuYWJsZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSB7QGxpbmsgY2FuY2VsfVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIHdpbGwgb25seSBmdWxmaWxsIGFmdGVyIHRoZSBmb3JtZXIgaGFzIHNldHRsZWQuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgVW5oYW5kbGVkIGV4Y2VwdGlvbnMgb3IgcmVqZWN0aW9ucyBmcm9tIHRoZSBjYWxsYmFjayB3aWxsIGJlIHdyYXBwZWRcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBpbiBhIHtAbGluayBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcn0gYW5kIGJ1YmJsZWQgdXAgYXMgdW5oYW5kbGVkIHJlamVjdGlvbnMuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGByZXNvbHZlYCBjYWxsYmFjayBpcyBjYWxsZWQgYmVmb3JlIGNhbmNlbGxhdGlvbiB3aXRoIGEgY2FuY2VsbGFibGUgcHJvbWlzZSxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxsYXRpb24gcmVxdWVzdHMgb24gdGhpcyBwcm9taXNlIHdpbGwgYmUgZGl2ZXJ0ZWQgdG8gdGhhdCBwcm9taXNlLFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgb3JpZ2luYWwgYG9uY2FuY2VsbGVkYCBjYWxsYmFjayB3aWxsIGJlIGRpc2NhcmRlZC5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihleGVjdXRvcjogQ2FuY2VsbGFibGVQcm9taXNlRXhlY3V0b3I8VD4sIG9uY2FuY2VsbGVkPzogQ2FuY2VsbGFibGVQcm9taXNlQ2FuY2VsbGVyKSB7XG4gICAgICAgIGxldCByZXNvbHZlITogKHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQ7XG4gICAgICAgIGxldCByZWplY3QhOiAocmVhc29uPzogYW55KSA9PiB2b2lkO1xuICAgICAgICBzdXBlcigocmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJlczsgcmVqZWN0ID0gcmVqOyB9KTtcblxuICAgICAgICBpZiAoKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KVtzcGVjaWVzXSAhPT0gUHJvbWlzZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbmNlbGxhYmxlUHJvbWlzZSBkb2VzIG5vdCBzdXBwb3J0IHRyYW5zcGFyZW50IHN1YmNsYXNzaW5nLiBQbGVhc2UgcmVmcmFpbiBmcm9tIG92ZXJyaWRpbmcgdGhlIFtTeW1ib2wuc3BlY2llc10gc3RhdGljIHByb3BlcnR5LlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+ID0ge1xuICAgICAgICAgICAgcHJvbWlzZTogdGhpcyxcbiAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICByZWplY3QsXG4gICAgICAgICAgICBnZXQgb25jYW5jZWxsZWQoKSB7IHJldHVybiBvbmNhbmNlbGxlZCA/PyBudWxsOyB9LFxuICAgICAgICAgICAgc2V0IG9uY2FuY2VsbGVkKGNiKSB7IG9uY2FuY2VsbGVkID0gY2IgPz8gdW5kZWZpbmVkOyB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3RhdGU6IENhbmNlbGxhYmxlUHJvbWlzZVN0YXRlID0ge1xuICAgICAgICAgICAgZ2V0IHJvb3QoKSB7IHJldHVybiBzdGF0ZTsgfSxcbiAgICAgICAgICAgIHJlc29sdmluZzogZmFsc2UsXG4gICAgICAgICAgICBzZXR0bGVkOiBmYWxzZVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFNldHVwIGNhbmNlbGxhdGlvbiBzeXN0ZW0uXG4gICAgICAgIHZvaWQgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcywge1xuICAgICAgICAgICAgW2JhcnJpZXJTeW1dOiB7XG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtjYW5jZWxJbXBsU3ltXToge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjYW5jZWxsZXJGb3IocHJvbWlzZSwgc3RhdGUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFJ1biB0aGUgYWN0dWFsIGV4ZWN1dG9yLlxuICAgICAgICBjb25zdCByZWplY3RvciA9IHJlamVjdG9yRm9yKHByb21pc2UsIHN0YXRlKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGV4ZWN1dG9yKHJlc29sdmVyRm9yKHByb21pc2UsIHN0YXRlKSwgcmVqZWN0b3IpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5yZXNvbHZpbmcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlVuaGFuZGxlZCBleGNlcHRpb24gaW4gQ2FuY2VsbGFibGVQcm9taXNlIGV4ZWN1dG9yLlwiLCBlcnIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZWplY3RvcihlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FuY2VscyBpbW1lZGlhdGVseSB0aGUgZXhlY3V0aW9uIG9mIHRoZSBvcGVyYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgcHJvbWlzZS5cbiAgICAgKiBUaGUgcHJvbWlzZSByZWplY3RzIHdpdGggYSB7QGxpbmsgQ2FuY2VsRXJyb3J9IGluc3RhbmNlIGFzIHJlYXNvbixcbiAgICAgKiB3aXRoIHRoZSB7QGxpbmsgQ2FuY2VsRXJyb3IjY2F1c2V9IHByb3BlcnR5IHNldCB0byB0aGUgZ2l2ZW4gYXJndW1lbnQsIGlmIGFueS5cbiAgICAgKlxuICAgICAqIEhhcyBubyBlZmZlY3QgaWYgY2FsbGVkIGFmdGVyIHRoZSBwcm9taXNlIGhhcyBhbHJlYWR5IHNldHRsZWQ7XG4gICAgICogcmVwZWF0ZWQgY2FsbHMgaW4gcGFydGljdWxhciBhcmUgc2FmZSwgYnV0IG9ubHkgdGhlIGZpcnN0IG9uZVxuICAgICAqIHdpbGwgc2V0IHRoZSBjYW5jZWxsYXRpb24gY2F1c2UuXG4gICAgICpcbiAgICAgKiBUaGUgYENhbmNlbEVycm9yYCBleGNlcHRpb24gX25lZWQgbm90XyBiZSBoYW5kbGVkIGV4cGxpY2l0bHkgX29uIHRoZSBwcm9taXNlcyB0aGF0IGFyZSBiZWluZyBjYW5jZWxsZWQ6X1xuICAgICAqIGNhbmNlbGxpbmcgYSBwcm9taXNlIHdpdGggbm8gYXR0YWNoZWQgcmVqZWN0aW9uIGhhbmRsZXIgZG9lcyBub3QgdHJpZ2dlciBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uIGV2ZW50LlxuICAgICAqIFRoZXJlZm9yZSwgdGhlIGZvbGxvd2luZyBpZGlvbXMgYXJlIGFsbCBlcXVhbGx5IGNvcnJlY3Q6XG4gICAgICogYGBgdHNcbiAgICAgKiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgLi4uIH0pLmNhbmNlbCgpO1xuICAgICAqIG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyAuLi4gfSkudGhlbiguLi4pLmNhbmNlbCgpO1xuICAgICAqIG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyAuLi4gfSkudGhlbiguLi4pLmNhdGNoKC4uLikuY2FuY2VsKCk7XG4gICAgICogYGBgXG4gICAgICogV2hlbmV2ZXIgc29tZSBjYW5jZWxsZWQgcHJvbWlzZSBpbiBhIGNoYWluIHJlamVjdHMgd2l0aCBhIGBDYW5jZWxFcnJvcmBcbiAgICAgKiB3aXRoIHRoZSBzYW1lIGNhbmNlbGxhdGlvbiBjYXVzZSBhcyBpdHNlbGYsIHRoZSBlcnJvciB3aWxsIGJlIGRpc2NhcmRlZCBzaWxlbnRseS5cbiAgICAgKiBIb3dldmVyLCB0aGUgYENhbmNlbEVycm9yYCBfd2lsbCBzdGlsbCBiZSBkZWxpdmVyZWRfIHRvIGFsbCBhdHRhY2hlZCByZWplY3Rpb24gaGFuZGxlcnNcbiAgICAgKiBhZGRlZCBieSB7QGxpbmsgdGhlbn0gYW5kIHJlbGF0ZWQgbWV0aG9kczpcbiAgICAgKiBgYGB0c1xuICAgICAqIGxldCBjYW5jZWxsYWJsZSA9IG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyAuLi4gfSk7XG4gICAgICogY2FuY2VsbGFibGUudGhlbigoKSA9PiB7IC4uLiB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gICAgICogY2FuY2VsbGFibGUuY2FuY2VsKCk7IC8vIEEgQ2FuY2VsRXJyb3IgaXMgcHJpbnRlZCB0byB0aGUgY29uc29sZS5cbiAgICAgKiBgYGBcbiAgICAgKiBJZiB0aGUgYENhbmNlbEVycm9yYCBpcyBub3QgaGFuZGxlZCBkb3duc3RyZWFtIGJ5IHRoZSB0aW1lIGl0IHJlYWNoZXNcbiAgICAgKiBhIF9ub24tY2FuY2VsbGVkXyBwcm9taXNlLCBpdCBfd2lsbF8gdHJpZ2dlciBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uIGV2ZW50LFxuICAgICAqIGp1c3QgbGlrZSBub3JtYWwgcmVqZWN0aW9ucyB3b3VsZDpcbiAgICAgKiBgYGB0c1xuICAgICAqIGxldCBjYW5jZWxsYWJsZSA9IG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyAuLi4gfSk7XG4gICAgICogbGV0IGNoYWluZWQgPSBjYW5jZWxsYWJsZS50aGVuKCgpID0+IHsgLi4uIH0pLnRoZW4oKCkgPT4geyAuLi4gfSk7IC8vIE5vIGNhdGNoLi4uXG4gICAgICogY2FuY2VsbGFibGUuY2FuY2VsKCk7IC8vIFVuaGFuZGxlZCByZWplY3Rpb24gZXZlbnQgb24gY2hhaW5lZCFcbiAgICAgKiBgYGBcbiAgICAgKiBUaGVyZWZvcmUsIGl0IGlzIGltcG9ydGFudCB0byBlaXRoZXIgY2FuY2VsIHdob2xlIHByb21pc2UgY2hhaW5zIGZyb20gdGhlaXIgdGFpbCxcbiAgICAgKiBhcyBzaG93biBpbiB0aGUgY29ycmVjdCBpZGlvbXMgYWJvdmUsIG9yIHRha2UgY2FyZSBvZiBoYW5kbGluZyBlcnJvcnMgZXZlcnl3aGVyZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgY2FuY2VsbGFibGUgcHJvbWlzZSB0aGF0IF9mdWxmaWxsc18gYWZ0ZXIgdGhlIGNhbmNlbCBjYWxsYmFjayAoaWYgYW55KVxuICAgICAqIGFuZCBhbGwgaGFuZGxlcnMgYXR0YWNoZWQgdXAgdG8gdGhlIGNhbGwgdG8gY2FuY2VsIGhhdmUgcnVuLlxuICAgICAqIElmIHRoZSBjYW5jZWwgY2FsbGJhY2sgcmV0dXJucyBhIHRoZW5hYmxlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSBgY2FuY2VsYFxuICAgICAqIHdpbGwgYWxzbyB3YWl0IGZvciB0aGF0IHRoZW5hYmxlIHRvIHNldHRsZS5cbiAgICAgKiBUaGlzIGVuYWJsZXMgY2FsbGVycyB0byB3YWl0IGZvciB0aGUgY2FuY2VsbGVkIG9wZXJhdGlvbiB0byB0ZXJtaW5hdGVcbiAgICAgKiB3aXRob3V0IGJlaW5nIGZvcmNlZCB0byBoYW5kbGUgcG90ZW50aWFsIGVycm9ycyBhdCB0aGUgY2FsbCBzaXRlLlxuICAgICAqIGBgYHRzXG4gICAgICogY2FuY2VsbGFibGUuY2FuY2VsKCkudGhlbigoKSA9PiB7XG4gICAgICogICAgIC8vIENsZWFudXAgZmluaXNoZWQsIGl0J3Mgc2FmZSB0byBkbyBzb21ldGhpbmcgZWxzZS5cbiAgICAgKiB9LCAoZXJyKSA9PiB7XG4gICAgICogICAgIC8vIFVucmVhY2hhYmxlOiB0aGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIGNhbmNlbCB3aWxsIG5ldmVyIHJlamVjdC5cbiAgICAgKiB9KTtcbiAgICAgKiBgYGBcbiAgICAgKiBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHByb21pc2Ugd2lsbCBfbm90XyBoYW5kbGUgaW1wbGljaXRseSBhbnkgcmVqZWN0aW9uXG4gICAgICogdGhhdCBtaWdodCBoYXZlIG9jY3VycmVkIGFscmVhZHkgaW4gdGhlIGNhbmNlbGxlZCBjaGFpbi5cbiAgICAgKiBJdCB3aWxsIGp1c3QgdHJhY2sgd2hldGhlciByZWdpc3RlcmVkIGhhbmRsZXJzIGhhdmUgYmVlbiBleGVjdXRlZCBvciBub3QuXG4gICAgICogVGhlcmVmb3JlLCB1bmhhbmRsZWQgcmVqZWN0aW9ucyB3aWxsIG5ldmVyIGJlIHNpbGVudGx5IGhhbmRsZWQgYnkgY2FsbGluZyBjYW5jZWwuXG4gICAgICovXG4gICAgY2FuY2VsKGNhdXNlPzogYW55KTogQ2FuY2VsbGFibGVQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYW5jZWxsYWJsZVByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIC8vIElOVkFSSUFOVDogdGhlIHJlc3VsdCBvZiB0aGlzW2NhbmNlbEltcGxTeW1dIGFuZCB0aGUgYmFycmllciBkbyBub3QgZXZlciByZWplY3QuXG4gICAgICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5IG1hY09TIEhpZ2ggU2llcnJhIGRvZXMgbm90IHN1cHBvcnQgUHJvbWlzZS5hbGxTZXR0bGVkLlxuICAgICAgICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgIHRoaXNbY2FuY2VsSW1wbFN5bV0obmV3IENhbmNlbEVycm9yKFwiUHJvbWlzZSBjYW5jZWxsZWQuXCIsIHsgY2F1c2UgfSkpLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRCYXJyaWVyKHRoaXMpXG4gICAgICAgICAgICBdKS50aGVuKCgpID0+IHJlc29sdmUoKSwgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQmluZHMgcHJvbWlzZSBjYW5jZWxsYXRpb24gdG8gdGhlIGFib3J0IGV2ZW50IG9mIHRoZSBnaXZlbiB7QGxpbmsgQWJvcnRTaWduYWx9LlxuICAgICAqIElmIHRoZSBzaWduYWwgaGFzIGFscmVhZHkgYWJvcnRlZCwgdGhlIHByb21pc2Ugd2lsbCBiZSBjYW5jZWxsZWQgaW1tZWRpYXRlbHkuXG4gICAgICogV2hlbiBlaXRoZXIgY29uZGl0aW9uIGlzIHZlcmlmaWVkLCB0aGUgY2FuY2VsbGF0aW9uIGNhdXNlIHdpbGwgYmUgc2V0XG4gICAgICogdG8gdGhlIHNpZ25hbCdzIGFib3J0IHJlYXNvbiAoc2VlIHtAbGluayBBYm9ydFNpZ25hbCNyZWFzb259KS5cbiAgICAgKlxuICAgICAqIEhhcyBubyBlZmZlY3QgaWYgY2FsbGVkIChvciBpZiB0aGUgc2lnbmFsIGFib3J0cykgX2FmdGVyXyB0aGUgcHJvbWlzZSBoYXMgYWxyZWFkeSBzZXR0bGVkLlxuICAgICAqIE9ubHkgdGhlIGZpcnN0IHNpZ25hbCB0byBhYm9ydCB3aWxsIHNldCB0aGUgY2FuY2VsbGF0aW9uIGNhdXNlLlxuICAgICAqXG4gICAgICogRm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgY2FuY2VsbGF0aW9uIHByb2Nlc3MsXG4gICAgICogc2VlIHtAbGluayBjYW5jZWx9IGFuZCB0aGUgYENhbmNlbGxhYmxlUHJvbWlzZWAgY29uc3RydWN0b3IuXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBlbmFibGVzIGBhd2FpdGBpbmcgY2FuY2VsbGFibGUgcHJvbWlzZXMgd2l0aG91dCBoYXZpbmdcbiAgICAgKiB0byBzdG9yZSB0aGVtIGZvciBmdXR1cmUgY2FuY2VsbGF0aW9uLCBlLmcuOlxuICAgICAqIGBgYHRzXG4gICAgICogYXdhaXQgbG9uZ1J1bm5pbmdPcGVyYXRpb24oKS5jYW5jZWxPbihzaWduYWwpO1xuICAgICAqIGBgYFxuICAgICAqIGluc3RlYWQgb2Y6XG4gICAgICogYGBgdHNcbiAgICAgKiBsZXQgcHJvbWlzZVRvQmVDYW5jZWxsZWQgPSBsb25nUnVubmluZ09wZXJhdGlvbigpO1xuICAgICAqIGF3YWl0IHByb21pc2VUb0JlQ2FuY2VsbGVkO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhpcyBwcm9taXNlLCBmb3IgbWV0aG9kIGNoYWluaW5nLlxuICAgICAqL1xuICAgIGNhbmNlbE9uKHNpZ25hbDogQWJvcnRTaWduYWwpOiBDYW5jZWxsYWJsZVByb21pc2U8VD4ge1xuICAgICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5jYW5jZWwoc2lnbmFsLnJlYXNvbilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IHZvaWQgdGhpcy5jYW5jZWwoc2lnbmFsLnJlYXNvbiksIHtjYXB0dXJlOiB0cnVlfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBjYWxsYmFja3MgZm9yIHRoZSByZXNvbHV0aW9uIGFuZC9vciByZWplY3Rpb24gb2YgdGhlIGBDYW5jZWxsYWJsZVByb21pc2VgLlxuICAgICAqXG4gICAgICogVGhlIG9wdGlvbmFsIGBvbmNhbmNlbGxlZGAgYXJndW1lbnQgd2lsbCBiZSBpbnZva2VkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLFxuICAgICAqIHdpdGggdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSBgb25jYW5jZWxsZWRgIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBXaGVuIHRoZSBwYXJlbnQgcHJvbWlzZSByZWplY3RzIG9yIGlzIGNhbmNlbGxlZCwgdGhlIGBvbnJlamVjdGVkYCBjYWxsYmFjayB3aWxsIHJ1bixcbiAgICAgKiBfZXZlbiBhZnRlciB0aGUgcmV0dXJuZWQgcHJvbWlzZSBoYXMgYmVlbiBjYW5jZWxsZWQ6X1xuICAgICAqIGluIHRoYXQgY2FzZSwgc2hvdWxkIGl0IHJlamVjdCBvciB0aHJvdywgdGhlIHJlYXNvbiB3aWxsIGJlIHdyYXBwZWRcbiAgICAgKiBpbiBhIHtAbGluayBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcn0gYW5kIGJ1YmJsZWQgdXAgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvbmZ1bGZpbGxlZCBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZSB3aGVuIHRoZSBQcm9taXNlIGlzIHJlc29sdmVkLlxuICAgICAqIEBwYXJhbSBvbnJlamVjdGVkIFRoZSBjYWxsYmFjayB0byBleGVjdXRlIHdoZW4gdGhlIFByb21pc2UgaXMgcmVqZWN0ZWQuXG4gICAgICogQHJldHVybnMgQSBgQ2FuY2VsbGFibGVQcm9taXNlYCBmb3IgdGhlIGNvbXBsZXRpb24gb2Ygd2hpY2hldmVyIGNhbGxiYWNrIGlzIGV4ZWN1dGVkLlxuICAgICAqIFRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGhvb2tlZCB1cCB0byBwcm9wYWdhdGUgY2FuY2VsbGF0aW9uIHJlcXVlc3RzIHVwIHRoZSBjaGFpbiwgYnV0IG5vdCBkb3duOlxuICAgICAqXG4gICAgICogICAtIGlmIHRoZSBwYXJlbnQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsIHRoZSBgb25yZWplY3RlZGAgaGFuZGxlciB3aWxsIGJlIGludm9rZWQgd2l0aCBhIGBDYW5jZWxFcnJvcmBcbiAgICAgKiAgICAgYW5kIHRoZSByZXR1cm5lZCBwcm9taXNlIF93aWxsIHJlc29sdmUgcmVndWxhcmx5XyB3aXRoIGl0cyByZXN1bHQ7XG4gICAgICogICAtIGNvbnZlcnNlbHksIGlmIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGNhbmNlbGxlZCwgX3RoZSBwYXJlbnQgcHJvbWlzZSBpcyBjYW5jZWxsZWQgdG9vO19cbiAgICAgKiAgICAgdGhlIGBvbnJlamVjdGVkYCBoYW5kbGVyIHdpbGwgc3RpbGwgYmUgaW52b2tlZCB3aXRoIHRoZSBwYXJlbnQncyBgQ2FuY2VsRXJyb3JgLFxuICAgICAqICAgICBidXQgaXRzIHJlc3VsdCB3aWxsIGJlIGRpc2NhcmRlZFxuICAgICAqICAgICBhbmQgdGhlIHJldHVybmVkIHByb21pc2Ugd2lsbCByZWplY3Qgd2l0aCBhIGBDYW5jZWxFcnJvcmAgYXMgd2VsbC5cbiAgICAgKlxuICAgICAqIFRoZSBwcm9taXNlIHJldHVybmVkIGZyb20ge0BsaW5rIGNhbmNlbH0gd2lsbCBmdWxmaWxsIG9ubHkgYWZ0ZXIgYWxsIGF0dGFjaGVkIGhhbmRsZXJzXG4gICAgICogdXAgdGhlIGVudGlyZSBwcm9taXNlIGNoYWluIGhhdmUgYmVlbiBydW4uXG4gICAgICpcbiAgICAgKiBJZiBlaXRoZXIgY2FsbGJhY2sgcmV0dXJucyBhIGNhbmNlbGxhYmxlIHByb21pc2UsXG4gICAgICogY2FuY2VsbGF0aW9uIHJlcXVlc3RzIHdpbGwgYmUgZGl2ZXJ0ZWQgdG8gaXQsXG4gICAgICogYW5kIHRoZSBzcGVjaWZpZWQgYG9uY2FuY2VsbGVkYCBjYWxsYmFjayB3aWxsIGJlIGRpc2NhcmRlZC5cbiAgICAgKi9cbiAgICB0aGVuPFRSZXN1bHQxID0gVCwgVFJlc3VsdDIgPSBuZXZlcj4ob25mdWxmaWxsZWQ/OiAoKHZhbHVlOiBUKSA9PiBUUmVzdWx0MSB8IFByb21pc2VMaWtlPFRSZXN1bHQxPiB8IENhbmNlbGxhYmxlUHJvbWlzZUxpa2U8VFJlc3VsdDE+KSB8IHVuZGVmaW5lZCB8IG51bGwsIG9ucmVqZWN0ZWQ/OiAoKHJlYXNvbjogYW55KSA9PiBUUmVzdWx0MiB8IFByb21pc2VMaWtlPFRSZXN1bHQyPiB8IENhbmNlbGxhYmxlUHJvbWlzZUxpa2U8VFJlc3VsdDI+KSB8IHVuZGVmaW5lZCB8IG51bGwsIG9uY2FuY2VsbGVkPzogQ2FuY2VsbGFibGVQcm9taXNlQ2FuY2VsbGVyKTogQ2FuY2VsbGFibGVQcm9taXNlPFRSZXN1bHQxIHwgVFJlc3VsdDI+IHtcbiAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIENhbmNlbGxhYmxlUHJvbWlzZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5jZWxsYWJsZVByb21pc2UucHJvdG90eXBlLnRoZW4gY2FsbGVkIG9uIGFuIGludmFsaWQgb2JqZWN0LlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5PVEU6IFR5cGVTY3JpcHQncyBidWlsdC1pbiB0eXBlIGZvciB0aGVuIGlzIGJyb2tlbixcbiAgICAgICAgLy8gYXMgaXQgYWxsb3dzIHNwZWNpZnlpbmcgYW4gYXJiaXRyYXJ5IFRSZXN1bHQxICE9IFQgZXZlbiB3aGVuIG9uZnVsZmlsbGVkIGlzIG5vdCBhIGZ1bmN0aW9uLlxuICAgICAgICAvLyBXZSBjYW5ub3QgZml4IGl0IGlmIHdlIHdhbnQgdG8gQ2FuY2VsbGFibGVQcm9taXNlIHRvIGltcGxlbWVudCBQcm9taXNlTGlrZTxUPi5cblxuICAgICAgICBpZiAoIWlzQ2FsbGFibGUob25mdWxmaWxsZWQpKSB7IG9uZnVsZmlsbGVkID0gaWRlbnRpdHkgYXMgYW55OyB9XG4gICAgICAgIGlmICghaXNDYWxsYWJsZShvbnJlamVjdGVkKSkgeyBvbnJlamVjdGVkID0gdGhyb3dlcjsgfVxuXG4gICAgICAgIGlmIChvbmZ1bGZpbGxlZCA9PT0gaWRlbnRpdHkgJiYgb25yZWplY3RlZCA9PSB0aHJvd2VyKSB7XG4gICAgICAgICAgICAvLyBTaG9ydGN1dCBmb3IgdHJpdmlhbCBhcmd1bWVudHMuXG4gICAgICAgICAgICByZXR1cm4gbmV3IENhbmNlbGxhYmxlUHJvbWlzZSgocmVzb2x2ZSkgPT4gcmVzb2x2ZSh0aGlzIGFzIGFueSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmFycmllcjogUGFydGlhbDxQcm9taXNlV2l0aFJlc29sdmVyczx2b2lkPj4gPSB7fTtcbiAgICAgICAgdGhpc1tiYXJyaWVyU3ltXSA9IGJhcnJpZXI7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBDYW5jZWxsYWJsZVByb21pc2U8VFJlc3VsdDEgfCBUUmVzdWx0Mj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdm9pZCBzdXBlci50aGVuKFxuICAgICAgICAgICAgICAgICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1tiYXJyaWVyU3ltXSA9PT0gYmFycmllcikgeyB0aGlzW2JhcnJpZXJTeW1dID0gbnVsbDsgfVxuICAgICAgICAgICAgICAgICAgICBiYXJyaWVyLnJlc29sdmU/LigpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9uZnVsZmlsbGVkISh2YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAocmVhc29uPykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1tiYXJyaWVyU3ltXSA9PT0gYmFycmllcikgeyB0aGlzW2JhcnJpZXJTeW1dID0gbnVsbDsgfVxuICAgICAgICAgICAgICAgICAgICBiYXJyaWVyLnJlc29sdmU/LigpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9ucmVqZWN0ZWQhKHJlYXNvbikpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSwgYXN5bmMgKGNhdXNlPykgPT4ge1xuICAgICAgICAgICAgLy9jYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb25jYW5jZWxsZWQ/LihjYXVzZSk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2FuY2VsKGNhdXNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgYSBjYWxsYmFjayBmb3Igb25seSB0aGUgcmVqZWN0aW9uIG9mIHRoZSBQcm9taXNlLlxuICAgICAqXG4gICAgICogVGhlIG9wdGlvbmFsIGBvbmNhbmNlbGxlZGAgYXJndW1lbnQgd2lsbCBiZSBpbnZva2VkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLFxuICAgICAqIHdpdGggdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSBgb25jYW5jZWxsZWRgIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBXaGVuIHRoZSBwYXJlbnQgcHJvbWlzZSByZWplY3RzIG9yIGlzIGNhbmNlbGxlZCwgdGhlIGBvbnJlamVjdGVkYCBjYWxsYmFjayB3aWxsIHJ1bixcbiAgICAgKiBfZXZlbiBhZnRlciB0aGUgcmV0dXJuZWQgcHJvbWlzZSBoYXMgYmVlbiBjYW5jZWxsZWQ6X1xuICAgICAqIGluIHRoYXQgY2FzZSwgc2hvdWxkIGl0IHJlamVjdCBvciB0aHJvdywgdGhlIHJlYXNvbiB3aWxsIGJlIHdyYXBwZWRcbiAgICAgKiBpbiBhIHtAbGluayBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcn0gYW5kIGJ1YmJsZWQgdXAgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbi5cbiAgICAgKlxuICAgICAqIEl0IGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgKiBgYGB0c1xuICAgICAqIGNhbmNlbGxhYmxlUHJvbWlzZS50aGVuKHVuZGVmaW5lZCwgb25yZWplY3RlZCwgb25jYW5jZWxsZWQpO1xuICAgICAqIGBgYFxuICAgICAqIGFuZCB0aGUgc2FtZSBjYXZlYXRzIGFwcGx5LlxuICAgICAqXG4gICAgICogQHJldHVybnMgQSBQcm9taXNlIGZvciB0aGUgY29tcGxldGlvbiBvZiB0aGUgY2FsbGJhY2suXG4gICAgICogQ2FuY2VsbGF0aW9uIHJlcXVlc3RzIG9uIHRoZSByZXR1cm5lZCBwcm9taXNlXG4gICAgICogd2lsbCBwcm9wYWdhdGUgdXAgdGhlIGNoYWluIHRvIHRoZSBwYXJlbnQgcHJvbWlzZSxcbiAgICAgKiBidXQgbm90IGluIHRoZSBvdGhlciBkaXJlY3Rpb24uXG4gICAgICpcbiAgICAgKiBUaGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIHtAbGluayBjYW5jZWx9IHdpbGwgZnVsZmlsbCBvbmx5IGFmdGVyIGFsbCBhdHRhY2hlZCBoYW5kbGVyc1xuICAgICAqIHVwIHRoZSBlbnRpcmUgcHJvbWlzZSBjaGFpbiBoYXZlIGJlZW4gcnVuLlxuICAgICAqXG4gICAgICogSWYgYG9ucmVqZWN0ZWRgIHJldHVybnMgYSBjYW5jZWxsYWJsZSBwcm9taXNlLFxuICAgICAqIGNhbmNlbGxhdGlvbiByZXF1ZXN0cyB3aWxsIGJlIGRpdmVydGVkIHRvIGl0LFxuICAgICAqIGFuZCB0aGUgc3BlY2lmaWVkIGBvbmNhbmNlbGxlZGAgY2FsbGJhY2sgd2lsbCBiZSBkaXNjYXJkZWQuXG4gICAgICogU2VlIHtAbGluayB0aGVufSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqL1xuICAgIGNhdGNoPFRSZXN1bHQgPSBuZXZlcj4ob25yZWplY3RlZD86ICgocmVhc29uOiBhbnkpID0+IChQcm9taXNlTGlrZTxUUmVzdWx0PiB8IFRSZXN1bHQpKSB8IHVuZGVmaW5lZCB8IG51bGwsIG9uY2FuY2VsbGVkPzogQ2FuY2VsbGFibGVQcm9taXNlQ2FuY2VsbGVyKTogQ2FuY2VsbGFibGVQcm9taXNlPFQgfCBUUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvbnJlamVjdGVkLCBvbmNhbmNlbGxlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgYSBjYWxsYmFjayB0aGF0IGlzIGludm9rZWQgd2hlbiB0aGUgQ2FuY2VsbGFibGVQcm9taXNlIGlzIHNldHRsZWQgKGZ1bGZpbGxlZCBvciByZWplY3RlZCkuIFRoZVxuICAgICAqIHJlc29sdmVkIHZhbHVlIGNhbm5vdCBiZSBhY2Nlc3NlZCBvciBtb2RpZmllZCBmcm9tIHRoZSBjYWxsYmFjay5cbiAgICAgKiBUaGUgcmV0dXJuZWQgcHJvbWlzZSB3aWxsIHNldHRsZSBpbiB0aGUgc2FtZSBzdGF0ZSBhcyB0aGUgb3JpZ2luYWwgb25lXG4gICAgICogYWZ0ZXIgdGhlIHByb3ZpZGVkIGNhbGxiYWNrIGhhcyBjb21wbGV0ZWQgZXhlY3V0aW9uLFxuICAgICAqIHVubGVzcyB0aGUgY2FsbGJhY2sgdGhyb3dzIG9yIHJldHVybnMgYSByZWplY3RpbmcgcHJvbWlzZSxcbiAgICAgKiBpbiB3aGljaCBjYXNlIHRoZSByZXR1cm5lZCBwcm9taXNlIHdpbGwgcmVqZWN0IGFzIHdlbGwuXG4gICAgICpcbiAgICAgKiBUaGUgb3B0aW9uYWwgYG9uY2FuY2VsbGVkYCBhcmd1bWVudCB3aWxsIGJlIGludm9rZWQgd2hlbiB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsXG4gICAgICogd2l0aCB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGBvbmNhbmNlbGxlZGAgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIE9uY2UgdGhlIHBhcmVudCBwcm9taXNlIHNldHRsZXMsIHRoZSBgb25maW5hbGx5YCBjYWxsYmFjayB3aWxsIHJ1bixcbiAgICAgKiBfZXZlbiBhZnRlciB0aGUgcmV0dXJuZWQgcHJvbWlzZSBoYXMgYmVlbiBjYW5jZWxsZWQ6X1xuICAgICAqIGluIHRoYXQgY2FzZSwgc2hvdWxkIGl0IHJlamVjdCBvciB0aHJvdywgdGhlIHJlYXNvbiB3aWxsIGJlIHdyYXBwZWRcbiAgICAgKiBpbiBhIHtAbGluayBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcn0gYW5kIGJ1YmJsZWQgdXAgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbi5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIHtAbGluayB0aGVufSBhbmQgdGhlIHNhbWUgY2F2ZWF0cyBhcHBseS5cbiAgICAgKiBJdCBpcyBwb2x5ZmlsbGVkLCBoZW5jZSBhdmFpbGFibGUgaW4gZXZlcnkgT1Mvd2VidmlldyB2ZXJzaW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMgQSBQcm9taXNlIGZvciB0aGUgY29tcGxldGlvbiBvZiB0aGUgY2FsbGJhY2suXG4gICAgICogQ2FuY2VsbGF0aW9uIHJlcXVlc3RzIG9uIHRoZSByZXR1cm5lZCBwcm9taXNlXG4gICAgICogd2lsbCBwcm9wYWdhdGUgdXAgdGhlIGNoYWluIHRvIHRoZSBwYXJlbnQgcHJvbWlzZSxcbiAgICAgKiBidXQgbm90IGluIHRoZSBvdGhlciBkaXJlY3Rpb24uXG4gICAgICpcbiAgICAgKiBUaGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIHtAbGluayBjYW5jZWx9IHdpbGwgZnVsZmlsbCBvbmx5IGFmdGVyIGFsbCBhdHRhY2hlZCBoYW5kbGVyc1xuICAgICAqIHVwIHRoZSBlbnRpcmUgcHJvbWlzZSBjaGFpbiBoYXZlIGJlZW4gcnVuLlxuICAgICAqXG4gICAgICogSWYgYG9uZmluYWxseWAgcmV0dXJucyBhIGNhbmNlbGxhYmxlIHByb21pc2UsXG4gICAgICogY2FuY2VsbGF0aW9uIHJlcXVlc3RzIHdpbGwgYmUgZGl2ZXJ0ZWQgdG8gaXQsXG4gICAgICogYW5kIHRoZSBzcGVjaWZpZWQgYG9uY2FuY2VsbGVkYCBjYWxsYmFjayB3aWxsIGJlIGRpc2NhcmRlZC5cbiAgICAgKiBTZWUge0BsaW5rIHRoZW59IGZvciBtb3JlIGRldGFpbHMuXG4gICAgICovXG4gICAgZmluYWxseShvbmZpbmFsbHk/OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQgfCBudWxsLCBvbmNhbmNlbGxlZD86IENhbmNlbGxhYmxlUHJvbWlzZUNhbmNlbGxlcik6IENhbmNlbGxhYmxlUHJvbWlzZTxUPiB7XG4gICAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBDYW5jZWxsYWJsZVByb21pc2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2FuY2VsbGFibGVQcm9taXNlLnByb3RvdHlwZS5maW5hbGx5IGNhbGxlZCBvbiBhbiBpbnZhbGlkIG9iamVjdC5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzQ2FsbGFibGUob25maW5hbGx5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGhlbihvbmZpbmFsbHksIG9uZmluYWxseSwgb25jYW5jZWxsZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudGhlbihcbiAgICAgICAgICAgICh2YWx1ZSkgPT4gQ2FuY2VsbGFibGVQcm9taXNlLnJlc29sdmUob25maW5hbGx5KCkpLnRoZW4oKCkgPT4gdmFsdWUpLFxuICAgICAgICAgICAgKHJlYXNvbj8pID0+IENhbmNlbGxhYmxlUHJvbWlzZS5yZXNvbHZlKG9uZmluYWxseSgpKS50aGVuKCgpID0+IHsgdGhyb3cgcmVhc29uOyB9KSxcbiAgICAgICAgICAgIG9uY2FuY2VsbGVkLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdlIHVzZSB0aGUgYFtTeW1ib2wuc3BlY2llc11gIHN0YXRpYyBwcm9wZXJ0eSwgaWYgYXZhaWxhYmxlLFxuICAgICAqIHRvIGRpc2FibGUgdGhlIGJ1aWx0LWluIGF1dG9tYXRpYyBzdWJjbGFzc2luZyBmZWF0dXJlcyBmcm9tIHtAbGluayBQcm9taXNlfS5cbiAgICAgKiBJdCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyB0aGF0IGV4dGVuZGVycyBkbyBub3Qgb3ZlcnJpZGUgdGhpcy5cbiAgICAgKiBPbmNlIHRoZSBwcm9wb3NhbCBhdCBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1ybS1idWlsdGluLXN1YmNsYXNzaW5nXG4gICAgICogaXMgZWl0aGVyIGFjY2VwdGVkIG9yIHJldGlyZWQsIHRoaXMgaW1wbGVtZW50YXRpb24gd2lsbCBoYXZlIHRvIGJlIHJldmlzZWQgYWNjb3JkaW5nbHkuXG4gICAgICpcbiAgICAgKiBAaWdub3JlXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgc3RhdGljIGdldCBbc3BlY2llc10oKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBDYW5jZWxsYWJsZVByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIGFuIGFycmF5IG9mIHJlc3VsdHNcbiAgICAgKiB3aGVuIGFsbCBvZiB0aGUgcHJvdmlkZWQgUHJvbWlzZXMgcmVzb2x2ZSwgb3IgcmVqZWN0ZWQgd2hlbiBhbnkgUHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICAgKlxuICAgICAqIEV2ZXJ5IG9uZSBvZiB0aGUgcHJvdmlkZWQgb2JqZWN0cyB0aGF0IGlzIGEgdGhlbmFibGUgX2FuZF8gY2FuY2VsbGFibGUgb2JqZWN0XG4gICAgICogd2lsbCBiZSBjYW5jZWxsZWQgd2hlbiB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsIHdpdGggdGhlIHNhbWUgY2F1c2UuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgYWxsPFQ+KHZhbHVlczogSXRlcmFibGU8VCB8IFByb21pc2VMaWtlPFQ+Pik6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFQ+W10+O1xuICAgIHN0YXRpYyBhbGw8VCBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSB8IFtdPih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8eyAtcmVhZG9ubHkgW1AgaW4ga2V5b2YgVF06IEF3YWl0ZWQ8VFtQXT47IH0+O1xuICAgIHN0YXRpYyBhbGw8VCBleHRlbmRzIEl0ZXJhYmxlPHVua25vd24+IHwgQXJyYXlMaWtlPHVua25vd24+Pih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBsZXQgY29sbGVjdGVkID0gQXJyYXkuZnJvbSh2YWx1ZXMpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gY29sbGVjdGVkLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyBDYW5jZWxsYWJsZVByb21pc2UucmVzb2x2ZShjb2xsZWN0ZWQpXG4gICAgICAgICAgICA6IG5ldyBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIHZvaWQgUHJvbWlzZS5hbGwoY29sbGVjdGVkKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICB9LCAoY2F1c2U/KTogUHJvbWlzZTx2b2lkPiA9PiBjYW5jZWxBbGwocHJvbWlzZSwgY29sbGVjdGVkLCBjYXVzZSkpO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgQ2FuY2VsbGFibGVQcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhbiBhcnJheSBvZiByZXN1bHRzXG4gICAgICogd2hlbiBhbGwgb2YgdGhlIHByb3ZpZGVkIFByb21pc2VzIHJlc29sdmUgb3IgcmVqZWN0LlxuICAgICAqXG4gICAgICogRXZlcnkgb25lIG9mIHRoZSBwcm92aWRlZCBvYmplY3RzIHRoYXQgaXMgYSB0aGVuYWJsZSBfYW5kXyBjYW5jZWxsYWJsZSBvYmplY3RcbiAgICAgKiB3aWxsIGJlIGNhbmNlbGxlZCB3aGVuIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGNhbmNlbGxlZCwgd2l0aCB0aGUgc2FtZSBjYXVzZS5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyBhbGxTZXR0bGVkPFQ+KHZhbHVlczogSXRlcmFibGU8VCB8IFByb21pc2VMaWtlPFQ+Pik6IENhbmNlbGxhYmxlUHJvbWlzZTxQcm9taXNlU2V0dGxlZFJlc3VsdDxBd2FpdGVkPFQ+PltdPjtcbiAgICBzdGF0aWMgYWxsU2V0dGxlZDxUIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdIHwgW10+KHZhbHVlczogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTx7IC1yZWFkb25seSBbUCBpbiBrZXlvZiBUXTogUHJvbWlzZVNldHRsZWRSZXN1bHQ8QXdhaXRlZDxUW1BdPj47IH0+O1xuICAgIHN0YXRpYyBhbGxTZXR0bGVkPFQgZXh0ZW5kcyBJdGVyYWJsZTx1bmtub3duPiB8IEFycmF5TGlrZTx1bmtub3duPj4odmFsdWVzOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgbGV0IGNvbGxlY3RlZCA9IEFycmF5LmZyb20odmFsdWVzKTtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IGNvbGxlY3RlZC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gQ2FuY2VsbGFibGVQcm9taXNlLnJlc29sdmUoY29sbGVjdGVkKVxuICAgICAgICAgICAgOiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICB2b2lkIFByb21pc2UuYWxsU2V0dGxlZChjb2xsZWN0ZWQpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgIH0sIChjYXVzZT8pOiBQcm9taXNlPHZvaWQ+ID0+IGNhbmNlbEFsbChwcm9taXNlLCBjb2xsZWN0ZWQsIGNhdXNlKSk7XG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBhbnkgZnVuY3Rpb24gcmV0dXJucyBhIHByb21pc2UgdGhhdCBpcyBmdWxmaWxsZWQgYnkgdGhlIGZpcnN0IGdpdmVuIHByb21pc2UgdG8gYmUgZnVsZmlsbGVkLFxuICAgICAqIG9yIHJlamVjdGVkIHdpdGggYW4gQWdncmVnYXRlRXJyb3IgY29udGFpbmluZyBhbiBhcnJheSBvZiByZWplY3Rpb24gcmVhc29uc1xuICAgICAqIGlmIGFsbCBvZiB0aGUgZ2l2ZW4gcHJvbWlzZXMgYXJlIHJlamVjdGVkLlxuICAgICAqIEl0IHJlc29sdmVzIGFsbCBlbGVtZW50cyBvZiB0aGUgcGFzc2VkIGl0ZXJhYmxlIHRvIHByb21pc2VzIGFzIGl0IHJ1bnMgdGhpcyBhbGdvcml0aG0uXG4gICAgICpcbiAgICAgKiBFdmVyeSBvbmUgb2YgdGhlIHByb3ZpZGVkIG9iamVjdHMgdGhhdCBpcyBhIHRoZW5hYmxlIF9hbmRfIGNhbmNlbGxhYmxlIG9iamVjdFxuICAgICAqIHdpbGwgYmUgY2FuY2VsbGVkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLCB3aXRoIHRoZSBzYW1lIGNhdXNlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIGFueTxUPih2YWx1ZXM6IEl0ZXJhYmxlPFQgfCBQcm9taXNlTGlrZTxUPj4pOiBDYW5jZWxsYWJsZVByb21pc2U8QXdhaXRlZDxUPj47XG4gICAgc3RhdGljIGFueTxUIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdIHwgW10+KHZhbHVlczogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFRbbnVtYmVyXT4+O1xuICAgIHN0YXRpYyBhbnk8VCBleHRlbmRzIEl0ZXJhYmxlPHVua25vd24+IHwgQXJyYXlMaWtlPHVua25vd24+Pih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBsZXQgY29sbGVjdGVkID0gQXJyYXkuZnJvbSh2YWx1ZXMpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gY29sbGVjdGVkLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyBDYW5jZWxsYWJsZVByb21pc2UucmVzb2x2ZShjb2xsZWN0ZWQpXG4gICAgICAgICAgICA6IG5ldyBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIHZvaWQgUHJvbWlzZS5hbnkoY29sbGVjdGVkKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICB9LCAoY2F1c2U/KTogUHJvbWlzZTx2b2lkPiA9PiBjYW5jZWxBbGwocHJvbWlzZSwgY29sbGVjdGVkLCBjYXVzZSkpO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIG9yIHJlamVjdGVkIHdoZW4gYW55IG9mIHRoZSBwcm92aWRlZCBQcm9taXNlcyBhcmUgcmVzb2x2ZWQgb3IgcmVqZWN0ZWQuXG4gICAgICpcbiAgICAgKiBFdmVyeSBvbmUgb2YgdGhlIHByb3ZpZGVkIG9iamVjdHMgdGhhdCBpcyBhIHRoZW5hYmxlIF9hbmRfIGNhbmNlbGxhYmxlIG9iamVjdFxuICAgICAqIHdpbGwgYmUgY2FuY2VsbGVkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLCB3aXRoIHRoZSBzYW1lIGNhdXNlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHJhY2U8VD4odmFsdWVzOiBJdGVyYWJsZTxUIHwgUHJvbWlzZUxpa2U8VD4+KTogQ2FuY2VsbGFibGVQcm9taXNlPEF3YWl0ZWQ8VD4+O1xuICAgIHN0YXRpYyByYWNlPFQgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gfCBbXT4odmFsdWVzOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPEF3YWl0ZWQ8VFtudW1iZXJdPj47XG4gICAgc3RhdGljIHJhY2U8VCBleHRlbmRzIEl0ZXJhYmxlPHVua25vd24+IHwgQXJyYXlMaWtlPHVua25vd24+Pih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBsZXQgY29sbGVjdGVkID0gQXJyYXkuZnJvbSh2YWx1ZXMpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB2b2lkIFByb21pc2UucmFjZShjb2xsZWN0ZWQpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSwgKGNhdXNlPyk6IFByb21pc2U8dm9pZD4gPT4gY2FuY2VsQWxsKHByb21pc2UsIGNvbGxlY3RlZCwgY2F1c2UpKTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBjYW5jZWxsZWQgQ2FuY2VsbGFibGVQcm9taXNlIGZvciB0aGUgcHJvdmlkZWQgY2F1c2UuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgY2FuY2VsPFQgPSBuZXZlcj4oY2F1c2U/OiBhbnkpOiBDYW5jZWxsYWJsZVByb21pc2U8VD4ge1xuICAgICAgICBjb25zdCBwID0gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTxUPigoKSA9PiB7fSk7XG4gICAgICAgIHAuY2FuY2VsKGNhdXNlKTtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBDYW5jZWxsYWJsZVByb21pc2UgdGhhdCBjYW5jZWxzXG4gICAgICogYWZ0ZXIgdGhlIHNwZWNpZmllZCB0aW1lb3V0LCB3aXRoIHRoZSBwcm92aWRlZCBjYXVzZS5cbiAgICAgKlxuICAgICAqIElmIHRoZSB7QGxpbmsgQWJvcnRTaWduYWwudGltZW91dH0gZmFjdG9yeSBtZXRob2QgaXMgYXZhaWxhYmxlLFxuICAgICAqIGl0IGlzIHVzZWQgdG8gYmFzZSB0aGUgdGltZW91dCBvbiBfYWN0aXZlXyB0aW1lIHJhdGhlciB0aGFuIF9lbGFwc2VkXyB0aW1lLlxuICAgICAqIE90aGVyd2lzZSwgYHRpbWVvdXRgIGZhbGxzIGJhY2sgdG8ge0BsaW5rIHNldFRpbWVvdXR9LlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHRpbWVvdXQ8VCA9IG5ldmVyPihtaWxsaXNlY29uZHM6IG51bWJlciwgY2F1c2U/OiBhbnkpOiBDYW5jZWxsYWJsZVByb21pc2U8VD4ge1xuICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTxUPigoKSA9PiB7fSk7XG4gICAgICAgIGlmIChBYm9ydFNpZ25hbCAmJiB0eXBlb2YgQWJvcnRTaWduYWwgPT09ICdmdW5jdGlvbicgJiYgQWJvcnRTaWduYWwudGltZW91dCAmJiB0eXBlb2YgQWJvcnRTaWduYWwudGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgQWJvcnRTaWduYWwudGltZW91dChtaWxsaXNlY29uZHMpLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4gdm9pZCBwcm9taXNlLmNhbmNlbChjYXVzZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB2b2lkIHByb21pc2UuY2FuY2VsKGNhdXNlKSwgbWlsbGlzZWNvbmRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IENhbmNlbGxhYmxlUHJvbWlzZSB0aGF0IHJlc29sdmVzIGFmdGVyIHRoZSBzcGVjaWZpZWQgdGltZW91dC5cbiAgICAgKiBUaGUgcmV0dXJuZWQgcHJvbWlzZSBjYW4gYmUgY2FuY2VsbGVkIHdpdGhvdXQgY29uc2VxdWVuY2VzLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHNsZWVwKG1pbGxpc2Vjb25kczogbnVtYmVyKTogQ2FuY2VsbGFibGVQcm9taXNlPHZvaWQ+O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlIHRoYXQgcmVzb2x2ZXMgYWZ0ZXJcbiAgICAgKiB0aGUgc3BlY2lmaWVkIHRpbWVvdXQsIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlLlxuICAgICAqIFRoZSByZXR1cm5lZCBwcm9taXNlIGNhbiBiZSBjYW5jZWxsZWQgd2l0aG91dCBjb25zZXF1ZW5jZXMuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgc2xlZXA8VD4obWlsbGlzZWNvbmRzOiBudW1iZXIsIHZhbHVlOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+O1xuICAgIHN0YXRpYyBzbGVlcDxUID0gdm9pZD4obWlsbGlzZWNvbmRzOiBudW1iZXIsIHZhbHVlPzogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPFQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUodmFsdWUhKSwgbWlsbGlzZWNvbmRzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyByZWplY3RlZCBDYW5jZWxsYWJsZVByb21pc2UgZm9yIHRoZSBwcm92aWRlZCByZWFzb24uXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgcmVqZWN0PFQgPSBuZXZlcj4ocmVhc29uPzogYW55KTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYW5jZWxsYWJsZVByb21pc2U8VD4oKF8sIHJlamVjdCkgPT4gcmVqZWN0KHJlYXNvbikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcmVzb2x2ZWQgQ2FuY2VsbGFibGVQcm9taXNlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHJlc29sdmUoKTogQ2FuY2VsbGFibGVQcm9taXNlPHZvaWQ+O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcmVzb2x2ZWQgQ2FuY2VsbGFibGVQcm9taXNlIGZvciB0aGUgcHJvdmlkZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgcmVzb2x2ZTxUPih2YWx1ZTogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFQ+PjtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHJlc29sdmVkIENhbmNlbGxhYmxlUHJvbWlzZSBmb3IgdGhlIHByb3ZpZGVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHJlc29sdmU8VD4odmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPik6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFQ+PjtcbiAgICBzdGF0aWMgcmVzb2x2ZTxUID0gdm9pZD4odmFsdWU/OiBUIHwgUHJvbWlzZUxpa2U8VD4pOiBDYW5jZWxsYWJsZVByb21pc2U8QXdhaXRlZDxUPj4ge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBDYW5jZWxsYWJsZVByb21pc2UpIHtcbiAgICAgICAgICAgIC8vIE9wdGltaXNlIGZvciBjYW5jZWxsYWJsZSBwcm9taXNlcy5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTxhbnk+KChyZXNvbHZlKSA9PiByZXNvbHZlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBDYW5jZWxsYWJsZVByb21pc2UgYW5kIHJldHVybnMgaXQgaW4gYW4gb2JqZWN0LCBhbG9uZyB3aXRoIGl0cyByZXNvbHZlIGFuZCByZWplY3QgZnVuY3Rpb25zXG4gICAgICogYW5kIGEgZ2V0dGVyL3NldHRlciBmb3IgdGhlIGNhbmNlbGxhdGlvbiBjYWxsYmFjay5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHBvbHlmaWxsZWQsIGhlbmNlIGF2YWlsYWJsZSBpbiBldmVyeSBPUy93ZWJ2aWV3IHZlcnNpb24uXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgd2l0aFJlc29sdmVyczxUPigpOiBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+IHtcbiAgICAgICAgbGV0IHJlc3VsdDogQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxUPiA9IHsgb25jYW5jZWxsZWQ6IG51bGwgfSBhcyBhbnk7XG4gICAgICAgIHJlc3VsdC5wcm9taXNlID0gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTxUPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICByZXN1bHQucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgICAgICByZXN1bHQucmVqZWN0ID0gcmVqZWN0O1xuICAgICAgICB9LCAoY2F1c2U/OiBhbnkpID0+IHsgcmVzdWx0Lm9uY2FuY2VsbGVkPy4oY2F1c2UpOyB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGNhbGxiYWNrIHRoYXQgaW1wbGVtZW50cyB0aGUgY2FuY2VsbGF0aW9uIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGNhbmNlbGxhYmxlIHByb21pc2UuXG4gKiBUaGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIHRoZSByZXN1bHRpbmcgZnVuY3Rpb24gZG9lcyBub3QgcmVqZWN0LlxuICovXG5mdW5jdGlvbiBjYW5jZWxsZXJGb3I8VD4ocHJvbWlzZTogQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxUPiwgc3RhdGU6IENhbmNlbGxhYmxlUHJvbWlzZVN0YXRlKSB7XG4gICAgbGV0IGNhbmNlbGxhdGlvblByb21pc2U6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPiA9IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiAocmVhc29uOiBDYW5jZWxFcnJvcik6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPiA9PiB7XG4gICAgICAgIGlmICghc3RhdGUuc2V0dGxlZCkge1xuICAgICAgICAgICAgc3RhdGUuc2V0dGxlZCA9IHRydWU7XG4gICAgICAgICAgICBzdGF0ZS5yZWFzb24gPSByZWFzb247XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdChyZWFzb24pO1xuXG4gICAgICAgICAgICAvLyBBdHRhY2ggYW4gZXJyb3IgaGFuZGxlciB0aGF0IGlnbm9yZXMgdGhpcyBzcGVjaWZpYyByZWplY3Rpb24gcmVhc29uIGFuZCBub3RoaW5nIGVsc2UuXG4gICAgICAgICAgICAvLyBJbiB0aGVvcnksIGEgc2FuZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIGF0IHRoaXMgcG9pbnRcbiAgICAgICAgICAgIC8vIHNob3VsZCBhbHdheXMgcmVqZWN0IHdpdGggb3VyIGNhbmNlbGxhdGlvbiByZWFzb24sXG4gICAgICAgICAgICAvLyBoZW5jZSB0aGUgaGFuZGxlciB3aWxsIG5ldmVyIHRocm93LlxuICAgICAgICAgICAgdm9pZCBQcm9taXNlLnByb3RvdHlwZS50aGVuLmNhbGwocHJvbWlzZS5wcm9taXNlLCB1bmRlZmluZWQsIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyICE9PSByZWFzb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgcmVhc29uIGlzIG5vdCBzZXQsIHRoZSBwcm9taXNlIHJlc29sdmVkIHJlZ3VsYXJseSwgaGVuY2Ugd2UgbXVzdCBub3QgY2FsbCBvbmNhbmNlbGxlZC5cbiAgICAgICAgLy8gSWYgb25jYW5jZWxsZWQgaXMgdW5zZXQsIG5vIG5lZWQgdG8gZ28gYW55IGZ1cnRoZXIuXG4gICAgICAgIGlmICghc3RhdGUucmVhc29uIHx8ICFwcm9taXNlLm9uY2FuY2VsbGVkKSB7IHJldHVybjsgfVxuXG4gICAgICAgIGNhbmNlbGxhdGlvblByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHByb21pc2Uub25jYW5jZWxsZWQhKHN0YXRlLnJlYXNvbiEuY2F1c2UpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIFByb21pc2UucmVqZWN0KG5ldyBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcihwcm9taXNlLnByb21pc2UsIGVyciwgXCJVbmhhbmRsZWQgZXhjZXB0aW9uIGluIG9uY2FuY2VsbGVkIGNhbGxiYWNrLlwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKChyZWFzb24/KSA9PiB7XG4gICAgICAgICAgICBQcm9taXNlLnJlamVjdChuZXcgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3IocHJvbWlzZS5wcm9taXNlLCByZWFzb24sIFwiVW5oYW5kbGVkIHJlamVjdGlvbiBpbiBvbmNhbmNlbGxlZCBjYWxsYmFjay5cIikpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBVbnNldCBvbmNhbmNlbGxlZCB0byBwcmV2ZW50IHJlcGVhdGVkIGNhbGxzLlxuICAgICAgICBwcm9taXNlLm9uY2FuY2VsbGVkID0gbnVsbDtcblxuICAgICAgICByZXR1cm4gY2FuY2VsbGF0aW9uUHJvbWlzZTtcbiAgICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGNhbGxiYWNrIHRoYXQgaW1wbGVtZW50cyB0aGUgcmVzb2x1dGlvbiBhbGdvcml0aG0gZm9yIHRoZSBnaXZlbiBjYW5jZWxsYWJsZSBwcm9taXNlLlxuICovXG5mdW5jdGlvbiByZXNvbHZlckZvcjxUPihwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+LCBzdGF0ZTogQ2FuY2VsbGFibGVQcm9taXNlU3RhdGUpOiBDYW5jZWxsYWJsZVByb21pc2VSZXNvbHZlcjxUPiB7XG4gICAgcmV0dXJuICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoc3RhdGUucmVzb2x2aW5nKSB7IHJldHVybjsgfVxuICAgICAgICBzdGF0ZS5yZXNvbHZpbmcgPSB0cnVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gcHJvbWlzZS5wcm9taXNlKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuc2V0dGxlZCkgeyByZXR1cm47IH1cbiAgICAgICAgICAgIHN0YXRlLnNldHRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcihcIkEgcHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdHNlbGYuXCIpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgICAgIGxldCB0aGVuOiBhbnk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRoZW4gPSAodmFsdWUgYXMgYW55KS50aGVuO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuc2V0dGxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc0NhbGxhYmxlKHRoZW4pKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNhbmNlbCA9ICh2YWx1ZSBhcyBhbnkpLmNhbmNlbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ2FsbGFibGUoY2FuY2VsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb25jYW5jZWxsZWQgPSAoY2F1c2U/OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZsZWN0LmFwcGx5KGNhbmNlbCwgdmFsdWUsIFtjYXVzZV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5yZWFzb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBhbHJlYWR5IGNhbmNlbGxlZCwgcHJvcGFnYXRlIGNhbmNlbGxhdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIHRoZSBjYW5jZWxsZXIgYWxnb3JpdGhtIGRvZXMgbm90IHJlamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIGl0IGNhbiBiZSBkaXNjYXJkZWQgc2FmZWx5LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgY2FuY2VsbGVyRm9yKHsgLi4ucHJvbWlzZSwgb25jYW5jZWxsZWQgfSwgc3RhdGUpKHN0YXRlLnJlYXNvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2Uub25jYW5jZWxsZWQgPSBvbmNhbmNlbGxlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2gge31cblxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlOiBDYW5jZWxsYWJsZVByb21pc2VTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgcm9vdDogc3RhdGUucm9vdCxcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2aW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0IHNldHRsZWQoKSB7IHJldHVybiB0aGlzLnJvb3Quc2V0dGxlZCB9LFxuICAgICAgICAgICAgICAgICAgICBzZXQgc2V0dGxlZCh2YWx1ZSkgeyB0aGlzLnJvb3Quc2V0dGxlZCA9IHZhbHVlOyB9LFxuICAgICAgICAgICAgICAgICAgICBnZXQgcmVhc29uKCkgeyByZXR1cm4gdGhpcy5yb290LnJlYXNvbiB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlamVjdG9yID0gcmVqZWN0b3JGb3IocHJvbWlzZSwgbmV3U3RhdGUpO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIFJlZmxlY3QuYXBwbHkodGhlbiwgdmFsdWUsIFtyZXNvbHZlckZvcihwcm9taXNlLCBuZXdTdGF0ZSksIHJlamVjdG9yXSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdG9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjsgLy8gSU1QT1JUQU5UIVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlLnNldHRsZWQpIHsgcmV0dXJuOyB9XG4gICAgICAgIHN0YXRlLnNldHRsZWQgPSB0cnVlO1xuICAgICAgICBwcm9taXNlLnJlc29sdmUodmFsdWUpO1xuICAgIH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGNhbGxiYWNrIHRoYXQgaW1wbGVtZW50cyB0aGUgcmVqZWN0aW9uIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGNhbmNlbGxhYmxlIHByb21pc2UuXG4gKi9cbmZ1bmN0aW9uIHJlamVjdG9yRm9yPFQ+KHByb21pc2U6IENhbmNlbGxhYmxlUHJvbWlzZVdpdGhSZXNvbHZlcnM8VD4sIHN0YXRlOiBDYW5jZWxsYWJsZVByb21pc2VTdGF0ZSk6IENhbmNlbGxhYmxlUHJvbWlzZVJlamVjdG9yIHtcbiAgICByZXR1cm4gKHJlYXNvbj8pID0+IHtcbiAgICAgICAgaWYgKHN0YXRlLnJlc29sdmluZykgeyByZXR1cm47IH1cbiAgICAgICAgc3RhdGUucmVzb2x2aW5nID0gdHJ1ZTtcblxuICAgICAgICBpZiAoc3RhdGUuc2V0dGxlZCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAocmVhc29uIGluc3RhbmNlb2YgQ2FuY2VsRXJyb3IgJiYgc3RhdGUucmVhc29uIGluc3RhbmNlb2YgQ2FuY2VsRXJyb3IgJiYgT2JqZWN0LmlzKHJlYXNvbi5jYXVzZSwgc3RhdGUucmVhc29uLmNhdXNlKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBTd2FsbG93IGxhdGUgcmVqZWN0aW9ucyB0aGF0IGFyZSBDYW5jZWxFcnJvcnMgd2hvc2UgY2FuY2VsbGF0aW9uIGNhdXNlIGlzIHRoZSBzYW1lIGFzIG91cnMuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHt9XG5cbiAgICAgICAgICAgIHZvaWQgUHJvbWlzZS5yZWplY3QobmV3IENhbmNlbGxlZFJlamVjdGlvbkVycm9yKHByb21pc2UucHJvbWlzZSwgcmVhc29uKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGF0ZS5zZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogQ2FuY2VscyBhbGwgdmFsdWVzIGluIGFuIGFycmF5IHRoYXQgbG9vayBsaWtlIGNhbmNlbGxhYmxlIHRoZW5hYmxlcy5cbiAqIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgb25jZSBhbGwgY2FuY2VsbGF0aW9uIHByb2NlZHVyZXMgZm9yIHRoZSBnaXZlbiB2YWx1ZXMgaGF2ZSBzZXR0bGVkLlxuICovXG5mdW5jdGlvbiBjYW5jZWxBbGwocGFyZW50OiBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4sIHZhbHVlczogYW55W10sIGNhdXNlPzogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVzdWx0czogUHJvbWlzZTx2b2lkPltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgICBsZXQgY2FuY2VsOiBDYW5jZWxsYWJsZVByb21pc2VDYW5jZWxsZXI7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIWlzQ2FsbGFibGUodmFsdWUudGhlbikpIHsgY29udGludWU7IH1cbiAgICAgICAgICAgIGNhbmNlbCA9IHZhbHVlLmNhbmNlbDtcbiAgICAgICAgICAgIGlmICghaXNDYWxsYWJsZShjYW5jZWwpKSB7IGNvbnRpbnVlOyB9XG4gICAgICAgIH0gY2F0Y2ggeyBjb250aW51ZTsgfVxuXG4gICAgICAgIGxldCByZXN1bHQ6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IFJlZmxlY3QuYXBwbHkoY2FuY2VsLCB2YWx1ZSwgW2NhdXNlXSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgUHJvbWlzZS5yZWplY3QobmV3IENhbmNlbGxlZFJlamVjdGlvbkVycm9yKHBhcmVudCwgZXJyLCBcIlVuaGFuZGxlZCBleGNlcHRpb24gaW4gY2FuY2VsIG1ldGhvZC5cIikpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJlc3VsdCkgeyBjb250aW51ZTsgfVxuICAgICAgICByZXN1bHRzLnB1c2goXG4gICAgICAgICAgICAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSAgPyByZXN1bHQgOiBQcm9taXNlLnJlc29sdmUocmVzdWx0KSkuY2F0Y2goKHJlYXNvbj8pID0+IHtcbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlamVjdChuZXcgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3IocGFyZW50LCByZWFzb24sIFwiVW5oYW5kbGVkIHJlamVjdGlvbiBpbiBjYW5jZWwgbWV0aG9kLlwiKSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLmFsbChyZXN1bHRzKSBhcyBhbnk7XG59XG5cbi8qKlxuICogUmV0dXJucyBpdHMgYXJndW1lbnQuXG4gKi9cbmZ1bmN0aW9uIGlkZW50aXR5PFQ+KHg6IFQpOiBUIHtcbiAgICByZXR1cm4geDtcbn1cblxuLyoqXG4gKiBUaHJvd3MgaXRzIGFyZ3VtZW50LlxuICovXG5mdW5jdGlvbiB0aHJvd2VyKHJlYXNvbj86IGFueSk6IG5ldmVyIHtcbiAgICB0aHJvdyByZWFzb247XG59XG5cbi8qKlxuICogQXR0ZW1wdHMgdmFyaW91cyBzdHJhdGVnaWVzIHRvIGNvbnZlcnQgYW4gZXJyb3IgdG8gYSBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGVycm9yTWVzc2FnZShlcnI6IGFueSk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yIHx8IHR5cGVvZiBlcnIgIT09ICdvYmplY3QnIHx8IGVyci50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyBlcnI7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIHt9XG5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZXJyKTtcbiAgICB9IGNhdGNoIHt9XG5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGVycik7XG4gICAgfSBjYXRjaCB7fVxuXG4gICAgcmV0dXJuIFwiPGNvdWxkIG5vdCBjb252ZXJ0IGVycm9yIHRvIHN0cmluZz5cIjtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBjdXJyZW50IGJhcnJpZXIgcHJvbWlzZSBmb3IgdGhlIGdpdmVuIGNhbmNlbGxhYmxlIHByb21pc2UuIElmIG5lY2Vzc2FyeSwgaW5pdGlhbGlzZXMgdGhlIGJhcnJpZXIuXG4gKi9cbmZ1bmN0aW9uIGN1cnJlbnRCYXJyaWVyPFQ+KHByb21pc2U6IENhbmNlbGxhYmxlUHJvbWlzZTxUPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBwd3I6IFBhcnRpYWw8UHJvbWlzZVdpdGhSZXNvbHZlcnM8dm9pZD4+ID0gcHJvbWlzZVtiYXJyaWVyU3ltXSA/PyB7fTtcbiAgICBpZiAoISgncHJvbWlzZScgaW4gcHdyKSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHB3ciwgcHJvbWlzZVdpdGhSZXNvbHZlcnM8dm9pZD4oKSk7XG4gICAgfVxuICAgIGlmIChwcm9taXNlW2JhcnJpZXJTeW1dID09IG51bGwpIHtcbiAgICAgICAgcHdyLnJlc29sdmUhKCk7XG4gICAgICAgIHByb21pc2VbYmFycmllclN5bV0gPSBwd3I7XG4gICAgfVxuICAgIHJldHVybiBwd3IucHJvbWlzZSE7XG59XG5cbi8vIFBvbHlmaWxsIFByb21pc2Uud2l0aFJlc29sdmVycy5cbmxldCBwcm9taXNlV2l0aFJlc29sdmVycyA9IFByb21pc2Uud2l0aFJlc29sdmVycztcbmlmIChwcm9taXNlV2l0aFJlc29sdmVycyAmJiB0eXBlb2YgcHJvbWlzZVdpdGhSZXNvbHZlcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBwcm9taXNlV2l0aFJlc29sdmVycyA9IHByb21pc2VXaXRoUmVzb2x2ZXJzLmJpbmQoUHJvbWlzZSk7XG59IGVsc2Uge1xuICAgIHByb21pc2VXaXRoUmVzb2x2ZXJzID0gZnVuY3Rpb24gPFQ+KCk6IFByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+IHtcbiAgICAgICAgbGV0IHJlc29sdmUhOiAodmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPikgPT4gdm9pZDtcbiAgICAgICAgbGV0IHJlamVjdCE6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxUPigocmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJlczsgcmVqZWN0ID0gcmVqOyB9KTtcbiAgICAgICAgcmV0dXJuIHsgcHJvbWlzZSwgcmVzb2x2ZSwgcmVqZWN0IH07XG4gICAgfVxufVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQge25ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkNsaXBib2FyZCk7XG5cbmNvbnN0IENsaXBib2FyZFNldFRleHQgPSAwO1xuY29uc3QgQ2xpcGJvYXJkVGV4dCA9IDE7XG5cbi8qKlxuICogU2V0cyB0aGUgdGV4dCB0byB0aGUgQ2xpcGJvYXJkLlxuICpcbiAqIEBwYXJhbSB0ZXh0IC0gVGhlIHRleHQgdG8gYmUgc2V0IHRvIHRoZSBDbGlwYm9hcmQuXG4gKiBAcmV0dXJuIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBzdWNjZXNzZnVsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gU2V0VGV4dCh0ZXh0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gY2FsbChDbGlwYm9hcmRTZXRUZXh0LCB7dGV4dH0pO1xufVxuXG4vKipcbiAqIEdldCB0aGUgQ2xpcGJvYXJkIHRleHRcbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0ZXh0IGZyb20gdGhlIENsaXBib2FyZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gY2FsbChDbGlwYm9hcmRUZXh0KTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuZXhwb3J0IGludGVyZmFjZSBTaXplIHtcbiAgICAvKiogVGhlIHdpZHRoIG9mIGEgcmVjdGFuZ3VsYXIgYXJlYS4gKi9cbiAgICBXaWR0aDogbnVtYmVyO1xuICAgIC8qKiBUaGUgaGVpZ2h0IG9mIGEgcmVjdGFuZ3VsYXIgYXJlYS4gKi9cbiAgICBIZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWN0IHtcbiAgICAvKiogVGhlIFggY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luLiAqL1xuICAgIFg6IG51bWJlcjtcbiAgICAvKiogVGhlIFkgY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luLiAqL1xuICAgIFk6IG51bWJlcjtcbiAgICAvKiogVGhlIHdpZHRoIG9mIHRoZSByZWN0YW5nbGUuICovXG4gICAgV2lkdGg6IG51bWJlcjtcbiAgICAvKiogVGhlIGhlaWdodCBvZiB0aGUgcmVjdGFuZ2xlLiAqL1xuICAgIEhlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmVlbiB7XG4gICAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc2NyZWVuLiAqL1xuICAgIElEOiBzdHJpbmc7XG4gICAgLyoqIEh1bWFuLXJlYWRhYmxlIG5hbWUgb2YgdGhlIHNjcmVlbi4gKi9cbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBzY2FsZSBmYWN0b3Igb2YgdGhlIHNjcmVlbiAoRFBJLzk2KS4gMSA9IHN0YW5kYXJkIERQSSwgMiA9IEhpRFBJIChSZXRpbmEpLCBldGMuICovXG4gICAgU2NhbGVGYWN0b3I6IG51bWJlcjtcbiAgICAvKiogVGhlIFggY29vcmRpbmF0ZSBvZiB0aGUgc2NyZWVuLiAqL1xuICAgIFg6IG51bWJlcjtcbiAgICAvKiogVGhlIFkgY29vcmRpbmF0ZSBvZiB0aGUgc2NyZWVuLiAqL1xuICAgIFk6IG51bWJlcjtcbiAgICAvKiogQ29udGFpbnMgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHNjcmVlbi4gKi9cbiAgICBTaXplOiBTaXplO1xuICAgIC8qKiBDb250YWlucyB0aGUgYm91bmRzIG9mIHRoZSBzY3JlZW4gaW4gdGVybXMgb2YgWCwgWSwgV2lkdGgsIGFuZCBIZWlnaHQuICovXG4gICAgQm91bmRzOiBSZWN0O1xuICAgIC8qKiBDb250YWlucyB0aGUgcGh5c2ljYWwgYm91bmRzIG9mIHRoZSBzY3JlZW4gaW4gdGVybXMgb2YgWCwgWSwgV2lkdGgsIGFuZCBIZWlnaHQgKGJlZm9yZSBzY2FsaW5nKS4gKi9cbiAgICBQaHlzaWNhbEJvdW5kczogUmVjdDtcbiAgICAvKiogQ29udGFpbnMgdGhlIGFyZWEgb2YgdGhlIHNjcmVlbiB0aGF0IGlzIGFjdHVhbGx5IHVzYWJsZSAoZXhjbHVkaW5nIHRhc2tiYXIgYW5kIG90aGVyIHN5c3RlbSBVSSkuICovXG4gICAgV29ya0FyZWE6IFJlY3Q7XG4gICAgLyoqIENvbnRhaW5zIHRoZSBwaHlzaWNhbCBXb3JrQXJlYSBvZiB0aGUgc2NyZWVuIChiZWZvcmUgc2NhbGluZykuICovXG4gICAgUGh5c2ljYWxXb3JrQXJlYTogUmVjdDtcbiAgICAvKiogVHJ1ZSBpZiB0aGlzIGlzIHRoZSBwcmltYXJ5IG1vbml0b3Igc2VsZWN0ZWQgYnkgdGhlIHVzZXIgaW4gdGhlIG9wZXJhdGluZyBzeXN0ZW0uICovXG4gICAgSXNQcmltYXJ5OiBib29sZWFuO1xuICAgIC8qKiBUaGUgcm90YXRpb24gb2YgdGhlIHNjcmVlbi4gKi9cbiAgICBSb3RhdGlvbjogbnVtYmVyO1xufVxuXG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLlNjcmVlbnMpO1xuXG5jb25zdCBnZXRBbGwgPSAwO1xuY29uc3QgZ2V0UHJpbWFyeSA9IDE7XG5jb25zdCBnZXRDdXJyZW50ID0gMjtcbmNvbnN0IGdldEJ5SUQgPSAzO1xuY29uc3QgZ2V0QnlJbmRleCA9IDQ7XG5cbi8qKlxuICogR2V0cyBhbGwgc2NyZWVucy5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBvZiBTY3JlZW4gb2JqZWN0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldEFsbCgpOiBQcm9taXNlPFNjcmVlbltdPiB7XG4gICAgcmV0dXJuIGNhbGwoZ2V0QWxsKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBwcmltYXJ5IHNjcmVlbi5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcHJpbWFyeSBzY3JlZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBHZXRQcmltYXJ5KCk6IFByb21pc2U8U2NyZWVuPiB7XG4gICAgcmV0dXJuIGNhbGwoZ2V0UHJpbWFyeSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgY3VycmVudCBhY3RpdmUgc2NyZWVuLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGN1cnJlbnQgYWN0aXZlIHNjcmVlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldEN1cnJlbnQoKTogUHJvbWlzZTxTY3JlZW4+IHtcbiAgICByZXR1cm4gY2FsbChnZXRDdXJyZW50KTtcbn1cblxuLyoqXG4gKiBHZXRzIGEgc2NyZWVuIGJ5IGl0cyB1bmlxdWUgZGlzcGxheSBJRC5cbiAqXG4gKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHNjcmVlbi5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBtYXRjaGluZyBTY3JlZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBHZXRCeUlEKGlkOiBzdHJpbmcpOiBQcm9taXNlPFNjcmVlbj4ge1xuICAgIHJldHVybiBjYWxsKGdldEJ5SUQsIHsgaWQgfSk7XG59XG5cbi8qKlxuICogR2V0cyBhIHNjcmVlbiBieSBpdHMgaW5kZXggaW4gdGhlIHNjcmVlbiBsaXN0LlxuICpcbiAqIEBwYXJhbSBpbmRleCAtIFRoZSB6ZXJvLWJhc2VkIGluZGV4IG9mIHRoZSBzY3JlZW4uXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbWF0Y2hpbmcgU2NyZWVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gR2V0QnlJbmRleChpbmRleDogbnVtYmVyKTogUHJvbWlzZTxTY3JlZW4+IHtcbiAgICByZXR1cm4gY2FsbChnZXRCeUluZGV4LCB7IGluZGV4IH0pO1xufVxuIiwgIi8qXG4gXyAgICAgX18gICAgIF8gX19cbnwgfCAgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcblxuY29uc3QgY2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuSU9TKTtcblxuLy8gTWV0aG9kIElEc1xuY29uc3QgSGFwdGljc0ltcGFjdCA9IDA7XG5jb25zdCBEZXZpY2VJbmZvID0gMTtcblxuZXhwb3J0IG5hbWVzcGFjZSBIYXB0aWNzIHtcbiAgICBleHBvcnQgdHlwZSBJbXBhY3RTdHlsZSA9IFwibGlnaHRcInxcIm1lZGl1bVwifFwiaGVhdnlcInxcInNvZnRcInxcInJpZ2lkXCI7XG4gICAgZXhwb3J0IGZ1bmN0aW9uIEltcGFjdChzdHlsZTogSW1wYWN0U3R5bGUgPSBcIm1lZGl1bVwiKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBjYWxsKEhhcHRpY3NJbXBhY3QsIHsgc3R5bGUgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIERldmljZSB7XG4gICAgZXhwb3J0IGludGVyZmFjZSBJbmZvIHtcbiAgICAgICAgbW9kZWw6IHN0cmluZztcbiAgICAgICAgc3lzdGVtTmFtZTogc3RyaW5nO1xuICAgICAgICBzeXN0ZW1WZXJzaW9uOiBzdHJpbmc7XG4gICAgICAgIGlzU2ltdWxhdG9yOiBib29sZWFuO1xuICAgIH1cbiAgICBleHBvcnQgZnVuY3Rpb24gSW5mbygpOiBQcm9taXNlPEluZm8+IHtcbiAgICAgICAgcmV0dXJuIGNhbGwoRGV2aWNlSW5mbyk7XG4gICAgfVxufVxuIiwgIi8qXG4gXyAgICAgX18gICAgIF8gX19cbnwgfCAgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcblxuY29uc3QgY2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuQW5kcm9pZCk7XG5cbi8vIE1ldGhvZCBJRHMgKG11c3QgbWF0Y2ggbWVzc2FnZXByb2Nlc3Nvcl9hbmRyb2lkLmdvKVxuY29uc3QgSGFwdGljc1ZpYnJhdGUgPSAwO1xuY29uc3QgRGV2aWNlSW5mbyA9IDE7XG5jb25zdCBUb2FzdFNob3cgPSAyO1xuXG5leHBvcnQgbmFtZXNwYWNlIEhhcHRpY3Mge1xuICAgIC8qKiBWaWJyYXRlIHRoZSBkZXZpY2UgZm9yIHRoZSBnaXZlbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIFZpYnJhdGUoZHVyYXRpb25NczogbnVtYmVyID0gMTAwKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBjYWxsKEhhcHRpY3NWaWJyYXRlLCB7IGR1cmF0aW9uOiBkdXJhdGlvbk1zIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBEZXZpY2Uge1xuICAgIGV4cG9ydCBpbnRlcmZhY2UgSW5mbyB7XG4gICAgICAgIHBsYXRmb3JtOiBzdHJpbmc7XG4gICAgICAgIG1hbnVmYWN0dXJlcjogc3RyaW5nO1xuICAgICAgICBicmFuZDogc3RyaW5nO1xuICAgICAgICBtb2RlbDogc3RyaW5nO1xuICAgICAgICBkZXZpY2U6IHN0cmluZztcbiAgICAgICAgdmVyc2lvbjogc3RyaW5nO1xuICAgICAgICBzZGtJbnQ6IG51bWJlcjtcbiAgICB9XG4gICAgLyoqIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQW5kcm9pZCBkZXZpY2UuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIEluZm8oKTogUHJvbWlzZTxJbmZvPiB7XG4gICAgICAgIHJldHVybiBjYWxsKERldmljZUluZm8pO1xuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBUb2FzdCB7XG4gICAgLyoqIFNob3cgYSBzaG9ydCBBbmRyb2lkIHRvYXN0IG1lc3NhZ2UuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIFNob3cobWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBjYWxsKFRvYXN0U2hvdywgeyBtZXNzYWdlIH0pO1xuICAgIH1cbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLyoqXG4gKiBVcGRhdGVyIGV2ZW50IG5hbWUgY29uc3RhbnRzLlxuICpcbiAqIFVzZSB0aGVzZSBpbnN0ZWFkIG9mIGhhcmQtY29kaW5nIHN0cmluZyBsaXRlcmFscyB3aGVuIHN1YnNjcmliaW5nIHRvXG4gKiB1cGRhdGVyIGV2ZW50cyBmcm9tIEphdmFTY3JpcHQ6XG4gKlxuICogICAgIGltcG9ydCB7IEV2ZW50cywgVXBkYXRlciB9IGZyb20gXCJAd2FpbHNpby9ydW50aW1lXCI7XG4gKlxuICogICAgIEV2ZW50cy5PbihVcGRhdGVyLkV2ZW50cy5VcGRhdGVBdmFpbGFibGUsIChlKSA9PiB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKFwidXBkYXRlIGZvdW5kOlwiLCBlLmRhdGEudmVyc2lvbik7XG4gKiAgICAgfSk7XG4gKlxuICogICAgIEV2ZW50cy5PbihVcGRhdGVyLkV2ZW50cy5Eb3dubG9hZFByb2dyZXNzLCAoZSkgPT4ge1xuICogICAgICAgICBjb25zdCBwID0gZS5kYXRhO1xuICogICAgICAgICBjb25zb2xlLmxvZyhgJHtwLndyaXR0ZW59IC8gJHtwLnRvdGFsfSBieXRlc2ApO1xuICogICAgIH0pO1xuICpcbiAqIE1pcnJvcnMgdGhlIEdvLXNpZGUgY29uc3RhbnRzIGluIGBwa2cvdXBkYXRlci9ldmVudHMuZ29gIGFuZCB0aGVcbiAqIHVzZXItYWN0aW9uIGNvbnN0YW50cyBpbiBgcGtnL3VwZGF0ZXIvd2luZG93X2xpZmVjeWNsZS5nb2AuIEFueVxuICogY2hhbmdlcyBoZXJlIG11c3Qgc3RheSBpbiBzeW5jIHdpdGggdGhvc2UgZmlsZXMgXHUyMDE0IHRoZXJlJ3MgYW5cbiAqIGludGVncmF0aW9uIHRlc3QgdGhhdCBhc3NlcnRzIHRoZSBzdHJpbmdzIG1hdGNoLlxuICovXG5leHBvcnQgY29uc3QgRXZlbnRzID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgLyoqIEEgQ2hlY2sgcm91bmQtdHJpcCBpcyBzdGFydGluZy4gUGF5bG9hZDogbnVsbC4gKi9cbiAgICBDaGVja1N0YXJ0ZWQ6IFwid2FpbHM6dXBkYXRlcjpjaGVjay1zdGFydGVkXCIsXG4gICAgLyoqIENoZWNrIGZvdW5kIGEgbmV3ZXIgcmVsZWFzZS4gUGF5bG9hZDogUmVsZWFzZS4gKi9cbiAgICBVcGRhdGVBdmFpbGFibGU6IFwid2FpbHM6dXBkYXRlcjp1cGRhdGUtYXZhaWxhYmxlXCIsXG4gICAgLyoqIENoZWNrIGNvbmZpcm1lZCB0aGUgY2FsbGVyIGlzIHVwIHRvIGRhdGUuIFBheWxvYWQ6IG51bGwuICovXG4gICAgTm9VcGRhdGU6IFwid2FpbHM6dXBkYXRlcjpuby11cGRhdGVcIixcbiAgICAvKiogRG93bmxvYWQgaXMgc3RhcnRpbmcuIFBheWxvYWQ6IFJlbGVhc2UuICovXG4gICAgRG93bmxvYWRTdGFydGVkOiBcIndhaWxzOnVwZGF0ZXI6ZG93bmxvYWQtc3RhcnRlZFwiLFxuICAgIC8qKiBQZXJpb2RpYyBwcm9ncmVzcyB0aWNrIGR1cmluZyBkb3dubG9hZCAofjEwIEh6KS4gUGF5bG9hZDogUHJvZ3Jlc3MuICovXG4gICAgRG93bmxvYWRQcm9ncmVzczogXCJ3YWlsczp1cGRhdGVyOmRvd25sb2FkLXByb2dyZXNzXCIsXG4gICAgLyoqIEFsbCBieXRlcyBhcmUgb24gZGlzaywgYnV0IHZlcmlmaWNhdGlvbiBoYXMgbm90IHlldCBzdGFydGVkLiBQYXlsb2FkOiBSZWxlYXNlLiAqL1xuICAgIERvd25sb2FkQ29tcGxldGU6IFwid2FpbHM6dXBkYXRlcjpkb3dubG9hZC1jb21wbGV0ZVwiLFxuICAgIC8qKiBTaWduYXR1cmUgLyBkaWdlc3QgdmVyaWZpY2F0aW9uIGhhcyBzdGFydGVkLiBQYXlsb2FkOiBSZWxlYXNlLiAqL1xuICAgIFZlcmlmeWluZzogXCJ3YWlsczp1cGRhdGVyOnZlcmlmeWluZ1wiLFxuICAgIC8qKiBUaGUgVXBkYXRlciBpcyBzd2FwcGluZyB0aGUgYmluYXJ5IGludG8gcGxhY2UuIFBheWxvYWQ6IFJlbGVhc2UuICovXG4gICAgSW5zdGFsbGluZzogXCJ3YWlsczp1cGRhdGVyOmluc3RhbGxpbmdcIixcbiAgICAvKiogVXBkYXRlIGlzIHN0YWdlZCBhbmQgYSByZXN0YXJ0IGlzIHBlbmRpbmcuIFBheWxvYWQ6IFJlbGVhc2UuICovXG4gICAgVXBkYXRlUmVhZHk6IFwid2FpbHM6dXBkYXRlcjp1cGRhdGUtcmVhZHlcIixcbiAgICAvKiogU29tZXRoaW5nIGZhaWxlZC4gUGF5bG9hZDogRXJyb3JJbmZvIHsgc3RhZ2UsIG1lc3NhZ2UsIHByb3ZpZGVyIH0uICovXG4gICAgRXJyb3I6IFwid2FpbHM6dXBkYXRlcjplcnJvclwiLFxuICAgIC8qKiBIb3N0LXNpZGUgY29udGV4dCBkZWxpdmVyZWQgb25jZSBwZXIgc2Vzc2lvbi4gUGF5bG9hZDogTWV0YSB7IGN1cnJlbnRWZXJzaW9uLCBza2lwcGVkVmVyc2lvbiB9LiAqL1xuICAgIE1ldGE6IFwid2FpbHM6dXBkYXRlcjptZXRhXCIsXG5cbiAgICAvKiogU3ViLW5hbWVzcGFjZTogdXNlci1hY3Rpb24gZXZlbnRzIHRoYXQgdGhlIFVJIGVtaXRzIEJBQ0sgdG8gdGhlIGhvc3QuICovXG4gICAgVXNlcjogT2JqZWN0LmZyZWV6ZSh7XG4gICAgICAgIC8qKiBVc2VyIGNsaWNrZWQgSW5zdGFsbCBvbiBhbiBBdmFpbGFibGUgdXBkYXRlLiAqL1xuICAgICAgICBJbnN0YWxsOiBcIndhaWxzOnVwZGF0ZXI6dXNlcjppbnN0YWxsXCIsXG4gICAgICAgIC8qKiBVc2VyIGNsaWNrZWQgUmVzdGFydCAmIEFwcGx5IG9uIGEgUmVhZHkgdXBkYXRlLiAqL1xuICAgICAgICBSZXN0YXJ0OiBcIndhaWxzOnVwZGF0ZXI6dXNlcjpyZXN0YXJ0XCIsXG4gICAgICAgIC8qKiBVc2VyIGNsaWNrZWQgU2tpcCBUaGlzIFZlcnNpb24uICovXG4gICAgICAgIFNraXA6IFwid2FpbHM6dXBkYXRlcjp1c2VyOnNraXBcIixcbiAgICAgICAgLyoqIFVzZXIgY2xpY2tlZCBSZW1pbmQgTWUgTGF0ZXIuICovXG4gICAgICAgIFJlbWluZDogXCJ3YWlsczp1cGRhdGVyOnVzZXI6cmVtaW5kXCIsXG4gICAgICAgIC8qKiBVc2VyIGNsaWNrZWQgQ2xvc2UgLyBDYW5jZWwuICovXG4gICAgICAgIENhbmNlbDogXCJ3YWlsczp1cGRhdGVyOnVzZXI6Y2FuY2VsXCIsXG4gICAgfSksXG5cbiAgICAvKiogU3ViLW5hbWVzcGFjZTogZnJhbWV3b3JrLWludGVybmFsIGV2ZW50cyB0aGUgVUkgZW1pdHMgdG8gY29vcmRpbmF0ZVxuICAgICAqICB3aXRoIHRoZSBob3N0LiBNb3N0IGFwcCBjb2RlIGNhbiBpZ25vcmUgdGhlc2UuICovXG4gICAgV2luZG93OiBPYmplY3QuZnJlZXplKHtcbiAgICAgICAgLyoqIFRoZSB3aW5kb3cgZmluaXNoZWQgbG9hZGluZyBhbmQgYXNrcyB0aGUgaG9zdCB0byByZXBsYXkgY3VycmVudCBzdGF0ZS4gKi9cbiAgICAgICAgUmVhZHk6IFwid2FpbHM6dXBkYXRlcjp3aW5kb3c6cmVhZHlcIixcbiAgICB9KSxcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ0FBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ0FBO0FBQUE7QUFBQTtBQUFBOzs7QUM2QkEsSUFBTSxjQUNGO0FBRUcsU0FBUyxPQUFPLE9BQWUsSUFBWTtBQUM5QyxNQUFJLEtBQUs7QUFFVCxNQUFJLElBQUksT0FBTztBQUNmLFNBQU8sS0FBSztBQUVSLFVBQU0sWUFBYSxLQUFLLE9BQU8sSUFBSSxLQUFNLENBQUM7QUFBQSxFQUM5QztBQUNBLFNBQU87QUFDWDs7O0FDeEJPLElBQU0sU0FBUyxPQUFPLFdBQVcsZUFBZSxPQUFPLGFBQWE7OztBQ0YzRSxTQUFTLGFBQXFCO0FBQzFCLFNBQU8sT0FBTyxTQUFTLFNBQVM7QUFDcEM7QUFHQSxJQUFNLGtCQUFrQixNQUFNO0FBTXZCLElBQU0sY0FBYyxPQUFPLE9BQU87QUFBQSxFQUNyQyxNQUFNO0FBQUEsRUFDTixXQUFXO0FBQUEsRUFDWCxhQUFhO0FBQUEsRUFDYixRQUFRO0FBQUEsRUFDUixhQUFh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ZTtBQUFBLElBQ2Ysb0JBQW9CO0FBQUEsSUFDcEIsb0JBQW9CO0FBQUEsSUFDcEIsMEJBQTBCO0FBQUEsSUFDMUIsZ0JBQWdCO0FBQUEsSUFDaEIsNEJBQTRCO0FBQUEsSUFDNUIsNEJBQTRCO0FBQUEsSUFDNUIseURBQXlEO0FBQUEsSUFDekQsc0NBQXNDO0FBQUEsSUFDdEMsb0JBQW9CO0FBQUEsSUFDcEIscUJBQXFCO0FBQUEsSUFDckIscUJBQXFCO0FBQUEsSUFDckIsc0JBQXNCO0FBQUEsSUFDdEIsZ0NBQWdDO0FBQUEsSUFDaEMsa0NBQWtDO0FBQUEsSUFDbEMsbUNBQW1DO0FBQUEsSUFDbkMsb0NBQW9DO0FBQUEsSUFDcEMsK0JBQStCO0FBQUEsSUFDL0IsNkJBQTZCO0FBQUEsSUFDN0IsdUJBQXVCO0FBQUEsSUFDdkIsaUNBQWlDO0FBQUEsSUFDakMsOEJBQThCO0FBQUEsSUFDOUIsNEJBQTRCO0FBQUEsSUFDNUIsc0NBQXNDO0FBQUEsSUFDdEMsNEJBQTRCO0FBQUEsSUFDNUIsc0JBQXNCO0FBQUEsSUFDdEIsa0NBQWtDO0FBQUEsSUFDbEMsc0JBQXNCO0FBQUEsSUFDdEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsbUJBQW1CO0FBQUEsSUFDbkIsMEJBQTBCO0FBQUEsSUFDMUIsOEJBQThCO0FBQUEsSUFDOUIseUJBQXlCO0FBQUEsSUFDekIsNkJBQTZCO0FBQUEsSUFDN0IsaUJBQWlCO0FBQUEsSUFDakIsZ0JBQWdCO0FBQUEsSUFDaEIsc0JBQXNCO0FBQUEsSUFDdEIsZUFBZTtBQUFBLElBQ2YseUJBQXlCO0FBQUEsSUFDekIsd0JBQXdCO0FBQUEsSUFDeEIsb0JBQW9CO0FBQUEsSUFDcEIscUJBQXFCO0FBQUEsSUFDckIsaUJBQWlCO0FBQUEsSUFDakIsaUJBQWlCO0FBQUEsSUFDakIsc0JBQXNCO0FBQUEsSUFDdEIsbUNBQW1DO0FBQUEsSUFDbkMscUNBQXFDO0FBQUEsSUFDckMsdUJBQXVCO0FBQUEsSUFDdkIsc0JBQXNCO0FBQUEsSUFDdEIsd0JBQXdCO0FB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ZSxTQUFTLFFBQVEsSUFBSSxjQUFjLEtBQUssSUFBSSxZQUFZO0FBQzdFLFVBQUksWUFBWSxTQUFTLFlBQVksR0FBRztBQUNwQyxjQUFNLFNBQVMsU0FBUyxjQUFjLFFBQVE7QUFDOUMsZUFBTyxNQUFNO0FBQ2IsaUJBQVMsS0FBSyxZQUFZLE1BQU07QUFBQSxNQUNwQztBQUFBLElBQ0o7QUFBQSxFQUNKLENBQUMsRUFDQSxNQUFNLE1BQU07QUFBQSxFQUFDLENBQUM7QUFDdkI7QUFHQSxJQUFJLFFBQVE7QUFDUixxQkFBbUIsa0JBQWtCO0FBQ3pDOyIsCiAgIm5hbWVzIjogWyJfYSIsICJFcnJvciIsICJjYWxsIiwgIkVycm9yIiwgIl9hIiwgIkFycmF5IiwgIk1hcCIsICJBcnJheSIsICJNYXAiLCAia2V5IiwgImNhbGwiLCAiX2EiLCAiX2EiLCAicmVzaXphYmxlIiwgIl9hIiwgImNhbGwiLCAiX2EiLCAiY2FsbCIsICJfYSIsICJjYWxsIiwgIkhpZGVNZXRob2QiLCAiU2hvd01ldGhvZCIsICJpc0RvY3VtZW50RG90QWxsIiwgIl9hIiwgInJlYXNvbiIsICJ2YWx1ZSIsICJjYWxsIiwgImNhbGwiLCAiY2FsbCIsICJjYWxsIiwgIkhhcHRpY3MiLCAiRGV2aWNlIiwgIkluZm8iLCAiRGV2aWNlIiwgIkhhcHRpY3MiLCAiY2FsbCIsICJEZXZpY2VJbmZvIiwgIkhhcHRpY3MiLCAiRGV2aWNlIiwgIkluZm8iLCAiVG9hc3QiLCAiU2hvdyIsICJFdmVudHMiLCAiRXZlbnRzIl0KfQo= +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2luZGV4LnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy93bWwudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2Jyb3dzZXIudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL25hbm9pZC50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvZW52aXJvbm1lbnQudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3J1bnRpbWUudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2RpYWxvZ3MudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2V2ZW50cy50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvbGlzdGVuZXIudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2NyZWF0ZS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvZXZlbnRfdHlwZXMudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3V0aWxzLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy93aW5kb3cudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL2NvbXBpbGVkL21haW4uanMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3N5c3RlbS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY29udGV4dG1lbnUudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2ZsYWdzLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9kcmFnLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9hcHBsaWNhdGlvbi50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY2FsbHMudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2NhbGxhYmxlLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9jYW5jZWxsYWJsZS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY2xpcGJvYXJkLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9zY3JlZW5zLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9pb3MudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2FuZHJvaWQudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3VwZGF0ZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG4vLyBTZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xufVxuXG5pbXBvcnQgXCIuL2NvbnRleHRtZW51LmpzXCI7XG5pbXBvcnQgXCIuL2RyYWcuanNcIjtcblxuLy8gUmUtZXhwb3J0IHB1YmxpYyBBUElcbmltcG9ydCAqIGFzIEFwcGxpY2F0aW9uIGZyb20gXCIuL2FwcGxpY2F0aW9uLmpzXCI7XG5pbXBvcnQgKiBhcyBCcm93c2VyIGZyb20gXCIuL2Jyb3dzZXIuanNcIjtcbmltcG9ydCAqIGFzIENhbGwgZnJvbSBcIi4vY2FsbHMuanNcIjtcbmltcG9ydCAqIGFzIENsaXBib2FyZCBmcm9tIFwiLi9jbGlwYm9hcmQuanNcIjtcbmltcG9ydCAqIGFzIENyZWF0ZSBmcm9tIFwiLi9jcmVhdGUuanNcIjtcbmltcG9ydCAqIGFzIERpYWxvZ3MgZnJvbSBcIi4vZGlhbG9ncy5qc1wiO1xuaW1wb3J0ICogYXMgRXZlbnRzIGZyb20gXCIuL2V2ZW50cy5qc1wiO1xuaW1wb3J0ICogYXMgRmxhZ3MgZnJvbSBcIi4vZmxhZ3MuanNcIjtcbmltcG9ydCAqIGFzIFNjcmVlbnMgZnJvbSBcIi4vc2NyZWVucy5qc1wiO1xuaW1wb3J0ICogYXMgU3lzdGVtIGZyb20gXCIuL3N5c3RlbS5qc1wiO1xuaW1wb3J0ICogYXMgSU9TIGZyb20gXCIuL2lvcy5qc1wiO1xuaW1wb3J0ICogYXMgQW5kcm9pZCBmcm9tIFwiLi9hbmRyb2lkLmpzXCI7XG5pbXBvcnQgKiBhcyBVcGRhdGVyIGZyb20gXCIuL3VwZGF0ZXIuanNcIjtcbmltcG9ydCBXaW5kb3csIHsgaGFuZGxlRHJhZ0VudGVyLCBoYW5kbGVEcmFnTGVhdmUsIGhhbmRsZURyYWdPdmVyIH0gZnJvbSBcIi4vd2luZG93LmpzXCI7XG5pbXBvcnQgKiBhcyBXTUwgZnJvbSBcIi4vd21sLmpzXCI7XG5cbmV4cG9ydCB7XG4gICAgQXBwbGljYXRpb24sXG4gICAgQnJvd3NlcixcbiAgICBDYWxsLFxuICAgIENsaXBib2FyZCxcbiAgICBEaWFsb2dzLFxuICAgIEV2ZW50cyxcbiAgICBGbGFncyxcbiAgICBTY3JlZW5zLFxuICAgIFN5c3RlbSxcbiAgICBJT1MsXG4gICAgQW5kcm9pZCxcbiAgICBVcGRhdGVyLFxuICAgIFdpbmRvdyxcbiAgICBXTUxcbn07XG5cbi8qKlxuICogQW4gaW50ZXJuYWwgdXRpbGl0eSBjb25zdW1lZCBieSB0aGUgYmluZGluZyBnZW5lcmF0b3IuXG4gKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgeyBDcmVhdGUgfTtcblxuZXhwb3J0ICogZnJvbSBcIi4vY2FuY2VsbGFibGUuanNcIjtcblxuLy8gRXhwb3J0IHRyYW5zcG9ydCBpbnRlcmZhY2VzIGFuZCB1dGlsaXRpZXNcbmV4cG9ydCB7XG4gICAgc2V0VHJhbnNwb3J0LFxuICAgIGdldFRyYW5zcG9ydCxcbiAgICB0eXBlIFJ1bnRpbWVUcmFuc3BvcnQsXG4gICAgb2JqZWN0TmFtZXMsXG4gICAgY2xpZW50SWQsXG59IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcblxuaW1wb3J0IHsgY2xpZW50SWQgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbi8vIE5vdGlmeSBiYWNrZW5kXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5pbnZva2UgPSBTeXN0ZW0uaW52b2tlO1xuICAgIHdpbmRvdy5fd2FpbHMuY2xpZW50SWQgPSBjbGllbnRJZDtcbn1cblxuLy8gUmVnaXN0ZXIgcGxhdGZvcm0gaGFuZGxlcnMgKGludGVybmFsIEFQSSlcbi8vIE5vdGU6IFdpbmRvdyBpcyB0aGUgdGhpc1dpbmRvdyBpbnN0YW5jZSAoZGVmYXVsdCBleHBvcnQgZnJvbSB3aW5kb3cudHMpXG4vLyBCaW5kaW5nIGVuc3VyZXMgJ3RoaXMnIGNvcnJlY3RseSByZWZlcnMgdG8gdGhlIGN1cnJlbnQgd2luZG93IGluc3RhbmNlXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVQbGF0Zm9ybUZpbGVEcm9wID0gV2luZG93LkhhbmRsZVBsYXRmb3JtRmlsZURyb3AuYmluZChXaW5kb3cpO1xufVxuXG4vLyBMaW51eC1zcGVjaWZpYyBkcmFnIGhhbmRsZXJzIChHVEsgaW50ZXJjZXB0cyBET00gZHJhZyBldmVudHMpXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnRW50ZXIgPSBoYW5kbGVEcmFnRW50ZXI7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnTGVhdmUgPSBoYW5kbGVEcmFnTGVhdmU7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnT3ZlciA9IGhhbmRsZURyYWdPdmVyO1xufVxuXG5pZiAoaGFzRE9NKSB7XG4gICAgU3lzdGVtLmludm9rZShcIndhaWxzOnJ1bnRpbWU6cmVhZHlcIik7XG59XG5cbi8qKlxuICogTG9hZHMgYSBzY3JpcHQgZnJvbSB0aGUgZ2l2ZW4gVVJMIGlmIGl0IGV4aXN0cy5cbiAqIFVzZXMgSEVBRCByZXF1ZXN0IHRvIGNoZWNrIGV4aXN0ZW5jZSwgdGhlbiBpbmplY3RzIGEgc2NyaXB0IHRhZy5cbiAqIFNpbGVudGx5IGlnbm9yZXMgaWYgdGhlIHNjcmlwdCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZE9wdGlvbmFsU2NyaXB0KHVybDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZldGNoKHVybCwgeyBtZXRob2Q6ICdIRUFEJyB9KVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICAvLyBWZXJpZnkgdGhlIHJlc3BvbnNlIGlzIGFjdHVhbGx5IEphdmFTY3JpcHQgYW5kIG5vdCBhbiBIVE1MIGZhbGxiYWNrXG4gICAgICAgICAgICAgICAgLy8gKGUuZy4gVml0ZSBkZXYgc2VydmVyIHJldHVybnMgaW5kZXguaHRtbCBmb3IgdW5rbm93biByb3V0ZXMpXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSAocmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZS5pbmNsdWRlcygnamF2YXNjcmlwdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHQuc3JjID0gdXJsO1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4ge30pOyAvLyBTaWxlbnRseSBpZ25vcmUgLSBzY3JpcHQgaXMgb3B0aW9uYWxcbn1cblxuLy8gTG9hZCBjdXN0b20uanMgaWYgYXZhaWxhYmxlICh1c2VkIGJ5IHNlcnZlciBtb2RlIGZvciBXZWJTb2NrZXQgZXZlbnRzLCBldGMuKVxuaWYgKGhhc0RPTSkge1xuICAgIGxvYWRPcHRpb25hbFNjcmlwdCgnL3dhaWxzL2N1c3RvbS5qcycpO1xufVxuIiwgIi8qXG4gXyAgICAgX18gICAgIF8gX19cbnwgfCAgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBPcGVuVVJMIH0gZnJvbSBcIi4vYnJvd3Nlci5qc1wiO1xuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tIFwiLi9kaWFsb2dzLmpzXCI7XG5pbXBvcnQgeyBFbWl0IH0gZnJvbSBcIi4vZXZlbnRzLmpzXCI7XG5pbXBvcnQgeyBjYW5BYm9ydExpc3RlbmVycywgd2hlblJlYWR5IH0gZnJvbSBcIi4vdXRpbHMuanNcIjtcbmltcG9ydCBXaW5kb3cgZnJvbSBcIi4vd2luZG93LmpzXCI7XG5cbi8qKlxuICogU2VuZHMgYW4gZXZlbnQgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBhbmQgb3B0aW9uYWwgZGF0YS5cbiAqXG4gKiBAcGFyYW0gZXZlbnROYW1lIC0gLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQgdG8gc2VuZC5cbiAqIEBwYXJhbSBbZGF0YT1udWxsXSAtIC0gT3B0aW9uYWwgZGF0YSB0byBzZW5kIGFsb25nIHdpdGggdGhlIGV2ZW50LlxuICovXG5mdW5jdGlvbiBzZW5kRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIGRhdGE6IGFueSA9IG51bGwpOiB2b2lkIHtcbiAgICBFbWl0KGV2ZW50TmFtZSwgZGF0YSk7XG59XG5cbi8qKlxuICogQ2FsbHMgYSBtZXRob2Qgb24gYSBzcGVjaWZpZWQgd2luZG93LlxuICpcbiAqIEBwYXJhbSB3aW5kb3dOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHdpbmRvdyB0byBjYWxsIHRoZSBtZXRob2Qgb24uXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QgdG8gY2FsbC5cbiAqL1xuZnVuY3Rpb24gY2FsbFdpbmRvd01ldGhvZCh3aW5kb3dOYW1lOiBzdHJpbmcsIG1ldGhvZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRhcmdldFdpbmRvdyA9IFdpbmRvdy5HZXQod2luZG93TmFtZSk7XG4gICAgY29uc3QgbWV0aG9kID0gKHRhcmdldFdpbmRvdyBhcyBhbnkpW21ldGhvZE5hbWVdO1xuXG4gICAgaWYgKHR5cGVvZiBtZXRob2QgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBXaW5kb3cgbWV0aG9kICcke21ldGhvZE5hbWV9JyBub3QgZm91bmRgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIG1ldGhvZC5jYWxsKHRhcmdldFdpbmRvdyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBjYWxsaW5nIHdpbmRvdyBtZXRob2QgJyR7bWV0aG9kTmFtZX0nOiBgLCBlKTtcbiAgICB9XG59XG5cbi8qKlxuICogUmVzcG9uZHMgdG8gYSB0cmlnZ2VyaW5nIGV2ZW50IGJ5IHJ1bm5pbmcgYXBwcm9wcmlhdGUgV01MIGFjdGlvbnMgZm9yIHRoZSBjdXJyZW50IHRhcmdldC5cbiAqL1xuZnVuY3Rpb24gb25XTUxUcmlnZ2VyZWQoZXY6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IGV2LmN1cnJlbnRUYXJnZXQgYXMgRWxlbWVudDtcblxuICAgIGZ1bmN0aW9uIHJ1bkVmZmVjdChjaG9pY2UgPSBcIlllc1wiKSB7XG4gICAgICAgIGlmIChjaG9pY2UgIT09IFwiWWVzXCIpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZXZlbnRUeXBlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3dtbC1ldmVudCcpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXdtbC1ldmVudCcpO1xuICAgICAgICBjb25zdCB0YXJnZXRXaW5kb3cgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLXRhcmdldC13aW5kb3cnKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtdGFyZ2V0LXdpbmRvdycpIHx8IFwiXCI7XG4gICAgICAgIGNvbnN0IHdpbmRvd01ldGhvZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd3bWwtd2luZG93JykgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtd21sLXdpbmRvdycpO1xuICAgICAgICBjb25zdCB1cmwgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLW9wZW51cmwnKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtb3BlbnVybCcpO1xuXG4gICAgICAgIGlmIChldmVudFR5cGUgIT09IG51bGwpXG4gICAgICAgICAgICBzZW5kRXZlbnQoZXZlbnRUeXBlKTtcbiAgICAgICAgaWYgKHdpbmRvd01ldGhvZCAhPT0gbnVsbClcbiAgICAgICAgICAgIGNhbGxXaW5kb3dNZXRob2QodGFyZ2V0V2luZG93LCB3aW5kb3dNZXRob2QpO1xuICAgICAgICBpZiAodXJsICE9PSBudWxsKVxuICAgICAgICAgICAgdm9pZCBPcGVuVVJMKHVybCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlybSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd3bWwtY29uZmlybScpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXdtbC1jb25maXJtJyk7XG5cbiAgICBpZiAoY29uZmlybSkge1xuICAgICAgICBRdWVzdGlvbih7XG4gICAgICAgICAgICBUaXRsZTogXCJDb25maXJtXCIsXG4gICAgICAgICAgICBNZXNzYWdlOiBjb25maXJtLFxuICAgICAgICAgICAgRGV0YWNoZWQ6IGZhbHNlLFxuICAgICAgICAgICAgQnV0dG9uczogW1xuICAgICAgICAgICAgICAgIHsgTGFiZWw6IFwiWWVzXCIgfSxcbiAgICAgICAgICAgICAgICB7IExhYmVsOiBcIk5vXCIsIElzRGVmYXVsdDogdHJ1ZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0pLnRoZW4ocnVuRWZmZWN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBydW5FZmZlY3QoKTtcbiAgICB9XG59XG5cbi8vIFByaXZhdGUgZmllbGQgbmFtZXMuXG5jb25zdCBjb250cm9sbGVyU3ltID0gU3ltYm9sKFwiY29udHJvbGxlclwiKTtcbmNvbnN0IHRyaWdnZXJNYXBTeW0gPSBTeW1ib2woXCJ0cmlnZ2VyTWFwXCIpO1xuY29uc3QgZWxlbWVudENvdW50U3ltID0gU3ltYm9sKFwiZWxlbWVudENvdW50XCIpO1xuXG4vKipcbiAqIEFib3J0Q29udHJvbGxlclJlZ2lzdHJ5IGRvZXMgbm90IGFjdHVhbGx5IHJlbWVtYmVyIGFjdGl2ZSBldmVudCBsaXN0ZW5lcnM6IGluc3RlYWRcbiAqIGl0IHRpZXMgdGhlbSB0byBhbiBBYm9ydFNpZ25hbCBhbmQgdXNlcyBhbiBBYm9ydENvbnRyb2xsZXIgdG8gcmVtb3ZlIHRoZW0gYWxsIGF0IG9uY2UuXG4gKi9cbmNsYXNzIEFib3J0Q29udHJvbGxlclJlZ2lzdHJ5IHtcbiAgICAvLyBQcml2YXRlIGZpZWxkcy5cbiAgICBbY29udHJvbGxlclN5bV06IEFib3J0Q29udHJvbGxlcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzW2NvbnRyb2xsZXJTeW1dID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gb3B0aW9ucyBvYmplY3QgZm9yIGFkZEV2ZW50TGlzdGVuZXIgdGhhdCB0aWVzIHRoZSBsaXN0ZW5lclxuICAgICAqIHRvIHRoZSBBYm9ydFNpZ25hbCBmcm9tIHRoZSBjdXJyZW50IEFib3J0Q29udHJvbGxlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbGVtZW50IC0gQW4gSFRNTCBlbGVtZW50XG4gICAgICogQHBhcmFtIHRyaWdnZXJzIC0gVGhlIGxpc3Qgb2YgYWN0aXZlIFdNTCB0cmlnZ2VyIGV2ZW50cyBmb3IgdGhlIHNwZWNpZmllZCBlbGVtZW50c1xuICAgICAqL1xuICAgIHNldChlbGVtZW50OiBFbGVtZW50LCB0cmlnZ2Vyczogc3RyaW5nW10pOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB7IHNpZ25hbDogdGhpc1tjb250cm9sbGVyU3ltXS5zaWduYWwgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCByZWdpc3RlcmVkIGV2ZW50IGxpc3RlbmVycyBhbmQgcmVzZXRzIHRoZSByZWdpc3RyeS5cbiAgICAgKi9cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpc1tjb250cm9sbGVyU3ltXS5hYm9ydCgpO1xuICAgICAgICB0aGlzW2NvbnRyb2xsZXJTeW1dID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBXZWFrTWFwUmVnaXN0cnkgbWFwcyBhY3RpdmUgdHJpZ2dlciBldmVudHMgdG8gZWFjaCBET00gZWxlbWVudCB0aHJvdWdoIGEgV2Vha01hcC5cbiAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBtYXBwaW5nIHJlbWFpbnMgcHJpdmF0ZSB0byB0aGlzIG1vZHVsZSwgd2hpbGUgc3RpbGwgYWxsb3dpbmcgZ2FyYmFnZVxuICogY29sbGVjdGlvbiBvZiB0aGUgaW52b2x2ZWQgZWxlbWVudHMuXG4gKi9cbmNsYXNzIFdlYWtNYXBSZWdpc3RyeSB7XG4gICAgLyoqIFN0b3JlcyB0aGUgY3VycmVudCBlbGVtZW50LXRvLXRyaWdnZXIgbWFwcGluZy4gKi9cbiAgICBbdHJpZ2dlck1hcFN5bV06IFdlYWtNYXA8RWxlbWVudCwgc3RyaW5nW10+O1xuICAgIC8qKiBDb3VudHMgdGhlIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIGFjdGl2ZSBXTUwgdHJpZ2dlcnMuICovXG4gICAgW2VsZW1lbnRDb3VudFN5bV06IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzW3RyaWdnZXJNYXBTeW1dID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgICAgdGhpc1tlbGVtZW50Q291bnRTeW1dID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGFjdGl2ZSB0cmlnZ2VycyBmb3IgdGhlIHNwZWNpZmllZCBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIGVsZW1lbnQgLSBBbiBIVE1MIGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gdHJpZ2dlcnMgLSBUaGUgbGlzdCBvZiBhY3RpdmUgV01MIHRyaWdnZXIgZXZlbnRzIGZvciB0aGUgc3BlY2lmaWVkIGVsZW1lbnRcbiAgICAgKi9cbiAgICBzZXQoZWxlbWVudDogRWxlbWVudCwgdHJpZ2dlcnM6IHN0cmluZ1tdKTogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMge1xuICAgICAgICBpZiAoIXRoaXNbdHJpZ2dlck1hcFN5bV0uaGFzKGVsZW1lbnQpKSB7IHRoaXNbZWxlbWVudENvdW50U3ltXSsrOyB9XG4gICAgICAgIHRoaXNbdHJpZ2dlck1hcFN5bV0uc2V0KGVsZW1lbnQsIHRyaWdnZXJzKTtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIHJlZ2lzdGVyZWQgZXZlbnQgbGlzdGVuZXJzLlxuICAgICAqL1xuICAgIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpc1tlbGVtZW50Q291bnRTeW1dIDw9IDApXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgnKicpKSB7XG4gICAgICAgICAgICBpZiAodGhpc1tlbGVtZW50Q291bnRTeW1dIDw9IDApXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJzID0gdGhpc1t0cmlnZ2VyTWFwU3ltXS5nZXQoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAodHJpZ2dlcnMgIT0gbnVsbCkgeyB0aGlzW2VsZW1lbnRDb3VudFN5bV0tLTsgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMgfHwgW10pXG4gICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHRyaWdnZXIsIG9uV01MVHJpZ2dlcmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXNbdHJpZ2dlck1hcFN5bV0gPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICB0aGlzW2VsZW1lbnRDb3VudFN5bV0gPSAwO1xuICAgIH1cbn1cblxuY29uc3QgdHJpZ2dlclJlZ2lzdHJ5ID0gY2FuQWJvcnRMaXN0ZW5lcnMoKSA/IG5ldyBBYm9ydENvbnRyb2xsZXJSZWdpc3RyeSgpIDogbmV3IFdlYWtNYXBSZWdpc3RyeSgpO1xuXG4vKipcbiAqIEFkZHMgZXZlbnQgbGlzdGVuZXJzIHRvIHRoZSBzcGVjaWZpZWQgZWxlbWVudC5cbiAqL1xuZnVuY3Rpb24gYWRkV01MTGlzdGVuZXJzKGVsZW1lbnQ6IEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0cmlnZ2VyUmVnRXhwID0gL1xcUysvZztcbiAgICBjb25zdCB0cmlnZ2VyQXR0ciA9IChlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLXRyaWdnZXInKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtdHJpZ2dlcicpIHx8IFwiY2xpY2tcIik7XG4gICAgY29uc3QgdHJpZ2dlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBsZXQgbWF0Y2g7XG4gICAgd2hpbGUgKChtYXRjaCA9IHRyaWdnZXJSZWdFeHAuZXhlYyh0cmlnZ2VyQXR0cikpICE9PSBudWxsKVxuICAgICAgICB0cmlnZ2Vycy5wdXNoKG1hdGNoWzBdKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB0cmlnZ2VyUmVnaXN0cnkuc2V0KGVsZW1lbnQsIHRyaWdnZXJzKTtcbiAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMpXG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0cmlnZ2VyLCBvbldNTFRyaWdnZXJlZCwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogU2NoZWR1bGVzIGFuIGF1dG9tYXRpYyByZWxvYWQgb2YgV01MIHRvIGJlIHBlcmZvcm1lZCBhcyBzb29uIGFzIHRoZSBkb2N1bWVudCBpcyBmdWxseSBsb2FkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbmFibGUoKTogdm9pZCB7XG4gICAgd2hlblJlYWR5KFJlbG9hZCk7XG59XG5cbi8qKlxuICogUmVsb2FkcyB0aGUgV01MIHBhZ2UgYnkgYWRkaW5nIG5lY2Vzc2FyeSBldmVudCBsaXN0ZW5lcnMgYW5kIGJyb3dzZXIgbGlzdGVuZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gUmVsb2FkKCk6IHZvaWQge1xuICAgIHRyaWdnZXJSZWdpc3RyeS5yZXNldCgpO1xuICAgIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgnW3dtbC1ldmVudF0sIFt3bWwtd2luZG93XSwgW3dtbC1vcGVudXJsXSwgW2RhdGEtd21sLWV2ZW50XSwgW2RhdGEtd21sLXdpbmRvd10sIFtkYXRhLXdtbC1vcGVudXJsXScpLmZvckVhY2goYWRkV01MTGlzdGVuZXJzKTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHsgbmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXMgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkJyb3dzZXIpO1xuXG5jb25zdCBCcm93c2VyT3BlblVSTCA9IDA7XG5cbi8qKlxuICogT3BlbiBhIGJyb3dzZXIgd2luZG93IHRvIHRoZSBnaXZlbiBVUkwuXG4gKlxuICogQHBhcmFtIHVybCAtIFRoZSBVUkwgdG8gb3BlblxuICovXG5leHBvcnQgZnVuY3Rpb24gT3BlblVSTCh1cmw6IHN0cmluZyB8IFVSTCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBjYWxsKEJyb3dzZXJPcGVuVVJMLCB7dXJsOiB1cmwudG9TdHJpbmcoKX0pO1xufVxuIiwgIi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2FpL25hbm9pZFxuXG4vLyBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbi8vXG4vLyBDb3B5cmlnaHQgMjAxNyBBbmRyZXkgU2l0bmlrIDxhbmRyZXlAc2l0bmlrLnJ1PlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2Zcbi8vIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW5cbi8vIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG9cbi8vIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mXG4vLyB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sXG4vLyAgICAgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gICAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuLy8gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyAgICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1Ncbi8vIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUlxuLy8gQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSXG4vLyBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTlxuLy8gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gVGhpcyBhbHBoYWJldCB1c2VzIGBBLVphLXowLTlfLWAgc3ltYm9scy5cbi8vIFRoZSBvcmRlciBvZiBjaGFyYWN0ZXJzIGlzIG9wdGltaXplZCBmb3IgYmV0dGVyIGd6aXAgYW5kIGJyb3RsaSBjb21wcmVzc2lvbi5cbi8vIFJlZmVyZW5jZXMgdG8gdGhlIHNhbWUgZmlsZSAod29ya3MgYm90aCBmb3IgZ3ppcCBhbmQgYnJvdGxpKTpcbi8vIGAndXNlYCwgYGFuZG9tYCwgYW5kIGByaWN0J2Bcbi8vIFJlZmVyZW5jZXMgdG8gdGhlIGJyb3RsaSBkZWZhdWx0IGRpY3Rpb25hcnk6XG4vLyBgLTI2VGAsIGAxOTgzYCwgYDQwcHhgLCBgNzVweGAsIGBidXNoYCwgYGphY2tgLCBgbWluZGAsIGB2ZXJ5YCwgYW5kIGB3b2xmYFxuY29uc3QgdXJsQWxwaGFiZXQgPVxuICAgICd1c2VhbmRvbS0yNlQxOTgzNDBQWDc1cHhKQUNLVkVSWU1JTkRCVVNIV09MRl9HUVpiZmdoamtscXZ3eXpyaWN0J1xuXG5leHBvcnQgZnVuY3Rpb24gbmFub2lkKHNpemU6IG51bWJlciA9IDIxKTogc3RyaW5nIHtcbiAgICBsZXQgaWQgPSAnJ1xuICAgIC8vIEEgY29tcGFjdCBhbHRlcm5hdGl2ZSBmb3IgYGZvciAodmFyIGkgPSAwOyBpIDwgc3RlcDsgaSsrKWAuXG4gICAgbGV0IGkgPSBzaXplIHwgMFxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgLy8gYHwgMGAgaXMgbW9yZSBjb21wYWN0IGFuZCBmYXN0ZXIgdGhhbiBgTWF0aC5mbG9vcigpYC5cbiAgICAgICAgaWQgKz0gdXJsQWxwaGFiZXRbKE1hdGgucmFuZG9tKCkgKiA2NCkgfCAwXVxuICAgIH1cbiAgICByZXR1cm4gaWRcbn1cbiIsICIvKlxuIF8gICAgIF9fICAgICBfIF9fXG58IHwgIC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLyoqXG4gKiBUcnVlIHdoZW4gcnVubmluZyBpbnNpZGUgYSBicm93c2VyL3dlYnZpZXcgd2l0aCBhIERPTSBhdmFpbGFibGUuXG4gKiBGYWxzZSB1bmRlciBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgKGUuZy4gYG5leHQgYnVpbGRgIHByZXJlbmRlcmluZyksXG4gKiB3aGVyZSBhcHBsaWNhdGlvbiBjb2RlIG1heSBpbXBvcnQgdGhlIHJ1bnRpbWUgbW9kdWxlIGV2ZW4gdGhvdWdoIG5vXG4gKiBXYWlscyBBUElzIGNhbiBhY3R1YWxseSBiZSB1c2VkICgjNDY3OSkuIE1vZHVsZXMgbXVzdCBub3QgdG91Y2hcbiAqIGB3aW5kb3dgL2Bkb2N1bWVudGAgYXQgaW1wb3J0IHRpbWUgZXhjZXB0IGJlaGluZCB0aGlzIGd1YXJkLlxuICovXG5leHBvcnQgY29uc3QgaGFzRE9NID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCI7XG4iLCAiLypcbiBfICAgICBfXyAgICAgXyBfX1xufCB8ICAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gXCIuL25hbm9pZC5qc1wiO1xuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuLy8gUmVzb2x2ZWQgbGF6aWx5OiB3aW5kb3cgZG9lcyBub3QgZXhpc3Qgd2hlbiB0aGUgbW9kdWxlIGlzIGltcG9ydGVkIGR1cmluZ1xuLy8gc2VydmVyLXNpZGUgcmVuZGVyaW5nICgjNDY3OSksIGFuZCBub3RoaW5nIGNhbiBjYWxsIHRoZSBydW50aW1lIHRoZXJlLlxuZnVuY3Rpb24gcnVudGltZVVSTCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgXCIvd2FpbHMvcnVudGltZVwiO1xufVxuXG4vLyBTdGF5IHVuZGVyIFdlYlZpZXcyJ3MgfjJNQiByZXF1ZXN0IGJvZHkgYnVmZmVyaW5nIGxpbWl0IGluIFdlYlJlc291cmNlUmVxdWVzdGVkLlxuY29uc3QgQ0hVTktfVEhSRVNIT0xEID0gNTEyICogMTAyNDtcblxuLy8gUmUtZXhwb3J0IG5hbm9pZCBmb3IgY3VzdG9tIHRyYW5zcG9ydCBpbXBsZW1lbnRhdGlvbnNcbmV4cG9ydCB7IG5hbm9pZCB9O1xuXG50eXBlIENhbGxFcnJvclR5cGUgPSB7XG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGNhdXNlPzogdW5rbm93bixcbiAgICBraW5kOiBcIlJlZmVyZW5jZUVycm9yXCIgfCBcIlR5cGVFcnJvclwiIHwgXCJSdW50aW1lRXJyb3JcIlxufVxuXG4vKipcbiAqIEV4Y2VwdGlvbiBjbGFzcyB0aGF0IHdpbGwgYmUgdGhyb3duIGluIGNhc2UgdGhlIGJvdW5kIG1ldGhvZCByZXR1cm5zIGFuIGVycm9yLlxuICogVGhlIHZhbHVlIG9mIHRoZSB7QGxpbmsgUnVudGltZUVycm9yI25hbWV9IHByb3BlcnR5IGlzIFwiUnVudGltZUVycm9yXCIuXG4gKi9cbmV4cG9ydCBjbGFzcyBSdW50aW1lRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBSdW50aW1lRXJyb3IgaW5zdGFuY2UuXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgdG8gYmUgZm9yd2FyZGVkIHRvIHRoZSBFcnJvciBjb25zdHJ1Y3Rvci5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nLCBvcHRpb25zPzogRXJyb3JPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UsIG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIlJ1bnRpbWVFcnJvclwiO1xuICAgIH1cbn1cblxuLy8gT2JqZWN0IE5hbWVzXG5leHBvcnQgY29uc3Qgb2JqZWN0TmFtZXMgPSBPYmplY3QuZnJlZXplKHtcbiAgICBDYWxsOiAwLFxuICAgIENsaXBib2FyZDogMSxcbiAgICBBcHBsaWNhdGlvbjogMixcbiAgICBFdmVudHM6IDMsXG4gICAgQ29udGV4dE1lbnU6IDQsXG4gICAgRGlhbG9nOiA1LFxuICAgIFdpbmRvdzogNixcbiAgICBTY3JlZW5zOiA3LFxuICAgIFN5c3RlbTogOCxcbiAgICBCcm93c2VyOiA5LFxuICAgIENhbmNlbENhbGw6IDEwLFxuICAgIElPUzogMTEsXG4gICAgQW5kcm9pZDogMTIsXG59KTtcbmV4cG9ydCBsZXQgY2xpZW50SWQgPSBuYW5vaWQoKTtcblxuLyoqXG4gKiBSdW50aW1lVHJhbnNwb3J0IGRlZmluZXMgdGhlIGludGVyZmFjZSBmb3IgY3VzdG9tIElQQyB0cmFuc3BvcnQgaW1wbGVtZW50YXRpb25zLlxuICogSW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIHRvIHVzZSBXZWJTb2NrZXRzLCBjdXN0b20gcHJvdG9jb2xzLCBvciBhbnkgb3RoZXJcbiAqIHRyYW5zcG9ydCBtZWNoYW5pc20gaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBIVFRQIGZldGNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bnRpbWVUcmFuc3BvcnQge1xuICAgIC8qKlxuICAgICAqIFNlbmQgYSBydW50aW1lIGNhbGwgYW5kIHJldHVybiB0aGUgcmVzcG9uc2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2JqZWN0SUQgLSBUaGUgV2FpbHMgb2JqZWN0IElEICgwPUNhbGwsIDE9Q2xpcGJvYXJkLCBldGMuKVxuICAgICAqIEBwYXJhbSBtZXRob2QgLSBUaGUgbWV0aG9kIElEIHRvIGNhbGxcbiAgICAgKiBAcGFyYW0gd2luZG93TmFtZSAtIE9wdGlvbmFsIHdpbmRvdyBuYW1lXG4gICAgICogQHBhcmFtIGFyZ3MgLSBBcmd1bWVudHMgdG8gcGFzcyAod2lsbCBiZSBKU09OIHN0cmluZ2lmaWVkIGlmIHByZXNlbnQpXG4gICAgICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3BvbnNlIGRhdGFcbiAgICAgKi9cbiAgICBjYWxsKG9iamVjdElEOiBudW1iZXIsIG1ldGhvZDogbnVtYmVyLCB3aW5kb3dOYW1lOiBzdHJpbmcsIGFyZ3M6IGFueSk6IFByb21pc2U8YW55Pjtcbn1cblxuLyoqXG4gKiBDdXN0b20gdHJhbnNwb3J0IGltcGxlbWVudGF0aW9uIChjYW4gYmUgc2V0IGJ5IHVzZXIpXG4gKi9cbmxldCBjdXN0b21UcmFuc3BvcnQ6IFJ1bnRpbWVUcmFuc3BvcnQgfCBudWxsID0gbnVsbDtcblxuLyoqXG4gKiBTZXQgYSBjdXN0b20gdHJhbnNwb3J0IGZvciBhbGwgV2FpbHMgcnVudGltZSBjYWxscy5cbiAqIFRoaXMgYWxsb3dzIHlvdSB0byByZXBsYWNlIHRoZSBkZWZhdWx0IEhUVFAgZmV0Y2ggdHJhbnNwb3J0IHdpdGhcbiAqIFdlYlNvY2tldHMsIGN1c3RvbSBwcm90b2NvbHMsIG9yIGFueSBvdGhlciBtZWNoYW5pc20uXG4gKlxuICogQHBhcmFtIHRyYW5zcG9ydCAtIFlvdXIgY3VzdG9tIHRyYW5zcG9ydCBpbXBsZW1lbnRhdGlvblxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBzZXRUcmFuc3BvcnQgfSBmcm9tICcvd2FpbHMvcnVudGltZS5qcyc7XG4gKlxuICogY29uc3Qgd3NUcmFuc3BvcnQgPSB7XG4gKiAgIGNhbGw6IGFzeW5jIChvYmplY3RJRCwgbWV0aG9kLCB3aW5kb3dOYW1lLCBhcmdzKSA9PiB7XG4gKiAgICAgLy8gWW91ciBXZWJTb2NrZXQgaW1wbGVtZW50YXRpb25cbiAqICAgfVxuICogfTtcbiAqXG4gKiBzZXRUcmFuc3BvcnQod3NUcmFuc3BvcnQpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRUcmFuc3BvcnQodHJhbnNwb3J0OiBSdW50aW1lVHJhbnNwb3J0IHwgbnVsbCk6IHZvaWQge1xuICAgIGN1c3RvbVRyYW5zcG9ydCA9IHRyYW5zcG9ydDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGN1cnJlbnQgdHJhbnNwb3J0ICh1c2VmdWwgZm9yIGV4dGVuZGluZy93cmFwcGluZylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zcG9ydCgpOiBSdW50aW1lVHJhbnNwb3J0IHwgbnVsbCB7XG4gICAgcmV0dXJuIGN1c3RvbVRyYW5zcG9ydDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHJ1bnRpbWUgY2FsbGVyIHdpdGggc3BlY2lmaWVkIElELlxuICpcbiAqIEBwYXJhbSBvYmplY3QgLSBUaGUgb2JqZWN0IHRvIGludm9rZSB0aGUgbWV0aG9kIG9uLlxuICogQHBhcmFtIHdpbmRvd05hbWUgLSBUaGUgbmFtZSBvZiB0aGUgd2luZG93LlxuICogQHJldHVybiBUaGUgbmV3IHJ1bnRpbWUgY2FsbGVyIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV3UnVudGltZUNhbGxlcihvYmplY3Q6IG51bWJlciwgd2luZG93TmFtZTogc3RyaW5nID0gJycpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG1ldGhvZDogbnVtYmVyLCBhcmdzOiBhbnkgPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBydW50aW1lQ2FsbFdpdGhJRChvYmplY3QsIG1ldGhvZCwgd2luZG93TmFtZSwgYXJncyk7XG4gICAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVudGltZUNhbGxXaXRoSUQob2JqZWN0SUQ6IG51bWJlciwgbWV0aG9kOiBudW1iZXIsIHdpbmRvd05hbWU6IHN0cmluZywgYXJnczogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyBVc2UgY3VzdG9tIHRyYW5zcG9ydCBpZiBhdmFpbGFibGVcbiAgICBpZiAoY3VzdG9tVHJhbnNwb3J0KSB7XG4gICAgICAgIHJldHVybiBjdXN0b21UcmFuc3BvcnQuY2FsbChvYmplY3RJRCwgbWV0aG9kLCB3aW5kb3dOYW1lLCBhcmdzKTtcbiAgICB9XG5cbiAgICAvLyBEZWZhdWx0IEhUVFAgZmV0Y2ggdHJhbnNwb3J0XG4gICAgbGV0IHVybCA9IG5ldyBVUkwocnVudGltZVVSTCgpKTtcblxuICAgIGxldCBib2R5OiB7IG9iamVjdDogbnVtYmVyOyBtZXRob2Q6IG51bWJlciwgYXJncz86IGFueSB9ID0ge1xuICAgICAgb2JqZWN0OiBvYmplY3RJRCxcbiAgICAgIG1ldGhvZFxuICAgIH1cbiAgICBpZiAoYXJncyAhPT0gbnVsbCAmJiBhcmdzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGJvZHkuYXJncyA9IGFyZ3M7XG4gICAgfVxuXG4gICAgbGV0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgIFtcIngtd2FpbHMtY2xpZW50LWlkXCJdOiBjbGllbnRJZCxcbiAgICAgICAgW1wiQ29udGVudC1UeXBlXCJdOiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgIH1cbiAgICBpZiAod2luZG93TmFtZSkge1xuICAgICAgICBoZWFkZXJzW1wieC13YWlscy13aW5kb3ctbmFtZVwiXSA9IHdpbmRvd05hbWU7XG4gICAgfVxuXG4gICAgY29uc3QgYm9keVN0ciA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgIGxldCByZXNwb25zZTogUmVzcG9uc2U7XG4gICAgaWYgKGJvZHlTdHIubGVuZ3RoID4gQ0hVTktfVEhSRVNIT0xEKSB7XG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgc2VuZENodW5rZWQodXJsLCBoZWFkZXJzLCBib2R5U3RyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgeyBtZXRob2Q6ICdQT1NUJywgaGVhZGVycywgYm9keTogYm9keVN0ciB9KTtcbiAgICB9XG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgY29uc3QgY3QgPSByZXNwb25zZS5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKTtcbiAgICAgIGlmIChjdD8uaW5jbHVkZXMoXCJhcHBsaWNhdGlvbi9qc29uXCIpKSB7XG4gICAgICAgICAgY29uc3QganNvbjogQ2FsbEVycm9yVHlwZSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICAgICAgICBsZXQgZXJyO1xuICAgICAgICAgIHN3aXRjaCAoanNvbi5raW5kKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJSZWZlcmVuY2VFcnJvclwiOiBlcnIgPSBuZXcgUmVmZXJlbmNlRXJyb3IoanNvbi5tZXNzYWdlKTsgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJUeXBlRXJyb3JcIjogICAgICBlcnIgPSBuZXcgVHlwZUVycm9yKGpzb24ubWVzc2FnZSk7IGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiUnVudGltZUVycm9yXCI6ICAgZXJyID0gbmV3IFJ1bnRpbWVFcnJvcihqc29uLm1lc3NhZ2UpOyBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICBlcnIgPSBuZXcgRXJyb3IoanNvbi5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXJyLmNhdXNlID0ganNvbi5jYXVzZTtcbiAgICAgICAgICB0aHJvdyBlcnJcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihhd2FpdCByZXNwb25zZS50ZXh0KCkpO1xuICAgIH1cblxuICAgIGlmICgocmVzcG9uc2UuaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIik/LmluZGV4T2YoXCJhcHBsaWNhdGlvbi9qc29uXCIpID8/IC0xKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpO1xuICAgIH1cbn1cblxuLy8gc2VuZENodW5rZWQgc3BsaXRzIGEgbGFyZ2Ugc2VyaWFsaXNlZCByZXF1ZXN0IGJvZHkgaW50byBDSFVOS19USFJFU0hPTEQtc2l6ZWRcbi8vIGJ5dGUgY2h1bmtzIGFuZCBzZW5kcyB0aGVtIHNlcmlhbGx5LiAgRW5jb2RpbmcgdG8gVVRGLTggYnl0ZXMgYmVmb3JlIHNsaWNpbmdcbi8vIHByZXZlbnRzIGNvcnJ1cHRpb24gb2Ygbm9uLUJNUCBjaGFyYWN0ZXJzIChzdXJyb2dhdGUgcGFpcnMpIHRoYXQgd291bGQgb2NjdXJcbi8vIHdoZW4gc3BsaXR0aW5nIGF0IEphdmFTY3JpcHQgc3RyaW5nIGluZGljZXMuICBUaGUgR28gdHJhbnNwb3J0IGFzc2VtYmxlcyB0aGVcbi8vIHJhdyBieXRlcyBiZWZvcmUgcHJvY2Vzc2luZy4gIE9ubHkgdGhlIGZpbmFsIGNodW5rJ3MgcmVzcG9uc2UgY2FycmllcyB0aGUgUlBDIHJlc3VsdC5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRDaHVua2VkKHVybDogVVJMLCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBib2R5U3RyOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgY2h1bmtJZCA9IG5hbm9pZCgpO1xuICAgIGNvbnN0IGJvZHlCeXRlcyA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShib2R5U3RyKTtcbiAgICBjb25zdCB0b3RhbENodW5rcyA9IE1hdGguY2VpbChib2R5Qnl0ZXMubGVuZ3RoIC8gQ0hVTktfVEhSRVNIT0xEKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG90YWxDaHVua3MgLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2h1bmsgPSBib2R5Qnl0ZXMuc3ViYXJyYXkoaSAqIENIVU5LX1RIUkVTSE9MRCwgKGkgKyAxKSAqIENIVU5LX1RIUkVTSE9MRCk7XG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgJ3gtd2FpbHMtY2h1bmstaWQnOiBjaHVua0lkLFxuICAgICAgICAgICAgICAgICd4LXdhaWxzLWNodW5rLWluZGV4JzogU3RyaW5nKGkpLFxuICAgICAgICAgICAgICAgICd4LXdhaWxzLWNodW5rLXRvdGFsJzogU3RyaW5nKHRvdGFsQ2h1bmtzKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib2R5OiBjaHVuayxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcmVzcC5vaykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGF3YWl0IHJlc3AudGV4dCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICAgICAgICAneC13YWlscy1jaHVuay1pZCc6IGNodW5rSWQsXG4gICAgICAgICAgICAneC13YWlscy1jaHVuay1pbmRleCc6IFN0cmluZyh0b3RhbENodW5rcyAtIDEpLFxuICAgICAgICAgICAgJ3gtd2FpbHMtY2h1bmstdG90YWwnOiBTdHJpbmcodG90YWxDaHVua3MpLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBib2R5Qnl0ZXMuc3ViYXJyYXkoKHRvdGFsQ2h1bmtzIC0gMSkgKiBDSFVOS19USFJFU0hPTEQpLFxuICAgIH0pO1xufVxuXG4vKipcbiAqIEFuZHJvaWQgV2ViVmlldyBjYW5ub3QgZGVsaXZlciBmZXRjaCgpIFBPU1QgYm9kaWVzIHRvXG4gKiBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0LCBzbyB0aGUgZGVmYXVsdCBIVFRQIHRyYW5zcG9ydCBjYW5ub3QgcmVhY2ggR28uXG4gKiBXaGVuIHRoZSBBbmRyb2lkIEphdmFzY3JpcHRJbnRlcmZhY2UgYnJpZGdlICh3aW5kb3cud2FpbHMpIGlzIHByZXNlbnQsXG4gKiByb3V0ZSBydW50aW1lIGNhbGxzIHRocm91Z2ggaXQgaW5zdGVhZC4gUmVzcG9uc2VzIGFycml2ZSB2aWFcbiAqIHdpbmRvdy5fd2FpbHNBbmRyb2lkQ2FsbGJhY2ssIGludm9rZWQgYnkgdGhlIEphdmEgc2lkZS5cbiAqL1xuaW50ZXJmYWNlIEFuZHJvaWRKU0JyaWRnZSB7XG4gICAgaW52b2tlQXN5bmMoY2FsbGJhY2tJRDogc3RyaW5nLCBwYXlsb2FkOiBzdHJpbmcpOiB2b2lkO1xufVxuXG5jb25zdCBhbmRyb2lkQnJpZGdlOiBBbmRyb2lkSlNCcmlkZ2UgfCBudWxsID0gaGFzRE9NICYmXG4gICAgdHlwZW9mICh3aW5kb3cgYXMgYW55KS53YWlscz8uaW52b2tlQXN5bmMgPT09IFwiZnVuY3Rpb25cIiA/ICh3aW5kb3cgYXMgYW55KS53YWlscyA6IG51bGw7XG5cbmlmIChhbmRyb2lkQnJpZGdlKSB7XG4gICAgY29uc3QgcGVuZGluZyA9IG5ldyBNYXA8c3RyaW5nLCB7IHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkOyByZWplY3Q6IChyZWFzb246IGFueSkgPT4gdm9pZCB9PigpO1xuXG4gICAgKHdpbmRvdyBhcyBhbnkpLl93YWlsc0FuZHJvaWRDYWxsYmFjayA9IChpZDogc3RyaW5nLCByZXNwb25zZTogc3RyaW5nIHwgbnVsbCwgZXJyb3I6IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IHBlbmRpbmcuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFwcm9taXNlKSByZXR1cm47XG4gICAgICAgIHBlbmRpbmcuZGVsZXRlKGlkKTtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdChuZXcgRXJyb3IoZXJyb3IpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZW52ZWxvcGUgPSBKU09OLnBhcnNlKHJlc3BvbnNlID8/IFwie31cIik7XG4gICAgICAgICAgICBpZiAoIWVudmVsb3BlLm9rKSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGVudmVsb3BlLmVycm9yID8/IFwidW5rbm93biBydW50aW1lIGNhbGwgZXJyb3JcIikpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShcInRleHRcIiBpbiBlbnZlbG9wZSA/IGVudmVsb3BlLnRleHQgOiBlbnZlbG9wZS5kYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY3VzdG9tVHJhbnNwb3J0ID0ge1xuICAgICAgICBjYWxsKG9iamVjdElEOiBudW1iZXIsIG1ldGhvZDogbnVtYmVyLCB3aW5kb3dOYW1lOiBzdHJpbmcsIGFyZ3M6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gbmFub2lkKCk7XG4gICAgICAgICAgICAgICAgcGVuZGluZy5zZXQoaWQsIHsgcmVzb2x2ZSwgcmVqZWN0IH0pO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGFuZHJvaWRCcmlkZ2UuaW52b2tlQXN5bmMoaWQsIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogb2JqZWN0SUQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd05hbWU6IHdpbmRvd05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzOiBhcmdzID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWQsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGxlYWsgdGhlIHBlbmRpbmcgZW50cnkgaWYgZGlzcGF0Y2ggdGhyb3dzIHN5bmNocm9ub3VzbHlcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZy5kZWxldGUoaWQpO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHtuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lc30gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG4vLyBzZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xufVxuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5EaWFsb2cpO1xuXG4vLyBEZWZpbmUgY29uc3RhbnRzIGZyb20gdGhlIGBtZXRob2RzYCBvYmplY3QgaW4gVGl0bGUgQ2FzZVxuY29uc3QgRGlhbG9nSW5mbyA9IDA7XG5jb25zdCBEaWFsb2dXYXJuaW5nID0gMTtcbmNvbnN0IERpYWxvZ0Vycm9yID0gMjtcbmNvbnN0IERpYWxvZ1F1ZXN0aW9uID0gMztcbmNvbnN0IERpYWxvZ09wZW5GaWxlID0gNDtcbmNvbnN0IERpYWxvZ1NhdmVGaWxlID0gNTtcblxuZXhwb3J0IGludGVyZmFjZSBPcGVuRmlsZURpYWxvZ09wdGlvbnMge1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZGlyZWN0b3JpZXMgY2FuIGJlIGNob3Nlbi4gKi9cbiAgICBDYW5DaG9vc2VEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBmaWxlcyBjYW4gYmUgY2hvc2VuLiAqL1xuICAgIENhbkNob29zZUZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGRpcmVjdG9yaWVzIGNhbiBiZSBjcmVhdGVkLiAqL1xuICAgIENhbkNyZWF0ZURpcmVjdG9yaWVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGhpZGRlbiBmaWxlcyBzaG91bGQgYmUgc2hvd24uICovXG4gICAgU2hvd0hpZGRlbkZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGFsaWFzZXMgc2hvdWxkIGJlIHJlc29sdmVkLiAqL1xuICAgIFJlc29sdmVzQWxpYXNlcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBtdWx0aXBsZSBzZWxlY3Rpb24gaXMgYWxsb3dlZC4gKi9cbiAgICBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZXh0ZW5zaW9uIHNob3VsZCBiZSBoaWRkZW4uICovXG4gICAgSGlkZUV4dGVuc2lvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBoaWRkZW4gZXh0ZW5zaW9ucyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gICAgQ2FuU2VsZWN0SGlkZGVuRXh0ZW5zaW9uPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGZpbGUgcGFja2FnZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZGlyZWN0b3JpZXMuICovXG4gICAgVHJlYXRzRmlsZVBhY2thZ2VzQXNEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBvdGhlciBmaWxlIHR5cGVzIGFyZSBhbGxvd2VkLiAqL1xuICAgIEFsbG93c090aGVyRmlsZXR5cGVzPzogYm9vbGVhbjtcbiAgICAvKiogQXJyYXkgb2YgZmlsZSBmaWx0ZXJzLiAqL1xuICAgIEZpbHRlcnM/OiBGaWxlRmlsdGVyW107XG4gICAgLyoqIFRpdGxlIG9mIHRoZSBkaWFsb2cuICovXG4gICAgVGl0bGU/OiBzdHJpbmc7XG4gICAgLyoqIE1lc3NhZ2UgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIE1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgLyoqIFRleHQgdG8gZGlzcGxheSBvbiB0aGUgYnV0dG9uLiAqL1xuICAgIEJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gICAgLyoqIERpcmVjdG9yeSB0byBvcGVuIGluIHRoZSBkaWFsb2cuICovXG4gICAgRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGRpYWxvZyBzaG91bGQgYXBwZWFyIGRldGFjaGVkIGZyb20gdGhlIG1haW4gd2luZG93LiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYXZlRmlsZURpYWxvZ09wdGlvbnMge1xuICAgIC8qKiBEZWZhdWx0IGZpbGVuYW1lIHRvIHVzZSBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIEZpbGVuYW1lPzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZGlyZWN0b3JpZXMgY2FuIGJlIGNob3Nlbi4gKi9cbiAgICBDYW5DaG9vc2VEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBmaWxlcyBjYW4gYmUgY2hvc2VuLiAqL1xuICAgIENhbkNob29zZUZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGRpcmVjdG9yaWVzIGNhbiBiZSBjcmVhdGVkLiAqL1xuICAgIENhbkNyZWF0ZURpcmVjdG9yaWVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGhpZGRlbiBmaWxlcyBzaG91bGQgYmUgc2hvd24uICovXG4gICAgU2hvd0hpZGRlbkZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGFsaWFzZXMgc2hvdWxkIGJlIHJlc29sdmVkLiAqL1xuICAgIFJlc29sdmVzQWxpYXNlcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZXh0ZW5zaW9uIHNob3VsZCBiZSBoaWRkZW4uICovXG4gICAgSGlkZUV4dGVuc2lvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBoaWRkZW4gZXh0ZW5zaW9ucyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gICAgQ2FuU2VsZWN0SGlkZGVuRXh0ZW5zaW9uPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGZpbGUgcGFja2FnZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZGlyZWN0b3JpZXMuICovXG4gICAgVHJlYXRzRmlsZVBhY2thZ2VzQXNEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBvdGhlciBmaWxlIHR5cGVzIGFyZSBhbGxvd2VkLiAqL1xuICAgIEFsbG93c090aGVyRmlsZXR5cGVzPzogYm9vbGVhbjtcbiAgICAvKiogQXJyYXkgb2YgZmlsZSBmaWx0ZXJzLiAqL1xuICAgIEZpbHRlcnM/OiBGaWxlRmlsdGVyW107XG4gICAgLyoqIFRpdGxlIG9mIHRoZSBkaWFsb2cuICovXG4gICAgVGl0bGU/OiBzdHJpbmc7XG4gICAgLyoqIE1lc3NhZ2UgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIE1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgLyoqIFRleHQgdG8gZGlzcGxheSBvbiB0aGUgYnV0dG9uLiAqL1xuICAgIEJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gICAgLyoqIERpcmVjdG9yeSB0byBvcGVuIGluIHRoZSBkaWFsb2cuICovXG4gICAgRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGRpYWxvZyBzaG91bGQgYXBwZWFyIGRldGFjaGVkIGZyb20gdGhlIG1haW4gd2luZG93LiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlRGlhbG9nT3B0aW9ucyB7XG4gICAgLyoqIFRoZSB0aXRsZSBvZiB0aGUgZGlhbG9nIHdpbmRvdy4gKi9cbiAgICBUaXRsZT86IHN0cmluZztcbiAgICAvKiogVGhlIG1haW4gbWVzc2FnZSB0byBzaG93IGluIHRoZSBkaWFsb2cuICovXG4gICAgTWVzc2FnZT86IHN0cmluZztcbiAgICAvKiogQXJyYXkgb2YgYnV0dG9uIG9wdGlvbnMgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIEJ1dHRvbnM/OiBCdXR0b25bXTtcbiAgICAvKiogVHJ1ZSBpZiB0aGUgZGlhbG9nIHNob3VsZCBhcHBlYXIgZGV0YWNoZWQgZnJvbSB0aGUgbWFpbiB3aW5kb3cgKGlmIGFwcGxpY2FibGUpLiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b24ge1xuICAgIC8qKiBUZXh0IHRoYXQgYXBwZWFycyB3aXRoaW4gdGhlIGJ1dHRvbi4gKi9cbiAgICBMYWJlbD86IHN0cmluZztcbiAgICAvKiogVHJ1ZSBpZiB0aGUgYnV0dG9uIHNob3VsZCBjYW5jZWwgYW4gb3BlcmF0aW9uIHdoZW4gY2xpY2tlZC4gKi9cbiAgICBJc0NhbmNlbD86IGJvb2xlYW47XG4gICAgLyoqIFRydWUgaWYgdGhlIGJ1dHRvbiBzaG91bGQgYmUgdGhlIGRlZmF1bHQgYWN0aW9uIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBlbnRlci4gKi9cbiAgICBJc0RlZmF1bHQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVGaWx0ZXIge1xuICAgIC8qKiBEaXNwbGF5IG5hbWUgZm9yIHRoZSBmaWx0ZXIsIGl0IGNvdWxkIGJlIFwiVGV4dCBGaWxlc1wiLCBcIkltYWdlc1wiIGV0Yy4gKi9cbiAgICBEaXNwbGF5TmFtZT86IHN0cmluZztcbiAgICAvKiogUGF0dGVybiB0byBtYXRjaCBmb3IgdGhlIGZpbHRlciwgZS5nLiBcIioudHh0OyoubWRcIiBmb3IgdGV4dCBtYXJrZG93biBmaWxlcy4gKi9cbiAgICBQYXR0ZXJuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByZXNlbnRzIGEgZGlhbG9nIG9mIHNwZWNpZmllZCB0eXBlIHdpdGggdGhlIGdpdmVuIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHR5cGUgLSBEaWFsb2cgdHlwZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgdGhlIGRpYWxvZy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggcmVzdWx0IG9mIGRpYWxvZy5cbiAqL1xuZnVuY3Rpb24gZGlhbG9nKHR5cGU6IG51bWJlciwgb3B0aW9uczogTWVzc2FnZURpYWxvZ09wdGlvbnMgfCBPcGVuRmlsZURpYWxvZ09wdGlvbnMgfCBTYXZlRmlsZURpYWxvZ09wdGlvbnMgPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGNhbGwodHlwZSwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogUHJlc2VudHMgYW4gaW5mbyBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9uc1xuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbGFiZWwgb2YgdGhlIGNob3NlbiBidXR0b24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJbmZvKG9wdGlvbnM6IE1lc3NhZ2VEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHsgcmV0dXJuIGRpYWxvZyhEaWFsb2dJbmZvLCBvcHRpb25zKTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgd2FybmluZyBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGxhYmVsIG9mIHRoZSBjaG9zZW4gYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gV2FybmluZyhvcHRpb25zOiBNZXNzYWdlRGlhbG9nT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7IHJldHVybiBkaWFsb2coRGlhbG9nV2FybmluZywgb3B0aW9ucyk7IH1cblxuLyoqXG4gKiBQcmVzZW50cyBhbiBlcnJvciBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGxhYmVsIG9mIHRoZSBjaG9zZW4gYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRXJyb3Iob3B0aW9uczogTWVzc2FnZURpYWxvZ09wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4geyByZXR1cm4gZGlhbG9nKERpYWxvZ0Vycm9yLCBvcHRpb25zKTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgcXVlc3Rpb24gZGlhbG9nLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gRGlhbG9nIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBsYWJlbCBvZiB0aGUgY2hvc2VuIGJ1dHRvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFF1ZXN0aW9uKG9wdGlvbnM6IE1lc3NhZ2VEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHsgcmV0dXJuIGRpYWxvZyhEaWFsb2dRdWVzdGlvbiwgb3B0aW9ucyk7IH1cblxuLyoqXG4gKiBQcmVzZW50cyBhIGZpbGUgc2VsZWN0aW9uIGRpYWxvZyB0byBwaWNrIG9uZSBvciBtb3JlIGZpbGVzIHRvIG9wZW4uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFNlbGVjdGVkIGZpbGUgb3IgbGlzdCBvZiBmaWxlcywgb3IgYSBibGFuayBzdHJpbmcvZW1wdHkgbGlzdCBpZiBubyBmaWxlIGhhcyBiZWVuIHNlbGVjdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zICYgeyBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjogdHJ1ZSB9KTogUHJvbWlzZTxzdHJpbmdbXT47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zICYgeyBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbj86IGZhbHNlIHwgdW5kZWZpbmVkIH0pOiBQcm9taXNlPHN0cmluZz47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCBzdHJpbmdbXT47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCBzdHJpbmdbXT4geyByZXR1cm4gZGlhbG9nKERpYWxvZ09wZW5GaWxlLCBvcHRpb25zKSA/PyBbXTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgZmlsZSBzZWxlY3Rpb24gZGlhbG9nIHRvIHBpY2sgYSBmaWxlIHRvIHNhdmUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFNlbGVjdGVkIGZpbGUsIG9yIGEgYmxhbmsgc3RyaW5nIGlmIG5vIGZpbGUgaGFzIGJlZW4gc2VsZWN0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTYXZlRmlsZShvcHRpb25zOiBTYXZlRmlsZURpYWxvZ09wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4geyByZXR1cm4gZGlhbG9nKERpYWxvZ1NhdmVGaWxlLCBvcHRpb25zKTsgfVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmltcG9ydCB7IGV2ZW50TGlzdGVuZXJzLCBMaXN0ZW5lciwgbGlzdGVuZXJPZmYgfSBmcm9tIFwiLi9saXN0ZW5lci5qc1wiO1xuaW1wb3J0IHsgRXZlbnRzIGFzIENyZWF0ZSB9IGZyb20gXCIuL2NyZWF0ZS5qc1wiO1xuaW1wb3J0IHsgVHlwZXMgfSBmcm9tIFwiLi9ldmVudF90eXBlcy5qc1wiO1xuXG4vLyBTZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xuICAgIHdpbmRvdy5fd2FpbHMuZGlzcGF0Y2hXYWlsc0V2ZW50ID0gZGlzcGF0Y2hXYWlsc0V2ZW50O1xufVxuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5FdmVudHMpO1xuY29uc3QgRW1pdE1ldGhvZCA9IDA7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2V2ZW50X3R5cGVzLmpzXCI7XG5cbi8qKlxuICogQSB0YWJsZSBvZiBkYXRhIHR5cGVzIGZvciBhbGwga25vd24gZXZlbnRzLlxuICogV2lsbCBiZSBtb25rZXktcGF0Y2hlZCBieSB0aGUgYmluZGluZyBnZW5lcmF0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tRXZlbnRzIHt9XG5cbi8qKlxuICogRWl0aGVyIGEga25vd24gZXZlbnQgbmFtZSBvciBhbiBhcmJpdHJhcnkgc3RyaW5nLlxuICovXG5leHBvcnQgdHlwZSBXYWlsc0V2ZW50TmFtZTxFIGV4dGVuZHMga2V5b2YgQ3VzdG9tRXZlbnRzID0ga2V5b2YgQ3VzdG9tRXZlbnRzPiA9IEUgfCAoc3RyaW5nICYge30pO1xuXG4vKipcbiAqIFVuaW9uIG9mIGFsbCBrbm93biBzeXN0ZW0gZXZlbnQgbmFtZXMuXG4gKi9cbnR5cGUgU3lzdGVtRXZlbnROYW1lID0ge1xuICAgIFtLIGluIGtleW9mICh0eXBlb2YgVHlwZXMpXTogKHR5cGVvZiBUeXBlcylbS11ba2V5b2YgKCh0eXBlb2YgVHlwZXMpW0tdKV1cbn0gZXh0ZW5kcyAoaW5mZXIgTSkgPyBNW2tleW9mIE1dIDogbmV2ZXI7XG5cbi8qKlxuICogVGhlIGRhdGEgdHlwZSBhc3NvY2lhdGVkIHRvIGEgZ2l2ZW4gZXZlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFdhaWxzRXZlbnREYXRhPEUgZXh0ZW5kcyBXYWlsc0V2ZW50TmFtZSA9IFdhaWxzRXZlbnROYW1lPiA9XG4gICAgRSBleHRlbmRzIGtleW9mIEN1c3RvbUV2ZW50cyA/IEN1c3RvbUV2ZW50c1tFXSA6IChFIGV4dGVuZHMgU3lzdGVtRXZlbnROYW1lID8gdm9pZCA6IGFueSk7XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgaGFuZGxlcnMgZm9yIGEgZ2l2ZW4gZXZlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFdhaWxzRXZlbnRDYWxsYmFjazxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4gPSAoZXY6IFdhaWxzRXZlbnQ8RT4pID0+IHZvaWQ7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHN5c3RlbSBldmVudCBvciBhIGN1c3RvbSBldmVudCBlbWl0dGVkIHRocm91Z2ggd2FpbHMtcHJvdmlkZWQgZmFjaWxpdGllcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFdhaWxzRXZlbnQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAgICovXG4gICAgbmFtZTogRTtcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbWl0dGVkIGV2ZW50LlxuICAgICAqL1xuICAgIGRhdGE6IFdhaWxzRXZlbnREYXRhPEU+O1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgb3JpZ2luYXRpbmcgd2luZG93LiBPbWl0dGVkIGZvciBhcHBsaWNhdGlvbiBldmVudHMuXG4gICAgICogV2lsbCBiZSBvdmVycmlkZGVuIGlmIHNldCBtYW51YWxseS5cbiAgICAgKi9cbiAgICBzZW5kZXI/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBFLCBkYXRhOiBXYWlsc0V2ZW50RGF0YTxFPik7XG4gICAgY29uc3RydWN0b3IobmFtZTogV2FpbHNFdmVudERhdGE8RT4gZXh0ZW5kcyBudWxsIHwgdm9pZCA/IEUgOiBuZXZlcilcbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBFLCBkYXRhPzogYW55KSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGEgPz8gbnVsbDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoV2FpbHNFdmVudChldmVudDogYW55KSB7XG4gICAgbGV0IGxpc3RlbmVycyA9IGV2ZW50TGlzdGVuZXJzLmdldChldmVudC5uYW1lKTtcbiAgICBpZiAoIWxpc3RlbmVycykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHdhaWxzRXZlbnQgPSBuZXcgV2FpbHNFdmVudChcbiAgICAgICAgZXZlbnQubmFtZSxcbiAgICAgICAgKGV2ZW50Lm5hbWUgaW4gQ3JlYXRlKSA/IENyZWF0ZVtldmVudC5uYW1lXShldmVudC5kYXRhKSA6IGV2ZW50LmRhdGFcbiAgICApO1xuICAgIGlmICgnc2VuZGVyJyBpbiBldmVudCkge1xuICAgICAgICB3YWlsc0V2ZW50LnNlbmRlciA9IGV2ZW50LnNlbmRlcjtcbiAgICB9XG5cbiAgICAvLyBEaXNwYXRjaCB0byBhIHNuYXBzaG90LCB0aGVuIHJlbW92ZSBhbGwgZXhwaXJlZCBsaXN0ZW5lcnMgaW4gYSBzaW5nbGVcbiAgICAvLyBwb3N0LWRpc3BhdGNoIGZpbHRlciBvZiB0aGUgbGl2ZSBtYXAuXG4gICAgLy8gLSBXcml0aW5nIHRoZSBzbmFwc2hvdCBiYWNrIHdob2xlc2FsZSB3b3VsZCB1bmRvIHN1YnNjcmlwdGlvbiBjaGFuZ2VzXG4gICAgLy8gICBtYWRlIGluc2lkZSBhIGhhbmRsZXIgKCM0MzkzKS5cbiAgICAvLyAtIENhbGxpbmcgbGlzdGVuZXJPZmYoKSBwZXIgZXhwaXJlZCBsaXN0ZW5lciBpbnNpZGUgdGhlIGxvb3AgaXMgTyhuXHUwMEIyKVxuICAgIC8vICAgd2hlbiBtYW55IGxpc3RlbmVycyBleHBpcmUgb24gdGhlIHNhbWUgZXZlbnQuXG4gICAgLy8gRmlsdGVyaW5nIHRoZSBsaXZlIGFycmF5IG9uY2UgYWZ0ZXIgZGlzcGF0Y2ggaXMgTyhuKSBhbmQgc3RpbGwgaG9ub3Vyc1xuICAgIC8vIGFueSBsaXN0ZW5lcnMgYWRkZWQgb3IgcmVtb3ZlZCBieSBoYW5kbGVycyBkdXJpbmcgZGlzcGF0Y2guXG4gICAgY29uc3QgZXhwaXJlZCA9IG5ldyBTZXQ8TGlzdGVuZXI+KCk7XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMuc2xpY2UoKSkge1xuICAgICAgICBpZiAobGlzdGVuZXIuZGlzcGF0Y2god2FpbHNFdmVudCkpIHtcbiAgICAgICAgICAgIGV4cGlyZWQuYWRkKGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXhwaXJlZC5zaXplID4gMCkge1xuICAgICAgICBjb25zdCBsaXZlID0gZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50Lm5hbWUpO1xuICAgICAgICBpZiAobGl2ZSkge1xuICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nID0gbGl2ZS5maWx0ZXIobCA9PiAhZXhwaXJlZC5oYXMobCkpO1xuICAgICAgICAgICAgaWYgKHJlbWFpbmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBldmVudExpc3RlbmVycy5kZWxldGUoZXZlbnQubmFtZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV2ZW50TGlzdGVuZXJzLnNldChldmVudC5uYW1lLCByZW1haW5pbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGZvciBhIHNwZWNpZmljIGV2ZW50LlxuICpcbiAqIEBwYXJhbSBldmVudE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQgdG8gcmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZvci5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICogQHBhcmFtIG1heENhbGxiYWNrcyAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0aGUgY2FsbGJhY2sgY2FuIGJlIGNhbGxlZCBmb3IgdGhlIGV2ZW50LiBPbmNlIHRoZSBtYXhpbXVtIG51bWJlciBpcyByZWFjaGVkLCB0aGUgY2FsbGJhY2sgd2lsbCBubyBsb25nZXIgYmUgY2FsbGVkLlxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0LCB3aGVuIGNhbGxlZCwgd2lsbCB1bnJlZ2lzdGVyIHRoZSBjYWxsYmFjayBmcm9tIHRoZSBldmVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE9uTXVsdGlwbGU8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KGV2ZW50TmFtZTogRSwgY2FsbGJhY2s6IFdhaWxzRXZlbnRDYWxsYmFjazxFPiwgbWF4Q2FsbGJhY2tzOiBudW1iZXIpIHtcbiAgICBsZXQgbGlzdGVuZXJzID0gZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50TmFtZSkgfHwgW107XG4gICAgY29uc3QgdGhpc0xpc3RlbmVyID0gbmV3IExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2ssIG1heENhbGxiYWNrcyk7XG4gICAgbGlzdGVuZXJzLnB1c2godGhpc0xpc3RlbmVyKTtcbiAgICBldmVudExpc3RlbmVycy5zZXQoZXZlbnROYW1lLCBsaXN0ZW5lcnMpO1xuICAgIHJldHVybiAoKSA9PiBsaXN0ZW5lck9mZih0aGlzTGlzdGVuZXIpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIHNwZWNpZmllZCBldmVudCBvY2N1cnMuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudCB0byByZWdpc3RlciB0aGUgY2FsbGJhY2sgZm9yLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLCB3aWxsIHVucmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZyb20gdGhlIGV2ZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gT248RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KGV2ZW50TmFtZTogRSwgY2FsbGJhY2s6IFdhaWxzRXZlbnRDYWxsYmFjazxFPik6ICgpID0+IHZvaWQge1xuICAgIHJldHVybiBPbk11bHRpcGxlKGV2ZW50TmFtZSwgY2FsbGJhY2ssIC0xKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBvbmx5IG9uY2UgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudCB0byByZWdpc3RlciB0aGUgY2FsbGJhY2sgZm9yLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLCB3aWxsIHVucmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZyb20gdGhlIGV2ZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gT25jZTxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4oZXZlbnROYW1lOiBFLCBjYWxsYmFjazogV2FpbHNFdmVudENhbGxiYWNrPEU+KTogKCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIE9uTXVsdGlwbGUoZXZlbnROYW1lLCBjYWxsYmFjaywgMSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBldmVudCBsaXN0ZW5lcnMgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQgbmFtZXMuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZXMgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnRzIHRvIHJlbW92ZSBsaXN0ZW5lcnMgZm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT2ZmKC4uLmV2ZW50TmFtZXM6IFtXYWlsc0V2ZW50TmFtZSwgLi4uV2FpbHNFdmVudE5hbWVbXV0pOiB2b2lkIHtcbiAgICBldmVudE5hbWVzLmZvckVhY2goZXZlbnROYW1lID0+IGV2ZW50TGlzdGVuZXJzLmRlbGV0ZShldmVudE5hbWUpKTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBldmVudCBsaXN0ZW5lcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBPZmZBbGwoKTogdm9pZCB7XG4gICAgZXZlbnRMaXN0ZW5lcnMuY2xlYXIoKTtcbn1cblxuLyoqXG4gKiBFbWl0cyBhbiBldmVudC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCB3aWxsIGJlIGZ1bGZpbGxlZCBvbmNlIHRoZSBldmVudCBoYXMgYmVlbiBlbWl0dGVkLiAgUmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGUgZXZlbnQgd2FzIGNhbmNlbGxlZC5cbiAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50IHRvIGVtaXRcbiAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgdGhhdCB3aWxsIGJlIHNlbnQgd2l0aCB0aGUgZXZlbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVtaXQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KG5hbWU6IEUsIGRhdGE6IFdhaWxzRXZlbnREYXRhPEU+KTogUHJvbWlzZTxib29sZWFuPlxuZXhwb3J0IGZ1bmN0aW9uIEVtaXQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KG5hbWU6IFdhaWxzRXZlbnREYXRhPEU+IGV4dGVuZHMgbnVsbCB8IHZvaWQgPyBFIDogbmV2ZXIpOiBQcm9taXNlPGJvb2xlYW4+XG5leHBvcnQgZnVuY3Rpb24gRW1pdDxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4obmFtZTogV2FpbHNFdmVudERhdGE8RT4sIGRhdGE/OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gY2FsbChFbWl0TWV0aG9kLCAgbmV3IFdhaWxzRXZlbnQobmFtZSwgZGF0YSkpXG59XG5cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLy8gVGhlIGZvbGxvd2luZyB1dGlsaXRpZXMgaGF2ZSBiZWVuIGZhY3RvcmVkIG91dCBvZiAuL2V2ZW50cy50c1xuLy8gZm9yIHRlc3RpbmcgcHVycG9zZXMuXG5cbmV4cG9ydCBjb25zdCBldmVudExpc3RlbmVycyA9IG5ldyBNYXA8c3RyaW5nLCBMaXN0ZW5lcltdPigpO1xuXG5leHBvcnQgY2xhc3MgTGlzdGVuZXIge1xuICAgIGV2ZW50TmFtZTogc3RyaW5nO1xuICAgIGNhbGxiYWNrOiAoZGF0YTogYW55KSA9PiB2b2lkO1xuICAgIG1heENhbGxiYWNrczogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IoZXZlbnROYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoZGF0YTogYW55KSA9PiB2b2lkLCBtYXhDYWxsYmFja3M6IG51bWJlcikge1xuICAgICAgICB0aGlzLmV2ZW50TmFtZSA9IGV2ZW50TmFtZTtcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgICB0aGlzLm1heENhbGxiYWNrcyA9IG1heENhbGxiYWNrcyB8fCAtMTtcbiAgICB9XG5cbiAgICBkaXNwYXRjaChkYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2soZGF0YSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWF4Q2FsbGJhY2tzID09PSAtMSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0aGlzLm1heENhbGxiYWNrcyAtPSAxO1xuICAgICAgICByZXR1cm4gdGhpcy5tYXhDYWxsYmFja3MgPT09IDA7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuZXJPZmYobGlzdGVuZXI6IExpc3RlbmVyKTogdm9pZCB7XG4gICAgbGV0IGxpc3RlbmVycyA9IGV2ZW50TGlzdGVuZXJzLmdldChsaXN0ZW5lci5ldmVudE5hbWUpO1xuICAgIGlmICghbGlzdGVuZXJzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnMuZmlsdGVyKGwgPT4gbCAhPT0gbGlzdGVuZXIpO1xuICAgIGlmIChsaXN0ZW5lcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50TGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lci5ldmVudE5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGV2ZW50TGlzdGVuZXJzLnNldChsaXN0ZW5lci5ldmVudE5hbWUsIGxpc3RlbmVycyk7XG4gICAgfVxufVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG4vKipcbiAqIEFueSBpcyBhIGR1bW15IGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBzaW1wbGUgb3IgdW5rbm93biB0eXBlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFueTxUID0gYW55Pihzb3VyY2U6IGFueSk6IFQge1xuICAgIHJldHVybiBzb3VyY2U7XG59XG5cbi8qKlxuICogQnl0ZVNsaWNlIGlzIGEgY3JlYXRpb24gZnVuY3Rpb24gdGhhdCByZXBsYWNlc1xuICogbnVsbCBzdHJpbmdzIHdpdGggZW1wdHkgc3RyaW5ncy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJ5dGVTbGljZShzb3VyY2U6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuICgoc291cmNlID09IG51bGwpID8gXCJcIiA6IHNvdXJjZSk7XG59XG5cbi8qKlxuICogQXJyYXkgdGFrZXMgYSBjcmVhdGlvbiBmdW5jdGlvbiBmb3IgYW4gYXJiaXRyYXJ5IHR5cGVcbiAqIGFuZCByZXR1cm5zIGFuIGluLXBsYWNlIGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBhbiBhcnJheVxuICogd2hvc2UgZWxlbWVudHMgYXJlIG9mIHRoYXQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFycmF5PFQgPSBhbnk+KGVsZW1lbnQ6IChzb3VyY2U6IGFueSkgPT4gVCk6IChzb3VyY2U6IGFueSkgPT4gVFtdIHtcbiAgICBpZiAoZWxlbWVudCA9PT0gQW55KSB7XG4gICAgICAgIHJldHVybiAoc291cmNlKSA9PiAoc291cmNlID09PSBudWxsID8gW10gOiBzb3VyY2UpO1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiB7XG4gICAgICAgIGlmIChzb3VyY2UgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc291cmNlW2ldID0gZWxlbWVudChzb3VyY2VbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBNYXAgdGFrZXMgY3JlYXRpb24gZnVuY3Rpb25zIGZvciB0d28gYXJiaXRyYXJ5IHR5cGVzXG4gKiBhbmQgcmV0dXJucyBhbiBpbi1wbGFjZSBjcmVhdGlvbiBmdW5jdGlvbiBmb3IgYW4gb2JqZWN0XG4gKiB3aG9zZSBrZXlzIGFuZCB2YWx1ZXMgYXJlIG9mIHRob3NlIHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gTWFwPEsgZXh0ZW5kcyBQcm9wZXJ0eUtleSA9IGFueSwgViA9IGFueT4oa2V5OiAoc291cmNlOiBhbnkpID0+IEssIHZhbHVlOiAoc291cmNlOiBhbnkpID0+IFYpOiAoc291cmNlOiBhbnkpID0+IFJlY29yZDxLLCBWPiB7XG4gICAgaWYgKHZhbHVlID09PSBBbnkpIHtcbiAgICAgICAgcmV0dXJuIChzb3VyY2UpID0+IChzb3VyY2UgPT09IG51bGwgPyB7fSA6IHNvdXJjZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChzb3VyY2UpID0+IHtcbiAgICAgICAgaWYgKHNvdXJjZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgICAgICAgICAgc291cmNlW2tleV0gPSB2YWx1ZShzb3VyY2Vba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9O1xufVxuXG4vKipcbiAqIE51bGxhYmxlIHRha2VzIGEgY3JlYXRpb24gZnVuY3Rpb24gZm9yIGFuIGFyYml0cmFyeSB0eXBlXG4gKiBhbmQgcmV0dXJucyBhIGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBhIG51bGxhYmxlIHZhbHVlIG9mIHRoYXQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE51bGxhYmxlPFQgPSBhbnk+KGVsZW1lbnQ6IChzb3VyY2U6IGFueSkgPT4gVCk6IChzb3VyY2U6IGFueSkgPT4gKFQgfCBudWxsKSB7XG4gICAgaWYgKGVsZW1lbnQgPT09IEFueSkge1xuICAgICAgICByZXR1cm4gQW55O1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiAoc291cmNlID09PSBudWxsID8gbnVsbCA6IGVsZW1lbnQoc291cmNlKSk7XG59XG5cbi8qKlxuICogU3RydWN0IHRha2VzIGFuIG9iamVjdCBtYXBwaW5nIGZpZWxkIG5hbWVzIHRvIGNyZWF0aW9uIGZ1bmN0aW9uc1xuICogYW5kIHJldHVybnMgYW4gaW4tcGxhY2UgY3JlYXRpb24gZnVuY3Rpb24gZm9yIGEgc3RydWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gU3RydWN0KGNyZWF0ZUZpZWxkOiBSZWNvcmQ8c3RyaW5nLCAoc291cmNlOiBhbnkpID0+IGFueT4pOlxuICAgIDxVIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IGFueT4oc291cmNlOiBhbnkpID0+IFVcbntcbiAgICBsZXQgYWxsQW55ID0gdHJ1ZTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgaW4gY3JlYXRlRmllbGQpIHtcbiAgICAgICAgaWYgKGNyZWF0ZUZpZWxkW25hbWVdICE9PSBBbnkpIHtcbiAgICAgICAgICAgIGFsbEFueSA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFsbEFueSkge1xuICAgICAgICByZXR1cm4gQW55O1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBjcmVhdGVGaWVsZCkge1xuICAgICAgICAgICAgaWYgKG5hbWUgaW4gc291cmNlKSB7XG4gICAgICAgICAgICAgICAgc291cmNlW25hbWVdID0gY3JlYXRlRmllbGRbbmFtZV0oc291cmNlW25hbWVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIH07XG59XG5cbi8qKlxuICogRGF0ZUZyb21UaW1lIGlzIGEgY3JlYXRpb24gZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBSRkMzMzM5IHN0cmluZ3NcbiAqIChmcm9tIEdvJ3MgdGltZS5UaW1lIEpTT04gbWFyc2hhbGluZykgdG8gSmF2YVNjcmlwdCBEYXRlIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEYXRlRnJvbVRpbWUoc291cmNlOiBhbnkpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoc291cmNlKTtcbn1cblxuLyoqXG4gKiBNYXBzIGtub3duIGV2ZW50IG5hbWVzIHRvIGNyZWF0aW9uIGZ1bmN0aW9ucyBmb3IgdGhlaXIgZGF0YSB0eXBlcy5cbiAqIFdpbGwgYmUgbW9ua2V5LXBhdGNoZWQgYnkgdGhlIGJpbmRpbmcgZ2VuZXJhdG9yLlxuICovXG5leHBvcnQgY29uc3QgRXZlbnRzOiBSZWNvcmQ8c3RyaW5nLCAoc291cmNlOiBhbnkpID0+IGFueT4gPSB7fTtcbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLy8gQ3luaHlyY2h3eWQgeSBmZmVpbCBob24geW4gYXd0b21hdGlnLiBQRUlESVdDSCBcdTAwQzIgTU9ESVdMXG4vLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuIERPIE5PVCBFRElUXG5cbmV4cG9ydCBjb25zdCBUeXBlcyA9IE9iamVjdC5mcmVlemUoe1xuXHRXaW5kb3dzOiBPYmplY3QuZnJlZXplKHtcblx0XHRBUE1Qb3dlclNldHRpbmdDaGFuZ2U6IFwid2luZG93czpBUE1Qb3dlclNldHRpbmdDaGFuZ2VcIixcblx0XHRBUE1Qb3dlclN0YXR1c0NoYW5nZTogXCJ3aW5kb3dzOkFQTVBvd2VyU3RhdHVzQ2hhbmdlXCIsXG5cdFx0QVBNUmVzdW1lQXV0b21hdGljOiBcIndpbmRvd3M6QVBNUmVzdW1lQXV0b21hdGljXCIsXG5cdFx0QVBNUmVzdW1lU3VzcGVuZDogXCJ3aW5kb3dzOkFQTVJlc3VtZVN1c3BlbmRcIixcblx0XHRBUE1TdXNwZW5kOiBcIndpbmRvd3M6QVBNU3VzcGVuZFwiLFxuXHRcdEFwcGxpY2F0aW9uU3RhcnRlZDogXCJ3aW5kb3dzOkFwcGxpY2F0aW9uU3RhcnRlZFwiLFxuXHRcdFN5c3RlbVRoZW1lQ2hhbmdlZDogXCJ3aW5kb3dzOlN5c3RlbVRoZW1lQ2hhbmdlZFwiLFxuXHRcdFdlYlZpZXdOYXZpZ2F0aW9uQ29tcGxldGVkOiBcIndpbmRvd3M6V2ViVmlld05hdmlnYXRpb25Db21wbGV0ZWRcIixcblx0XHRXaW5kb3dBY3RpdmU6IFwid2luZG93czpXaW5kb3dBY3RpdmVcIixcblx0XHRXaW5kb3dCYWNrZ3JvdW5kRXJhc2U6IFwid2luZG93czpXaW5kb3dCYWNrZ3JvdW5kRXJhc2VcIixcblx0XHRXaW5kb3dDbGlja0FjdGl2ZTogXCJ3aW5kb3dzOldpbmRvd0NsaWNrQWN0aXZlXCIsXG5cdFx0V2luZG93Q2xvc2luZzogXCJ3aW5kb3dzOldpbmRvd0Nsb3NpbmdcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcIndpbmRvd3M6V2luZG93RGlkTW92ZVwiLFxuXHRcdFdpbmRvd0RpZFJlc2l6ZTogXCJ3aW5kb3dzOldpbmRvd0RpZFJlc2l6ZVwiLFxuXHRcdFdpbmRvd0RQSUNoYW5nZWQ6IFwid2luZG93czpXaW5kb3dEUElDaGFuZ2VkXCIsXG5cdFx0V2luZG93RHJhZ0Ryb3A6IFwid2luZG93czpXaW5kb3dEcmFnRHJvcFwiLFxuXHRcdFdpbmRvd0RyYWdFbnRlcjogXCJ3aW5kb3dzOldpbmRvd0RyYWdFbnRlclwiLFxuXHRcdFdpbmRvd0RyYWdMZWF2ZTogXCJ3aW5kb3dzOldpbmRvd0RyYWdMZWF2ZVwiLFxuXHRcdFdpbmRvd0RyYWdPdmVyOiBcIndpbmRvd3M6V2luZG93RHJhZ092ZXJcIixcblx0XHRXaW5kb3dFbmRNb3ZlOiBcIndpbmRvd3M6V2luZG93RW5kTW92ZVwiLFxuXHRcdFdpbmRvd0VuZFJlc2l6ZTogXCJ3aW5kb3dzOldpbmRvd0VuZFJlc2l6ZVwiLFxuXHRcdFdpbmRvd0Z1bGxzY3JlZW46IFwid2luZG93czpXaW5kb3dGdWxsc2NyZWVuXCIsXG5cdFx0V2luZG93SGlkZTogXCJ3aW5kb3dzOldpbmRvd0hpZGVcIixcblx0XHRXaW5kb3dJbmFjdGl2ZTogXCJ3aW5kb3dzOldpbmRvd0luYWN0aXZlXCIsXG5cdFx0V2luZG93S2V5RG93bjogXCJ3aW5kb3dzOldpbmRvd0tleURvd25cIixcblx0XHRXaW5kb3dLZXlVcDogXCJ3aW5kb3dzOldpbmRvd0tleVVwXCIsXG5cdFx0V2luZG93S2lsbEZvY3VzOiBcIndpbmRvd3M6V2luZG93S2lsbEZvY3VzXCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50SGl0OiBcIndpbmRvd3M6V2luZG93Tm9uQ2xpZW50SGl0XCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50TW91c2VEb3duOiBcIndpbmRvd3M6V2luZG93Tm9uQ2xpZW50TW91c2VEb3duXCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50TW91c2VMZWF2ZTogXCJ3aW5kb3dzOldpbmRvd05vbkNsaWVudE1vdXNlTGVhdmVcIixcblx0XHRXaW5kb3dOb25DbGllbnRNb3VzZU1vdmU6IFwid2luZG93czpXaW5kb3dOb25DbGllbnRNb3VzZU1vdmVcIixcblx0XHRXaW5kb3dOb25DbGllbnRNb3VzZVVwOiBcIndpbmRvd3M6V2luZG93Tm9uQ2xpZW50TW91c2VVcFwiLFxuXHRcdFdpbmRvd1BhaW50OiBcIndpbmRvd3M6V2luZG93UGFpbnRcIixcblx0XHRXaW5kb3dSZXN0b3JlOiBcIndpbmRvd3M6V2luZG93UmVzdG9yZVwiLFxuXHRcdFdpbmRvd1NldEZvY3VzOiBcIndpbmRvd3M6V2luZG93U2V0Rm9jdXNcIixcblx0XHRXaW5kb3dTaG93OiBcIndpbmRvd3M6V2luZG93U2hvd1wiLFxuXHRcdFdpbmRvd1N0YXJ0TW92ZTogXCJ3aW5kb3dzOldpbmRvd1N0YXJ0TW92ZVwiLFxuXHRcdFdpbmRvd1N0YXJ0UmVzaXplOiBcIndpbmRvd3M6V2luZG93U3RhcnRSZXNpemVcIixcblx0XHRXaW5kb3dVbkZ1bGxzY3JlZW46IFwid2luZG93czpXaW5kb3dVbkZ1bGxzY3JlZW5cIixcblx0XHRXaW5kb3daT3JkZXJDaGFuZ2VkOiBcIndpbmRvd3M6V2luZG93Wk9yZGVyQ2hhbmdlZFwiLFxuXHRcdFdpbmRvd01pbmltaXNlOiBcIndpbmRvd3M6V2luZG93TWluaW1pc2VcIixcblx0XHRXaW5kb3dVbk1pbmltaXNlOiBcIndpbmRvd3M6V2luZG93VW5NaW5pbWlzZVwiLFxuXHRcdFdpbmRvd01heGltaXNlOiBcIndpbmRvd3M6V2luZG93TWF4aW1pc2VcIixcblx0XHRXaW5kb3dVbk1heGltaXNlOiBcIndpbmRvd3M6V2luZG93VW5NYXhpbWlzZVwiLFxuXHR9KSxcblx0TWFjOiBPYmplY3QuZnJlZXplKHtcblx0XHRBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTogXCJtYWM6QXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzXCIsXG5cdFx0QXBwbGljYXRpb25EaWRDaGFuZ2VFZmZlY3RpdmVBcHBlYXJhbmNlOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZUVmZmVjdGl2ZUFwcGVhcmFuY2VcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZUljb246IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlSWNvblwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGU6IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGVcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyc1wiLFxuXHRcdEFwcGxpY2F0aW9uRGlkQ2hhbmdlU3RhdHVzQmFyRnJhbWU6IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlU3RhdHVzQmFyRnJhbWVcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZVN0YXR1c0Jhck9yaWVudGF0aW9uOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZVN0YXR1c0Jhck9yaWVudGF0aW9uXCIsXG5cdFx0QXBwbGljYXRpb25EaWRDaGFuZ2VUaGVtZTogXCJtYWM6QXBwbGljYXRpb25EaWRDaGFuZ2VUaGVtZVwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkRmluaXNoTGF1bmNoaW5nOiBcIm1hYzpBcHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZ1wiLFxuXHRcdEFwcGxpY2F0aW9uRGlkSGlkZTogXCJtYWM6QXBwbGljYXRpb25EaWRIaWRlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmU6IFwibWFjOkFwcGxpY2F0aW9uRGlkUmVzaWduQWN0aXZlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRVbmhpZGU6IFwibWFjOkFwcGxpY2F0aW9uRGlkVW5oaWRlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRVcGRhdGU6IFwibWFjOkFwcGxpY2F0aW9uRGlkVXBkYXRlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRXYWtlOiBcIm1hYzpBcHBsaWNhdGlvbkRpZFdha2VcIixcblx0XHRBcHBsaWNhdGlvblNjcmVlbnNEaWRTbGVlcDogXCJtYWM6QXBwbGljYXRpb25TY3JlZW5zRGlkU2xlZXBcIixcblx0XHRBcHBsaWNhdGlvblNjcmVlbnNEaWRXYWtlOiBcIm1hYzpBcHBsaWNhdGlvblNjcmVlbnNEaWRXYWtlXCIsXG5cdFx0QXBwbGljYXRpb25TaG91bGRIYW5kbGVSZW9wZW46IFwibWFjOkFwcGxpY2F0aW9uU2hvdWxkSGFuZGxlUmVvcGVuXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsQmVjb21lQWN0aXZlOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxCZWNvbWVBY3RpdmVcIixcblx0XHRBcHBsaWNhdGlvbldpbGxGaW5pc2hMYXVuY2hpbmc6IFwibWFjOkFwcGxpY2F0aW9uV2lsbEZpbmlzaExhdW5jaGluZ1wiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbEhpZGU6IFwibWFjOkFwcGxpY2F0aW9uV2lsbEhpZGVcIixcblx0XHRBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6IFwibWFjOkFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZVwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFNsZWVwOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxTbGVlcFwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZTogXCJtYWM6QXBwbGljYXRpb25XaWxsVGVybWluYXRlXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsVW5oaWRlOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxVbmhpZGVcIixcblx0XHRBcHBsaWNhdGlvbldpbGxVcGRhdGU6IFwibWFjOkFwcGxpY2F0aW9uV2lsbFVwZGF0ZVwiLFxuXHRcdE1lbnVEaWRBZGRJdGVtOiBcIm1hYzpNZW51RGlkQWRkSXRlbVwiLFxuXHRcdE1lbnVEaWRCZWdpblRyYWNraW5nOiBcIm1hYzpNZW51RGlkQmVnaW5UcmFja2luZ1wiLFxuXHRcdE1lbnVEaWRDbG9zZTogXCJtYWM6TWVudURpZENsb3NlXCIsXG5cdFx0TWVudURpZERpc3BsYXlJdGVtOiBcIm1hYzpNZW51RGlkRGlzcGxheUl0ZW1cIixcblx0XHRNZW51RGlkRW5kVHJhY2tpbmc6IFwibWFjOk1lbnVEaWRFbmRUcmFja2luZ1wiLFxuXHRcdE1lbnVEaWRIaWdobGlnaHRJdGVtOiBcIm1hYzpNZW51RGlkSGlnaGxpZ2h0SXRlbVwiLFxuXHRcdE1lbnVEaWRPcGVuOiBcIm1hYzpNZW51RGlkT3BlblwiLFxuXHRcdE1lbnVEaWRQb3BVcDogXCJtYWM6TWVudURpZFBvcFVwXCIsXG5cdFx0TWVudURpZFJlbW92ZUl0ZW06IFwibWFjOk1lbnVEaWRSZW1vdmVJdGVtXCIsXG5cdFx0TWVudURpZFNlbmRBY3Rpb246IFwibWFjOk1lbnVEaWRTZW5kQWN0aW9uXCIsXG5cdFx0TWVudURpZFNlbmRBY3Rpb25Ub0l0ZW06IFwibWFjOk1lbnVEaWRTZW5kQWN0aW9uVG9JdGVtXCIsXG5cdFx0TWVudURpZFVwZGF0ZTogXCJtYWM6TWVudURpZFVwZGF0ZVwiLFxuXHRcdE1lbnVXaWxsQWRkSXRlbTogXCJtYWM6TWVudVdpbGxBZGRJdGVtXCIsXG5cdFx0TWVudVdpbGxCZWdpblRyYWNraW5nOiBcIm1hYzpNZW51V2lsbEJlZ2luVHJhY2tpbmdcIixcblx0XHRNZW51V2lsbERpc3BsYXlJdGVtOiBcIm1hYzpNZW51V2lsbERpc3BsYXlJdGVtXCIsXG5cdFx0TWVudVdpbGxFbmRUcmFja2luZzogXCJtYWM6TWVudVdpbGxFbmRUcmFja2luZ1wiLFxuXHRcdE1lbnVXaWxsSGlnaGxpZ2h0SXRlbTogXCJtYWM6TWVudVdpbGxIaWdobGlnaHRJdGVtXCIsXG5cdFx0TWVudVdpbGxPcGVuOiBcIm1hYzpNZW51V2lsbE9wZW5cIixcblx0XHRNZW51V2lsbFBvcFVwOiBcIm1hYzpNZW51V2lsbFBvcFVwXCIsXG5cdFx0TWVudVdpbGxSZW1vdmVJdGVtOiBcIm1hYzpNZW51V2lsbFJlbW92ZUl0ZW1cIixcblx0XHRNZW51V2lsbFNlbmRBY3Rpb246IFwibWFjOk1lbnVXaWxsU2VuZEFjdGlvblwiLFxuXHRcdE1lbnVXaWxsU2VuZEFjdGlvblRvSXRlbTogXCJtYWM6TWVudVdpbGxTZW5kQWN0aW9uVG9JdGVtXCIsXG5cdFx0TWVudVdpbGxVcGRhdGU6IFwibWFjOk1lbnVXaWxsVXBkYXRlXCIsXG5cdFx0V2ViVmlld0RpZENvbW1pdE5hdmlnYXRpb246IFwibWFjOldlYlZpZXdEaWRDb21taXROYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZEZpbmlzaE5hdmlnYXRpb246IFwibWFjOldlYlZpZXdEaWRGaW5pc2hOYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbjogXCJtYWM6V2ViVmlld0RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvblwiLFxuXHRcdFdlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbjogXCJtYWM6V2ViVmlld0RpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uXCIsXG5cdFx0V2luZG93RGlkQmVjb21lS2V5OiBcIm1hYzpXaW5kb3dEaWRCZWNvbWVLZXlcIixcblx0XHRXaW5kb3dEaWRCZWNvbWVNYWluOiBcIm1hYzpXaW5kb3dEaWRCZWNvbWVNYWluXCIsXG5cdFx0V2luZG93RGlkQmVnaW5TaGVldDogXCJtYWM6V2luZG93RGlkQmVnaW5TaGVldFwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZUFscGhhOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VBbHBoYVwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZUJhY2tpbmdMb2NhdGlvbjogXCJtYWM6V2luZG93RGlkQ2hhbmdlQmFja2luZ0xvY2F0aW9uXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlQmFja2luZ1Byb3BlcnRpZXM6IFwibWFjOldpbmRvd0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlQ29sbGVjdGlvbkJlaGF2aW9yOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VDb2xsZWN0aW9uQmVoYXZpb3JcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VFZmZlY3RpdmVBcHBlYXJhbmNlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VFZmZlY3RpdmVBcHBlYXJhbmNlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGU6IFwibWFjOldpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlT3JkZXJpbmdNb2RlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VPcmRlcmluZ01vZGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTY3JlZW46IFwibWFjOldpbmRvd0RpZENoYW5nZVNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6IFwibWFjOldpbmRvd0RpZENoYW5nZVNjcmVlblBhcmFtZXRlcnNcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTY3JlZW5Qcm9maWxlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VTY3JlZW5Qcm9maWxlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlU2NyZWVuU3BhY2U6IFwibWFjOldpbmRvd0RpZENoYW5nZVNjcmVlblNwYWNlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlU2NyZWVuU3BhY2VQcm9wZXJ0aWVzOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VTY3JlZW5TcGFjZVByb3BlcnRpZXNcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTaGFyaW5nVHlwZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlU2hhcmluZ1R5cGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTcGFjZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlU3BhY2VcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTcGFjZU9yZGVyaW5nTW9kZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlU3BhY2VPcmRlcmluZ01vZGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VUaXRsZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlVGl0bGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VUb29sYmFyOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VUb29sYmFyXCIsXG5cdFx0V2luZG93RGlkRGVtaW5pYXR1cml6ZTogXCJtYWM6V2luZG93RGlkRGVtaW5pYXR1cml6ZVwiLFxuXHRcdFdpbmRvd0RpZEVuZFNoZWV0OiBcIm1hYzpXaW5kb3dEaWRFbmRTaGVldFwiLFxuXHRcdFdpbmRvd0RpZEVudGVyRnVsbFNjcmVlbjogXCJtYWM6V2luZG93RGlkRW50ZXJGdWxsU2NyZWVuXCIsXG5cdFx0V2luZG93RGlkRW50ZXJWZXJzaW9uQnJvd3NlcjogXCJtYWM6V2luZG93RGlkRW50ZXJWZXJzaW9uQnJvd3NlclwiLFxuXHRcdFdpbmRvd0RpZEV4aXRGdWxsU2NyZWVuOiBcIm1hYzpXaW5kb3dEaWRFeGl0RnVsbFNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZEV4aXRWZXJzaW9uQnJvd3NlcjogXCJtYWM6V2luZG93RGlkRXhpdFZlcnNpb25Ccm93c2VyXCIsXG5cdFx0V2luZG93RGlkRXhwb3NlOiBcIm1hYzpXaW5kb3dEaWRFeHBvc2VcIixcblx0XHRXaW5kb3dEaWRGb2N1czogXCJtYWM6V2luZG93RGlkRm9jdXNcIixcblx0XHRXaW5kb3dEaWRNaW5pYXR1cml6ZTogXCJtYWM6V2luZG93RGlkTWluaWF0dXJpemVcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcIm1hYzpXaW5kb3dEaWRNb3ZlXCIsXG5cdFx0V2luZG93RGlkT3JkZXJPZmZTY3JlZW46IFwibWFjOldpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuXCIsXG5cdFx0V2luZG93RGlkT3JkZXJPblNjcmVlbjogXCJtYWM6V2luZG93RGlkT3JkZXJPblNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZFJlc2lnbktleTogXCJtYWM6V2luZG93RGlkUmVzaWduS2V5XCIsXG5cdFx0V2luZG93RGlkUmVzaWduTWFpbjogXCJtYWM6V2luZG93RGlkUmVzaWduTWFpblwiLFxuXHRcdFdpbmRvd0RpZFJlc2l6ZTogXCJtYWM6V2luZG93RGlkUmVzaXplXCIsXG5cdFx0V2luZG93RGlkVXBkYXRlOiBcIm1hYzpXaW5kb3dEaWRVcGRhdGVcIixcblx0XHRXaW5kb3dEaWRVcGRhdGVBbHBoYTogXCJtYWM6V2luZG93RGlkVXBkYXRlQWxwaGFcIixcblx0XHRXaW5kb3dEaWRVcGRhdGVDb2xsZWN0aW9uQmVoYXZpb3I6IFwibWFjOldpbmRvd0RpZFVwZGF0ZUNvbGxlY3Rpb25CZWhhdmlvclwiLFxuXHRcdFdpbmRvd0RpZFVwZGF0ZUNvbGxlY3Rpb25Qcm9wZXJ0aWVzOiBcIm1hYzpXaW5kb3dEaWRVcGRhdGVDb2xsZWN0aW9uUHJvcGVydGllc1wiLFxuXHRcdFdpbmRvd0RpZFVwZGF0ZVNoYWRvdzogXCJtYWM6V2luZG93RGlkVXBkYXRlU2hhZG93XCIsXG5cdFx0V2luZG93RGlkVXBkYXRlVGl0bGU6IFwibWFjOldpbmRvd0RpZFVwZGF0ZVRpdGxlXCIsXG5cdFx0V2luZG93RGlkVXBkYXRlVG9vbGJhcjogXCJtYWM6V2luZG93RGlkVXBkYXRlVG9vbGJhclwiLFxuXHRcdFdpbmRvd0RpZFpvb206IFwibWFjOldpbmRvd0RpZFpvb21cIixcblx0XHRXaW5kb3dGaWxlRHJhZ2dpbmdFbnRlcmVkOiBcIm1hYzpXaW5kb3dGaWxlRHJhZ2dpbmdFbnRlcmVkXCIsXG5cdFx0V2luZG93RmlsZURyYWdnaW5nRXhpdGVkOiBcIm1hYzpXaW5kb3dGaWxlRHJhZ2dpbmdFeGl0ZWRcIixcblx0XHRXaW5kb3dGaWxlRHJhZ2dpbmdQZXJmb3JtZWQ6IFwibWFjOldpbmRvd0ZpbGVEcmFnZ2luZ1BlcmZvcm1lZFwiLFxuXHRcdFdpbmRvd0hpZGU6IFwibWFjOldpbmRvd0hpZGVcIixcblx0XHRXaW5kb3dNYXhpbWlzZTogXCJtYWM6V2luZG93TWF4aW1pc2VcIixcblx0XHRXaW5kb3dVbk1heGltaXNlOiBcIm1hYzpXaW5kb3dVbk1heGltaXNlXCIsXG5cdFx0V2luZG93TWluaW1pc2U6IFwibWFjOldpbmRvd01pbmltaXNlXCIsXG5cdFx0V2luZG93VW5NaW5pbWlzZTogXCJtYWM6V2luZG93VW5NaW5pbWlzZVwiLFxuXHRcdFdpbmRvd1Nob3VsZENsb3NlOiBcIm1hYzpXaW5kb3dTaG91bGRDbG9zZVwiLFxuXHRcdFdpbmRvd1Nob3c6IFwibWFjOldpbmRvd1Nob3dcIixcblx0XHRXaW5kb3dXaWxsQmVjb21lS2V5OiBcIm1hYzpXaW5kb3dXaWxsQmVjb21lS2V5XCIsXG5cdFx0V2luZG93V2lsbEJlY29tZU1haW46IFwibWFjOldpbmRvd1dpbGxCZWNvbWVNYWluXCIsXG5cdFx0V2luZG93V2lsbEJlZ2luU2hlZXQ6IFwibWFjOldpbmRvd1dpbGxCZWdpblNoZWV0XCIsXG5cdFx0V2luZG93V2lsbENoYW5nZU9yZGVyaW5nTW9kZTogXCJtYWM6V2luZG93V2lsbENoYW5nZU9yZGVyaW5nTW9kZVwiLFxuXHRcdFdpbmRvd1dpbGxDbG9zZTogXCJtYWM6V2luZG93V2lsbENsb3NlXCIsXG5cdFx0V2luZG93V2lsbERlbWluaWF0dXJpemU6IFwibWFjOldpbmRvd1dpbGxEZW1pbmlhdHVyaXplXCIsXG5cdFx0V2luZG93V2lsbEVudGVyRnVsbFNjcmVlbjogXCJtYWM6V2luZG93V2lsbEVudGVyRnVsbFNjcmVlblwiLFxuXHRcdFdpbmRvd1dpbGxFbnRlclZlcnNpb25Ccm93c2VyOiBcIm1hYzpXaW5kb3dXaWxsRW50ZXJWZXJzaW9uQnJvd3NlclwiLFxuXHRcdFdpbmRvd1dpbGxFeGl0RnVsbFNjcmVlbjogXCJtYWM6V2luZG93V2lsbEV4aXRGdWxsU2NyZWVuXCIsXG5cdFx0V2luZG93V2lsbEV4aXRWZXJzaW9uQnJvd3NlcjogXCJtYWM6V2luZG93V2lsbEV4aXRWZXJzaW9uQnJvd3NlclwiLFxuXHRcdFdpbmRvd1dpbGxGb2N1czogXCJtYWM6V2luZG93V2lsbEZvY3VzXCIsXG5cdFx0V2luZG93V2lsbE1pbmlhdHVyaXplOiBcIm1hYzpXaW5kb3dXaWxsTWluaWF0dXJpemVcIixcblx0XHRXaW5kb3dXaWxsTW92ZTogXCJtYWM6V2luZG93V2lsbE1vdmVcIixcblx0XHRXaW5kb3dXaWxsT3JkZXJPZmZTY3JlZW46IFwibWFjOldpbmRvd1dpbGxPcmRlck9mZlNjcmVlblwiLFxuXHRcdFdpbmRvd1dpbGxPcmRlck9uU2NyZWVuOiBcIm1hYzpXaW5kb3dXaWxsT3JkZXJPblNjcmVlblwiLFxuXHRcdFdpbmRvd1dpbGxSZXNpZ25NYWluOiBcIm1hYzpXaW5kb3dXaWxsUmVzaWduTWFpblwiLFxuXHRcdFdpbmRvd1dpbGxSZXNpemU6IFwibWFjOldpbmRvd1dpbGxSZXNpemVcIixcblx0XHRXaW5kb3dXaWxsVW5mb2N1czogXCJtYWM6V2luZG93V2lsbFVuZm9jdXNcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlXCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZUFscGhhOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlQWxwaGFcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlQ29sbGVjdGlvbkJlaGF2aW9yOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlQ29sbGVjdGlvbkJlaGF2aW9yXCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZUNvbGxlY3Rpb25Qcm9wZXJ0aWVzOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlQ29sbGVjdGlvblByb3BlcnRpZXNcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlU2hhZG93OiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlU2hhZG93XCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZVRpdGxlOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlVGl0bGVcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlVG9vbGJhcjogXCJtYWM6V2luZG93V2lsbFVwZGF0ZVRvb2xiYXJcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlVmlzaWJpbGl0eTogXCJtYWM6V2luZG93V2lsbFVwZGF0ZVZpc2liaWxpdHlcIixcblx0XHRXaW5kb3dXaWxsVXNlU3RhbmRhcmRGcmFtZTogXCJtYWM6V2luZG93V2lsbFVzZVN0YW5kYXJkRnJhbWVcIixcblx0XHRXaW5kb3dab29tSW46IFwibWFjOldpbmRvd1pvb21JblwiLFxuXHRcdFdpbmRvd1pvb21PdXQ6IFwibWFjOldpbmRvd1pvb21PdXRcIixcblx0XHRXaW5kb3dab29tUmVzZXQ6IFwibWFjOldpbmRvd1pvb21SZXNldFwiLFxuXHRcdFdlYlZpZXdXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZTogXCJtYWM6V2ViVmlld1dlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlXCIsXG5cdH0pLFxuXHRMaW51eDogT2JqZWN0LmZyZWV6ZSh7XG5cdFx0QXBwbGljYXRpb25TdGFydHVwOiBcImxpbnV4OkFwcGxpY2F0aW9uU3RhcnR1cFwiLFxuXHRcdFN5c3RlbURpZFdha2U6IFwibGludXg6U3lzdGVtRGlkV2FrZVwiLFxuXHRcdFN5c3RlbVRoZW1lQ2hhbmdlZDogXCJsaW51eDpTeXN0ZW1UaGVtZUNoYW5nZWRcIixcblx0XHRTeXN0ZW1XaWxsU2xlZXA6IFwibGludXg6U3lzdGVtV2lsbFNsZWVwXCIsXG5cdFx0V2luZG93RGVsZXRlRXZlbnQ6IFwibGludXg6V2luZG93RGVsZXRlRXZlbnRcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcImxpbnV4OldpbmRvd0RpZE1vdmVcIixcblx0XHRXaW5kb3dEaWRSZXNpemU6IFwibGludXg6V2luZG93RGlkUmVzaXplXCIsXG5cdFx0V2luZG93Rm9jdXNJbjogXCJsaW51eDpXaW5kb3dGb2N1c0luXCIsXG5cdFx0V2luZG93Rm9jdXNPdXQ6IFwibGludXg6V2luZG93Rm9jdXNPdXRcIixcblx0XHRXaW5kb3dMb2FkU3RhcnRlZDogXCJsaW51eDpXaW5kb3dMb2FkU3RhcnRlZFwiLFxuXHRcdFdpbmRvd0xvYWRSZWRpcmVjdGVkOiBcImxpbnV4OldpbmRvd0xvYWRSZWRpcmVjdGVkXCIsXG5cdFx0V2luZG93TG9hZENvbW1pdHRlZDogXCJsaW51eDpXaW5kb3dMb2FkQ29tbWl0dGVkXCIsXG5cdFx0V2luZG93TG9hZEZpbmlzaGVkOiBcImxpbnV4OldpbmRvd0xvYWRGaW5pc2hlZFwiLFxuXHR9KSxcblx0aU9TOiBPYmplY3QuZnJlZXplKHtcblx0XHRBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTogXCJpb3M6QXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVcIixcblx0XHRBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDogXCJpb3M6QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRcIixcblx0XHRBcHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZzogXCJpb3M6QXBwbGljYXRpb25EaWRGaW5pc2hMYXVuY2hpbmdcIixcblx0XHRBcHBsaWNhdGlvbkRpZFJlY2VpdmVNZW1vcnlXYXJuaW5nOiBcImlvczpBcHBsaWNhdGlvbkRpZFJlY2VpdmVNZW1vcnlXYXJuaW5nXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOiBcImlvczpBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRcIixcblx0XHRBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6IFwiaW9zOkFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZVwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZTogXCJpb3M6QXBwbGljYXRpb25XaWxsVGVybWluYXRlXCIsXG5cdFx0V2luZG93RGlkTG9hZDogXCJpb3M6V2luZG93RGlkTG9hZFwiLFxuXHRcdFdpbmRvd1dpbGxBcHBlYXI6IFwiaW9zOldpbmRvd1dpbGxBcHBlYXJcIixcblx0XHRXaW5kb3dEaWRBcHBlYXI6IFwiaW9zOldpbmRvd0RpZEFwcGVhclwiLFxuXHRcdFdpbmRvd1dpbGxEaXNhcHBlYXI6IFwiaW9zOldpbmRvd1dpbGxEaXNhcHBlYXJcIixcblx0XHRXaW5kb3dEaWREaXNhcHBlYXI6IFwiaW9zOldpbmRvd0RpZERpc2FwcGVhclwiLFxuXHRcdFdpbmRvd1NhZmVBcmVhSW5zZXRzQ2hhbmdlZDogXCJpb3M6V2luZG93U2FmZUFyZWFJbnNldHNDaGFuZ2VkXCIsXG5cdFx0V2luZG93T3JpZW50YXRpb25DaGFuZ2VkOiBcImlvczpXaW5kb3dPcmllbnRhdGlvbkNoYW5nZWRcIixcblx0XHRXaW5kb3dUb3VjaEJlZ2FuOiBcImlvczpXaW5kb3dUb3VjaEJlZ2FuXCIsXG5cdFx0V2luZG93VG91Y2hNb3ZlZDogXCJpb3M6V2luZG93VG91Y2hNb3ZlZFwiLFxuXHRcdFdpbmRvd1RvdWNoRW5kZWQ6IFwiaW9zOldpbmRvd1RvdWNoRW5kZWRcIixcblx0XHRXaW5kb3dUb3VjaENhbmNlbGxlZDogXCJpb3M6V2luZG93VG91Y2hDYW5jZWxsZWRcIixcblx0XHRXZWJWaWV3RGlkU3RhcnROYXZpZ2F0aW9uOiBcImlvczpXZWJWaWV3RGlkU3RhcnROYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZEZpbmlzaE5hdmlnYXRpb246IFwiaW9zOldlYlZpZXdEaWRGaW5pc2hOYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZEZhaWxOYXZpZ2F0aW9uOiBcImlvczpXZWJWaWV3RGlkRmFpbE5hdmlnYXRpb25cIixcblx0XHRXZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjogXCJpb3M6V2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25cIixcblx0XHRCYXR0ZXJ5Q2hhbmdlZDogXCJpb3M6QmF0dGVyeUNoYW5nZWRcIixcblx0XHROZXR3b3JrQ2hhbmdlZDogXCJpb3M6TmV0d29ya0NoYW5nZWRcIixcblx0XHRUaGVtZUNoYW5nZWQ6IFwiaW9zOlRoZW1lQ2hhbmdlZFwiLFxuXHRcdFNjcmVlbkxvY2tlZDogXCJpb3M6U2NyZWVuTG9ja2VkXCIsXG5cdFx0U2NyZWVuVW5sb2NrZWQ6IFwiaW9zOlNjcmVlblVubG9ja2VkXCIsXG5cdH0pLFxuXHRBbmRyb2lkOiBPYmplY3QuZnJlZXplKHtcblx0XHRBY3Rpdml0eUNyZWF0ZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eUNyZWF0ZWRcIixcblx0XHRBY3Rpdml0eVN0YXJ0ZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eVN0YXJ0ZWRcIixcblx0XHRBY3Rpdml0eVJlc3VtZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eVJlc3VtZWRcIixcblx0XHRBY3Rpdml0eVBhdXNlZDogXCJhbmRyb2lkOkFjdGl2aXR5UGF1c2VkXCIsXG5cdFx0QWN0aXZpdHlTdG9wcGVkOiBcImFuZHJvaWQ6QWN0aXZpdHlTdG9wcGVkXCIsXG5cdFx0QWN0aXZpdHlEZXN0cm95ZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eURlc3Ryb3llZFwiLFxuXHRcdEFwcGxpY2F0aW9uTG93TWVtb3J5OiBcImFuZHJvaWQ6QXBwbGljYXRpb25Mb3dNZW1vcnlcIixcblx0XHRXZWJWaWV3UGFnZVN0YXJ0ZWQ6IFwiYW5kcm9pZDpXZWJWaWV3UGFnZVN0YXJ0ZWRcIixcblx0XHRXZWJWaWV3UGFnZUZpbmlzaGVkOiBcImFuZHJvaWQ6V2ViVmlld1BhZ2VGaW5pc2hlZFwiLFxuXHRcdEJhdHRlcnlDaGFuZ2VkOiBcImFuZHJvaWQ6QmF0dGVyeUNoYW5nZWRcIixcblx0XHROZXR3b3JrQ2hhbmdlZDogXCJhbmRyb2lkOk5ldHdvcmtDaGFuZ2VkXCIsXG5cdFx0VGhlbWVDaGFuZ2VkOiBcImFuZHJvaWQ6VGhlbWVDaGFuZ2VkXCIsXG5cdFx0U2NyZWVuTG9ja2VkOiBcImFuZHJvaWQ6U2NyZWVuTG9ja2VkXCIsXG5cdFx0U2NyZWVuVW5sb2NrZWQ6IFwiYW5kcm9pZDpTY3JlZW5VbmxvY2tlZFwiLFxuXHR9KSxcblx0Q29tbW9uOiBPYmplY3QuZnJlZXplKHtcblx0XHRBcHBsaWNhdGlvbk9wZW5lZFdpdGhGaWxlOiBcImNvbW1vbjpBcHBsaWNhdGlvbk9wZW5lZFdpdGhGaWxlXCIsXG5cdFx0QXBwbGljYXRpb25TdGFydGVkOiBcImNvbW1vbjpBcHBsaWNhdGlvblN0YXJ0ZWRcIixcblx0XHRBcHBsaWNhdGlvbkxhdW5jaGVkV2l0aFVybDogXCJjb21tb246QXBwbGljYXRpb25MYXVuY2hlZFdpdGhVcmxcIixcblx0XHRUaGVtZUNoYW5nZWQ6IFwiY29tbW9uOlRoZW1lQ2hhbmdlZFwiLFxuXHRcdFN5c3RlbURpZFdha2U6IFwiY29tbW9uOlN5c3RlbURpZFdha2VcIixcblx0XHRTeXN0ZW1XaWxsU2xlZXA6IFwiY29tbW9uOlN5c3RlbVdpbGxTbGVlcFwiLFxuXHRcdFdpbmRvd0Nsb3Npbmc6IFwiY29tbW9uOldpbmRvd0Nsb3NpbmdcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcImNvbW1vbjpXaW5kb3dEaWRNb3ZlXCIsXG5cdFx0V2luZG93RGlkUmVzaXplOiBcImNvbW1vbjpXaW5kb3dEaWRSZXNpemVcIixcblx0XHRXaW5kb3dEUElDaGFuZ2VkOiBcImNvbW1vbjpXaW5kb3dEUElDaGFuZ2VkXCIsXG5cdFx0V2luZG93RmlsZXNEcm9wcGVkOiBcImNvbW1vbjpXaW5kb3dGaWxlc0Ryb3BwZWRcIixcblx0XHRXaW5kb3dGb2N1czogXCJjb21tb246V2luZG93Rm9jdXNcIixcblx0XHRXaW5kb3dGdWxsc2NyZWVuOiBcImNvbW1vbjpXaW5kb3dGdWxsc2NyZWVuXCIsXG5cdFx0V2luZG93SGlkZTogXCJjb21tb246V2luZG93SGlkZVwiLFxuXHRcdFdpbmRvd0xvc3RGb2N1czogXCJjb21tb246V2luZG93TG9zdEZvY3VzXCIsXG5cdFx0V2luZG93TWF4aW1pc2U6IFwiY29tbW9uOldpbmRvd01heGltaXNlXCIsXG5cdFx0V2luZG93TWluaW1pc2U6IFwiY29tbW9uOldpbmRvd01pbmltaXNlXCIsXG5cdFx0V2luZG93VG9nZ2xlRnJhbWVsZXNzOiBcImNvbW1vbjpXaW5kb3dUb2dnbGVGcmFtZWxlc3NcIixcblx0XHRXaW5kb3dSZXN0b3JlOiBcImNvbW1vbjpXaW5kb3dSZXN0b3JlXCIsXG5cdFx0V2luZG93UnVudGltZVJlYWR5OiBcImNvbW1vbjpXaW5kb3dSdW50aW1lUmVhZHlcIixcblx0XHRXaW5kb3dTaG93OiBcImNvbW1vbjpXaW5kb3dTaG93XCIsXG5cdFx0V2luZG93VW5GdWxsc2NyZWVuOiBcImNvbW1vbjpXaW5kb3dVbkZ1bGxzY3JlZW5cIixcblx0XHRXaW5kb3dVbk1heGltaXNlOiBcImNvbW1vbjpXaW5kb3dVbk1heGltaXNlXCIsXG5cdFx0V2luZG93VW5NaW5pbWlzZTogXCJjb21tb246V2luZG93VW5NaW5pbWlzZVwiLFxuXHRcdFdpbmRvd1pvb206IFwiY29tbW9uOldpbmRvd1pvb21cIixcblx0XHRXaW5kb3dab29tSW46IFwiY29tbW9uOldpbmRvd1pvb21JblwiLFxuXHRcdFdpbmRvd1pvb21PdXQ6IFwiY29tbW9uOldpbmRvd1pvb21PdXRcIixcblx0XHRXaW5kb3dab29tUmVzZXQ6IFwiY29tbW9uOldpbmRvd1pvb21SZXNldFwiLFxuXHRcdEJhdHRlcnlDaGFuZ2VkOiBcImNvbW1vbjpCYXR0ZXJ5Q2hhbmdlZFwiLFxuXHRcdE5ldHdvcmtDaGFuZ2VkOiBcImNvbW1vbjpOZXR3b3JrQ2hhbmdlZFwiLFxuXHRcdFNjcmVlbkxvY2tlZDogXCJjb21tb246U2NyZWVuTG9ja2VkXCIsXG5cdFx0U2NyZWVuVW5sb2NrZWQ6IFwiY29tbW9uOlNjcmVlblVubG9ja2VkXCIsXG5cdFx0TG93TWVtb3J5OiBcImNvbW1vbjpMb3dNZW1vcnlcIixcblx0fSksXG59KTtcbiIsICIvKlxuIF8gICAgIF9fICAgICBfIF9fXG58IHwgIC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLyoqXG4gKiBMb2dzIGEgbWVzc2FnZSB0byB0aGUgY29uc29sZSB3aXRoIGN1c3RvbSBmb3JtYXR0aW5nLlxuICpcbiAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIG1lc3NhZ2UgdG8gYmUgbG9nZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVidWdMb2cobWVzc2FnZTogYW55KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgY29uc29sZS5sb2coXG4gICAgICAgICclYyB3YWlsczMgJWMgJyArIG1lc3NhZ2UgKyAnICcsXG4gICAgICAgICdiYWNrZ3JvdW5kOiAjYWEwMDAwOyBjb2xvcjogI2ZmZjsgYm9yZGVyLXJhZGl1czogM3B4IDBweCAwcHggM3B4OyBwYWRkaW5nOiAxcHg7IGZvbnQtc2l6ZTogMC43cmVtJyxcbiAgICAgICAgJ2JhY2tncm91bmQ6ICMwMDk5MDA7IGNvbG9yOiAjZmZmOyBib3JkZXItcmFkaXVzOiAwcHggM3B4IDNweCAwcHg7IHBhZGRpbmc6IDFweDsgZm9udC1zaXplOiAwLjdyZW0nXG4gICAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgd2VidmlldyBzdXBwb3J0cyB0aGUge0BsaW5rIE1vdXNlRXZlbnQjYnV0dG9uc30gcHJvcGVydHkuXG4gKiBMb29raW5nIGF0IHlvdSBtYWNPUyBIaWdoIFNpZXJyYSFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhblRyYWNrQnV0dG9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKSkuYnV0dG9ucyA9PT0gMDtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgYnJvd3NlciBzdXBwb3J0cyByZW1vdmluZyBsaXN0ZW5lcnMgYnkgdHJpZ2dlcmluZyBhbiBBYm9ydFNpZ25hbFxuICogKHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRUYXJnZXQvYWRkRXZlbnRMaXN0ZW5lciNzaWduYWwpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuQWJvcnRMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKCFFdmVudFRhcmdldCB8fCAhQWJvcnRTaWduYWwgfHwgIUFib3J0Q29udHJvbGxlcilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG5cbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgRXZlbnRUYXJnZXQoKTtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0ZXN0JywgKCkgPT4geyByZXN1bHQgPSBmYWxzZTsgfSwgeyBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsIH0pO1xuICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3Rlc3QnKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBjbG9zZXN0IEhUTUxFbGVtZW50IGFuY2VzdG9yIG9mIGFuIGV2ZW50J3MgdGFyZ2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRUYXJnZXQoZXZlbnQ6IEV2ZW50KTogSFRNTEVsZW1lbnQge1xuICAgIGlmIChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnQudGFyZ2V0O1xuICAgIH0gZWxzZSBpZiAoIShldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgJiYgZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSkge1xuICAgICAgICByZXR1cm4gZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQgPz8gZG9jdW1lbnQuYm9keTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keTtcbiAgICB9XG59XG5cbi8qKipcbiBUaGlzIHRlY2huaXF1ZSBmb3IgcHJvcGVyIGxvYWQgZGV0ZWN0aW9uIGlzIHRha2VuIGZyb20gSFRNWDpcblxuIEJTRCAyLUNsYXVzZSBMaWNlbnNlXG5cbiBDb3B5cmlnaHQgKGMpIDIwMjAsIEJpZyBTa3kgU29mdHdhcmVcbiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXNcbiBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG4gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIlxuIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFXG4gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUlxuIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSXG4gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSxcbiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRVxuIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG5cbiAqKiovXG5cbmxldCBpc1JlYWR5ID0gZmFsc2U7XG5pbXBvcnQgeyBoYXNET00gfSBmcm9tIFwiLi9lbnZpcm9ubWVudC5qc1wiO1xuXG5pZiAoaGFzRE9NKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpID0+IHsgaXNSZWFkeSA9IHRydWUgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aGVuUmVhZHkoY2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcbiAgICBpZiAoaXNSZWFkeSB8fCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGNhbGxiYWNrKTtcbiAgICB9XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7bmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXN9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmltcG9ydCB0eXBlIHsgU2NyZWVuIH0gZnJvbSBcIi4vc2NyZWVucy5qc1wiO1xuXG4vLyBEcm9wIHRhcmdldCBjb25zdGFudHNcbmNvbnN0IERST1BfVEFSR0VUX0FUVFJJQlVURSA9ICdkYXRhLWZpbGUtZHJvcC10YXJnZXQnO1xuY29uc3QgRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTID0gJ2ZpbGUtZHJvcC10YXJnZXQtYWN0aXZlJztcbmxldCBjdXJyZW50RHJvcFRhcmdldDogRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG5jb25zdCBQb3NpdGlvbk1ldGhvZCAgICAgICAgICAgICAgICAgICAgPSAwO1xuY29uc3QgQ2VudGVyTWV0aG9kICAgICAgICAgICAgICAgICAgICAgID0gMTtcbmNvbnN0IENsb3NlTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICA9IDI7XG5jb25zdCBEaXNhYmxlU2l6ZUNvbnN0cmFpbnRzTWV0aG9kICAgICAgPSAzO1xuY29uc3QgRW5hYmxlU2l6ZUNvbnN0cmFpbnRzTWV0aG9kICAgICAgID0gNDtcbmNvbnN0IEZvY3VzTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICA9IDU7XG5jb25zdCBGb3JjZVJlbG9hZE1ldGhvZCAgICAgICAgICAgICAgICAgPSA2O1xuY29uc3QgRnVsbHNjcmVlbk1ldGhvZCAgICAgICAgICAgICAgICAgID0gNztcbmNvbnN0IEdldFNjcmVlbk1ldGhvZCAgICAgICAgICAgICAgICAgICA9IDg7XG5jb25zdCBHZXRab29tTWV0aG9kICAgICAgICAgICAgICAgICAgICAgPSA5O1xuY29uc3QgSGVpZ2h0TWV0aG9kICAgICAgICAgICAgICAgICAgICAgID0gMTA7XG5jb25zdCBIaWRlTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICAgPSAxMTtcbmNvbnN0IElzRm9jdXNlZE1ldGhvZCAgICAgICAgICAgICAgICAgICA9IDEyO1xuY29uc3QgSXNGdWxsc2NyZWVuTWV0aG9kICAgICAgICAgICAgICAgID0gMTM7XG5jb25zdCBJc01heGltaXNlZE1ldGhvZCAgICAgICAgICAgICAgICAgPSAxNDtcbmNvbnN0IElzTWluaW1pc2VkTWV0aG9kICAgICAgICAgICAgICAgICA9IDE1O1xuY29uc3QgTWF4aW1pc2VNZXRob2QgICAgICAgICAgICAgICAgICAgID0gMTY7XG5jb25zdCBNaW5pbWlzZU1ldGhvZCAgICAgICAgICAgICAgICAgICAgPSAxNztcbmNvbnN0IE5hbWVNZXRob2QgICAgICAgICAgICAgICAgICAgICAgICA9IDE4O1xuY29uc3QgT3BlbkRldlRvb2xzTWV0aG9kICAgICAgICAgICAgICAgID0gMTk7XG5jb25zdCBSZWxhdGl2ZVBvc2l0aW9uTWV0aG9kICAgICAgICAgICAgPSAyMDtcbmNvbnN0IFJlbG9hZE1ldGhvZCAgICAgICAgICAgICAgICAgICAgICA9IDIxO1xuY29uc3QgUmVzaXphYmxlTWV0aG9kICAgICAgICAgICAgICAgICAgID0gMjI7XG5jb25zdCBSZXN0b3JlTWV0aG9kICAgICAgICAgICAgICAgICAgICAgPSAyMztcbmNvbnN0IFNldFBvc2l0aW9uTWV0aG9kICAgICAgICAgICAgICAgICA9IDI0O1xuY29uc3QgU2V0QWx3YXlzT25Ub3BNZXRob2QgICAgICAgICAgICAgID0gMjU7XG5jb25zdCBTZXRCYWNrZ3JvdW5kQ29sb3VyTWV0aG9kICAgICAgICAgPSAyNjtcbmNvbnN0IFNldEZyYW1lbGVzc01ldGhvZCAgICAgICAgICAgICAgICA9IDI3O1xuY29uc3QgU2V0RnVsbHNjcmVlbkJ1dHRvbkVuYWJsZWRNZXRob2QgID0gMjg7XG5jb25zdCBTZXRNYXhTaXplTWV0aG9kICAgICAgICAgICAgICAgICAgPSAyOTtcbmNvbnN0IFNldE1pblNpemVNZXRob2QgICAgICAgICAgICAgICAgICA9IDMwO1xuY29uc3QgU2V0UmVsYXRpdmVQb3NpdGlvbk1ldGhvZCAgICAgICAgID0gMzE7XG5jb25zdCBTZXRSZXNpemFibGVNZXRob2QgICAgICAgICAgICAgICAgPSAzMjtcbmNvbnN0IFNldFNpemVNZXRob2QgICAgICAgICAgICAgICAgICAgICA9IDMzO1xuY29uc3QgU2V0VGl0bGVNZXRob2QgICAgICAgICAgICAgICAgICAgID0gMzQ7XG5jb25zdCBTZXRab29tTWV0aG9kICAgICAgICAgICAgICAgICAgICAgPSAzNTtcbmNvbnN0IFNob3dNZXRob2QgICAgICAgICAgICAgICAgICAgICAgICA9IDM2O1xuY29uc3QgU2l6ZU1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgID0gMzc7XG5jb25zdCBUb2dnbGVGdWxsc2NyZWVuTWV0aG9kICAgICAgICAgICAgPSAzODtcbmNvbnN0IFRvZ2dsZU1heGltaXNlTWV0aG9kICAgICAgICAgICAgICA9IDM5O1xuY29uc3QgVG9nZ2xlRnJhbWVsZXNzTWV0aG9kICAgICAgICAgICAgID0gNDA7IFxuY29uc3QgVW5GdWxsc2NyZWVuTWV0aG9kICAgICAgICAgICAgICAgID0gNDE7XG5jb25zdCBVbk1heGltaXNlTWV0aG9kICAgICAgICAgICAgICAgICAgPSA0MjtcbmNvbnN0IFVuTWluaW1pc2VNZXRob2QgICAgICAgICAgICAgICAgICA9IDQzO1xuY29uc3QgV2lkdGhNZXRob2QgICAgICAgICAgICAgICAgICAgICAgID0gNDQ7XG5jb25zdCBab29tTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICAgPSA0NTtcbmNvbnN0IFpvb21Jbk1ldGhvZCAgICAgICAgICAgICAgICAgICAgICA9IDQ2O1xuY29uc3QgWm9vbU91dE1ldGhvZCAgICAgICAgICAgICAgICAgICAgID0gNDc7XG5jb25zdCBab29tUmVzZXRNZXRob2QgICAgICAgICAgICAgICAgICAgPSA0ODtcbmNvbnN0IFNuYXBBc3Npc3RNZXRob2QgICAgICAgICAgICAgICAgICA9IDQ5O1xuY29uc3QgRmlsZXNEcm9wcGVkICAgICAgICAgICAgICAgICAgICAgID0gNTA7XG5jb25zdCBQcmludE1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgPSA1MTtcbmNvbnN0IFNldFNjcmVlbk1ldGhvZCAgICAgICAgICAgICAgICAgICA9IDUyO1xuXG4vKipcbiAqIEZpbmRzIHRoZSBuZWFyZXN0IGRyb3AgdGFyZ2V0IGVsZW1lbnQgYnkgd2Fsa2luZyB1cCB0aGUgRE9NIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIGdldERyb3BUYXJnZXRFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsKTogRWxlbWVudCB8IG51bGwge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnQuY2xvc2VzdChgWyR7RFJPUF9UQVJHRVRfQVRUUklCVVRFfV1gKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB3ZSBjYW4gdXNlIFdlYlZpZXcyJ3MgcG9zdE1lc3NhZ2VXaXRoQWRkaXRpb25hbE9iamVjdHMgKFdpbmRvd3MpXG4gKiBBbHNvIGNoZWNrcyB0aGF0IEVuYWJsZUZpbGVEcm9wIGlzIHRydWUgZm9yIHRoaXMgd2luZG93LlxuICovXG5mdW5jdGlvbiBjYW5SZXNvbHZlRmlsZVBhdGhzKCk6IGJvb2xlYW4ge1xuICAgIC8vIE11c3QgaGF2ZSBXZWJWaWV3MidzIHBvc3RNZXNzYWdlV2l0aEFkZGl0aW9uYWxPYmplY3RzIEFQSSAoV2luZG93cyBvbmx5KVxuICAgIGlmICgod2luZG93IGFzIGFueSkuY2hyb21lPy53ZWJ2aWV3Py5wb3N0TWVzc2FnZVdpdGhBZGRpdGlvbmFsT2JqZWN0cyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gTXVzdCBoYXZlIEVuYWJsZUZpbGVEcm9wIHNldCB0byB0cnVlIGZvciB0aGlzIHdpbmRvd1xuICAgIC8vIFRoaXMgZmxhZyBpcyBzZXQgYnkgdGhlIEdvIGJhY2tlbmQgZHVyaW5nIHJ1bnRpbWUgaW5pdGlhbGl6YXRpb25cbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSB0cnVlO1xufVxuXG4vKipcbiAqIFNlbmQgZmlsZSBkcm9wIHRvIGJhY2tlbmQgdmlhIFdlYlZpZXcyIChXaW5kb3dzIG9ubHkpXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVGaWxlUGF0aHMoeDogbnVtYmVyLCB5OiBudW1iZXIsIGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcbiAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLmNocm9tZT8ud2Vidmlldz8ucG9zdE1lc3NhZ2VXaXRoQWRkaXRpb25hbE9iamVjdHMpIHtcbiAgICAgICAgKHdpbmRvdyBhcyBhbnkpLmNocm9tZS53ZWJ2aWV3LnBvc3RNZXNzYWdlV2l0aEFkZGl0aW9uYWxPYmplY3RzKGBmaWxlOmRyb3A6JHt4fToke3l9YCwgZmlsZXMpO1xuICAgIH1cbn1cblxuLy8gTmF0aXZlIGRyYWcgc3RhdGUgKExpbnV4L21hY09TIGludGVyY2VwdCBET00gZHJhZyBldmVudHMpXG5sZXQgbmF0aXZlRHJhZ0FjdGl2ZSA9IGZhbHNlO1xuXG4vKipcbiAqIENsZWFucyB1cCBuYXRpdmUgZHJhZyBzdGF0ZSBhbmQgaG92ZXIgZWZmZWN0cy5cbiAqIENhbGxlZCBvbiBkcm9wIG9yIHdoZW4gZHJhZyBsZWF2ZXMgdGhlIHdpbmRvdy5cbiAqL1xuZnVuY3Rpb24gY2xlYW51cE5hdGl2ZURyYWcoKTogdm9pZCB7XG4gICAgbmF0aXZlRHJhZ0FjdGl2ZSA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50RHJvcFRhcmdldCkge1xuICAgICAgICBjdXJyZW50RHJvcFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICB9XG59XG5cbi8qKlxuICogQ2FsbGVkIGZyb20gR28gd2hlbiBhIGZpbGUgZHJhZyBlbnRlcnMgdGhlIHdpbmRvdyBvbiBMaW51eC9tYWNPUy5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlRHJhZ0VudGVyKCk6IHZvaWQge1xuICAgIC8vIENoZWNrIGlmIGZpbGUgZHJvcHMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgd2luZG93XG4gICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBkb24ndCBhY3RpdmF0ZSBkcmFnIHN0YXRlXG4gICAgfVxuICAgIG5hdGl2ZURyYWdBY3RpdmUgPSB0cnVlO1xufVxuXG4vKipcbiAqIENhbGxlZCBmcm9tIEdvIHdoZW4gYSBmaWxlIGRyYWcgbGVhdmVzIHRoZSB3aW5kb3cgb24gTGludXgvbWFjT1MuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZURyYWdMZWF2ZSgpOiB2b2lkIHtcbiAgICBjbGVhbnVwTmF0aXZlRHJhZygpO1xufVxuXG4vKipcbiAqIENhbGxlZCBmcm9tIEdvIGR1cmluZyBmaWxlIGRyYWcgdG8gdXBkYXRlIGhvdmVyIHN0YXRlIG9uIExpbnV4L21hY09TLlxuICogQHBhcmFtIHggLSBYIGNvb3JkaW5hdGUgaW4gQ1NTIHBpeGVsc1xuICogQHBhcmFtIHkgLSBZIGNvb3JkaW5hdGUgaW4gQ1NTIHBpeGVsc1xuICovXG5mdW5jdGlvbiBoYW5kbGVEcmFnT3Zlcih4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghbmF0aXZlRHJhZ0FjdGl2ZSkgcmV0dXJuO1xuICAgIFxuICAgIC8vIENoZWNrIGlmIGZpbGUgZHJvcHMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgd2luZG93XG4gICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBkb24ndCBzaG93IGhvdmVyIGVmZmVjdHNcbiAgICB9XG4gICAgXG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7XG4gICAgY29uc3QgZHJvcFRhcmdldCA9IGdldERyb3BUYXJnZXRFbGVtZW50KHRhcmdldEVsZW1lbnQpO1xuICAgIFxuICAgIGlmIChjdXJyZW50RHJvcFRhcmdldCAmJiBjdXJyZW50RHJvcFRhcmdldCAhPT0gZHJvcFRhcmdldCkge1xuICAgICAgICBjdXJyZW50RHJvcFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgfVxuICAgIFxuICAgIGlmIChkcm9wVGFyZ2V0KSB7XG4gICAgICAgIGRyb3BUYXJnZXQuY2xhc3NMaXN0LmFkZChEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IGRyb3BUYXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudERyb3BUYXJnZXQgPSBudWxsO1xuICAgIH1cbn1cblxuXG5cbi8vIEV4cG9ydCB0aGUgaGFuZGxlcnMgZm9yIHVzZSBieSBHbyB2aWEgaW5kZXgudHNcbmV4cG9ydCB7IGhhbmRsZURyYWdFbnRlciwgaGFuZGxlRHJhZ0xlYXZlLCBoYW5kbGVEcmFnT3ZlciB9O1xuXG4vKipcbiAqIEEgcmVjb3JkIGRlc2NyaWJpbmcgdGhlIHBvc2l0aW9uIG9mIGEgd2luZG93LlxuICovXG5pbnRlcmZhY2UgUG9zaXRpb24ge1xuICAgIC8qKiBUaGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgd2luZG93LiAqL1xuICAgIHg6IG51bWJlcjtcbiAgICAvKiogVGhlIHZlcnRpY2FsIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuICovXG4gICAgeTogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgcmVjb3JkIGRlc2NyaWJpbmcgdGhlIHNpemUgb2YgYSB3aW5kb3cuXG4gKi9cbmludGVyZmFjZSBTaXplIHtcbiAgICAvKiogVGhlIHdpZHRoIG9mIHRoZSB3aW5kb3cuICovXG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICAvKiogVGhlIGhlaWdodCBvZiB0aGUgd2luZG93LiAqL1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuXG4vLyBQcml2YXRlIGZpZWxkIG5hbWVzLlxuY29uc3QgY2FsbGVyU3ltID0gU3ltYm9sKFwiY2FsbGVyXCIpO1xuXG5jbGFzcyBXaW5kb3cge1xuICAgIC8vIFByaXZhdGUgZmllbGRzLlxuICAgIHByaXZhdGUgW2NhbGxlclN5bV06IChtZXNzYWdlOiBudW1iZXIsIGFyZ3M/OiBhbnkpID0+IFByb21pc2U8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpc2VzIGEgd2luZG93IG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFyZ2V0IHdpbmRvdy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcgPSAnJykge1xuICAgICAgICB0aGlzW2NhbGxlclN5bV0gPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLldpbmRvdywgbmFtZSlcblxuICAgICAgICAvLyBiaW5kIGluc3RhbmNlIG1ldGhvZCB0byBtYWtlIHRoZW0gZWFzaWx5IHVzYWJsZSBpbiBldmVudCBoYW5kbGVyc1xuICAgICAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhXaW5kb3cucHJvdG90eXBlKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG1ldGhvZCAhPT0gXCJjb25zdHJ1Y3RvclwiXG4gICAgICAgICAgICAgICAgJiYgdHlwZW9mICh0aGlzIGFzIGFueSlbbWV0aG9kXSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAodGhpcyBhcyBhbnkpW21ldGhvZF0gPSAodGhpcyBhcyBhbnkpW21ldGhvZF0uYmluZCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNwZWNpZmllZCB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3aW5kb3cgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIHdpbmRvdyBvYmplY3QuXG4gICAgICovXG4gICAgR2V0KG5hbWU6IHN0cmluZyk6IFdpbmRvdyB7XG4gICAgICAgIHJldHVybiBuZXcgV2luZG93KG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFBvc2l0aW9uKCk6IFByb21pc2U8UG9zaXRpb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShQb3NpdGlvbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2VudGVycyB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uXG4gICAgICovXG4gICAgQ2VudGVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKENlbnRlck1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgQ2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oQ2xvc2VNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc2FibGVzIG1pbi9tYXggc2l6ZSBjb25zdHJhaW50cy5cbiAgICAgKi9cbiAgICBEaXNhYmxlU2l6ZUNvbnN0cmFpbnRzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKERpc2FibGVTaXplQ29uc3RyYWludHNNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgbWluL21heCBzaXplIGNvbnN0cmFpbnRzLlxuICAgICAqL1xuICAgIEVuYWJsZVNpemVDb25zdHJhaW50cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShFbmFibGVTaXplQ29uc3RyYWludHNNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY3VzZXMgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBGb2N1cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShGb2N1c01ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9yY2VzIHRoZSB3aW5kb3cgdG8gcmVsb2FkIHRoZSBwYWdlIGFzc2V0cy5cbiAgICAgKi9cbiAgICBGb3JjZVJlbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShGb3JjZVJlbG9hZE1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3dpdGNoZXMgdGhlIHdpbmRvdyB0byBmdWxsc2NyZWVuIG1vZGUuXG4gICAgICovXG4gICAgRnVsbHNjcmVlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShGdWxsc2NyZWVuTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzY3JlZW4gdGhhdCB0aGUgd2luZG93IGlzIG9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHNjcmVlbiB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBvbi5cbiAgICAgKi9cbiAgICBHZXRTY3JlZW4oKTogUHJvbWlzZTxTY3JlZW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShHZXRTY3JlZW5NZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgem9vbSBsZXZlbCBvZiB0aGUgd2luZG93LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgem9vbSBsZXZlbC5cbiAgICAgKi9cbiAgICBHZXRab29tKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oR2V0Wm9vbU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBIZWlnaHQoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShIZWlnaHRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGVzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgSGlkZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShIaWRlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHdpbmRvdyBpcyBmb2N1c2VkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBmb2N1c2VkLlxuICAgICAqL1xuICAgIElzRm9jdXNlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShJc0ZvY3VzZWRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2luZG93IGlzIGZ1bGxzY3JlZW4uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB3aW5kb3cgaXMgY3VycmVudGx5IGZ1bGxzY3JlZW4uXG4gICAgICovXG4gICAgSXNGdWxsc2NyZWVuKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKElzRnVsbHNjcmVlbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB3aW5kb3cgaXMgbWF4aW1pc2VkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBtYXhpbWlzZWQuXG4gICAgICovXG4gICAgSXNNYXhpbWlzZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oSXNNYXhpbWlzZWRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2luZG93IGlzIG1pbmltaXNlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHdpbmRvdyBpcyBjdXJyZW50bHkgbWluaW1pc2VkLlxuICAgICAqL1xuICAgIElzTWluaW1pc2VkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKElzTWluaW1pc2VkTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYXhpbWlzZXMgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBNYXhpbWlzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShNYXhpbWlzZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWluaW1pc2VzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgTWluaW1pc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oTWluaW1pc2VNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgTmFtZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKE5hbWVNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBkZXZlbG9wbWVudCB0b29scyBwYW5lLlxuICAgICAqL1xuICAgIE9wZW5EZXZUb29scygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShPcGVuRGV2VG9vbHNNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgdG8gdGhlIHNjcmVlbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgUmVsYXRpdmVQb3NpdGlvbigpOiBQcm9taXNlPFBvc2l0aW9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oUmVsYXRpdmVQb3NpdGlvbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVsb2FkcyB0aGUgcGFnZSBhc3NldHMuXG4gICAgICovXG4gICAgUmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFJlbG9hZE1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB3aW5kb3cgaXMgcmVzaXphYmxlLlxuICAgICAqXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgd2luZG93IGlzIGN1cnJlbnRseSByZXNpemFibGUuXG4gICAgICovXG4gICAgUmVzaXphYmxlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFJlc2l6YWJsZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzdG9yZXMgdGhlIHdpbmRvdyB0byBpdHMgcHJldmlvdXMgc3RhdGUgaWYgaXQgd2FzIHByZXZpb3VzbHkgbWluaW1pc2VkLCBtYXhpbWlzZWQgb3IgZnVsbHNjcmVlbi5cbiAgICAgKi9cbiAgICBSZXN0b3JlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFJlc3RvcmVNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0geCAtIFRoZSBkZXNpcmVkIGhvcml6b250YWwgYWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdy5cbiAgICAgKiBAcGFyYW0geSAtIFRoZSBkZXNpcmVkIHZlcnRpY2FsIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgU2V0UG9zaXRpb24oeDogbnVtYmVyLCB5OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRQb3NpdGlvbk1ldGhvZCwgeyB4LCB5IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHdpbmRvdyB0byBiZSBhbHdheXMgb24gdG9wLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFsd2F5c09uVG9wIC0gV2hldGhlciB0aGUgd2luZG93IHNob3VsZCBzdGF5IG9uIHRvcC5cbiAgICAgKi9cbiAgICBTZXRBbHdheXNPblRvcChhbHdheXNPblRvcDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldEFsd2F5c09uVG9wTWV0aG9kLCB7IGFsd2F5c09uVG9wIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJhY2tncm91bmQgY29sb3VyIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gciAtIFRoZSBkZXNpcmVkIHJlZCBjb21wb25lbnQgb2YgdGhlIHdpbmRvdyBiYWNrZ3JvdW5kLlxuICAgICAqIEBwYXJhbSBnIC0gVGhlIGRlc2lyZWQgZ3JlZW4gY29tcG9uZW50IG9mIHRoZSB3aW5kb3cgYmFja2dyb3VuZC5cbiAgICAgKiBAcGFyYW0gYiAtIFRoZSBkZXNpcmVkIGJsdWUgY29tcG9uZW50IG9mIHRoZSB3aW5kb3cgYmFja2dyb3VuZC5cbiAgICAgKiBAcGFyYW0gYSAtIFRoZSBkZXNpcmVkIGFscGhhIGNvbXBvbmVudCBvZiB0aGUgd2luZG93IGJhY2tncm91bmQuXG4gICAgICovXG4gICAgU2V0QmFja2dyb3VuZENvbG91cihyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyLCBhOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRCYWNrZ3JvdW5kQ29sb3VyTWV0aG9kLCB7IHIsIGcsIGIsIGEgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgd2luZG93IGZyYW1lIGFuZCB0aXRsZSBiYXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZnJhbWVsZXNzIC0gV2hldGhlciB0aGUgd2luZG93IHNob3VsZCBiZSBmcmFtZWxlc3MuXG4gICAgICovXG4gICAgU2V0RnJhbWVsZXNzKGZyYW1lbGVzczogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldEZyYW1lbGVzc01ldGhvZCwgeyBmcmFtZWxlc3MgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgdGhlIHN5c3RlbSBmdWxsc2NyZWVuIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbmFibGVkIC0gV2hldGhlciB0aGUgZnVsbHNjcmVlbiBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWQuXG4gICAgICovXG4gICAgU2V0RnVsbHNjcmVlbkJ1dHRvbkVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldEZ1bGxzY3JlZW5CdXR0b25FbmFibGVkTWV0aG9kLCB7IGVuYWJsZWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gd2lkdGggLSBUaGUgZGVzaXJlZCBtYXhpbXVtIHdpZHRoIG9mIHRoZSB3aW5kb3cuXG4gICAgICogQHBhcmFtIGhlaWdodCAtIFRoZSBkZXNpcmVkIG1heGltdW0gaGVpZ2h0IG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgU2V0TWF4U2l6ZSh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldE1heFNpemVNZXRob2QsIHsgd2lkdGgsIGhlaWdodCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBtaW5pbXVtIHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB3aWR0aCAtIFRoZSBkZXNpcmVkIG1pbmltdW0gd2lkdGggb2YgdGhlIHdpbmRvdy5cbiAgICAgKiBAcGFyYW0gaGVpZ2h0IC0gVGhlIGRlc2lyZWQgbWluaW11bSBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRNaW5TaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0TWluU2l6ZU1ldGhvZCwgeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgdG8gdGhlIHNjcmVlbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB4IC0gVGhlIGRlc2lyZWQgaG9yaXpvbnRhbCByZWxhdGl2ZSBwb3NpdGlvbiBvZiB0aGUgd2luZG93LlxuICAgICAqIEBwYXJhbSB5IC0gVGhlIGRlc2lyZWQgdmVydGljYWwgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRSZWxhdGl2ZVBvc2l0aW9uKHg6IG51bWJlciwgeTogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0UmVsYXRpdmVQb3NpdGlvbk1ldGhvZCwgeyB4LCB5IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgd2hldGhlciB0aGUgd2luZG93IGlzIHJlc2l6YWJsZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXNpemFibGUgLSBXaGV0aGVyIHRoZSB3aW5kb3cgc2hvdWxkIGJlIHJlc2l6YWJsZS5cbiAgICAgKi9cbiAgICBTZXRSZXNpemFibGUocmVzaXphYmxlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0UmVzaXphYmxlTWV0aG9kLCB7IHJlc2l6YWJsZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzaXplIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gd2lkdGggLSBUaGUgZGVzaXJlZCB3aWR0aCBvZiB0aGUgd2luZG93LlxuICAgICAqIEBwYXJhbSBoZWlnaHQgLSBUaGUgZGVzaXJlZCBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRTaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0U2l6ZU1ldGhvZCwgeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRpdGxlIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGl0bGUgLSBUaGUgZGVzaXJlZCB0aXRsZSBvZiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFNldFRpdGxlKHRpdGxlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRUaXRsZU1ldGhvZCwgeyB0aXRsZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB6b29tIGxldmVsIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gem9vbSAtIFRoZSBkZXNpcmVkIHpvb20gbGV2ZWwuXG4gICAgICovXG4gICAgU2V0Wm9vbSh6b29tOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRab29tTWV0aG9kLCB7IHpvb20gfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvd3MgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTaG93KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNob3dNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTaXplKCk6IFByb21pc2U8U2l6ZT4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNpemVNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIHdpbmRvdyBiZXR3ZWVuIGZ1bGxzY3JlZW4gYW5kIG5vcm1hbC5cbiAgICAgKi9cbiAgICBUb2dnbGVGdWxsc2NyZWVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFRvZ2dsZUZ1bGxzY3JlZW5NZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIHdpbmRvdyBiZXR3ZWVuIG1heGltaXNlZCBhbmQgbm9ybWFsLlxuICAgICAqL1xuICAgIFRvZ2dsZU1heGltaXNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFRvZ2dsZU1heGltaXNlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIHRoZSB3aW5kb3cgYmV0d2VlbiBmcmFtZWxlc3MgYW5kIG5vcm1hbC5cbiAgICAgKi9cbiAgICBUb2dnbGVGcmFtZWxlc3MoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oVG9nZ2xlRnJhbWVsZXNzTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbi1mdWxsc2NyZWVucyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFVuRnVsbHNjcmVlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShVbkZ1bGxzY3JlZW5NZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVuLW1heGltaXNlcyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFVuTWF4aW1pc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oVW5NYXhpbWlzZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVW4tbWluaW1pc2VzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgVW5NaW5pbWlzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShVbk1pbmltaXNlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB3aWR0aCBvZiB0aGUgd2luZG93LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgd2lkdGggb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBXaWR0aCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFdpZHRoTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBab29tcyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFpvb20oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oWm9vbU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5jcmVhc2VzIHRoZSB6b29tIGxldmVsIG9mIHRoZSB3ZWJ2aWV3IGNvbnRlbnQuXG4gICAgICovXG4gICAgWm9vbUluKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFpvb21Jbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVjcmVhc2VzIHRoZSB6b29tIGxldmVsIG9mIHRoZSB3ZWJ2aWV3IGNvbnRlbnQuXG4gICAgICovXG4gICAgWm9vbU91dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShab29tT3V0TWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldHMgdGhlIHpvb20gbGV2ZWwgb2YgdGhlIHdlYnZpZXcgY29udGVudC5cbiAgICAgKi9cbiAgICBab29tUmVzZXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oWm9vbVJlc2V0TWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGZpbGUgZHJvcHMgb3JpZ2luYXRpbmcgZnJvbSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIChlLmcuLCBtYWNPUy9MaW51eCBuYXRpdmUgZHJhZy1hbmQtZHJvcCkuXG4gICAgICogR2F0aGVycyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZHJvcCB0YXJnZXQgZWxlbWVudCBhbmQgc2VuZHMgaXQgYmFjayB0byB0aGUgR28gYmFja2VuZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlbmFtZXMgLSBBbiBhcnJheSBvZiBmaWxlIHBhdGhzIChzdHJpbmdzKSB0aGF0IHdlcmUgZHJvcHBlZC5cbiAgICAgKiBAcGFyYW0geCAtIFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIGRyb3AgZXZlbnQsIGluIGxvZ2ljYWwgKENTUykgcGl4ZWxzIHJlbGF0aXZlIHRvIHRoZSB3ZWJ2aWV3LlxuICAgICAqIEBwYXJhbSB5IC0gVGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgZHJvcCBldmVudCwgaW4gbG9naWNhbCAoQ1NTKSBwaXhlbHMgcmVsYXRpdmUgdG8gdGhlIHdlYnZpZXcuXG4gICAgICovXG4gICAgSGFuZGxlUGxhdGZvcm1GaWxlRHJvcChmaWxlbmFtZXM6IHN0cmluZ1tdLCB4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBDaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBpZ25vcmUgdGhlIGRyb3BcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7XG4gICAgICAgIGNvbnN0IGRyb3BUYXJnZXQgPSBnZXREcm9wVGFyZ2V0RWxlbWVudChlbGVtZW50KTtcblxuICAgICAgICBpZiAoIWRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIC8vIERyb3Agd2FzIG5vdCBvbiBhIGRlc2lnbmF0ZWQgZHJvcCB0YXJnZXQgLSBpZ25vcmVcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnREZXRhaWxzID0ge1xuICAgICAgICAgICAgaWQ6IGRyb3BUYXJnZXQuaWQsXG4gICAgICAgICAgICBjbGFzc0xpc3Q6IEFycmF5LmZyb20oZHJvcFRhcmdldC5jbGFzc0xpc3QpLFxuICAgICAgICAgICAgYXR0cmlidXRlczoge30gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkcm9wVGFyZ2V0LmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBkcm9wVGFyZ2V0LmF0dHJpYnV0ZXNbaV07XG4gICAgICAgICAgICBlbGVtZW50RGV0YWlscy5hdHRyaWJ1dGVzW2F0dHIubmFtZV0gPSBhdHRyLnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgICAgIGZpbGVuYW1lcyxcbiAgICAgICAgICAgIHgsXG4gICAgICAgICAgICB5LFxuICAgICAgICAgICAgZWxlbWVudERldGFpbHMsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpc1tjYWxsZXJTeW1dKEZpbGVzRHJvcHBlZCwgcGF5bG9hZCk7XG4gICAgICAgIFxuICAgICAgICAvLyBDbGVhbiB1cCBuYXRpdmUgZHJhZyBzdGF0ZSBhZnRlciBkcm9wXG4gICAgICAgIGNsZWFudXBOYXRpdmVEcmFnKCk7XG4gICAgfVxuICBcbiAgICAvKipcbiAgICAgKiBNb3ZlcyB0aGUgd2luZG93IHRvIHRoZSBjZW50ZXIgb2YgdGhlIHNwZWNpZmllZCBzY3JlZW4ncyB3b3JrIGFyZWEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NyZWVuSUQgLSBUaGUgSUQgb2YgdGhlIHRhcmdldCBzY3JlZW4uXG4gICAgICovXG4gICAgU2V0U2NyZWVuKHNjcmVlbklEOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRTY3JlZW5NZXRob2QsIHsgc2NyZWVuSUQgfSk7XG4gICAgfVxuXG4gICAgLyogVHJpZ2dlcnMgV2luZG93cyAxMSBTbmFwIEFzc2lzdCBmZWF0dXJlIChXaW5kb3dzIG9ubHkpLlxuICAgICAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byBwcmVzc2luZyBXaW4rWiBhbmQgc2hvd3Mgc25hcCBsYXlvdXQgb3B0aW9ucy5cbiAgICAgKi9cbiAgICBTbmFwQXNzaXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNuYXBBc3Npc3RNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBwcmludCBkaWFsb2cgZm9yIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgUHJpbnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oUHJpbnRNZXRob2QpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgd2luZG93IHdpdGhpbiB3aGljaCB0aGUgc2NyaXB0IGlzIHJ1bm5pbmcuXG4gKi9cbmNvbnN0IHRoaXNXaW5kb3cgPSBuZXcgV2luZG93KCcnKTtcblxuLyoqXG4gKiBTZXRzIHVwIGdsb2JhbCBkcmFnIGFuZCBkcm9wIGV2ZW50IGxpc3RlbmVycyBmb3IgZmlsZSBkcm9wcy5cbiAqIEhhbmRsZXMgdmlzdWFsIGZlZWRiYWNrIChob3ZlciBzdGF0ZSkgYW5kIGZpbGUgZHJvcCBwcm9jZXNzaW5nLlxuICovXG5mdW5jdGlvbiBzZXR1cERyb3BUYXJnZXRMaXN0ZW5lcnMoKSB7XG4gICAgY29uc3QgZG9jRWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBsZXQgZHJhZ0VudGVyQ291bnRlciA9IDA7XG5cbiAgICBkb2NFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoIWV2ZW50LmRhdGFUcmFuc2Zlcj8udHlwZXMuaW5jbHVkZXMoJ0ZpbGVzJykpIHtcbiAgICAgICAgICAgIHJldHVybjsgLy8gT25seSBoYW5kbGUgZmlsZSBkcmFncywgbGV0IG90aGVyIGRyYWdzIHBhc3MgdGhyb3VnaFxuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIEFsd2F5cyBwcmV2ZW50IGRlZmF1bHQgdG8gc3RvcCBicm93c2VyIG5hdmlnYXRpb25cbiAgICAgICAgLy8gT24gV2luZG93cywgY2hlY2sgaWYgZmlsZSBkcm9wcyBhcmUgZW5hYmxlZCBmb3IgdGhpcyB3aW5kb3dcbiAgICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ25vbmUnOyAvLyBTaG93IFwibm8gZHJvcFwiIGN1cnNvclxuICAgICAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBkb24ndCBzaG93IGhvdmVyIGVmZmVjdHNcbiAgICAgICAgfVxuICAgICAgICBkcmFnRW50ZXJDb3VudGVyKys7XG4gICAgICAgIFxuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKTtcbiAgICAgICAgY29uc3QgZHJvcFRhcmdldCA9IGdldERyb3BUYXJnZXRFbGVtZW50KHRhcmdldEVsZW1lbnQpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBob3ZlciBzdGF0ZVxuICAgICAgICBpZiAoY3VycmVudERyb3BUYXJnZXQgJiYgY3VycmVudERyb3BUYXJnZXQgIT09IGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICBkcm9wVGFyZ2V0LmNsYXNzTGlzdC5hZGQoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ2NvcHknO1xuICAgICAgICAgICAgY3VycmVudERyb3BUYXJnZXQgPSBkcm9wVGFyZ2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbm9uZSc7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9LCBmYWxzZSk7XG5cbiAgICBkb2NFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBPbmx5IGhhbmRsZSBmaWxlIGRyYWdzXG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gQWx3YXlzIHByZXZlbnQgZGVmYXVsdCB0byBzdG9wIGJyb3dzZXIgbmF2aWdhdGlvblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBjaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbm9uZSc7IC8vIFNob3cgXCJubyBkcm9wXCIgY3Vyc29yXG4gICAgICAgICAgICByZXR1cm47IC8vIEZpbGUgZHJvcHMgZGlzYWJsZWQsIGRvbid0IHNob3cgaG92ZXIgZWZmZWN0c1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgZHJvcCB0YXJnZXQgYXMgY3Vyc29yIG1vdmVzXG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xuICAgICAgICBjb25zdCBkcm9wVGFyZ2V0ID0gZ2V0RHJvcFRhcmdldEVsZW1lbnQodGFyZ2V0RWxlbWVudCk7XG4gICAgICAgIFxuICAgICAgICBpZiAoY3VycmVudERyb3BUYXJnZXQgJiYgY3VycmVudERyb3BUYXJnZXQgIT09IGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGlmICghZHJvcFRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKSkge1xuICAgICAgICAgICAgICAgIGRyb3BUYXJnZXQuY2xhc3NMaXN0LmFkZChEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSc7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IGRyb3BUYXJnZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sIGZhbHNlKTtcblxuICAgIGRvY0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIEFsd2F5cyBwcmV2ZW50IGRlZmF1bHQgdG8gc3RvcCBicm93c2VyIG5hdmlnYXRpb25cbiAgICAgICAgLy8gT24gV2luZG93cywgY2hlY2sgaWYgZmlsZSBkcm9wcyBhcmUgZW5hYmxlZCBmb3IgdGhpcyB3aW5kb3dcbiAgICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gT24gTGludXgvV2ViS2l0R1RLIGFuZCBtYWNPUywgZHJhZ2xlYXZlIGZpcmVzIGltbWVkaWF0ZWx5IHdpdGggcmVsYXRlZFRhcmdldD1udWxsIHdoZW4gbmF0aXZlXG4gICAgICAgIC8vIGRyYWcgaGFuZGxpbmcgaXMgaW52b2x2ZWQuIElnbm9yZSB0aGVzZSBzcHVyaW91cyBldmVudHMgLSB3ZSdsbCBjbGVhbiB1cCBvbiBkcm9wIGluc3RlYWQuXG4gICAgICAgIGlmIChldmVudC5yZWxhdGVkVGFyZ2V0ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGRyYWdFbnRlckNvdW50ZXItLTtcbiAgICAgICAgXG4gICAgICAgIGlmIChkcmFnRW50ZXJDb3VudGVyID09PSAwIHx8IFxuICAgICAgICAgICAgKGN1cnJlbnREcm9wVGFyZ2V0ICYmICFjdXJyZW50RHJvcFRhcmdldC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpKSkge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnREcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgY3VycmVudERyb3BUYXJnZXQuY2xhc3NMaXN0LnJlbW92ZShEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRyYWdFbnRlckNvdW50ZXIgPSAwO1xuICAgICAgICB9XG4gICAgfSwgZmFsc2UpO1xuXG4gICAgZG9jRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBPbmx5IGhhbmRsZSBmaWxlIGRyb3BzXG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gQWx3YXlzIHByZXZlbnQgZGVmYXVsdCB0byBzdG9wIGJyb3dzZXIgbmF2aWdhdGlvblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBjaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRyYWdFbnRlckNvdW50ZXIgPSAwO1xuICAgICAgICBcbiAgICAgICAgaWYgKGN1cnJlbnREcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBoYW5kbGUgZmlsZSBkcm9wcyB2aWEgSmF2YVNjcmlwdFxuICAgICAgICAvLyBPbiBtYWNPUy9MaW51eCwgbmF0aXZlIGNvZGUgd2lsbCBjYWxsIEhhbmRsZVBsYXRmb3JtRmlsZURyb3BcbiAgICAgICAgaWYgKGNhblJlc29sdmVGaWxlUGF0aHMoKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZXM6IEZpbGVbXSA9IFtdO1xuICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ua2luZCA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gaXRlbS5nZXRBc0ZpbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlKSBmaWxlcy5wdXNoKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzLnB1c2goZmlsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmVGaWxlUGF0aHMoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSwgZmlsZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgZmFsc2UpO1xufVxuXG4vLyBJbml0aWFsaXplIGxpc3RlbmVycyB3aGVuIHRoZSBzY3JpcHQgbG9hZHNcbmlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHNldHVwRHJvcFRhcmdldExpc3RlbmVycygpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0aGlzV2luZG93O1xuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgKiBhcyBSdW50aW1lIGZyb20gXCIuLi9Ad2FpbHNpby9ydW50aW1lL3NyY1wiO1xuXG4vLyBOT1RFOiB0aGUgZm9sbG93aW5nIG1ldGhvZHMgTVVTVCBiZSBpbXBvcnRlZCBleHBsaWNpdGx5IGJlY2F1c2Ugb2YgaG93IGVzYnVpbGQgaW5qZWN0aW9uIHdvcmtzXG5pbXBvcnQgeyBFbmFibGUgYXMgRW5hYmxlV01MIH0gZnJvbSBcIi4uL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3dtbFwiO1xuaW1wb3J0IHsgZGVidWdMb2cgfSBmcm9tIFwiLi4vQHdhaWxzaW8vcnVudGltZS9zcmMvdXRpbHNcIjtcblxud2luZG93LndhaWxzID0gUnVudGltZTtcbkVuYWJsZVdNTCgpO1xuXG5pZiAoREVCVUcpIHtcbiAgICBkZWJ1Z0xvZyhcIldhaWxzIFJ1bnRpbWUgTG9hZGVkXCIpXG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5TeXN0ZW0pO1xuXG5jb25zdCBTeXN0ZW1Jc0RhcmtNb2RlID0gMDtcbmNvbnN0IFN5c3RlbUVudmlyb25tZW50ID0gMTtcbmNvbnN0IFN5c3RlbUNhcGFiaWxpdGllcyA9IDI7XG5cbmNvbnN0IF9pbnZva2UgPSAoZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIFdpbmRvd3MgV2ViVmlldzJcbiAgICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5jaHJvbWU/LndlYnZpZXc/LnBvc3RNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLmNocm9tZS53ZWJ2aWV3LnBvc3RNZXNzYWdlLmJpbmQoKHdpbmRvdyBhcyBhbnkpLmNocm9tZS53ZWJ2aWV3KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBtYWNPUy9pT1MgV0tXZWJWaWV3XG4gICAgICAgIGVsc2UgaWYgKCh3aW5kb3cgYXMgYW55KS53ZWJraXQ/Lm1lc3NhZ2VIYW5kbGVycz8uWydleHRlcm5hbCddPy5wb3N0TWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS53ZWJraXQubWVzc2FnZUhhbmRsZXJzWydleHRlcm5hbCddLnBvc3RNZXNzYWdlLmJpbmQoKHdpbmRvdyBhcyBhbnkpLndlYmtpdC5tZXNzYWdlSGFuZGxlcnNbJ2V4dGVybmFsJ10pO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFuZHJvaWQgV2ViVmlldyAtIHVzZXMgYWRkSmF2YXNjcmlwdEludGVyZmFjZSB3aGljaCBleHBvc2VzIHdpbmRvdy53YWlscy5pbnZva2VcbiAgICAgICAgZWxzZSBpZiAoKHdpbmRvdyBhcyBhbnkpLndhaWxzPy5pbnZva2UpIHtcbiAgICAgICAgICAgIHJldHVybiAobXNnOiBhbnkpID0+ICh3aW5kb3cgYXMgYW55KS53YWlscy5pbnZva2UodHlwZW9mIG1zZyA9PT0gJ3N0cmluZycgPyBtc2cgOiBKU09OLnN0cmluZ2lmeShtc2cpKTtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2goZSkge31cblxuICAgIGNvbnNvbGUud2FybignXFxuJWNcdTI2QTBcdUZFMEYgQnJvd3NlciBFbnZpcm9ubWVudCBEZXRlY3RlZCAlY1xcblxcbiVjT25seSBVSSBwcmV2aWV3cyBhcmUgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyLiBGb3IgZnVsbCBmdW5jdGlvbmFsaXR5LCBwbGVhc2UgcnVuIHRoZSBhcHBsaWNhdGlvbiBpbiBkZXNrdG9wIG1vZGUuXFxuTW9yZSBpbmZvcm1hdGlvbiBhdDogaHR0cHM6Ly92My53YWlscy5pby9sZWFybi9idWlsZC8jdXNpbmctYS1icm93c2VyLWZvci1kZXZlbG9wbWVudFxcbicsXG4gICAgICAgICdiYWNrZ3JvdW5kOiAjZmZmZmZmOyBjb2xvcjogIzAwMDAwMDsgZm9udC13ZWlnaHQ6IGJvbGQ7IHBhZGRpbmc6IDRweCA4cHg7IGJvcmRlci1yYWRpdXM6IDRweDsgYm9yZGVyOiAycHggc29saWQgIzAwMDAwMDsnLFxuICAgICAgICAnYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7JyxcbiAgICAgICAgJ2NvbG9yOiAjZmZmZmZmOyBmb250LXN0eWxlOiBpdGFsaWM7IGZvbnQtd2VpZ2h0OiBib2xkOycpO1xuICAgIHJldHVybiBudWxsO1xufSkoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZShtc2c6IGFueSk6IHZvaWQge1xuICAgIF9pbnZva2U/Lihtc2cpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgc3lzdGVtIGRhcmsgbW9kZSBzdGF0dXMuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgaWYgdGhlIHN5c3RlbSBpcyBpbiBkYXJrIG1vZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc0RhcmtNb2RlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBjYWxsKFN5c3RlbUlzRGFya01vZGUpO1xufVxuXG4vKipcbiAqIEZldGNoZXMgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgYXBwbGljYXRpb24gZnJvbSB0aGUgc2VydmVyLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBjYXBhYmlsaXRpZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBDYXBhYmlsaXRpZXMoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgcmV0dXJuIGNhbGwoU3lzdGVtQ2FwYWJpbGl0aWVzKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPU0luZm8ge1xuICAgIC8qKiBUaGUgYnJhbmRpbmcgb2YgdGhlIE9TLiAqL1xuICAgIEJyYW5kaW5nOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBJRCBvZiB0aGUgT1MuICovXG4gICAgSUQ6IHN0cmluZztcbiAgICAvKiogVGhlIG5hbWUgb2YgdGhlIE9TLiAqL1xuICAgIE5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIHZlcnNpb24gb2YgdGhlIE9TLiAqL1xuICAgIFZlcnNpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudEluZm8ge1xuICAgIC8qKiBUaGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBzeXN0ZW0uICovXG4gICAgQXJjaDogc3RyaW5nO1xuICAgIC8qKiBUcnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nIGluIGRlYnVnIG1vZGUsIG90aGVyd2lzZSBmYWxzZS4gKi9cbiAgICBEZWJ1ZzogYm9vbGVhbjtcbiAgICAvKiogVGhlIG9wZXJhdGluZyBzeXN0ZW0gaW4gdXNlLiAqL1xuICAgIE9TOiBzdHJpbmc7XG4gICAgLyoqIERldGFpbHMgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICovXG4gICAgT1NJbmZvOiBPU0luZm87XG4gICAgLyoqIEFkZGl0aW9uYWwgcGxhdGZvcm0gaW5mb3JtYXRpb24uICovXG4gICAgUGxhdGZvcm1JbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBlbnZpcm9ubWVudCBkZXRhaWxzLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9iamVjdCBjb250YWluaW5nIE9TIGFuZCBzeXN0ZW0gYXJjaGl0ZWN0dXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRW52aXJvbm1lbnQoKTogUHJvbWlzZTxFbnZpcm9ubWVudEluZm8+IHtcbiAgICByZXR1cm4gY2FsbChTeXN0ZW1FbnZpcm9ubWVudCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0gaXMgV2luZG93cy5cbiAqXG4gKiBAcmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaXMgV2luZG93cywgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNXaW5kb3dzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1MgPT09IFwid2luZG93c1wiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtIGlzIExpbnV4LlxuICpcbiAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtIGlzIExpbnV4LCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc0xpbnV4KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1MgPT09IFwibGludXhcIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgYSBtYWNPUyBvcGVyYXRpbmcgc3lzdGVtLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGVudmlyb25tZW50IGlzIG1hY09TLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc01hYygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZW52aXJvbm1lbnQ/Lk9TID09PSBcImRhcndpblwiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtIGlzIGlPUy5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGlzIGlPUywgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNJT1MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmVudmlyb25tZW50Py5PUyA9PT0gXCJpb3NcIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbSBpcyBBbmRyb2lkLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaXMgQW5kcm9pZCwgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNBbmRyb2lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1MgPT09IFwiYW5kcm9pZFwiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgYXBwIGlzIHJ1bm5pbmcgb24gYSBtb2JpbGUgT1MgKGlPUyBvciBBbmRyb2lkKS5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIG9uIGlPUyBvciBBbmRyb2lkLCBvdGhlcndpc2UgZmFsc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gSXNJT1MoKSB8fCBJc0FuZHJvaWQoKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGFwcCBpcyBydW5uaW5nIG9uIGEgZGVza3RvcCBPUyAobWFjT1MsIFdpbmRvd3Mgb3IgTGludXgpLlxuICpcbiAqIEByZXR1cm5zIFRydWUgb24gbWFjT1MsIFdpbmRvd3Mgb3IgTGludXgsIG90aGVyd2lzZSBmYWxzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzRGVza3RvcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gSXNNYWMoKSB8fCBJc1dpbmRvd3MoKSB8fCBJc0xpbnV4KCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGFyY2hpdGVjdHVyZSBpcyBBTUQ2NC5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGFyY2hpdGVjdHVyZSBpcyBBTUQ2NCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNBTUQ2NCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZW52aXJvbm1lbnQ/LkFyY2ggPT09IFwiYW1kNjRcIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgYXJjaGl0ZWN0dXJlIGlzIEFSTS5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjdXJyZW50IGFyY2hpdGVjdHVyZSBpcyBBUk0sIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzQVJNKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uQXJjaCA9PT0gXCJhcm1cIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgQVJNNjQgYXJjaGl0ZWN0dXJlLlxuICpcbiAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgZW52aXJvbm1lbnQgaXMgQVJNNjQgYXJjaGl0ZWN0dXJlLCBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzQVJNNjQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmVudmlyb25tZW50Py5BcmNoID09PSBcImFybTY0XCI7XG59XG5cbi8qKlxuICogUmVwb3J0cyB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgcnVuIGluIGRlYnVnIG1vZGUuXG4gKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgYXBwIGlzIGJlaW5nIHJ1biBpbiBkZWJ1ZyBtb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNEZWJ1ZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbigod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uRGVidWcpO1xufVxuXG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuaW1wb3J0IHsgSXNEZWJ1ZyB9IGZyb20gXCIuL3N5c3RlbS5qc1wiO1xuaW1wb3J0IHsgZXZlbnRUYXJnZXQgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG4vLyBzZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIGNvbnRleHRNZW51SGFuZGxlcik7XG59XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkNvbnRleHRNZW51KTtcblxuY29uc3QgQ29udGV4dE1lbnVPcGVuID0gMDtcblxuZnVuY3Rpb24gb3BlbkNvbnRleHRNZW51KGlkOiBzdHJpbmcsIHg6IG51bWJlciwgeTogbnVtYmVyLCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB2b2lkIGNhbGwoQ29udGV4dE1lbnVPcGVuLCB7aWQsIHgsIHksIGRhdGF9KTtcbn1cblxuZnVuY3Rpb24gY29udGV4dE1lbnVIYW5kbGVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnRUYXJnZXQoZXZlbnQpO1xuXG4gICAgLy8gQ2hlY2sgZm9yIGN1c3RvbSBjb250ZXh0IG1lbnVcbiAgICBjb25zdCBjdXN0b21Db250ZXh0TWVudSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRhcmdldCkuZ2V0UHJvcGVydHlWYWx1ZShcIi0tY3VzdG9tLWNvbnRleHRtZW51XCIpLnRyaW0oKTtcblxuICAgIGlmIChjdXN0b21Db250ZXh0TWVudSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBkYXRhID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1jdXN0b20tY29udGV4dG1lbnUtZGF0YVwiKTtcbiAgICAgICAgb3BlbkNvbnRleHRNZW51KGN1c3RvbUNvbnRleHRNZW51LCBldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZLCBkYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzRGVmYXVsdENvbnRleHRNZW51KGV2ZW50LCB0YXJnZXQpO1xuICAgIH1cbn1cblxuXG4vKlxuLS1kZWZhdWx0LWNvbnRleHRtZW51OiBhdXRvOyAoZGVmYXVsdCkgd2lsbCBzaG93IHRoZSBkZWZhdWx0IGNvbnRleHQgbWVudSBpZiBjb250ZW50RWRpdGFibGUgaXMgdHJ1ZSBPUiB0ZXh0IGhhcyBiZWVuIHNlbGVjdGVkIE9SIGVsZW1lbnQgaXMgaW5wdXQgb3IgdGV4dGFyZWFcbi0tZGVmYXVsdC1jb250ZXh0bWVudTogc2hvdzsgd2lsbCBhbHdheXMgc2hvdyB0aGUgZGVmYXVsdCBjb250ZXh0IG1lbnVcbi0tZGVmYXVsdC1jb250ZXh0bWVudTogaGlkZTsgd2lsbCBhbHdheXMgaGlkZSB0aGUgZGVmYXVsdCBjb250ZXh0IG1lbnVcblxuVGhpcyBydWxlIGlzIGluaGVyaXRlZCBsaWtlIG5vcm1hbCBDU1MgcnVsZXMsIHNvIG5lc3Rpbmcgd29ya3MgYXMgZXhwZWN0ZWRcbiovXG5mdW5jdGlvbiBwcm9jZXNzRGVmYXVsdENvbnRleHRNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCB0YXJnZXQ6IEhUTUxFbGVtZW50KSB7XG4gICAgLy8gRGVidWcgYnVpbGRzIGFsd2F5cyBzaG93IHRoZSBtZW51XG4gICAgaWYgKElzRGVidWcoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzcyBkZWZhdWx0IGNvbnRleHQgbWVudVxuICAgIHN3aXRjaCAod2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1kZWZhdWx0LWNvbnRleHRtZW51XCIpLnRyaW0oKSkge1xuICAgICAgICBjYXNlICdzaG93JzpcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAnaGlkZSc6XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGNvbnRlbnRFZGl0YWJsZSBpcyB0cnVlXG4gICAgaWYgKHRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdGV4dCBoYXMgYmVlbiBzZWxlY3RlZFxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBjb25zdCBoYXNTZWxlY3Rpb24gPSBzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnRvU3RyaW5nKCkubGVuZ3RoID4gMDtcbiAgICBpZiAoaGFzU2VsZWN0aW9uKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0aW9uLnJhbmdlQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdChpKTtcbiAgICAgICAgICAgIGNvbnN0IHJlY3RzID0gcmFuZ2UuZ2V0Q2xpZW50UmVjdHMoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcmVjdHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0gcmVjdHNbal07XG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQocmVjdC5sZWZ0LCByZWN0LnRvcCkgPT09IHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdGFnIGlzIGlucHV0IG9yIHRleHRhcmVhLlxuICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8IHRhcmdldCBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKGhhc1NlbGVjdGlvbiB8fCAoIXRhcmdldC5yZWFkT25seSAmJiAhdGFyZ2V0LmRpc2FibGVkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gaGlkZSBkZWZhdWx0IGNvbnRleHQgbWVudVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZnJvbSB0aGUgZmxhZyBtYXAuXG4gKlxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gcmV0cmlldmUgdGhlIHZhbHVlIGZvci5cbiAqIEByZXR1cm4gVGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldEZsYWcoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuX3dhaWxzLmZsYWdzW2tleV07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gcmV0cmlldmUgZmxhZyAnXCIgKyBrZXkgKyBcIic6IFwiICsgZSwgeyBjYXVzZTogZSB9KTtcbiAgICB9XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IGludm9rZSwgSXNXaW5kb3dzLCBJc0xpbnV4IH0gZnJvbSBcIi4vc3lzdGVtLmpzXCI7XG5pbXBvcnQgeyBHZXRGbGFnIH0gZnJvbSBcIi4vZmxhZ3MuanNcIjtcbmltcG9ydCB7IGNhblRyYWNrQnV0dG9ucywgZXZlbnRUYXJnZXQgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG4vLyBTZXR1cFxubGV0IGNhbkRyYWcgPSBmYWxzZTtcbmxldCBkcmFnZ2luZyA9IGZhbHNlO1xuXG5sZXQgcmVzaXphYmxlID0gZmFsc2U7XG5sZXQgY2FuUmVzaXplID0gZmFsc2U7XG5sZXQgcmVzaXppbmcgPSBmYWxzZTtcbmxldCByZXNpemVFZGdlOiBzdHJpbmcgPSBcIlwiO1xubGV0IGRlZmF1bHRDdXJzb3IgPSBcImF1dG9cIjtcblxubGV0IGJ1dHRvbnMgPSAwO1xuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxubGV0IGJ1dHRvbnNUcmFja2VkID0gZmFsc2U7XG5cbmlmIChoYXNET00pIHtcbiAgICBidXR0b25zVHJhY2tlZCA9IGNhblRyYWNrQnV0dG9ucygpO1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xuICAgIHdpbmRvdy5fd2FpbHMuc2V0UmVzaXphYmxlID0gKHZhbHVlOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIHJlc2l6YWJsZSA9IHZhbHVlO1xuICAgICAgICBpZiAoIXJlc2l6YWJsZSkge1xuICAgICAgICAgICAgLy8gU3RvcCByZXNpemluZyBpZiBpbiBwcm9ncmVzcy5cbiAgICAgICAgICAgIGNhblJlc2l6ZSA9IHJlc2l6aW5nID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRSZXNpemUoKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbi8vIERlZmVyIGF0dGFjaGluZyBtb3VzZSBsaXN0ZW5lcnMgdW50aWwgd2Uga25vdyB3ZSdyZSBub3Qgb24gbW9iaWxlLlxubGV0IGRyYWdJbml0RG9uZSA9IGZhbHNlO1xuZnVuY3Rpb24gaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgb3MgPSAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1M7XG4gICAgaWYgKG9zID09PSBcImlvc1wiIHx8IG9zID09PSBcImFuZHJvaWRcIikgcmV0dXJuIHRydWU7XG4gICAgLy8gRmFsbGJhY2sgaGV1cmlzdGljIGlmIGVudmlyb25tZW50IG5vdCB5ZXQgc2V0XG4gICAgY29uc3QgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50IHx8IG5hdmlnYXRvci52ZW5kb3IgfHwgKHdpbmRvdyBhcyBhbnkpLm9wZXJhIHx8IFwiXCI7XG4gICAgcmV0dXJuIC9hbmRyb2lkfGlwaG9uZXxpcGFkfGlwb2R8aWVtb2JpbGV8d3BkZXNrdG9wL2kudGVzdCh1YSk7XG59XG5mdW5jdGlvbiB0cnlJbml0RHJhZ0hhbmRsZXJzKCk6IHZvaWQge1xuICAgIGlmIChkcmFnSW5pdERvbmUpIHJldHVybjtcbiAgICBpZiAoaXNNb2JpbGUoKSkgcmV0dXJuO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB1cGRhdGUsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdXBkYXRlLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB1cGRhdGUsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICBmb3IgKGNvbnN0IGV2IG9mIFsnY2xpY2snLCAnY29udGV4dG1lbnUnLCAnZGJsY2xpY2snXSkge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihldiwgc3VwcHJlc3NFdmVudCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgIH1cbiAgICBkcmFnSW5pdERvbmUgPSB0cnVlO1xufVxuaWYgKGhhc0RPTSkge1xuICAgIC8vIEF0dGVtcHQgaW1tZWRpYXRlIGluaXQgKGluIGNhc2UgZW52aXJvbm1lbnQgYWxyZWFkeSBwcmVzZW50KVxuICAgIHRyeUluaXREcmFnSGFuZGxlcnMoKTtcbiAgICAvLyBBbHNvIGF0dGVtcHQgb24gRE9NIHJlYWR5XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIHRyeUluaXREcmFnSGFuZGxlcnMsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICAvLyBBcyBhIGxhc3QgcmVzb3J0LCBwb2xsIGZvciBlbnZpcm9ubWVudCBmb3IgYSBzaG9ydCBwZXJpb2RcbiAgICBsZXQgZHJhZ0VudlBvbGxzID0gMDtcbiAgICBjb25zdCBkcmFnRW52UG9sbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGlmIChkcmFnSW5pdERvbmUpIHsgd2luZG93LmNsZWFySW50ZXJ2YWwoZHJhZ0VudlBvbGwpOyByZXR1cm47IH1cbiAgICAgICAgdHJ5SW5pdERyYWdIYW5kbGVycygpO1xuICAgICAgICBpZiAoKytkcmFnRW52UG9sbHMgPiAxMDApIHsgd2luZG93LmNsZWFySW50ZXJ2YWwoZHJhZ0VudlBvbGwpOyB9XG4gICAgfSwgNTApO1xufVxuXG5mdW5jdGlvbiBzdXBwcmVzc0V2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIC8vIFN1cHByZXNzIGNsaWNrIGV2ZW50cyB3aGlsZSByZXNpemluZyBvciBkcmFnZ2luZy5cbiAgICBpZiAoZHJhZ2dpbmcgfHwgcmVzaXppbmcpIHtcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbn1cblxuLy8gVXNlIGNvbnN0YW50cyB0byBhdm9pZCBjb21wYXJpbmcgc3RyaW5ncyBtdWx0aXBsZSB0aW1lcy5cbmNvbnN0IE1vdXNlRG93biA9IDA7XG5jb25zdCBNb3VzZVVwICAgPSAxO1xuY29uc3QgTW91c2VNb3ZlID0gMjtcblxuZnVuY3Rpb24gdXBkYXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgLy8gV2luZG93cyBzdXBwcmVzc2VzIG1vdXNlIGV2ZW50cyBhdCB0aGUgZW5kIG9mIGRyYWdnaW5nIG9yIHJlc2l6aW5nLFxuICAgIC8vIHNvIHdlIG5lZWQgdG8gYmUgc21hcnQgYW5kIHN5bnRoZXNpemUgYnV0dG9uIGV2ZW50cy5cblxuICAgIGxldCBldmVudFR5cGU6IG51bWJlciwgZXZlbnRCdXR0b25zID0gZXZlbnQuYnV0dG9ucztcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnbW91c2Vkb3duJzpcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IE1vdXNlRG93bjtcbiAgICAgICAgICAgIGlmICghYnV0dG9uc1RyYWNrZWQpIHsgZXZlbnRCdXR0b25zID0gYnV0dG9ucyB8ICgxIDw8IGV2ZW50LmJ1dHRvbik7IH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtb3VzZXVwJzpcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IE1vdXNlVXA7XG4gICAgICAgICAgICBpZiAoIWJ1dHRvbnNUcmFja2VkKSB7IGV2ZW50QnV0dG9ucyA9IGJ1dHRvbnMgJiB+KDEgPDwgZXZlbnQuYnV0dG9uKTsgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBldmVudFR5cGUgPSBNb3VzZU1vdmU7XG4gICAgICAgICAgICBpZiAoIWJ1dHRvbnNUcmFja2VkKSB7IGV2ZW50QnV0dG9ucyA9IGJ1dHRvbnM7IH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxldCByZWxlYXNlZCA9IGJ1dHRvbnMgJiB+ZXZlbnRCdXR0b25zO1xuICAgIGxldCBwcmVzc2VkID0gZXZlbnRCdXR0b25zICYgfmJ1dHRvbnM7XG5cbiAgICBidXR0b25zID0gZXZlbnRCdXR0b25zO1xuXG4gICAgLy8gU3ludGhlc2l6ZSBhIHJlbGVhc2UtcHJlc3Mgc2VxdWVuY2UgaWYgd2UgZGV0ZWN0IGEgcHJlc3Mgb2YgYW4gYWxyZWFkeSBwcmVzc2VkIGJ1dHRvbi5cbiAgICBpZiAoZXZlbnRUeXBlID09PSBNb3VzZURvd24gJiYgIShwcmVzc2VkICYgZXZlbnQuYnV0dG9uKSkge1xuICAgICAgICByZWxlYXNlZCB8PSAoMSA8PCBldmVudC5idXR0b24pO1xuICAgICAgICBwcmVzc2VkIHw9ICgxIDw8IGV2ZW50LmJ1dHRvbik7XG4gICAgfVxuXG4gICAgLy8gU3VwcHJlc3MgYWxsIGJ1dHRvbiBldmVudHMgZHVyaW5nIGRyYWdnaW5nIGFuZCByZXNpemluZyxcbiAgICAvLyB1bmxlc3MgdGhpcyBpcyBhIG1vdXNldXAgZXZlbnQgdGhhdCBpcyBlbmRpbmcgYSBkcmFnIGFjdGlvbi5cbiAgICBpZiAoXG4gICAgICAgIGV2ZW50VHlwZSAhPT0gTW91c2VNb3ZlIC8vIEZhc3QgcGF0aCBmb3IgbW91c2Vtb3ZlXG4gICAgICAgICYmIHJlc2l6aW5nXG4gICAgICAgIHx8IChcbiAgICAgICAgICAgIGRyYWdnaW5nXG4gICAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAgICAgZXZlbnRUeXBlID09PSBNb3VzZURvd25cbiAgICAgICAgICAgICAgICB8fCBldmVudC5idXR0b24gIT09IDBcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICkge1xuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHJlbGVhc2VzXG4gICAgaWYgKHJlbGVhc2VkICYgMSkgeyBwcmltYXJ5VXAoZXZlbnQpOyB9XG4gICAgLy8gSGFuZGxlIHByZXNzZXNcbiAgICBpZiAocHJlc3NlZCAmIDEpIHsgcHJpbWFyeURvd24oZXZlbnQpOyB9XG5cbiAgICAvLyBIYW5kbGUgbW91c2Vtb3ZlXG4gICAgaWYgKGV2ZW50VHlwZSA9PT0gTW91c2VNb3ZlKSB7IG9uTW91c2VNb3ZlKGV2ZW50KTsgfTtcbn1cblxuZnVuY3Rpb24gcHJpbWFyeURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBSZXNldCByZWFkaW5lc3Mgc3RhdGUuXG4gICAgY2FuRHJhZyA9IGZhbHNlO1xuICAgIGNhblJlc2l6ZSA9IGZhbHNlO1xuXG4gICAgLy8gSWdub3JlIHJlcGVhdGVkIGNsaWNrcyBvbiBtYWNPUyBhbmQgTGludXguXG4gICAgaWYgKCFJc1dpbmRvd3MoKSkge1xuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21vdXNlZG93bicgJiYgZXZlbnQuYnV0dG9uID09PSAwICYmIGV2ZW50LmRldGFpbCAhPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc2l6ZUVkZ2UpIHtcbiAgICAgICAgLy8gUmVhZHkgdG8gcmVzaXplIGlmIHRoZSBwcmltYXJ5IGJ1dHRvbiB3YXMgcHJlc3NlZCBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gICAgICAgIGNhblJlc2l6ZSA9IHRydWU7XG4gICAgICAgIC8vIERvIG5vdCBzdGFydCBkcmFnIG9wZXJhdGlvbnMgd2hlbiBvbiByZXNpemUgZWRnZXMuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZXRyaWV2ZSB0YXJnZXQgZWxlbWVudFxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50VGFyZ2V0KGV2ZW50KTtcblxuICAgIC8vIFJlYWR5IHRvIGRyYWcgaWYgdGhlIHByaW1hcnkgYnV0dG9uIHdhcyBwcmVzc2VkIGZvciB0aGUgZmlyc3QgdGltZSBvbiBhIGRyYWdnYWJsZSBlbGVtZW50LlxuICAgIC8vIElnbm9yZSBjbGlja3Mgb24gdGhlIHNjcm9sbGJhci5cbiAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRhcmdldCk7XG4gICAgY2FuRHJhZyA9IChcbiAgICAgICAgc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcIi0td2FpbHMtZHJhZ2dhYmxlXCIpLnRyaW0oKSA9PT0gXCJkcmFnXCJcbiAgICAgICAgJiYgKFxuICAgICAgICAgICAgZXZlbnQub2Zmc2V0WCAtIHBhcnNlRmxvYXQoc3R5bGUucGFkZGluZ0xlZnQpIDwgdGFyZ2V0LmNsaWVudFdpZHRoXG4gICAgICAgICAgICAmJiBldmVudC5vZmZzZXRZIC0gcGFyc2VGbG9hdChzdHlsZS5wYWRkaW5nVG9wKSA8IHRhcmdldC5jbGllbnRIZWlnaHRcbiAgICAgICAgKVxuICAgICk7XG59XG5cbmZ1bmN0aW9uIHByaW1hcnlVcChldmVudDogTW91c2VFdmVudCkge1xuICAgIC8vIFN0b3AgZHJhZ2dpbmcgYW5kIHJlc2l6aW5nLlxuICAgIGNhbkRyYWcgPSBmYWxzZTtcbiAgICBkcmFnZ2luZyA9IGZhbHNlO1xuICAgIGNhblJlc2l6ZSA9IGZhbHNlO1xuICAgIHJlc2l6aW5nID0gZmFsc2U7XG59XG5cbmNvbnN0IGN1cnNvckZvckVkZ2UgPSBPYmplY3QuZnJlZXplKHtcbiAgICBcInNlLXJlc2l6ZVwiOiBcIm53c2UtcmVzaXplXCIsXG4gICAgXCJzdy1yZXNpemVcIjogXCJuZXN3LXJlc2l6ZVwiLFxuICAgIFwibnctcmVzaXplXCI6IFwibndzZS1yZXNpemVcIixcbiAgICBcIm5lLXJlc2l6ZVwiOiBcIm5lc3ctcmVzaXplXCIsXG4gICAgXCJ3LXJlc2l6ZVwiOiBcImV3LXJlc2l6ZVwiLFxuICAgIFwibi1yZXNpemVcIjogXCJucy1yZXNpemVcIixcbiAgICBcInMtcmVzaXplXCI6IFwibnMtcmVzaXplXCIsXG4gICAgXCJlLXJlc2l6ZVwiOiBcImV3LXJlc2l6ZVwiLFxufSlcblxuZnVuY3Rpb24gc2V0UmVzaXplKGVkZ2U/OiBrZXlvZiB0eXBlb2YgY3Vyc29yRm9yRWRnZSk6IHZvaWQge1xuICAgIGlmIChlZGdlKSB7XG4gICAgICAgIGlmICghcmVzaXplRWRnZSkgeyBkZWZhdWx0Q3Vyc29yID0gZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3I7IH1cbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSBjdXJzb3JGb3JFZGdlW2VkZ2VdO1xuICAgIH0gZWxzZSBpZiAoIWVkZ2UgJiYgcmVzaXplRWRnZSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IGRlZmF1bHRDdXJzb3I7XG4gICAgfVxuXG4gICAgcmVzaXplRWRnZSA9IGVkZ2UgfHwgXCJcIjtcbn1cblxuZnVuY3Rpb24gb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoY2FuUmVzaXplICYmIHJlc2l6ZUVkZ2UpIHtcbiAgICAgICAgLy8gU3RhcnQgcmVzaXppbmcuXG4gICAgICAgIHJlc2l6aW5nID0gdHJ1ZTtcbiAgICAgICAgaW52b2tlKFwid2FpbHM6cmVzaXplOlwiICsgcmVzaXplRWRnZSk7XG4gICAgfSBlbHNlIGlmIChjYW5EcmFnKSB7XG4gICAgICAgIC8vIFN0YXJ0IGRyYWdnaW5nLlxuICAgICAgICBkcmFnZ2luZyA9IHRydWU7XG4gICAgICAgIGludm9rZShcIndhaWxzOmRyYWdcIik7XG4gICAgfVxuXG4gICAgaWYgKGRyYWdnaW5nIHx8IHJlc2l6aW5nKSB7XG4gICAgICAgIC8vIEVpdGhlciBkcmFnIG9yIHJlc2l6ZSBpcyBvbmdvaW5nLFxuICAgICAgICAvLyByZXNldCByZWFkaW5lc3MgYW5kIHN0b3AgcHJvY2Vzc2luZy5cbiAgICAgICAgY2FuRHJhZyA9IGNhblJlc2l6ZSA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFyZXNpemFibGUgfHwgKCFJc1dpbmRvd3MoKSAmJiAhKElzTGludXgoKSAmJiBHZXRGbGFnKFwiZnJhbWVsZXNzXCIpKSkpIHtcbiAgICAgICAgaWYgKHJlc2l6ZUVkZ2UpIHsgc2V0UmVzaXplKCk7IH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc2l6ZUhhbmRsZUhlaWdodCA9IEdldEZsYWcoXCJzeXN0ZW0ucmVzaXplSGFuZGxlSGVpZ2h0XCIpIHx8IDU7XG4gICAgY29uc3QgcmVzaXplSGFuZGxlV2lkdGggPSBHZXRGbGFnKFwic3lzdGVtLnJlc2l6ZUhhbmRsZVdpZHRoXCIpIHx8IDU7XG5cbiAgICAvLyBFeHRyYSBwaXhlbHMgZm9yIHRoZSBjb3JuZXIgYXJlYXMuXG4gICAgY29uc3QgY29ybmVyRXh0cmEgPSBHZXRGbGFnKFwicmVzaXplQ29ybmVyRXh0cmFcIikgfHwgMTA7XG5cbiAgICAvLyBXaGVuIGEgc2Nyb2xsYmFyIGlzIHByZXNlbnQgYXQgdGhlIHdpbmRvdyBlZGdlIGl0IGNvbnN1bWVzIG1vdXNlIGV2ZW50cyBpbiB0aGF0IHN0cmlwLlxuICAgIC8vIFNoaWZ0IHRoZSBlZmZlY3RpdmUgY29udGVudCBlZGdlIGlud2FyZCBzbyB0aGUgcmVzaXplIHpvbmUgc2l0cyBqdXN0IGJlZm9yZSB0aGUgc2Nyb2xsYmFyLlxuICAgIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gTWF0aC5tYXgoMCwgd2luZG93LmlubmVyV2lkdGggLSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpO1xuICAgIGNvbnN0IHNjcm9sbGJhckhlaWdodCA9IE1hdGgubWF4KDAsIHdpbmRvdy5pbm5lckhlaWdodCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpO1xuICAgIGNvbnN0IHJpZ2h0Q29udGVudEVkZ2UgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIHNjcm9sbGJhcldpZHRoO1xuICAgIGNvbnN0IGJvdHRvbUNvbnRlbnRFZGdlID0gd2luZG93LmlubmVySGVpZ2h0IC0gc2Nyb2xsYmFySGVpZ2h0O1xuXG4gICAgY29uc3QgcmlnaHRCb3JkZXIgPSBldmVudC5jbGllbnRYIDwgcmlnaHRDb250ZW50RWRnZSAmJiAocmlnaHRDb250ZW50RWRnZSAtIGV2ZW50LmNsaWVudFgpIDwgcmVzaXplSGFuZGxlV2lkdGg7XG4gICAgY29uc3QgbGVmdEJvcmRlciA9IGV2ZW50LmNsaWVudFggPCByZXNpemVIYW5kbGVXaWR0aDtcbiAgICBjb25zdCB0b3BCb3JkZXIgPSBldmVudC5jbGllbnRZIDwgcmVzaXplSGFuZGxlSGVpZ2h0O1xuICAgIGNvbnN0IGJvdHRvbUJvcmRlciA9IGV2ZW50LmNsaWVudFkgPCBib3R0b21Db250ZW50RWRnZSAmJiAoYm90dG9tQ29udGVudEVkZ2UgLSBldmVudC5jbGllbnRZKSA8IHJlc2l6ZUhhbmRsZUhlaWdodDtcblxuICAgIC8vIEFkanVzdCBmb3IgY29ybmVyIGFyZWFzLlxuICAgIGNvbnN0IHJpZ2h0Q29ybmVyID0gZXZlbnQuY2xpZW50WCA8IHJpZ2h0Q29udGVudEVkZ2UgJiYgKHJpZ2h0Q29udGVudEVkZ2UgLSBldmVudC5jbGllbnRYKSA8IChyZXNpemVIYW5kbGVXaWR0aCArIGNvcm5lckV4dHJhKTtcbiAgICBjb25zdCBsZWZ0Q29ybmVyID0gZXZlbnQuY2xpZW50WCA8IChyZXNpemVIYW5kbGVXaWR0aCArIGNvcm5lckV4dHJhKTtcbiAgICBjb25zdCB0b3BDb3JuZXIgPSBldmVudC5jbGllbnRZIDwgKHJlc2l6ZUhhbmRsZUhlaWdodCArIGNvcm5lckV4dHJhKTtcbiAgICBjb25zdCBib3R0b21Db3JuZXIgPSBldmVudC5jbGllbnRZIDwgYm90dG9tQ29udGVudEVkZ2UgJiYgKGJvdHRvbUNvbnRlbnRFZGdlIC0gZXZlbnQuY2xpZW50WSkgPCAocmVzaXplSGFuZGxlSGVpZ2h0ICsgY29ybmVyRXh0cmEpO1xuXG4gICAgaWYgKCFsZWZ0Q29ybmVyICYmICF0b3BDb3JuZXIgJiYgIWJvdHRvbUNvcm5lciAmJiAhcmlnaHRDb3JuZXIpIHtcbiAgICAgICAgLy8gT3B0aW1pc2F0aW9uOiBvdXQgb2YgYWxsIGNvcm5lciBhcmVhcyBpbXBsaWVzIG91dCBvZiBib3JkZXJzLlxuICAgICAgICBzZXRSZXNpemUoKTtcbiAgICB9XG4gICAgLy8gRGV0ZWN0IGNvcm5lcnMuXG4gICAgZWxzZSBpZiAocmlnaHRDb3JuZXIgJiYgYm90dG9tQ29ybmVyKSBzZXRSZXNpemUoXCJzZS1yZXNpemVcIik7XG4gICAgZWxzZSBpZiAobGVmdENvcm5lciAmJiBib3R0b21Db3JuZXIpIHNldFJlc2l6ZShcInN3LXJlc2l6ZVwiKTtcbiAgICBlbHNlIGlmIChsZWZ0Q29ybmVyICYmIHRvcENvcm5lcikgc2V0UmVzaXplKFwibnctcmVzaXplXCIpO1xuICAgIGVsc2UgaWYgKHRvcENvcm5lciAmJiByaWdodENvcm5lcikgc2V0UmVzaXplKFwibmUtcmVzaXplXCIpO1xuICAgIC8vIERldGVjdCBib3JkZXJzLlxuICAgIGVsc2UgaWYgKGxlZnRCb3JkZXIpIHNldFJlc2l6ZShcInctcmVzaXplXCIpO1xuICAgIGVsc2UgaWYgKHRvcEJvcmRlcikgc2V0UmVzaXplKFwibi1yZXNpemVcIik7XG4gICAgZWxzZSBpZiAoYm90dG9tQm9yZGVyKSBzZXRSZXNpemUoXCJzLXJlc2l6ZVwiKTtcbiAgICBlbHNlIGlmIChyaWdodEJvcmRlcikgc2V0UmVzaXplKFwiZS1yZXNpemVcIik7XG4gICAgLy8gT3V0IG9mIGJvcmRlciBhcmVhLlxuICAgIGVsc2Ugc2V0UmVzaXplKCk7XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuY29uc3QgY2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuQXBwbGljYXRpb24pO1xuXG5jb25zdCBIaWRlTWV0aG9kID0gMDtcbmNvbnN0IFNob3dNZXRob2QgPSAxO1xuY29uc3QgUXVpdE1ldGhvZCA9IDI7XG5cbi8qKlxuICogSGlkZXMgYSBjZXJ0YWluIG1ldGhvZCBieSBjYWxsaW5nIHRoZSBIaWRlTWV0aG9kIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSGlkZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gY2FsbChIaWRlTWV0aG9kKTtcbn1cblxuLyoqXG4gKiBDYWxscyB0aGUgU2hvd01ldGhvZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gU2hvdygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gY2FsbChTaG93TWV0aG9kKTtcbn1cblxuLyoqXG4gKiBDYWxscyB0aGUgUXVpdE1ldGhvZCB0byB0ZXJtaW5hdGUgdGhlIHByb2dyYW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBRdWl0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBjYWxsKFF1aXRNZXRob2QpO1xufVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBDYW5jZWxsYWJsZVByb21pc2UsIHR5cGUgQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVycyB9IGZyb20gXCIuL2NhbmNlbGxhYmxlLmpzXCI7XG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gXCIuL25hbm9pZC5qc1wiO1xuXG4vLyBTZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xufVxuXG50eXBlIFByb21pc2VSZXNvbHZlcnMgPSBPbWl0PENhbmNlbGxhYmxlUHJvbWlzZVdpdGhSZXNvbHZlcnM8YW55PiwgXCJwcm9taXNlXCIgfCBcIm9uY2FuY2VsbGVkXCI+XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkNhbGwpO1xuY29uc3QgY2FuY2VsQ2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuQ2FuY2VsQ2FsbCk7XG5jb25zdCBjYWxsUmVzcG9uc2VzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2VSZXNvbHZlcnM+KCk7XG5cbmNvbnN0IENhbGxCaW5kaW5nID0gMDtcbmNvbnN0IENhbmNlbE1ldGhvZCA9IDBcblxuLyoqXG4gKiBIb2xkcyBhbGwgcmVxdWlyZWQgaW5mb3JtYXRpb24gZm9yIGEgYmluZGluZyBjYWxsLlxuICogTWF5IHByb3ZpZGUgZWl0aGVyIGEgbWV0aG9kIElEIG9yIGEgbWV0aG9kIG5hbWUsIGJ1dCBub3QgYm90aC5cbiAqL1xuZXhwb3J0IHR5cGUgQ2FsbE9wdGlvbnMgPSB7XG4gICAgLyoqIFRoZSBudW1lcmljIElEIG9mIHRoZSBib3VuZCBtZXRob2QgdG8gY2FsbC4gKi9cbiAgICBtZXRob2RJRDogbnVtYmVyO1xuICAgIC8qKiBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGJvdW5kIG1ldGhvZCB0byBjYWxsLiAqL1xuICAgIG1ldGhvZE5hbWU/OiBuZXZlcjtcbiAgICAvKiogQXJndW1lbnRzIHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBib3VuZCBtZXRob2QuICovXG4gICAgYXJnczogYW55W107XG59IHwge1xuICAgIC8qKiBUaGUgbnVtZXJpYyBJRCBvZiB0aGUgYm91bmQgbWV0aG9kIHRvIGNhbGwuICovXG4gICAgbWV0aG9kSUQ/OiBuZXZlcjtcbiAgICAvKiogVGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBib3VuZCBtZXRob2QgdG8gY2FsbC4gKi9cbiAgICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gICAgLyoqIEFyZ3VtZW50cyB0byBiZSBwYXNzZWQgaW50byB0aGUgYm91bmQgbWV0aG9kLiAqL1xuICAgIGFyZ3M6IGFueVtdO1xufTtcblxuLy8gcnVudGltZS5qcyBuZWVkcyB0byB1c2UgUnVudGltZUVycm9yIGludGVybmFsbHkgdG8gcHJvcGVybHkgcGFyc2UgYW5kIHJldHVyblxuLy8gZXJyb3JzIGZvciBiaW5kaW5nIGNhbGxzLCBzbyBpdCBoYWQgdG8gbW92ZSB0aGVyZS4gRXhwb3J0aW5nIGhlcmUgYWdhaW4gdG9cbi8vIGtlZXAgZnJvbSBicmVha2luZyB0aGUgcHVibGljIENhbGwgaW50ZXJmYWNlLlxuZXhwb3J0IHsgUnVudGltZUVycm9yIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBJRCB1c2luZyB0aGUgbmFub2lkIGxpYnJhcnkuXG4gKlxuICogQHJldHVybnMgQSB1bmlxdWUgSUQgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgY2FsbFJlc3BvbnNlcyBzZXQuXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlSUQoKTogc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGRvIHtcbiAgICAgICAgcmVzdWx0ID0gbmFub2lkKCk7XG4gICAgfSB3aGlsZSAoY2FsbFJlc3BvbnNlcy5oYXMocmVzdWx0KSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDYWxsIGEgYm91bmQgbWV0aG9kIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gY2FsbCBvcHRpb25zLlxuICpcbiAqIEluIGNhc2Ugb2YgZmFpbHVyZSwgdGhlIHJldHVybmVkIHByb21pc2Ugd2lsbCByZWplY3Qgd2l0aCBhbiBleGNlcHRpb25cbiAqIGFtb25nIFJlZmVyZW5jZUVycm9yICh1bmtub3duIG1ldGhvZCksIFR5cGVFcnJvciAod3JvbmcgYXJndW1lbnQgY291bnQgb3IgdHlwZSksXG4gKiB7QGxpbmsgUnVudGltZUVycm9yfSAobWV0aG9kIHJldHVybmVkIGFuIGVycm9yKSwgb3Igb3RoZXIgKG5ldHdvcmsgb3IgaW50ZXJuYWwgZXJyb3JzKS5cbiAqIFRoZSBleGNlcHRpb24gbWlnaHQgaGF2ZSBhIFwiY2F1c2VcIiBmaWVsZCB3aXRoIHRoZSB2YWx1ZSByZXR1cm5lZFxuICogYnkgdGhlIGFwcGxpY2F0aW9uLSBvciBzZXJ2aWNlLWxldmVsIGVycm9yIG1hcnNoYWxpbmcgZnVuY3Rpb25zLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQSBtZXRob2QgY2FsbCBkZXNjcmlwdG9yLlxuICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgY2FsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENhbGwob3B0aW9uczogQ2FsbE9wdGlvbnMpOiBDYW5jZWxsYWJsZVByb21pc2U8YW55PiB7XG4gICAgY29uc3QgaWQgPSBnZW5lcmF0ZUlEKCk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBDYW5jZWxsYWJsZVByb21pc2Uud2l0aFJlc29sdmVyczxhbnk+KCk7XG4gICAgY2FsbFJlc3BvbnNlcy5zZXQoaWQsIHsgcmVzb2x2ZTogcmVzdWx0LnJlc29sdmUsIHJlamVjdDogcmVzdWx0LnJlamVjdCB9KTtcblxuICAgIGNvbnN0IHJlcXVlc3QgPSBjYWxsKENhbGxCaW5kaW5nLCBPYmplY3QuYXNzaWduKHsgXCJjYWxsLWlkXCI6IGlkIH0sIG9wdGlvbnMpKTtcbiAgICBsZXQgcnVubmluZyA9IHRydWU7XG5cbiAgICByZXF1ZXN0LnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBydW5uaW5nID0gZmFsc2U7XG4gICAgICAgIGNhbGxSZXNwb25zZXMuZGVsZXRlKGlkKTtcbiAgICAgICAgcmVzdWx0LnJlc29sdmUocmVzKTtcbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgY2FsbFJlc3BvbnNlcy5kZWxldGUoaWQpO1xuICAgICAgICByZXN1bHQucmVqZWN0KGVycik7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjYW5jZWwgPSAoKSA9PiB7XG4gICAgICAgIGNhbGxSZXNwb25zZXMuZGVsZXRlKGlkKTtcbiAgICAgICAgcmV0dXJuIGNhbmNlbENhbGwoQ2FuY2VsTWV0aG9kLCB7XCJjYWxsLWlkXCI6IGlkfSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHdoaWxlIHJlcXVlc3RpbmcgYmluZGluZyBjYWxsIGNhbmNlbGxhdGlvbjpcIiwgZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHJlc3VsdC5vbmNhbmNlbGxlZCA9ICgpID0+IHtcbiAgICAgICAgaWYgKHJ1bm5pbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBjYW5jZWwoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LnRoZW4oY2FuY2VsKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0LnByb21pc2U7XG59XG5cbi8qKlxuICogQ2FsbHMgYSBib3VuZCBtZXRob2QgYnkgbmFtZSB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLlxuICogU2VlIHtAbGluayBDYWxsfSBmb3IgZGV0YWlscy5cbiAqXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QgaW4gdGhlIGZvcm1hdCAncGFja2FnZS5zdHJ1Y3QubWV0aG9kJy5cbiAqIEBwYXJhbSBhcmdzIC0gVGhlIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBtZXRob2QgY2FsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJ5TmFtZShtZXRob2ROYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogQ2FuY2VsbGFibGVQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBDYWxsKHsgbWV0aG9kTmFtZSwgYXJncyB9KTtcbn1cblxuLyoqXG4gKiBDYWxscyBhIG1ldGhvZCBieSBpdHMgbnVtZXJpYyBJRCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLlxuICogU2VlIHtAbGluayBDYWxsfSBmb3IgZGV0YWlscy5cbiAqXG4gKiBAcGFyYW0gbWV0aG9kSUQgLSBUaGUgSUQgb2YgdGhlIG1ldGhvZCB0byBjYWxsLlxuICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAqIEByZXR1cm4gVGhlIHJlc3VsdCBvZiB0aGUgbWV0aG9kIGNhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBCeUlEKG1ldGhvZElEOiBudW1iZXIsIC4uLmFyZ3M6IGFueVtdKTogQ2FuY2VsbGFibGVQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBDYWxsKHsgbWV0aG9kSUQsIGFyZ3MgfSk7XG59XG4iLCAiLy8gU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vaW5zcGVjdC1qcy9pcy1jYWxsYWJsZVxuXG4vLyBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbi8vXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTUgSm9yZGFuIEhhcmJhbmRcbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4vLyBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbi8vIFNPRlRXQVJFLlxuXG52YXIgZm5Ub1N0ciA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztcbnZhciByZWZsZWN0QXBwbHk6IHR5cGVvZiBSZWZsZWN0LmFwcGx5IHwgZmFsc2UgfCBudWxsID0gdHlwZW9mIFJlZmxlY3QgPT09ICdvYmplY3QnICYmIFJlZmxlY3QgIT09IG51bGwgJiYgUmVmbGVjdC5hcHBseTtcbnZhciBiYWRBcnJheUxpa2U6IGFueTtcbnZhciBpc0NhbGxhYmxlTWFya2VyOiBhbnk7XG5pZiAodHlwZW9mIHJlZmxlY3RBcHBseSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnR5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgYmFkQXJyYXlMaWtlID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnbGVuZ3RoJywge1xuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgaXNDYWxsYWJsZU1hcmtlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlzQ2FsbGFibGVNYXJrZXIgPSB7fTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgICAgICAgcmVmbGVjdEFwcGx5KGZ1bmN0aW9uICgpIHsgdGhyb3cgNDI7IH0sIG51bGwsIGJhZEFycmF5TGlrZSk7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgICBpZiAoXyAhPT0gaXNDYWxsYWJsZU1hcmtlcikge1xuICAgICAgICAgICAgcmVmbGVjdEFwcGx5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn0gZWxzZSB7XG4gICAgcmVmbGVjdEFwcGx5ID0gbnVsbDtcbn1cblxudmFyIGNvbnN0cnVjdG9yUmVnZXggPSAvXlxccypjbGFzc1xcYi87XG52YXIgaXNFUzZDbGFzc0ZuID0gZnVuY3Rpb24gaXNFUzZDbGFzc0Z1bmN0aW9uKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgICB2YXIgZm5TdHIgPSBmblRvU3RyLmNhbGwodmFsdWUpO1xuICAgICAgICByZXR1cm4gY29uc3RydWN0b3JSZWdleC50ZXN0KGZuU3RyKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTsgLy8gbm90IGEgZnVuY3Rpb25cbiAgICB9XG59O1xuXG52YXIgdHJ5RnVuY3Rpb25PYmplY3QgPSBmdW5jdGlvbiB0cnlGdW5jdGlvblRvU3RyKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAoaXNFUzZDbGFzc0ZuKHZhbHVlKSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgICAgZm5Ub1N0ci5jYWxsKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufTtcbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgb2JqZWN0Q2xhc3MgPSAnW29iamVjdCBPYmplY3RdJztcbnZhciBmbkNsYXNzID0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbnZhciBnZW5DbGFzcyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSc7XG52YXIgZGRhQ2xhc3MgPSAnW29iamVjdCBIVE1MQWxsQ29sbGVjdGlvbl0nOyAvLyBJRSAxMVxudmFyIGRkYUNsYXNzMiA9ICdbb2JqZWN0IEhUTUwgZG9jdW1lbnQuYWxsIGNsYXNzXSc7XG52YXIgZGRhQ2xhc3MzID0gJ1tvYmplY3QgSFRNTENvbGxlY3Rpb25dJzsgLy8gSUUgOS0xMFxudmFyIGhhc1RvU3RyaW5nVGFnID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiAhIVN5bWJvbC50b1N0cmluZ1RhZzsgLy8gYmV0dGVyOiB1c2UgYGhhcy10b3N0cmluZ3RhZ2BcblxudmFyIGlzSUU2OCA9ICEoMCBpbiBbLF0pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNwYXJzZS1hcnJheXMsIGNvbW1hLXNwYWNpbmdcblxudmFyIGlzRERBOiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbiA9IGZ1bmN0aW9uIGlzRG9jdW1lbnREb3RBbGwoKSB7IHJldHVybiBmYWxzZTsgfTtcbmlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICdvYmplY3QnKSB7XG4gICAgLy8gRmlyZWZveCAzIGNhbm9uaWNhbGl6ZXMgRERBIHRvIHVuZGVmaW5lZCB3aGVuIGl0J3Mgbm90IGFjY2Vzc2VkIGRpcmVjdGx5XG4gICAgdmFyIGFsbCA9IGRvY3VtZW50LmFsbDtcbiAgICBpZiAodG9TdHIuY2FsbChhbGwpID09PSB0b1N0ci5jYWxsKGRvY3VtZW50LmFsbCkpIHtcbiAgICAgICAgaXNEREEgPSBmdW5jdGlvbiBpc0RvY3VtZW50RG90QWxsKHZhbHVlKSB7XG4gICAgICAgICAgICAvKiBnbG9iYWxzIGRvY3VtZW50OiBmYWxzZSAqL1xuICAgICAgICAgICAgLy8gaW4gSUUgNi04LCB0eXBlb2YgZG9jdW1lbnQuYWxsIGlzIFwib2JqZWN0XCIgYW5kIGl0J3MgdHJ1dGh5XG4gICAgICAgICAgICBpZiAoKGlzSUU2OCB8fCAhdmFsdWUpICYmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0ciA9IHRvU3RyLmNhbGwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyID09PSBkZGFDbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RyID09PSBkZGFDbGFzczJcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0ciA9PT0gZGRhQ2xhc3MzIC8vIG9wZXJhIDEyLjE2XG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBzdHIgPT09IG9iamVjdENsYXNzIC8vIElFIDYtOFxuICAgICAgICAgICAgICAgICAgICApICYmIHZhbHVlKCcnKSA9PSBudWxsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGVxZXFlcVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgLyoqLyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0NhbGxhYmxlUmVmQXBwbHk8VD4odmFsdWU6IFQgfCB1bmtub3duKTogdmFsdWUgaXMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkgIHtcbiAgICBpZiAoaXNEREEodmFsdWUpKSB7IHJldHVybiB0cnVlOyB9XG4gICAgaWYgKCF2YWx1ZSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgdHJ5IHtcbiAgICAgICAgKHJlZmxlY3RBcHBseSBhcyBhbnkpKHZhbHVlLCBudWxsLCBiYWRBcnJheUxpa2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUgIT09IGlzQ2FsbGFibGVNYXJrZXIpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgfVxuICAgIHJldHVybiAhaXNFUzZDbGFzc0ZuKHZhbHVlKSAmJiB0cnlGdW5jdGlvbk9iamVjdCh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGlzQ2FsbGFibGVOb1JlZkFwcGx5PFQ+KHZhbHVlOiBUIHwgdW5rbm93bik6IHZhbHVlIGlzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55IHtcbiAgICBpZiAoaXNEREEodmFsdWUpKSB7IHJldHVybiB0cnVlOyB9XG4gICAgaWYgKCF2YWx1ZSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgaWYgKGhhc1RvU3RyaW5nVGFnKSB7IHJldHVybiB0cnlGdW5jdGlvbk9iamVjdCh2YWx1ZSk7IH1cbiAgICBpZiAoaXNFUzZDbGFzc0ZuKHZhbHVlKSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICB2YXIgc3RyQ2xhc3MgPSB0b1N0ci5jYWxsKHZhbHVlKTtcbiAgICBpZiAoc3RyQ2xhc3MgIT09IGZuQ2xhc3MgJiYgc3RyQ2xhc3MgIT09IGdlbkNsYXNzICYmICEoL15cXFtvYmplY3QgSFRNTC8pLnRlc3Qoc3RyQ2xhc3MpKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIHJldHVybiB0cnlGdW5jdGlvbk9iamVjdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCByZWZsZWN0QXBwbHkgPyBpc0NhbGxhYmxlUmVmQXBwbHkgOiBpc0NhbGxhYmxlTm9SZWZBcHBseTtcbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IGlzQ2FsbGFibGUgZnJvbSBcIi4vY2FsbGFibGUuanNcIjtcblxuLyoqXG4gKiBFeGNlcHRpb24gY2xhc3MgdGhhdCB3aWxsIGJlIHVzZWQgYXMgcmVqZWN0aW9uIHJlYXNvblxuICogaW4gY2FzZSBhIHtAbGluayBDYW5jZWxsYWJsZVByb21pc2V9IGlzIGNhbmNlbGxlZCBzdWNjZXNzZnVsbHkuXG4gKlxuICogVGhlIHZhbHVlIG9mIHRoZSB7QGxpbmsgbmFtZX0gcHJvcGVydHkgaXMgdGhlIHN0cmluZyBgXCJDYW5jZWxFcnJvclwiYC5cbiAqIFRoZSB2YWx1ZSBvZiB0aGUge0BsaW5rIGNhdXNlfSBwcm9wZXJ0eSBpcyB0aGUgY2F1c2UgcGFzc2VkIHRvIHRoZSBjYW5jZWwgbWV0aG9kLCBpZiBhbnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDYW5jZWxFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGBDYW5jZWxFcnJvcmAgaW5zdGFuY2UuXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgdG8gYmUgZm9yd2FyZGVkIHRvIHRoZSBFcnJvciBjb25zdHJ1Y3Rvci5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nLCBvcHRpb25zPzogRXJyb3JPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UsIG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIkNhbmNlbEVycm9yXCI7XG4gICAgfVxufVxuXG4vKipcbiAqIEV4Y2VwdGlvbiBjbGFzcyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvblxuICogaW4gY2FzZSBhIHtAbGluayBDYW5jZWxsYWJsZVByb21pc2V9IHJlamVjdHMgYWZ0ZXIgYmVpbmcgY2FuY2VsbGVkLFxuICogb3Igd2hlbiB0aGUgYG9uY2FuY2VsbGVkYCBjYWxsYmFjayB0aHJvd3Mgb3IgcmVqZWN0cy5cbiAqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIHtAbGluayBuYW1lfSBwcm9wZXJ0eSBpcyB0aGUgc3RyaW5nIGBcIkNhbmNlbGxlZFJlamVjdGlvbkVycm9yXCJgLlxuICogVGhlIHZhbHVlIG9mIHRoZSB7QGxpbmsgY2F1c2V9IHByb3BlcnR5IGlzIHRoZSByZWFzb24gdGhlIHByb21pc2UgcmVqZWN0ZWQgd2l0aC5cbiAqXG4gKiBCZWNhdXNlIHRoZSBvcmlnaW5hbCBwcm9taXNlIHdhcyBjYW5jZWxsZWQsXG4gKiBhIHdyYXBwZXIgcHJvbWlzZSB3aWxsIGJlIHBhc3NlZCB0byB0aGUgdW5oYW5kbGVkIHJlamVjdGlvbiBsaXN0ZW5lciBpbnN0ZWFkLlxuICogVGhlIHtAbGluayBwcm9taXNlfSBwcm9wZXJ0eSBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgcHJvbWlzZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENhbmNlbGxlZFJlamVjdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIC8qKlxuICAgICAqIEhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBwcm9taXNlIHRoYXQgd2FzIGNhbmNlbGxlZCBhbmQgdGhlbiByZWplY3RlZC5cbiAgICAgKi9cbiAgICBwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj47XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcmAgaW5zdGFuY2UuXG4gICAgICogQHBhcmFtIHByb21pc2UgLSBUaGUgcHJvbWlzZSB0aGF0IGNhdXNlZCB0aGUgZXJyb3Igb3JpZ2luYWxseS5cbiAgICAgKiBAcGFyYW0gcmVhc29uIC0gVGhlIHJlamVjdGlvbiByZWFzb24uXG4gICAgICogQHBhcmFtIGluZm8gLSBBbiBvcHRpb25hbCBpbmZvcm1hdGl2ZSBtZXNzYWdlIHNwZWNpZnlpbmcgdGhlIGNpcmN1bXN0YW5jZXMgaW4gd2hpY2ggdGhlIGVycm9yIHdhcyB0aHJvd24uXG4gICAgICogICAgICAgICAgICAgICBEZWZhdWx0cyB0byB0aGUgc3RyaW5nIGBcIlVuaGFuZGxlZCByZWplY3Rpb24gaW4gY2FuY2VsbGVkIHByb21pc2UuXCJgLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb21pc2U6IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPiwgcmVhc29uPzogYW55LCBpbmZvPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKChpbmZvID8/IFwiVW5oYW5kbGVkIHJlamVjdGlvbiBpbiBjYW5jZWxsZWQgcHJvbWlzZS5cIikgKyBcIiBSZWFzb246IFwiICsgZXJyb3JNZXNzYWdlKHJlYXNvbiksIHsgY2F1c2U6IHJlYXNvbiB9KTtcbiAgICAgICAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgICAgICAgdGhpcy5uYW1lID0gXCJDYW5jZWxsZWRSZWplY3Rpb25FcnJvclwiO1xuICAgIH1cbn1cblxudHlwZSBDYW5jZWxsYWJsZVByb21pc2VSZXNvbHZlcjxUPiA9ICh2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+IHwgQ2FuY2VsbGFibGVQcm9taXNlTGlrZTxUPikgPT4gdm9pZDtcbnR5cGUgQ2FuY2VsbGFibGVQcm9taXNlUmVqZWN0b3IgPSAocmVhc29uPzogYW55KSA9PiB2b2lkO1xudHlwZSBDYW5jZWxsYWJsZVByb21pc2VDYW5jZWxsZXIgPSAoY2F1c2U/OiBhbnkpID0+IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPjtcbnR5cGUgQ2FuY2VsbGFibGVQcm9taXNlRXhlY3V0b3I8VD4gPSAocmVzb2x2ZTogQ2FuY2VsbGFibGVQcm9taXNlUmVzb2x2ZXI8VD4sIHJlamVjdDogQ2FuY2VsbGFibGVQcm9taXNlUmVqZWN0b3IpID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuY2VsbGFibGVQcm9taXNlTGlrZTxUPiB7XG4gICAgdGhlbjxUUmVzdWx0MSA9IFQsIFRSZXN1bHQyID0gbmV2ZXI+KG9uZnVsZmlsbGVkPzogKCh2YWx1ZTogVCkgPT4gVFJlc3VsdDEgfCBQcm9taXNlTGlrZTxUUmVzdWx0MT4gfCBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFRSZXN1bHQxPikgfCB1bmRlZmluZWQgfCBudWxsLCBvbnJlamVjdGVkPzogKChyZWFzb246IGFueSkgPT4gVFJlc3VsdDIgfCBQcm9taXNlTGlrZTxUUmVzdWx0Mj4gfCBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFRSZXN1bHQyPikgfCB1bmRlZmluZWQgfCBudWxsKTogQ2FuY2VsbGFibGVQcm9taXNlTGlrZTxUUmVzdWx0MSB8IFRSZXN1bHQyPjtcbiAgICBjYW5jZWwoY2F1c2U/OiBhbnkpOiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD47XG59XG5cbi8qKlxuICogV3JhcHMgYSBjYW5jZWxsYWJsZSBwcm9taXNlIGFsb25nIHdpdGggaXRzIHJlc29sdXRpb24gbWV0aG9kcy5cbiAqIFRoZSBgb25jYW5jZWxsZWRgIGZpZWxkIHdpbGwgYmUgbnVsbCBpbml0aWFsbHkgYnV0IG1heSBiZSBzZXQgdG8gcHJvdmlkZSBhIGN1c3RvbSBjYW5jZWxsYXRpb24gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxUPiB7XG4gICAgcHJvbWlzZTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+O1xuICAgIHJlc29sdmU6IENhbmNlbGxhYmxlUHJvbWlzZVJlc29sdmVyPFQ+O1xuICAgIHJlamVjdDogQ2FuY2VsbGFibGVQcm9taXNlUmVqZWN0b3I7XG4gICAgb25jYW5jZWxsZWQ6IENhbmNlbGxhYmxlUHJvbWlzZUNhbmNlbGxlciB8IG51bGw7XG59XG5cbmludGVyZmFjZSBDYW5jZWxsYWJsZVByb21pc2VTdGF0ZSB7XG4gICAgcmVhZG9ubHkgcm9vdDogQ2FuY2VsbGFibGVQcm9taXNlU3RhdGU7XG4gICAgcmVzb2x2aW5nOiBib29sZWFuO1xuICAgIHNldHRsZWQ6IGJvb2xlYW47XG4gICAgcmVhc29uPzogQ2FuY2VsRXJyb3I7XG59XG5cbi8vIFByaXZhdGUgZmllbGQgbmFtZXMuXG5jb25zdCBiYXJyaWVyU3ltID0gU3ltYm9sKFwiYmFycmllclwiKTtcbmNvbnN0IGNhbmNlbEltcGxTeW0gPSBTeW1ib2woXCJjYW5jZWxJbXBsXCIpO1xuY29uc3Qgc3BlY2llczogdHlwZW9mIFN5bWJvbC5zcGVjaWVzID0gU3ltYm9sLnNwZWNpZXMgPz8gU3ltYm9sKFwic3BlY2llc1BvbHlmaWxsXCIpO1xuXG4vKipcbiAqIEEgcHJvbWlzZSB3aXRoIGFuIGF0dGFjaGVkIG1ldGhvZCBmb3IgY2FuY2VsbGluZyBsb25nLXJ1bm5pbmcgb3BlcmF0aW9ucyAoc2VlIHtAbGluayBDYW5jZWxsYWJsZVByb21pc2UjY2FuY2VsfSkuXG4gKiBDYW5jZWxsYXRpb24gY2FuIG9wdGlvbmFsbHkgYmUgYm91bmQgdG8gYW4ge0BsaW5rIEFib3J0U2lnbmFsfVxuICogZm9yIGJldHRlciBjb21wb3NhYmlsaXR5IChzZWUge0BsaW5rIENhbmNlbGxhYmxlUHJvbWlzZSNjYW5jZWxPbn0pLlxuICpcbiAqIENhbmNlbGxpbmcgYSBwZW5kaW5nIHByb21pc2Ugd2lsbCByZXN1bHQgaW4gYW4gaW1tZWRpYXRlIHJlamVjdGlvblxuICogd2l0aCBhbiBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FuY2VsRXJyb3J9IGFzIHJlYXNvbixcbiAqIGJ1dCB3aG9ldmVyIHN0YXJ0ZWQgdGhlIHByb21pc2Ugd2lsbCBiZSByZXNwb25zaWJsZVxuICogZm9yIGFjdHVhbGx5IGFib3J0aW5nIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGlvbi5cbiAqIFRvIHRoaXMgcHVycG9zZSwgdGhlIGNvbnN0cnVjdG9yIGFuZCBhbGwgY2hhaW5pbmcgbWV0aG9kc1xuICogYWNjZXB0IG9wdGlvbmFsIGNhbmNlbGxhdGlvbiBjYWxsYmFja3MuXG4gKlxuICogSWYgYSBgQ2FuY2VsbGFibGVQcm9taXNlYCBzdGlsbCByZXNvbHZlcyBhZnRlciBoYXZpbmcgYmVlbiBjYW5jZWxsZWQsXG4gKiB0aGUgcmVzdWx0IHdpbGwgYmUgZGlzY2FyZGVkLiBJZiBpdCByZWplY3RzLCB0aGUgcmVhc29uXG4gKiB3aWxsIGJlIHJlcG9ydGVkIGFzIGFuIHVuaGFuZGxlZCByZWplY3Rpb24sXG4gKiB3cmFwcGVkIGluIGEge0BsaW5rIENhbmNlbGxlZFJlamVjdGlvbkVycm9yfSBpbnN0YW5jZS5cbiAqIFRvIGZhY2lsaXRhdGUgdGhlIGhhbmRsaW5nIG9mIGNhbmNlbGxhdGlvbiByZXF1ZXN0cyxcbiAqIGNhbmNlbGxlZCBgQ2FuY2VsbGFibGVQcm9taXNlYHMgd2lsbCBfbm90XyByZXBvcnQgdW5oYW5kbGVkIGBDYW5jZWxFcnJvcmBzXG4gKiB3aG9zZSBgY2F1c2VgIGZpZWxkIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgd2l0aCB3aGljaCB0aGUgY3VycmVudCBwcm9taXNlIHdhcyBjYW5jZWxsZWQuXG4gKlxuICogQWxsIHVzdWFsIHByb21pc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBhbmQgcmV0dXJuIGEgYENhbmNlbGxhYmxlUHJvbWlzZWBcbiAqIHdob3NlIGNhbmNlbCBtZXRob2Qgd2lsbCBjYW5jZWwgdGhlIHBhcmVudCBvcGVyYXRpb24gYXMgd2VsbCwgcHJvcGFnYXRpbmcgdGhlIGNhbmNlbGxhdGlvbiByZWFzb25cbiAqIHVwd2FyZHMgdGhyb3VnaCBwcm9taXNlIGNoYWlucy5cbiAqIENvbnZlcnNlbHksIGNhbmNlbGxpbmcgYSBwcm9taXNlIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgY2FuY2VsIGRlcGVuZGVudCBwcm9taXNlcyBkb3duc3RyZWFtOlxuICogYGBgdHNcbiAqIGxldCByb290ID0gbmV3IENhbmNlbGxhYmxlUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7IC4uLiB9KTtcbiAqIGxldCBjaGlsZDEgPSByb290LnRoZW4oKCkgPT4geyAuLi4gfSk7XG4gKiBsZXQgY2hpbGQyID0gY2hpbGQxLnRoZW4oKCkgPT4geyAuLi4gfSk7XG4gKiBsZXQgY2hpbGQzID0gcm9vdC5jYXRjaCgoKSA9PiB7IC4uLiB9KTtcbiAqIGNoaWxkMS5jYW5jZWwoKTsgLy8gQ2FuY2VscyBjaGlsZDEgYW5kIHJvb3QsIGJ1dCBub3QgY2hpbGQyIG9yIGNoaWxkM1xuICogYGBgXG4gKiBDYW5jZWxsaW5nIGEgcHJvbWlzZSB0aGF0IGhhcyBhbHJlYWR5IHNldHRsZWQgaXMgc2FmZSBhbmQgaGFzIG5vIGNvbnNlcXVlbmNlLlxuICpcbiAqIFRoZSBgY2FuY2VsYCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UgdGhhdCBfYWx3YXlzIGZ1bGZpbGxzX1xuICogYWZ0ZXIgdGhlIHdob2xlIGNoYWluIGhhcyBwcm9jZXNzZWQgdGhlIGNhbmNlbCByZXF1ZXN0XG4gKiBhbmQgYWxsIGF0dGFjaGVkIGNhbGxiYWNrcyB1cCB0byB0aGF0IG1vbWVudCBoYXZlIHJ1bi5cbiAqXG4gKiBBbGwgRVMyMDI0IHByb21pc2UgbWV0aG9kcyAoc3RhdGljIGFuZCBpbnN0YW5jZSkgYXJlIGRlZmluZWQgb24gQ2FuY2VsbGFibGVQcm9taXNlLFxuICogYnV0IGFjdHVhbCBhdmFpbGFiaWxpdHkgbWF5IHZhcnkgd2l0aCBPUy93ZWJ2aWV3IHZlcnNpb24uXG4gKlxuICogSW4gbGluZSB3aXRoIHRoZSBwcm9wb3NhbCBhdCBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1ybS1idWlsdGluLXN1YmNsYXNzaW5nLFxuICogYENhbmNlbGxhYmxlUHJvbWlzZWAgZG9lcyBub3Qgc3VwcG9ydCB0cmFuc3BhcmVudCBzdWJjbGFzc2luZy5cbiAqIEV4dGVuZGVycyBzaG91bGQgdGFrZSBjYXJlIHRvIHByb3ZpZGUgdGhlaXIgb3duIG1ldGhvZCBpbXBsZW1lbnRhdGlvbnMuXG4gKiBUaGlzIG1pZ2h0IGJlIHJlY29uc2lkZXJlZCBpbiBjYXNlIHRoZSBwcm9wb3NhbCBpcyByZXRpcmVkLlxuICpcbiAqIENhbmNlbGxhYmxlUHJvbWlzZSBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBET00gUHJvbWlzZSBvYmplY3RcbiAqIGFuZCBpcyBjb21wbGlhbnQgd2l0aCB0aGUgW1Byb21pc2VzL0ErIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vKVxuICogKGl0IHBhc3NlcyB0aGUgW2NvbXBsaWFuY2Ugc3VpdGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9taXNlcy1hcGx1cy9wcm9taXNlcy10ZXN0cykpXG4gKiBpZiBzbyBpcyB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIENhbmNlbGxhYmxlUHJvbWlzZTxUPiBleHRlbmRzIFByb21pc2U8VD4gaW1wbGVtZW50cyBQcm9taXNlTGlrZTxUPiwgQ2FuY2VsbGFibGVQcm9taXNlTGlrZTxUPiB7XG4gICAgLy8gUHJpdmF0ZSBmaWVsZHMuXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHByaXZhdGUgW2JhcnJpZXJTeW1dITogUGFydGlhbDxQcm9taXNlV2l0aFJlc29sdmVyczx2b2lkPj4gfCBudWxsO1xuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IFtjYW5jZWxJbXBsU3ltXSE6IChyZWFzb246IENhbmNlbEVycm9yKSA9PiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD47XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGBDYW5jZWxsYWJsZVByb21pc2VgLlxuICAgICAqXG4gICAgICogQHBhcmFtIGV4ZWN1dG9yIC0gQSBjYWxsYmFjayB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHByb21pc2UuIFRoaXMgY2FsbGJhY2sgaXMgcGFzc2VkIHR3byBhcmd1bWVudHM6XG4gICAgICogICAgICAgICAgICAgICAgICAgYSBgcmVzb2x2ZWAgY2FsbGJhY2sgdXNlZCB0byByZXNvbHZlIHRoZSBwcm9taXNlIHdpdGggYSB2YWx1ZVxuICAgICAqICAgICAgICAgICAgICAgICAgIG9yIHRoZSByZXN1bHQgb2YgYW5vdGhlciBwcm9taXNlIChwb3NzaWJseSBjYW5jZWxsYWJsZSksXG4gICAgICogICAgICAgICAgICAgICAgICAgYW5kIGEgYHJlamVjdGAgY2FsbGJhY2sgdXNlZCB0byByZWplY3QgdGhlIHByb21pc2Ugd2l0aCBhIHByb3ZpZGVkIHJlYXNvbiBvciBlcnJvci5cbiAgICAgKiAgICAgICAgICAgICAgICAgICBJZiB0aGUgdmFsdWUgcHJvdmlkZWQgdG8gdGhlIGByZXNvbHZlYCBjYWxsYmFjayBpcyBhIHRoZW5hYmxlIF9hbmRfIGNhbmNlbGxhYmxlIG9iamVjdFxuICAgICAqICAgICAgICAgICAgICAgICAgIChpdCBoYXMgYSBgdGhlbmAgX2FuZF8gYSBgY2FuY2VsYCBtZXRob2QpLFxuICAgICAqICAgICAgICAgICAgICAgICAgIGNhbmNlbGxhdGlvbiByZXF1ZXN0cyB3aWxsIGJlIGZvcndhcmRlZCB0byB0aGF0IG9iamVjdCBhbmQgdGhlIG9uY2FuY2VsbGVkIHdpbGwgbm90IGJlIGludm9rZWQgYW55bW9yZS5cbiAgICAgKiAgICAgICAgICAgICAgICAgICBJZiBhbnkgb25lIG9mIHRoZSB0d28gY2FsbGJhY2tzIGlzIGNhbGxlZCBfYWZ0ZXJfIHRoZSBwcm9taXNlIGhhcyBiZWVuIGNhbmNlbGxlZCxcbiAgICAgKiAgICAgICAgICAgICAgICAgICB0aGUgcHJvdmlkZWQgdmFsdWVzIHdpbGwgYmUgY2FuY2VsbGVkIGFuZCByZXNvbHZlZCBhcyB1c3VhbCxcbiAgICAgKiAgICAgICAgICAgICAgICAgICBidXQgdGhlaXIgcmVzdWx0cyB3aWxsIGJlIGRpc2NhcmRlZC5cbiAgICAgKiAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiB0aGUgcmVzb2x1dGlvbiBwcm9jZXNzIHVsdGltYXRlbHkgZW5kcyB1cCBpbiBhIHJlamVjdGlvblxuICAgICAqICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgbm90IGR1ZSB0byBjYW5jZWxsYXRpb24sIHRoZSByZWplY3Rpb24gcmVhc29uXG4gICAgICogICAgICAgICAgICAgICAgICAgd2lsbCBiZSB3cmFwcGVkIGluIGEge0BsaW5rIENhbmNlbGxlZFJlamVjdGlvbkVycm9yfVxuICAgICAqICAgICAgICAgICAgICAgICAgIGFuZCBidWJibGVkIHVwIGFzIGFuIHVuaGFuZGxlZCByZWplY3Rpb24uXG4gICAgICogQHBhcmFtIG9uY2FuY2VsbGVkIC0gSXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0IGFueSBvcGVyYXRpb25cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBzdGFydGVkIGJ5IHRoZSBleGVjdXRvciBpcyBwcm9wZXJseSBoYWx0ZWQgdXBvbiBjYW5jZWxsYXRpb24uXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb25hbCBjYWxsYmFjayBjYW4gYmUgdXNlZCB0byB0aGF0IHB1cnBvc2UuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgSXQgd2lsbCBiZSBjYWxsZWQgX3N5bmNocm9ub3VzbHlfIHdpdGggYSBjYW5jZWxsYXRpb24gY2F1c2VcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICB3aGVuIGNhbmNlbGxhdGlvbiBpcyByZXF1ZXN0ZWQsIF9hZnRlcl8gdGhlIHByb21pc2UgaGFzIGFscmVhZHkgcmVqZWN0ZWRcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICB3aXRoIGEge0BsaW5rIENhbmNlbEVycm9yfSwgYnV0IF9iZWZvcmVfXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgYW55IHtAbGluayB0aGVufS97QGxpbmsgY2F0Y2h9L3tAbGluayBmaW5hbGx5fSBjYWxsYmFjayBydW5zLlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBjYWxsYmFjayByZXR1cm5zIGEgdGhlbmFibGUsIHRoZSBwcm9taXNlIHJldHVybmVkIGZyb20ge0BsaW5rIGNhbmNlbH1cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICB3aWxsIG9ubHkgZnVsZmlsbCBhZnRlciB0aGUgZm9ybWVyIGhhcyBzZXR0bGVkLlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIFVuaGFuZGxlZCBleGNlcHRpb25zIG9yIHJlamVjdGlvbnMgZnJvbSB0aGUgY2FsbGJhY2sgd2lsbCBiZSB3cmFwcGVkXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgaW4gYSB7QGxpbmsgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3J9IGFuZCBidWJibGVkIHVwIGFzIHVuaGFuZGxlZCByZWplY3Rpb25zLlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBgcmVzb2x2ZWAgY2FsbGJhY2sgaXMgY2FsbGVkIGJlZm9yZSBjYW5jZWxsYXRpb24gd2l0aCBhIGNhbmNlbGxhYmxlIHByb21pc2UsXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgY2FuY2VsbGF0aW9uIHJlcXVlc3RzIG9uIHRoaXMgcHJvbWlzZSB3aWxsIGJlIGRpdmVydGVkIHRvIHRoYXQgcHJvbWlzZSxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIG9yaWdpbmFsIGBvbmNhbmNlbGxlZGAgY2FsbGJhY2sgd2lsbCBiZSBkaXNjYXJkZWQuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoZXhlY3V0b3I6IENhbmNlbGxhYmxlUHJvbWlzZUV4ZWN1dG9yPFQ+LCBvbmNhbmNlbGxlZD86IENhbmNlbGxhYmxlUHJvbWlzZUNhbmNlbGxlcikge1xuICAgICAgICBsZXQgcmVzb2x2ZSE6ICh2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KSA9PiB2b2lkO1xuICAgICAgICBsZXQgcmVqZWN0ITogKHJlYXNvbj86IGFueSkgPT4gdm9pZDtcbiAgICAgICAgc3VwZXIoKHJlcywgcmVqKSA9PiB7IHJlc29sdmUgPSByZXM7IHJlamVjdCA9IHJlajsgfSk7XG5cbiAgICAgICAgaWYgKCh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSlbc3BlY2llc10gIT09IFByb21pc2UpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5jZWxsYWJsZVByb21pc2UgZG9lcyBub3Qgc3VwcG9ydCB0cmFuc3BhcmVudCBzdWJjbGFzc2luZy4gUGxlYXNlIHJlZnJhaW4gZnJvbSBvdmVycmlkaW5nIHRoZSBbU3ltYm9sLnNwZWNpZXNdIHN0YXRpYyBwcm9wZXJ0eS5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcHJvbWlzZTogQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxUPiA9IHtcbiAgICAgICAgICAgIHByb21pc2U6IHRoaXMsXG4gICAgICAgICAgICByZXNvbHZlLFxuICAgICAgICAgICAgcmVqZWN0LFxuICAgICAgICAgICAgZ2V0IG9uY2FuY2VsbGVkKCkgeyByZXR1cm4gb25jYW5jZWxsZWQgPz8gbnVsbDsgfSxcbiAgICAgICAgICAgIHNldCBvbmNhbmNlbGxlZChjYikgeyBvbmNhbmNlbGxlZCA9IGNiID8/IHVuZGVmaW5lZDsgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHN0YXRlOiBDYW5jZWxsYWJsZVByb21pc2VTdGF0ZSA9IHtcbiAgICAgICAgICAgIGdldCByb290KCkgeyByZXR1cm4gc3RhdGU7IH0sXG4gICAgICAgICAgICByZXNvbHZpbmc6IGZhbHNlLFxuICAgICAgICAgICAgc2V0dGxlZDogZmFsc2VcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBTZXR1cCBjYW5jZWxsYXRpb24gc3lzdGVtLlxuICAgICAgICB2b2lkIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMsIHtcbiAgICAgICAgICAgIFtiYXJyaWVyU3ltXToge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbY2FuY2VsSW1wbFN5bV06IHtcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2FuY2VsbGVyRm9yKHByb21pc2UsIHN0YXRlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSdW4gdGhlIGFjdHVhbCBleGVjdXRvci5cbiAgICAgICAgY29uc3QgcmVqZWN0b3IgPSByZWplY3RvckZvcihwcm9taXNlLCBzdGF0ZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBleGVjdXRvcihyZXNvbHZlckZvcihwcm9taXNlLCBzdGF0ZSksIHJlamVjdG9yKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUucmVzb2x2aW5nKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJVbmhhbmRsZWQgZXhjZXB0aW9uIGluIENhbmNlbGxhYmxlUHJvbWlzZSBleGVjdXRvci5cIiwgZXJyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0b3IoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbmNlbHMgaW1tZWRpYXRlbHkgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgb3BlcmF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHByb21pc2UuXG4gICAgICogVGhlIHByb21pc2UgcmVqZWN0cyB3aXRoIGEge0BsaW5rIENhbmNlbEVycm9yfSBpbnN0YW5jZSBhcyByZWFzb24sXG4gICAgICogd2l0aCB0aGUge0BsaW5rIENhbmNlbEVycm9yI2NhdXNlfSBwcm9wZXJ0eSBzZXQgdG8gdGhlIGdpdmVuIGFyZ3VtZW50LCBpZiBhbnkuXG4gICAgICpcbiAgICAgKiBIYXMgbm8gZWZmZWN0IGlmIGNhbGxlZCBhZnRlciB0aGUgcHJvbWlzZSBoYXMgYWxyZWFkeSBzZXR0bGVkO1xuICAgICAqIHJlcGVhdGVkIGNhbGxzIGluIHBhcnRpY3VsYXIgYXJlIHNhZmUsIGJ1dCBvbmx5IHRoZSBmaXJzdCBvbmVcbiAgICAgKiB3aWxsIHNldCB0aGUgY2FuY2VsbGF0aW9uIGNhdXNlLlxuICAgICAqXG4gICAgICogVGhlIGBDYW5jZWxFcnJvcmAgZXhjZXB0aW9uIF9uZWVkIG5vdF8gYmUgaGFuZGxlZCBleHBsaWNpdGx5IF9vbiB0aGUgcHJvbWlzZXMgdGhhdCBhcmUgYmVpbmcgY2FuY2VsbGVkOl9cbiAgICAgKiBjYW5jZWxsaW5nIGEgcHJvbWlzZSB3aXRoIG5vIGF0dGFjaGVkIHJlamVjdGlvbiBoYW5kbGVyIGRvZXMgbm90IHRyaWdnZXIgYW4gdW5oYW5kbGVkIHJlamVjdGlvbiBldmVudC5cbiAgICAgKiBUaGVyZWZvcmUsIHRoZSBmb2xsb3dpbmcgaWRpb21zIGFyZSBhbGwgZXF1YWxseSBjb3JyZWN0OlxuICAgICAqIGBgYHRzXG4gICAgICogbmV3IENhbmNlbGxhYmxlUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7IC4uLiB9KS5jYW5jZWwoKTtcbiAgICAgKiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgLi4uIH0pLnRoZW4oLi4uKS5jYW5jZWwoKTtcbiAgICAgKiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgLi4uIH0pLnRoZW4oLi4uKS5jYXRjaCguLi4pLmNhbmNlbCgpO1xuICAgICAqIGBgYFxuICAgICAqIFdoZW5ldmVyIHNvbWUgY2FuY2VsbGVkIHByb21pc2UgaW4gYSBjaGFpbiByZWplY3RzIHdpdGggYSBgQ2FuY2VsRXJyb3JgXG4gICAgICogd2l0aCB0aGUgc2FtZSBjYW5jZWxsYXRpb24gY2F1c2UgYXMgaXRzZWxmLCB0aGUgZXJyb3Igd2lsbCBiZSBkaXNjYXJkZWQgc2lsZW50bHkuXG4gICAgICogSG93ZXZlciwgdGhlIGBDYW5jZWxFcnJvcmAgX3dpbGwgc3RpbGwgYmUgZGVsaXZlcmVkXyB0byBhbGwgYXR0YWNoZWQgcmVqZWN0aW9uIGhhbmRsZXJzXG4gICAgICogYWRkZWQgYnkge0BsaW5rIHRoZW59IGFuZCByZWxhdGVkIG1ldGhvZHM6XG4gICAgICogYGBgdHNcbiAgICAgKiBsZXQgY2FuY2VsbGFibGUgPSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgLi4uIH0pO1xuICAgICAqIGNhbmNlbGxhYmxlLnRoZW4oKCkgPT4geyAuLi4gfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICAgICAqIGNhbmNlbGxhYmxlLmNhbmNlbCgpOyAvLyBBIENhbmNlbEVycm9yIGlzIHByaW50ZWQgdG8gdGhlIGNvbnNvbGUuXG4gICAgICogYGBgXG4gICAgICogSWYgdGhlIGBDYW5jZWxFcnJvcmAgaXMgbm90IGhhbmRsZWQgZG93bnN0cmVhbSBieSB0aGUgdGltZSBpdCByZWFjaGVzXG4gICAgICogYSBfbm9uLWNhbmNlbGxlZF8gcHJvbWlzZSwgaXQgX3dpbGxfIHRyaWdnZXIgYW4gdW5oYW5kbGVkIHJlamVjdGlvbiBldmVudCxcbiAgICAgKiBqdXN0IGxpa2Ugbm9ybWFsIHJlamVjdGlvbnMgd291bGQ6XG4gICAgICogYGBgdHNcbiAgICAgKiBsZXQgY2FuY2VsbGFibGUgPSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgLi4uIH0pO1xuICAgICAqIGxldCBjaGFpbmVkID0gY2FuY2VsbGFibGUudGhlbigoKSA9PiB7IC4uLiB9KS50aGVuKCgpID0+IHsgLi4uIH0pOyAvLyBObyBjYXRjaC4uLlxuICAgICAqIGNhbmNlbGxhYmxlLmNhbmNlbCgpOyAvLyBVbmhhbmRsZWQgcmVqZWN0aW9uIGV2ZW50IG9uIGNoYWluZWQhXG4gICAgICogYGBgXG4gICAgICogVGhlcmVmb3JlLCBpdCBpcyBpbXBvcnRhbnQgdG8gZWl0aGVyIGNhbmNlbCB3aG9sZSBwcm9taXNlIGNoYWlucyBmcm9tIHRoZWlyIHRhaWwsXG4gICAgICogYXMgc2hvd24gaW4gdGhlIGNvcnJlY3QgaWRpb21zIGFib3ZlLCBvciB0YWtlIGNhcmUgb2YgaGFuZGxpbmcgZXJyb3JzIGV2ZXJ5d2hlcmUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBIGNhbmNlbGxhYmxlIHByb21pc2UgdGhhdCBfZnVsZmlsbHNfIGFmdGVyIHRoZSBjYW5jZWwgY2FsbGJhY2sgKGlmIGFueSlcbiAgICAgKiBhbmQgYWxsIGhhbmRsZXJzIGF0dGFjaGVkIHVwIHRvIHRoZSBjYWxsIHRvIGNhbmNlbCBoYXZlIHJ1bi5cbiAgICAgKiBJZiB0aGUgY2FuY2VsIGNhbGxiYWNrIHJldHVybnMgYSB0aGVuYWJsZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgYGNhbmNlbGBcbiAgICAgKiB3aWxsIGFsc28gd2FpdCBmb3IgdGhhdCB0aGVuYWJsZSB0byBzZXR0bGUuXG4gICAgICogVGhpcyBlbmFibGVzIGNhbGxlcnMgdG8gd2FpdCBmb3IgdGhlIGNhbmNlbGxlZCBvcGVyYXRpb24gdG8gdGVybWluYXRlXG4gICAgICogd2l0aG91dCBiZWluZyBmb3JjZWQgdG8gaGFuZGxlIHBvdGVudGlhbCBlcnJvcnMgYXQgdGhlIGNhbGwgc2l0ZS5cbiAgICAgKiBgYGB0c1xuICAgICAqIGNhbmNlbGxhYmxlLmNhbmNlbCgpLnRoZW4oKCkgPT4ge1xuICAgICAqICAgICAvLyBDbGVhbnVwIGZpbmlzaGVkLCBpdCdzIHNhZmUgdG8gZG8gc29tZXRoaW5nIGVsc2UuXG4gICAgICogfSwgKGVycikgPT4ge1xuICAgICAqICAgICAvLyBVbnJlYWNoYWJsZTogdGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSBjYW5jZWwgd2lsbCBuZXZlciByZWplY3QuXG4gICAgICogfSk7XG4gICAgICogYGBgXG4gICAgICogTm90ZSB0aGF0IHRoZSByZXR1cm5lZCBwcm9taXNlIHdpbGwgX25vdF8gaGFuZGxlIGltcGxpY2l0bHkgYW55IHJlamVjdGlvblxuICAgICAqIHRoYXQgbWlnaHQgaGF2ZSBvY2N1cnJlZCBhbHJlYWR5IGluIHRoZSBjYW5jZWxsZWQgY2hhaW4uXG4gICAgICogSXQgd2lsbCBqdXN0IHRyYWNrIHdoZXRoZXIgcmVnaXN0ZXJlZCBoYW5kbGVycyBoYXZlIGJlZW4gZXhlY3V0ZWQgb3Igbm90LlxuICAgICAqIFRoZXJlZm9yZSwgdW5oYW5kbGVkIHJlamVjdGlvbnMgd2lsbCBuZXZlciBiZSBzaWxlbnRseSBoYW5kbGVkIGJ5IGNhbGxpbmcgY2FuY2VsLlxuICAgICAqL1xuICAgIGNhbmNlbChjYXVzZT86IGFueSk6IENhbmNlbGxhYmxlUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICAvLyBJTlZBUklBTlQ6IHRoZSByZXN1bHQgb2YgdGhpc1tjYW5jZWxJbXBsU3ltXSBhbmQgdGhlIGJhcnJpZXIgZG8gbm90IGV2ZXIgcmVqZWN0LlxuICAgICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSBtYWNPUyBIaWdoIFNpZXJyYSBkb2VzIG5vdCBzdXBwb3J0IFByb21pc2UuYWxsU2V0dGxlZC5cbiAgICAgICAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICB0aGlzW2NhbmNlbEltcGxTeW1dKG5ldyBDYW5jZWxFcnJvcihcIlByb21pc2UgY2FuY2VsbGVkLlwiLCB7IGNhdXNlIH0pKSxcbiAgICAgICAgICAgICAgICBjdXJyZW50QmFycmllcih0aGlzKVxuICAgICAgICAgICAgXSkudGhlbigoKSA9PiByZXNvbHZlKCksICgpID0+IHJlc29sdmUoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJpbmRzIHByb21pc2UgY2FuY2VsbGF0aW9uIHRvIHRoZSBhYm9ydCBldmVudCBvZiB0aGUgZ2l2ZW4ge0BsaW5rIEFib3J0U2lnbmFsfS5cbiAgICAgKiBJZiB0aGUgc2lnbmFsIGhhcyBhbHJlYWR5IGFib3J0ZWQsIHRoZSBwcm9taXNlIHdpbGwgYmUgY2FuY2VsbGVkIGltbWVkaWF0ZWx5LlxuICAgICAqIFdoZW4gZWl0aGVyIGNvbmRpdGlvbiBpcyB2ZXJpZmllZCwgdGhlIGNhbmNlbGxhdGlvbiBjYXVzZSB3aWxsIGJlIHNldFxuICAgICAqIHRvIHRoZSBzaWduYWwncyBhYm9ydCByZWFzb24gKHNlZSB7QGxpbmsgQWJvcnRTaWduYWwjcmVhc29ufSkuXG4gICAgICpcbiAgICAgKiBIYXMgbm8gZWZmZWN0IGlmIGNhbGxlZCAob3IgaWYgdGhlIHNpZ25hbCBhYm9ydHMpIF9hZnRlcl8gdGhlIHByb21pc2UgaGFzIGFscmVhZHkgc2V0dGxlZC5cbiAgICAgKiBPbmx5IHRoZSBmaXJzdCBzaWduYWwgdG8gYWJvcnQgd2lsbCBzZXQgdGhlIGNhbmNlbGxhdGlvbiBjYXVzZS5cbiAgICAgKlxuICAgICAqIEZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIGNhbmNlbGxhdGlvbiBwcm9jZXNzLFxuICAgICAqIHNlZSB7QGxpbmsgY2FuY2VsfSBhbmQgdGhlIGBDYW5jZWxsYWJsZVByb21pc2VgIGNvbnN0cnVjdG9yLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgZW5hYmxlcyBgYXdhaXRgaW5nIGNhbmNlbGxhYmxlIHByb21pc2VzIHdpdGhvdXQgaGF2aW5nXG4gICAgICogdG8gc3RvcmUgdGhlbSBmb3IgZnV0dXJlIGNhbmNlbGxhdGlvbiwgZS5nLjpcbiAgICAgKiBgYGB0c1xuICAgICAqIGF3YWl0IGxvbmdSdW5uaW5nT3BlcmF0aW9uKCkuY2FuY2VsT24oc2lnbmFsKTtcbiAgICAgKiBgYGBcbiAgICAgKiBpbnN0ZWFkIG9mOlxuICAgICAqIGBgYHRzXG4gICAgICogbGV0IHByb21pc2VUb0JlQ2FuY2VsbGVkID0gbG9uZ1J1bm5pbmdPcGVyYXRpb24oKTtcbiAgICAgKiBhd2FpdCBwcm9taXNlVG9CZUNhbmNlbGxlZDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoaXMgcHJvbWlzZSwgZm9yIG1ldGhvZCBjaGFpbmluZy5cbiAgICAgKi9cbiAgICBjYW5jZWxPbihzaWduYWw6IEFib3J0U2lnbmFsKTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+IHtcbiAgICAgICAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgICAgICB2b2lkIHRoaXMuY2FuY2VsKHNpZ25hbC5yZWFzb24pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCAoKSA9PiB2b2lkIHRoaXMuY2FuY2VsKHNpZ25hbC5yZWFzb24pLCB7Y2FwdHVyZTogdHJ1ZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgY2FsbGJhY2tzIGZvciB0aGUgcmVzb2x1dGlvbiBhbmQvb3IgcmVqZWN0aW9uIG9mIHRoZSBgQ2FuY2VsbGFibGVQcm9taXNlYC5cbiAgICAgKlxuICAgICAqIFRoZSBvcHRpb25hbCBgb25jYW5jZWxsZWRgIGFyZ3VtZW50IHdpbGwgYmUgaW52b2tlZCB3aGVuIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGNhbmNlbGxlZCxcbiAgICAgKiB3aXRoIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYG9uY2FuY2VsbGVkYCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IuXG4gICAgICogV2hlbiB0aGUgcGFyZW50IHByb21pc2UgcmVqZWN0cyBvciBpcyBjYW5jZWxsZWQsIHRoZSBgb25yZWplY3RlZGAgY2FsbGJhY2sgd2lsbCBydW4sXG4gICAgICogX2V2ZW4gYWZ0ZXIgdGhlIHJldHVybmVkIHByb21pc2UgaGFzIGJlZW4gY2FuY2VsbGVkOl9cbiAgICAgKiBpbiB0aGF0IGNhc2UsIHNob3VsZCBpdCByZWplY3Qgb3IgdGhyb3csIHRoZSByZWFzb24gd2lsbCBiZSB3cmFwcGVkXG4gICAgICogaW4gYSB7QGxpbmsgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3J9IGFuZCBidWJibGVkIHVwIGFzIGFuIHVuaGFuZGxlZCByZWplY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb25mdWxmaWxsZWQgVGhlIGNhbGxiYWNrIHRvIGV4ZWN1dGUgd2hlbiB0aGUgUHJvbWlzZSBpcyByZXNvbHZlZC5cbiAgICAgKiBAcGFyYW0gb25yZWplY3RlZCBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZSB3aGVuIHRoZSBQcm9taXNlIGlzIHJlamVjdGVkLlxuICAgICAqIEByZXR1cm5zIEEgYENhbmNlbGxhYmxlUHJvbWlzZWAgZm9yIHRoZSBjb21wbGV0aW9uIG9mIHdoaWNoZXZlciBjYWxsYmFjayBpcyBleGVjdXRlZC5cbiAgICAgKiBUaGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBob29rZWQgdXAgdG8gcHJvcGFnYXRlIGNhbmNlbGxhdGlvbiByZXF1ZXN0cyB1cCB0aGUgY2hhaW4sIGJ1dCBub3QgZG93bjpcbiAgICAgKlxuICAgICAqICAgLSBpZiB0aGUgcGFyZW50IHByb21pc2UgaXMgY2FuY2VsbGVkLCB0aGUgYG9ucmVqZWN0ZWRgIGhhbmRsZXIgd2lsbCBiZSBpbnZva2VkIHdpdGggYSBgQ2FuY2VsRXJyb3JgXG4gICAgICogICAgIGFuZCB0aGUgcmV0dXJuZWQgcHJvbWlzZSBfd2lsbCByZXNvbHZlIHJlZ3VsYXJseV8gd2l0aCBpdHMgcmVzdWx0O1xuICAgICAqICAgLSBjb252ZXJzZWx5LCBpZiB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsIF90aGUgcGFyZW50IHByb21pc2UgaXMgY2FuY2VsbGVkIHRvbztfXG4gICAgICogICAgIHRoZSBgb25yZWplY3RlZGAgaGFuZGxlciB3aWxsIHN0aWxsIGJlIGludm9rZWQgd2l0aCB0aGUgcGFyZW50J3MgYENhbmNlbEVycm9yYCxcbiAgICAgKiAgICAgYnV0IGl0cyByZXN1bHQgd2lsbCBiZSBkaXNjYXJkZWRcbiAgICAgKiAgICAgYW5kIHRoZSByZXR1cm5lZCBwcm9taXNlIHdpbGwgcmVqZWN0IHdpdGggYSBgQ2FuY2VsRXJyb3JgIGFzIHdlbGwuXG4gICAgICpcbiAgICAgKiBUaGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIHtAbGluayBjYW5jZWx9IHdpbGwgZnVsZmlsbCBvbmx5IGFmdGVyIGFsbCBhdHRhY2hlZCBoYW5kbGVyc1xuICAgICAqIHVwIHRoZSBlbnRpcmUgcHJvbWlzZSBjaGFpbiBoYXZlIGJlZW4gcnVuLlxuICAgICAqXG4gICAgICogSWYgZWl0aGVyIGNhbGxiYWNrIHJldHVybnMgYSBjYW5jZWxsYWJsZSBwcm9taXNlLFxuICAgICAqIGNhbmNlbGxhdGlvbiByZXF1ZXN0cyB3aWxsIGJlIGRpdmVydGVkIHRvIGl0LFxuICAgICAqIGFuZCB0aGUgc3BlY2lmaWVkIGBvbmNhbmNlbGxlZGAgY2FsbGJhY2sgd2lsbCBiZSBkaXNjYXJkZWQuXG4gICAgICovXG4gICAgdGhlbjxUUmVzdWx0MSA9IFQsIFRSZXN1bHQyID0gbmV2ZXI+KG9uZnVsZmlsbGVkPzogKCh2YWx1ZTogVCkgPT4gVFJlc3VsdDEgfCBQcm9taXNlTGlrZTxUUmVzdWx0MT4gfCBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFRSZXN1bHQxPikgfCB1bmRlZmluZWQgfCBudWxsLCBvbnJlamVjdGVkPzogKChyZWFzb246IGFueSkgPT4gVFJlc3VsdDIgfCBQcm9taXNlTGlrZTxUUmVzdWx0Mj4gfCBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFRSZXN1bHQyPikgfCB1bmRlZmluZWQgfCBudWxsLCBvbmNhbmNlbGxlZD86IENhbmNlbGxhYmxlUHJvbWlzZUNhbmNlbGxlcik6IENhbmNlbGxhYmxlUHJvbWlzZTxUUmVzdWx0MSB8IFRSZXN1bHQyPiB7XG4gICAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBDYW5jZWxsYWJsZVByb21pc2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2FuY2VsbGFibGVQcm9taXNlLnByb3RvdHlwZS50aGVuIGNhbGxlZCBvbiBhbiBpbnZhbGlkIG9iamVjdC5cIik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOT1RFOiBUeXBlU2NyaXB0J3MgYnVpbHQtaW4gdHlwZSBmb3IgdGhlbiBpcyBicm9rZW4sXG4gICAgICAgIC8vIGFzIGl0IGFsbG93cyBzcGVjaWZ5aW5nIGFuIGFyYml0cmFyeSBUUmVzdWx0MSAhPSBUIGV2ZW4gd2hlbiBvbmZ1bGZpbGxlZCBpcyBub3QgYSBmdW5jdGlvbi5cbiAgICAgICAgLy8gV2UgY2Fubm90IGZpeCBpdCBpZiB3ZSB3YW50IHRvIENhbmNlbGxhYmxlUHJvbWlzZSB0byBpbXBsZW1lbnQgUHJvbWlzZUxpa2U8VD4uXG5cbiAgICAgICAgaWYgKCFpc0NhbGxhYmxlKG9uZnVsZmlsbGVkKSkgeyBvbmZ1bGZpbGxlZCA9IGlkZW50aXR5IGFzIGFueTsgfVxuICAgICAgICBpZiAoIWlzQ2FsbGFibGUob25yZWplY3RlZCkpIHsgb25yZWplY3RlZCA9IHRocm93ZXI7IH1cblxuICAgICAgICBpZiAob25mdWxmaWxsZWQgPT09IGlkZW50aXR5ICYmIG9ucmVqZWN0ZWQgPT0gdGhyb3dlcikge1xuICAgICAgICAgICAgLy8gU2hvcnRjdXQgZm9yIHRyaXZpYWwgYXJndW1lbnRzLlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKHJlc29sdmUpID0+IHJlc29sdmUodGhpcyBhcyBhbnkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJhcnJpZXI6IFBhcnRpYWw8UHJvbWlzZVdpdGhSZXNvbHZlcnM8dm9pZD4+ID0ge307XG4gICAgICAgIHRoaXNbYmFycmllclN5bV0gPSBiYXJyaWVyO1xuXG4gICAgICAgIHJldHVybiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPFRSZXN1bHQxIHwgVFJlc3VsdDI+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHZvaWQgc3VwZXIudGhlbihcbiAgICAgICAgICAgICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNbYmFycmllclN5bV0gPT09IGJhcnJpZXIpIHsgdGhpc1tiYXJyaWVyU3ltXSA9IG51bGw7IH1cbiAgICAgICAgICAgICAgICAgICAgYmFycmllci5yZXNvbHZlPy4oKTtcblxuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShvbmZ1bGZpbGxlZCEodmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKHJlYXNvbj8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNbYmFycmllclN5bV0gPT09IGJhcnJpZXIpIHsgdGhpc1tiYXJyaWVyU3ltXSA9IG51bGw7IH1cbiAgICAgICAgICAgICAgICAgICAgYmFycmllci5yZXNvbHZlPy4oKTtcblxuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShvbnJlamVjdGVkIShyZWFzb24pKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sIGFzeW5jIChjYXVzZT8pID0+IHtcbiAgICAgICAgICAgIC8vY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9uY2FuY2VsbGVkPy4oY2F1c2UpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNhbmNlbChjYXVzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEF0dGFjaGVzIGEgY2FsbGJhY2sgZm9yIG9ubHkgdGhlIHJlamVjdGlvbiBvZiB0aGUgUHJvbWlzZS5cbiAgICAgKlxuICAgICAqIFRoZSBvcHRpb25hbCBgb25jYW5jZWxsZWRgIGFyZ3VtZW50IHdpbGwgYmUgaW52b2tlZCB3aGVuIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGNhbmNlbGxlZCxcbiAgICAgKiB3aXRoIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYG9uY2FuY2VsbGVkYCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IuXG4gICAgICogV2hlbiB0aGUgcGFyZW50IHByb21pc2UgcmVqZWN0cyBvciBpcyBjYW5jZWxsZWQsIHRoZSBgb25yZWplY3RlZGAgY2FsbGJhY2sgd2lsbCBydW4sXG4gICAgICogX2V2ZW4gYWZ0ZXIgdGhlIHJldHVybmVkIHByb21pc2UgaGFzIGJlZW4gY2FuY2VsbGVkOl9cbiAgICAgKiBpbiB0aGF0IGNhc2UsIHNob3VsZCBpdCByZWplY3Qgb3IgdGhyb3csIHRoZSByZWFzb24gd2lsbCBiZSB3cmFwcGVkXG4gICAgICogaW4gYSB7QGxpbmsgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3J9IGFuZCBidWJibGVkIHVwIGFzIGFuIHVuaGFuZGxlZCByZWplY3Rpb24uXG4gICAgICpcbiAgICAgKiBJdCBpcyBlcXVpdmFsZW50IHRvXG4gICAgICogYGBgdHNcbiAgICAgKiBjYW5jZWxsYWJsZVByb21pc2UudGhlbih1bmRlZmluZWQsIG9ucmVqZWN0ZWQsIG9uY2FuY2VsbGVkKTtcbiAgICAgKiBgYGBcbiAgICAgKiBhbmQgdGhlIHNhbWUgY2F2ZWF0cyBhcHBseS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgUHJvbWlzZSBmb3IgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGNhbGxiYWNrLlxuICAgICAqIENhbmNlbGxhdGlvbiByZXF1ZXN0cyBvbiB0aGUgcmV0dXJuZWQgcHJvbWlzZVxuICAgICAqIHdpbGwgcHJvcGFnYXRlIHVwIHRoZSBjaGFpbiB0byB0aGUgcGFyZW50IHByb21pc2UsXG4gICAgICogYnV0IG5vdCBpbiB0aGUgb3RoZXIgZGlyZWN0aW9uLlxuICAgICAqXG4gICAgICogVGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSB7QGxpbmsgY2FuY2VsfSB3aWxsIGZ1bGZpbGwgb25seSBhZnRlciBhbGwgYXR0YWNoZWQgaGFuZGxlcnNcbiAgICAgKiB1cCB0aGUgZW50aXJlIHByb21pc2UgY2hhaW4gaGF2ZSBiZWVuIHJ1bi5cbiAgICAgKlxuICAgICAqIElmIGBvbnJlamVjdGVkYCByZXR1cm5zIGEgY2FuY2VsbGFibGUgcHJvbWlzZSxcbiAgICAgKiBjYW5jZWxsYXRpb24gcmVxdWVzdHMgd2lsbCBiZSBkaXZlcnRlZCB0byBpdCxcbiAgICAgKiBhbmQgdGhlIHNwZWNpZmllZCBgb25jYW5jZWxsZWRgIGNhbGxiYWNrIHdpbGwgYmUgZGlzY2FyZGVkLlxuICAgICAqIFNlZSB7QGxpbmsgdGhlbn0gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKi9cbiAgICBjYXRjaDxUUmVzdWx0ID0gbmV2ZXI+KG9ucmVqZWN0ZWQ/OiAoKHJlYXNvbjogYW55KSA9PiAoUHJvbWlzZUxpa2U8VFJlc3VsdD4gfCBUUmVzdWx0KSkgfCB1bmRlZmluZWQgfCBudWxsLCBvbmNhbmNlbGxlZD86IENhbmNlbGxhYmxlUHJvbWlzZUNhbmNlbGxlcik6IENhbmNlbGxhYmxlUHJvbWlzZTxUIHwgVFJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25yZWplY3RlZCwgb25jYW5jZWxsZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEF0dGFjaGVzIGEgY2FsbGJhY2sgdGhhdCBpcyBpbnZva2VkIHdoZW4gdGhlIENhbmNlbGxhYmxlUHJvbWlzZSBpcyBzZXR0bGVkIChmdWxmaWxsZWQgb3IgcmVqZWN0ZWQpLiBUaGVcbiAgICAgKiByZXNvbHZlZCB2YWx1ZSBjYW5ub3QgYmUgYWNjZXNzZWQgb3IgbW9kaWZpZWQgZnJvbSB0aGUgY2FsbGJhY2suXG4gICAgICogVGhlIHJldHVybmVkIHByb21pc2Ugd2lsbCBzZXR0bGUgaW4gdGhlIHNhbWUgc3RhdGUgYXMgdGhlIG9yaWdpbmFsIG9uZVxuICAgICAqIGFmdGVyIHRoZSBwcm92aWRlZCBjYWxsYmFjayBoYXMgY29tcGxldGVkIGV4ZWN1dGlvbixcbiAgICAgKiB1bmxlc3MgdGhlIGNhbGxiYWNrIHRocm93cyBvciByZXR1cm5zIGEgcmVqZWN0aW5nIHByb21pc2UsXG4gICAgICogaW4gd2hpY2ggY2FzZSB0aGUgcmV0dXJuZWQgcHJvbWlzZSB3aWxsIHJlamVjdCBhcyB3ZWxsLlxuICAgICAqXG4gICAgICogVGhlIG9wdGlvbmFsIGBvbmNhbmNlbGxlZGAgYXJndW1lbnQgd2lsbCBiZSBpbnZva2VkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLFxuICAgICAqIHdpdGggdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSBgb25jYW5jZWxsZWRgIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBPbmNlIHRoZSBwYXJlbnQgcHJvbWlzZSBzZXR0bGVzLCB0aGUgYG9uZmluYWxseWAgY2FsbGJhY2sgd2lsbCBydW4sXG4gICAgICogX2V2ZW4gYWZ0ZXIgdGhlIHJldHVybmVkIHByb21pc2UgaGFzIGJlZW4gY2FuY2VsbGVkOl9cbiAgICAgKiBpbiB0aGF0IGNhc2UsIHNob3VsZCBpdCByZWplY3Qgb3IgdGhyb3csIHRoZSByZWFzb24gd2lsbCBiZSB3cmFwcGVkXG4gICAgICogaW4gYSB7QGxpbmsgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3J9IGFuZCBidWJibGVkIHVwIGFzIGFuIHVuaGFuZGxlZCByZWplY3Rpb24uXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiB7QGxpbmsgdGhlbn0gYW5kIHRoZSBzYW1lIGNhdmVhdHMgYXBwbHkuXG4gICAgICogSXQgaXMgcG9seWZpbGxlZCwgaGVuY2UgYXZhaWxhYmxlIGluIGV2ZXJ5IE9TL3dlYnZpZXcgdmVyc2lvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgUHJvbWlzZSBmb3IgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGNhbGxiYWNrLlxuICAgICAqIENhbmNlbGxhdGlvbiByZXF1ZXN0cyBvbiB0aGUgcmV0dXJuZWQgcHJvbWlzZVxuICAgICAqIHdpbGwgcHJvcGFnYXRlIHVwIHRoZSBjaGFpbiB0byB0aGUgcGFyZW50IHByb21pc2UsXG4gICAgICogYnV0IG5vdCBpbiB0aGUgb3RoZXIgZGlyZWN0aW9uLlxuICAgICAqXG4gICAgICogVGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSB7QGxpbmsgY2FuY2VsfSB3aWxsIGZ1bGZpbGwgb25seSBhZnRlciBhbGwgYXR0YWNoZWQgaGFuZGxlcnNcbiAgICAgKiB1cCB0aGUgZW50aXJlIHByb21pc2UgY2hhaW4gaGF2ZSBiZWVuIHJ1bi5cbiAgICAgKlxuICAgICAqIElmIGBvbmZpbmFsbHlgIHJldHVybnMgYSBjYW5jZWxsYWJsZSBwcm9taXNlLFxuICAgICAqIGNhbmNlbGxhdGlvbiByZXF1ZXN0cyB3aWxsIGJlIGRpdmVydGVkIHRvIGl0LFxuICAgICAqIGFuZCB0aGUgc3BlY2lmaWVkIGBvbmNhbmNlbGxlZGAgY2FsbGJhY2sgd2lsbCBiZSBkaXNjYXJkZWQuXG4gICAgICogU2VlIHtAbGluayB0aGVufSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqL1xuICAgIGZpbmFsbHkob25maW5hbGx5PzogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkIHwgbnVsbCwgb25jYW5jZWxsZWQ/OiBDYW5jZWxsYWJsZVByb21pc2VDYW5jZWxsZXIpOiBDYW5jZWxsYWJsZVByb21pc2U8VD4ge1xuICAgICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQ2FuY2VsbGFibGVQcm9taXNlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbmNlbGxhYmxlUHJvbWlzZS5wcm90b3R5cGUuZmluYWxseSBjYWxsZWQgb24gYW4gaW52YWxpZCBvYmplY3QuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc0NhbGxhYmxlKG9uZmluYWxseSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRoZW4ob25maW5hbGx5LCBvbmZpbmFsbHksIG9uY2FuY2VsbGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRoZW4oXG4gICAgICAgICAgICAodmFsdWUpID0+IENhbmNlbGxhYmxlUHJvbWlzZS5yZXNvbHZlKG9uZmluYWxseSgpKS50aGVuKCgpID0+IHZhbHVlKSxcbiAgICAgICAgICAgIChyZWFzb24/KSA9PiBDYW5jZWxsYWJsZVByb21pc2UucmVzb2x2ZShvbmZpbmFsbHkoKSkudGhlbigoKSA9PiB7IHRocm93IHJlYXNvbjsgfSksXG4gICAgICAgICAgICBvbmNhbmNlbGxlZCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXZSB1c2UgdGhlIGBbU3ltYm9sLnNwZWNpZXNdYCBzdGF0aWMgcHJvcGVydHksIGlmIGF2YWlsYWJsZSxcbiAgICAgKiB0byBkaXNhYmxlIHRoZSBidWlsdC1pbiBhdXRvbWF0aWMgc3ViY2xhc3NpbmcgZmVhdHVyZXMgZnJvbSB7QGxpbmsgUHJvbWlzZX0uXG4gICAgICogSXQgaXMgY3JpdGljYWwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgdGhhdCBleHRlbmRlcnMgZG8gbm90IG92ZXJyaWRlIHRoaXMuXG4gICAgICogT25jZSB0aGUgcHJvcG9zYWwgYXQgaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcm0tYnVpbHRpbi1zdWJjbGFzc2luZ1xuICAgICAqIGlzIGVpdGhlciBhY2NlcHRlZCBvciByZXRpcmVkLCB0aGlzIGltcGxlbWVudGF0aW9uIHdpbGwgaGF2ZSB0byBiZSByZXZpc2VkIGFjY29yZGluZ2x5LlxuICAgICAqXG4gICAgICogQGlnbm9yZVxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXQgW3NwZWNpZXNdKCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgQ2FuY2VsbGFibGVQcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhbiBhcnJheSBvZiByZXN1bHRzXG4gICAgICogd2hlbiBhbGwgb2YgdGhlIHByb3ZpZGVkIFByb21pc2VzIHJlc29sdmUsIG9yIHJlamVjdGVkIHdoZW4gYW55IFByb21pc2UgaXMgcmVqZWN0ZWQuXG4gICAgICpcbiAgICAgKiBFdmVyeSBvbmUgb2YgdGhlIHByb3ZpZGVkIG9iamVjdHMgdGhhdCBpcyBhIHRoZW5hYmxlIF9hbmRfIGNhbmNlbGxhYmxlIG9iamVjdFxuICAgICAqIHdpbGwgYmUgY2FuY2VsbGVkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLCB3aXRoIHRoZSBzYW1lIGNhdXNlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIGFsbDxUPih2YWx1ZXM6IEl0ZXJhYmxlPFQgfCBQcm9taXNlTGlrZTxUPj4pOiBDYW5jZWxsYWJsZVByb21pc2U8QXdhaXRlZDxUPltdPjtcbiAgICBzdGF0aWMgYWxsPFQgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gfCBbXT4odmFsdWVzOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPHsgLXJlYWRvbmx5IFtQIGluIGtleW9mIFRdOiBBd2FpdGVkPFRbUF0+OyB9PjtcbiAgICBzdGF0aWMgYWxsPFQgZXh0ZW5kcyBJdGVyYWJsZTx1bmtub3duPiB8IEFycmF5TGlrZTx1bmtub3duPj4odmFsdWVzOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgbGV0IGNvbGxlY3RlZCA9IEFycmF5LmZyb20odmFsdWVzKTtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IGNvbGxlY3RlZC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gQ2FuY2VsbGFibGVQcm9taXNlLnJlc29sdmUoY29sbGVjdGVkKVxuICAgICAgICAgICAgOiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICB2b2lkIFByb21pc2UuYWxsKGNvbGxlY3RlZCkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgfSwgKGNhdXNlPyk6IFByb21pc2U8dm9pZD4gPT4gY2FuY2VsQWxsKHByb21pc2UsIGNvbGxlY3RlZCwgY2F1c2UpKTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIENhbmNlbGxhYmxlUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggYW4gYXJyYXkgb2YgcmVzdWx0c1xuICAgICAqIHdoZW4gYWxsIG9mIHRoZSBwcm92aWRlZCBQcm9taXNlcyByZXNvbHZlIG9yIHJlamVjdC5cbiAgICAgKlxuICAgICAqIEV2ZXJ5IG9uZSBvZiB0aGUgcHJvdmlkZWQgb2JqZWN0cyB0aGF0IGlzIGEgdGhlbmFibGUgX2FuZF8gY2FuY2VsbGFibGUgb2JqZWN0XG4gICAgICogd2lsbCBiZSBjYW5jZWxsZWQgd2hlbiB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsIHdpdGggdGhlIHNhbWUgY2F1c2UuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgYWxsU2V0dGxlZDxUPih2YWx1ZXM6IEl0ZXJhYmxlPFQgfCBQcm9taXNlTGlrZTxUPj4pOiBDYW5jZWxsYWJsZVByb21pc2U8UHJvbWlzZVNldHRsZWRSZXN1bHQ8QXdhaXRlZDxUPj5bXT47XG4gICAgc3RhdGljIGFsbFNldHRsZWQ8VCBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSB8IFtdPih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8eyAtcmVhZG9ubHkgW1AgaW4ga2V5b2YgVF06IFByb21pc2VTZXR0bGVkUmVzdWx0PEF3YWl0ZWQ8VFtQXT4+OyB9PjtcbiAgICBzdGF0aWMgYWxsU2V0dGxlZDxUIGV4dGVuZHMgSXRlcmFibGU8dW5rbm93bj4gfCBBcnJheUxpa2U8dW5rbm93bj4+KHZhbHVlczogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIGxldCBjb2xsZWN0ZWQgPSBBcnJheS5mcm9tKHZhbHVlcyk7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBjb2xsZWN0ZWQubGVuZ3RoID09PSAwXG4gICAgICAgICAgICA/IENhbmNlbGxhYmxlUHJvbWlzZS5yZXNvbHZlKGNvbGxlY3RlZClcbiAgICAgICAgICAgIDogbmV3IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgdm9pZCBQcm9taXNlLmFsbFNldHRsZWQoY29sbGVjdGVkKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICB9LCAoY2F1c2U/KTogUHJvbWlzZTx2b2lkPiA9PiBjYW5jZWxBbGwocHJvbWlzZSwgY29sbGVjdGVkLCBjYXVzZSkpO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYW55IGZ1bmN0aW9uIHJldHVybnMgYSBwcm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkIGJ5IHRoZSBmaXJzdCBnaXZlbiBwcm9taXNlIHRvIGJlIGZ1bGZpbGxlZCxcbiAgICAgKiBvciByZWplY3RlZCB3aXRoIGFuIEFnZ3JlZ2F0ZUVycm9yIGNvbnRhaW5pbmcgYW4gYXJyYXkgb2YgcmVqZWN0aW9uIHJlYXNvbnNcbiAgICAgKiBpZiBhbGwgb2YgdGhlIGdpdmVuIHByb21pc2VzIGFyZSByZWplY3RlZC5cbiAgICAgKiBJdCByZXNvbHZlcyBhbGwgZWxlbWVudHMgb2YgdGhlIHBhc3NlZCBpdGVyYWJsZSB0byBwcm9taXNlcyBhcyBpdCBydW5zIHRoaXMgYWxnb3JpdGhtLlxuICAgICAqXG4gICAgICogRXZlcnkgb25lIG9mIHRoZSBwcm92aWRlZCBvYmplY3RzIHRoYXQgaXMgYSB0aGVuYWJsZSBfYW5kXyBjYW5jZWxsYWJsZSBvYmplY3RcbiAgICAgKiB3aWxsIGJlIGNhbmNlbGxlZCB3aGVuIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGNhbmNlbGxlZCwgd2l0aCB0aGUgc2FtZSBjYXVzZS5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyBhbnk8VD4odmFsdWVzOiBJdGVyYWJsZTxUIHwgUHJvbWlzZUxpa2U8VD4+KTogQ2FuY2VsbGFibGVQcm9taXNlPEF3YWl0ZWQ8VD4+O1xuICAgIHN0YXRpYyBhbnk8VCBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSB8IFtdPih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8QXdhaXRlZDxUW251bWJlcl0+PjtcbiAgICBzdGF0aWMgYW55PFQgZXh0ZW5kcyBJdGVyYWJsZTx1bmtub3duPiB8IEFycmF5TGlrZTx1bmtub3duPj4odmFsdWVzOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgbGV0IGNvbGxlY3RlZCA9IEFycmF5LmZyb20odmFsdWVzKTtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IGNvbGxlY3RlZC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gQ2FuY2VsbGFibGVQcm9taXNlLnJlc29sdmUoY29sbGVjdGVkKVxuICAgICAgICAgICAgOiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICB2b2lkIFByb21pc2UuYW55KGNvbGxlY3RlZCkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgfSwgKGNhdXNlPyk6IFByb21pc2U8dm9pZD4gPT4gY2FuY2VsQWxsKHByb21pc2UsIGNvbGxlY3RlZCwgY2F1c2UpKTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIFByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvciByZWplY3RlZCB3aGVuIGFueSBvZiB0aGUgcHJvdmlkZWQgUHJvbWlzZXMgYXJlIHJlc29sdmVkIG9yIHJlamVjdGVkLlxuICAgICAqXG4gICAgICogRXZlcnkgb25lIG9mIHRoZSBwcm92aWRlZCBvYmplY3RzIHRoYXQgaXMgYSB0aGVuYWJsZSBfYW5kXyBjYW5jZWxsYWJsZSBvYmplY3RcbiAgICAgKiB3aWxsIGJlIGNhbmNlbGxlZCB3aGVuIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGNhbmNlbGxlZCwgd2l0aCB0aGUgc2FtZSBjYXVzZS5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyByYWNlPFQ+KHZhbHVlczogSXRlcmFibGU8VCB8IFByb21pc2VMaWtlPFQ+Pik6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFQ+PjtcbiAgICBzdGF0aWMgcmFjZTxUIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdIHwgW10+KHZhbHVlczogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFRbbnVtYmVyXT4+O1xuICAgIHN0YXRpYyByYWNlPFQgZXh0ZW5kcyBJdGVyYWJsZTx1bmtub3duPiB8IEFycmF5TGlrZTx1bmtub3duPj4odmFsdWVzOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgbGV0IGNvbGxlY3RlZCA9IEFycmF5LmZyb20odmFsdWVzKTtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdm9pZCBQcm9taXNlLnJhY2UoY29sbGVjdGVkKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0sIChjYXVzZT8pOiBQcm9taXNlPHZvaWQ+ID0+IGNhbmNlbEFsbChwcm9taXNlLCBjb2xsZWN0ZWQsIGNhdXNlKSk7XG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgY2FuY2VsbGVkIENhbmNlbGxhYmxlUHJvbWlzZSBmb3IgdGhlIHByb3ZpZGVkIGNhdXNlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIGNhbmNlbDxUID0gbmV2ZXI+KGNhdXNlPzogYW55KTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+IHtcbiAgICAgICAgY29uc3QgcCA9IG5ldyBDYW5jZWxsYWJsZVByb21pc2U8VD4oKCkgPT4ge30pO1xuICAgICAgICBwLmNhbmNlbChjYXVzZSk7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlIHRoYXQgY2FuY2Vsc1xuICAgICAqIGFmdGVyIHRoZSBzcGVjaWZpZWQgdGltZW91dCwgd2l0aCB0aGUgcHJvdmlkZWQgY2F1c2UuXG4gICAgICpcbiAgICAgKiBJZiB0aGUge0BsaW5rIEFib3J0U2lnbmFsLnRpbWVvdXR9IGZhY3RvcnkgbWV0aG9kIGlzIGF2YWlsYWJsZSxcbiAgICAgKiBpdCBpcyB1c2VkIHRvIGJhc2UgdGhlIHRpbWVvdXQgb24gX2FjdGl2ZV8gdGltZSByYXRoZXIgdGhhbiBfZWxhcHNlZF8gdGltZS5cbiAgICAgKiBPdGhlcndpc2UsIGB0aW1lb3V0YCBmYWxscyBiYWNrIHRvIHtAbGluayBzZXRUaW1lb3V0fS5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyB0aW1lb3V0PFQgPSBuZXZlcj4obWlsbGlzZWNvbmRzOiBudW1iZXIsIGNhdXNlPzogYW55KTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBDYW5jZWxsYWJsZVByb21pc2U8VD4oKCkgPT4ge30pO1xuICAgICAgICBpZiAoQWJvcnRTaWduYWwgJiYgdHlwZW9mIEFib3J0U2lnbmFsID09PSAnZnVuY3Rpb24nICYmIEFib3J0U2lnbmFsLnRpbWVvdXQgJiYgdHlwZW9mIEFib3J0U2lnbmFsLnRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIEFib3J0U2lnbmFsLnRpbWVvdXQobWlsbGlzZWNvbmRzKS5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IHZvaWQgcHJvbWlzZS5jYW5jZWwoY2F1c2UpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdm9pZCBwcm9taXNlLmNhbmNlbChjYXVzZSksIG1pbGxpc2Vjb25kcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBDYW5jZWxsYWJsZVByb21pc2UgdGhhdCByZXNvbHZlcyBhZnRlciB0aGUgc3BlY2lmaWVkIHRpbWVvdXQuXG4gICAgICogVGhlIHJldHVybmVkIHByb21pc2UgY2FuIGJlIGNhbmNlbGxlZCB3aXRob3V0IGNvbnNlcXVlbmNlcy5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyBzbGVlcChtaWxsaXNlY29uZHM6IG51bWJlcik6IENhbmNlbGxhYmxlUHJvbWlzZTx2b2lkPjtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IENhbmNlbGxhYmxlUHJvbWlzZSB0aGF0IHJlc29sdmVzIGFmdGVyXG4gICAgICogdGhlIHNwZWNpZmllZCB0aW1lb3V0LCB3aXRoIHRoZSBwcm92aWRlZCB2YWx1ZS5cbiAgICAgKiBUaGUgcmV0dXJuZWQgcHJvbWlzZSBjYW4gYmUgY2FuY2VsbGVkIHdpdGhvdXQgY29uc2VxdWVuY2VzLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHNsZWVwPFQ+KG1pbGxpc2Vjb25kczogbnVtYmVyLCB2YWx1ZTogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTxUPjtcbiAgICBzdGF0aWMgc2xlZXA8VCA9IHZvaWQ+KG1pbGxpc2Vjb25kczogbnVtYmVyLCB2YWx1ZT86IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8VD4ge1xuICAgICAgICByZXR1cm4gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTxUPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKHZhbHVlISksIG1pbGxpc2Vjb25kcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcmVqZWN0ZWQgQ2FuY2VsbGFibGVQcm9taXNlIGZvciB0aGUgcHJvdmlkZWQgcmVhc29uLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHJlamVjdDxUID0gbmV2ZXI+KHJlYXNvbj86IGFueSk6IENhbmNlbGxhYmxlUHJvbWlzZTxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPFQ+KChfLCByZWplY3QpID0+IHJlamVjdChyZWFzb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHJlc29sdmVkIENhbmNlbGxhYmxlUHJvbWlzZS5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyByZXNvbHZlKCk6IENhbmNlbGxhYmxlUHJvbWlzZTx2b2lkPjtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHJlc29sdmVkIENhbmNlbGxhYmxlUHJvbWlzZSBmb3IgdGhlIHByb3ZpZGVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHJlc29sdmU8VD4odmFsdWU6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8QXdhaXRlZDxUPj47XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyByZXNvbHZlZCBDYW5jZWxsYWJsZVByb21pc2UgZm9yIHRoZSBwcm92aWRlZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyByZXNvbHZlPFQ+KHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pOiBDYW5jZWxsYWJsZVByb21pc2U8QXdhaXRlZDxUPj47XG4gICAgc3RhdGljIHJlc29sdmU8VCA9IHZvaWQ+KHZhbHVlPzogVCB8IFByb21pc2VMaWtlPFQ+KTogQ2FuY2VsbGFibGVQcm9taXNlPEF3YWl0ZWQ8VD4+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQ2FuY2VsbGFibGVQcm9taXNlKSB7XG4gICAgICAgICAgICAvLyBPcHRpbWlzZSBmb3IgY2FuY2VsbGFibGUgcHJvbWlzZXMuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBDYW5jZWxsYWJsZVByb21pc2U8YW55PigocmVzb2x2ZSkgPT4gcmVzb2x2ZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlIGFuZCByZXR1cm5zIGl0IGluIGFuIG9iamVjdCwgYWxvbmcgd2l0aCBpdHMgcmVzb2x2ZSBhbmQgcmVqZWN0IGZ1bmN0aW9uc1xuICAgICAqIGFuZCBhIGdldHRlci9zZXR0ZXIgZm9yIHRoZSBjYW5jZWxsYXRpb24gY2FsbGJhY2suXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBwb2x5ZmlsbGVkLCBoZW5jZSBhdmFpbGFibGUgaW4gZXZlcnkgT1Mvd2VidmlldyB2ZXJzaW9uLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHdpdGhSZXNvbHZlcnM8VD4oKTogQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxUPiB7XG4gICAgICAgIGxldCByZXN1bHQ6IENhbmNlbGxhYmxlUHJvbWlzZVdpdGhSZXNvbHZlcnM8VD4gPSB7IG9uY2FuY2VsbGVkOiBudWxsIH0gYXMgYW55O1xuICAgICAgICByZXN1bHQucHJvbWlzZSA9IG5ldyBDYW5jZWxsYWJsZVByb21pc2U8VD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0LnJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICAgICAgcmVzdWx0LnJlamVjdCA9IHJlamVjdDtcbiAgICAgICAgfSwgKGNhdXNlPzogYW55KSA9PiB7IHJlc3VsdC5vbmNhbmNlbGxlZD8uKGNhdXNlKTsgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYSBjYWxsYmFjayB0aGF0IGltcGxlbWVudHMgdGhlIGNhbmNlbGxhdGlvbiBhbGdvcml0aG0gZm9yIHRoZSBnaXZlbiBjYW5jZWxsYWJsZSBwcm9taXNlLlxuICogVGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSB0aGUgcmVzdWx0aW5nIGZ1bmN0aW9uIGRvZXMgbm90IHJlamVjdC5cbiAqL1xuZnVuY3Rpb24gY2FuY2VsbGVyRm9yPFQ+KHByb21pc2U6IENhbmNlbGxhYmxlUHJvbWlzZVdpdGhSZXNvbHZlcnM8VD4sIHN0YXRlOiBDYW5jZWxsYWJsZVByb21pc2VTdGF0ZSkge1xuICAgIGxldCBjYW5jZWxsYXRpb25Qcm9taXNlOiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD4gPSB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gKHJlYXNvbjogQ2FuY2VsRXJyb3IpOiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD4gPT4ge1xuICAgICAgICBpZiAoIXN0YXRlLnNldHRsZWQpIHtcbiAgICAgICAgICAgIHN0YXRlLnNldHRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgc3RhdGUucmVhc29uID0gcmVhc29uO1xuICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVhc29uKTtcblxuICAgICAgICAgICAgLy8gQXR0YWNoIGFuIGVycm9yIGhhbmRsZXIgdGhhdCBpZ25vcmVzIHRoaXMgc3BlY2lmaWMgcmVqZWN0aW9uIHJlYXNvbiBhbmQgbm90aGluZyBlbHNlLlxuICAgICAgICAgICAgLy8gSW4gdGhlb3J5LCBhIHNhbmUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBhdCB0aGlzIHBvaW50XG4gICAgICAgICAgICAvLyBzaG91bGQgYWx3YXlzIHJlamVjdCB3aXRoIG91ciBjYW5jZWxsYXRpb24gcmVhc29uLFxuICAgICAgICAgICAgLy8gaGVuY2UgdGhlIGhhbmRsZXIgd2lsbCBuZXZlciB0aHJvdy5cbiAgICAgICAgICAgIHZvaWQgUHJvbWlzZS5wcm90b3R5cGUudGhlbi5jYWxsKHByb21pc2UucHJvbWlzZSwgdW5kZWZpbmVkLCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVyciAhPT0gcmVhc29uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHJlYXNvbiBpcyBub3Qgc2V0LCB0aGUgcHJvbWlzZSByZXNvbHZlZCByZWd1bGFybHksIGhlbmNlIHdlIG11c3Qgbm90IGNhbGwgb25jYW5jZWxsZWQuXG4gICAgICAgIC8vIElmIG9uY2FuY2VsbGVkIGlzIHVuc2V0LCBubyBuZWVkIHRvIGdvIGFueSBmdXJ0aGVyLlxuICAgICAgICBpZiAoIXN0YXRlLnJlYXNvbiB8fCAhcHJvbWlzZS5vbmNhbmNlbGxlZCkgeyByZXR1cm47IH1cblxuICAgICAgICBjYW5jZWxsYXRpb25Qcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShwcm9taXNlLm9uY2FuY2VsbGVkIShzdGF0ZS5yZWFzb24hLmNhdXNlKSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlamVjdChuZXcgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3IocHJvbWlzZS5wcm9taXNlLCBlcnIsIFwiVW5oYW5kbGVkIGV4Y2VwdGlvbiBpbiBvbmNhbmNlbGxlZCBjYWxsYmFjay5cIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaCgocmVhc29uPykgPT4ge1xuICAgICAgICAgICAgUHJvbWlzZS5yZWplY3QobmV3IENhbmNlbGxlZFJlamVjdGlvbkVycm9yKHByb21pc2UucHJvbWlzZSwgcmVhc29uLCBcIlVuaGFuZGxlZCByZWplY3Rpb24gaW4gb25jYW5jZWxsZWQgY2FsbGJhY2suXCIpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gVW5zZXQgb25jYW5jZWxsZWQgdG8gcHJldmVudCByZXBlYXRlZCBjYWxscy5cbiAgICAgICAgcHJvbWlzZS5vbmNhbmNlbGxlZCA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuIGNhbmNlbGxhdGlvblByb21pc2U7XG4gICAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYSBjYWxsYmFjayB0aGF0IGltcGxlbWVudHMgdGhlIHJlc29sdXRpb24gYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4gY2FuY2VsbGFibGUgcHJvbWlzZS5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZXJGb3I8VD4ocHJvbWlzZTogQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxUPiwgc3RhdGU6IENhbmNlbGxhYmxlUHJvbWlzZVN0YXRlKTogQ2FuY2VsbGFibGVQcm9taXNlUmVzb2x2ZXI8VD4ge1xuICAgIHJldHVybiAodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHN0YXRlLnJlc29sdmluZykgeyByZXR1cm47IH1cbiAgICAgICAgc3RhdGUucmVzb2x2aW5nID0gdHJ1ZTtcblxuICAgICAgICBpZiAodmFsdWUgPT09IHByb21pc2UucHJvbWlzZSkge1xuICAgICAgICAgICAgaWYgKHN0YXRlLnNldHRsZWQpIHsgcmV0dXJuOyB9XG4gICAgICAgICAgICBzdGF0ZS5zZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoXCJBIHByb21pc2UgY2Fubm90IGJlIHJlc29sdmVkIHdpdGggaXRzZWxmLlwiKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgICAgICBsZXQgdGhlbjogYW55O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGVuID0gKHZhbHVlIGFzIGFueSkudGhlbjtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHN0YXRlLnNldHRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNDYWxsYWJsZSh0aGVuKSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjYW5jZWwgPSAodmFsdWUgYXMgYW55KS5jYW5jZWw7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0NhbGxhYmxlKGNhbmNlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9uY2FuY2VsbGVkID0gKGNhdXNlPzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmbGVjdC5hcHBseShjYW5jZWwsIHZhbHVlLCBbY2F1c2VdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUucmVhc29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYWxyZWFkeSBjYW5jZWxsZWQsIHByb3BhZ2F0ZSBjYW5jZWxsYXRpb24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSB0aGUgY2FuY2VsbGVyIGFsZ29yaXRobSBkb2VzIG5vdCByZWplY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyBpdCBjYW4gYmUgZGlzY2FyZGVkIHNhZmVseS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIGNhbmNlbGxlckZvcih7IC4uLnByb21pc2UsIG9uY2FuY2VsbGVkIH0sIHN0YXRlKShzdGF0ZS5yZWFzb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLm9uY2FuY2VsbGVkID0gb25jYW5jZWxsZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIHt9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdTdGF0ZTogQ2FuY2VsbGFibGVQcm9taXNlU3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgICAgIHJvb3Q6IHN0YXRlLnJvb3QsXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGdldCBzZXR0bGVkKCkgeyByZXR1cm4gdGhpcy5yb290LnNldHRsZWQgfSxcbiAgICAgICAgICAgICAgICAgICAgc2V0IHNldHRsZWQodmFsdWUpIHsgdGhpcy5yb290LnNldHRsZWQgPSB2YWx1ZTsgfSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0IHJlYXNvbigpIHsgcmV0dXJuIHRoaXMucm9vdC5yZWFzb24gfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZWplY3RvciA9IHJlamVjdG9yRm9yKHByb21pc2UsIG5ld1N0YXRlKTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBSZWZsZWN0LmFwcGx5KHRoZW4sIHZhbHVlLCBbcmVzb2x2ZXJGb3IocHJvbWlzZSwgbmV3U3RhdGUpLCByZWplY3Rvcl0pO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3RvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47IC8vIElNUE9SVEFOVCFcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZS5zZXR0bGVkKSB7IHJldHVybjsgfVxuICAgICAgICBzdGF0ZS5zZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHZhbHVlKTtcbiAgICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBjYWxsYmFjayB0aGF0IGltcGxlbWVudHMgdGhlIHJlamVjdGlvbiBhbGdvcml0aG0gZm9yIHRoZSBnaXZlbiBjYW5jZWxsYWJsZSBwcm9taXNlLlxuICovXG5mdW5jdGlvbiByZWplY3RvckZvcjxUPihwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+LCBzdGF0ZTogQ2FuY2VsbGFibGVQcm9taXNlU3RhdGUpOiBDYW5jZWxsYWJsZVByb21pc2VSZWplY3RvciB7XG4gICAgcmV0dXJuIChyZWFzb24/KSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZS5yZXNvbHZpbmcpIHsgcmV0dXJuOyB9XG4gICAgICAgIHN0YXRlLnJlc29sdmluZyA9IHRydWU7XG5cbiAgICAgICAgaWYgKHN0YXRlLnNldHRsZWQpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlYXNvbiBpbnN0YW5jZW9mIENhbmNlbEVycm9yICYmIHN0YXRlLnJlYXNvbiBpbnN0YW5jZW9mIENhbmNlbEVycm9yICYmIE9iamVjdC5pcyhyZWFzb24uY2F1c2UsIHN0YXRlLnJlYXNvbi5jYXVzZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU3dhbGxvdyBsYXRlIHJlamVjdGlvbnMgdGhhdCBhcmUgQ2FuY2VsRXJyb3JzIHdob3NlIGNhbmNlbGxhdGlvbiBjYXVzZSBpcyB0aGUgc2FtZSBhcyBvdXJzLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7fVxuXG4gICAgICAgICAgICB2b2lkIFByb21pc2UucmVqZWN0KG5ldyBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcihwcm9taXNlLnByb21pc2UsIHJlYXNvbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhdGUuc2V0dGxlZCA9IHRydWU7XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdChyZWFzb24pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIENhbmNlbHMgYWxsIHZhbHVlcyBpbiBhbiBhcnJheSB0aGF0IGxvb2sgbGlrZSBjYW5jZWxsYWJsZSB0aGVuYWJsZXMuXG4gKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIG9uY2UgYWxsIGNhbmNlbGxhdGlvbiBwcm9jZWR1cmVzIGZvciB0aGUgZ2l2ZW4gdmFsdWVzIGhhdmUgc2V0dGxlZC5cbiAqL1xuZnVuY3Rpb24gY2FuY2VsQWxsKHBhcmVudDogQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+LCB2YWx1ZXM6IGFueVtdLCBjYXVzZT86IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlc3VsdHM6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgbGV0IGNhbmNlbDogQ2FuY2VsbGFibGVQcm9taXNlQ2FuY2VsbGVyO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCFpc0NhbGxhYmxlKHZhbHVlLnRoZW4pKSB7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICBjYW5jZWwgPSB2YWx1ZS5jYW5jZWw7XG4gICAgICAgICAgICBpZiAoIWlzQ2FsbGFibGUoY2FuY2VsKSkgeyBjb250aW51ZTsgfVxuICAgICAgICB9IGNhdGNoIHsgY29udGludWU7IH1cblxuICAgICAgICBsZXQgcmVzdWx0OiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD47XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHQgPSBSZWZsZWN0LmFwcGx5KGNhbmNlbCwgdmFsdWUsIFtjYXVzZV0pO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIFByb21pc2UucmVqZWN0KG5ldyBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcihwYXJlbnQsIGVyciwgXCJVbmhhbmRsZWQgZXhjZXB0aW9uIGluIGNhbmNlbCBtZXRob2QuXCIpKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFyZXN1bHQpIHsgY29udGludWU7IH1cbiAgICAgICAgcmVzdWx0cy5wdXNoKFxuICAgICAgICAgICAgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UgID8gcmVzdWx0IDogUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkpLmNhdGNoKChyZWFzb24/KSA9PiB7XG4gICAgICAgICAgICAgICAgUHJvbWlzZS5yZWplY3QobmV3IENhbmNlbGxlZFJlamVjdGlvbkVycm9yKHBhcmVudCwgcmVhc29uLCBcIlVuaGFuZGxlZCByZWplY3Rpb24gaW4gY2FuY2VsIG1ldGhvZC5cIikpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocmVzdWx0cykgYXMgYW55O1xufVxuXG4vKipcbiAqIFJldHVybnMgaXRzIGFyZ3VtZW50LlxuICovXG5mdW5jdGlvbiBpZGVudGl0eTxUPih4OiBUKTogVCB7XG4gICAgcmV0dXJuIHg7XG59XG5cbi8qKlxuICogVGhyb3dzIGl0cyBhcmd1bWVudC5cbiAqL1xuZnVuY3Rpb24gdGhyb3dlcihyZWFzb24/OiBhbnkpOiBuZXZlciB7XG4gICAgdGhyb3cgcmVhc29uO1xufVxuXG4vKipcbiAqIEF0dGVtcHRzIHZhcmlvdXMgc3RyYXRlZ2llcyB0byBjb252ZXJ0IGFuIGVycm9yIHRvIGEgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBlcnJvck1lc3NhZ2UoZXJyOiBhbnkpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvciB8fCB0eXBlb2YgZXJyICE9PSAnb2JqZWN0JyB8fCBlcnIudG9TdHJpbmcgIT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiICsgZXJyO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCB7fVxuXG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGVycik7XG4gICAgfSBjYXRjaCB7fVxuXG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlcnIpO1xuICAgIH0gY2F0Y2gge31cblxuICAgIHJldHVybiBcIjxjb3VsZCBub3QgY29udmVydCBlcnJvciB0byBzdHJpbmc+XCI7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgY3VycmVudCBiYXJyaWVyIHByb21pc2UgZm9yIHRoZSBnaXZlbiBjYW5jZWxsYWJsZSBwcm9taXNlLiBJZiBuZWNlc3NhcnksIGluaXRpYWxpc2VzIHRoZSBiYXJyaWVyLlxuICovXG5mdW5jdGlvbiBjdXJyZW50QmFycmllcjxUPihwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2U8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgcHdyOiBQYXJ0aWFsPFByb21pc2VXaXRoUmVzb2x2ZXJzPHZvaWQ+PiA9IHByb21pc2VbYmFycmllclN5bV0gPz8ge307XG4gICAgaWYgKCEoJ3Byb21pc2UnIGluIHB3cikpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwd3IsIHByb21pc2VXaXRoUmVzb2x2ZXJzPHZvaWQ+KCkpO1xuICAgIH1cbiAgICBpZiAocHJvbWlzZVtiYXJyaWVyU3ltXSA9PSBudWxsKSB7XG4gICAgICAgIHB3ci5yZXNvbHZlISgpO1xuICAgICAgICBwcm9taXNlW2JhcnJpZXJTeW1dID0gcHdyO1xuICAgIH1cbiAgICByZXR1cm4gcHdyLnByb21pc2UhO1xufVxuXG4vLyBQb2x5ZmlsbCBQcm9taXNlLndpdGhSZXNvbHZlcnMuXG5sZXQgcHJvbWlzZVdpdGhSZXNvbHZlcnMgPSBQcm9taXNlLndpdGhSZXNvbHZlcnM7XG5pZiAocHJvbWlzZVdpdGhSZXNvbHZlcnMgJiYgdHlwZW9mIHByb21pc2VXaXRoUmVzb2x2ZXJzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcHJvbWlzZVdpdGhSZXNvbHZlcnMgPSBwcm9taXNlV2l0aFJlc29sdmVycy5iaW5kKFByb21pc2UpO1xufSBlbHNlIHtcbiAgICBwcm9taXNlV2l0aFJlc29sdmVycyA9IGZ1bmN0aW9uIDxUPigpOiBQcm9taXNlV2l0aFJlc29sdmVyczxUPiB7XG4gICAgICAgIGxldCByZXNvbHZlITogKHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQ7XG4gICAgICAgIGxldCByZWplY3QhOiAocmVhc29uPzogYW55KSA9PiB2b2lkO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8VD4oKHJlcywgcmVqKSA9PiB7IHJlc29sdmUgPSByZXM7IHJlamVjdCA9IHJlajsgfSk7XG4gICAgICAgIHJldHVybiB7IHByb21pc2UsIHJlc29sdmUsIHJlamVjdCB9O1xuICAgIH1cbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHtuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lc30gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5DbGlwYm9hcmQpO1xuXG5jb25zdCBDbGlwYm9hcmRTZXRUZXh0ID0gMDtcbmNvbnN0IENsaXBib2FyZFRleHQgPSAxO1xuXG4vKipcbiAqIFNldHMgdGhlIHRleHQgdG8gdGhlIENsaXBib2FyZC5cbiAqXG4gKiBAcGFyYW0gdGV4dCAtIFRoZSB0ZXh0IHRvIGJlIHNldCB0byB0aGUgQ2xpcGJvYXJkLlxuICogQHJldHVybiBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgc3VjY2Vzc2Z1bC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFNldFRleHQodGV4dDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGNhbGwoQ2xpcGJvYXJkU2V0VGV4dCwge3RleHR9KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIENsaXBib2FyZCB0ZXh0XG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdGV4dCBmcm9tIHRoZSBDbGlwYm9hcmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGNhbGwoQ2xpcGJvYXJkVGV4dCk7XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2l6ZSB7XG4gICAgLyoqIFRoZSB3aWR0aCBvZiBhIHJlY3Rhbmd1bGFyIGFyZWEuICovXG4gICAgV2lkdGg6IG51bWJlcjtcbiAgICAvKiogVGhlIGhlaWdodCBvZiBhIHJlY3Rhbmd1bGFyIGFyZWEuICovXG4gICAgSGVpZ2h0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjdCB7XG4gICAgLyoqIFRoZSBYIGNvb3JkaW5hdGUgb2YgdGhlIG9yaWdpbi4gKi9cbiAgICBYOiBudW1iZXI7XG4gICAgLyoqIFRoZSBZIGNvb3JkaW5hdGUgb2YgdGhlIG9yaWdpbi4gKi9cbiAgICBZOiBudW1iZXI7XG4gICAgLyoqIFRoZSB3aWR0aCBvZiB0aGUgcmVjdGFuZ2xlLiAqL1xuICAgIFdpZHRoOiBudW1iZXI7XG4gICAgLyoqIFRoZSBoZWlnaHQgb2YgdGhlIHJlY3RhbmdsZS4gKi9cbiAgICBIZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3JlZW4ge1xuICAgIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHNjcmVlbi4gKi9cbiAgICBJRDogc3RyaW5nO1xuICAgIC8qKiBIdW1hbi1yZWFkYWJsZSBuYW1lIG9mIHRoZSBzY3JlZW4uICovXG4gICAgTmFtZTogc3RyaW5nO1xuICAgIC8qKiBUaGUgc2NhbGUgZmFjdG9yIG9mIHRoZSBzY3JlZW4gKERQSS85NikuIDEgPSBzdGFuZGFyZCBEUEksIDIgPSBIaURQSSAoUmV0aW5hKSwgZXRjLiAqL1xuICAgIFNjYWxlRmFjdG9yOiBudW1iZXI7XG4gICAgLyoqIFRoZSBYIGNvb3JkaW5hdGUgb2YgdGhlIHNjcmVlbi4gKi9cbiAgICBYOiBudW1iZXI7XG4gICAgLyoqIFRoZSBZIGNvb3JkaW5hdGUgb2YgdGhlIHNjcmVlbi4gKi9cbiAgICBZOiBudW1iZXI7XG4gICAgLyoqIENvbnRhaW5zIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBzY3JlZW4uICovXG4gICAgU2l6ZTogU2l6ZTtcbiAgICAvKiogQ29udGFpbnMgdGhlIGJvdW5kcyBvZiB0aGUgc2NyZWVuIGluIHRlcm1zIG9mIFgsIFksIFdpZHRoLCBhbmQgSGVpZ2h0LiAqL1xuICAgIEJvdW5kczogUmVjdDtcbiAgICAvKiogQ29udGFpbnMgdGhlIHBoeXNpY2FsIGJvdW5kcyBvZiB0aGUgc2NyZWVuIGluIHRlcm1zIG9mIFgsIFksIFdpZHRoLCBhbmQgSGVpZ2h0IChiZWZvcmUgc2NhbGluZykuICovXG4gICAgUGh5c2ljYWxCb3VuZHM6IFJlY3Q7XG4gICAgLyoqIENvbnRhaW5zIHRoZSBhcmVhIG9mIHRoZSBzY3JlZW4gdGhhdCBpcyBhY3R1YWxseSB1c2FibGUgKGV4Y2x1ZGluZyB0YXNrYmFyIGFuZCBvdGhlciBzeXN0ZW0gVUkpLiAqL1xuICAgIFdvcmtBcmVhOiBSZWN0O1xuICAgIC8qKiBDb250YWlucyB0aGUgcGh5c2ljYWwgV29ya0FyZWEgb2YgdGhlIHNjcmVlbiAoYmVmb3JlIHNjYWxpbmcpLiAqL1xuICAgIFBoeXNpY2FsV29ya0FyZWE6IFJlY3Q7XG4gICAgLyoqIFRydWUgaWYgdGhpcyBpcyB0aGUgcHJpbWFyeSBtb25pdG9yIHNlbGVjdGVkIGJ5IHRoZSB1c2VyIGluIHRoZSBvcGVyYXRpbmcgc3lzdGVtLiAqL1xuICAgIElzUHJpbWFyeTogYm9vbGVhbjtcbiAgICAvKiogVGhlIHJvdGF0aW9uIG9mIHRoZSBzY3JlZW4uICovXG4gICAgUm90YXRpb246IG51bWJlcjtcbn1cblxuaW1wb3J0IHsgbmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXMgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5TY3JlZW5zKTtcblxuY29uc3QgZ2V0QWxsID0gMDtcbmNvbnN0IGdldFByaW1hcnkgPSAxO1xuY29uc3QgZ2V0Q3VycmVudCA9IDI7XG5jb25zdCBnZXRCeUlEID0gMztcbmNvbnN0IGdldEJ5SW5kZXggPSA0O1xuXG4vKipcbiAqIEdldHMgYWxsIHNjcmVlbnMuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXJyYXkgb2YgU2NyZWVuIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBHZXRBbGwoKTogUHJvbWlzZTxTY3JlZW5bXT4ge1xuICAgIHJldHVybiBjYWxsKGdldEFsbCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgcHJpbWFyeSBzY3JlZW4uXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHByaW1hcnkgc2NyZWVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gR2V0UHJpbWFyeSgpOiBQcm9taXNlPFNjcmVlbj4ge1xuICAgIHJldHVybiBjYWxsKGdldFByaW1hcnkpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGN1cnJlbnQgYWN0aXZlIHNjcmVlbi5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBjdXJyZW50IGFjdGl2ZSBzY3JlZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBHZXRDdXJyZW50KCk6IFByb21pc2U8U2NyZWVuPiB7XG4gICAgcmV0dXJuIGNhbGwoZ2V0Q3VycmVudCk7XG59XG5cbi8qKlxuICogR2V0cyBhIHNjcmVlbiBieSBpdHMgdW5pcXVlIGRpc3BsYXkgSUQuXG4gKlxuICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBzY3JlZW4uXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbWF0Y2hpbmcgU2NyZWVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gR2V0QnlJRChpZDogc3RyaW5nKTogUHJvbWlzZTxTY3JlZW4+IHtcbiAgICByZXR1cm4gY2FsbChnZXRCeUlELCB7IGlkIH0pO1xufVxuXG4vKipcbiAqIEdldHMgYSBzY3JlZW4gYnkgaXRzIGluZGV4IGluIHRoZSBzY3JlZW4gbGlzdC5cbiAqXG4gKiBAcGFyYW0gaW5kZXggLSBUaGUgemVyby1iYXNlZCBpbmRleCBvZiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG1hdGNoaW5nIFNjcmVlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldEJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IFByb21pc2U8U2NyZWVuPiB7XG4gICAgcmV0dXJuIGNhbGwoZ2V0QnlJbmRleCwgeyBpbmRleCB9KTtcbn1cbiIsICIvKlxuIF8gICAgIF9fICAgICBfIF9fXG58IHwgIC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHsgbmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXMgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLklPUyk7XG5cbi8vIE1ldGhvZCBJRHNcbmNvbnN0IEhhcHRpY3NJbXBhY3QgPSAwO1xuY29uc3QgRGV2aWNlSW5mbyA9IDE7XG5cbmV4cG9ydCBuYW1lc3BhY2UgSGFwdGljcyB7XG4gICAgZXhwb3J0IHR5cGUgSW1wYWN0U3R5bGUgPSBcImxpZ2h0XCJ8XCJtZWRpdW1cInxcImhlYXZ5XCJ8XCJzb2Z0XCJ8XCJyaWdpZFwiO1xuICAgIGV4cG9ydCBmdW5jdGlvbiBJbXBhY3Qoc3R5bGU6IEltcGFjdFN0eWxlID0gXCJtZWRpdW1cIik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gY2FsbChIYXB0aWNzSW1wYWN0LCB7IHN0eWxlIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBEZXZpY2Uge1xuICAgIGV4cG9ydCBpbnRlcmZhY2UgSW5mbyB7XG4gICAgICAgIG1vZGVsOiBzdHJpbmc7XG4gICAgICAgIHN5c3RlbU5hbWU6IHN0cmluZztcbiAgICAgICAgc3lzdGVtVmVyc2lvbjogc3RyaW5nO1xuICAgICAgICBpc1NpbXVsYXRvcjogYm9vbGVhbjtcbiAgICB9XG4gICAgZXhwb3J0IGZ1bmN0aW9uIEluZm8oKTogUHJvbWlzZTxJbmZvPiB7XG4gICAgICAgIHJldHVybiBjYWxsKERldmljZUluZm8pO1xuICAgIH1cbn1cbiIsICIvKlxuIF8gICAgIF9fICAgICBfIF9fXG58IHwgIC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHsgbmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXMgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkFuZHJvaWQpO1xuXG4vLyBNZXRob2QgSURzIChtdXN0IG1hdGNoIG1lc3NhZ2Vwcm9jZXNzb3JfYW5kcm9pZC5nbylcbmNvbnN0IEhhcHRpY3NWaWJyYXRlID0gMDtcbmNvbnN0IERldmljZUluZm8gPSAxO1xuY29uc3QgVG9hc3RTaG93ID0gMjtcblxuZXhwb3J0IG5hbWVzcGFjZSBIYXB0aWNzIHtcbiAgICAvKiogVmlicmF0ZSB0aGUgZGV2aWNlIGZvciB0aGUgZ2l2ZW4gZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBWaWJyYXRlKGR1cmF0aW9uTXM6IG51bWJlciA9IDEwMCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gY2FsbChIYXB0aWNzVmlicmF0ZSwgeyBkdXJhdGlvbjogZHVyYXRpb25NcyB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgRGV2aWNlIHtcbiAgICBleHBvcnQgaW50ZXJmYWNlIEluZm8ge1xuICAgICAgICBwbGF0Zm9ybTogc3RyaW5nO1xuICAgICAgICBtYW51ZmFjdHVyZXI6IHN0cmluZztcbiAgICAgICAgYnJhbmQ6IHN0cmluZztcbiAgICAgICAgbW9kZWw6IHN0cmluZztcbiAgICAgICAgZGV2aWNlOiBzdHJpbmc7XG4gICAgICAgIHZlcnNpb246IHN0cmluZztcbiAgICAgICAgc2RrSW50OiBudW1iZXI7XG4gICAgfVxuICAgIC8qKiBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIEFuZHJvaWQgZGV2aWNlLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBJbmZvKCk6IFByb21pc2U8SW5mbz4ge1xuICAgICAgICByZXR1cm4gY2FsbChEZXZpY2VJbmZvKTtcbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgVG9hc3Qge1xuICAgIC8qKiBTaG93IGEgc2hvcnQgQW5kcm9pZCB0b2FzdCBtZXNzYWdlLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBTaG93KG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gY2FsbChUb2FzdFNob3csIHsgbWVzc2FnZSB9KTtcbiAgICB9XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbi8qKlxuICogVXBkYXRlciBldmVudCBuYW1lIGNvbnN0YW50cy5cbiAqXG4gKiBVc2UgdGhlc2UgaW5zdGVhZCBvZiBoYXJkLWNvZGluZyBzdHJpbmcgbGl0ZXJhbHMgd2hlbiBzdWJzY3JpYmluZyB0b1xuICogdXBkYXRlciBldmVudHMgZnJvbSBKYXZhU2NyaXB0OlxuICpcbiAqICAgICBpbXBvcnQgeyBFdmVudHMsIFVwZGF0ZXIgfSBmcm9tIFwiQHdhaWxzaW8vcnVudGltZVwiO1xuICpcbiAqICAgICBFdmVudHMuT24oVXBkYXRlci5FdmVudHMuVXBkYXRlQXZhaWxhYmxlLCAoZSkgPT4ge1xuICogICAgICAgICBjb25zb2xlLmxvZyhcInVwZGF0ZSBmb3VuZDpcIiwgZS5kYXRhLnZlcnNpb24pO1xuICogICAgIH0pO1xuICpcbiAqICAgICBFdmVudHMuT24oVXBkYXRlci5FdmVudHMuRG93bmxvYWRQcm9ncmVzcywgKGUpID0+IHtcbiAqICAgICAgICAgY29uc3QgcCA9IGUuZGF0YTtcbiAqICAgICAgICAgY29uc29sZS5sb2coYCR7cC53cml0dGVufSAvICR7cC50b3RhbH0gYnl0ZXNgKTtcbiAqICAgICB9KTtcbiAqXG4gKiBNaXJyb3JzIHRoZSBHby1zaWRlIGNvbnN0YW50cyBpbiBgcGtnL3VwZGF0ZXIvZXZlbnRzLmdvYCBhbmQgdGhlXG4gKiB1c2VyLWFjdGlvbiBjb25zdGFudHMgaW4gYHBrZy91cGRhdGVyL3dpbmRvd19saWZlY3ljbGUuZ29gLiBBbnlcbiAqIGNoYW5nZXMgaGVyZSBtdXN0IHN0YXkgaW4gc3luYyB3aXRoIHRob3NlIGZpbGVzIFx1MjAxNCB0aGVyZSdzIGFuXG4gKiBpbnRlZ3JhdGlvbiB0ZXN0IHRoYXQgYXNzZXJ0cyB0aGUgc3RyaW5ncyBtYXRjaC5cbiAqL1xuZXhwb3J0IGNvbnN0IEV2ZW50cyA9IE9iamVjdC5mcmVlemUoe1xuICAgIC8qKiBBIENoZWNrIHJvdW5kLXRyaXAgaXMgc3RhcnRpbmcuIFBheWxvYWQ6IG51bGwuICovXG4gICAgQ2hlY2tTdGFydGVkOiBcIndhaWxzOnVwZGF0ZXI6Y2hlY2stc3RhcnRlZFwiLFxuICAgIC8qKiBDaGVjayBmb3VuZCBhIG5ld2VyIHJlbGVhc2UuIFBheWxvYWQ6IFJlbGVhc2UuICovXG4gICAgVXBkYXRlQXZhaWxhYmxlOiBcIndhaWxzOnVwZGF0ZXI6dXBkYXRlLWF2YWlsYWJsZVwiLFxuICAgIC8qKiBDaGVjayBjb25maXJtZWQgdGhlIGNhbGxlciBpcyB1cCB0byBkYXRlLiBQYXlsb2FkOiBudWxsLiAqL1xuICAgIE5vVXBkYXRlOiBcIndhaWxzOnVwZGF0ZXI6bm8tdXBkYXRlXCIsXG4gICAgLyoqIERvd25sb2FkIGlzIHN0YXJ0aW5nLiBQYXlsb2FkOiBSZWxlYXNlLiAqL1xuICAgIERvd25sb2FkU3RhcnRlZDogXCJ3YWlsczp1cGRhdGVyOmRvd25sb2FkLXN0YXJ0ZWRcIixcbiAgICAvKiogUGVyaW9kaWMgcHJvZ3Jlc3MgdGljayBkdXJpbmcgZG93bmxvYWQgKH4xMCBIeikuIFBheWxvYWQ6IFByb2dyZXNzLiAqL1xuICAgIERvd25sb2FkUHJvZ3Jlc3M6IFwid2FpbHM6dXBkYXRlcjpkb3dubG9hZC1wcm9ncmVzc1wiLFxuICAgIC8qKiBBbGwgYnl0ZXMgYXJlIG9uIGRpc2ssIGJ1dCB2ZXJpZmljYXRpb24gaGFzIG5vdCB5ZXQgc3RhcnRlZC4gUGF5bG9hZDogUmVsZWFzZS4gKi9cbiAgICBEb3dubG9hZENvbXBsZXRlOiBcIndhaWxzOnVwZGF0ZXI6ZG93bmxvYWQtY29tcGxldGVcIixcbiAgICAvKiogU2lnbmF0dXJlIC8gZGlnZXN0IHZlcmlmaWNhdGlvbiBoYXMgc3RhcnRlZC4gUGF5bG9hZDogUmVsZWFzZS4gKi9cbiAgICBWZXJpZnlpbmc6IFwid2FpbHM6dXBkYXRlcjp2ZXJpZnlpbmdcIixcbiAgICAvKiogVGhlIFVwZGF0ZXIgaXMgc3dhcHBpbmcgdGhlIGJpbmFyeSBpbnRvIHBsYWNlLiBQYXlsb2FkOiBSZWxlYXNlLiAqL1xuICAgIEluc3RhbGxpbmc6IFwid2FpbHM6dXBkYXRlcjppbnN0YWxsaW5nXCIsXG4gICAgLyoqIFVwZGF0ZSBpcyBzdGFnZWQgYW5kIGEgcmVzdGFydCBpcyBwZW5kaW5nLiBQYXlsb2FkOiBSZWxlYXNlLiAqL1xuICAgIFVwZGF0ZVJlYWR5OiBcIndhaWxzOnVwZGF0ZXI6dXBkYXRlLXJlYWR5XCIsXG4gICAgLyoqIFNvbWV0aGluZyBmYWlsZWQuIFBheWxvYWQ6IEVycm9ySW5mbyB7IHN0YWdlLCBtZXNzYWdlLCBwcm92aWRlciB9LiAqL1xuICAgIEVycm9yOiBcIndhaWxzOnVwZGF0ZXI6ZXJyb3JcIixcbiAgICAvKiogSG9zdC1zaWRlIGNvbnRleHQgZGVsaXZlcmVkIG9uY2UgcGVyIHNlc3Npb24uIFBheWxvYWQ6IE1ldGEgeyBjdXJyZW50VmVyc2lvbiwgc2tpcHBlZFZlcnNpb24gfS4gKi9cbiAgICBNZXRhOiBcIndhaWxzOnVwZGF0ZXI6bWV0YVwiLFxuXG4gICAgLyoqIFN1Yi1uYW1lc3BhY2U6IHVzZXItYWN0aW9uIGV2ZW50cyB0aGF0IHRoZSBVSSBlbWl0cyBCQUNLIHRvIHRoZSBob3N0LiAqL1xuICAgIFVzZXI6IE9iamVjdC5mcmVlemUoe1xuICAgICAgICAvKiogVXNlciBjbGlja2VkIEluc3RhbGwgb24gYW4gQXZhaWxhYmxlIHVwZGF0ZS4gKi9cbiAgICAgICAgSW5zdGFsbDogXCJ3YWlsczp1cGRhdGVyOnVzZXI6aW5zdGFsbFwiLFxuICAgICAgICAvKiogVXNlciBjbGlja2VkIFJlc3RhcnQgJiBBcHBseSBvbiBhIFJlYWR5IHVwZGF0ZS4gKi9cbiAgICAgICAgUmVzdGFydDogXCJ3YWlsczp1cGRhdGVyOnVzZXI6cmVzdGFydFwiLFxuICAgICAgICAvKiogVXNlciBjbGlja2VkIFNraXAgVGhpcyBWZXJzaW9uLiAqL1xuICAgICAgICBTa2lwOiBcIndhaWxzOnVwZGF0ZXI6dXNlcjpza2lwXCIsXG4gICAgICAgIC8qKiBVc2VyIGNsaWNrZWQgUmVtaW5kIE1lIExhdGVyLiAqL1xuICAgICAgICBSZW1pbmQ6IFwid2FpbHM6dXBkYXRlcjp1c2VyOnJlbWluZFwiLFxuICAgICAgICAvKiogVXNlciBjbGlja2VkIENsb3NlIC8gQ2FuY2VsLiAqL1xuICAgICAgICBDYW5jZWw6IFwid2FpbHM6dXBkYXRlcjp1c2VyOmNhbmNlbFwiLFxuICAgIH0pLFxuXG4gICAgLyoqIFN1Yi1uYW1lc3BhY2U6IGZyYW1ld29yay1pbnRlcm5hbCBldmVudHMgdGhlIFVJIGVtaXRzIHRvIGNvb3JkaW5hdGVcbiAgICAgKiAgd2l0aCB0aGUgaG9zdC4gTW9zdCBhcHAgY29kZSBjYW4gaWdub3JlIHRoZXNlLiAqL1xuICAgIFdpbmRvdzogT2JqZWN0LmZyZWV6ZSh7XG4gICAgICAgIC8qKiBUaGUgd2luZG93IGZpbmlzaGVkIGxvYWRpbmcgYW5kIGFza3MgdGhlIGhvc3QgdG8gcmVwbGF5IGN1cnJlbnQgc3RhdGUuICovXG4gICAgICAgIFJlYWR5OiBcIndhaWxzOnVwZGF0ZXI6d2luZG93OnJlYWR5XCIsXG4gICAgfSksXG59KTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQTtBQUFBO0FBQUE7QUFBQTs7O0FDNkJBLElBQU0sY0FDRjtBQUVHLFNBQVMsT0FBTyxPQUFlLElBQVk7QUFDOUMsTUFBSSxLQUFLO0FBRVQsTUFBSSxJQUFJLE9BQU87QUFDZixTQUFPLEtBQUs7QUFFUixVQUFNLFlBQWEsS0FBSyxPQUFPLElBQUksS0FBTSxDQUFDO0FBQUEsRUFDOUM7QUFDQSxTQUFPO0FBQ1g7OztBQ3hCTyxJQUFNLFNBQVMsT0FBTyxXQUFXLGVBQWUsT0FBTyxhQUFhOzs7QUNGM0UsU0FBUyxhQUFxQjtBQUMxQixTQUFPLE9BQU8sU0FBUyxTQUFTO0FBQ3BDO0FBR0Es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QUFBQSxFQUlELFFBQVEsT0FBTyxPQUFPO0FBQUE7QUFBQSxJQUVsQixPQUFPO0FBQUEsRUFDWCxDQUFDO0FBQ0wsQ0FBQzs7O0ExQi9ERCxJQUFJLFFBQVE7QUFDUixTQUFPLFNBQVMsT0FBTyxVQUFVLENBQUM7QUFDdEM7QUE0REEsSUFBSSxRQUFRO0FBQ1IsU0FBTyxPQUFPLFNBQWdCO0FBQzlCLFNBQU8sT0FBTyxXQUFXO0FBQzdCO0FBS0EsSUFBSSxRQUFRO0FBQ1IsU0FBTyxPQUFPLHlCQUF5QixlQUFPLHVCQUF1QixLQUFLLGNBQU07QUFDcEY7QUFHQSxJQUFJLFFBQVE7QUFDUixTQUFPLE9BQU8sa0JBQWtCO0FBQ2hDLFNBQU8sT0FBTyxrQkFBa0I7QUFDaEMsU0FBTyxPQUFPLGlCQUFpQjtBQUNuQztBQUVBLElBQUksUUFBUTtBQUNSLEVBQU8sT0FBTyxxQkFBcUI7QUFDdkM7QUFPTyxTQUFTLG1CQUFtQixLQUE0QjtBQUMzRCxTQUFPLE1BQU0sS0FBSyxFQUFFLFFBQVEsT0FBTyxDQUFDLEVBQy9CLEtBQUssY0FBWTtBQUNkLFFBQUksU0FBUyxJQUFJO0FBR2IsWUFBTSxlQUFlLFNBQVMsUUFBUSxJQUFJLGNBQWMsS0FBSyxJQUFJLFlBQVk7QUFDN0UsVUFBSSxZQUFZLFNBQVMsWUFBWSxHQUFHO0FBQ3BDLGNBQU0sU0FBUyxTQUFTLGNBQWMsUUFBUTtBQUM5QyxlQUFPLE1BQU07QUFDYixpQkFBUyxLQUFLLFlBQVksTUFBTTtBQUFBLE1BQ3BDO0FBQUEsSUFDSjtBQUFBLEVBQ0osQ0FBQyxFQUNBLE1BQU0sTUFBTTtBQUFBLEVBQUMsQ0FBQztBQUN2QjtBQUdBLElBQUksUUFBUTtBQUNSLHFCQUFtQixrQkFBa0I7QUFDekM7IiwKICAibmFtZXMiOiBbIl9hIiwgIkVycm9yIiwgImNhbGwiLCAiRXJyb3IiLCAiX2EiLCAiQXJyYXkiLCAiTWFwIiwgIkFycmF5IiwgIk1hcCIsICJrZXkiLCAiY2FsbCIsICJfYSIsICJfYSIsICJyZXNpemFibGUiLCAiX2EiLCAiY2FsbCIsICJfYSIsICJjYWxsIiwgIl9hIiwgImNhbGwiLCAiSGlkZU1ldGhvZCIsICJTaG93TWV0aG9kIiwgImlzRG9jdW1lbnREb3RBbGwiLCAiX2EiLCAicmVhc29uIiwgInZhbHVlIiwgImNhbGwiLCAiY2FsbCIsICJjYWxsIiwgImNhbGwiLCAiSGFwdGljcyIsICJEZXZpY2UiLCAiSW5mbyIsICJEZXZpY2UiLCAiSGFwdGljcyIsICJjYWxsIiwgIkRldmljZUluZm8iLCAiSGFwdGljcyIsICJEZXZpY2UiLCAiSW5mbyIsICJUb2FzdCIsICJTaG93IiwgIkV2ZW50cyIsICJFdmVudHMiXQp9Cg== diff --git a/v3/internal/assetserver/bundledassets/runtime.js b/v3/internal/assetserver/bundledassets/runtime.js index 7fc6b8a82de..b0453819564 100644 --- a/v3/internal/assetserver/bundledassets/runtime.js +++ b/v3/internal/assetserver/bundledassets/runtime.js @@ -1 +1 @@ -var ln=Object.defineProperty,zn=Object.defineProperties;var Hn=Object.getOwnPropertyDescriptors;var an=Object.getOwnPropertySymbols;var Vn=Object.prototype.hasOwnProperty,Zn=Object.prototype.propertyIsEnumerable;var sn=(n,e,i)=>e in n?ln(n,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[e]=i,N=(n,e)=>{for(var i in e||(e={}))Vn.call(e,i)&&sn(n,i,e[i]);if(an)for(var i of an(e))Zn.call(e,i)&&sn(n,i,e[i]);return n},j=(n,e)=>zn(n,Hn(e));var p=(n,e)=>{for(var i in e)ln(n,i,{get:e[i],enumerable:!0})};var Te={};p(Te,{Android:()=>on,Application:()=>Ne,Browser:()=>we,Call:()=>Ge,CancelError:()=>B,CancellablePromise:()=>Y,CancelledRejectionError:()=>D,Clipboard:()=>Ye,Create:()=>ge,Dialogs:()=>fe,Events:()=>be,Flags:()=>Re,IOS:()=>qe,Screens:()=>Xe,System:()=>Ae,Updater:()=>rn,WML:()=>Se,Window:()=>A,clientId:()=>x,getTransport:()=>un,loadOptionalScript:()=>jn,objectNames:()=>c,setTransport:()=>mn});var Se={};p(Se,{Enable:()=>Pe,Reload:()=>Pn});var we={};p(we,{OpenURL:()=>ue});var _n="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";function M(n=21){let e="",i=n|0;for(;i--;)e+=_n[Math.random()*64|0];return e}var w=typeof window<"u"&&typeof document<"u";function Kn(){return window.location.origin+"/wails/runtime"}var z=512*1024;var c=Object.freeze({Call:0,Clipboard:1,Application:2,Events:3,ContextMenu:4,Dialog:5,Window:6,Screens:7,System:8,Browser:9,CancelCall:10,IOS:11,Android:12}),x=M(),H=null;function mn(n){H=n}function un(){return H}function u(n,e=""){return function(i,t=null){return Gn(n,i,e,t)}}async function Gn(n,e,i,t){var f,y;if(H)return H.call(n,e,i,t);let o=new URL(Kn()),a={object:n,method:e};t!=null&&(a.args=t);let r={"x-wails-client-id":x,"Content-Type":"application/json"};i&&(r["x-wails-window-name"]=i);let l=JSON.stringify(a),d;if(l.length>z?d=await Yn(o,r,l):d=await fetch(o,{method:"POST",headers:r,body:l}),!d.ok)throw new Error(await d.text());return((y=(f=d.headers.get("Content-Type"))==null?void 0:f.indexOf("application/json"))!=null?y:-1)!==-1?d.json():d.text()}async function Yn(n,e,i){let t=M(),o=new TextEncoder().encode(i),a=Math.ceil(o.length/z);for(let r=0;r{var a;let o=n.get(e);if(o){if(n.delete(e),t){o.reject(new Error(t));return}try{let r=JSON.parse(i!=null?i:"{}");if(!r.ok){o.reject(new Error((a=r.error)!=null?a:"unknown runtime call error"));return}o.resolve("text"in r?r.text:r.data)}catch(r){o.reject(r)}}},H={call(e,i,t,o){return new Promise((a,r)=>{let l=M();n.set(l,{resolve:a,reject:r});try{dn.invokeAsync(l,JSON.stringify({object:e,method:i,windowName:t,args:o!=null?o:null,clientId:x}))}catch(d){n.delete(l),r(d)}})}}}var Xn=u(c.Browser),Jn=0;function ue(n){return Xn(Jn,{url:n.toString()})}var fe={};p(fe,{Error:()=>ai,Info:()=>oi,OpenFile:()=>si,Question:()=>pe,SaveFile:()=>li,Warning:()=>ri});w&&(window._wails=window._wails||{});var Qn=u(c.Dialog),qn=0,$n=1,ei=2,ni=3,ii=4,ti=5;function E(n,e={}){return Qn(n,e)}function oi(n){return E(qn,n)}function ri(n){return E($n,n)}function ai(n){return E(ei,n)}function pe(n){return E(ni,n)}function si(n){var e;return(e=E(ii,n))!=null?e:[]}function li(n){return E(ti,n)}var be={};p(be,{Emit:()=>We,Off:()=>vi,OffAll:()=>Di,On:()=>bi,OnMultiple:()=>he,Once:()=>yi,Types:()=>fi,WailsEvent:()=>V});var g=new Map,q=class{constructor(e,i,t){this.eventName=e,this.callback=i,this.maxCallbacks=t||-1}dispatch(e){try{this.callback(e)}catch(i){}return this.maxCallbacks===-1?!1:(this.maxCallbacks-=1,this.maxCallbacks===0)}};function wn(n){let e=g.get(n.eventName);e&&(e=e.filter(i=>i!==n),e.length===0?g.delete(n.eventName):g.set(n.eventName,e))}var ge={};p(ge,{Any:()=>C,Array:()=>ci,ByteSlice:()=>di,DateFromTime:()=>pi,Events:()=>$,Map:()=>mi,Nullable:()=>ui,Struct:()=>wi});function C(n){return n}function di(n){return n==null?"":n}function ci(n){return n===C?e=>e===null?[]:e:e=>{if(e===null)return[];for(let i=0;ii===null?{}:i:i=>{if(i===null)return{};for(let t in i)i[t]=e(i[t]);return i}}function ui(n){return n===C?C:e=>e===null?null:n(e)}function wi(n){let e=!0;for(let i in n)if(n[i]!==C){e=!1;break}return e?C:i=>{for(let t in n)t in i&&(i[t]=n[t](i[t]));return i}}function pi(n){return new Date(n)}var $={};var fi=Object.freeze({Windows:Object.freeze({APMPowerSettingChange:"windows:APMPowerSettingChange",APMPowerStatusChange:"windows:APMPowerStatusChange",APMResumeAutomatic:"windows:APMResumeAutomatic",APMResumeSuspend:"windows:APMResumeSuspend",APMSuspend:"windows:APMSuspend",ApplicationStarted:"windows:ApplicationStarted",SystemThemeChanged:"windows:SystemThemeChanged",WebViewNavigationCompleted:"windows:WebViewNavigationCompleted",WindowActive:"windows:WindowActive",WindowBackgroundErase:"windows:WindowBackgroundErase",WindowClickActive:"windows:WindowClickActive",WindowClosing:"windows:WindowClosing",WindowDidMove:"windows:WindowDidMove",WindowDidResize:"windows:WindowDidResize",WindowDPIChanged:"windows:WindowDPIChanged",WindowDragDrop:"windows:WindowDragDrop",WindowDragEnter:"windows:WindowDragEnter",WindowDragLeave:"windows:WindowDragLeave",WindowDragOver:"windows:WindowDragOver",WindowEndMove:"windows:WindowEndMove",WindowEndResize:"windows:WindowEndResize",WindowFullscreen:"windows:WindowFullscreen",WindowHide:"windows:WindowHide",WindowInactive:"windows:WindowInactive",WindowKeyDown:"windows:WindowKeyDown",WindowKeyUp:"windows:WindowKeyUp",WindowKillFocus:"windows:WindowKillFocus",WindowNonClientHit:"windows:WindowNonClientHit",WindowNonClientMouseDown:"windows:WindowNonClientMouseDown",WindowNonClientMouseLeave:"windows:WindowNonClientMouseLeave",WindowNonClientMouseMove:"windows:WindowNonClientMouseMove",WindowNonClientMouseUp:"windows:WindowNonClientMouseUp",WindowPaint:"windows:WindowPaint",WindowRestore:"windows:WindowRestore",WindowSetFocus:"windows:WindowSetFocus",WindowShow:"windows:WindowShow",WindowStartMove:"windows:WindowStartMove",WindowStartResize:"windows:WindowStartResize",WindowUnFullscreen:"windows:WindowUnFullscreen",WindowZOrderChanged:"windows:WindowZOrderChanged",WindowMinimise:"windows:WindowMinimise",WindowUnMinimise:"windows:WindowUnMinimise",WindowMaximise:"windows:WindowMaximise",WindowUnMaximise:"windows:WindowUnMaximise"}),Mac:Object.freeze({ApplicationDidBecomeActive:"mac:ApplicationDidBecomeActive",ApplicationDidChangeBackingProperties:"mac:ApplicationDidChangeBackingProperties",ApplicationDidChangeEffectiveAppearance:"mac:ApplicationDidChangeEffectiveAppearance",ApplicationDidChangeIcon:"mac:ApplicationDidChangeIcon",ApplicationDidChangeOcclusionState:"mac:ApplicationDidChangeOcclusionState",ApplicationDidChangeScreenParameters:"mac:ApplicationDidChangeScreenParameters",ApplicationDidChangeStatusBarFrame:"mac:ApplicationDidChangeStatusBarFrame",ApplicationDidChangeStatusBarOrientation:"mac:ApplicationDidChangeStatusBarOrientation",ApplicationDidChangeTheme:"mac:ApplicationDidChangeTheme",ApplicationDidFinishLaunching:"mac:ApplicationDidFinishLaunching",ApplicationDidHide:"mac:ApplicationDidHide",ApplicationDidResignActive:"mac:ApplicationDidResignActive",ApplicationDidUnhide:"mac:ApplicationDidUnhide",ApplicationDidUpdate:"mac:ApplicationDidUpdate",ApplicationDidWake:"mac:ApplicationDidWake",ApplicationScreensDidSleep:"mac:ApplicationScreensDidSleep",ApplicationScreensDidWake:"mac:ApplicationScreensDidWake",ApplicationShouldHandleReopen:"mac:ApplicationShouldHandleReopen",ApplicationWillBecomeActive:"mac:ApplicationWillBecomeActive",ApplicationWillFinishLaunching:"mac:ApplicationWillFinishLaunching",ApplicationWillHide:"mac:ApplicationWillHide",ApplicationWillResignActive:"mac:ApplicationWillResignActive",ApplicationWillSleep:"mac:ApplicationWillSleep",ApplicationWillTerminate:"mac:ApplicationWillTerminate",ApplicationWillUnhide:"mac:ApplicationWillUnhide",ApplicationWillUpdate:"mac:ApplicationWillUpdate",MenuDidAddItem:"mac:MenuDidAddItem",MenuDidBeginTracking:"mac:MenuDidBeginTracking",MenuDidClose:"mac:MenuDidClose",MenuDidDisplayItem:"mac:MenuDidDisplayItem",MenuDidEndTracking:"mac:MenuDidEndTracking",MenuDidHighlightItem:"mac:MenuDidHighlightItem",MenuDidOpen:"mac:MenuDidOpen",MenuDidPopUp:"mac:MenuDidPopUp",MenuDidRemoveItem:"mac:MenuDidRemoveItem",MenuDidSendAction:"mac:MenuDidSendAction",MenuDidSendActionToItem:"mac:MenuDidSendActionToItem",MenuDidUpdate:"mac:MenuDidUpdate",MenuWillAddItem:"mac:MenuWillAddItem",MenuWillBeginTracking:"mac:MenuWillBeginTracking",MenuWillDisplayItem:"mac:MenuWillDisplayItem",MenuWillEndTracking:"mac:MenuWillEndTracking",MenuWillHighlightItem:"mac:MenuWillHighlightItem",MenuWillOpen:"mac:MenuWillOpen",MenuWillPopUp:"mac:MenuWillPopUp",MenuWillRemoveItem:"mac:MenuWillRemoveItem",MenuWillSendAction:"mac:MenuWillSendAction",MenuWillSendActionToItem:"mac:MenuWillSendActionToItem",MenuWillUpdate:"mac:MenuWillUpdate",WebViewDidCommitNavigation:"mac:WebViewDidCommitNavigation",WebViewDidFinishNavigation:"mac:WebViewDidFinishNavigation",WebViewDidReceiveServerRedirectForProvisionalNavigation:"mac:WebViewDidReceiveServerRedirectForProvisionalNavigation",WebViewDidStartProvisionalNavigation:"mac:WebViewDidStartProvisionalNavigation",WindowDidBecomeKey:"mac:WindowDidBecomeKey",WindowDidBecomeMain:"mac:WindowDidBecomeMain",WindowDidBeginSheet:"mac:WindowDidBeginSheet",WindowDidChangeAlpha:"mac:WindowDidChangeAlpha",WindowDidChangeBackingLocation:"mac:WindowDidChangeBackingLocation",WindowDidChangeBackingProperties:"mac:WindowDidChangeBackingProperties",WindowDidChangeCollectionBehavior:"mac:WindowDidChangeCollectionBehavior",WindowDidChangeEffectiveAppearance:"mac:WindowDidChangeEffectiveAppearance",WindowDidChangeOcclusionState:"mac:WindowDidChangeOcclusionState",WindowDidChangeOrderingMode:"mac:WindowDidChangeOrderingMode",WindowDidChangeScreen:"mac:WindowDidChangeScreen",WindowDidChangeScreenParameters:"mac:WindowDidChangeScreenParameters",WindowDidChangeScreenProfile:"mac:WindowDidChangeScreenProfile",WindowDidChangeScreenSpace:"mac:WindowDidChangeScreenSpace",WindowDidChangeScreenSpaceProperties:"mac:WindowDidChangeScreenSpaceProperties",WindowDidChangeSharingType:"mac:WindowDidChangeSharingType",WindowDidChangeSpace:"mac:WindowDidChangeSpace",WindowDidChangeSpaceOrderingMode:"mac:WindowDidChangeSpaceOrderingMode",WindowDidChangeTitle:"mac:WindowDidChangeTitle",WindowDidChangeToolbar:"mac:WindowDidChangeToolbar",WindowDidDeminiaturize:"mac:WindowDidDeminiaturize",WindowDidEndSheet:"mac:WindowDidEndSheet",WindowDidEnterFullScreen:"mac:WindowDidEnterFullScreen",WindowDidEnterVersionBrowser:"mac:WindowDidEnterVersionBrowser",WindowDidExitFullScreen:"mac:WindowDidExitFullScreen",WindowDidExitVersionBrowser:"mac:WindowDidExitVersionBrowser",WindowDidExpose:"mac:WindowDidExpose",WindowDidFocus:"mac:WindowDidFocus",WindowDidMiniaturize:"mac:WindowDidMiniaturize",WindowDidMove:"mac:WindowDidMove",WindowDidOrderOffScreen:"mac:WindowDidOrderOffScreen",WindowDidOrderOnScreen:"mac:WindowDidOrderOnScreen",WindowDidResignKey:"mac:WindowDidResignKey",WindowDidResignMain:"mac:WindowDidResignMain",WindowDidResize:"mac:WindowDidResize",WindowDidUpdate:"mac:WindowDidUpdate",WindowDidUpdateAlpha:"mac:WindowDidUpdateAlpha",WindowDidUpdateCollectionBehavior:"mac:WindowDidUpdateCollectionBehavior",WindowDidUpdateCollectionProperties:"mac:WindowDidUpdateCollectionProperties",WindowDidUpdateShadow:"mac:WindowDidUpdateShadow",WindowDidUpdateTitle:"mac:WindowDidUpdateTitle",WindowDidUpdateToolbar:"mac:WindowDidUpdateToolbar",WindowDidZoom:"mac:WindowDidZoom",WindowFileDraggingEntered:"mac:WindowFileDraggingEntered",WindowFileDraggingExited:"mac:WindowFileDraggingExited",WindowFileDraggingPerformed:"mac:WindowFileDraggingPerformed",WindowHide:"mac:WindowHide",WindowMaximise:"mac:WindowMaximise",WindowUnMaximise:"mac:WindowUnMaximise",WindowMinimise:"mac:WindowMinimise",WindowUnMinimise:"mac:WindowUnMinimise",WindowShouldClose:"mac:WindowShouldClose",WindowShow:"mac:WindowShow",WindowWillBecomeKey:"mac:WindowWillBecomeKey",WindowWillBecomeMain:"mac:WindowWillBecomeMain",WindowWillBeginSheet:"mac:WindowWillBeginSheet",WindowWillChangeOrderingMode:"mac:WindowWillChangeOrderingMode",WindowWillClose:"mac:WindowWillClose",WindowWillDeminiaturize:"mac:WindowWillDeminiaturize",WindowWillEnterFullScreen:"mac:WindowWillEnterFullScreen",WindowWillEnterVersionBrowser:"mac:WindowWillEnterVersionBrowser",WindowWillExitFullScreen:"mac:WindowWillExitFullScreen",WindowWillExitVersionBrowser:"mac:WindowWillExitVersionBrowser",WindowWillFocus:"mac:WindowWillFocus",WindowWillMiniaturize:"mac:WindowWillMiniaturize",WindowWillMove:"mac:WindowWillMove",WindowWillOrderOffScreen:"mac:WindowWillOrderOffScreen",WindowWillOrderOnScreen:"mac:WindowWillOrderOnScreen",WindowWillResignMain:"mac:WindowWillResignMain",WindowWillResize:"mac:WindowWillResize",WindowWillUnfocus:"mac:WindowWillUnfocus",WindowWillUpdate:"mac:WindowWillUpdate",WindowWillUpdateAlpha:"mac:WindowWillUpdateAlpha",WindowWillUpdateCollectionBehavior:"mac:WindowWillUpdateCollectionBehavior",WindowWillUpdateCollectionProperties:"mac:WindowWillUpdateCollectionProperties",WindowWillUpdateShadow:"mac:WindowWillUpdateShadow",WindowWillUpdateTitle:"mac:WindowWillUpdateTitle",WindowWillUpdateToolbar:"mac:WindowWillUpdateToolbar",WindowWillUpdateVisibility:"mac:WindowWillUpdateVisibility",WindowWillUseStandardFrame:"mac:WindowWillUseStandardFrame",WindowZoomIn:"mac:WindowZoomIn",WindowZoomOut:"mac:WindowZoomOut",WindowZoomReset:"mac:WindowZoomReset",WebViewWebContentProcessDidTerminate:"mac:WebViewWebContentProcessDidTerminate"}),Linux:Object.freeze({ApplicationStartup:"linux:ApplicationStartup",SystemDidWake:"linux:SystemDidWake",SystemThemeChanged:"linux:SystemThemeChanged",SystemWillSleep:"linux:SystemWillSleep",WindowDeleteEvent:"linux:WindowDeleteEvent",WindowDidMove:"linux:WindowDidMove",WindowDidResize:"linux:WindowDidResize",WindowFocusIn:"linux:WindowFocusIn",WindowFocusOut:"linux:WindowFocusOut",WindowLoadStarted:"linux:WindowLoadStarted",WindowLoadRedirected:"linux:WindowLoadRedirected",WindowLoadCommitted:"linux:WindowLoadCommitted",WindowLoadFinished:"linux:WindowLoadFinished"}),iOS:Object.freeze({ApplicationDidBecomeActive:"ios:ApplicationDidBecomeActive",ApplicationDidEnterBackground:"ios:ApplicationDidEnterBackground",ApplicationDidFinishLaunching:"ios:ApplicationDidFinishLaunching",ApplicationDidReceiveMemoryWarning:"ios:ApplicationDidReceiveMemoryWarning",ApplicationWillEnterForeground:"ios:ApplicationWillEnterForeground",ApplicationWillResignActive:"ios:ApplicationWillResignActive",ApplicationWillTerminate:"ios:ApplicationWillTerminate",WindowDidLoad:"ios:WindowDidLoad",WindowWillAppear:"ios:WindowWillAppear",WindowDidAppear:"ios:WindowDidAppear",WindowWillDisappear:"ios:WindowWillDisappear",WindowDidDisappear:"ios:WindowDidDisappear",WindowSafeAreaInsetsChanged:"ios:WindowSafeAreaInsetsChanged",WindowOrientationChanged:"ios:WindowOrientationChanged",WindowTouchBegan:"ios:WindowTouchBegan",WindowTouchMoved:"ios:WindowTouchMoved",WindowTouchEnded:"ios:WindowTouchEnded",WindowTouchCancelled:"ios:WindowTouchCancelled",WebViewDidStartNavigation:"ios:WebViewDidStartNavigation",WebViewDidFinishNavigation:"ios:WebViewDidFinishNavigation",WebViewDidFailNavigation:"ios:WebViewDidFailNavigation",WebViewDecidePolicyForNavigationAction:"ios:WebViewDecidePolicyForNavigationAction",BatteryChanged:"ios:BatteryChanged",NetworkChanged:"ios:NetworkChanged",ThemeChanged:"ios:ThemeChanged",ScreenLocked:"ios:ScreenLocked",ScreenUnlocked:"ios:ScreenUnlocked"}),Android:Object.freeze({ActivityCreated:"android:ActivityCreated",ActivityStarted:"android:ActivityStarted",ActivityResumed:"android:ActivityResumed",ActivityPaused:"android:ActivityPaused",ActivityStopped:"android:ActivityStopped",ActivityDestroyed:"android:ActivityDestroyed",ApplicationLowMemory:"android:ApplicationLowMemory",WebViewPageStarted:"android:WebViewPageStarted",WebViewPageFinished:"android:WebViewPageFinished",BatteryChanged:"android:BatteryChanged",NetworkChanged:"android:NetworkChanged",ThemeChanged:"android:ThemeChanged",ScreenLocked:"android:ScreenLocked",ScreenUnlocked:"android:ScreenUnlocked"}),Common:Object.freeze({ApplicationOpenedWithFile:"common:ApplicationOpenedWithFile",ApplicationStarted:"common:ApplicationStarted",ApplicationLaunchedWithUrl:"common:ApplicationLaunchedWithUrl",ThemeChanged:"common:ThemeChanged",SystemDidWake:"common:SystemDidWake",SystemWillSleep:"common:SystemWillSleep",WindowClosing:"common:WindowClosing",WindowDidMove:"common:WindowDidMove",WindowDidResize:"common:WindowDidResize",WindowDPIChanged:"common:WindowDPIChanged",WindowFilesDropped:"common:WindowFilesDropped",WindowFocus:"common:WindowFocus",WindowFullscreen:"common:WindowFullscreen",WindowHide:"common:WindowHide",WindowLostFocus:"common:WindowLostFocus",WindowMaximise:"common:WindowMaximise",WindowMinimise:"common:WindowMinimise",WindowToggleFrameless:"common:WindowToggleFrameless",WindowRestore:"common:WindowRestore",WindowRuntimeReady:"common:WindowRuntimeReady",WindowShow:"common:WindowShow",WindowUnFullscreen:"common:WindowUnFullscreen",WindowUnMaximise:"common:WindowUnMaximise",WindowUnMinimise:"common:WindowUnMinimise",WindowZoom:"common:WindowZoom",WindowZoomIn:"common:WindowZoomIn",WindowZoomOut:"common:WindowZoomOut",WindowZoomReset:"common:WindowZoomReset",BatteryChanged:"common:BatteryChanged",NetworkChanged:"common:NetworkChanged",ScreenLocked:"common:ScreenLocked",ScreenUnlocked:"common:ScreenUnlocked",LowMemory:"common:LowMemory"})});w&&(window._wails=window._wails||{},window._wails.dispatchWailsEvent=Wi);var gi=u(c.Events),hi=0,V=class{constructor(e,i){this.name=e,this.data=i!=null?i:null}};function Wi(n){let e=g.get(n.name);if(!e)return;let i=new V(n.name,n.name in $?$[n.name](n.data):n.data);"sender"in n&&(i.sender=n.sender);let t=new Set;for(let o of e.slice())o.dispatch(i)&&t.add(o);if(t.size>0){let o=g.get(n.name);if(o){let a=o.filter(r=>!t.has(r));a.length===0?g.delete(n.name):g.set(n.name,a)}}}function he(n,e,i){let t=g.get(n)||[],o=new q(n,e,i);return t.push(o),g.set(n,t),()=>wn(o)}function bi(n,e){return he(n,e,-1)}function yi(n,e){return he(n,e,1)}function vi(...n){n.forEach(e=>g.delete(e))}function Di(){g.clear()}function We(n,e){return gi(hi,new V(n,e))}function pn(){return new MouseEvent("mousedown").buttons===0}function fn(){if(!EventTarget||!AbortSignal||!AbortController)return!1;let n=!0,e=new EventTarget,i=new AbortController;return e.addEventListener("test",()=>{n=!1},{signal:i.signal}),i.abort(),e.dispatchEvent(new CustomEvent("test")),n}function ee(n){var e;return n.target instanceof HTMLElement?n.target:!(n.target instanceof HTMLElement)&&n.target instanceof Node&&(e=n.target.parentElement)!=null?e:document.body}var gn=!1;w&&document.addEventListener("DOMContentLoaded",()=>{gn=!0});function hn(n){gn||document.readyState==="complete"?n():document.addEventListener("DOMContentLoaded",n)}var Ci="data-file-drop-target",W="file-drop-target-active",m=null,Pi=0,Si=1,Ti=2,Mi=3,xi=4,Ei=5,Ai=6,Ri=7,ki=8,Oi=9,Fi=10,Li=11,Ii=12,Ui=13,Bi=14,Ni=15,ji=16,zi=17,Hi=18,Vi=19,Zi=20,_i=21,Ki=22,Gi=23,Yi=24,Xi=25,Ji=26,Qi=27,qi=28,$i=29,et=30,nt=31,it=32,tt=33,ot=34,rt=35,at=36,st=37,lt=38,dt=39,ct=40,mt=41,ut=42,wt=43,pt=44,ft=45,gt=46,ht=47,Wt=48,bt=49,yt=50,vt=51,Dt=52;function ne(n){return n?n.closest("[".concat(Ci,"]")):null}function Ct(){var n,e,i,t;return((e=(n=window.chrome)==null?void 0:n.webview)==null?void 0:e.postMessageWithAdditionalObjects)==null?!1:((t=(i=window._wails)==null?void 0:i.flags)==null?void 0:t.enableFileDrop)===!0}function Pt(n,e,i){var t,o;(o=(t=window.chrome)==null?void 0:t.webview)!=null&&o.postMessageWithAdditionalObjects&&window.chrome.webview.postMessageWithAdditionalObjects("file:drop:".concat(n,":").concat(e),i)}var ve=!1;function Wn(){ve=!1,m&&(m.classList.remove(W),m=null)}function bn(){var n,e;((e=(n=window._wails)==null?void 0:n.flags)==null?void 0:e.enableFileDrop)!==!1&&(ve=!0)}function yn(){Wn()}function vn(n,e){var o,a;if(!ve||((a=(o=window._wails)==null?void 0:o.flags)==null?void 0:a.enableFileDrop)===!1)return;let i=document.elementFromPoint(n,e),t=ne(i);m&&m!==t&&m.classList.remove(W),t?(t.classList.add(W),m=t):m=null}var s=Symbol("caller"),ie=class ie{constructor(e=""){this[s]=u(c.Window,e);for(let i of Object.getOwnPropertyNames(ie.prototype))i!=="constructor"&&typeof this[i]=="function"&&(this[i]=this[i].bind(this))}Get(e){return new ie(e)}Position(){return this[s](Pi)}Center(){return this[s](Si)}Close(){return this[s](Ti)}DisableSizeConstraints(){return this[s](Mi)}EnableSizeConstraints(){return this[s](xi)}Focus(){return this[s](Ei)}ForceReload(){return this[s](Ai)}Fullscreen(){return this[s](Ri)}GetScreen(){return this[s](ki)}GetZoom(){return this[s](Oi)}Height(){return this[s](Fi)}Hide(){return this[s](Li)}IsFocused(){return this[s](Ii)}IsFullscreen(){return this[s](Ui)}IsMaximised(){return this[s](Bi)}IsMinimised(){return this[s](Ni)}Maximise(){return this[s](ji)}Minimise(){return this[s](zi)}Name(){return this[s](Hi)}OpenDevTools(){return this[s](Vi)}RelativePosition(){return this[s](Zi)}Reload(){return this[s](_i)}Resizable(){return this[s](Ki)}Restore(){return this[s](Gi)}SetPosition(e,i){return this[s](Yi,{x:e,y:i})}SetAlwaysOnTop(e){return this[s](Xi,{alwaysOnTop:e})}SetBackgroundColour(e,i,t,o){return this[s](Ji,{r:e,g:i,b:t,a:o})}SetFrameless(e){return this[s](Qi,{frameless:e})}SetFullscreenButtonEnabled(e){return this[s](qi,{enabled:e})}SetMaxSize(e,i){return this[s]($i,{width:e,height:i})}SetMinSize(e,i){return this[s](et,{width:e,height:i})}SetRelativePosition(e,i){return this[s](nt,{x:e,y:i})}SetResizable(e){return this[s](it,{resizable:e})}SetSize(e,i){return this[s](tt,{width:e,height:i})}SetTitle(e){return this[s](ot,{title:e})}SetZoom(e){return this[s](rt,{zoom:e})}Show(){return this[s](at)}Size(){return this[s](st)}ToggleFullscreen(){return this[s](lt)}ToggleMaximise(){return this[s](dt)}ToggleFrameless(){return this[s](ct)}UnFullscreen(){return this[s](mt)}UnMaximise(){return this[s](ut)}UnMinimise(){return this[s](wt)}Width(){return this[s](pt)}Zoom(){return this[s](ft)}ZoomIn(){return this[s](gt)}ZoomOut(){return this[s](ht)}ZoomReset(){return this[s](Wt)}HandlePlatformFileDrop(e,i,t){var d,f;if(((f=(d=window._wails)==null?void 0:d.flags)==null?void 0:f.enableFileDrop)===!1)return;let o=document.elementFromPoint(i,t),a=ne(o);if(!a)return;let r={id:a.id,classList:Array.from(a.classList),attributes:{}};for(let y=0;y{var a,r,l;if(!((a=i.dataTransfer)!=null&&a.types.includes("Files")))return;if(i.preventDefault(),((l=(r=window._wails)==null?void 0:r.flags)==null?void 0:l.enableFileDrop)===!1){i.dataTransfer.dropEffect="none";return}e++;let t=document.elementFromPoint(i.clientX,i.clientY),o=ne(t);m&&m!==o&&m.classList.remove(W),o?(o.classList.add(W),i.dataTransfer.dropEffect="copy",m=o):(i.dataTransfer.dropEffect="none",m=null)},!1),n.addEventListener("dragover",i=>{var a,r,l;if(!((a=i.dataTransfer)!=null&&a.types.includes("Files")))return;if(i.preventDefault(),((l=(r=window._wails)==null?void 0:r.flags)==null?void 0:l.enableFileDrop)===!1){i.dataTransfer.dropEffect="none";return}let t=document.elementFromPoint(i.clientX,i.clientY),o=ne(t);m&&m!==o&&m.classList.remove(W),o?(o.classList.contains(W)||o.classList.add(W),i.dataTransfer.dropEffect="copy",m=o):(i.dataTransfer.dropEffect="none",m=null)},!1),n.addEventListener("dragleave",i=>{var t,o,a;(t=i.dataTransfer)!=null&&t.types.includes("Files")&&(i.preventDefault(),((a=(o=window._wails)==null?void 0:o.flags)==null?void 0:a.enableFileDrop)!==!1&&i.relatedTarget!==null&&(e--,(e===0||m&&!m.contains(i.relatedTarget))&&(m&&(m.classList.remove(W),m=null),e=0)))},!1),n.addEventListener("drop",i=>{var t,o,a;if((t=i.dataTransfer)!=null&&t.types.includes("Files")&&(i.preventDefault(),((a=(o=window._wails)==null?void 0:o.flags)==null?void 0:a.enableFileDrop)!==!1&&(e=0,m&&(m.classList.remove(W),m=null),Ct()))){let r=[];if(i.dataTransfer.items){for(let l of i.dataTransfer.items)if(l.kind==="file"){let d=l.getAsFile();d&&r.push(d)}}else if(i.dataTransfer.files)for(let l of i.dataTransfer.files)r.push(l);r.length>0&&Pt(i.clientX,i.clientY,r)}},!1)}typeof window<"u"&&typeof document<"u"&&Tt();var A=St;function Mt(n,e=null){We(n,e)}function xt(n,e){let i=A.Get(n),t=i[e];if(typeof t=="function")try{t.call(i)}catch(o){}}function Dn(n){let e=n.currentTarget;function i(o="Yes"){if(o!=="Yes")return;let a=e.getAttribute("wml-event")||e.getAttribute("data-wml-event"),r=e.getAttribute("wml-target-window")||e.getAttribute("data-wml-target-window")||"",l=e.getAttribute("wml-window")||e.getAttribute("data-wml-window"),d=e.getAttribute("wml-openurl")||e.getAttribute("data-wml-openurl");a!==null&&Mt(a),l!==null&&xt(r,l),d!==null&&ue(d)}let t=e.getAttribute("wml-confirm")||e.getAttribute("data-wml-confirm");t?pe({Title:"Confirm",Message:t,Detached:!1,Buttons:[{Label:"Yes"},{Label:"No",IsDefault:!0}]}).then(i):i()}var Z=Symbol("controller"),R=Symbol("triggerMap"),P=Symbol("elementCount"),De=class{constructor(){this[Z]=new AbortController}set(e,i){return{signal:this[Z].signal}}reset(){this[Z].abort(),this[Z]=new AbortController}},Ce=class{constructor(){this[R]=new WeakMap,this[P]=0}set(e,i){return this[R].has(e)||this[P]++,this[R].set(e,i),{}}reset(){if(!(this[P]<=0)){for(let e of document.body.querySelectorAll("*")){if(this[P]<=0)break;let i=this[R].get(e);i!=null&&this[P]--;for(let t of i||[])e.removeEventListener(t,Dn)}this[R]=new WeakMap,this[P]=0}}},Cn=fn()?new De:new Ce;function Et(n){let e=/\S+/g,i=n.getAttribute("wml-trigger")||n.getAttribute("data-wml-trigger")||"click",t=[],o;for(;(o=e.exec(i))!==null;)t.push(o[0]);let a=Cn.set(n,t);for(let r of t)n.addEventListener(r,Dn,a)}function Pe(){hn(Pn)}function Pn(){Cn.reset(),document.body.querySelectorAll("[wml-event], [wml-window], [wml-openurl], [data-wml-event], [data-wml-window], [data-wml-openurl]").forEach(Et)}window.wails=Te;Pe();var Ae={};p(Ae,{Capabilities:()=>Ft,Environment:()=>Lt,IsAMD64:()=>Bt,IsARM:()=>Nt,IsARM64:()=>jt,IsAndroid:()=>Mn,IsDarkMode:()=>Ot,IsDebug:()=>Ee,IsDesktop:()=>Ut,IsIOS:()=>Tn,IsLinux:()=>te,IsMac:()=>Sn,IsMobile:()=>It,IsWindows:()=>_,invoke:()=>S});var xe=u(c.System),At=0,Rt=1,kt=2,Me=(function(){var n,e,i,t,o,a;try{if((e=(n=window.chrome)==null?void 0:n.webview)!=null&&e.postMessage)return window.chrome.webview.postMessage.bind(window.chrome.webview);if((o=(t=(i=window.webkit)==null?void 0:i.messageHandlers)==null?void 0:t.external)!=null&&o.postMessage)return window.webkit.messageHandlers.external.postMessage.bind(window.webkit.messageHandlers.external);if((a=window.wails)!=null&&a.invoke)return r=>window.wails.invoke(typeof r=="string"?r:JSON.stringify(r))}catch(r){}return null})();function S(n){Me==null||Me(n)}function Ot(){return xe(At)}async function Ft(){return xe(kt)}function Lt(){return xe(Rt)}function _(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="windows"}function te(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="linux"}function Sn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="darwin"}function Tn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="ios"}function Mn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="android"}function It(){return Tn()||Mn()}function Ut(){return Sn()||_()||te()}function Bt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="amd64"}function Nt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="arm"}function jt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="arm64"}function Ee(){var n,e;return!!((e=(n=window._wails)==null?void 0:n.environment)!=null&&e.Debug)}w&&window.addEventListener("contextmenu",Zt);var zt=u(c.ContextMenu),Ht=0;function Vt(n,e,i,t){zt(Ht,{id:n,x:e,y:i,data:t})}function Zt(n){let e=ee(n),i=window.getComputedStyle(e).getPropertyValue("--custom-contextmenu").trim();if(i){n.preventDefault();let t=window.getComputedStyle(e).getPropertyValue("--custom-contextmenu-data");Vt(i,n.clientX,n.clientY,t)}else _t(n,e)}function _t(n,e){if(Ee())return;switch(window.getComputedStyle(e).getPropertyValue("--default-contextmenu").trim()){case"show":return;case"hide":n.preventDefault();return}if(e.isContentEditable)return;let i=window.getSelection(),t=i&&i.toString().length>0;if(t)for(let o=0;ok});function k(n){try{return window._wails.flags[n]}catch(e){throw new Error("Unable to retrieve flag '"+n+"': "+e,{cause:e})}}var K=!1,G=!1,Ie=!1,F=!1,L=!1,T="",xn="auto",O=0,oe=!1;w&&(oe=pn(),window._wails=window._wails||{},window._wails.setResizable=n=>{Ie=n,Ie||(F=L=!1,h())});var Ue=!1;function Kt(){var i,t;let n=(t=(i=window._wails)==null?void 0:i.environment)==null?void 0:t.OS;if(n==="ios"||n==="android")return!0;let e=navigator.userAgent||navigator.vendor||window.opera||"";return/android|iphone|ipad|ipod|iemobile|wpdesktop/i.test(e)}function ke(){if(!Ue&&!Kt()){window.addEventListener("mousedown",Le,{capture:!0}),window.addEventListener("mousemove",Le,{capture:!0}),window.addEventListener("mouseup",Le,{capture:!0});for(let n of["click","contextmenu","dblclick"])window.addEventListener(n,Gt,{capture:!0});Ue=!0}}if(w){ke(),document.addEventListener("DOMContentLoaded",ke,{once:!0});let n=0,e=window.setInterval(()=>{if(Ue){window.clearInterval(e);return}ke(),++n>100&&window.clearInterval(e)},50)}function Gt(n){(G||L)&&(n.stopImmediatePropagation(),n.stopPropagation(),n.preventDefault())}var Oe=0,Yt=1,Fe=2;function Le(n){let e,i=n.buttons;switch(n.type){case"mousedown":e=Oe,oe||(i=O|1<io,Quit:()=>oo,Show:()=>to});var Be=u(c.Application),$t=0,eo=1,no=2;function io(){return Be($t)}function to(){return Be(eo)}function oo(){return Be(no)}var Ge={};p(Ge,{ByID:()=>So,ByName:()=>Po,Call:()=>Ke,RuntimeError:()=>_e});var An=Function.prototype.toString,I=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,je,re;if(typeof I=="function"&&typeof Object.defineProperty=="function")try{je=Object.defineProperty({},"length",{get:function(){throw re}}),re={},I(function(){throw 42},null,je)}catch(n){n!==re&&(I=null)}else I=null;var ro=/^\s*class\b/,He=function(e){try{var i=An.call(e);return ro.test(i)}catch(t){return!1}},ze=function(e){try{return He(e)?!1:(An.call(e),!0)}catch(i){return!1}},ae=Object.prototype.toString,ao="[object Object]",so="[object Function]",lo="[object GeneratorFunction]",co="[object HTMLAllCollection]",mo="[object HTML document.all class]",uo="[object HTMLCollection]",wo=typeof Symbol=="function"&&!!Symbol.toStringTag,po=!(0 in[,]),Ve=function(){return!1};typeof document=="object"&&(En=document.all,ae.call(En)===ae.call(document.all)&&(Ve=function(e){if((po||!e)&&(typeof e>"u"||typeof e=="object"))try{var i=ae.call(e);return(i===co||i===mo||i===uo||i===ao)&&e("")==null}catch(t){}return!1}));var En;function fo(n){if(Ve(n))return!0;if(!n||typeof n!="function"&&typeof n!="object")return!1;try{I(n,null,je)}catch(e){if(e!==re)return!1}return!He(n)&&ze(n)}function go(n){if(Ve(n))return!0;if(!n||typeof n!="function"&&typeof n!="object")return!1;if(wo)return ze(n);if(He(n))return!1;var e=ae.call(n);return e!==so&&e!==lo&&!/^\[object HTML/.test(e)?!1:ze(n)}var v=I?fo:go;var B=class extends Error{constructor(e,i){super(e,i),this.name="CancelError"}},D=class extends Error{constructor(e,i,t){super((t!=null?t:"Unhandled rejection in cancelled promise.")+" Reason: "+ho(i),{cause:i}),this.promise=e,this.name="CancelledRejectionError"}},b=Symbol("barrier"),Ze=Symbol("cancelImpl"),Fn,Rn=(Fn=Symbol.species)!=null?Fn:Symbol("speciesPolyfill"),Y=class n extends Promise{constructor(e,i){let t,o;if(super((d,f)=>{t=d,o=f}),this.constructor[Rn]!==Promise)throw new TypeError("CancellablePromise does not support transparent subclassing. Please refrain from overriding the [Symbol.species] static property.");let a={promise:this,resolve:t,reject:o,get oncancelled(){return i!=null?i:null},set oncancelled(d){i=d!=null?d:void 0}},r={get root(){return r},resolving:!1,settled:!1};Object.defineProperties(this,{[b]:{configurable:!1,enumerable:!1,writable:!0,value:null},[Ze]:{configurable:!1,enumerable:!1,writable:!1,value:Ln(a,r)}});let l=Un(a,r);try{e(In(a,r),l)}catch(d){r.resolving||l(d)}}cancel(e){return new n(i=>{Promise.all([this[Ze](new B("Promise cancelled.",{cause:e})),Wo(this)]).then(()=>i(),()=>i())})}cancelOn(e){return e.aborted?this.cancel(e.reason):e.addEventListener("abort",()=>{this.cancel(e.reason)},{capture:!0}),this}then(e,i,t){if(!(this instanceof n))throw new TypeError("CancellablePromise.prototype.then called on an invalid object.");if(v(e)||(e=kn),v(i)||(i=On),e===kn&&i==On)return new n(a=>a(this));let o={};return this[b]=o,new n((a,r)=>{super.then(l=>{var d;this[b]===o&&(this[b]=null),(d=o.resolve)==null||d.call(o);try{a(e(l))}catch(f){r(f)}},l=>{var d;this[b]===o&&(this[b]=null),(d=o.resolve)==null||d.call(o);try{a(i(l))}catch(f){r(f)}})},async a=>{try{return t==null?void 0:t(a)}finally{await this.cancel(a)}})}catch(e,i){return this.then(void 0,e,i)}finally(e,i){if(!(this instanceof n))throw new TypeError("CancellablePromise.prototype.finally called on an invalid object.");return v(e)?this.then(t=>n.resolve(e()).then(()=>t),t=>n.resolve(e()).then(()=>{throw t}),i):this.then(e,e,i)}static get[(b,Ze,Rn)](){return Promise}static all(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,a)=>{Promise.all(i).then(o,a)},o=>se(t,i,o));return t}static allSettled(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,a)=>{Promise.allSettled(i).then(o,a)},o=>se(t,i,o));return t}static any(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,a)=>{Promise.any(i).then(o,a)},o=>se(t,i,o));return t}static race(e){let i=Array.from(e),t=new n((o,a)=>{Promise.race(i).then(o,a)},o=>se(t,i,o));return t}static cancel(e){let i=new n(()=>{});return i.cancel(e),i}static timeout(e,i){let t=new n(()=>{});return AbortSignal&&typeof AbortSignal=="function"&&AbortSignal.timeout&&typeof AbortSignal.timeout=="function"?AbortSignal.timeout(e).addEventListener("abort",()=>{t.cancel(i)}):setTimeout(()=>{t.cancel(i)},e),t}static sleep(e,i){return new n(t=>{setTimeout(()=>t(i),e)})}static reject(e){return new n((i,t)=>t(e))}static resolve(e){return e instanceof n?e:new n(i=>i(e))}static withResolvers(){let e={oncancelled:null};return e.promise=new n((i,t)=>{e.resolve=i,e.reject=t},i=>{var t;(t=e.oncancelled)==null||t.call(e,i)}),e}};function Ln(n,e){let i;return t=>{if(e.settled||(e.settled=!0,e.reason=t,n.reject(t),Promise.prototype.then.call(n.promise,void 0,o=>{if(o!==t)throw o})),!(!e.reason||!n.oncancelled))return i=new Promise(o=>{try{o(n.oncancelled(e.reason.cause))}catch(a){Promise.reject(new D(n.promise,a,"Unhandled exception in oncancelled callback."))}}).catch(o=>{Promise.reject(new D(n.promise,o,"Unhandled rejection in oncancelled callback."))}),n.oncancelled=null,i}}function In(n,e){return i=>{if(!e.resolving){if(e.resolving=!0,i===n.promise){if(e.settled)return;e.settled=!0,n.reject(new TypeError("A promise cannot be resolved with itself."));return}if(i!=null&&(typeof i=="object"||typeof i=="function")){let t;try{t=i.then}catch(o){e.settled=!0,n.reject(o);return}if(v(t)){try{let r=i.cancel;if(v(r)){let l=d=>{Reflect.apply(r,i,[d])};e.reason?Ln(j(N({},n),{oncancelled:l}),e)(e.reason):n.oncancelled=l}}catch(r){}let o={root:e.root,resolving:!1,get settled(){return this.root.settled},set settled(r){this.root.settled=r},get reason(){return this.root.reason}},a=Un(n,o);try{Reflect.apply(t,i,[In(n,o),a])}catch(r){a(r)}return}}e.settled||(e.settled=!0,n.resolve(i))}}}function Un(n,e){return i=>{if(!e.resolving)if(e.resolving=!0,e.settled){try{if(i instanceof B&&e.reason instanceof B&&Object.is(i.cause,e.reason.cause))return}catch(t){}Promise.reject(new D(n.promise,i))}else e.settled=!0,n.reject(i)}}function se(n,e,i){let t=[];for(let o of e){let a;try{if(!v(o.then)||(a=o.cancel,!v(a)))continue}catch(l){continue}let r;try{r=Reflect.apply(a,o,[i])}catch(l){Promise.reject(new D(n,l,"Unhandled exception in cancel method."));continue}r&&t.push((r instanceof Promise?r:Promise.resolve(r)).catch(l=>{Promise.reject(new D(n,l,"Unhandled rejection in cancel method."))}))}return Promise.all(t)}function kn(n){return n}function On(n){throw n}function ho(n){try{if(n instanceof Error||typeof n!="object"||n.toString!==Object.prototype.toString)return""+n}catch(e){}try{return JSON.stringify(n)}catch(e){}try{return Object.prototype.toString.call(n)}catch(e){}return""}function Wo(n){var i;let e=(i=n[b])!=null?i:{};return"promise"in e||Object.assign(e,U()),n[b]==null&&(e.resolve(),n[b]=e),e.promise}var U=Promise.withResolvers;U&&typeof U=="function"?U=U.bind(Promise):U=function(){let n,e;return{promise:new Promise((t,o)=>{n=t,e=o}),resolve:n,reject:e}};w&&(window._wails=window._wails||{});var bo=u(c.Call),yo=u(c.CancelCall),X=new Map,vo=0,Do=0,_e=class extends Error{constructor(e,i){super(e,i),this.name="RuntimeError"}};function Co(){let n;do n=M();while(X.has(n));return n}function Ke(n){let e=Co(),i=Y.withResolvers();X.set(e,{resolve:i.resolve,reject:i.reject});let t=bo(vo,Object.assign({"call-id":e},n)),o=!0;t.then(r=>{o=!1,X.delete(e),i.resolve(r)},r=>{o=!1,X.delete(e),i.reject(r)});let a=()=>(X.delete(e),yo(Do,{"call-id":e}).catch(r=>{}));return i.oncancelled=()=>o?a():t.then(a),i.promise}function Po(n,...e){return Ke({methodName:n,args:e})}function So(n,...e){return Ke({methodID:n,args:e})}var Ye={};p(Ye,{SetText:()=>xo,Text:()=>Eo});var Bn=u(c.Clipboard),To=0,Mo=1;function xo(n){return Bn(To,{text:n})}function Eo(){return Bn(Mo)}var Xe={};p(Xe,{GetAll:()=>Lo,GetByID:()=>Bo,GetByIndex:()=>No,GetCurrent:()=>Uo,GetPrimary:()=>Io});var J=u(c.Screens),Ao=0,Ro=1,ko=2,Oo=3,Fo=4;function Lo(){return J(Ao)}function Io(){return J(Ro)}function Uo(){return J(ko)}function Bo(n){return J(Oo,{id:n})}function No(n){return J(Fo,{index:n})}var qe={};p(qe,{Device:()=>Qe,Haptics:()=>Je});var Nn=u(c.IOS),jo=0,zo=1,Je;(e=>{function n(i="medium"){return Nn(jo,{style:i})}e.Impact=n})(Je||(Je={}));var Qe;(e=>{function n(){return Nn(zo)}e.Info=n})(Qe||(Qe={}));var on={};p(on,{Device:()=>en,Haptics:()=>$e,Toast:()=>nn});var tn=u(c.Android),Ho=0,Vo=1,Zo=2,$e;(e=>{function n(i=100){return tn(Ho,{duration:i})}e.Vibrate=n})($e||($e={}));var en;(e=>{function n(){return tn(Vo)}e.Info=n})(en||(en={}));var nn;(e=>{function n(i){return tn(Zo,{message:i})}e.Show=n})(nn||(nn={}));var rn={};p(rn,{Events:()=>_o});var _o=Object.freeze({CheckStarted:"wails:updater:check-started",UpdateAvailable:"wails:updater:update-available",NoUpdate:"wails:updater:no-update",DownloadStarted:"wails:updater:download-started",DownloadProgress:"wails:updater:download-progress",DownloadComplete:"wails:updater:download-complete",Verifying:"wails:updater:verifying",Installing:"wails:updater:installing",UpdateReady:"wails:updater:update-ready",Error:"wails:updater:error",Meta:"wails:updater:meta",User:Object.freeze({Install:"wails:updater:user:install",Restart:"wails:updater:user:restart",Skip:"wails:updater:user:skip",Remind:"wails:updater:user:remind",Cancel:"wails:updater:user:cancel"}),Window:Object.freeze({Ready:"wails:updater:window:ready"})});w&&(window._wails=window._wails||{});w&&(window._wails.invoke=S,window._wails.clientId=x);w&&(window._wails.handlePlatformFileDrop=A.HandlePlatformFileDrop.bind(A));w&&(window._wails.handleDragEnter=bn,window._wails.handleDragLeave=yn,window._wails.handleDragOver=vn);w&&S("wails:runtime:ready");function jn(n){return fetch(n,{method:"HEAD"}).then(e=>{if(e.ok&&(e.headers.get("content-type")||"").toLowerCase().includes("javascript")){let t=document.createElement("script");t.src=n,document.head.appendChild(t)}}).catch(()=>{})}w&&jn("/wails/custom.js");export{on as Android,Ne as Application,we as Browser,Ge as Call,B as CancelError,Y as CancellablePromise,D as CancelledRejectionError,Ye as Clipboard,ge as Create,fe as Dialogs,be as Events,Re as Flags,qe as IOS,Xe as Screens,Ae as System,rn as Updater,Se as WML,A as Window,x as clientId,un as getTransport,jn as loadOptionalScript,c as objectNames,mn as setTransport}; +var ln=Object.defineProperty,zn=Object.defineProperties;var Hn=Object.getOwnPropertyDescriptors;var an=Object.getOwnPropertySymbols;var Vn=Object.prototype.hasOwnProperty,Zn=Object.prototype.propertyIsEnumerable;var sn=(n,e,i)=>e in n?ln(n,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[e]=i,H=(n,e)=>{for(var i in e||(e={}))Vn.call(e,i)&&sn(n,i,e[i]);if(an)for(var i of an(e))Zn.call(e,i)&&sn(n,i,e[i]);return n},V=(n,e)=>zn(n,Hn(e));var p=(n,e)=>{for(var i in e)ln(n,i,{get:e[i],enumerable:!0})};var Me={};p(Me,{Android:()=>on,Application:()=>Ne,Browser:()=>pe,Call:()=>Ge,CancelError:()=>z,CancellablePromise:()=>q,CancelledRejectionError:()=>S,Clipboard:()=>Ye,Create:()=>he,Dialogs:()=>ge,Events:()=>ye,Flags:()=>ke,IOS:()=>qe,Screens:()=>Xe,System:()=>Re,Updater:()=>rn,WML:()=>Te,Window:()=>O,clientId:()=>R,getTransport:()=>un,loadOptionalScript:()=>Nn,objectNames:()=>c,setTransport:()=>mn});var Te={};p(Te,{Enable:()=>Se,Reload:()=>Pn});var pe={};p(pe,{OpenURL:()=>we});var _n="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";function A(n=21){let e="",i=n|0;for(;i--;)e+=_n[Math.random()*64|0];return e}var w=typeof window<"u"&&typeof document<"u";function Kn(){return window.location.origin+"/wails/runtime"}var Z=512*1024;var _=class extends Error{constructor(e,i){super(e,i),this.name="RuntimeError"}},c=Object.freeze({Call:0,Clipboard:1,Application:2,Events:3,ContextMenu:4,Dialog:5,Window:6,Screens:7,System:8,Browser:9,CancelCall:10,IOS:11,Android:12}),R=A(),K=null;function mn(n){K=n}function un(){return K}function u(n,e=""){return function(i,t=null){return Gn(n,i,e,t)}}async function Gn(n,e,i,t){var f,D;if(K)return K.call(n,e,i,t);let o=new URL(Kn()),a={object:n,method:e};t!=null&&(a.args=t);let r={"x-wails-client-id":R,"Content-Type":"application/json"};i&&(r["x-wails-window-name"]=i);let l=JSON.stringify(a),d;if(l.length>Z?d=await Yn(o,r,l):d=await fetch(o,{method:"POST",headers:r,body:l}),!d.ok){let C=d.headers.get("Content-Type");if(C!=null&&C.includes("application/json")){let W=await d.json(),b;switch(W.kind){case"ReferenceError":b=new ReferenceError(W.message);break;case"TypeError":b=new TypeError(W.message);break;case"RuntimeError":b=new _(W.message);break;default:b=new Error(W.message)}throw b.cause=W.cause,b}throw new Error(await d.text())}return((D=(f=d.headers.get("Content-Type"))==null?void 0:f.indexOf("application/json"))!=null?D:-1)!==-1?d.json():d.text()}async function Yn(n,e,i){let t=A(),o=new TextEncoder().encode(i),a=Math.ceil(o.length/Z);for(let r=0;r{var a;let o=n.get(e);if(o){if(n.delete(e),t){o.reject(new Error(t));return}try{let r=JSON.parse(i!=null?i:"{}");if(!r.ok){o.reject(new Error((a=r.error)!=null?a:"unknown runtime call error"));return}o.resolve("text"in r?r.text:r.data)}catch(r){o.reject(r)}}},K={call(e,i,t,o){return new Promise((a,r)=>{let l=A();n.set(l,{resolve:a,reject:r});try{dn.invokeAsync(l,JSON.stringify({object:e,method:i,windowName:t,args:o!=null?o:null,clientId:R}))}catch(d){n.delete(l),r(d)}})}}}var Xn=u(c.Browser),Jn=0;function we(n){return Xn(Jn,{url:n.toString()})}var ge={};p(ge,{Error:()=>ai,Info:()=>oi,OpenFile:()=>si,Question:()=>fe,SaveFile:()=>li,Warning:()=>ri});w&&(window._wails=window._wails||{});var Qn=u(c.Dialog),qn=0,$n=1,ei=2,ni=3,ii=4,ti=5;function k(n,e={}){return Qn(n,e)}function oi(n){return k(qn,n)}function ri(n){return k($n,n)}function ai(n){return k(ei,n)}function fe(n){return k(ni,n)}function si(n){var e;return(e=k(ii,n))!=null?e:[]}function li(n){return k(ti,n)}var ye={};p(ye,{Emit:()=>be,Off:()=>vi,OffAll:()=>Di,On:()=>bi,OnMultiple:()=>We,Once:()=>yi,Types:()=>fi,WailsEvent:()=>G});var g=new Map,ne=class{constructor(e,i,t){this.eventName=e,this.callback=i,this.maxCallbacks=t||-1}dispatch(e){try{this.callback(e)}catch(i){}return this.maxCallbacks===-1?!1:(this.maxCallbacks-=1,this.maxCallbacks===0)}};function wn(n){let e=g.get(n.eventName);e&&(e=e.filter(i=>i!==n),e.length===0?g.delete(n.eventName):g.set(n.eventName,e))}var he={};p(he,{Any:()=>T,Array:()=>ci,ByteSlice:()=>di,DateFromTime:()=>pi,Events:()=>ie,Map:()=>mi,Nullable:()=>ui,Struct:()=>wi});function T(n){return n}function di(n){return n==null?"":n}function ci(n){return n===T?e=>e===null?[]:e:e=>{if(e===null)return[];for(let i=0;ii===null?{}:i:i=>{if(i===null)return{};for(let t in i)i[t]=e(i[t]);return i}}function ui(n){return n===T?T:e=>e===null?null:n(e)}function wi(n){let e=!0;for(let i in n)if(n[i]!==T){e=!1;break}return e?T:i=>{for(let t in n)t in i&&(i[t]=n[t](i[t]));return i}}function pi(n){return new Date(n)}var ie={};var fi=Object.freeze({Windows:Object.freeze({APMPowerSettingChange:"windows:APMPowerSettingChange",APMPowerStatusChange:"windows:APMPowerStatusChange",APMResumeAutomatic:"windows:APMResumeAutomatic",APMResumeSuspend:"windows:APMResumeSuspend",APMSuspend:"windows:APMSuspend",ApplicationStarted:"windows:ApplicationStarted",SystemThemeChanged:"windows:SystemThemeChanged",WebViewNavigationCompleted:"windows:WebViewNavigationCompleted",WindowActive:"windows:WindowActive",WindowBackgroundErase:"windows:WindowBackgroundErase",WindowClickActive:"windows:WindowClickActive",WindowClosing:"windows:WindowClosing",WindowDidMove:"windows:WindowDidMove",WindowDidResize:"windows:WindowDidResize",WindowDPIChanged:"windows:WindowDPIChanged",WindowDragDrop:"windows:WindowDragDrop",WindowDragEnter:"windows:WindowDragEnter",WindowDragLeave:"windows:WindowDragLeave",WindowDragOver:"windows:WindowDragOver",WindowEndMove:"windows:WindowEndMove",WindowEndResize:"windows:WindowEndResize",WindowFullscreen:"windows:WindowFullscreen",WindowHide:"windows:WindowHide",WindowInactive:"windows:WindowInactive",WindowKeyDown:"windows:WindowKeyDown",WindowKeyUp:"windows:WindowKeyUp",WindowKillFocus:"windows:WindowKillFocus",WindowNonClientHit:"windows:WindowNonClientHit",WindowNonClientMouseDown:"windows:WindowNonClientMouseDown",WindowNonClientMouseLeave:"windows:WindowNonClientMouseLeave",WindowNonClientMouseMove:"windows:WindowNonClientMouseMove",WindowNonClientMouseUp:"windows:WindowNonClientMouseUp",WindowPaint:"windows:WindowPaint",WindowRestore:"windows:WindowRestore",WindowSetFocus:"windows:WindowSetFocus",WindowShow:"windows:WindowShow",WindowStartMove:"windows:WindowStartMove",WindowStartResize:"windows:WindowStartResize",WindowUnFullscreen:"windows:WindowUnFullscreen",WindowZOrderChanged:"windows:WindowZOrderChanged",WindowMinimise:"windows:WindowMinimise",WindowUnMinimise:"windows:WindowUnMinimise",WindowMaximise:"windows:WindowMaximise",WindowUnMaximise:"windows:WindowUnMaximise"}),Mac:Object.freeze({ApplicationDidBecomeActive:"mac:ApplicationDidBecomeActive",ApplicationDidChangeBackingProperties:"mac:ApplicationDidChangeBackingProperties",ApplicationDidChangeEffectiveAppearance:"mac:ApplicationDidChangeEffectiveAppearance",ApplicationDidChangeIcon:"mac:ApplicationDidChangeIcon",ApplicationDidChangeOcclusionState:"mac:ApplicationDidChangeOcclusionState",ApplicationDidChangeScreenParameters:"mac:ApplicationDidChangeScreenParameters",ApplicationDidChangeStatusBarFrame:"mac:ApplicationDidChangeStatusBarFrame",ApplicationDidChangeStatusBarOrientation:"mac:ApplicationDidChangeStatusBarOrientation",ApplicationDidChangeTheme:"mac:ApplicationDidChangeTheme",ApplicationDidFinishLaunching:"mac:ApplicationDidFinishLaunching",ApplicationDidHide:"mac:ApplicationDidHide",ApplicationDidResignActive:"mac:ApplicationDidResignActive",ApplicationDidUnhide:"mac:ApplicationDidUnhide",ApplicationDidUpdate:"mac:ApplicationDidUpdate",ApplicationDidWake:"mac:ApplicationDidWake",ApplicationScreensDidSleep:"mac:ApplicationScreensDidSleep",ApplicationScreensDidWake:"mac:ApplicationScreensDidWake",ApplicationShouldHandleReopen:"mac:ApplicationShouldHandleReopen",ApplicationWillBecomeActive:"mac:ApplicationWillBecomeActive",ApplicationWillFinishLaunching:"mac:ApplicationWillFinishLaunching",ApplicationWillHide:"mac:ApplicationWillHide",ApplicationWillResignActive:"mac:ApplicationWillResignActive",ApplicationWillSleep:"mac:ApplicationWillSleep",ApplicationWillTerminate:"mac:ApplicationWillTerminate",ApplicationWillUnhide:"mac:ApplicationWillUnhide",ApplicationWillUpdate:"mac:ApplicationWillUpdate",MenuDidAddItem:"mac:MenuDidAddItem",MenuDidBeginTracking:"mac:MenuDidBeginTracking",MenuDidClose:"mac:MenuDidClose",MenuDidDisplayItem:"mac:MenuDidDisplayItem",MenuDidEndTracking:"mac:MenuDidEndTracking",MenuDidHighlightItem:"mac:MenuDidHighlightItem",MenuDidOpen:"mac:MenuDidOpen",MenuDidPopUp:"mac:MenuDidPopUp",MenuDidRemoveItem:"mac:MenuDidRemoveItem",MenuDidSendAction:"mac:MenuDidSendAction",MenuDidSendActionToItem:"mac:MenuDidSendActionToItem",MenuDidUpdate:"mac:MenuDidUpdate",MenuWillAddItem:"mac:MenuWillAddItem",MenuWillBeginTracking:"mac:MenuWillBeginTracking",MenuWillDisplayItem:"mac:MenuWillDisplayItem",MenuWillEndTracking:"mac:MenuWillEndTracking",MenuWillHighlightItem:"mac:MenuWillHighlightItem",MenuWillOpen:"mac:MenuWillOpen",MenuWillPopUp:"mac:MenuWillPopUp",MenuWillRemoveItem:"mac:MenuWillRemoveItem",MenuWillSendAction:"mac:MenuWillSendAction",MenuWillSendActionToItem:"mac:MenuWillSendActionToItem",MenuWillUpdate:"mac:MenuWillUpdate",WebViewDidCommitNavigation:"mac:WebViewDidCommitNavigation",WebViewDidFinishNavigation:"mac:WebViewDidFinishNavigation",WebViewDidReceiveServerRedirectForProvisionalNavigation:"mac:WebViewDidReceiveServerRedirectForProvisionalNavigation",WebViewDidStartProvisionalNavigation:"mac:WebViewDidStartProvisionalNavigation",WindowDidBecomeKey:"mac:WindowDidBecomeKey",WindowDidBecomeMain:"mac:WindowDidBecomeMain",WindowDidBeginSheet:"mac:WindowDidBeginSheet",WindowDidChangeAlpha:"mac:WindowDidChangeAlpha",WindowDidChangeBackingLocation:"mac:WindowDidChangeBackingLocation",WindowDidChangeBackingProperties:"mac:WindowDidChangeBackingProperties",WindowDidChangeCollectionBehavior:"mac:WindowDidChangeCollectionBehavior",WindowDidChangeEffectiveAppearance:"mac:WindowDidChangeEffectiveAppearance",WindowDidChangeOcclusionState:"mac:WindowDidChangeOcclusionState",WindowDidChangeOrderingMode:"mac:WindowDidChangeOrderingMode",WindowDidChangeScreen:"mac:WindowDidChangeScreen",WindowDidChangeScreenParameters:"mac:WindowDidChangeScreenParameters",WindowDidChangeScreenProfile:"mac:WindowDidChangeScreenProfile",WindowDidChangeScreenSpace:"mac:WindowDidChangeScreenSpace",WindowDidChangeScreenSpaceProperties:"mac:WindowDidChangeScreenSpaceProperties",WindowDidChangeSharingType:"mac:WindowDidChangeSharingType",WindowDidChangeSpace:"mac:WindowDidChangeSpace",WindowDidChangeSpaceOrderingMode:"mac:WindowDidChangeSpaceOrderingMode",WindowDidChangeTitle:"mac:WindowDidChangeTitle",WindowDidChangeToolbar:"mac:WindowDidChangeToolbar",WindowDidDeminiaturize:"mac:WindowDidDeminiaturize",WindowDidEndSheet:"mac:WindowDidEndSheet",WindowDidEnterFullScreen:"mac:WindowDidEnterFullScreen",WindowDidEnterVersionBrowser:"mac:WindowDidEnterVersionBrowser",WindowDidExitFullScreen:"mac:WindowDidExitFullScreen",WindowDidExitVersionBrowser:"mac:WindowDidExitVersionBrowser",WindowDidExpose:"mac:WindowDidExpose",WindowDidFocus:"mac:WindowDidFocus",WindowDidMiniaturize:"mac:WindowDidMiniaturize",WindowDidMove:"mac:WindowDidMove",WindowDidOrderOffScreen:"mac:WindowDidOrderOffScreen",WindowDidOrderOnScreen:"mac:WindowDidOrderOnScreen",WindowDidResignKey:"mac:WindowDidResignKey",WindowDidResignMain:"mac:WindowDidResignMain",WindowDidResize:"mac:WindowDidResize",WindowDidUpdate:"mac:WindowDidUpdate",WindowDidUpdateAlpha:"mac:WindowDidUpdateAlpha",WindowDidUpdateCollectionBehavior:"mac:WindowDidUpdateCollectionBehavior",WindowDidUpdateCollectionProperties:"mac:WindowDidUpdateCollectionProperties",WindowDidUpdateShadow:"mac:WindowDidUpdateShadow",WindowDidUpdateTitle:"mac:WindowDidUpdateTitle",WindowDidUpdateToolbar:"mac:WindowDidUpdateToolbar",WindowDidZoom:"mac:WindowDidZoom",WindowFileDraggingEntered:"mac:WindowFileDraggingEntered",WindowFileDraggingExited:"mac:WindowFileDraggingExited",WindowFileDraggingPerformed:"mac:WindowFileDraggingPerformed",WindowHide:"mac:WindowHide",WindowMaximise:"mac:WindowMaximise",WindowUnMaximise:"mac:WindowUnMaximise",WindowMinimise:"mac:WindowMinimise",WindowUnMinimise:"mac:WindowUnMinimise",WindowShouldClose:"mac:WindowShouldClose",WindowShow:"mac:WindowShow",WindowWillBecomeKey:"mac:WindowWillBecomeKey",WindowWillBecomeMain:"mac:WindowWillBecomeMain",WindowWillBeginSheet:"mac:WindowWillBeginSheet",WindowWillChangeOrderingMode:"mac:WindowWillChangeOrderingMode",WindowWillClose:"mac:WindowWillClose",WindowWillDeminiaturize:"mac:WindowWillDeminiaturize",WindowWillEnterFullScreen:"mac:WindowWillEnterFullScreen",WindowWillEnterVersionBrowser:"mac:WindowWillEnterVersionBrowser",WindowWillExitFullScreen:"mac:WindowWillExitFullScreen",WindowWillExitVersionBrowser:"mac:WindowWillExitVersionBrowser",WindowWillFocus:"mac:WindowWillFocus",WindowWillMiniaturize:"mac:WindowWillMiniaturize",WindowWillMove:"mac:WindowWillMove",WindowWillOrderOffScreen:"mac:WindowWillOrderOffScreen",WindowWillOrderOnScreen:"mac:WindowWillOrderOnScreen",WindowWillResignMain:"mac:WindowWillResignMain",WindowWillResize:"mac:WindowWillResize",WindowWillUnfocus:"mac:WindowWillUnfocus",WindowWillUpdate:"mac:WindowWillUpdate",WindowWillUpdateAlpha:"mac:WindowWillUpdateAlpha",WindowWillUpdateCollectionBehavior:"mac:WindowWillUpdateCollectionBehavior",WindowWillUpdateCollectionProperties:"mac:WindowWillUpdateCollectionProperties",WindowWillUpdateShadow:"mac:WindowWillUpdateShadow",WindowWillUpdateTitle:"mac:WindowWillUpdateTitle",WindowWillUpdateToolbar:"mac:WindowWillUpdateToolbar",WindowWillUpdateVisibility:"mac:WindowWillUpdateVisibility",WindowWillUseStandardFrame:"mac:WindowWillUseStandardFrame",WindowZoomIn:"mac:WindowZoomIn",WindowZoomOut:"mac:WindowZoomOut",WindowZoomReset:"mac:WindowZoomReset",WebViewWebContentProcessDidTerminate:"mac:WebViewWebContentProcessDidTerminate"}),Linux:Object.freeze({ApplicationStartup:"linux:ApplicationStartup",SystemDidWake:"linux:SystemDidWake",SystemThemeChanged:"linux:SystemThemeChanged",SystemWillSleep:"linux:SystemWillSleep",WindowDeleteEvent:"linux:WindowDeleteEvent",WindowDidMove:"linux:WindowDidMove",WindowDidResize:"linux:WindowDidResize",WindowFocusIn:"linux:WindowFocusIn",WindowFocusOut:"linux:WindowFocusOut",WindowLoadStarted:"linux:WindowLoadStarted",WindowLoadRedirected:"linux:WindowLoadRedirected",WindowLoadCommitted:"linux:WindowLoadCommitted",WindowLoadFinished:"linux:WindowLoadFinished"}),iOS:Object.freeze({ApplicationDidBecomeActive:"ios:ApplicationDidBecomeActive",ApplicationDidEnterBackground:"ios:ApplicationDidEnterBackground",ApplicationDidFinishLaunching:"ios:ApplicationDidFinishLaunching",ApplicationDidReceiveMemoryWarning:"ios:ApplicationDidReceiveMemoryWarning",ApplicationWillEnterForeground:"ios:ApplicationWillEnterForeground",ApplicationWillResignActive:"ios:ApplicationWillResignActive",ApplicationWillTerminate:"ios:ApplicationWillTerminate",WindowDidLoad:"ios:WindowDidLoad",WindowWillAppear:"ios:WindowWillAppear",WindowDidAppear:"ios:WindowDidAppear",WindowWillDisappear:"ios:WindowWillDisappear",WindowDidDisappear:"ios:WindowDidDisappear",WindowSafeAreaInsetsChanged:"ios:WindowSafeAreaInsetsChanged",WindowOrientationChanged:"ios:WindowOrientationChanged",WindowTouchBegan:"ios:WindowTouchBegan",WindowTouchMoved:"ios:WindowTouchMoved",WindowTouchEnded:"ios:WindowTouchEnded",WindowTouchCancelled:"ios:WindowTouchCancelled",WebViewDidStartNavigation:"ios:WebViewDidStartNavigation",WebViewDidFinishNavigation:"ios:WebViewDidFinishNavigation",WebViewDidFailNavigation:"ios:WebViewDidFailNavigation",WebViewDecidePolicyForNavigationAction:"ios:WebViewDecidePolicyForNavigationAction",BatteryChanged:"ios:BatteryChanged",NetworkChanged:"ios:NetworkChanged",ThemeChanged:"ios:ThemeChanged",ScreenLocked:"ios:ScreenLocked",ScreenUnlocked:"ios:ScreenUnlocked"}),Android:Object.freeze({ActivityCreated:"android:ActivityCreated",ActivityStarted:"android:ActivityStarted",ActivityResumed:"android:ActivityResumed",ActivityPaused:"android:ActivityPaused",ActivityStopped:"android:ActivityStopped",ActivityDestroyed:"android:ActivityDestroyed",ApplicationLowMemory:"android:ApplicationLowMemory",WebViewPageStarted:"android:WebViewPageStarted",WebViewPageFinished:"android:WebViewPageFinished",BatteryChanged:"android:BatteryChanged",NetworkChanged:"android:NetworkChanged",ThemeChanged:"android:ThemeChanged",ScreenLocked:"android:ScreenLocked",ScreenUnlocked:"android:ScreenUnlocked"}),Common:Object.freeze({ApplicationOpenedWithFile:"common:ApplicationOpenedWithFile",ApplicationStarted:"common:ApplicationStarted",ApplicationLaunchedWithUrl:"common:ApplicationLaunchedWithUrl",ThemeChanged:"common:ThemeChanged",SystemDidWake:"common:SystemDidWake",SystemWillSleep:"common:SystemWillSleep",WindowClosing:"common:WindowClosing",WindowDidMove:"common:WindowDidMove",WindowDidResize:"common:WindowDidResize",WindowDPIChanged:"common:WindowDPIChanged",WindowFilesDropped:"common:WindowFilesDropped",WindowFocus:"common:WindowFocus",WindowFullscreen:"common:WindowFullscreen",WindowHide:"common:WindowHide",WindowLostFocus:"common:WindowLostFocus",WindowMaximise:"common:WindowMaximise",WindowMinimise:"common:WindowMinimise",WindowToggleFrameless:"common:WindowToggleFrameless",WindowRestore:"common:WindowRestore",WindowRuntimeReady:"common:WindowRuntimeReady",WindowShow:"common:WindowShow",WindowUnFullscreen:"common:WindowUnFullscreen",WindowUnMaximise:"common:WindowUnMaximise",WindowUnMinimise:"common:WindowUnMinimise",WindowZoom:"common:WindowZoom",WindowZoomIn:"common:WindowZoomIn",WindowZoomOut:"common:WindowZoomOut",WindowZoomReset:"common:WindowZoomReset",BatteryChanged:"common:BatteryChanged",NetworkChanged:"common:NetworkChanged",ScreenLocked:"common:ScreenLocked",ScreenUnlocked:"common:ScreenUnlocked",LowMemory:"common:LowMemory"})});w&&(window._wails=window._wails||{},window._wails.dispatchWailsEvent=Wi);var gi=u(c.Events),hi=0,G=class{constructor(e,i){this.name=e,this.data=i!=null?i:null}};function Wi(n){let e=g.get(n.name);if(!e)return;let i=new G(n.name,n.name in ie?ie[n.name](n.data):n.data);"sender"in n&&(i.sender=n.sender);let t=new Set;for(let o of e.slice())o.dispatch(i)&&t.add(o);if(t.size>0){let o=g.get(n.name);if(o){let a=o.filter(r=>!t.has(r));a.length===0?g.delete(n.name):g.set(n.name,a)}}}function We(n,e,i){let t=g.get(n)||[],o=new ne(n,e,i);return t.push(o),g.set(n,t),()=>wn(o)}function bi(n,e){return We(n,e,-1)}function yi(n,e){return We(n,e,1)}function vi(...n){n.forEach(e=>g.delete(e))}function Di(){g.clear()}function be(n,e){return gi(hi,new G(n,e))}function pn(){return new MouseEvent("mousedown").buttons===0}function fn(){if(!EventTarget||!AbortSignal||!AbortController)return!1;let n=!0,e=new EventTarget,i=new AbortController;return e.addEventListener("test",()=>{n=!1},{signal:i.signal}),i.abort(),e.dispatchEvent(new CustomEvent("test")),n}function te(n){var e;return n.target instanceof HTMLElement?n.target:!(n.target instanceof HTMLElement)&&n.target instanceof Node&&(e=n.target.parentElement)!=null?e:document.body}var gn=!1;w&&document.addEventListener("DOMContentLoaded",()=>{gn=!0});function hn(n){gn||document.readyState==="complete"?n():document.addEventListener("DOMContentLoaded",n)}var Ci="data-file-drop-target",y="file-drop-target-active",m=null,Pi=0,Si=1,Ti=2,Mi=3,Ei=4,xi=5,Ai=6,Ri=7,ki=8,Oi=9,Fi=10,Li=11,Ii=12,Ui=13,ji=14,Bi=15,Ni=16,zi=17,Hi=18,Vi=19,Zi=20,_i=21,Ki=22,Gi=23,Yi=24,Xi=25,Ji=26,Qi=27,qi=28,$i=29,et=30,nt=31,it=32,tt=33,ot=34,rt=35,at=36,st=37,lt=38,dt=39,ct=40,mt=41,ut=42,wt=43,pt=44,ft=45,gt=46,ht=47,Wt=48,bt=49,yt=50,vt=51,Dt=52;function oe(n){return n?n.closest("[".concat(Ci,"]")):null}function Ct(){var n,e,i,t;return((e=(n=window.chrome)==null?void 0:n.webview)==null?void 0:e.postMessageWithAdditionalObjects)==null?!1:((t=(i=window._wails)==null?void 0:i.flags)==null?void 0:t.enableFileDrop)===!0}function Pt(n,e,i){var t,o;(o=(t=window.chrome)==null?void 0:t.webview)!=null&&o.postMessageWithAdditionalObjects&&window.chrome.webview.postMessageWithAdditionalObjects("file:drop:".concat(n,":").concat(e),i)}var De=!1;function Wn(){De=!1,m&&(m.classList.remove(y),m=null)}function bn(){var n,e;((e=(n=window._wails)==null?void 0:n.flags)==null?void 0:e.enableFileDrop)!==!1&&(De=!0)}function yn(){Wn()}function vn(n,e){var o,a;if(!De||((a=(o=window._wails)==null?void 0:o.flags)==null?void 0:a.enableFileDrop)===!1)return;let i=document.elementFromPoint(n,e),t=oe(i);m&&m!==t&&m.classList.remove(y),t?(t.classList.add(y),m=t):m=null}var s=Symbol("caller"),re=class re{constructor(e=""){this[s]=u(c.Window,e);for(let i of Object.getOwnPropertyNames(re.prototype))i!=="constructor"&&typeof this[i]=="function"&&(this[i]=this[i].bind(this))}Get(e){return new re(e)}Position(){return this[s](Pi)}Center(){return this[s](Si)}Close(){return this[s](Ti)}DisableSizeConstraints(){return this[s](Mi)}EnableSizeConstraints(){return this[s](Ei)}Focus(){return this[s](xi)}ForceReload(){return this[s](Ai)}Fullscreen(){return this[s](Ri)}GetScreen(){return this[s](ki)}GetZoom(){return this[s](Oi)}Height(){return this[s](Fi)}Hide(){return this[s](Li)}IsFocused(){return this[s](Ii)}IsFullscreen(){return this[s](Ui)}IsMaximised(){return this[s](ji)}IsMinimised(){return this[s](Bi)}Maximise(){return this[s](Ni)}Minimise(){return this[s](zi)}Name(){return this[s](Hi)}OpenDevTools(){return this[s](Vi)}RelativePosition(){return this[s](Zi)}Reload(){return this[s](_i)}Resizable(){return this[s](Ki)}Restore(){return this[s](Gi)}SetPosition(e,i){return this[s](Yi,{x:e,y:i})}SetAlwaysOnTop(e){return this[s](Xi,{alwaysOnTop:e})}SetBackgroundColour(e,i,t,o){return this[s](Ji,{r:e,g:i,b:t,a:o})}SetFrameless(e){return this[s](Qi,{frameless:e})}SetFullscreenButtonEnabled(e){return this[s](qi,{enabled:e})}SetMaxSize(e,i){return this[s]($i,{width:e,height:i})}SetMinSize(e,i){return this[s](et,{width:e,height:i})}SetRelativePosition(e,i){return this[s](nt,{x:e,y:i})}SetResizable(e){return this[s](it,{resizable:e})}SetSize(e,i){return this[s](tt,{width:e,height:i})}SetTitle(e){return this[s](ot,{title:e})}SetZoom(e){return this[s](rt,{zoom:e})}Show(){return this[s](at)}Size(){return this[s](st)}ToggleFullscreen(){return this[s](lt)}ToggleMaximise(){return this[s](dt)}ToggleFrameless(){return this[s](ct)}UnFullscreen(){return this[s](mt)}UnMaximise(){return this[s](ut)}UnMinimise(){return this[s](wt)}Width(){return this[s](pt)}Zoom(){return this[s](ft)}ZoomIn(){return this[s](gt)}ZoomOut(){return this[s](ht)}ZoomReset(){return this[s](Wt)}HandlePlatformFileDrop(e,i,t){var d,f;if(((f=(d=window._wails)==null?void 0:d.flags)==null?void 0:f.enableFileDrop)===!1)return;let o=document.elementFromPoint(i,t),a=oe(o);if(!a)return;let r={id:a.id,classList:Array.from(a.classList),attributes:{}};for(let D=0;D{var a,r,l;if(!((a=i.dataTransfer)!=null&&a.types.includes("Files")))return;if(i.preventDefault(),((l=(r=window._wails)==null?void 0:r.flags)==null?void 0:l.enableFileDrop)===!1){i.dataTransfer.dropEffect="none";return}e++;let t=document.elementFromPoint(i.clientX,i.clientY),o=oe(t);m&&m!==o&&m.classList.remove(y),o?(o.classList.add(y),i.dataTransfer.dropEffect="copy",m=o):(i.dataTransfer.dropEffect="none",m=null)},!1),n.addEventListener("dragover",i=>{var a,r,l;if(!((a=i.dataTransfer)!=null&&a.types.includes("Files")))return;if(i.preventDefault(),((l=(r=window._wails)==null?void 0:r.flags)==null?void 0:l.enableFileDrop)===!1){i.dataTransfer.dropEffect="none";return}let t=document.elementFromPoint(i.clientX,i.clientY),o=oe(t);m&&m!==o&&m.classList.remove(y),o?(o.classList.contains(y)||o.classList.add(y),i.dataTransfer.dropEffect="copy",m=o):(i.dataTransfer.dropEffect="none",m=null)},!1),n.addEventListener("dragleave",i=>{var t,o,a;(t=i.dataTransfer)!=null&&t.types.includes("Files")&&(i.preventDefault(),((a=(o=window._wails)==null?void 0:o.flags)==null?void 0:a.enableFileDrop)!==!1&&i.relatedTarget!==null&&(e--,(e===0||m&&!m.contains(i.relatedTarget))&&(m&&(m.classList.remove(y),m=null),e=0)))},!1),n.addEventListener("drop",i=>{var t,o,a;if((t=i.dataTransfer)!=null&&t.types.includes("Files")&&(i.preventDefault(),((a=(o=window._wails)==null?void 0:o.flags)==null?void 0:a.enableFileDrop)!==!1&&(e=0,m&&(m.classList.remove(y),m=null),Ct()))){let r=[];if(i.dataTransfer.items){for(let l of i.dataTransfer.items)if(l.kind==="file"){let d=l.getAsFile();d&&r.push(d)}}else if(i.dataTransfer.files)for(let l of i.dataTransfer.files)r.push(l);r.length>0&&Pt(i.clientX,i.clientY,r)}},!1)}typeof window<"u"&&typeof document<"u"&&Tt();var O=St;function Mt(n,e=null){be(n,e)}function Et(n,e){let i=O.Get(n),t=i[e];if(typeof t=="function")try{t.call(i)}catch(o){}}function Dn(n){let e=n.currentTarget;function i(o="Yes"){if(o!=="Yes")return;let a=e.getAttribute("wml-event")||e.getAttribute("data-wml-event"),r=e.getAttribute("wml-target-window")||e.getAttribute("data-wml-target-window")||"",l=e.getAttribute("wml-window")||e.getAttribute("data-wml-window"),d=e.getAttribute("wml-openurl")||e.getAttribute("data-wml-openurl");a!==null&&Mt(a),l!==null&&Et(r,l),d!==null&&we(d)}let t=e.getAttribute("wml-confirm")||e.getAttribute("data-wml-confirm");t?fe({Title:"Confirm",Message:t,Detached:!1,Buttons:[{Label:"Yes"},{Label:"No",IsDefault:!0}]}).then(i):i()}var Y=Symbol("controller"),F=Symbol("triggerMap"),M=Symbol("elementCount"),Ce=class{constructor(){this[Y]=new AbortController}set(e,i){return{signal:this[Y].signal}}reset(){this[Y].abort(),this[Y]=new AbortController}},Pe=class{constructor(){this[F]=new WeakMap,this[M]=0}set(e,i){return this[F].has(e)||this[M]++,this[F].set(e,i),{}}reset(){if(!(this[M]<=0)){for(let e of document.body.querySelectorAll("*")){if(this[M]<=0)break;let i=this[F].get(e);i!=null&&this[M]--;for(let t of i||[])e.removeEventListener(t,Dn)}this[F]=new WeakMap,this[M]=0}}},Cn=fn()?new Ce:new Pe;function xt(n){let e=/\S+/g,i=n.getAttribute("wml-trigger")||n.getAttribute("data-wml-trigger")||"click",t=[],o;for(;(o=e.exec(i))!==null;)t.push(o[0]);let a=Cn.set(n,t);for(let r of t)n.addEventListener(r,Dn,a)}function Se(){hn(Pn)}function Pn(){Cn.reset(),document.body.querySelectorAll("[wml-event], [wml-window], [wml-openurl], [data-wml-event], [data-wml-window], [data-wml-openurl]").forEach(xt)}window.wails=Me;Se();var Re={};p(Re,{Capabilities:()=>Ft,Environment:()=>Lt,IsAMD64:()=>jt,IsARM:()=>Bt,IsARM64:()=>Nt,IsAndroid:()=>Mn,IsDarkMode:()=>Ot,IsDebug:()=>Ae,IsDesktop:()=>Ut,IsIOS:()=>Tn,IsLinux:()=>ae,IsMac:()=>Sn,IsMobile:()=>It,IsWindows:()=>X,invoke:()=>E});var xe=u(c.System),At=0,Rt=1,kt=2,Ee=(function(){var n,e,i,t,o,a;try{if((e=(n=window.chrome)==null?void 0:n.webview)!=null&&e.postMessage)return window.chrome.webview.postMessage.bind(window.chrome.webview);if((o=(t=(i=window.webkit)==null?void 0:i.messageHandlers)==null?void 0:t.external)!=null&&o.postMessage)return window.webkit.messageHandlers.external.postMessage.bind(window.webkit.messageHandlers.external);if((a=window.wails)!=null&&a.invoke)return r=>window.wails.invoke(typeof r=="string"?r:JSON.stringify(r))}catch(r){}return null})();function E(n){Ee==null||Ee(n)}function Ot(){return xe(At)}async function Ft(){return xe(kt)}function Lt(){return xe(Rt)}function X(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="windows"}function ae(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="linux"}function Sn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="darwin"}function Tn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="ios"}function Mn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="android"}function It(){return Tn()||Mn()}function Ut(){return Sn()||X()||ae()}function jt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="amd64"}function Bt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="arm"}function Nt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="arm64"}function Ae(){var n,e;return!!((e=(n=window._wails)==null?void 0:n.environment)!=null&&e.Debug)}w&&window.addEventListener("contextmenu",Zt);var zt=u(c.ContextMenu),Ht=0;function Vt(n,e,i,t){zt(Ht,{id:n,x:e,y:i,data:t})}function Zt(n){let e=te(n),i=window.getComputedStyle(e).getPropertyValue("--custom-contextmenu").trim();if(i){n.preventDefault();let t=window.getComputedStyle(e).getPropertyValue("--custom-contextmenu-data");Vt(i,n.clientX,n.clientY,t)}else _t(n,e)}function _t(n,e){if(Ae())return;switch(window.getComputedStyle(e).getPropertyValue("--default-contextmenu").trim()){case"show":return;case"hide":n.preventDefault();return}if(e.isContentEditable)return;let i=window.getSelection(),t=i&&i.toString().length>0;if(t)for(let o=0;oL});function L(n){try{return window._wails.flags[n]}catch(e){throw new Error("Unable to retrieve flag '"+n+"': "+e,{cause:e})}}var J=!1,Q=!1,Ue=!1,U=!1,j=!1,x="",En="auto",I=0,se=!1;w&&(se=pn(),window._wails=window._wails||{},window._wails.setResizable=n=>{Ue=n,Ue||(U=j=!1,h())});var je=!1;function Kt(){var i,t;let n=(t=(i=window._wails)==null?void 0:i.environment)==null?void 0:t.OS;if(n==="ios"||n==="android")return!0;let e=navigator.userAgent||navigator.vendor||window.opera||"";return/android|iphone|ipad|ipod|iemobile|wpdesktop/i.test(e)}function Oe(){if(!je&&!Kt()){window.addEventListener("mousedown",Ie,{capture:!0}),window.addEventListener("mousemove",Ie,{capture:!0}),window.addEventListener("mouseup",Ie,{capture:!0});for(let n of["click","contextmenu","dblclick"])window.addEventListener(n,Gt,{capture:!0});je=!0}}if(w){Oe(),document.addEventListener("DOMContentLoaded",Oe,{once:!0});let n=0,e=window.setInterval(()=>{if(je){window.clearInterval(e);return}Oe(),++n>100&&window.clearInterval(e)},50)}function Gt(n){(Q||j)&&(n.stopImmediatePropagation(),n.stopPropagation(),n.preventDefault())}var Fe=0,Yt=1,Le=2;function Ie(n){let e,i=n.buttons;switch(n.type){case"mousedown":e=Fe,se||(i=I|1<io,Quit:()=>oo,Show:()=>to});var Be=u(c.Application),$t=0,eo=1,no=2;function io(){return Be($t)}function to(){return Be(eo)}function oo(){return Be(no)}var Ge={};p(Ge,{ByID:()=>So,ByName:()=>Po,Call:()=>Ke,RuntimeError:()=>_});var An=Function.prototype.toString,B=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,ze,le;if(typeof B=="function"&&typeof Object.defineProperty=="function")try{ze=Object.defineProperty({},"length",{get:function(){throw le}}),le={},B(function(){throw 42},null,ze)}catch(n){n!==le&&(B=null)}else B=null;var ro=/^\s*class\b/,Ve=function(e){try{var i=An.call(e);return ro.test(i)}catch(t){return!1}},He=function(e){try{return Ve(e)?!1:(An.call(e),!0)}catch(i){return!1}},de=Object.prototype.toString,ao="[object Object]",so="[object Function]",lo="[object GeneratorFunction]",co="[object HTMLAllCollection]",mo="[object HTML document.all class]",uo="[object HTMLCollection]",wo=typeof Symbol=="function"&&!!Symbol.toStringTag,po=!(0 in[,]),Ze=function(){return!1};typeof document=="object"&&(xn=document.all,de.call(xn)===de.call(document.all)&&(Ze=function(e){if((po||!e)&&(typeof e>"u"||typeof e=="object"))try{var i=de.call(e);return(i===co||i===mo||i===uo||i===ao)&&e("")==null}catch(t){}return!1}));var xn;function fo(n){if(Ze(n))return!0;if(!n||typeof n!="function"&&typeof n!="object")return!1;try{B(n,null,ze)}catch(e){if(e!==le)return!1}return!Ve(n)&&He(n)}function go(n){if(Ze(n))return!0;if(!n||typeof n!="function"&&typeof n!="object")return!1;if(wo)return He(n);if(Ve(n))return!1;var e=de.call(n);return e!==so&&e!==lo&&!/^\[object HTML/.test(e)?!1:He(n)}var P=B?fo:go;var z=class extends Error{constructor(e,i){super(e,i),this.name="CancelError"}},S=class extends Error{constructor(e,i,t){super((t!=null?t:"Unhandled rejection in cancelled promise.")+" Reason: "+ho(i),{cause:i}),this.promise=e,this.name="CancelledRejectionError"}},v=Symbol("barrier"),_e=Symbol("cancelImpl"),Fn,Rn=(Fn=Symbol.species)!=null?Fn:Symbol("speciesPolyfill"),q=class n extends Promise{constructor(e,i){let t,o;if(super((d,f)=>{t=d,o=f}),this.constructor[Rn]!==Promise)throw new TypeError("CancellablePromise does not support transparent subclassing. Please refrain from overriding the [Symbol.species] static property.");let a={promise:this,resolve:t,reject:o,get oncancelled(){return i!=null?i:null},set oncancelled(d){i=d!=null?d:void 0}},r={get root(){return r},resolving:!1,settled:!1};Object.defineProperties(this,{[v]:{configurable:!1,enumerable:!1,writable:!0,value:null},[_e]:{configurable:!1,enumerable:!1,writable:!1,value:Ln(a,r)}});let l=Un(a,r);try{e(In(a,r),l)}catch(d){r.resolving||l(d)}}cancel(e){return new n(i=>{Promise.all([this[_e](new z("Promise cancelled.",{cause:e})),Wo(this)]).then(()=>i(),()=>i())})}cancelOn(e){return e.aborted?this.cancel(e.reason):e.addEventListener("abort",()=>{this.cancel(e.reason)},{capture:!0}),this}then(e,i,t){if(!(this instanceof n))throw new TypeError("CancellablePromise.prototype.then called on an invalid object.");if(P(e)||(e=kn),P(i)||(i=On),e===kn&&i==On)return new n(a=>a(this));let o={};return this[v]=o,new n((a,r)=>{super.then(l=>{var d;this[v]===o&&(this[v]=null),(d=o.resolve)==null||d.call(o);try{a(e(l))}catch(f){r(f)}},l=>{var d;this[v]===o&&(this[v]=null),(d=o.resolve)==null||d.call(o);try{a(i(l))}catch(f){r(f)}})},async a=>{try{return t==null?void 0:t(a)}finally{await this.cancel(a)}})}catch(e,i){return this.then(void 0,e,i)}finally(e,i){if(!(this instanceof n))throw new TypeError("CancellablePromise.prototype.finally called on an invalid object.");return P(e)?this.then(t=>n.resolve(e()).then(()=>t),t=>n.resolve(e()).then(()=>{throw t}),i):this.then(e,e,i)}static get[(v,_e,Rn)](){return Promise}static all(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,a)=>{Promise.all(i).then(o,a)},o=>ce(t,i,o));return t}static allSettled(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,a)=>{Promise.allSettled(i).then(o,a)},o=>ce(t,i,o));return t}static any(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,a)=>{Promise.any(i).then(o,a)},o=>ce(t,i,o));return t}static race(e){let i=Array.from(e),t=new n((o,a)=>{Promise.race(i).then(o,a)},o=>ce(t,i,o));return t}static cancel(e){let i=new n(()=>{});return i.cancel(e),i}static timeout(e,i){let t=new n(()=>{});return AbortSignal&&typeof AbortSignal=="function"&&AbortSignal.timeout&&typeof AbortSignal.timeout=="function"?AbortSignal.timeout(e).addEventListener("abort",()=>{t.cancel(i)}):setTimeout(()=>{t.cancel(i)},e),t}static sleep(e,i){return new n(t=>{setTimeout(()=>t(i),e)})}static reject(e){return new n((i,t)=>t(e))}static resolve(e){return e instanceof n?e:new n(i=>i(e))}static withResolvers(){let e={oncancelled:null};return e.promise=new n((i,t)=>{e.resolve=i,e.reject=t},i=>{var t;(t=e.oncancelled)==null||t.call(e,i)}),e}};function Ln(n,e){let i;return t=>{if(e.settled||(e.settled=!0,e.reason=t,n.reject(t),Promise.prototype.then.call(n.promise,void 0,o=>{if(o!==t)throw o})),!(!e.reason||!n.oncancelled))return i=new Promise(o=>{try{o(n.oncancelled(e.reason.cause))}catch(a){Promise.reject(new S(n.promise,a,"Unhandled exception in oncancelled callback."))}}).catch(o=>{Promise.reject(new S(n.promise,o,"Unhandled rejection in oncancelled callback."))}),n.oncancelled=null,i}}function In(n,e){return i=>{if(!e.resolving){if(e.resolving=!0,i===n.promise){if(e.settled)return;e.settled=!0,n.reject(new TypeError("A promise cannot be resolved with itself."));return}if(i!=null&&(typeof i=="object"||typeof i=="function")){let t;try{t=i.then}catch(o){e.settled=!0,n.reject(o);return}if(P(t)){try{let r=i.cancel;if(P(r)){let l=d=>{Reflect.apply(r,i,[d])};e.reason?Ln(V(H({},n),{oncancelled:l}),e)(e.reason):n.oncancelled=l}}catch(r){}let o={root:e.root,resolving:!1,get settled(){return this.root.settled},set settled(r){this.root.settled=r},get reason(){return this.root.reason}},a=Un(n,o);try{Reflect.apply(t,i,[In(n,o),a])}catch(r){a(r)}return}}e.settled||(e.settled=!0,n.resolve(i))}}}function Un(n,e){return i=>{if(!e.resolving)if(e.resolving=!0,e.settled){try{if(i instanceof z&&e.reason instanceof z&&Object.is(i.cause,e.reason.cause))return}catch(t){}Promise.reject(new S(n.promise,i))}else e.settled=!0,n.reject(i)}}function ce(n,e,i){let t=[];for(let o of e){let a;try{if(!P(o.then)||(a=o.cancel,!P(a)))continue}catch(l){continue}let r;try{r=Reflect.apply(a,o,[i])}catch(l){Promise.reject(new S(n,l,"Unhandled exception in cancel method."));continue}r&&t.push((r instanceof Promise?r:Promise.resolve(r)).catch(l=>{Promise.reject(new S(n,l,"Unhandled rejection in cancel method."))}))}return Promise.all(t)}function kn(n){return n}function On(n){throw n}function ho(n){try{if(n instanceof Error||typeof n!="object"||n.toString!==Object.prototype.toString)return""+n}catch(e){}try{return JSON.stringify(n)}catch(e){}try{return Object.prototype.toString.call(n)}catch(e){}return""}function Wo(n){var i;let e=(i=n[v])!=null?i:{};return"promise"in e||Object.assign(e,N()),n[v]==null&&(e.resolve(),n[v]=e),e.promise}var N=Promise.withResolvers;N&&typeof N=="function"?N=N.bind(Promise):N=function(){let n,e;return{promise:new Promise((t,o)=>{n=t,e=o}),resolve:n,reject:e}};w&&(window._wails=window._wails||{});var bo=u(c.Call),yo=u(c.CancelCall),$=new Map,vo=0,Do=0;function Co(){let n;do n=A();while($.has(n));return n}function Ke(n){let e=Co(),i=q.withResolvers();$.set(e,{resolve:i.resolve,reject:i.reject});let t=bo(vo,Object.assign({"call-id":e},n)),o=!0;t.then(r=>{o=!1,$.delete(e),i.resolve(r)},r=>{o=!1,$.delete(e),i.reject(r)});let a=()=>($.delete(e),yo(Do,{"call-id":e}).catch(r=>{}));return i.oncancelled=()=>o?a():t.then(a),i.promise}function Po(n,...e){return Ke({methodName:n,args:e})}function So(n,...e){return Ke({methodID:n,args:e})}var Ye={};p(Ye,{SetText:()=>Eo,Text:()=>xo});var jn=u(c.Clipboard),To=0,Mo=1;function Eo(n){return jn(To,{text:n})}function xo(){return jn(Mo)}var Xe={};p(Xe,{GetAll:()=>Lo,GetByID:()=>jo,GetByIndex:()=>Bo,GetCurrent:()=>Uo,GetPrimary:()=>Io});var ee=u(c.Screens),Ao=0,Ro=1,ko=2,Oo=3,Fo=4;function Lo(){return ee(Ao)}function Io(){return ee(Ro)}function Uo(){return ee(ko)}function jo(n){return ee(Oo,{id:n})}function Bo(n){return ee(Fo,{index:n})}var qe={};p(qe,{Device:()=>Qe,Haptics:()=>Je});var Bn=u(c.IOS),No=0,zo=1,Je;(e=>{function n(i="medium"){return Bn(No,{style:i})}e.Impact=n})(Je||(Je={}));var Qe;(e=>{function n(){return Bn(zo)}e.Info=n})(Qe||(Qe={}));var on={};p(on,{Device:()=>en,Haptics:()=>$e,Toast:()=>nn});var tn=u(c.Android),Ho=0,Vo=1,Zo=2,$e;(e=>{function n(i=100){return tn(Ho,{duration:i})}e.Vibrate=n})($e||($e={}));var en;(e=>{function n(){return tn(Vo)}e.Info=n})(en||(en={}));var nn;(e=>{function n(i){return tn(Zo,{message:i})}e.Show=n})(nn||(nn={}));var rn={};p(rn,{Events:()=>_o});var _o=Object.freeze({CheckStarted:"wails:updater:check-started",UpdateAvailable:"wails:updater:update-available",NoUpdate:"wails:updater:no-update",DownloadStarted:"wails:updater:download-started",DownloadProgress:"wails:updater:download-progress",DownloadComplete:"wails:updater:download-complete",Verifying:"wails:updater:verifying",Installing:"wails:updater:installing",UpdateReady:"wails:updater:update-ready",Error:"wails:updater:error",Meta:"wails:updater:meta",User:Object.freeze({Install:"wails:updater:user:install",Restart:"wails:updater:user:restart",Skip:"wails:updater:user:skip",Remind:"wails:updater:user:remind",Cancel:"wails:updater:user:cancel"}),Window:Object.freeze({Ready:"wails:updater:window:ready"})});w&&(window._wails=window._wails||{});w&&(window._wails.invoke=E,window._wails.clientId=R);w&&(window._wails.handlePlatformFileDrop=O.HandlePlatformFileDrop.bind(O));w&&(window._wails.handleDragEnter=bn,window._wails.handleDragLeave=yn,window._wails.handleDragOver=vn);w&&E("wails:runtime:ready");function Nn(n){return fetch(n,{method:"HEAD"}).then(e=>{if(e.ok&&(e.headers.get("content-type")||"").toLowerCase().includes("javascript")){let t=document.createElement("script");t.src=n,document.head.appendChild(t)}}).catch(()=>{})}w&&Nn("/wails/custom.js");export{on as Android,Ne as Application,pe as Browser,Ge as Call,z as CancelError,q as CancellablePromise,S as CancelledRejectionError,Ye as Clipboard,he as Create,ge as Dialogs,ye as Events,ke as Flags,qe as IOS,Xe as Screens,Re as System,rn as Updater,Te as WML,O as Window,R as clientId,un as getTransport,Nn as loadOptionalScript,c as objectNames,mn as setTransport}; diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/src/calls.ts b/v3/internal/runtime/desktop/@wailsio/runtime/src/calls.ts index d6e245d8713..4dc39fbbcd6 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/src/calls.ts +++ b/v3/internal/runtime/desktop/@wailsio/runtime/src/calls.ts @@ -48,21 +48,10 @@ export type CallOptions = { args: any[]; }; -/** - * Exception class that will be thrown in case the bound method returns an error. - * The value of the {@link RuntimeError#name} property is "RuntimeError". - */ -export class RuntimeError extends Error { - /** - * Constructs a new RuntimeError instance. - * @param message - The error message. - * @param options - Options to be forwarded to the Error constructor. - */ - constructor(message?: string, options?: ErrorOptions) { - super(message, options); - this.name = "RuntimeError"; - } -} +// runtime.js needs to use RuntimeError internally to properly parse and return +// errors for binding calls, so it had to move there. Exporting here again to +// keep from breaking the public Call interface. +export { RuntimeError } from "./runtime.js"; /** * Generates a unique ID using the nanoid library. diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/src/runtime.ts b/v3/internal/runtime/desktop/@wailsio/runtime/src/runtime.ts index f48c701ec3d..7704f563b2b 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/src/runtime.ts +++ b/v3/internal/runtime/desktop/@wailsio/runtime/src/runtime.ts @@ -23,6 +23,28 @@ const CHUNK_THRESHOLD = 512 * 1024; // Re-export nanoid for custom transport implementations export { nanoid }; +type CallErrorType = { + message: string, + cause?: unknown, + kind: "ReferenceError" | "TypeError" | "RuntimeError" +} + +/** + * Exception class that will be thrown in case the bound method returns an error. + * The value of the {@link RuntimeError#name} property is "RuntimeError". + */ +export class RuntimeError extends Error { + /** + * Constructs a new RuntimeError instance. + * @param message - The error message. + * @param options - Options to be forwarded to the Error constructor. + */ + constructor(message?: string, options?: ErrorOptions) { + super(message, options); + this.name = "RuntimeError"; + } +} + // Object Names export const objectNames = Object.freeze({ Call: 0, @@ -141,7 +163,20 @@ async function runtimeCallWithID(objectID: number, method: number, windowName: s response = await fetch(url, { method: 'POST', headers, body: bodyStr }); } if (!response.ok) { - throw new Error(await response.text()); + const ct = response.headers.get("Content-Type"); + if (ct?.includes("application/json")) { + const json: CallErrorType = await response.json(); + let err; + switch (json.kind) { + case "ReferenceError": err = new ReferenceError(json.message); break; + case "TypeError": err = new TypeError(json.message); break; + case "RuntimeError": err = new RuntimeError(json.message); break; + default: err = new Error(json.message); + } + err.cause = json.cause; + throw err + } + throw new Error(await response.text()); } if ((response.headers.get("Content-Type")?.indexOf("application/json") ?? -1) !== -1) { From 97f5f462298b05a9739c98abb3deb8c31880b580 Mon Sep 17 00:00:00 2001 From: taliesin-ai Date: Mon, 6 Jul 2026 16:13:54 +1000 Subject: [PATCH 07/29] fix(v3/windows): guard FillRect against nil client rect in WM_ERASEBKGND (#5687) GetClientRect can return nil during minimise/restore transitions; passing that to FillRect crashes. Guard before painting the solid background. Salvaged from #5636 (reported by @sinspired); the rest of that PR was superseded by #5596/#5616. Co-authored-by: Lea Anthony --- v3/UNRELEASED_CHANGELOG.md | 3 +++ v3/pkg/application/webview_window_windows.go | 15 ++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/v3/UNRELEASED_CHANGELOG.md b/v3/UNRELEASED_CHANGELOG.md index 0fb0852fdbc..2ac460c23cd 100644 --- a/v3/UNRELEASED_CHANGELOG.md +++ b/v3/UNRELEASED_CHANGELOG.md @@ -23,6 +23,9 @@ After processing, the content will be moved to the main changelog and this file ## Fixed +- Fix `Menu.Update()` not rebuilding the native menu on GTK4 Linux (#5659, independently diagnosed and fixed by @puneetdixit200 in #5539) +- Fix crash enumerating macOS screens on display change by copying screen id/name strings and snapshotting the count (#5565, independently diagnosed and fixed by @x-haose in #5584) +- Fix crash on Windows when `WM_ERASEBKGND` paints a solid background during a minimise/restore transition where `GetClientRect` returns nil (guard reported by @sinspired in #5636) - Fix frontend bindings error always parses as text by @mbaklor in #5690 - Fix Windows build failure when using the `server` build tag, caused by Windows GUI files missing the `!server` build constraint that the macOS and Linux equivalents already have (#5680) diff --git a/v3/pkg/application/webview_window_windows.go b/v3/pkg/application/webview_window_windows.go index 90b8e949028..2b3594bef5e 100644 --- a/v3/pkg/application/webview_window_windows.go +++ b/v3/pkg/application/webview_window_windows.go @@ -1666,11 +1666,16 @@ func (w *windowsWebviewWindow) WndProc(msg uint32, wparam, lparam uintptr) uintp if w.parent.options.BackgroundType == BackgroundTypeSolid { col := w.parent.options.BackgroundColour hdc := w32.HDC(wparam) - rc := w32.GetClientRect(w.hwnd) - colorRef := w32.COLORREF(uint32(col.Red) | uint32(col.Green)<<8 | uint32(col.Blue)<<16) - hbrush := w32.CreateSolidBrush(colorRef) - w32.FillRect(hdc, rc, hbrush) - w32.DeleteObject(w32.HGDIOBJ(hbrush)) + // GetClientRect can legitimately return nil for a window in a + // transient state (minimise/restore transitions are especially + // prone to triggering it). FillRect with a nil rect crashes, so it + // must be checked before painting. + if rc := w32.GetClientRect(w.hwnd); rc != nil { + colorRef := w32.COLORREF(uint32(col.Red) | uint32(col.Green)<<8 | uint32(col.Blue)<<16) + hbrush := w32.CreateSolidBrush(colorRef) + w32.FillRect(hdc, rc, hbrush) + w32.DeleteObject(w32.HGDIOBJ(hbrush)) + } } return 1 // WM_UAHDRAWMENUITEM is handled by MenuBarWndProc at the top of this function From 77fbbfaf01833e8da1b3f3ac18d2c3b1c0c40771 Mon Sep 17 00:00:00 2001 From: taliesin-ai Date: Mon, 6 Jul 2026 16:31:45 +1000 Subject: [PATCH 08/29] ci(npm): rebase-and-retry the version-bump push so publishes stop failing (#5762) master regularly moves while publish-npm.yml runs (nightly release and auto-changelog commits), so the bare 'git push' of the version bump was rejected with non-fast-forward and the job died before reaching 'npm publish'. Every run since 2026-06-29 failed this way, leaving @wailsio/runtime stale on npm at 3.0.0-alpha.95 while master's runtime source moved on - and every fresh 'wails3 init' pulls that stale package. Rebase onto current master and retry (5 attempts, backoff) before giving up. A genuine rebase conflict still fails the job loudly, and the publish step still only runs after the bump commit is safely on master. Co-authored-by: taliesin-ai --- .github/workflows/publish-npm.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml index e8114fe1a37..86b405ec61c 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish-npm.yml @@ -152,7 +152,20 @@ jobs: echo "Files committed back to master:" git status --short git commit -m "[skip ci] Publish @wailsio/runtime ${{ steps.bump-version.outputs.version }}" - git push + # master moves while this job runs (nightly release, auto-changelog + # commits), so a bare push races and gets rejected — which aborts the + # job before `npm publish` and leaves npm stale. Rebase and retry; + # a real conflict still fails loudly without publishing. + for attempt in 1 2 3 4 5; do + if git push; then + exit 0 + fi + echo "push rejected (attempt ${attempt}); rebasing onto current master" + git pull --rebase origin master + sleep $(( attempt * 5 )) + done + echo "::error::could not push the version bump after 5 attempts" + exit 1 - name: Publish npm package (Trusted Publishing / OIDC) # No NODE_AUTH_TOKEN/NPM_TOKEN: npm exchanges the GitHub OIDC token for a From 474b677c9b9191d703607bea7d76143b1b2eeb0c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 6 Jul 2026 10:44:56 +0000 Subject: [PATCH 09/29] release: v2.13.0 Automated weekly v2 release. --- v2/cmd/wails/internal/version.txt | 2 +- .../version-v2.13.0.json | 38 + .../version-v2.13.0.json | 38 + .../version-v2.13.0/community/links.mdx | 26 + .../community/showcase/bulletinboard.mdx | 10 + .../community/showcase/cfntracker.mdx | 37 + .../community/showcase/emailit.mdx | 10 + .../community/showcase/encrypteasy.mdx | 12 + .../community/showcase/espstudio.mdx | 12 + .../community/showcase/filehound.mdx | 16 + .../community/showcase/grpcmd-gui.mdx | 10 + .../community/showcase/hiposter.mdx | 10 + .../community/showcase/kafka-king.mdx | 23 + .../community/showcase/mchat.mdx | 10 + .../community/showcase/minecraftupdater.mdx | 14 + .../community/showcase/minesweeper-xp.mdx | 10 + .../community/showcase/modalfilemanager.mdx | 14 + .../community/showcase/mollywallet.mdx | 10 + .../community/showcase/october.mdx | 14 + .../community/showcase/optimus.mdx | 10 + .../community/showcase/portfall.mdx | 10 + .../community/showcase/resizem.mdx | 10 + .../community/showcase/restic-browser.mdx | 12 + .../community/showcase/riftshare.mdx | 21 + .../community/showcase/scriptbar.mdx | 10 + .../community/showcase/snippetexpander.mdx | 27 + .../community/showcase/surge.mdx | 10 + .../community/showcase/tinyrdm.mdx | 11 + .../community/showcase/wailsterm.mdx | 10 + .../community/showcase/wally.mdx | 10 + .../community/showcase/warmine.mdx | 19 + .../community/showcase/wombat.mdx | 10 + .../community/showcase/ytd.mdx | 10 + .../version-v2.13.0/community/templates.mdx | 76 + .../gettingstarted/building.mdx | 26 + .../gettingstarted/development.mdx | 16 + .../gettingstarted/firstproject.mdx | 128 + .../gettingstarted/installation.mdx | 92 + .../version-v2.13.0/guides/angular.mdx | 14 + .../guides/application-development.mdx | 273 + .../guides/crossplatform-build.mdx | 66 + .../guides/custom-protocol-schemes.mdx | 203 + .../version-v2.13.0/guides/dynamic-assets.mdx | 142 + .../guides/file-association.mdx | 243 + .../version-v2.13.0/guides/frameless.mdx | 87 + .../version-v2.13.0/guides/frontend.mdx | 72 + .../version-v2.13.0/guides/ides.mdx | 127 + .../guides/linux-distro-support.mdx | 103 + .../version-v2.13.0/guides/linux.mdx | 70 + .../guides/local-development.mdx | 55 + .../version-v2.13.0/guides/mac-appstore.mdx | 97 + .../version-v2.13.0/guides/manual-builds.mdx | 95 + .../version-v2.13.0/guides/migrating.mdx | 191 + .../version-v2.13.0/guides/mouse-buttons.mdx | 25 + .../version-v2.13.0/guides/nixos-font.mdx | 10 + .../version-v2.13.0/guides/obfuscated.mdx | 40 + .../version-v2.13.0/guides/overscroll.mdx | 10 + .../version-v2.13.0/guides/routing.mdx | 68 + .../version-v2.13.0/guides/signing.mdx | 401 + .../guides/single-instance-lock.mdx | 81 + .../version-v2.13.0/guides/sveltekit.mdx | 157 + .../version-v2.13.0/guides/templates.mdx | 97 + .../guides/troubleshooting.mdx | 368 + .../version-v2.13.0/guides/vscode.mdx | 82 + .../guides/windows-installer.mdx | 71 + .../version-v2.13.0/guides/windows.mdx | 67 + .../version-v2.13.0/howdoesitwork.mdx | 419 + .../version-v2.13.0/introduction.mdx | 73 + .../version-v2.13.0/reference/cli.mdx | 252 + .../version-v2.13.0/reference/menus.mdx | 236 + .../version-v2.13.0/reference/options.mdx | 964 + .../reference/project-config.mdx | 129 + .../reference/runtime/browser.mdx | 13 + .../reference/runtime/clipboard.mdx | 23 + .../reference/runtime/dialog.mdx | 302 + .../reference/runtime/draganddrop.mdx | 37 + .../reference/runtime/events.mdx | 37 + .../reference/runtime/intro.mdx | 85 + .../version-v2.13.0/reference/runtime/log.mdx | 130 + .../reference/runtime/menu.mdx | 25 + .../reference/runtime/screen.mdx | 38 + .../reference/runtime/window.mdx | 227 + .../version-v2.13.0/tutorials/dogsapi.mdx | 245 + .../version-v2.13.0/tutorials/helloworld.mdx | 123 + .../version-v2.13.0.json | 38 + .../version-v2.13.0}/appendix/_category_.json | 0 .../community/_category_.json | 0 .../version-v2.13.0/community/links.mdx | 26 + .../community/showcase/_category_.json | 0 .../community/showcase/bulletinboard.mdx | 10 + .../community/showcase/cfntracker.mdx | 0 .../community/showcase/emailit.mdx | 10 + .../community/showcase/encrypteasy.mdx | 12 + .../community/showcase/espstudio.mdx | 0 .../community/showcase/filehound.mdx | 16 + .../community/showcase/grpcmd-gui.mdx | 0 .../community/showcase/hiposter.mdx | 10 + .../community/showcase/kafka-king.mdx | 23 + .../community/showcase/mchat.mdx | 0 .../community/showcase/minecraftupdater.mdx | 14 + .../community/showcase/minesweeper-xp.mdx | 0 .../community/showcase/modalfilemanager.mdx | 14 + .../community/showcase/mollywallet.mdx | 10 + .../community/showcase/october.mdx | 14 + .../community/showcase/optimus.mdx | 10 + .../community/showcase/portfall.mdx | 10 + .../community/showcase/resizem.mdx | 0 .../community/showcase/restic-browser.mdx | 12 + .../community/showcase/riftshare.mdx | 21 + .../community/showcase/scriptbar.mdx | 10 + .../community/showcase/snippetexpander.mdx | 0 .../community/showcase/surge.mdx | 10 + .../community/showcase/tinyrdm.mdx | 0 .../community/showcase/wailsterm.mdx | 0 .../community/showcase/wally.mdx | 10 + .../community/showcase/warmine.mdx | 19 + .../community/showcase/wombat.mdx | 10 + .../community/showcase/ytd.mdx | 10 + .../version-v2.13.0/community/templates.mdx | 76 + .../gettingstarted/_category_.json | 0 .../gettingstarted/building.mdx | 26 + .../gettingstarted/development.mdx | 16 + .../gettingstarted/firstproject.mdx | 128 + .../gettingstarted/installation.mdx | 91 + .../version-v2.13.0}/guides/_category_.json | 0 .../version-v2.13.0/guides/angular.mdx | 14 + .../guides/application-development.mdx | 273 + .../guides/crossplatform-build.mdx | 66 + .../guides/custom-protocol-schemes.mdx | 25 +- .../version-v2.13.0/guides/dynamic-assets.mdx | 142 + .../guides/file-association.mdx | 244 + .../version-v2.13.0/guides/frameless.mdx | 87 + .../version-v2.13.0/guides/frontend.mdx | 72 + .../version-v2.13.0/guides/ides.mdx | 127 + .../guides/linux-distro-support.mdx | 103 + .../version-v2.13.0/guides/linux.mdx | 70 + .../guides/local-development.mdx | 55 + .../version-v2.13.0/guides/mac-appstore.mdx | 97 + .../version-v2.13.0/guides/manual-builds.mdx | 95 + .../version-v2.13.0/guides/migrating.mdx | 191 + .../version-v2.13.0/guides/mouse-buttons.mdx | 25 + .../version-v2.13.0}/guides/nixos-font.mdx | 0 .../version-v2.13.0/guides/obfuscated.mdx | 40 + .../version-v2.13.0/guides/overscroll.mdx | 10 + .../version-v2.13.0/guides/routing.mdx | 68 + .../version-v2.13.0/guides/signing.mdx | 401 + .../guides/single-instance-lock.mdx | 81 + .../version-v2.13.0/guides/sveltekit.mdx | 157 + .../version-v2.13.0/guides/templates.mdx | 97 + .../guides/troubleshooting.mdx | 368 + .../version-v2.13.0/guides/vscode.mdx | 82 + .../guides/windows-installer.mdx | 71 + .../version-v2.13.0/guides/windows.mdx | 67 + .../version-v2.13.0/howdoesitwork.mdx | 419 + .../version-v2.13.0/introduction.mdx | 73 + .../reference/_category_.json | 0 .../version-v2.13.0/reference/cli.mdx | 251 + .../version-v2.13.0/reference/menus.mdx | 236 + .../version-v2.13.0/reference/options.mdx | 964 + .../reference/project-config.mdx | 129 + .../reference/runtime/_category_.json | 0 .../reference/runtime/browser.mdx | 13 + .../reference/runtime/clipboard.mdx | 23 + .../reference/runtime/dialog.mdx | 302 + .../reference/runtime/draganddrop.mdx | 37 + .../reference/runtime/events.mdx | 37 + .../reference/runtime/intro.mdx | 85 + .../version-v2.13.0/reference/runtime/log.mdx | 130 + .../reference/runtime/menu.mdx | 25 + .../reference/runtime/screen.mdx | 38 + .../reference/runtime/window.mdx | 227 + .../tutorials/_category_.json | 0 .../version-v2.13.0/tutorials/dogsapi.mdx | 245 + .../version-v2.13.0/tutorials/helloworld.mdx | 123 + .../version-v2.13.0.json | 38 + .../version-v2.13.0/community/links.mdx | 26 + .../community/showcase/bulletinboard.mdx | 0 .../community/showcase/cfntracker.mdx | 39 + .../community/showcase/emailit.mdx | 0 .../community/showcase/encrypteasy.mdx | 12 + .../community/showcase/espstudio.mdx | 13 + .../community/showcase/filehound.mdx | 16 + .../community/showcase/grpcmd-gui.mdx | 10 + .../community/showcase/hiposter.mdx | 10 + .../community/showcase/kafka-king.mdx | 23 + .../community/showcase/mchat.mdx | 10 + .../community/showcase/minecraftupdater.mdx | 14 + .../community/showcase/minesweeper-xp.mdx | 10 + .../community/showcase/modalfilemanager.mdx | 14 + .../community/showcase/mollywallet.mdx | 10 + .../community/showcase/october.mdx | 0 .../community/showcase/optimus.mdx | 10 + .../community/showcase/portfall.mdx | 10 + .../community/showcase/resizem.mdx | 10 + .../community/showcase/restic-browser.mdx | 0 .../community/showcase/riftshare.mdx | 0 .../community/showcase/scriptbar.mdx | 0 .../community/showcase/snippetexpander.mdx | 27 + .../community/showcase/surge.mdx | 0 .../community/showcase/tinyrdm.mdx | 11 + .../community/showcase/wailsterm.mdx | 10 + .../community/showcase/wally.mdx | 0 .../community/showcase/warmine.mdx | 19 + .../community/showcase/wombat.mdx | 10 + .../community/showcase/ytd.mdx | 0 .../version-v2.13.0/community/templates.mdx | 76 + .../gettingstarted/building.mdx | 26 + .../gettingstarted/development.mdx | 16 + .../gettingstarted/firstproject.mdx | 128 + .../gettingstarted/installation.mdx | 91 + .../version-v2.13.0/guides/angular.mdx | 14 + .../guides/application-development.mdx | 273 + .../guides/crossplatform-build.mdx | 66 + .../guides/custom-protocol-schemes.mdx | 204 + .../version-v2.13.0/guides/dynamic-assets.mdx | 142 + .../guides/file-association.mdx | 244 + .../version-v2.13.0/guides/frameless.mdx | 87 + .../version-v2.13.0/guides/frontend.mdx | 72 + .../version-v2.13.0/guides/ides.mdx | 127 + .../guides/linux-distro-support.mdx | 103 + .../version-v2.13.0}/guides/linux.mdx | 6 +- .../guides/local-development.mdx | 55 + .../version-v2.13.0/guides/mac-appstore.mdx | 97 + .../version-v2.13.0/guides/manual-builds.mdx | 95 + .../version-v2.13.0/guides/migrating.mdx | 191 + .../version-v2.13.0/guides/mouse-buttons.mdx | 25 + .../version-v2.13.0/guides/nixos-font.mdx | 10 + .../version-v2.13.0/guides/obfuscated.mdx | 40 + .../version-v2.13.0/guides/overscroll.mdx | 10 + .../version-v2.13.0}/guides/routing.mdx | 0 .../version-v2.13.0/guides/signing.mdx | 401 + .../guides/single-instance-lock.mdx | 81 + .../version-v2.13.0/guides/sveltekit.mdx | 157 + .../version-v2.13.0/guides/templates.mdx | 97 + .../guides/troubleshooting.mdx | 368 + .../version-v2.13.0/guides/vscode.mdx | 82 + .../guides/windows-installer.mdx | 71 + .../version-v2.13.0/guides/windows.mdx | 67 + .../version-v2.13.0/howdoesitwork.mdx | 419 + .../version-v2.13.0/introduction.mdx | 73 + .../version-v2.13.0/reference/cli.mdx | 251 + .../version-v2.13.0/reference/menus.mdx | 236 + .../version-v2.13.0/reference/options.mdx | 964 + .../reference/project-config.mdx | 130 + .../reference/runtime/browser.mdx | 13 + .../reference/runtime/clipboard.mdx | 23 + .../reference/runtime/dialog.mdx | 302 + .../reference/runtime/draganddrop.mdx | 37 + .../reference/runtime/events.mdx | 37 + .../reference/runtime/intro.mdx | 85 + .../version-v2.13.0/reference/runtime/log.mdx | 130 + .../reference/runtime/menu.mdx | 25 + .../reference/runtime/screen.mdx | 38 + .../reference/runtime/window.mdx | 227 + .../version-v2.13.0/tutorials/dogsapi.mdx | 245 + .../version-v2.13.0/tutorials/helloworld.mdx | 123 + .../version-v2.13.0.json | 38 + .../version-v2.13.0/community/links.mdx | 26 + .../community/showcase/bulletinboard.mdx | 10 + .../community/showcase/cfntracker.mdx | 39 + .../community/showcase/emailit.mdx | 10 + .../community/showcase/encrypteasy.mdx | 12 + .../community/showcase/espstudio.mdx | 13 + .../community/showcase/filehound.mdx | 16 + .../community/showcase/grpcmd-gui.mdx | 10 + .../community/showcase/hiposter.mdx | 10 + .../community/showcase/kafka-king.mdx | 23 + .../community/showcase/mchat.mdx | 10 + .../community/showcase/minecraftupdater.mdx | 14 + .../community/showcase/minesweeper-xp.mdx | 10 + .../community/showcase/modalfilemanager.mdx | 14 + .../community/showcase/mollywallet.mdx | 10 + .../community/showcase/october.mdx | 14 + .../community/showcase/optimus.mdx | 10 + .../community/showcase/portfall.mdx | 10 + .../community/showcase/resizem.mdx | 10 + .../community/showcase/restic-browser.mdx | 12 + .../community/showcase/riftshare.mdx | 21 + .../community/showcase/scriptbar.mdx | 10 + .../community/showcase/snippetexpander.mdx | 27 + .../community/showcase/surge.mdx | 10 + .../community/showcase/tinyrdm.mdx | 11 + .../community/showcase/wailsterm.mdx | 10 + .../community/showcase/wally.mdx | 10 + .../community/showcase/warmine.mdx | 19 + .../community/showcase/wombat.mdx | 10 + .../community/showcase/ytd.mdx | 10 + .../version-v2.13.0/community/templates.mdx | 76 + .../gettingstarted/building.mdx | 26 + .../gettingstarted/development.mdx | 16 + .../gettingstarted/firstproject.mdx | 128 + .../gettingstarted/installation.mdx | 92 + .../version-v2.13.0/guides/angular.mdx | 14 + .../guides/application-development.mdx | 273 + .../guides/crossplatform-build.mdx | 66 + .../guides/custom-protocol-schemes.mdx | 204 + .../version-v2.13.0/guides/dynamic-assets.mdx | 142 + .../guides/file-association.mdx | 244 + .../version-v2.13.0/guides/frameless.mdx | 87 + .../version-v2.13.0/guides/frontend.mdx | 72 + .../version-v2.13.0/guides/ides.mdx | 127 + .../guides/linux-distro-support.mdx | 103 + .../version-v2.13.0/guides/linux.mdx | 70 + .../guides/local-development.mdx | 55 + .../version-v2.13.0/guides/mac-appstore.mdx | 97 + .../version-v2.13.0/guides/manual-builds.mdx | 95 + .../version-v2.13.0/guides/migrating.mdx | 191 + .../version-v2.13.0/guides/mouse-buttons.mdx | 25 + .../version-v2.13.0/guides/nixos-font.mdx | 10 + .../version-v2.13.0/guides/obfuscated.mdx | 40 + .../version-v2.13.0/guides/overscroll.mdx | 10 + .../version-v2.13.0/guides/routing.mdx | 68 + .../version-v2.13.0/guides/signing.mdx | 401 + .../guides/single-instance-lock.mdx | 81 + .../version-v2.13.0/guides/sveltekit.mdx | 157 + .../version-v2.13.0/guides/templates.mdx | 97 + .../guides/troubleshooting.mdx | 368 + .../version-v2.13.0/guides/vscode.mdx | 82 + .../guides/windows-installer.mdx | 71 + .../version-v2.13.0/guides/windows.mdx | 67 + .../version-v2.13.0/howdoesitwork.mdx | 419 + .../version-v2.13.0/introduction.mdx | 73 + .../version-v2.13.0/reference/cli.mdx | 251 + .../version-v2.13.0/reference/menus.mdx | 236 + .../version-v2.13.0/reference/options.mdx | 964 + .../reference/project-config.mdx | 130 + .../reference/runtime/browser.mdx | 13 + .../reference/runtime/clipboard.mdx | 23 + .../reference/runtime/dialog.mdx | 302 + .../reference/runtime/draganddrop.mdx | 37 + .../reference/runtime/events.mdx | 37 + .../reference/runtime/intro.mdx | 85 + .../version-v2.13.0/reference/runtime/log.mdx | 130 + .../reference/runtime/menu.mdx | 25 + .../reference/runtime/screen.mdx | 38 + .../reference/runtime/window.mdx | 227 + .../version-v2.13.0/tutorials/dogsapi.mdx | 245 + .../version-v2.13.0/tutorials/helloworld.mdx | 123 + .../version-v2.13.0.json | 38 + .../version-v2.13.0/community/links.mdx | 26 + .../community/showcase/bulletinboard.mdx | 10 + .../community/showcase/cfntracker.mdx | 39 + .../community/showcase/emailit.mdx | 10 + .../community/showcase/encrypteasy.mdx | 12 + .../community/showcase/espstudio.mdx | 13 + .../community/showcase/filehound.mdx | 16 + .../community/showcase/grpcmd-gui.mdx | 10 + .../community/showcase/hiposter.mdx | 10 + .../community/showcase/kafka-king.mdx | 23 + .../community/showcase/mchat.mdx | 10 + .../community/showcase/minecraftupdater.mdx | 14 + .../community/showcase/minesweeper-xp.mdx | 10 + .../community/showcase/modalfilemanager.mdx | 14 + .../community/showcase/mollywallet.mdx | 10 + .../community/showcase/october.mdx | 14 + .../community/showcase/optimus.mdx | 10 + .../community/showcase/portfall.mdx | 10 + .../community/showcase/resizem.mdx | 10 + .../community/showcase/restic-browser.mdx | 12 + .../community/showcase/riftshare.mdx | 21 + .../community/showcase/scriptbar.mdx | 10 + .../community/showcase/snippetexpander.mdx | 27 + .../community/showcase/surge.mdx | 10 + .../community/showcase/tinyrdm.mdx | 11 + .../community/showcase/wailsterm.mdx | 10 + .../community/showcase/wally.mdx | 10 + .../community/showcase/warmine.mdx | 19 + .../community/showcase/wombat.mdx | 10 + .../community/showcase/ytd.mdx | 10 + .../version-v2.13.0/community/templates.mdx | 76 + .../gettingstarted/building.mdx | 26 + .../gettingstarted/development.mdx | 16 + .../gettingstarted/firstproject.mdx | 128 + .../gettingstarted/installation.mdx | 92 + .../version-v2.13.0/guides/angular.mdx | 14 + .../guides/application-development.mdx | 273 + .../guides/crossplatform-build.mdx | 66 + .../guides/custom-protocol-schemes.mdx | 204 + .../version-v2.13.0/guides/dynamic-assets.mdx | 142 + .../guides/file-association.mdx | 244 + .../version-v2.13.0/guides/frameless.mdx | 87 + .../version-v2.13.0/guides/frontend.mdx | 72 + .../version-v2.13.0/guides/ides.mdx | 127 + .../guides/linux-distro-support.mdx | 103 + .../version-v2.13.0/guides/linux.mdx | 70 + .../guides/local-development.mdx | 55 + .../version-v2.13.0/guides/mac-appstore.mdx | 97 + .../version-v2.13.0/guides/manual-builds.mdx | 95 + .../version-v2.13.0/guides/migrating.mdx | 191 + .../version-v2.13.0/guides/mouse-buttons.mdx | 25 + .../version-v2.13.0/guides/nixos-font.mdx | 10 + .../version-v2.13.0/guides/obfuscated.mdx | 40 + .../version-v2.13.0/guides/overscroll.mdx | 10 + .../version-v2.13.0/guides/routing.mdx | 68 + .../version-v2.13.0/guides/signing.mdx | 401 + .../guides/single-instance-lock.mdx | 81 + .../version-v2.13.0/guides/sveltekit.mdx | 157 + .../version-v2.13.0/guides/templates.mdx | 97 + .../guides/troubleshooting.mdx | 368 + .../version-v2.13.0/guides/vscode.mdx | 82 + .../guides/windows-installer.mdx | 71 + .../version-v2.13.0/guides/windows.mdx | 67 + .../version-v2.13.0/howdoesitwork.mdx | 419 + .../version-v2.13.0/introduction.mdx | 73 + .../version-v2.13.0/reference/cli.mdx | 251 + .../version-v2.13.0/reference/menus.mdx | 236 + .../version-v2.13.0/reference/options.mdx | 964 + .../reference/project-config.mdx | 130 + .../reference/runtime/browser.mdx | 13 + .../reference/runtime/clipboard.mdx | 23 + .../reference/runtime/dialog.mdx | 302 + .../reference/runtime/draganddrop.mdx | 37 + .../reference/runtime/events.mdx | 37 + .../reference/runtime/intro.mdx | 85 + .../version-v2.13.0/reference/runtime/log.mdx | 130 + .../reference/runtime/menu.mdx | 25 + .../reference/runtime/screen.mdx | 38 + .../reference/runtime/window.mdx | 227 + .../version-v2.13.0/tutorials/dogsapi.mdx | 245 + .../version-v2.13.0/tutorials/helloworld.mdx | 123 + .../version-v2.13.0.json | 38 + .../version-v2.13.0/appendix/_category_.json | 4 + .../version-v2.13.0/community/_category_.json | 4 + .../version-v2.13.0/community/links.mdx | 26 + .../community/showcase/_category_.json | 4 + .../community/showcase/bulletinboard.mdx | 10 + .../community/showcase/cfntracker.mdx | 39 + .../community/showcase/emailit.mdx | 10 + .../community/showcase/encrypteasy.mdx | 12 + .../community/showcase/espstudio.mdx | 13 + .../community/showcase/filehound.mdx | 16 + .../community/showcase/grpcmd-gui.mdx | 10 + .../community/showcase/hiposter.mdx | 10 + .../community/showcase/kafka-king.mdx | 23 + .../community/showcase/mchat.mdx | 10 + .../community/showcase/minecraftupdater.mdx | 14 + .../community/showcase/minesweeper-xp.mdx | 10 + .../community/showcase/modalfilemanager.mdx | 14 + .../community/showcase/mollywallet.mdx | 10 + .../community/showcase/october.mdx | 14 + .../community/showcase/optimus.mdx | 10 + .../community/showcase/portfall.mdx | 10 + .../community/showcase/resizem.mdx | 10 + .../community/showcase/restic-browser.mdx | 12 + .../community/showcase/riftshare.mdx | 21 + .../community/showcase/scriptbar.mdx | 10 + .../community/showcase/snippetexpander.mdx | 27 + .../community/showcase/surge.mdx | 10 + .../community/showcase/tinyrdm.mdx | 11 + .../community/showcase/wailsterm.mdx | 10 + .../community/showcase/wally.mdx | 10 + .../community/showcase/warmine.mdx | 19 + .../community/showcase/wombat.mdx | 10 + .../community/showcase/ytd.mdx | 10 + .../version-v2.13.0/community/templates.mdx | 76 + .../contributing/developing-new-features.mdx | 34 + .../contributing/documenting.mdx | 34 + .../contributing/fixing-bugs.mdx | 29 + .../setting-up-a-dev-environment.mdx | 30 + .../contributing/ways-of-contributing.mdx | 18 + .../gettingstarted/_category_.json | 4 + .../gettingstarted/building.mdx | 26 + .../gettingstarted/development.mdx | 16 + .../gettingstarted/firstproject.mdx | 128 + .../gettingstarted/installation.mdx | 91 + .../version-v2.13.0/guides/_category_.json | 4 + .../version-v2.13.0/guides/angular.mdx | 14 + .../guides/application-development.mdx | 273 + .../guides/crossplatform-build.mdx | 66 + .../guides/custom-protocol-schemes.mdx | 204 + .../version-v2.13.0/guides/dynamic-assets.mdx | 142 + .../guides/file-association.mdx | 244 + .../version-v2.13.0/guides/frameless.mdx | 87 + .../version-v2.13.0/guides/frontend.mdx | 72 + .../version-v2.13.0/guides/ides.mdx | 127 + .../guides/linux-distro-support.mdx | 103 + .../version-v2.13.0/guides/linux.mdx | 70 + .../guides/local-development.mdx | 55 + .../version-v2.13.0/guides/mac-appstore.mdx | 97 + .../version-v2.13.0/guides/manual-builds.mdx | 95 + .../version-v2.13.0/guides/migrating.mdx | 193 + .../version-v2.13.0/guides/mouse-buttons.mdx | 25 + .../version-v2.13.0/guides/nixos-font.mdx | 10 + .../version-v2.13.0/guides/obfuscated.mdx | 40 + .../version-v2.13.0/guides/overscroll.mdx | 10 + .../version-v2.13.0/guides/routing.mdx | 68 + .../version-v2.13.0/guides/signing.mdx | 401 + .../guides/single-instance-lock.mdx | 81 + .../version-v2.13.0/guides/sveltekit.mdx | 157 + .../version-v2.13.0/guides/templates.mdx | 97 + .../guides/troubleshooting.mdx | 368 + .../version-v2.13.0/guides/vscode.mdx | 82 + .../guides/windows-installer.mdx | 71 + .../version-v2.13.0/guides/windows.mdx | 67 + .../version-v2.13.0/howdoesitwork.mdx | 419 + .../version-v2.13.0/introduction.mdx | 73 + .../version-v2.13.0/reference/_category_.json | 4 + .../version-v2.13.0/reference/cli.mdx | 251 + .../version-v2.13.0/reference/menus.mdx | 236 + .../version-v2.13.0/reference/options.mdx | 980 + .../reference/project-config.mdx | 129 + .../reference/runtime/_category_.json | 4 + .../reference/runtime/browser.mdx | 13 + .../reference/runtime/clipboard.mdx | 23 + .../reference/runtime/dialog.mdx | 302 + .../reference/runtime/draganddrop.mdx | 37 + .../reference/runtime/events.mdx | 37 + .../reference/runtime/intro.mdx | 85 + .../version-v2.13.0/reference/runtime/log.mdx | 130 + .../reference/runtime/menu.mdx | 25 + .../reference/runtime/screen.mdx | 38 + .../reference/runtime/window.mdx | 227 + .../version-v2.13.0/tutorials/_category_.json | 4 + .../version-v2.13.0/tutorials/dogsapi.mdx | 245 + .../version-v2.13.0/tutorials/helloworld.mdx | 123 + website/pnpm-lock.yaml | 14804 +++++++++------- website/src/pages/changelog.mdx | 2 + .../version-v2.13.0/appendix/_category_.json | 4 + .../version-v2.13.0/community/_category_.json | 4 + .../community/links.mdx | 0 .../community/showcase/_category_.json | 4 + .../community/showcase/bulletinboard.mdx | 10 + .../community/showcase/cfntracker.mdx | 39 + .../community/showcase/clustta.mdx | 0 .../community/showcase/emailit.mdx | 10 + .../community/showcase/encrypteasy.mdx | 0 .../community/showcase/espstudio.mdx | 13 + .../community/showcase/filehound.mdx | 0 .../community/showcase/gamestacker.mdx | 19 + .../community/showcase/grpcmd-gui.mdx | 10 + .../community/showcase/hiposter.mdx | 0 .../community/showcase/kafka-king.mdx | 0 .../community/showcase/kira.mdx | 44 + .../community/showcase/klustr.mdx | 16 + .../community/showcase/marasi.mdx | 0 .../community/showcase/mchat.mdx | 10 + .../community/showcase/minecraftupdater.mdx | 0 .../community/showcase/minesweeper-xp.mdx | 10 + .../community/showcase/modalfilemanager.mdx | 0 .../community/showcase/mollywallet.mdx | 0 .../community/showcase/october.mdx | 14 + .../community/showcase/optimus.mdx | 0 .../community/showcase/pausa.mdx | 14 + .../community/showcase/portfall.mdx | 0 .../community/showcase/resizem.mdx | 10 + .../community/showcase/restic-browser.mdx | 12 + .../community/showcase/riftshare.mdx | 21 + .../community/showcase/scriptbar.mdx | 10 + .../community/showcase/snippetexpander.mdx | 27 + .../community/showcase/surge.mdx | 10 + .../community/showcase/tinyrdm.mdx | 11 + .../community/showcase/upbeat.mdx | 18 + .../community/showcase/wailsterm.mdx | 10 + .../community/showcase/wally.mdx | 10 + .../community/showcase/warmine.mdx | 0 .../community/showcase/wedm.mdx | 11 + .../community/showcase/wombat.mdx | 0 .../community/showcase/ytd.mdx | 10 + .../community/templates.mdx | 2 - .../gettingstarted/_category_.json | 4 + .../gettingstarted/building.mdx | 0 .../gettingstarted/development.mdx | 0 .../gettingstarted/firstproject.mdx | 4 + .../gettingstarted/installation.mdx | 2 + .../version-v2.13.0/guides/_category_.json | 4 + .../guides/angular.mdx | 11 +- .../guides/application-development.mdx | 49 +- .../guides/crossplatform-build.mdx | 0 .../guides/custom-protocol-schemes.mdx | 207 + .../guides/dynamic-assets.mdx | 0 .../guides/file-association.mdx | 0 .../guides/frameless.mdx | 0 .../guides/frontend.mdx | 0 .../guides/ides.mdx | 0 .../guides/linux-distro-support.mdx | 84 + .../version-v2.13.0/guides/linux.mdx | 126 + .../guides/local-development.mdx | 0 .../guides/mac-appstore.mdx | 0 .../guides/manual-builds.mdx | 0 .../guides/migrating.mdx | 0 .../version-v2.13.0/guides/mobile.mdx | 342 + .../guides/mouse-buttons.mdx | 0 .../version-v2.13.0/guides/nixos-font.mdx | 10 + .../version-v2.13.0/guides/notifications.mdx | 233 + .../guides/obfuscated.mdx | 0 .../guides/overscroll.mdx | 0 .../version-v2.13.0/guides/routing.mdx | 68 + .../guides/signing.mdx | 2 + .../guides/single-instance-lock.mdx | 0 .../guides/sveltekit.mdx | 0 .../guides/templates.mdx | 0 .../guides/troubleshooting.mdx | 0 .../guides/vscode.mdx | 0 .../guides/windows-installer.mdx | 0 .../guides/windows.mdx | 0 .../howdoesitwork.mdx | 24 +- .../introduction.mdx | 0 .../version-v2.13.0/reference/_category_.json | 4 + .../reference/cli.mdx | 0 .../reference/menus.mdx | 26 +- .../reference/options.mdx | 0 .../reference/project-config.mdx | 0 .../reference/runtime/_category_.json | 4 + .../reference/runtime/browser.mdx | 0 .../reference/runtime/clipboard.mdx | 0 .../reference/runtime/dialog.mdx | 0 .../reference/runtime/draganddrop.mdx | 0 .../reference/runtime/events.mdx | 44 + .../reference/runtime/intro.mdx | 43 + .../reference/runtime/log.mdx | 0 .../reference/runtime/menu.mdx | 0 .../reference/runtime/notification.mdx | 601 + .../reference/runtime/screen.mdx | 0 .../reference/runtime/window.mdx | 0 .../version-v2.13.0/tutorials/_category_.json | 4 + .../tutorials/dogsapi.mdx | 0 .../tutorials/helloworld.mdx | 0 ...ars.json => version-v2.13.0-sidebars.json} | 0 website/versions.json | 2 +- 619 files changed, 54760 insertions(+), 6816 deletions(-) create mode 100644 website/i18n/en/docusaurus-plugin-content-docs/version-v2.13.0.json create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0.json create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/links.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/bulletinboard.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/cfntracker.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/emailit.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/encrypteasy.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/espstudio.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/filehound.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/grpcmd-gui.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/hiposter.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/kafka-king.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mchat.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minecraftupdater.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minesweeper-xp.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/modalfilemanager.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mollywallet.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/october.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/optimus.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/portfall.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/resizem.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/restic-browser.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/riftshare.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/scriptbar.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/snippetexpander.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/surge.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/tinyrdm.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wailsterm.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wally.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/warmine.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wombat.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/ytd.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/templates.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/building.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/development.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/firstproject.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/installation.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/angular.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/application-development.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/crossplatform-build.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/custom-protocol-schemes.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/dynamic-assets.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/file-association.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/frameless.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/frontend.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/ides.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux-distro-support.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/local-development.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/mac-appstore.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/manual-builds.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/migrating.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/mouse-buttons.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/nixos-font.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/obfuscated.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/overscroll.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/routing.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/signing.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/single-instance-lock.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/sveltekit.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/templates.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/troubleshooting.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/vscode.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/windows-installer.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/windows.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/howdoesitwork.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/introduction.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/reference/cli.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/reference/menus.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/reference/options.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/reference/project-config.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/browser.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/clipboard.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/dialog.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/draganddrop.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/events.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/intro.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/log.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/menu.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/screen.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/window.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/tutorials/dogsapi.mdx create mode 100644 website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/tutorials/helloworld.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0.json rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/appendix/_category_.json (100%) rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/community/_category_.json (100%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/links.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/_category_.json (100%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/bulletinboard.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/cfntracker.mdx (100%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/emailit.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/encrypteasy.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/espstudio.mdx (100%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/filehound.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/grpcmd-gui.mdx (100%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/hiposter.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/kafka-king.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/mchat.mdx (100%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minecraftupdater.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/minesweeper-xp.mdx (100%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/modalfilemanager.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mollywallet.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/october.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/optimus.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/portfall.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/resizem.mdx (100%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/restic-browser.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/riftshare.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/scriptbar.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/snippetexpander.mdx (100%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/surge.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/tinyrdm.mdx (100%) rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/wailsterm.mdx (100%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wally.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/warmine.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wombat.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/ytd.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/community/templates.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/gettingstarted/_category_.json (100%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/building.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/development.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/firstproject.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/installation.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/guides/_category_.json (100%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/angular.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/application-development.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/crossplatform-build.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/guides/custom-protocol-schemes.mdx (95%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/dynamic-assets.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/file-association.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/frameless.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/frontend.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/ides.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux-distro-support.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/local-development.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/mac-appstore.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/manual-builds.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/migrating.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/mouse-buttons.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/guides/nixos-font.mdx (100%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/obfuscated.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/overscroll.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/routing.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/signing.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/single-instance-lock.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/sveltekit.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/templates.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/troubleshooting.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/vscode.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/windows-installer.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/guides/windows.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/howdoesitwork.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/introduction.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/reference/_category_.json (100%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/reference/cli.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/reference/menus.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/reference/options.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/reference/project-config.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/reference/runtime/_category_.json (100%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/browser.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/clipboard.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/dialog.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/draganddrop.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/events.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/intro.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/log.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/menu.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/screen.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/window.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0}/tutorials/_category_.json (100%) create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/tutorials/dogsapi.mdx create mode 100644 website/i18n/ja/docusaurus-plugin-content-docs/version-v2.13.0/tutorials/helloworld.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0.json create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/links.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/bulletinboard.mdx (100%) create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/cfntracker.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/emailit.mdx (100%) create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/encrypteasy.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/espstudio.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/filehound.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/grpcmd-gui.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/hiposter.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/kafka-king.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mchat.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minecraftupdater.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minesweeper-xp.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/modalfilemanager.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mollywallet.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/october.mdx (100%) create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/optimus.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/portfall.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/resizem.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/restic-browser.mdx (100%) rename website/{versioned_docs/version-v2.11.0 => i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/riftshare.mdx (100%) rename website/{versioned_docs/version-v2.11.0 => i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/scriptbar.mdx (100%) create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/snippetexpander.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/surge.mdx (100%) create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/tinyrdm.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wailsterm.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/wally.mdx (100%) create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/warmine.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wombat.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0}/community/showcase/ytd.mdx (100%) create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/community/templates.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/building.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/development.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/firstproject.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/installation.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/angular.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/application-development.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/crossplatform-build.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/custom-protocol-schemes.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/dynamic-assets.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/file-association.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/frameless.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/frontend.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/ides.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux-distro-support.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0}/guides/linux.mdx (88%) create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/local-development.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/mac-appstore.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/manual-builds.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/migrating.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/mouse-buttons.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/nixos-font.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/obfuscated.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/overscroll.mdx rename website/{versioned_docs/version-v2.11.0 => i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0}/guides/routing.mdx (100%) create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/signing.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/single-instance-lock.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/sveltekit.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/templates.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/troubleshooting.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/vscode.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/windows-installer.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/guides/windows.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/howdoesitwork.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/introduction.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/reference/cli.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/reference/menus.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/reference/options.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/reference/project-config.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/browser.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/clipboard.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/dialog.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/draganddrop.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/events.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/intro.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/log.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/menu.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/screen.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/window.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/tutorials/dogsapi.mdx create mode 100644 website/i18n/ko/docusaurus-plugin-content-docs/version-v2.13.0/tutorials/helloworld.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0.json create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/links.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/bulletinboard.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/cfntracker.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/emailit.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/encrypteasy.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/espstudio.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/filehound.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/grpcmd-gui.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/hiposter.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/kafka-king.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mchat.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minecraftupdater.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minesweeper-xp.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/modalfilemanager.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mollywallet.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/october.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/optimus.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/portfall.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/resizem.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/restic-browser.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/riftshare.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/scriptbar.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/snippetexpander.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/surge.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/tinyrdm.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wailsterm.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wally.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/warmine.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wombat.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/ytd.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/community/templates.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/building.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/development.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/firstproject.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/installation.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/angular.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/application-development.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/crossplatform-build.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/custom-protocol-schemes.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/dynamic-assets.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/file-association.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/frameless.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/frontend.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/ides.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux-distro-support.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/local-development.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/mac-appstore.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/manual-builds.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/migrating.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/mouse-buttons.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/nixos-font.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/obfuscated.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/overscroll.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/routing.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/signing.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/single-instance-lock.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/sveltekit.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/templates.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/troubleshooting.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/vscode.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/windows-installer.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/guides/windows.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/howdoesitwork.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/introduction.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/reference/cli.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/reference/menus.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/reference/options.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/reference/project-config.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/browser.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/clipboard.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/dialog.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/draganddrop.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/events.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/intro.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/log.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/menu.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/screen.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/window.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/tutorials/dogsapi.mdx create mode 100644 website/i18n/pt/docusaurus-plugin-content-docs/version-v2.13.0/tutorials/helloworld.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0.json create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/links.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/bulletinboard.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/cfntracker.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/emailit.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/encrypteasy.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/espstudio.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/filehound.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/grpcmd-gui.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/hiposter.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/kafka-king.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mchat.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minecraftupdater.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minesweeper-xp.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/modalfilemanager.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mollywallet.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/october.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/optimus.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/portfall.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/resizem.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/restic-browser.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/riftshare.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/scriptbar.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/snippetexpander.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/surge.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/tinyrdm.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wailsterm.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wally.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/warmine.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wombat.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/ytd.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/community/templates.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/building.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/development.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/firstproject.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/installation.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/angular.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/application-development.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/crossplatform-build.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/custom-protocol-schemes.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/dynamic-assets.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/file-association.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/frameless.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/frontend.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/ides.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux-distro-support.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/local-development.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/mac-appstore.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/manual-builds.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/migrating.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/mouse-buttons.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/nixos-font.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/obfuscated.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/overscroll.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/routing.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/signing.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/single-instance-lock.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/sveltekit.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/templates.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/troubleshooting.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/vscode.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/windows-installer.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/guides/windows.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/howdoesitwork.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/introduction.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/reference/cli.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/reference/menus.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/reference/options.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/reference/project-config.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/browser.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/clipboard.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/dialog.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/draganddrop.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/events.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/intro.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/log.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/menu.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/screen.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/window.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/tutorials/dogsapi.mdx create mode 100644 website/i18n/ru/docusaurus-plugin-content-docs/version-v2.13.0/tutorials/helloworld.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0.json create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/appendix/_category_.json create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/_category_.json create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/links.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/_category_.json create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/bulletinboard.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/cfntracker.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/emailit.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/encrypteasy.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/espstudio.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/filehound.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/grpcmd-gui.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/hiposter.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/kafka-king.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mchat.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minecraftupdater.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minesweeper-xp.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/modalfilemanager.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mollywallet.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/october.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/optimus.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/portfall.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/resizem.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/restic-browser.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/riftshare.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/scriptbar.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/snippetexpander.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/surge.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/tinyrdm.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wailsterm.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wally.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/warmine.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wombat.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/ytd.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/community/templates.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/contributing/developing-new-features.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/contributing/documenting.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/contributing/fixing-bugs.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/contributing/setting-up-a-dev-environment.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/contributing/ways-of-contributing.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/_category_.json create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/building.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/development.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/firstproject.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/installation.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/_category_.json create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/angular.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/application-development.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/crossplatform-build.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/custom-protocol-schemes.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/dynamic-assets.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/file-association.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/frameless.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/frontend.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/ides.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux-distro-support.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/local-development.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/mac-appstore.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/manual-builds.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/migrating.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/mouse-buttons.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/nixos-font.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/obfuscated.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/overscroll.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/routing.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/signing.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/single-instance-lock.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/sveltekit.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/templates.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/troubleshooting.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/vscode.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/windows-installer.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/guides/windows.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/howdoesitwork.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/introduction.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/reference/_category_.json create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/reference/cli.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/reference/menus.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/reference/options.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/reference/project-config.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/_category_.json create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/browser.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/clipboard.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/dialog.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/draganddrop.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/events.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/intro.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/log.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/menu.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/screen.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/reference/runtime/window.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/tutorials/_category_.json create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/tutorials/dogsapi.mdx create mode 100644 website/i18n/zh-Hans/docusaurus-plugin-content-docs/version-v2.13.0/tutorials/helloworld.mdx create mode 100644 website/versioned_docs/version-v2.13.0/appendix/_category_.json create mode 100644 website/versioned_docs/version-v2.13.0/community/_category_.json rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/community/links.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/_category_.json create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/bulletinboard.mdx create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/cfntracker.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/community/showcase/clustta.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/emailit.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/community/showcase/encrypteasy.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/espstudio.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/community/showcase/filehound.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/gamestacker.mdx create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/grpcmd-gui.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/community/showcase/hiposter.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/community/showcase/kafka-king.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/kira.mdx create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/klustr.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/community/showcase/marasi.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/mchat.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/community/showcase/minecraftupdater.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/minesweeper-xp.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/community/showcase/modalfilemanager.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/community/showcase/mollywallet.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/october.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/community/showcase/optimus.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/pausa.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/community/showcase/portfall.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/resizem.mdx create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/restic-browser.mdx create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/riftshare.mdx create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/scriptbar.mdx create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/snippetexpander.mdx create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/surge.mdx create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/tinyrdm.mdx create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/upbeat.mdx create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/wailsterm.mdx create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/wally.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/community/showcase/warmine.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/wedm.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/community/showcase/wombat.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/community/showcase/ytd.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/community/templates.mdx (95%) create mode 100644 website/versioned_docs/version-v2.13.0/gettingstarted/_category_.json rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/gettingstarted/building.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/gettingstarted/development.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/gettingstarted/firstproject.mdx (91%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/gettingstarted/installation.mdx (92%) create mode 100644 website/versioned_docs/version-v2.13.0/guides/_category_.json rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/angular.mdx (58%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/application-development.mdx (95%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/crossplatform-build.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/guides/custom-protocol-schemes.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/dynamic-assets.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/file-association.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/frameless.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/frontend.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/ides.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/linux-distro-support.mdx (56%) create mode 100644 website/versioned_docs/version-v2.13.0/guides/linux.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/local-development.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/mac-appstore.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/manual-builds.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/migrating.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/guides/mobile.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/mouse-buttons.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/guides/nixos-font.mdx create mode 100644 website/versioned_docs/version-v2.13.0/guides/notifications.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/obfuscated.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/overscroll.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/guides/routing.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/signing.mdx (99%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/single-instance-lock.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/sveltekit.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/templates.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/troubleshooting.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/vscode.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/windows-installer.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/guides/windows.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/howdoesitwork.mdx (98%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/introduction.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/reference/_category_.json rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/reference/cli.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/reference/menus.mdx (93%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/reference/options.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/reference/project-config.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/reference/runtime/_category_.json rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/reference/runtime/browser.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/reference/runtime/clipboard.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/reference/runtime/dialog.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/reference/runtime/draganddrop.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/reference/runtime/events.mdx (71%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/reference/runtime/intro.mdx (64%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/reference/runtime/log.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/reference/runtime/menu.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/reference/runtime/notification.mdx rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/reference/runtime/screen.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/reference/runtime/window.mdx (100%) create mode 100644 website/versioned_docs/version-v2.13.0/tutorials/_category_.json rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/tutorials/dogsapi.mdx (100%) rename website/versioned_docs/{version-v2.11.0 => version-v2.13.0}/tutorials/helloworld.mdx (100%) rename website/versioned_sidebars/{version-v2.11.0-sidebars.json => version-v2.13.0-sidebars.json} (100%) diff --git a/v2/cmd/wails/internal/version.txt b/v2/cmd/wails/internal/version.txt index a5db00c8c11..311f78b667b 100644 --- a/v2/cmd/wails/internal/version.txt +++ b/v2/cmd/wails/internal/version.txt @@ -1 +1 @@ -v2.12.0 \ No newline at end of file +v2.13.0 \ No newline at end of file diff --git a/website/i18n/en/docusaurus-plugin-content-docs/version-v2.13.0.json b/website/i18n/en/docusaurus-plugin-content-docs/version-v2.13.0.json new file mode 100644 index 00000000000..a665611f119 --- /dev/null +++ b/website/i18n/en/docusaurus-plugin-content-docs/version-v2.13.0.json @@ -0,0 +1,38 @@ +{ + "version.label": { + "message": "v2.13.0", + "description": "The label for version v2.13.0" + }, + "sidebar.docs.category.Getting Started": { + "message": "Getting Started", + "description": "The label for category 'Getting Started' in sidebar 'docs'" + }, + "sidebar.docs.category.Reference": { + "message": "Reference", + "description": "The label for category 'Reference' in sidebar 'docs'" + }, + "sidebar.docs.category.Runtime": { + "message": "Runtime", + "description": "The label for category 'Runtime' in sidebar 'docs'" + }, + "sidebar.docs.category.Community": { + "message": "Community", + "description": "The label for category 'Community' in sidebar 'docs'" + }, + "sidebar.docs.category.Showcase": { + "message": "Showcase", + "description": "The label for category 'Showcase' in sidebar 'docs'" + }, + "sidebar.docs.category.Guides": { + "message": "Guides", + "description": "The label for category 'Guides' in sidebar 'docs'" + }, + "sidebar.docs.category.Tutorials": { + "message": "Tutorials", + "description": "The label for category 'Tutorials' in sidebar 'docs'" + }, + "sidebar.docs.link.Contributing": { + "message": "Contributing", + "description": "The label for link 'Contributing' in sidebar 'docs', linking to '/community-guide#ways-of-contributing'" + } +} diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0.json b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0.json new file mode 100644 index 00000000000..f9fa85bae9c --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0.json @@ -0,0 +1,38 @@ +{ + "version.label": { + "message": "Prochaine version 🚧", + "description": "The label for version current" + }, + "sidebar.docs.category.Getting Started": { + "message": "Pour démarrer", + "description": "The label for category Getting Started in sidebar docs" + }, + "sidebar.docs.category.Reference": { + "message": "Références", + "description": "The label for category Reference in sidebar docs" + }, + "sidebar.docs.category.Runtime": { + "message": "Exécution", + "description": "The label for category Runtime in sidebar docs" + }, + "sidebar.docs.category.Community": { + "message": "Communauté", + "description": "The label for category Community in sidebar docs" + }, + "sidebar.docs.category.Showcase": { + "message": "Galerie", + "description": "The label for category Showcase in sidebar docs" + }, + "sidebar.docs.category.Guides": { + "message": "Guides", + "description": "The label for category Guides in sidebar docs" + }, + "sidebar.docs.category.Tutorials": { + "message": "Tutoriels", + "description": "The label for category Tutorials in sidebar docs" + }, + "sidebar.docs.link.Contributing": { + "message": "Contribuer", + "description": "The label for link Contributing in sidebar docs, linking to /community-guide#ways-of-contributing" + } +} diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/links.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/links.mdx new file mode 100644 index 00000000000..d6b742435e4 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/links.mdx @@ -0,0 +1,26 @@ +--- +sidebar_position: 2 +--- + +# Liens + +Cette page sert de liste pour les liens liés à la communauté. Veuillez soumettre une PR (cliquez sur `Modifier cette page` en bas) pour soumettre des liens. + +## Awesome Wails + +La [liste définitive](https://github.com/wailsapp/awesome-wails) de liens relatifs à Wails. + +## Canaux de support + +- [Serveur Discord Wails](https://discord.gg/JDdSxwjhGf) +- [Github Issues](https://github.com/wailsapp/wails/issues) +- [canal de discussion sur la bêta v2](https://github.com/wailsapp/wails/discussions/828) + +## Réseaux sociaux + +- [Twitter](https://twitter.com/wailsapp) +- [Groupe QQ pour la communauté chinoise de Wails](https://qm.qq.com/cgi-bin/qm/qr?k=PmIURne5hFGNd7QWzW5qd6FV-INEjNJv&jump_from=webapi) - Numéro de groupe : 1067173054 + +## Autres tutoriels et articles + +- [Construction d'un Panneau d'Affichage](https://blog.customct.com/building-bulletin-board) diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/bulletinboard.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/bulletinboard.mdx new file mode 100644 index 00000000000..2c56a2e836c --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/bulletinboard.mdx @@ -0,0 +1,10 @@ +# BulletinBoard + +```mdx-code-block +

            + +
            +

            +``` + +L'application [BulletinBoard](https://github.com/raguay/BulletinBoard) est un panneau de messages versitaux pour les messages statiques ou les boîtes de dialogue pour obtenir des informations de l'utilisateur pour un script. Il a une TUI pour créer de nouvelles boîtes de dialogue qui peuvent être utilisées pour obtenir des informations de l'utilisateur. Son design est de rester en fonctionnement sur votre système et de montrer les informations au besoin, puis de se cacher. J'ai un processus pour surveiller un fichier sur mon système et pour envoyer le contenu à BulletinBoard une fois modifié. Cela fonctionne très bien avec mes workflows. Il y a auss un [workflow Alfred](https://github.com/raguay/MyAlfred/blob/master/Alfred%205/EmailIt.alfredworkflow) pour envoyer les informations au programme. Le workflow fonctionne aussi avec [EmailIt](https://github.com/raguay/EmailIt). diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/cfntracker.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/cfntracker.mdx new file mode 100644 index 00000000000..7b9dd1164e5 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/cfntracker.mdx @@ -0,0 +1,37 @@ +# CFN Tracker + +```mdx-code-block +

            + +
            +

            +``` + +[CFN Tracker](https://github.com/williamsjokvist/cfn-tracker) - Suivez les matchs en direct de n'importe quel profil CFN Street +Fighter 6 ou V. Allez sur +[le site web](https://cfn.williamsjokvist.se/) pour commencer. + +## Fonctionnalités + +- Suivi des matchs en temps réel +- Affichage des logs et des statistiques des matchs +- Prise en charge de l'affichage des statistiques en direct à OBS via la source Browser +- Support de SF6 et SFV +- Possibilité pour les utilisateurs de créer leurs propres thèmes OBS avec du CSS + +### Technologies principales utilisées aux côtés de Wails + +- [Task](https://github.com/go-task/task) - encapsuler le CLI Wails pour rendre + des commandes communes faciles à utiliser +- [React](https://github.com/facebook/react) - choisi pour son écosystème riche + (radix, framer-motion) +- [Bun](https://github.com/oven-sh/bun) - utilisé pour sa résolution de dépendance + rapide et temps de compilation +- [Rod](https://github.com/go-rod/rod) - Outil d'automatisation du navigateur sans fenêtre pour les modifications d'authentification et de sondage +- [SQLite](https://github.com/mattn/go-sqlite3) - utilisé pour stocker des matches, + sessions et profils +- [Server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events) - Stream HTTP pour suivant les mises à jour et envoyant les modifications aux sources OBS +- [i18next](https://github.com/i18next/) - avec le connecteur backend pour servir les objets de localisation + depuis Go +- [xstate](https://github.com/statelyai/xstate) - des machines à états pour le processus d'authentification + et le suivi diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/emailit.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/emailit.mdx new file mode 100644 index 00000000000..ac64e25acce --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/emailit.mdx @@ -0,0 +1,10 @@ +# EmailIt + +```mdx-code-block +

            + +
            +

            +``` + +[EmailIt](https://github.com/raguay/EmailIt/) est un programme Wails 2 qui est un expéditeur de courrier électronique basé sur le markdown uniquement avec neuf blocs-notes, pour manipuler le texte et les modèles. Il a également un terminal pour exécuter des scripts dans EmailIt sur les fichiers de votre système. Les scripts et modèles peuvent être utilisés depuis la ligne de commande elle-même ou avec les extensions Alfred, Keyboard Maestro, Dropzone ou PopClip. Il supporte également les scripts et thèmes téléchargés sous GitHub. La documentation n'est pas complète, mais le programme fonctionne. Il est construit en utilisant Wails2 et Svelte, et le téléchargement est une application macOS universelle. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/encrypteasy.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/encrypteasy.mdx new file mode 100644 index 00000000000..7f4bd7a634a --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/encrypteasy.mdx @@ -0,0 +1,12 @@ +# EncryptEasy + +```mdx-code-block +

            + +
            +

            +``` + +**[EncryptEasy](https://www.encrypteasy.app) est un outil de chiffrement PGP simple et facile à utiliser, qui gère toutes vos clés et celles de vos contacts. Le chiffrement devrait être simple. Développé avec Wails.** + +Chiffrer les messages à l'aide de PGP est la norme de l'industrie. Tout le monde a une clé privée et publique. Votre clé privée, eh bien, doit être privée afin que vous seul puissiez lire les messages. Votre clé publique est distribuée à toute personne qui veut vous envoyer des messages secrets, chiffrés. Gérer les clés, chiffrer les messages et déchiffrer les messages devrait être une expérience agréable. EncryptEasy a pour but de vous simplifier la tâche. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/espstudio.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/espstudio.mdx new file mode 100644 index 00000000000..3f9f1ab344d --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/espstudio.mdx @@ -0,0 +1,12 @@ +# ESP Studio + +```mdx-code-block +

            + +
            +

            +``` + +[ESP Studio](https://github.com/torabian/esp-studio) - Cross platform, Desktop, Cloud, et logiciel embarqué pour contrôler les appareils ESP/Arduino, et construire des workflows et contrôles de systèmes IOT diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/filehound.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/filehound.mdx new file mode 100644 index 00000000000..7522afa6ecf --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/filehound.mdx @@ -0,0 +1,16 @@ +# Utilitaire d'exportation FileHound + +```mdx-code-block +

            + +
            +

            +``` + +[L'utilitaire d'exportation FileHound](https://www.filehound.co.uk/) est une plate-forme de gestion de documents cloud conçue pour la conservation sécurisée de fichiers, l'automatisation des processus métier et les capacités de SmartCapture. + +L'utilitaire d'exportation FileHound permet aux administrateurs FileHound d'exécuter des tâches sécurisées d'extraction de documents et de données à des fins alternatives de sauvegarde et de récupération. Cette application téléchargera tous les documents et/ou métadonnées enregistrés dans FileHound en fonction des filtres que vous avez choisis. Les métadonnées seront exportées dans les formats JSON et XML. + +Backend construit avec: Go 1.15 Wails 1.11.0 go-sqlite3 1.14.6 go-linq 3.2 + +Frontend avec: Vue 2.6.11 Vuex 3.4.0 TypeScript Tailwind 1.9.6 diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/grpcmd-gui.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/grpcmd-gui.mdx new file mode 100644 index 00000000000..213124a89a3 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/grpcmd-gui.mdx @@ -0,0 +1,10 @@ +# grpcmd-gui + +```mdx-code-block +

            + +
            +

            +``` + +[grpcmd-gui](https://grpc.md/gui) est une application et un client API Desktop cross-plateform moderne pour le développement et le test d'appels gRPC. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/hiposter.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/hiposter.mdx new file mode 100644 index 00000000000..21fd4b11743 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/hiposter.mdx @@ -0,0 +1,10 @@ +# hiposter + +```mdx-code-block +

            + +
            +

            +``` + +[hiposter](https://github.com/obity/hiposter) est un outil client de test d'API http simple et efficace. Basé sur les Wails, Go et sveltejs. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/kafka-king.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/kafka-king.mdx new file mode 100644 index 00000000000..8d40f82371c --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/kafka-king.mdx @@ -0,0 +1,23 @@ +# Kafka-King + +```mdx-code-block +

            + +
            +

            +``` + +[Kafka-King](https://github.com/Bronya0/Kafka-King) est un client GUI kafka qui supporte différents systèmes et est compact et facile à utiliser. +Ceci est fait avec Wails+vue3 + +# Liste des fonctionalités de Kafka-King + +- [x] Voir la liste des nœuds du cluster, prendre en charge la configuration dynamique des éléments de broker et de la configuration des éléments +- [x] Supporte les clients consommateurs, consomme le sujet, la taille et le délai spécifiés selon le groupe spécifié, et affiche les informations du message dans différentes dimensions dans un tableau +- [x] Supporte PLAIN, SSL, SASL, kerberos, sasl_plaintext, etc. +- [x] Créer des topics (support les batches), supprimer des topics, spécifier des replicas, des partitions +- [x] Statistiques de support du nombre total de messages, du nombre total de soumissions et du retard de consommation pour chaque topic basée sur les groupes de consommateurs +- [x] Prise en charge de la visualisation des rubriques Informations détaillées (offset) de la partition, et support l'ajout de partitions supplémentaires +- [x] Supporte la simulation de producteurs, d'envoi de messages par batch, la définition de headers, partitions +- [x] Health check +- [x] Support de la visualisation des groupes de consommateurs, Consommateur- …… diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mchat.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mchat.mdx new file mode 100644 index 00000000000..15a908bf401 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mchat.mdx @@ -0,0 +1,10 @@ +# Mchat + +```mdx-code-block +

            + +
            +

            +``` + +[Page officielle](https://marcio199226.github.io/mchat-site/public/) Chat chiffré de end2end entièrement anonyme. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minecraftupdater.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minecraftupdater.mdx new file mode 100644 index 00000000000..5966e75fa63 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minecraftupdater.mdx @@ -0,0 +1,14 @@ +# Minecraft Updater + +```mdx-code-block +

            + +
            +

            +``` + +[Minecraft Updater](https://github.com/Gurkengewuerz/MinecraftModUpdater) est un outil utilitaire pour mettre à jour et synchroniser les mods Minecraft pour votre base d'utilisateurs. Il a été conçu en utilisant Wails2 et React avec [antd](https://ant.design/) comme framework frontend. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minesweeper-xp.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minesweeper-xp.mdx new file mode 100644 index 00000000000..425505b1a83 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/minesweeper-xp.mdx @@ -0,0 +1,10 @@ +# Minesweeper XP + +```mdx-code-block +

            + +
            +

            +``` + +[Minesweeper-XP](https://git.new/Minesweeper-XP) vous permet de vivre l'expérience du Démineur XP (+ 98 et 3.1) sur macOS, Windows et Linux ! diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/modalfilemanager.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/modalfilemanager.mdx new file mode 100644 index 00000000000..fe644bd7bb5 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/modalfilemanager.mdx @@ -0,0 +1,14 @@ +# Modal File Manager + +```mdx-code-block +

            + +
            +

            +``` + +[Modal File Manager](https://github.com/raguay/ModalFileManager) est un gestionnaire de fichiers à double volet utilisant des technologies web. Mon design original était basé sur NW.js et peut être trouvé [ici](https://github.com/raguay/ModalFileManager-NWjs). Cette version utilise le même code frontend basé sur Svelte (mais il a été grandement modifié depuis le départ de NW.js), mais le backend est une implémentation de [Wails 2](https://wails.io/). En utilisant cette implémentation, je n'utilise plus la ligne de commande `rm`, `cp`, etc. , mais une installation de git doit être présente sur le système pour télécharger des thèmes et des extensions. Il est entièrement codé en utilisant Go et fonctionne beaucoup plus rapidement que les versions précédentes. + +Ce gestionnaire de fichiers est conçu autour du même principe que Vim: l'état est contrôlé par des actions via le clavier. Le nombre d'états n'est pas fixe, mais très programmable. Par conséquent, un nombre infini de configurations de clavier qui peuvent être créées et utilisées. C'est la principale différence par rapport aux autres gestionnaires de fichiers. Il y a des thèmes et des extensions disponibles à télécharger à partir de GitHub. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mollywallet.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mollywallet.mdx new file mode 100644 index 00000000000..70a6cd1f44d --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/mollywallet.mdx @@ -0,0 +1,10 @@ +# Molley Wallet + +```mdx-code-block +

            + +
            +

            +``` + +[Molly Wallet](https://github.com/grvlle/constellation_wallet/) le portefeuille officiel $DAG du Constellation Network. Cela permettra aux utilisateurs d'interagir avec le réseau Hypergraph de différentes manières, sans se limiter à la production de transactions en $DAG. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/october.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/october.mdx new file mode 100644 index 00000000000..5a9789d8711 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/october.mdx @@ -0,0 +1,14 @@ +# October + +```mdx-code-block +

            + +
            +

            +``` + +[Octobre](https://october.utf9k.net) est une petite application Wails qui rend vraiment facile d'extraire les surlignements de [Kobo eReaders](https://en.wikipedia.org/wiki/Kobo_eReader) puis de les transférer vers [Readwise](https://readwise.io). + +Il a une taille relativement petite avec toutes les versions de la plate-forme pesant en moins de 10 Mo, et c'est sans activer la [compression UPX](https://upx.github.io/)! + +En revanche, les précédentes tentatives de l'auteur avec Electron ont rapidement gonflé à plusieurs centaines de mégaoctets. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/optimus.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/optimus.mdx new file mode 100644 index 00000000000..41744234d37 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/optimus.mdx @@ -0,0 +1,10 @@ +# Optimus + +```mdx-code-block +

            + +
            +

            +``` + +[Optimus](https://github.com/splode/optimus) est une application d'optimisation d'image de bureau. Il supporte la conversion et la compression entre les formats d’images WebP, JPEG et PNG. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/portfall.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/portfall.mdx new file mode 100644 index 00000000000..acdc682becf --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/portfall.mdx @@ -0,0 +1,10 @@ +# Portfall + +```mdx-code-block +

            + +
            +

            +``` + +[Portfall](https://github.com/rekon-oss/portfall) - Un portail de redirection de port k8 pour un accès facile à toutes les interfaces de votre instance diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/resizem.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/resizem.mdx new file mode 100644 index 00000000000..a3b560683f3 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/resizem.mdx @@ -0,0 +1,10 @@ +# Resizem + +```mdx-code-block +

            + +
            +

            +``` + +[Resizem](https://github.com/barats/resizem) - est une application conçue pour le traitement d'images en bloc. Il est particulièrement utile pour les utilisateurs qui ont besoin de redimensionner, de convertir et de gérer un grand nombre de fichiers image à la fois. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/restic-browser.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/restic-browser.mdx new file mode 100644 index 00000000000..b6597166852 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/restic-browser.mdx @@ -0,0 +1,12 @@ +# Restic Browser + +```mdx-code-block +

            + +
            +

            +``` + +[Restic-Browser](https://github.com/emuell/restic-browser) - Une interface de sauvegarde simple et multiplateforme [restic](https://github.com/restic/restic) pour la navigation et la restauration de dépôts restic. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/riftshare.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/riftshare.mdx new file mode 100644 index 00000000000..e47b2397e63 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/riftshare.mdx @@ -0,0 +1,21 @@ +# RiftShare + +```mdx-code-block +

            + +
            +

            +``` + +Partage de fichiers facile, sécurisé et gratuit pour tout le monde. Apprenez-en plus sur [Riftshare.app](https://riftshare.app) + +## Fonctionnalités + +- Partage facile et sécurisé de fichiers entre ordinateurs à la fois sur le réseau local et via Internet +- Supporte l'envoi de fichiers ou de répertoires de manière sécurisée par le protocole [magic wormhole](https://magic-wormhole.readthedocs.io/en/latest/) +- Compatible avec toutes les autres applications utilisant magic wormhole (magic-wormhole or wormhole-william CLI, wormhole-gui, etc.) +- Compression automatique de plusieurs fichiers sélectionnés à envoyer en même temps +- Animations complètes, barre de progression et support d'annulation pour l'envoi et la réception +- Sélection de fichier natif au système d'exploitation +- Ouvrir les fichiers en un seul clic une fois reçus +- Mise à jour automatique - ne vous inquiétez pas d'avoir la dernière version! diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/scriptbar.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/scriptbar.mdx new file mode 100644 index 00000000000..d7215d66126 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/scriptbar.mdx @@ -0,0 +1,10 @@ +# ScriptBar + +```mdx-code-block +

            + +
            +

            +``` + +[ScriptBar](https://GitHub.com/raguay/ScriptBarApp) est un programme pour afficher la sortie de scripts ou d'un serveur [Node-Red](https://nodered.org). Il exécute des scripts définis dans le programme EmailIt et affiche la sortie. Des scripts de xBar ou TextBar peuvent être utilisés. Actuellement sur les scripts TextBar fonctionnent bien. Il affiche également la sortie des scripts sur votre système. ScriptBar ne les met pas dans la barre de menus, mais les a tous dans une fenêtre convenable pour une visualisation facile. Vous pouvez avoir plusieurs onglets pour voir plusieurs choses différentes. Vous pouvez également conserver les liens vers vos sites Web les plus visités. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/snippetexpander.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/snippetexpander.mdx new file mode 100644 index 00000000000..a0445182638 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/snippetexpander.mdx @@ -0,0 +1,27 @@ +# Snippet Expander + +```mdx-code-block +

            + +
            + Screenshot of Snippet Expander's Select Snippet window +

            +

            + +
            + Screenshot of Snippet Expander's Add Snippet screen +

            +

            + +
            + Screenshot of Snippet Expander's Search & Paste window +

            +``` + +[Snippet Expander](https://snippetexpander.org) est "Votre petit assistant de snippets extensibles", pour Linux. + +Snippet Expander comprend une application GUI construite avec Wails pour gérer les modules de texte et les paramètres, avec le mode Recherche & Coller pour sélectionner et coller rapidement un snippet. + +L'interface Wails, le CLI go-lang et le daemon vala-lang d'auto expansion de Wails communiquent tous avec un daemon go-lang via D-Bus. Le daemon fait la majorité du travail, gère la base de données des snippets et des paramètres communs, et fournit des services pour l'expansion et le collage des snippets, etc. + +Consultez le [code source](https://git.sr.ht/~ianmjones/snippetexpander/tree/trunk/item/cmd/snippetexpandergui/app.go#L38) pour voir comment l'application Wails envoie des messages de l'interface utilisateur vers le backend qui sont ensuite envoyés au daemon, et s'abonne à un événement D-Bus pour surveiller les changements de snippets via une autre instance de l'application ou CLI et les afficher instantanément dans l'interface utilisateur via un événement Wails. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/surge.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/surge.mdx new file mode 100644 index 00000000000..b5917484303 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/surge.mdx @@ -0,0 +1,10 @@ +# Surge + +```mdx-code-block +

            + +
            +

            +``` + +[Surge](https://getsurge.io/) est une application de partage de fichiers p2p conçue pour utiliser les technologies blockchain afin d'activer les transferts de fichiers 100 % anonymes. Surge est chiffré de bout en bout, décentralisé et open source. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/tinyrdm.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/tinyrdm.mdx new file mode 100644 index 00000000000..5390d57fbde --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/tinyrdm.mdx @@ -0,0 +1,11 @@ +# Tiny RDM + +```mdx-code-block +

            + + +
            +

            +``` + +L'application [Tiny RDM](https://redis.tinycraft.cc/) est une interface Redis moderne et open-source. Il possède une interface utilisateur magnifique, une gestion de base de données Redis intuitive et compatible avec Windows, Mac et Linux. Il fournit des opérations visuelles de données de clé-valeur, supporte diverses options de décodage et de visualisation des données, possède une console intégrée pour exécuter des commandes, des requêtes de log lentes et plus encore. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wailsterm.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wailsterm.mdx new file mode 100644 index 00000000000..e7ae7d3ec19 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wailsterm.mdx @@ -0,0 +1,10 @@ +# WailsTerm + +```mdx-code-block +

            + +
            +

            +``` + +[WailsTerm](https://github.com/rlshukhov/wailsterm) est une simple application de terminal translucide propulsée par Wails et Xterm.js. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wally.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wally.mdx new file mode 100644 index 00000000000..ba2a7fccc45 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wally.mdx @@ -0,0 +1,10 @@ +# Wally + +```mdx-code-block +

            + +
            +

            +``` + +[Wally](https://ergodox-ez.com/pages/wally) est le flasheur officiel du firmware pour les claviers [Ergodox](https://ergodox-ez.com/). C'est un excellent exemple de ce que vous pouvez réaliser avec Wails : la capacité de combiner la puissance de Go et les riches outils graphiques du monde du développement web. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/warmine.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/warmine.mdx new file mode 100644 index 00000000000..2e427433069 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/warmine.mdx @@ -0,0 +1,19 @@ +# Lanceur Minecraft pour WarMine + +```mdx-code-block +

            + + +
            +

            +``` + +[Lanceur Minecraft pour WarMine](https://warmine.ru/) est une application Wails qui vous permet facilement de rejoindre le serveur de jeu contenant les mods, ainsi que la gestion de vos comptes de jeu. + +Le Launcher télécharge les fichiers du jeu, vérifie leur intégrité et lance le jeu avec une large gamme d'options de personnalisation. + +Le frontend est écrit en Svelte, le lanceur entier tient dans 9Mo et prend en charge Windows 7-11. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wombat.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wombat.mdx new file mode 100644 index 00000000000..c431f691952 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/wombat.mdx @@ -0,0 +1,10 @@ +# Wombat + +```mdx-code-block +

            + +
            +

            +``` + +[Wombat](https://github.com/rogchap/wombat) est un client gRPC multi-plateforme. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/ytd.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/ytd.mdx new file mode 100644 index 00000000000..4f5bd993cb1 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/showcase/ytd.mdx @@ -0,0 +1,10 @@ +# Ytd + +```mdx-code-block +

            + +
            +

            +``` + +[Ytd](https://github.com/marcio199226/ytd/tree/v2-wails) est une application pour télécharger des pistes depuis youtube, créer des listes de lecture hors ligne et les partager avec vos amis, vos amis seront en mesure de lire vos playlists ou de les télécharger pour l'écoute hors ligne, a un lecteur intégré. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/templates.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/templates.mdx new file mode 100644 index 00000000000..49a3c7684e4 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/community/templates.mdx @@ -0,0 +1,76 @@ +--- +sidebar_position: 1 +--- + +# Modèles + +Cette page sert de liste pour les modèles supportés par la communauté. Veuillez soumettre une PR (cliquez sur `Modifier cette page` en bas) pour inclure vos modèles. Pour construire votre propre modèle, veuillez consulter le guide [Modèles](../guides/templates.mdx). + +Pour utiliser ces modèles, exécutez `wails init -n "Votre nom de projet" -t [le lien ci-dessous[@version]]` + +S'il n'y a pas de suffixe de version, la branche principale du modèle de code sera alors utilisé par défaut. S'il y a un suffixe de version, le modèle de code correspondant au tag de cette version sera utilisé. + +Exemple : `wails init -n "Votre nom de projet" -t https://github.com/misitebao/wails-template-vue` + +:::warning Attention + +**Le projet Wails n'entretient pas, et n'est pas responsable des modèles de tierces parties!** + +Si vous n'êtes pas sûr d'un modèle, inspectez `package.json` et `wails.json` pour savoir quels scripts sont exécutés et quels paquets sont installés. + +::: + +## Vue + +- [wails-template-vue](https://github.com/misitebao/wails-template-vue) - Modèle de Wails basé sur Vue (TypeScript intégré, thème sombre, internationalisation, routage de page unique, TailwindCSS) +- [wails-template-quasar-js](https://github.com/sgosiaco/wails-template-quasar-js) - Un modèle utilisant JavaScript + Quasar V2 (Vue 3, Vite, Sass, Pinia, ESLint, Prettier) +- [wails-template-quasar-ts](https://github.com/sgosiaco/wails-template-quasar-ts) - Un modèle utilisant TypeScript + Quasar V2 (Vue 3, Vite, Sass, Pinia, ESLint, Prettier, Composition API avec <script setup>) +- [wails-template-naive](https://github.com/tk103331/wails-template-naive) - Modèle Wails basé sur Naive UI (Librairie de composants Vue 3) +- [wails-template-tdesign-js](https://github.com/tongque0/wails-template-tdesign-js) - Modèle Wails basé sur TDesign UI (une librairie Vue 3 UI de Tencent), utilisant Vite, Pinia, Vue Router, ESLint, et Prettier. + +## Angular + +- [wails-template-angular](https://github.com/mateothegreat/wails-template-angular) - Modèle Angular 15+ prêt à être utilisé en production. +- [wails-angular-template](https://github.com/TAINCER/wails-angular-template) - Angular avec TypeScript, Sass, rechargement à chaud, découpage dynamique de code et i18n + +## React + +- [wails-react-template](https://github.com/AlienRecall/wails-react-template) - Un modèle utilisant reactjs +- [wails-react-template](https://github.com/flin7/wails-react-template) - Un modèle minimal pour React qui supporte le développement en direct +- [wails-template-nextjs](https://github.com/LGiki/wails-template-nextjs) - Un modèle utilisant Next.js et TypeScript +- [wails-template-nextjs-app-router](https://github.com/thisisvk-in/wails-template-nextjs-app-router) - Un modèle utilisant Next.js et TypeScript avec un routeur +- [wails-vite-react-ts-tailwind-template](https://github.com/hotafrika/wails-vite-react-ts-tailwind-template) - Un modèle pour React + TypeScript + Vite + TailwindCSS +- [wails-vite-react-ts-tailwind-shadcnui-template](https://github.com/Mahcks/wails-vite-react-tailwind-shadcnui-ts) - Un modèle avec Vite, React, TypeScript, TailwindCSS, et shadcn/ui +- [wails-nextjs-tailwind-template](https://github.com/kairo913/wails-nextjs-tailwind-template) - Un modèle utilisant Next.js et Typescript avec TailwindCSS + +## Svelte + +- [wails-svelte-template](https://github.com/raitonoberu/wails-svelte-template) - Un modèle utilisant Svelte +- [wails-vite-svelte-template](https://github.com/BillBuilt/wails-vite-svelte-template) - Un modèle utilisant Svelte et Vite +- [wails-vite-svelte-ts-tailwind-template](https://github.com/xvertile/wails-vite-svelte-tailwind-template) - Un modèle utilisant Wails, Svelte, Vite, TypeScript et TailwindCSS v3 +- [wails-vite-svelte-tailwind-template](https://github.com/BillBuilt/wails-vite-svelte-tailwind-template) - Un modèle utilisant Svelte et Vite avec TailwindCSS v3 +- [wails-svelte-tailwind-vite-template](https://github.com/PylotLight/wails-vite-svelte-tailwind-template/tree/master) - Un modèle mis à jour en utilisant Svelte v4.2.0 et Vite avec TailwindCSS v3.3.3 +- [wails-sveltekit-template](https://github.com/h8gi/wails-sveltekit-template) - Un modèle utilisant SvelteKit + +## Solid + +- [wails-template-vite-solid-ts](https://github.com/xijaja/wails-template-solid-ts) - Un modèle utilisant Solid + Ts + Vite +- [wails-template-vite-solid-ts](https://github.com/xijaja/wails-template-solid-js) - Un modèle utilisant Solid + Js + Vite + +## Elm + +- [wails-elm-template](https://github.com/benjamin-thomas/wails-elm-template) - Développez votre application GUI avec de la programmation fonctionnelle et une configuration de développement en direct :tada: :rocket: +- [wails-template-elm-tailwind](https://github.com/rnice01/wails-template-elm-tailwind) - Combine les puissances :muscle: d'Elm + Tailwind CSS + Wails ! Rechargement automatique pris en charge. + +## HTMX + +- [wails-htmx-templ-chi-tailwind](https://github.com/PylotLight/wails-hmtx-templ-template) - Utilisez une combinaison unique de htmx pour interactivité, et de templ pour créer des composants et des formes + +## Pure JavaScript (Vanilla) + +- [wails-pure-js-template](https://github.com/KiddoV/wails-pure-js-template) - Un modèle avec rien que du JavaScript, du HTML et du CSS de base + + +## Lit (Composants web) + +- [wails-lit-shoelace-esbuild-template](https://github.com/Braincompiler/wails-lit-shoelace-esbuild-template) - Modèle Wails fournissant une interface avec lit, une bibliothèque de composants Shoelace, ainsi que prettier et typescript préconfigurés. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/building.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/building.mdx new file mode 100644 index 00000000000..4de31450bc2 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/building.mdx @@ -0,0 +1,26 @@ +--- +sidebar_position: 6 +--- + +# Compiler votre projet + +À partir du répertoire du projet, exécutez `wails build`. Cela compilera votre projet et sauvegardera le binaire prêt à la production dans le répertoire `build/bin`. + +:::info Linux +Si vous utilisez une distribution Linux qui n'a pas webkit2gtk-4. (comme Ubuntu 24.04), vous devrez ajouter `-tags webkit2_41`. +::: + +Si vous exécutez le binaire, vous devriez voir l'application par défaut : + +```mdx-code-block +
            + +
            +
            +``` + +Pour plus de détails sur les options de compilation, veuillez vous référer à la [documentation du CLI](../reference/cli.mdx#build). diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/development.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/development.mdx new file mode 100644 index 00000000000..307029141d4 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/development.mdx @@ -0,0 +1,16 @@ +--- +sidebar_position: 5 +--- + +# Développez votre application + +Vous pouvez exécuter votre application en mode développement en exécutant `wails dev` à partir du répertoire de votre projet. Cela fera les choses suivantes : + +- Construire votre application et l'exécuter +- Lier votre code Go au frontend pour qu'il puisse être appelé à partir de JavaScript +- En utilisant la puissance de [Vite](https://vitejs.dev/), surveillera les modifications dans vos fichiers Go et reconstruira / ré-exécutera en cas de changement +- Mettra en place un [serveur web](http://localhost:34115) qui servira votre application via un navigateur. Cela vous permet d'utiliser les extensions de votre navigateur préféré. Vous pouvez même appeler votre code Go depuis la console + +Pour commencer, exécutez `wails dev` dans le répertoire du projet. Plus d'informations à ce sujet peuvent être trouvées [ici](../reference/cli.mdx#dev). + +Prochainement : Tutoriel diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/firstproject.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/firstproject.mdx new file mode 100644 index 00000000000..02e9f955b98 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/firstproject.mdx @@ -0,0 +1,128 @@ +--- +sidebar_position: 2 +--- + +# Créer un projet + +## Génération de projet + +Maintenant que le CLI est installé, vous pouvez générer un nouveau projet en utilisant la commande `wails init`. + +Choisissez votre framework favori : + +```mdx-code-block +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + + + + Générer un projet Svelte utilisant JavaScript avec:

            + + wails init -n myproject -t svelte + +Si vous préférez utiliser TypeScript:
            + + wails init -n myproject -t svelte-ts + +
            + + Générer un projet React utilisant JavaScript avec :

            + + wails init -n myproject -t react + +Si vous préférez utiliser TypeScript:
            + + wails init -n myproject -t react-ts + +
            + + Générer un projet Vue utilisant JavaScript avec:

            + + wails init -n myproject -t vue + +Si vous préférez TypeScript:
            + + wails init -n myproject -t vue-ts + +
            + + Générer un projet Preact utilisant JavaScript avec:

            + + wails init -n myproject -t preact + +Si vous préférez TypeScript:
            + + wails init -n myproject -t preact-ts + +
            + + Générer un projet Lit utilisant JavaScript avec:

            + + wails init -n myproject -t lit + +Si vous préférez TypeScript:
            + + wails init -n myproject -t lit-ts + +
            + + Générer un projet Vanilla utilisant JavaScript avec :

            + + wails init -n myproject -t vanilla + +Si vous préférez TypeScript:
            + + wails init -n myproject -t vanilla-ts + +
            +
            +``` + +
            + +Il y a aussi [des modèles créés par la communauté](../community/templates.mdx) qui sont disponibles et qui offrent différentes possibilités. + +Pour voir les autres options disponibles, vous pouvez exécuter `wails init -help`. Plus de détails peuvent être trouvés dans la [documentation du CLI](../reference/cli.mdx#init). + +## Structure du projet + +Les projets Wails ont la structure suivante: + +``` +. +├── build/ +│ ├── appicon.png +│ ├── darwin/ +│ └── windows/ +├── frontend/ +├── go.mod +├── go.sum +├── main.go +└── wails.json +``` + +### Récapitulatif de la structure du projet + +- `/main.go` - L'application principale +- `/frontend/` - Fichiers de la partie frontend +- `/build/` - Répertoire de construction du projet +- `/build/appicon.png` - L'icône de l'application +- `/build/darwin/` - Fichiers spécifiques pour Mac +- `/build/windows/` - Fichiers spécifiques pour Windows +- `/wails.json` - La configuration du projet +- `/go.mod` - Le fichier du module Go +- `/go.sum` - Le checksum du fichier du module Go + +Le répertoire `frontend` n'a rien de spécifique à Wails et n'importe quel outil de frontend peut être utilisé. + +Le répertoire `build` est utilisé pendant le processus de compilation. Ces fichiers peuvent être mis à jour pour personnaliser vos builds. Si fichiers sont supprimés du répertoire de compilation, les versions par défaut seront régénérées. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/installation.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/installation.mdx new file mode 100644 index 00000000000..1420ffcbe40 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/gettingstarted/installation.mdx @@ -0,0 +1,92 @@ +--- +sidebar_position: 1 +--- + +# Installation + +## Plates-formes Prises en charge + +- Windows 10/11 AMD64/ARM64 +- MacOS 10.15+ AMD64 pour le développement, MacOS 10.13+ pour la publication +- MacOS 11.0+ ARM64 +- Linux AMD64/ARM64 + +## Dépendances + +Wails a un certain nombre de dépendances communes qui sont nécessaires avant l'installation : + +- Go 1.21+ (macOS 15+ requiert Go 1.23.3+) +- NPM (Node 15+) + +### Go + +Télécharger Go à partir de la [Page de téléchargement](https://go.dev/dl/). + +Assurez-vous que vous suivez les instructions officielles de [l'installation de Go](https://go.dev/doc/install). Vous devrez également vous assurer que votre variable d'environnement `PATH` inclut également le chemin vers votre répertoire `~/go/bin`. Redémarrez votre terminal et effectuez les vérifications suivantes : + +- Vérifiez que Go est installé correctement : `go version` +- Vérifiez que "~/go/bin" est dans votre variable PATH : `echo $PATH | grep go/bin` + +### NPM + +Téléchargez le NPM à partir de la [page de téléchargement de Node](https://nodejs.org/en/download/). Il est préférable d'utiliser la dernière version car c'est avec celle-là que nous effectuons nos tests. + +Exécutez `npm --version` pour vérifier. + +## Dépendances spécifiques aux plateformes + +Vous devrez également installer des dépendances spécifiques liés à la plateforme que vous utilisez : + +```mdx-code-block +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + + + + Wails a besoin que les outils de command line xocde soient installés. Cela peut être fait + en exécutant xcode-select --install. + + + Wails a besoin que WebView2 runtime soit installé. Certaines installations de Windows auront déjà installé cette fonctionnalité. Vous pouvez vérifier en utilisant la commande wails doctor. + + + Linux a besoin de gcc comme outil de compilation en plus de libgtk3 et libwebkit. Plutôt que de lister une tonne de commandes pour différentes distributions, Wails peut essayer de déterminer ce que sont les commandes d'installation pour votre distribution. Exécutez wails doctor après l'installation pour voir de quelles dépendances vous avez besoin. Si votre gestionnaire de distribution/paquet n'est pas pris en charge, veuillez consulter le guide Ajouter une distribution Linux. +
            Note :
            + Si vous utilisez la dernière version de Linux (exemple : Ubuntu 24. 4) et qu'il ne supporte pas libwebkit2gtk-4. -dev, alors vous pourriez rencontrer un problème dans le wails doctor: libwebkit introuvable. Pour résoudre ce problème, vous pouvez installer libwebkit2gtk-4.1-dev et pendant votre compilation, utilisez le tag -tags webkit2_41. +
            +
            +``` + +## Dépendances optionnelles + +- [UPX](https://upx.github.io/) pour compresser vos applications. +- [NSIS](https://wails.io/docs/guides/windows-installer/) pour générer des installateurs Windows. + +## Installer Wails + +Exécutez `go go install github.com/wailsapp/wails/v2/cmd/wails@latest` pour installer le CLI. + +Note: Si vous obtenez une erreur similaire à ceci: + +```shell +....\Go\pkg\mod\github.com\wailsapp\wails\v2@v2.1.0\pkg\templates\templates.go:28:12: pattern all:ides/*: no matching files found +``` +vérifiez que vous avez installé Go 1.18+ : +```shell +go version +``` + +## Vérification du système + +Exécuter `wails doctor` qui vérifiera si vous avez les bonnes dépendances installées. Si ce n'est pas le cas, il vous conseillera sur ce qui manque et vous aidera à corriger tout problème. + +## La commande `wails` semble manquer ? + +Si votre système signale que la commande `wails` est manquante, assurez-vous que vous avez suivi le guide d'installation correctement. Normalement, cela signifie que le répertoire `go/bin` du répertoire racine de votre utilisateur n'est pas dans la variable d'environnement `PATH` . Vous devrez également normalement fermer et réouvrir toutes les commandes ouvertes afin que les modifications apportées à l'environnement par l'installateur soient reflétées dans l'invite de commande. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/angular.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/angular.mdx new file mode 100644 index 00000000000..1fe2f199ffe --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/angular.mdx @@ -0,0 +1,14 @@ +# Angular + +Bien que Wails n'ait pas de modèle Angular, il est possible d'utiliser Angular avec Wails. + +## Dev Mode + +Pour que le mode développeur fonctionne avec Angular, vous devez ajouter ce qui suit à votre fichier `wails.json`: + +```json + "frontend:build": "npx ng build", + "frontend:install": "npm install", + "frontend:dev:watcher": "npx ng serve", + "frontend:dev:serverUrl": "http://localhost:4200", +``` \ No newline at end of file diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/application-development.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/application-development.mdx new file mode 100644 index 00000000000..a3418349426 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/application-development.mdx @@ -0,0 +1,273 @@ +# Développement d'applications + +Il n'y a pas de règles gravées dans le marbre pour le développement d'applications avec Wails, mais il y a quelques lignes directrices de base. + +## Configuration de l'application + +Le modèle utilisé par défaut défini que `main.go` est utilisé pour configurer et démarrer l'application, tandis que `app.go` est utilisé pour définir la logique de l'application. + +Le fichier `app.go` va définir une structure qui a 2 méthodes qui agissent comme crochets dans l'application principale: + +```go title="app.go" +type App struct { + ctx context.Context +} + +func NewApp() *App { + return &App{} +} + +func (a *App) startup(ctx context.Context) { + a.ctx = ctx +} + +func (a *App) shutdown(ctx context.Context) { +} +``` + +- La méthode startup est appelée d-s que Wails a donné les ressources nécessaires et qu'il est dans un bon état pour créer les ressources, mettre en place les event listeners et tout ce dont l'application peut avoir besoin pour démarrer. Il est donné un `context.Context` qui est généralement sauvegardé dans un champ struct. Ce contexte est nécessaire pour appeler le [runtime](../reference/runtime/intro.mdx). Si cette méthode renvoie une erreur, l'application se fermera. En mode développement, l'erreur sera affichée dans la console. + +- La méthode d'arrêt sera appelée par Wails à la fin du processus d'arrêt. C'est un bon endroit pour vider la mémoire et effectuer toutes les tâches d'arrêt. + +Le fichier `main.go` consiste généralement en un seul appel à `wails.Run()`, qui accepte la configuration de l'application. Le modèle utilisé par les templates fait qu'avant l'appel à `wails.Run()`, une instance du struct que l'on a définie dans `app.go` est créée et instanciée dans une variable appelée `app`. Cette configuration est l'endroit où nous ajoutons nos callbacks : + +```go {3,9,10} title="main.go" +func main() { + + app := NewApp() + + err := wails.Run(&options.App{ + Title: "My App", + Width: 800, + Height: 600, + OnStartup: app.startup, + OnShutdown: app.shutdown, + }) + if err != nil { + log.Fatal(err) + } +} + +``` + +Plus d'informations sur les crochets du cycle de vie des applications peuvent être trouvées [ici](../howdoesitwork.mdx#application-lifecycle-callbacks). + +## Méthodes de liaison + +Il est probable que vous vouliez appeler les méthodes Go depuis le frontend. Cela se fait normalement en ajoutant des méthodes publiques à le struct déjà défini dans `app.go`: + +```go {16-18} title="app.go" +type App struct { + ctx context.Context +} + +func NewApp() *App { + return &App{} +} + +func (a *App) startup(ctx context.Context) { + a.ctx = ctx +} + +func (a *App) shutdown(ctx context.Context) { +} + +func (a *App) Greet(name string) string { + return fmt.Sprintf("Hello %s!", name) +} +``` + +Dans la configuration principale de l'application, le paramètre `Bind` est l'endroit où nous pouvons dire à Wails ce que nous voulons lier : + +```go {11-13} title="main.go" +func main() { + + app := NewApp() + + err := wails.Run(&options.App{ + Title: "My App", + Width: 800, + Height: 600, + OnStartup: app.startup, + OnShutdown: app.shutdown, + Bind: []interface{}{ + app, + }, + }) + if err != nil { + log.Fatal(err) + } +} + +``` + +Cela liera toutes les méthodes publiques de notre structure `App` (cela ne liera jamais les méthodes de démarrage et d'arrêt du système). + +### Traiter avec le contexte lors de la liaison de plusieurs structures + +Si vous voulez lier des méthodes pour des structures multiples, mais que vous voulez que chaque struct conserve une référence au contexte pour que vous puissiez utiliser les fonctions d'exécution... Un bon choix est de passer le contexte de la méthode `OnStartup` à vos instances struct : + +```go +func main() { + + app := NewApp() + otherStruct := NewOtherStruct() + + err := wails.Run(&options.App{ + Title: "My App", + Width: 800, + Height: 600, + OnStartup: func(ctx context.Context){ + app.SetContext(ctx) + otherStruct.SetContext(ctx) + }, + OnShutdown: app.shutdown, + Bind: []interface{}{ + app, + otherStruct + }, + }) + if err != nil { + log.Fatal(err) + } +} +``` + +Vous pouvez également utiliser des énums dans vos structures et avoir des modèles pour elles dans le frontend. Dans ce cas, vous devriez créer un tableau qui contiendra toutes les valeurs possibles de l'énumération, définir le type de l'énumération et lier le tout à l'application: + +```go {16-18} title="app.go" +type Weekday string + +const ( + Sunday Weekday = "Sunday" + Monday Weekday = "Monday" + Tuesday Weekday = "Tuesday" + Wednesday Weekday = "Wednesday" + Thursday Weekday = "Thursday" + Friday Weekday = "Friday" + Saturday Weekday = "Saturday" +) + +var AllWeekdays = []struct { + Value Weekday + TSName string +}{ + {Sunday, "SUNDAY"}, + {Monday, "MONDAY"}, + {Tuesday, "TUESDAY"}, + {Wednesday, "WEDNESDAY"}, + {Thursday, "THURSDAY"}, + {Friday, "FRIDAY"}, + {Saturday, "SATURDAY"}, +} +``` + +Dans la configuration principale de l'application, le paramètre `EnumBind` est l'endroit où nous pouvons dire à Wails ce que nous voulons lier : + +```go {11-13} title="main.go" +func main() { + + app := NewApp() + + err := wails.Run(&options.App{ + Title: "My App", + Width: 800, + Height: 600, + OnStartup: app.startup, + OnShutdown: app.shutdown, + Bind: []interface{}{ + app, + }, + EnumBind: []interface{}{ + AllWeekdays, + }, + }) + if err != nil { + log.Fatal(err) + } +} + +``` + +Ceci ajoutera des enums manquants à votre fichier `model.ts`. + +Plus d'informations à sur Binding peuvent être trouvées [ici](../howdoesitwork.mdx#method-binding). + +## Menu de l’application + +Wails prend en charge l'ajout d'un menu à votre application. Ceci est fait en passant un [Menu](../reference/menus.mdx#menu) structuré à la configuration de l'application. Il est courant d'utiliser une méthode qui renvoie un Menu, et encore plus courant pour que cela soit une méthode sur la struct de l'`app` qui soit utilisée pour les hooks du cycle de vie. + +```go {11} title="main.go" +func main() { + + app := NewApp() + + err := wails.Run(&options.App{ + Title: "My App", + Width: 800, + Height: 600, + OnStartup: app.startup, + OnShutdown: app.shutdown, + Menu: app.menu(), + Bind: []interface{}{ + app, + }, + }) + if err != nil { + log.Fatal(err) + } +} + +``` + +## Ressources + +La grande chose à propos de la façon dont Wails v2 gère les ressources pour le frontend, est que ce n'est pas le cas! La seule chose que vous devez donner à Wails est un `embed.FS`. C'est à vous de décider comment vous y arrivez. Vous pouvez utiliser les fichiers html/css/js vanilla comme dans le modèle vanilla. Vous pourriez avoir un système de compilation compliqué, peu importe. + +Quand la commande `wails dev` est exécutée, elle vérifiera le fichier de projet `wails.json` à la racine du projet. Il y a 2 clés dans le fichier du projet qui sont lues : + +- "frontend:install" +- "frontend:build" + +Le premier, si fourni, sera exécuté dans le répertoire `frontend` pour installer les modules. Le second, si fourni, sera exécuté dans le répertoire `frontend` pour construire le projet frontend. + +Si ces 2 clés ne sont pas fournies, alors Wails ne fait absolument rien avec le frontend. Il n'attend que `embed.FS`. + +### AssetsHandler + +Une application Wails v2 peut éventuellement définir un `http.Handler` dans `options.app`, qui permet de se connecter à l'AssetServer pour créer des fichiers à la volée ou traiter les requêtes POST/PUT. Les requêtes GET sont toujours traitées d'abord par le `assets` FS. Si le FS ne trouve pas le fichier demandé, la requête sera transmise au `http.Handler`. Toute requête autre que GET sera traitée directement par le `AssetsHandler` si spécifié. Il est également possible d'utiliser l'`AssetsHandler` uniquement en spécifiant `nil` dans l'option `Assets`. + +## Serveur de développement embarqué + +Exécuter `wails dev` démarrera le serveur de développement intégré qui démarrera un observateur de fichiers dans votre répertoire de projet. Par par défaut, si un fichier change, wails vérifie s'il s'agit d'un fichier d'application (par défaut: `.go`, configurable avec l'option `-e`). Si c'est le cas, il reconstruira votre application et la relancera. Si le fichier modifié se trouvait dans les actifs, il lancera un rechargement après un court laps de temps. + +Le serveur de développement utilise une technique appelée "debouncing", ce qui signifie qu'il ne se recharge pas tout de suite, comme il peut y avoir plusieurs fichiers modifiés en un court laps de temps. Lorsqu'un déclencheur se produit, il attend un temps défini avant d'émettre un rechargement. Si un autre déclencheur se produit, le temps d'attente se réinitialise avant un prochain rechargement. Par défaut, cette période est définie à `100ms`. Si cette valeur ne fonctionne pas pour votre projet, elle peut être configurée en utilisant l'option `-debounce`. Si elle est utilisée, cette valeur sera enregistrée dans la configuration de votre projet et deviendra la valeur par défaut. + +## Serveur de développement externe + +Certains frameworks sont fournis avec leur propre serveur de rechargement en direct, cependant ils ne seront pas en mesure de tirer parti des liaisons Wails Go. Dans ce scénario, il est préférable d'exécuter un script qui va surveiller le projet dans dossier build, dossier que Wails surveille aussi. Pour un exemple, voir le modèle svelte par défaut qui utilise [rollup](https://rollupjs.org/guide/en/). + +### Créer une application React + +Le processus pour créer un projet Reactest un peu plus compliqué. Afin de prendre en charge le rechargement du frontend en direct, la configuration suivante doit être ajoutée à votre `wails.json`: + +```json + "frontend:dev:watcher": "yarn start", + "frontend:dev:serverUrl": "http://localhost:3000", +``` + +La commande `frontend:dev:watcher` démarrera le serveur de développement React (hébergé sur le port `3000` typiquement). La commande `frontend:dev:serverUrl` demande ensuite à Wails d'exposer les ressources depuis le serveur de développement lors du chargement du frontend, plutôt que depuis le dossier de construction. En plus de ce qui précède, le fichier `index.html` doit être mis à jour avec les éléments suivants : + +```html + + + + + +``` + +Ceci est nécessaire, car la commande watcher qui reconstruit le frontend empêche Wails de les injecter. Ça contourne le problème en assurant les scripts sont toujours injectés. Avec cette configuration, `wails dev` peut être exécuté, ce qui construira le frontend et le backend de manière appropriée avec le rechargement à chaud activé. De plus, lorsque vous accédez à l'application à partir d'un navigateur, les outils de développement de React peuvent maintenant être utilisés sur une version non minifiée de l'application pour le débogage. Enfin, pour des compilations plus rapides, `wails dev -s` peut être exécuté pour passer la construction par défaut du frontend par Wails car c'est une étape inutile. + +## Module Go + +Les modèles Wails par défaut génèrent un fichier `go.mod` qui contient le nom de module "changeme". Vous devriez changer ceci pour quelque chose de plus approprié après la génération du projet. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/crossplatform-build.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/crossplatform-build.mdx new file mode 100644 index 00000000000..d933270205c --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/crossplatform-build.mdx @@ -0,0 +1,66 @@ +# Construction cross-plateforme avec Github Actions + +Pour construire un projet Wails pour toutes les plateformes disponibles, vous devez créer un build de l'application pour chaque système d'exploitation. Une méthode efficace pour y parvenir est d'utiliser GitHub Actions. + +Une action qui facilite la création d'une application Wails est disponible sur : +https://github.com/dAppServer/wails-build-action + +Dans le cas où l'action existante ne répond pas à vos exigences, vous ne pouvez sélectionner que les étapes nécessaires à partir de la source : +https://github.com/dAppServer/wails-build-action/blob/main/action.yml + +Voici un exemple complet qui démontre la construction d'une application lors de la création d'une nouvelle balise Git et qui la téléversera ensuite sur les artefacts Actions : + +```yaml +name: Wails build + +on: + push: + tags: + # Matche n'importe quel nouveau tag + - '*' + +env: + # Nécessaire pour la plupart des environnement, car des soucis de build peuvent arriver à cause de soucis de mémoire + NODE_OPTIONS: "--max-old-space-size=4096" + +jobs: + build: + strategy: + # Afin d'éviter que l'échec du build d'une plateforme n'impacte les autres + fail-fast: false + matrix: + build: + - name: 'App' + platform: 'linux/amd64' + os: 'ubuntu-latest' + - name: 'App' + platform: 'windows/amd64' + os: 'windows-latest' + - name: 'App' + platform: 'darwin/universal' + os: 'macos-latest' + + runs-on: ${{ matrix.build.os }} + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + submodules: recursive + + - name: Build wails + uses: dAppServer/wails-build-action@v2.2 + id: build + with: + build-name: ${{ matrix.build.name }} + build-platform: ${{ matrix.build.platform }} + package: false + go-version: '1.20' +``` + +Cet exemple offre des opportunités pour diverses améliorations, comprenant : + +- Mise en cache des dépendances +- Signature de code +- Envoi vers des plateformes comme S3, Supabase, etc. +- Injection de secrets en tant que variables d'environnement +- Utiliser des variables d'environnement comme variables de compilation (telles que la variable de version extraite de la balise Git actuelle) diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/custom-protocol-schemes.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/custom-protocol-schemes.mdx new file mode 100644 index 00000000000..bc44dcc4d02 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/custom-protocol-schemes.mdx @@ -0,0 +1,203 @@ +# Association de schéma de protocole personnalisé + +La fonction d'association de fichiers vous permet d'associer des types de fichiers spécifiques à votre application afin que lorsque les utilisateurs ouvrent ces fichiers, +votre application est lancée pour les gérer. Cela peut être particulièrement utile pour connecter votre application de bureau à votre application web. +Dans ce guide, nous allons parcourir les étapes pour implémenter l'association de fichiers dans l'application Wails. + +## Configurer une association de schémas de protocoles personnalisés : + +Pour configurer l'association de fichiers, vous devez modifier le fichier wails.json de votre application. +Dans la section "info", ajoutez une section "fileAssociations" spécifiant les types de fichiers auxquels votre application doit être associée. + +Par exemple : + +```json +{ + "info": { + "protocols": [ + { + "scheme": "myapp", + "description": "My App Protocol", + "role": "Editor" + } + ] + } +} +``` + +| Propriété | Description | +| :----------- | :------------------------------------------------------------------------------------------------ | +| scheme | Le schéma de protocole personnalisé. ex: myapp | +| description | Windows seulement. La description. | +| role | macOS uniquement. Rôle de l'application par rapport au type. Correspond au rôle CFBundleTypeRole. | + +## Spécificités par platefome : + +### MacOS + +Lorsque vous ouvrez un fichier (ou des fichiers) avec votre application, le système lancera votre application et appellera la fonction `OnFileOpen` dans votre application Wails. Exemple: + +```go title="main.go" +func main() { + // Create application with options + err := wails.Run(&options.App{ + Title: "wails-open-file", + Width: 1024, + Height: 768, + AssetServer: &assetserver.Options{ + Assets: assets, + }, + BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, + Mac: &mac.Options{ + OnUrlOpen: func(url string) { println(url) }, + }, + Bind: []interface{}{ + app, + }, + }) + + if err != nil { + println("Error:", err.Error()) + } +} +``` + +### Windows + +L'association de fichiers dans Windows n'est prise en charge qu'avec l'installateur NSIS. Pendant l'installation, l'installateur créera une entrée de registre +pour vos associations de fichiers. Lorsque vous ouvrez un fichier avec votre application, une nouvelle instance d'application est lancée et le chemin d'accès est passé à +comme argument à votre application. Pour gérer cela, vous devez analyser les arguments de la ligne de commande dans votre application. Exemple: + +```go title="main.go" +func main() { + argsWithoutProg := os.Args[1:] + + if len(argsWithoutProg) != 0 { + println("launchArgs", argsWithoutProg) + } +} +``` + +Vous pouvez également activer le verrouillage par instance unique pour votre application. Dans ce cas, lorsque vous ouvrez un fichier avec votre application, la nouvelle instance d'application n'est pas lancée +et les arguments sont passés à l'instance déjà en cours d'exécution. Consultez le guide de verrouillage de l'instance unique pour plus de détails. Exemple: + +```go title="main.go" +func main() { + // Create application with options + err := wails.Run(&options.App{ + Title: "wails-open-file", + Width: 1024, + Height: 768, + AssetServer: &assetserver.Options{ + Assets: assets, + }, + BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, + SingleInstanceLock: &options.SingleInstanceLock{ + UniqueId: "e3984e08-28dc-4e3d-b70a-45e961589cdc", + OnSecondInstanceLaunch: app.onSecondInstanceLaunch, + }, + Bind: []interface{}{ + app, + }, + }) +} +``` + +### Linux + +Actuellement, Wails ne prend pas en charge l'association de fichiers pour Linux. Vous devez donc créer des associations de fichiers manuellement. +Par exemple, si vous distribuez votre application en tant que package .deb, vous pouvez créer des associations de fichiers en ajoutant les fichiers requis dans votre bundle. +Vous pouvez utiliser [nfpm](https://nfpm.goreleaser.com/) pour créer un package .deb pour votre application. + +1. Créez un fichier .desktop pour votre application et spécifiez des associations de fichiers là-bas (notez que `%u` est important dans Executive). Exemple: + +```ini +[Desktop Entry] +Categories=Office +Exec=/usr/bin/wails-open-file %u +Icon=wails-open-file.png +Name=wails-open-file +Terminal=false +Type=Application +MimeType=x-scheme-handler/myapp; +``` + +2. Préparez les scripts postInstall/postRemove pour votre paquet. Exemple: + +```sh +# recharger la base de données du bureau pour charger l'application dans la liste des applications disponibles +update-desktop-database /usr/share/applications +``` + +3. Configurez nfpm pour utiliser vos scripts et fichiers. Exemple: + +```yaml +name: "wails-open-file" +arch: "arm64" +platform: "linux" +version: "1.0.0" +section: "default" +priority: "extra" +maintainer: "FooBarCorp " +description: "Sample Package" +vendor: "FooBarCorp" +homepage: "http://example.com" +license: "MIT" +contents: +- src: ../bin/wails-open-file + dst: /usr/bin/wails-open-file +- src: ./main.desktop + dst: /usr/share/applications/wails-open-file.desktop +- src: ../appicon.svg + dst: /usr/share/icons/hicolor/scalable/apps/wails-open-file.svg +# copy icons to Yaru theme as well. For some reason Ubuntu didn't pick up fileicons from hicolor theme +- src: ../appicon.svg + dst: /usr/share/icons/Yaru/scalable/apps/wails-open-file.svg +scripts: + postinstall: ./postInstall.sh + postremove: ./postRemove.sh +``` + +6. Construisez votre paquet .deb en utilisant nfpm: + +```sh +nfpm pkg --packager deb --target . +``` + +7. Maintenant que votre paquet est installé, votre application sera associée aux types de fichiers qui ont été spécifiés. Lorsque vous ouvrez un fichier avec votre application, une nouvelle instance est lancée et le chemin du fichier est passé en argument à votre application. + Pour gérer cela, vous devez analyser les arguments de la ligne de commande dans votre application. Exemple: + +```go title="main.go" +func main() { + argsWithoutProg := os.Args[1:] + + if len(argsWithoutProg) != 0 { + println("launchArgs", argsWithoutProg) + } +} +``` + +Vous pouvez également activer le verrouillage par instance unique pour votre application. Dans ce cas, lorsque vous ouvrez un fichier avec votre application, la nouvelle instance d'application n'est pas lancée +et les arguments sont passés à l'instance déjà en cours d'exécution. Consultez le guide de verrouillage de l'instance unique pour plus de détails. Exemple: + +```go title="main.go" +func main() { + // Create application with options + err := wails.Run(&options.App{ + Title: "wails-open-file", + Width: 1024, + Height: 768, + AssetServer: &assetserver.Options{ + Assets: assets, + }, + BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, + SingleInstanceLock: &options.SingleInstanceLock{ + UniqueId: "e3984e08-28dc-4e3d-b70a-45e961589cdc", + OnSecondInstanceLaunch: app.onSecondInstanceLaunch, + }, + Bind: []interface{}{ + app, + }, + }) +} +``` diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/dynamic-assets.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/dynamic-assets.mdx new file mode 100644 index 00000000000..f1098b09cb0 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/dynamic-assets.mdx @@ -0,0 +1,142 @@ +# Ressources dynamiques + +:::info + +Cela ne fonctionne pas avec la v5.0.0+ vite et wails v2 en raison des changements dans vite. Des changements sont prévus dans la v3 pour prendre en charge des fonctionnalités similaires sous la v5.0.0+. Si vous avez besoin de cette fonctionnalité, restez avec la v4.0.0+. Regardez l'[issue 3240](https://github.com/wailsapp/wails/issues/3240) pour les détails + +::: + +Si vous voulez charger ou générer des ressources pour votre frontend de manière dynamique, vous pouvez y parvenir en utilisant l'option [AssetsHandler](../reference/options#assetshandler). Le AssetsHandler est un générique`http.Handler` qui sera appelé pour toute requête non GET sur le serveur d'assets et pour les requêtes GET qui ne peuvent pas être servies car l'asset n'est pas trouvé. + +En installant un AssetsHandler personnalisé, vous pouvez servir vos propres ressources en utilisant un serveur de ressources personnalisé. + +## Exemple + +Dans notre exemple de projet, nous allons créer un gestionnaire de ressources simple qui chargera les fichiers à partir du disque: + +```go title=main.go {17-36,49} +package main + +import ( + "embed" + "fmt" + "github.com/wailsapp/wails/v2" + "github.com/wailsapp/wails/v2/pkg/options" + "github.com/wailsapp/wails/v2/pkg/options/assetserver" + "net/http" + "os" + "strings" +) + +//go:embed all:frontend/dist +var assets embed.FS + +type FileLoader struct { + http.Handler +} + +func NewFileLoader() *FileLoader { + return &FileLoader{} +} + +func (h *FileLoader) ServeHTTP(res http.ResponseWriter, req *http.Request) { + var err error + requestedFilename := strings.TrimPrefix(req.URL.Path, "/") + println("Requesting file:", requestedFilename) + fileData, err := os.ReadFile(requestedFilename) + if err != nil { + res.WriteHeader(http.StatusBadRequest) + res.Write([]byte(fmt.Sprintf("Could not load file %s", requestedFilename))) + } + + res.Write(fileData) +} + +func main() { + // Create an instance of the app structure + app := NewApp() + + // Create application with options + err := wails.Run(&options.App{ + Title: "helloworld", + Width: 1024, + Height: 768, + AssetServer: &assetserver.Options{ + Assets: assets, + Handler: NewFileLoader(), + }, + BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 255}, + OnStartup: app.startup, + Bind: []interface{}{ + app, + }, + }) + + if err != nil { + println("Error:", err) + } +} +``` + +Lorsque nous exécutons l'application en mode dev en utilisant `wails dev`, nous verrons la sortie suivante : + +``` +DEB | [ExternalAssetHandler] Loading 'http://localhost:3001/favicon.ico' +DEB | [ExternalAssetHandler] Loading 'http://localhost:3001/favicon.ico' failed, using AssetHandler +Requesting file: favicon.ico +``` + +Comme vous pouvez le voir, le gestionnaire d'actifs est appelé lorsque le serveur d'assets par défaut est incapable de servir le fichier `favicon.ico`. + +Si vous faites un clic droit sur l'application principale et sélectionnez "inspecter" pour afficher les devtools, vous pouvez tester cette fonctionnalité en tapant ce qui suit dans la console : + +``` +let response = await fetch('does-not-exist.txt'); +``` + +Cela générera une erreur dans les devtools. Nous pouvons voir que l'erreur est ce que nous attendons est retourné par notre gestionnaire de ressources personnalisées : + +```mdx-code-block +

            + +

            +``` + +Cependant, si nous demandons `go.mod`, nous verrons la sortie suivante : + +```mdx-code-block +

            + +

            +``` + +Cette technique peut être utilisée pour charger des images directement dans la page. Si nous avons mis à jour notre modèle vanilla par défaut et a remplacé l'image du logo : + +```html + +``` + +avec : + +```html + +``` + +Nous verrions ensuite ce qui suit: + +```mdx-code-block +

            + +

            +``` + +:::warning + +Exposer votre système de fichiers de cette manière est un risque de sécurité. Il est recommandé de gérer correctement l'accès à votre système de fichiers. + +::: diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/file-association.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/file-association.mdx new file mode 100644 index 00000000000..973a4d21758 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/file-association.mdx @@ -0,0 +1,243 @@ +# Associations de fichiers + +La fonction d'association de fichiers vous permet d'associer des types de fichiers spécifiques à votre application afin que lorsque les utilisateurs ouvrent ces fichiers, +votre application est lancée pour les gérer. Cela peut être particulièrement utile pour les éditeurs de texte, les visualisateurs d'images ou n'importe quelle application +qui fonctionne avec des formats de fichiers spécifiques. Dans ce guide, nous allons parcourir les étapes pour implémenter l'association de fichiers dans l'application Wails. + +## Configurer l'association de fichiers : + +Pour configurer l'association de fichiers, vous devez modifier le fichier wails.json de votre application. +Dans la section "info", ajoutez une section "fileAssociations" spécifiant les types de fichiers auxquels votre application doit être associée. + +Par exemple : + +```json +{ + "info": { + "fileAssociations": [ + { + "ext": "wails", + "name": "Wails", + "description": "Wails Application File", + "iconName": "wailsFileIcon", + "role": "Editor" + }, + { + "ext": "jpg", + "name": "JPEG", + "description": "Image File", + "iconName": "jpegFileIcon", + "role": "Editor" + } + ] + } +} +``` + +| Propriété | Description | +| :----------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ext | L'extension. ex: png | +| name | Le nom de l'extension. ex: PNG File | +| iconName | Le nom de l'icône sans extension. Les icônes doivent être situées dans le dossier de build. Des icônes appropriées seront générées à partir du fichier .png pour macOS et Windows | +| description | Windows seulement. La description. Il est affiché dans la colonne `Type` dans l'explorateur Windows. | +| role | macOS uniquement. Rôle de l'application par rapport au type. Correspond au rôle CFBundleTypeRole. | + +## Spécificités par platefome : + +### MacOS + +Lorsque vous ouvrez un fichier (ou des fichiers) avec votre application, le système lancera votre application et appellera la fonction `OnFileOpen` dans votre application Wails. Exemple: + +```go title="main.go" +func main() { + // Création d'une application avec des options + err := wails.Run(&options.App{ + Title: "wails-open-file", + Width: 1024, + Height: 768, + AssetServer: &assetserver.Options{ + Assets: assets, + }, + BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, + Mac: &mac.Options{ + OnFileOpen: func(filePaths []string) { println(filestring) }, + }, + Bind: []interface{}{ + app, + }, + }) + + if err != nil { + println("Error:", err.Error()) + } +} +``` + +### Windows + +L'association de fichiers dans Windows n'est prise en charge qu'avec l'installateur NSS. Pendant l'installation, l'installateur créera une entrée de registre +pour vos associations de fichiers. Lorsque vous ouvrez un fichier avec votre application, une nouvelle instance d'application est lancée et le chemin d'accès est passé à +comme argument à votre application. Pour gérer cela, vous devez analyser les arguments de la ligne de commande dans votre application. Exemple: + +```go title="main.go" +func main() { + argsWithoutProg := os.Args[1:] + + if len(argsWithoutProg) != 0 { + println("launchArgs", argsWithoutProg) + } +} +``` + +Vous pouvez également activer le verrouillage par instance unique pour votre application. Dans ce cas, lorsque vous ouvrez un fichier avec votre application, la nouvelle instance d'application n'est pas lancée +et les arguments sont passés à l'instance déjà en cours d'exécution. Consultez le guide de verrouillage de l'instance unique pour plus de détails. Exemple: + +```go title="main.go" +func main() { + // Création d'une application avec des options + err := wails.Run(&options.App{ + Title: "wails-open-file", + Width: 1024, + Height: 768, + AssetServer: &assetserver.Options{ + Assets: assets, + }, + BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, + SingleInstanceLock: &options.SingleInstanceLock{ + UniqueId: "e3984e08-28dc-4e3d-b70a-45e961589cdc", + OnSecondInstanceLaunch: app.onSecondInstanceLaunch, + }, + Bind: []interface{}{ + app, + }, + }) +} +``` + +### Linux + +Actuellement, Wails ne prend pas en charge l'association de fichiers pour Linux. Vous devez donc créer des associations de fichiers manuellement. +Par exemple, si vous distribuez votre application en tant que package .deb, vous pouvez créer des associations de fichiers en ajoutant les fichiers requis dans votre bundle. +Vous pouvez utiliser [nfpm](https://nfpm.goreleaser.com/) pour créer un package .deb pour votre application. + +1. Créez un fichier .desktop pour votre application et spécifiez des associations de fichiers là-bas. Exemple: + +```ini +[Desktop Entry] +Categories=Office +Exec=/usr/bin/wails-open-file %u +Icon=wails-open-file.png +Name=wails-open-file +Terminal=false +Type=Application +MimeType=application/x-wails;application/x-test +``` + +2. Créer un fichier de type MIME. Exemple: + +```xml + + + + Wails Application File + + + +``` + +3. Créez des icônes pour vos types de fichiers. Les icônes SVG sont recommandées. +4. Préparez les scripts postInstall/postRemove pour votre paquet. Exemple: + +```sh +# Recharge les types MIME pour enregistrer votre association de fichiers +update-mime-database /usr/share/mime +# Recharge la base de données du bureau afin de rendre disponible votre application dans les choix possibles +update-desktop-database /usr/share/applications +# Mise à jour des icônes +update-icon-caches /usr/share/icons/* +``` + +5. Configurez nfpm pour utiliser vos scripts et fichiers. Exemple: + +```yaml +name: "wails-open-file" +arch: "arm64" +platform: "linux" +version: "1.0.0" +section: "default" +priority: "extra" +maintainer: "FooBarCorp " +description: "Sample Package" +vendor: "FooBarCorp" +homepage: "http://example.com" +license: "MIT" +contents: +- src: ../bin/wails-open-file + dst: /usr/bin/wails-open-file +- src: ./main.desktop + dst: /usr/share/applications/wails-open-file.desktop +- src: ./application-wails-mime.xml + dst: /usr/share/mime/packages/application-x-wails.xml +- src: ./application-test-mime.xml + dst: /usr/share/mime/packages/application-x-test.xml +- src: ../appicon.svg + dst: /usr/share/icons/hicolor/scalable/apps/wails-open-file.svg +- src: ../wailsFileIcon.svg + dst: /usr/share/icons/hicolor/scalable/mimetypes/application-x-wails.svg +- src: ../testFileIcon.svg + dst: /usr/share/icons/hicolor/scalable/mimetypes/application-x-test.svg +# copy icons to Yaru theme as well. For some reason Ubuntu didn't pick up fileicons from hicolor theme +- src: ../appicon.svg + dst: /usr/share/icons/Yaru/scalable/apps/wails-open-file.svg +- src: ../wailsFileIcon.svg + dst: /usr/share/icons/Yaru/scalable/mimetypes/application-x-wails.svg +- src: ../testFileIcon.svg + dst: /usr/share/icons/Yaru/scalable/mimetypes/application-x-test.svg +scripts: + postinstall: ./postInstall.sh + postremove: ./postRemove.sh +``` + +6. Construisez votre paquet .deb en utilisant nfpm: + +```sh +nfpm pkg --packager deb --target . +``` + +7. Maintenant que votre paquet est installé, votre application sera associée aux types de fichiers qui ont été spécifiés. Lorsque vous ouvrez un fichier avec votre application, une nouvelle instance est lancée et le chemin du fichier est passé en argument à votre application. + Pour gérer cela, vous devez analyser les arguments de la ligne de commande dans votre application. Exemple: + +```go title="main.go" +func main() { + argsWithoutProg := os.Args[1:] + + if len(argsWithoutProg) != 0 { + println("launchArgs", argsWithoutProg) + } +} +``` + +Vous pouvez également activer le verrouillage par instance unique pour votre application. Dans ce cas, lorsque vous ouvrez un fichier avec votre application, la nouvelle instance d'application n'est pas lancée +et les arguments sont passés à l'instance déjà en cours d'exécution. Consultez le guide de verrouillage de l'instance unique pour plus de détails. Exemple: + +```go title="main.go" +func main() { + // Création d'une application avec des options + err := wails.Run(&options.App{ + Title: "wails-open-file", + Width: 1024, + Height: 768, + AssetServer: &assetserver.Options{ + Assets: assets, + }, + BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, + SingleInstanceLock: &options.SingleInstanceLock{ + UniqueId: "e3984e08-28dc-4e3d-b70a-45e961589cdc", + OnSecondInstanceLaunch: app.onSecondInstanceLaunch, + }, + Bind: []interface{}{ + app, + }, + }) +} +``` diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/frameless.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/frameless.mdx new file mode 100644 index 00000000000..bbeb338f1b6 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/frameless.mdx @@ -0,0 +1,87 @@ +# Applications sans cadre + +Wails prend en charge la création d'applications qui n'ont pas de cadres. Ceci peut être réalisé en utilisant le champ [frameless](../reference/options.mdx#frameless) dans [Application Options](../reference/options.mdx#application-options). + +Wails offre une solution simple pour faire glisser la fenêtre: N'importe quel élément HTML qui a le style CSS `--wails-draggable:drag` agira comme une "poignée de glisser". Cette propriété s'applique à tous les éléments enfants. Si vous devez indiquer qu'un élément imbriqué ne doit pas glisser, alors utilisez l'attribut '--wails-draggable:no-drag' sur cet élément. + +```html + + + + + + + +
            + + +
            +
            + + + + +``` + +Pour certains projets, l'utilisation d'une variable CSS peut ne pas être possible en raison du style dynamique. Dans ce cas, vous pouvez utiliser les options `CSSDragProperty` et `CSSDragValue` pour définir une propriété et une valeur qui seront utilisées pour indiquer régions glissables : + +```go title=main.go +package main + +import ( + "embed" + + "github.com/wailsapp/wails/v2" + "github.com/wailsapp/wails/v2/pkg/options" + "github.com/wailsapp/wails/v2/pkg/options/assetserver" +) + +//go:embed all:frontend/dist +var assets embed.FS + +func main() { + // Create an instance of the app structure + app := NewApp() + + // Create application with options + err := wails.Run(&options.App{ + Title: "alwaysontop", + Width: 1024, + Height: 768, + AssetServer: &assetserver.Options{ + Assets: assets, + }, + Frameless: true, + CSSDragProperty: "widows", + CSSDragValue: "1", + Bind: []interface{}{ + app, + }, + }) + + if err != nil { + println("Error:", err) + } +} +``` + +```html title=index.html + + + + + + alwaysontop + + +
            + + + +``` + +:::info Plein écran + +Si vous autorisez votre application à être en plein écran, cette fonctionnalité de glissement sera désactivée. + +::: diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/frontend.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/frontend.mdx new file mode 100644 index 00000000000..ea101019ad8 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/frontend.mdx @@ -0,0 +1,72 @@ +# Frontend + +## Injection de script + +Quand Wails sert votre fichier `index.html`, par défaut, il injectera 2 entrées de script dans la balise `` pour charger `/wails/ipc.js` et `/wails/runtime.js`. Ces fichiers installent respectivement les bindings et les runtime. + +Le code ci-dessous montre où ils sont injectés par défaut : + +```html + + + injection example + + + + + + + +
            Please enter your name below 👇
            +
            + + +
            + + + + +``` + +### Remplacer l'injection de script par défaut + +Pour fournir plus de flexibilité aux développeurs, il y a une balise meta qui peut être utilisée pour personnaliser ce comportement: + +```html + +``` + +Les options sont les suivantes : + +| Valeur | Description | +| ------------------- | -------------------------------------------------------------- | +| noautoinjectruntime | Pour désactiver l'injection automatique de `/wails/runtime.js` | +| noautoinjectipc | Pour désactiver l'injection automatique de `/wails/ipc.js` | +| noautoinject | Pour désactiver l'injection automatique de tous les scripts | + +Plusieurs options peuvent être utilisées à condition qu'elles soient séparées par des virgules. + +Ce code est parfaitement valide et fonctionne de la même manière que la version avec l'auto-injection : + +```html + + + injection example + + + + + + +
            Please enter your name below 👇
            +
            + + +
            + + + + + + +``` diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/ides.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/ides.mdx new file mode 100644 index 00000000000..887937954a2 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/ides.mdx @@ -0,0 +1,127 @@ +# IDEs + +Wails vise à fournir une grande expérience de développement. À cet effet, nous supportons maintenant la génération d'une configuration spécifique IDE pour fournir une configuration plus souple du projet. + +Actuellement, nous prenons en charge [Visual Studio Code](https://code.visualstudio.com/) et [Goland](https://www.jetbrains.com/go/). + +## Visual Studio Code + +```mdx-code-block +

            + +

            +``` + +Lors de la génération d'un projet en utilisant l'option `-ide vscode` , les fichiers IDE seront créés à côté des autres fichiers du projet. Ces fichiers sont placés dans le répertoire `.vscode` et fournissent la configuration correcte pour déboguer votre application. + +Les 2 fichiers générés sont `tasks.json` et `launch.json`. Ci-dessous se trouvent les fichiers générés par défaut : + +```json title="tasks.json" +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "type": "shell", + "options": { + "cwd": "${workspaceFolder}" + }, + "command": "go", + "args": [ + "build", + "-tags", + "dev", + "-gcflags", + "all=-N -l", + "-o", + "build/bin/myproject.exe" + ] + } + ] +} +``` + +```json title="launch.json" +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Wails: Debug myproject", + "type": "go", + "request": "launch", + "mode": "exec", + "program": "${workspaceFolder}/build/bin/myproject.exe", + "preLaunchTask": "build", + "cwd": "${workspaceFolder}", + "env": {} + } + ] +} +``` + +### Configuration des étapes d'installation et de construction + +Le fichier `tasks.json` est simple pour le projet par défaut car il n'y a pas d'étapes `npm install` ou `npm build` nécessaire. Pour les projets qui ont une étape de construction en frontend comme avec Svelte, nous devrions modifier `tasks.json` pour ajouter les étapes d'installation et de construction suivantes : + +```json title="tasks.json" +{ + "version": "2.0.0", + "tasks": [ + { + "label": "npm install", + "type": "npm", + "script": "install", + "options": { + "cwd": "${workspaceFolder}/frontend" + }, + "presentation": { + "clear": true, + "panel": "shared", + "showReuseMessage": false + }, + "problemMatcher": [] + }, + { + "label": "npm run build", + "type": "npm", + "script": "build", + "options": { + "cwd": "${workspaceFolder}/frontend" + }, + "presentation": { + "clear": true, + "panel": "shared", + "showReuseMessage": false + }, + "problemMatcher": [] + }, + { + "label": "build", + "type": "shell", + "options": { + "cwd": "${workspaceFolder}" + }, + "command": "go", + "args": [ + "build", + "-tags", + "dev", + "-gcflags", + "all=-N -l", + "-o", + "build/bin/vscode.exe" + ], + "dependsOn": ["npm install", "npm run build"] + } + ] +} +``` + +:::info Améliorations futures + +Dans le futur, nous espérons générer un `tasks.json` qui inclut les étapes d'installation et de construction automatiquement. + +::: diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux-distro-support.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux-distro-support.mdx new file mode 100644 index 00000000000..6bd2002fce7 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux-distro-support.mdx @@ -0,0 +1,103 @@ +# Prise en charge des distributions Linux + +## Vue d'ensemble + +Wails offre le support de Linux, mais fournir des instructions d'installation pour toutes les distributions disponibles est une tâche impossible. À la place, Wails essaie de déterminer si les paquets dont vous avez besoin pour développer des applications sont disponibles via le gestionnaire de paquets de votre système. Actuellement, nous supportons les gestionnaires de paquets suivants : + +- apt +- dnf +- emerge +- eopkg +- nixpkgs +- pacman +- zypper + +## Ajout des noms de paquets + +Il peut y avoir des cas où votre distribution de linux utilise un des gestionnaires de paquets pris en charge mais le nom du paquet est différent. Par exemple, vous pouvez utiliser un dérivé Ubuntu, mais le nom du paquet pour gtk peut être différent. Wails tente de trouver le paquet correct en itérant une liste de noms de paquets. La liste des paquets est stockée dans un fichier spécifique dans le dossier `v2/internal/system/packagemanager` . Dans notre exemple, ce serait `v2/internal/system/packagemanager/apt.go`. + +Dans ce fichier, la liste des paquets est définie par la méthode `Packages()`: + +```go +func (a *Apt) Packages() packagemap { + return packagemap{ + "libgtk-3": []*Package{ + {Name: "libgtk-3-dev", SystemPackage: true, Library: true}, + }, + "libwebkit": []*Package{ + {Name: "libwebkit2gtk-4.0-dev", SystemPackage: true, Library: true}, + }, + "gcc": []*Package{ + {Name: "build-essential", SystemPackage: true}, + }, + "pkg-config": []*Package{ + {Name: "pkg-config", SystemPackage: true}, + }, + "npm": []*Package{ + {Name: "npm", SystemPackage: true}, + }, + "docker": []*Package{ + {Name: "docker.io", SystemPackage: true, Optional: true}, + }, + } +} +``` + +Supposons que dans notre distribution linux, `libgtk-3` est empaqueté sous le nom `lib-gtk3-dev`. Nous pourrions ajouter le support de ce paquet en ajoutant la ligne suivante : + +```go {5} +func (a *Apt) Packages() packagemap { + return packagemap{ + "libgtk-3": []*Package{ + {Name: "libgtk-3-dev", SystemPackage: true, Library: true}, + {Name: "lib-gtk3-dev", SystemPackage: true, Library: true}, + }, + "libwebkit": []*Package{ + {Name: "libwebkit2gtk-4.0-dev", SystemPackage: true, Library: true}, + }, + "gcc": []*Package{ + {Name: "build-essential", SystemPackage: true}, + }, + "pkg-config": []*Package{ + {Name: "pkg-config", SystemPackage: true}, + }, + "npm": []*Package{ + {Name: "npm", SystemPackage: true}, + }, + "docker": []*Package{ + {Name: "docker.io", SystemPackage: true, Optional: true}, + }, + } +} +``` + +## Ajout de nouveaux gestionnaires de paquets + +Pour ajouter un nouveau gestionnaire de paquets, effectuez les étapes suivantes : + +- Créez un nouveau fichier dans `v2/internal/system/packagemanager` appelé `.go`, où `` est le nom du gestionnaire de paquets. +- Définit une structure conforme à l'interface du gestionnaire de paquets définie dans `pm.go`: + +```go +type PackageManager interface { + Name() string + Packages() packagemap + PackageInstalled(*Package) (bool, error) + PackageAvailable(*Package) (bool, error) + InstallCommand(*Package) string +} +``` + +- `Name()` doit retourner le nom du gestionnaire de paquets +- `Packages()` doit retourner une `packagemap`, qui fournit des noms de fichiers candidats pour les dépendances +- `PackageInstalled()` devrait retourner `true` si le paquet donné est installé +- `PackageAvailable()` devrait retourner `true` si le paquet donné n'est pas installé mais disponible pour l'installation +- `InstallCommand()` doit retourner la commande exacte pour installer le nom du paquet donné + +Jetez un coup d'œil au code des autres gestionnaires de paquets pour avoir une idée de comment cela fonctionne. + +:::info Rappel + +Si vous ajoutez le support d'un nouveau gestionnaire de paquets, n'oubliez pas de mettre également à jour cette page ! + +::: diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux.mdx b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux.mdx new file mode 100644 index 00000000000..6df9f0fe0d2 --- /dev/null +++ b/website/i18n/fr/docusaurus-plugin-content-docs/version-v2.13.0/guides/linux.mdx @@ -0,0 +1,70 @@ +# Linux + +Cette page a divers guides liés au développement d'applications Wails pour Linux. + +## Le tag vidéo ne déclenche pas l'événement "ended" + +Lorsque vous utilisez un tag vidéo, l'événement "terminé" n'est pas déclenché lorsque la vidéo est finie. Ceci est un bogue dans WebkitGTK, cependant vous pouvez utiliser le contournement suivant pour le corriger : + +```js +videoTag.addEventListener("timeupdate", (event) => { + if (event.target.duration - event.target.currentTime < 0.2) { + let ended = new Event("ended"); + event.target.dispatchEvent(ended); + } +}); +``` + +Source : [Lyimmi](https://github.com/Lyimmi) sur le [forum de discussion](https://github.com/wailsapp/wails/issues/1729#issuecomment-1212291275) + +## Erreur GStreamer lors de l'utilisation d'éléments audio ou vidéo + +Si vous voyez l'erreur suivante lorsque vous incluez les éléments `

          Returns RuntimeError

          Properties

          cause?: unknown
          message: string
          name: string
          stack?: string
          stackTraceLimit: number

          The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

          The default value is 10 but may be set to any valid JavaScript number. Changes diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/Call.ByID.html b/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/Call.ByID.html index ecbc6cfa64a..d666003938b 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/Call.ByID.html +++ b/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/Call.ByID.html @@ -3,4 +3,4 @@

          Parameters

          • methodID: number

            The ID of the method to call.

          • ...args: any[]

            The arguments to pass to the method.

          Returns CancellablePromise<any>

          The result of the method call.

          -
          +
          diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/Call.ByName.html b/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/Call.ByName.html index 73f3660d1ae..3063a66efeb 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/Call.ByName.html +++ b/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/Call.ByName.html @@ -3,4 +3,4 @@

          Parameters

          • methodName: string

            The name of the method in the format 'package.struct.method'.

          • ...args: any[]

            The arguments to pass to the method.

          Returns CancellablePromise<any>

          The result of the method call.

          -
          +
          diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/Call.Call.html b/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/Call.Call.html index c533a4537a5..b676d1b7f41 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/Call.Call.html +++ b/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/Call.Call.html @@ -6,4 +6,4 @@ by the application- or service-level error marshaling functions.

          Parameters

          Returns CancellablePromise<any>

          The result of the call.

          -
          +
          diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/getTransport.html b/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/getTransport.html index e0069b934d5..9d2e24f1a20 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/getTransport.html +++ b/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/getTransport.html @@ -1,2 +1,2 @@ getTransport | @wailsio/runtime
          @wailsio/runtime
            Preparing search index...

            Function getTransport

            +

            Returns RuntimeTransport | null

            diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/setTransport.html b/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/setTransport.html index d6aef327174..a1618820b29 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/setTransport.html +++ b/v3/internal/runtime/desktop/@wailsio/runtime/docs/functions/setTransport.html @@ -5,4 +5,4 @@

            Returns void

            import { setTransport } from '/wails/runtime.js';

            const wsTransport = {
            call: async (objectID, method, windowName, args) => {
            // Your WebSocket implementation
            }
            };

            setTransport(wsTransport);
            -
            +
            diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/docs/interfaces/RuntimeTransport.html b/v3/internal/runtime/desktop/@wailsio/runtime/docs/interfaces/RuntimeTransport.html index 695ed07bf80..f92ec78f6ad 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/docs/interfaces/RuntimeTransport.html +++ b/v3/internal/runtime/desktop/@wailsio/runtime/docs/interfaces/RuntimeTransport.html @@ -1,11 +1,11 @@ RuntimeTransport | @wailsio/runtime
            @wailsio/runtime
              Preparing search index...

              Interface RuntimeTransport

              RuntimeTransport defines the interface for custom IPC transport implementations. Implement this interface to use WebSockets, custom protocols, or any other transport mechanism instead of the default HTTP fetch.

              -
              interface RuntimeTransport {
                  call(
                      objectID: number,
                      method: number,
                      windowName: string,
                      args: any,
                  ): Promise<any>;
              }
              Index

              Methods

              interface RuntimeTransport {
                  call(
                      objectID: number,
                      method: number,
                      windowName: string,
                      args: any,
                  ): Promise<any>;
              }
              Index

              Methods

              Methods

              • Send a runtime call and return the response.

                Parameters

                • objectID: number

                  The Wails object ID (0=Call, 1=Clipboard, etc.)

                • method: number

                  The method ID to call

                • windowName: string

                  Optional window name

                • args: any

                  Arguments to pass (will be JSON stringified if present)

                Returns Promise<any>

                Promise that resolves with the response data

                -
              +
              diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/docs/variables/clientId.html b/v3/internal/runtime/desktop/@wailsio/runtime/docs/variables/clientId.html index b8623df0e1c..79907791766 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/docs/variables/clientId.html +++ b/v3/internal/runtime/desktop/@wailsio/runtime/docs/variables/clientId.html @@ -1 +1 @@ -clientId | @wailsio/runtime
              @wailsio/runtime
                Preparing search index...

                Variable clientId

                clientId: string = ...
                +clientId | @wailsio/runtime
                @wailsio/runtime
                  Preparing search index...

                  Variable clientId

                  clientId: string = ...
                  diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/docs/variables/objectNames.html b/v3/internal/runtime/desktop/@wailsio/runtime/docs/variables/objectNames.html index 6e2cd5d357b..c8f1e7b95f0 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/docs/variables/objectNames.html +++ b/v3/internal/runtime/desktop/@wailsio/runtime/docs/variables/objectNames.html @@ -1 +1 @@ -objectNames | @wailsio/runtime
                  @wailsio/runtime
                    Preparing search index...

                    Variable objectNamesConst

                    objectNames: Readonly<
                        {
                            Android: 12;
                            Application: 2;
                            Browser: 9;
                            Call: 0;
                            CancelCall: 10;
                            Clipboard: 1;
                            ContextMenu: 4;
                            Dialog: 5;
                            Events: 3;
                            IOS: 11;
                            Screens: 7;
                            System: 8;
                            Window: 6;
                        },
                    > = ...
                    +objectNames | @wailsio/runtime
                    @wailsio/runtime
                      Preparing search index...

                      Variable objectNamesConst

                      objectNames: Readonly<
                          {
                              Android: 12;
                              Application: 2;
                              Browser: 9;
                              Call: 0;
                              CancelCall: 10;
                              Clipboard: 1;
                              ContextMenu: 4;
                              Dialog: 5;
                              Events: 3;
                              IOS: 11;
                              Screens: 7;
                              System: 8;
                              Window: 6;
                          },
                      > = ...
                      diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/package-lock.json b/v3/internal/runtime/desktop/@wailsio/runtime/package-lock.json index 83e4808f194..5acda88d971 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/package-lock.json +++ b/v3/internal/runtime/desktop/@wailsio/runtime/package-lock.json @@ -1,12 +1,12 @@ { "name": "@wailsio/runtime", - "version": "3.0.0-alpha.96", + "version": "3.0.0-alpha.97", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@wailsio/runtime", - "version": "3.0.0-alpha.96", + "version": "3.0.0-alpha.97", "license": "MIT", "devDependencies": { "esbuild": "0.28.1", diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/package.json b/v3/internal/runtime/desktop/@wailsio/runtime/package.json index fcec2289954..4ea23afc316 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/package.json +++ b/v3/internal/runtime/desktop/@wailsio/runtime/package.json @@ -1,7 +1,7 @@ { "name": "@wailsio/runtime", "type": "module", - "version": "3.0.0-alpha.96", + "version": "3.0.0-alpha.97", "description": "Wails Runtime", "types": "types/index.d.ts", "exports": { From 2709aa700c4a24c2fbe2448831dc9342a0c261a9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 7 Jul 2026 00:41:03 +0000 Subject: [PATCH 14/29] chore: update sponsors.svg and contributors.svg [skip ci] --- website/static/img/contributors.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/static/img/contributors.svg b/website/static/img/contributors.svg index 230f18d4876..1bb6ecae8a0 100644 --- a/website/static/img/contributors.svg +++ b/website/static/img/contributors.svg @@ -105,4 +105,4 @@ text { .chip { transition: none; } } -Wails Contributors435 contributors · 5,709 commits — thank you!@leaanthony · 541 merged PRs541 merged PRsleaanthony@stffabi · 133 merged PRs133 merged PRsstffabi@fbbdev · 92 changelog credits92 changelog creditsfbbdev@misitebao · 76 merged PRs76 merged PRsmisitebao@atterpac · 59 merged PRs59 merged PRsatterpac@taliesin-ai · 51 merged PRs51 merged PRstaliesin-ai@tmclane · 26 merged PRs26 merged PRs@APshenkin · 23 changelog credits23 changelog credits@bh90210 · 22 merged PRs22 merged PRs@lyimmi · 20 merged PRs20 merged PRs@almas-x · 12 merged PRs@mmghv · 12 merged PRs@popaprozac · 12 merged PRs@ianmjones · 11 merged PRs@IanVS · 10 changelog credits@PylotLight · 9 merged PRs@symball · 9 merged PRs@wayneforrest · 9 merged PRs@OlegGulevskyy · 8 merged PRs@agilgur5 · 7 merged PRs@ndianabasi · 7 merged PRs@rh12503 · 7 merged PRs@5aaee9 · 6 changelog credits@acheong08 · 6 changelog credits@ansxuman · 6 merged PRs@Etesam913 · 6 changelog credits@LGiki · 6 changelog credits@marcus-crane · 6 merged PRs@napalu · 6 merged PRs@raguay · 6 merged PRs@sircodemane · 6 merged PRs@abichinger · 5 merged PRs@ATenderholt · 5 merged PRs@jaesung9507 · 5 changelog credits@oSethoum · 5 merged PRs@Snider · 5 merged PRs@yulesxoxo · 5 changelog credits@akhudek · 4 merged PRs@ddmoney420 · 4 merged PRs@dedo1911 · 4 merged PRs@fdidron · 4 merged PRs@haukened · 4 merged PRs@k-muchmore · 4 commits@marktohark · 4 merged PRs@mbaklor · 4 merged PRs@superDingda · 4 merged PRs@xijaja · 4 merged PRs@adalessa · 3 merged PRs@AkshayKalose · 3 merged PRs@AlbinoDrought · 3 merged PRs@BenoitBotton · 3 merged PRs@COD3HUNT3R · 3 merged PRs@copilot-swe-agent · 3 merged PRs@DeltaLaboratory · 3 merged PRs@DiegPS · 3 merged PRs@FrancescoLuzzi · 3 merged PRs@hi019 · 3 merged PRs@joshbuddy · 3 changelog credits@JulioDRF · 3 changelog credits@Kron · 3 changelog credits@overlordtm · 3 changelog credits@pbnjay · 3 merged PRs@robin-samuel · 3 changelog credits@samstanier · 3 changelog credits@scottopell · 3 changelog credits@smac89 · 3 merged PRs@TheFranconianCoder · 3 merged PRs@Tolfx · 3 changelog credits@triadmoko · 3 changelog credits@TwoNull · 3 merged PRs@Vaelatern · 3 merged PRs@ValentinTrinque · 3 merged PRs@wimaha · 3 merged PRs@aangelisc · 2 merged PRs@aayush420 · 2 merged PRs@AbdelhadiSeddar · 2 merged PRs@abtin · 2 changelog credits@achhabra2 · 2 merged PRs@Alex6357 · 2 merged PRs@andrewbytecoder · 2 merged PRs@andywenk · 2 changelog credits@antimatter96 · 2 merged PRs@arifali123 · 2 changelog credits@artooro · 2 merged PRs@avengerweb · 2 merged PRs@Bare7a · 2 merged PRs@BillBuilt · 2 merged PRs@binyamin · 2 changelog credits@biuaxia · 2 merged PRs@Bronya0 · 2 merged PRs@bruxaodev · 2 merged PRs@chenxiao1990 · 2 changelog credits@cuigege · 2 changelog credits@daodao97 · 2 changelog credits@Debdut · 2 changelog credits@duolabmeng6 · 2 merged PRs@edwardbrowncross · 2 changelog credits@fkhadra · 2 merged PRs@Gjergj · 2 merged PRs@gotid · 2 changelog credits@gwynforthewyn · 2 merged PRs@h8gi · 2 changelog credits@hfoxy · 2 merged PRs@hkhere · 2 merged PRs@hotafrika · 2 changelog credits@iamhabbeboy · 2 changelog credits@ilgityildirim · 2 merged PRs@jes0131 · 2 merged PRs@jghiloni · 2 merged PRs@josStorer · 2 merged PRs@Junkher · 2 changelog credits@KiddoV · 2 changelog credits@konez2k · 2 merged PRs@lambdajack · 2 changelog credits@lontten · 2 merged PRs@LukenSkyne · 2 changelog credits@lvyaoting · 2 merged PRs@Maicarons2022 · 2 changelog credits@marcio199226 · 2 merged PRs@matryer · 2 commits@mondy · 2 changelog credits@mrf345 · 2 merged PRs@MyNameIsAres · 2 changelog credits@NanoNik · 2 changelog credits@nerdyslacker · 2 merged PRs@nickisworking · 2 changelog credits@o8x · 2 changelog credits@ParkourLiu · 2 changelog credits@ParvinEyvazov · 2 changelog credits@phoenix147 · 2 merged PRs@pierrejoye · 2 merged PRs@polikow · 2 changelog credits@PPTGamer · 2 merged PRs@prurigro · 2 changelog credits@puneetdixit200 · 2 changelog credits@RALIST · 2 merged PRs@rayshoo · 2 changelog credits@rev42 · 2 changelog credits@riadafridishibly · 2 changelog credits@rnice01 · 2 changelog credits@rxliuli · 2 merged PRs@RyoTagami · 2 changelog credits@SamHennessy · 2 changelog credits@SheetJSDev · 2 changelog credits@shinshin86 · 2 merged PRs@sidwebworks · 2 changelog credits@skamensky · 2 changelog credits@stavros-k · 2 merged PRs@stendler · 2 merged PRs@Taiterbase · 2 changelog credits@takuyahara · 2 merged PRs@TechplexEngineer · 2 changelog credits@testwill · 2 merged PRs@TheGB0077 · 2 merged PRs@thiennguyen93 · 2 changelog credits@thomas-senechal · 2 merged PRs@timkippdev · 2 merged PRs@tiny-craft · 2 merged PRs@tomanagle · 2 changelog credits@tuuzed · 2 merged PRs@Wakeful-Cloud · 2 merged PRs@willdot · 2 merged PRs@windom · 2 merged PRs@wucm667 · 2 changelog credits@wux1an · 2 changelog credits@x-haose · 2 changelog credits@yz4230 · 2 changelog credits@zandercodes · 2 changelog credits@0x3st3 · 1 merged PR@562589540 · 1 merged PR@aalsuwaidi · 1 merged PR@actions-user · 1 commit@AkagiYui · 1 merged PR@AkimioJR · 1 merged PR@albert-sun · 1 merged PR@alexmat · 1 merged PR@AlienRecall · 1 merged PR@Aliuyanfeng · 1 merged PR@Alpa-1 · 1 changelog credit@amaury-tobias · 1 merged PR@aminya · 1 merged PR@AnalogJ · 3 commits@apzuk3 · 1 merged PR@aranggitoar · 1 merged PR@aschey · 1 merged PR@ayatkyo · 1 changelog credit@azamara · 1 merged PR@Baiyuetribe · 1 merged PR@barats · 1 merged PR@bardiauto · 1 commit@barremian · 1 merged PR@Bas950 · 1 merged PR@bdwyertech · 1 merged PR@bearsh · 1 merged PR@BenAicholtz · 1 merged PR@benjamin-thomas · 1 merged PR@benmccann · 1 merged PR@blacksud0 · 1 merged PR@blinkinglight · 1 merged PR@boreq · 1 merged PR@BradHacker · 1 merged PR@Braincompiler · 1 merged PR@brianetaveras · 1 merged PR@brunoborges · 1 merged PR@bt · 1 merged PR@BuckeyeCoder · 1 merged PR@buddyabaddon · 1 merged PR@c-tonneslan · 1 merged PR@cctv1005s · 1 merged PR@cenan · 1 merged PR@chinenual · 1 merged PR@Chronophylos · 1 merged PR@ckilb · 1 merged PR@cristianrgreco · 1 merged PR@cto-mindset · 1 merged PR@cybertramp · 1 merged PR@damiensedgwick · 1 merged PR@danawoodman · 1 merged PR@darkb0ts · 1 merged PR@db47h · 1 merged PR@deining · 1 merged PR@deltajoe · 1 merged PR@dennypenta · 1 merged PR@derhasi · 1 merged PR@dev-kas · 1 merged PR@diogox · 1 merged PR@diorodrigu · 1 merged PR@dominictwlee · 1 merged PR@doracpphp · 1 merged PR@drc5521 · 1 merged PR@dzmitryi-h · 1 merged PR@edai-git · 1 merged PR@edwargix · 1 merged PR@eft · 1 merged PR@ekkohnet · 1 merged PR@eleclin · 1 changelog credit@elie-g · 1 merged PR@erdemkosk · 1 merged PR@eric-tech01 · 1 merged PR@FalcoG · 1 merged PR@fallendusk · 1 merged PR@fcying · 1 merged PR@fengfengzhidao · 1 merged PR@fengweiqiang · 1 merged PR@FerroO2000 · 1 merged PR@fholmqvist · 1 merged PR@fieu · 1 merged PR@figuerom16 · 1 merged PR@firelizzard18 · 1 merged PR@flin7 · 1 merged PR@flofreud · 1 merged PR@fred21O4 · 1 commit@gardc · 1 merged PR@GargantuaX · 1 merged PR@gelleson · 1 merged PR@giopalma · 1 merged PR@Gornius · 1 merged PR@Grantmartin2002 · 1 merged PR@greymoth-jp · 1 merged PR@Gurkengewuerz · 1 merged PR@gursheyss · 1 merged PR@hidewrong · 1 merged PR@Hudolus · 1 merged PR@i7tsov · 1 merged PR@IAFEnvoy · 1 merged PR@iberflow · 1 merged PR@id88 · 1 merged PR@igogrek · 1 merged PR@ironpark · 1 merged PR@JackDoan · 1 merged PR@jakubpeleska · 1 merged PR@jangler · 1 merged PR@Jarek-SRT · 1 merged PR@jasikpark · 1 merged PR@jaypipes · 1 merged PR@jicg · 1 merged PR@johannes-luebke · 1 merged PR@johnmaguire · 1 merged PR@johnmccabe · 1 merged PR@josexy · 1 merged PR@joshdrake · 1 merged PR@joshhardy · 1 changelog credit@joshm998 · 1 merged PR@joshuapare · 1 merged PR@Juneezee · 1 merged PR@justinmoon · 1 merged PR@k1nho · 1 merged PR@kairo913 · 1 merged PR@Khady · 1 merged PR@kmuchmore · 1 merged PR@kodflow · 1 merged PR@kodumulo · 1 merged PR@kraney · 1 merged PR@Krzysztofz01 · 1 changelog credit@ktsivkov · 1 merged PR@kyoto44 · 1 merged PR@lanzafame · 1 commit@LazyClicks · 1 merged PR@leolee3 · 1 merged PR@levinit · 1 merged PR@lian-yang · 1 merged PR@Licoy · 1 merged PR@Liumingxun · 1 merged PR@liuzi6612 · 1 merged PR@lmb1113 · 1 merged PR@ltcovalt · 1 merged PR@lujihong · 1 changelog credit@lukewatts · 1 merged PR@madflow · 1 merged PR@MagicFun1241 · 1 merged PR@Mahcks · 1 merged PR@Mai-Lapyst · 1 changelog credit@marvinhosea · 1 merged PR@MarvinJWendt · 1 merged PR@mateothegreat · 1 merged PR@matholt · 1 changelog credit@matta · 1 merged PR@mattn · 1 commit@meatherly · 1 merged PR@meeehdi-dev · 1 merged PR@MerIijn · 1 merged PR@mewmew · 1 merged PR@mholt · 1 merged PR@michael-freling · 1 merged PR@miclle · 1 merged PR@Mihara · 1 merged PR@mikeee · 1 merged PR@MikeLINGxZ · 1 merged PR@MikeSchaap · 1 merged PR@MIMBOL22 · 1 merged PR@mJehanno · 1 merged PR@mkwsnyder · 1 merged PR@mmalcek · 1 merged PR@mortenolsrud · 1 merged PR@mr-zlaam · 1 merged PR@msal4 · 1 merged PR@narcilee7 · 1 merged PR@nejos97 · 1 merged PR@Nexus26404 · 1 merged PR@nguyenvanduocit · 1 merged PR@nidib · 1 merged PR@nnashwin · 1 merged PR@noahgorstein · 1 merged PR@northes · 1 merged PR@NullCode1337 · 1 merged PR@occamist · 1 merged PR@ocelotsloth · 1 merged PR@oguz-yilmaz · 1 merged PR@orellazri · 1 merged PR@Orijhins · 1 merged PR@patopesto · 1 merged PR@paulbrickwell · 1 merged PR@Peiratooo · 1 merged PR@pekim · 1 merged PR@pernydev · 1 merged PR@phildrip · 1 merged PR@plutov · 1 merged PR@poisonshell · 1 merged PR@pratikmota · 1 merged PR@qaisjp · 1 merged PR@qq540491950 · 1 changelog credit@radish-miyazaki · 1 merged PR@raitonoberu · 1 merged PR@randalmurphal · 1 changelog credit@rcalixte · 1 merged PR@redisviewer · 1 merged PR@redraskal · 1 merged PR@Rested · 1 merged PR@riannucci · 1 merged PR@riquenunes · 1 merged PR@rlshukhov · 1 merged PR@RonaldinhoL · 1 merged PR@ronen25 · 1 merged PR@rprtr258 · 1 merged PR@ruhuang2001 · 1 merged PR@rynsf · 1 merged PR@s12chung · 1 merged PR@salman0ansari · 1 merged PR@SametKUM · 1 merged PR@seanmtracey · 1 merged PR@seleborg · 1 merged PR@sgosiaco · 1 merged PR@sharkmu · 1 merged PR@sid-the-sloth1 · 1 merged PR@sinspired · 1 merged PR@Sipaha · 1 merged PR@sithembiso · 1 merged PR@SophieAu · 1 merged PR@sqot0 · 1 merged PR@ssahillppatell · 1 merged PR@stanislav-zeman · 1 merged PR@stankovic98 · 1 merged PR@stefpap · 1 merged PR@SupianIDz · 1 merged PR@TAINCER · 1 merged PR@taisei-86 · 1 merged PR@taiseiotsuka · 1 changelog credit@Taiwofolu · 1 merged PR@te5se · 1 merged PR@TekWizely · 1 merged PR@tilak999 · 1 merged PR@tk103331 · 1 merged PR@tong3jie · 1 merged PR@tongque0 · 1 merged PR@torabian · 1 merged PR@TuffenDuffen · 1 merged PR@tw1nk · 1 merged PR@Twacqwq · 1 merged PR@veeceey · 1 merged PR@venkadeshshiva · 1 merged PR@vffuunnyy · 1 merged PR@Vilsol · 1 merged PR@Vinayak9769 · 1 merged PR@vinhvoit225 · 1 merged PR@vixalie · 1 merged PR@Vovan-VE · 1 merged PR@vxxvvxxv · 1 merged PR@wandercn · 1 merged PR@Watson-Sei · 1 merged PR@wgjtyu · 1 merged PR@williamsjokvist · 1 merged PR@wizzymore · 1 merged PR@Xelus22 · 1 merged PR@xhofe · 1 merged PR@xisuo67 · 1 merged PR@xjh22222228 · 1 changelog credit@XljBear · 1 merged PR@xtrafrancyz · 1 merged PR@xvertile · 1 merged PR@yesgs · 1 merged PR@youngchoan · 1 merged PR@yuseferi · 1 merged PR@Zeiichenfolge · 1 merged PR@zllovesuki · 1 merged PR@zuiwuchang · 1 merged PRBecome a Contributor +Wails Contributors435 contributors · 5,716 commits — thank you!@leaanthony · 541 merged PRs541 merged PRsleaanthony@stffabi · 133 merged PRs133 merged PRsstffabi@fbbdev · 92 changelog credits92 changelog creditsfbbdev@misitebao · 76 merged PRs76 merged PRsmisitebao@atterpac · 59 merged PRs59 merged PRsatterpac@taliesin-ai · 56 merged PRs56 merged PRstaliesin-ai@tmclane · 26 merged PRs26 merged PRs@APshenkin · 23 changelog credits23 changelog credits@bh90210 · 22 merged PRs22 merged PRs@lyimmi · 20 merged PRs20 merged PRs@almas-x · 12 merged PRs@mmghv · 12 merged PRs@popaprozac · 12 merged PRs@ianmjones · 11 merged PRs@IanVS · 10 changelog credits@PylotLight · 9 merged PRs@symball · 9 merged PRs@wayneforrest · 9 merged PRs@OlegGulevskyy · 8 merged PRs@agilgur5 · 7 merged PRs@ndianabasi · 7 merged PRs@rh12503 · 7 merged PRs@5aaee9 · 6 changelog credits@acheong08 · 6 changelog credits@ansxuman · 6 merged PRs@Etesam913 · 6 changelog credits@LGiki · 6 changelog credits@marcus-crane · 6 merged PRs@napalu · 6 merged PRs@raguay · 6 merged PRs@sircodemane · 6 merged PRs@abichinger · 5 merged PRs@ATenderholt · 5 merged PRs@jaesung9507 · 5 changelog credits@mbaklor · 5 merged PRs@oSethoum · 5 merged PRs@Snider · 5 merged PRs@yulesxoxo · 5 changelog credits@akhudek · 4 merged PRs@ddmoney420 · 4 merged PRs@dedo1911 · 4 merged PRs@fdidron · 4 merged PRs@haukened · 4 merged PRs@k-muchmore · 4 commits@marktohark · 4 merged PRs@superDingda · 4 merged PRs@xijaja · 4 merged PRs@adalessa · 3 merged PRs@AkshayKalose · 3 merged PRs@AlbinoDrought · 3 merged PRs@BenoitBotton · 3 merged PRs@COD3HUNT3R · 3 merged PRs@copilot-swe-agent · 3 merged PRs@DeltaLaboratory · 3 merged PRs@DiegPS · 3 merged PRs@FrancescoLuzzi · 3 merged PRs@hi019 · 3 merged PRs@joshbuddy · 3 changelog credits@JulioDRF · 3 changelog credits@Kron · 3 changelog credits@overlordtm · 3 changelog credits@pbnjay · 3 merged PRs@puneetdixit200 · 3 changelog credits@robin-samuel · 3 changelog credits@samstanier · 3 changelog credits@scottopell · 3 changelog credits@smac89 · 3 merged PRs@TheFranconianCoder · 3 merged PRs@Tolfx · 3 changelog credits@triadmoko · 3 changelog credits@TwoNull · 3 merged PRs@Vaelatern · 3 merged PRs@ValentinTrinque · 3 merged PRs@wimaha · 3 merged PRs@x-haose · 3 changelog credits@aangelisc · 2 merged PRs@aayush420 · 2 merged PRs@AbdelhadiSeddar · 2 merged PRs@abtin · 2 changelog credits@achhabra2 · 2 merged PRs@Alex6357 · 2 merged PRs@andrewbytecoder · 2 merged PRs@andywenk · 2 changelog credits@antimatter96 · 2 merged PRs@arifali123 · 2 changelog credits@artooro · 2 merged PRs@avengerweb · 2 merged PRs@Bare7a · 2 merged PRs@BillBuilt · 2 merged PRs@binyamin · 2 changelog credits@biuaxia · 2 merged PRs@Bronya0 · 2 merged PRs@bruxaodev · 2 merged PRs@chenxiao1990 · 2 changelog credits@cuigege · 2 changelog credits@daodao97 · 2 changelog credits@Debdut · 2 changelog credits@duolabmeng6 · 2 merged PRs@edwardbrowncross · 2 changelog credits@fkhadra · 2 merged PRs@Gjergj · 2 merged PRs@gotid · 2 changelog credits@gwynforthewyn · 2 merged PRs@h8gi · 2 changelog credits@hfoxy · 2 merged PRs@hkhere · 2 merged PRs@hotafrika · 2 changelog credits@iamhabbeboy · 2 changelog credits@ilgityildirim · 2 merged PRs@jes0131 · 2 merged PRs@jghiloni · 2 merged PRs@josStorer · 2 merged PRs@Junkher · 2 changelog credits@KiddoV · 2 changelog credits@konez2k · 2 merged PRs@lambdajack · 2 changelog credits@lontten · 2 merged PRs@LukenSkyne · 2 changelog credits@lvyaoting · 2 merged PRs@Maicarons2022 · 2 changelog credits@marcio199226 · 2 merged PRs@matryer · 2 commits@mondy · 2 changelog credits@mrf345 · 2 merged PRs@MyNameIsAres · 2 changelog credits@NanoNik · 2 changelog credits@nerdyslacker · 2 merged PRs@nickisworking · 2 changelog credits@o8x · 2 changelog credits@ParkourLiu · 2 changelog credits@ParvinEyvazov · 2 changelog credits@phoenix147 · 2 merged PRs@pierrejoye · 2 merged PRs@polikow · 2 changelog credits@PPTGamer · 2 merged PRs@prurigro · 2 changelog credits@RALIST · 2 merged PRs@rayshoo · 2 changelog credits@rev42 · 2 changelog credits@riadafridishibly · 2 changelog credits@rnice01 · 2 changelog credits@rxliuli · 2 merged PRs@RyoTagami · 2 changelog credits@SamHennessy · 2 changelog credits@SheetJSDev · 2 changelog credits@shinshin86 · 2 merged PRs@sidwebworks · 2 changelog credits@skamensky · 2 changelog credits@stavros-k · 2 merged PRs@stendler · 2 merged PRs@Taiterbase · 2 changelog credits@takuyahara · 2 merged PRs@TechplexEngineer · 2 changelog credits@testwill · 2 merged PRs@TheGB0077 · 2 merged PRs@thiennguyen93 · 2 changelog credits@thomas-senechal · 2 merged PRs@timkippdev · 2 merged PRs@tiny-craft · 2 merged PRs@tomanagle · 2 changelog credits@tuuzed · 2 merged PRs@Wakeful-Cloud · 2 merged PRs@willdot · 2 merged PRs@windom · 2 merged PRs@wucm667 · 2 changelog credits@wux1an · 2 changelog credits@yz4230 · 2 changelog credits@zandercodes · 2 changelog credits@0x3st3 · 1 merged PR@562589540 · 1 merged PR@aalsuwaidi · 1 merged PR@actions-user · 1 commit@AkagiYui · 1 merged PR@AkimioJR · 1 merged PR@albert-sun · 1 merged PR@alexmat · 1 merged PR@AlienRecall · 1 merged PR@Aliuyanfeng · 1 merged PR@Alpa-1 · 1 changelog credit@amaury-tobias · 1 merged PR@aminya · 1 merged PR@AnalogJ · 3 commits@apzuk3 · 1 merged PR@aranggitoar · 1 merged PR@aschey · 1 merged PR@ayatkyo · 1 changelog credit@azamara · 1 merged PR@Baiyuetribe · 1 merged PR@barats · 1 merged PR@bardiauto · 1 commit@barremian · 1 merged PR@Bas950 · 1 merged PR@bdwyertech · 1 merged PR@bearsh · 1 merged PR@BenAicholtz · 1 merged PR@benjamin-thomas · 1 merged PR@benmccann · 1 merged PR@blacksud0 · 1 merged PR@blinkinglight · 1 merged PR@boreq · 1 merged PR@BradHacker · 1 merged PR@Braincompiler · 1 merged PR@brianetaveras · 1 merged PR@brunoborges · 1 merged PR@bt · 1 merged PR@BuckeyeCoder · 1 merged PR@buddyabaddon · 1 merged PR@c-tonneslan · 1 merged PR@cctv1005s · 1 merged PR@cenan · 1 merged PR@chinenual · 1 merged PR@Chronophylos · 1 merged PR@ckilb · 1 merged PR@cristianrgreco · 1 merged PR@cto-mindset · 1 merged PR@cybertramp · 1 merged PR@damiensedgwick · 1 merged PR@danawoodman · 1 merged PR@darkb0ts · 1 merged PR@db47h · 1 merged PR@deining · 1 merged PR@deltajoe · 1 merged PR@dennypenta · 1 merged PR@derhasi · 1 merged PR@dev-kas · 1 merged PR@diogox · 1 merged PR@diorodrigu · 1 merged PR@dominictwlee · 1 merged PR@doracpphp · 1 merged PR@drc5521 · 1 merged PR@dzmitryi-h · 1 merged PR@edai-git · 1 merged PR@edwargix · 1 merged PR@eft · 1 merged PR@ekkohnet · 1 merged PR@eleclin · 1 changelog credit@elie-g · 1 merged PR@erdemkosk · 1 merged PR@eric-tech01 · 1 merged PR@FalcoG · 1 merged PR@fallendusk · 1 merged PR@fcying · 1 merged PR@fengfengzhidao · 1 merged PR@fengweiqiang · 1 merged PR@FerroO2000 · 1 merged PR@fholmqvist · 1 merged PR@fieu · 1 merged PR@figuerom16 · 1 merged PR@firelizzard18 · 1 merged PR@flin7 · 1 merged PR@flofreud · 1 merged PR@fred21O4 · 1 commit@gardc · 1 merged PR@GargantuaX · 1 merged PR@gelleson · 1 merged PR@giopalma · 1 merged PR@Gornius · 1 merged PR@Grantmartin2002 · 1 merged PR@greymoth-jp · 1 merged PR@Gurkengewuerz · 1 merged PR@gursheyss · 1 merged PR@hidewrong · 1 merged PR@Hudolus · 1 merged PR@i7tsov · 1 merged PR@IAFEnvoy · 1 merged PR@iberflow · 1 merged PR@id88 · 1 merged PR@igogrek · 1 merged PR@ironpark · 1 merged PR@JackDoan · 1 merged PR@jakubpeleska · 1 merged PR@jangler · 1 merged PR@Jarek-SRT · 1 merged PR@jasikpark · 1 merged PR@jaypipes · 1 merged PR@jicg · 1 merged PR@johannes-luebke · 1 merged PR@johnmaguire · 1 merged PR@johnmccabe · 1 merged PR@josexy · 1 merged PR@joshdrake · 1 merged PR@joshhardy · 1 changelog credit@joshm998 · 1 merged PR@joshuapare · 1 merged PR@Juneezee · 1 merged PR@justinmoon · 1 merged PR@k1nho · 1 merged PR@kairo913 · 1 merged PR@Khady · 1 merged PR@kmuchmore · 1 merged PR@kodflow · 1 merged PR@kodumulo · 1 merged PR@kraney · 1 merged PR@Krzysztofz01 · 1 changelog credit@ktsivkov · 1 merged PR@kyoto44 · 1 merged PR@lanzafame · 1 commit@LazyClicks · 1 merged PR@leolee3 · 1 merged PR@levinit · 1 merged PR@lian-yang · 1 merged PR@Licoy · 1 merged PR@Liumingxun · 1 merged PR@liuzi6612 · 1 merged PR@lmb1113 · 1 merged PR@ltcovalt · 1 merged PR@lujihong · 1 changelog credit@lukewatts · 1 merged PR@madflow · 1 merged PR@MagicFun1241 · 1 merged PR@Mahcks · 1 merged PR@Mai-Lapyst · 1 changelog credit@marvinhosea · 1 merged PR@MarvinJWendt · 1 merged PR@mateothegreat · 1 merged PR@matholt · 1 changelog credit@matta · 1 merged PR@mattn · 1 commit@meatherly · 1 merged PR@meeehdi-dev · 1 merged PR@MerIijn · 1 merged PR@mewmew · 1 merged PR@mholt · 1 merged PR@michael-freling · 1 merged PR@miclle · 1 merged PR@Mihara · 1 merged PR@mikeee · 1 merged PR@MikeLINGxZ · 1 merged PR@MikeSchaap · 1 merged PR@MIMBOL22 · 1 merged PR@mJehanno · 1 merged PR@mkwsnyder · 1 merged PR@mmalcek · 1 merged PR@mortenolsrud · 1 merged PR@mr-zlaam · 1 merged PR@msal4 · 1 merged PR@narcilee7 · 1 merged PR@nejos97 · 1 merged PR@Nexus26404 · 1 merged PR@nguyenvanduocit · 1 merged PR@nidib · 1 merged PR@nnashwin · 1 merged PR@noahgorstein · 1 merged PR@northes · 1 merged PR@NullCode1337 · 1 merged PR@occamist · 1 merged PR@ocelotsloth · 1 merged PR@oguz-yilmaz · 1 merged PR@orellazri · 1 merged PR@Orijhins · 1 merged PR@patopesto · 1 merged PR@paulbrickwell · 1 merged PR@Peiratooo · 1 merged PR@pekim · 1 merged PR@pernydev · 1 merged PR@phildrip · 1 merged PR@plutov · 1 merged PR@poisonshell · 1 merged PR@pratikmota · 1 merged PR@qaisjp · 1 merged PR@qq540491950 · 1 changelog credit@radish-miyazaki · 1 merged PR@raitonoberu · 1 merged PR@randalmurphal · 1 changelog credit@rcalixte · 1 merged PR@redisviewer · 1 merged PR@redraskal · 1 merged PR@Rested · 1 merged PR@riannucci · 1 merged PR@riquenunes · 1 merged PR@rlshukhov · 1 merged PR@RonaldinhoL · 1 merged PR@ronen25 · 1 merged PR@rprtr258 · 1 merged PR@ruhuang2001 · 1 merged PR@rynsf · 1 merged PR@s12chung · 1 merged PR@salman0ansari · 1 merged PR@SametKUM · 1 merged PR@seanmtracey · 1 merged PR@seleborg · 1 merged PR@sgosiaco · 1 merged PR@sharkmu · 1 merged PR@sid-the-sloth1 · 1 merged PR@sinspired · 1 merged PR@Sipaha · 1 merged PR@sithembiso · 1 merged PR@SophieAu · 1 merged PR@sqot0 · 1 merged PR@ssahillppatell · 1 merged PR@stanislav-zeman · 1 merged PR@stankovic98 · 1 merged PR@stefpap · 1 merged PR@SupianIDz · 1 merged PR@TAINCER · 1 merged PR@taisei-86 · 1 merged PR@taiseiotsuka · 1 changelog credit@Taiwofolu · 1 merged PR@te5se · 1 merged PR@TekWizely · 1 merged PR@tilak999 · 1 merged PR@tk103331 · 1 merged PR@tong3jie · 1 merged PR@tongque0 · 1 merged PR@torabian · 1 merged PR@TuffenDuffen · 1 merged PR@tw1nk · 1 merged PR@Twacqwq · 1 merged PR@veeceey · 1 merged PR@venkadeshshiva · 1 merged PR@vffuunnyy · 1 merged PR@Vilsol · 1 merged PR@Vinayak9769 · 1 merged PR@vinhvoit225 · 1 merged PR@vixalie · 1 merged PR@Vovan-VE · 1 merged PR@vxxvvxxv · 1 merged PR@wandercn · 1 merged PR@Watson-Sei · 1 merged PR@wgjtyu · 1 merged PR@williamsjokvist · 1 merged PR@wizzymore · 1 merged PR@Xelus22 · 1 merged PR@xhofe · 1 merged PR@xisuo67 · 1 merged PR@xjh22222228 · 1 changelog credit@XljBear · 1 merged PR@xtrafrancyz · 1 merged PR@xvertile · 1 merged PR@yesgs · 1 merged PR@youngchoan · 1 merged PR@yuseferi · 1 merged PR@Zeiichenfolge · 1 merged PR@zllovesuki · 1 merged PR@zuiwuchang · 1 merged PRBecome a Contributor From f9cb2fc1cb47a09f7137ac6c6e07199812fc00fa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 7 Jul 2026 15:55:24 +0000 Subject: [PATCH 15/29] chore(v3): bump to v3.0.0-alpha2.116 and update changelog [skip ci] --- docs/src/content/docs/changelog.mdx | 5 +++++ v3/UNRELEASED_CHANGELOG.md | 1 - v3/internal/version/version.txt | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/src/content/docs/changelog.mdx b/docs/src/content/docs/changelog.mdx index 1265a05e264..32fbc6caa33 100644 --- a/docs/src/content/docs/changelog.mdx +++ b/docs/src/content/docs/changelog.mdx @@ -31,6 +31,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 */ ## [Unreleased] +## v3.0.0-alpha2.116 - 2026-07-07 + +## Added +- Update FAQ documentation to focus on Wails v3 features and guidance in [PR](https://github.com/wailsapp/wails/pull/5763) by @taliesin-ai + ## v3.0.0-alpha2.115 - 2026-07-06 ## Fixed diff --git a/v3/UNRELEASED_CHANGELOG.md b/v3/UNRELEASED_CHANGELOG.md index 96cd47f1cfd..2ebe4eb0b50 100644 --- a/v3/UNRELEASED_CHANGELOG.md +++ b/v3/UNRELEASED_CHANGELOG.md @@ -17,7 +17,6 @@ After processing, the content will be moved to the main changelog and this file ## Added -- Update FAQ documentation to focus on Wails v3 features and guidance in [PR](https://github.com/wailsapp/wails/pull/5763) by @taliesin-ai ## Changed diff --git a/v3/internal/version/version.txt b/v3/internal/version/version.txt index 238e2a87203..3d0ac52e508 100644 --- a/v3/internal/version/version.txt +++ b/v3/internal/version/version.txt @@ -1 +1 @@ -v3.0.0-alpha2.115 \ No newline at end of file +v3.0.0-alpha2.116 \ No newline at end of file From 7d90315a88ef29724c24d60e786c181aa271f765 Mon Sep 17 00:00:00 2001 From: taliesin-ai Date: Wed, 8 Jul 2026 07:16:30 +1000 Subject: [PATCH 16/29] chore(.github): accept v3 bug reports, add triage dropdowns, wire up auto-labelers (#5754) * chore(.github): accept v3 bug reports, add triage dropdowns, refresh templates - bug_report.yml: remove the 'no v3 bug reports' banner (v3 bug reports are accepted), add required 'Wails version family' (v3/v2) and 'Operating System' dropdowns, ask for wails3 doctor output (wails doctor for v2), fix v2-era links and mark the v2 binding tests reference as v2-specific alongside the v3 generator path - feature_request.yml: replace the stale Wails v1 notice with the discussion-first note (Discord / GitHub Discussions), matching CONTRIBUTING.md - documentation.yml: point the contribution guidelines link at https://v3.wails.io/contributing/ - config.yml: disable blank issues, align the Discord invite with CONTRIBUTING.md - file-labeler.yml: convert to the actions/labeler v5 configuration format - delete legacy Probot .github/stale.yml (superseded by workflows/stale-issues.yml using actions/stale@v9) - add CODE_OF_CONDUCT.md (Contributor Covenant v2.1) * ci: wire up issue and PR auto-labelers Consumes the previously orphaned .github/issue-labeler.yml (github/issue-labeler@v3.4, non-versioned regex format) and .github/file-labeler.yml (actions/labeler@v5) configs. * docs: point enhancement guidance at the WEP process The Wails Enhancement Proposal process (v3/wep) was not referenced anywhere contributors actually look. Reference it from the feature request template, CONTRIBUTING.md and the v3 docs site (contributing page gets a step-by-step summary, feedback page a pointer). Also fixes the stale feedback-guide link in CONTRIBUTING.md (/getting-started/feedback/ -> /feedback/). * chore: align Code of Conduct contact with the published site CoC The v2 website has published a Contributor Covenant CoC at wails.io/coc with coc@wails.io as the enforcement contact; use the same address in the repo-level file. * docs: make GitHub Discussions the official venue for WEP discussion Proposals are discussed in the Enhancement Proposals category on GitHub Discussions. Discord remains available for informal chat but is no longer the primary venue. Adds an explicit discuss-first step to the WEP README's Idea Initiation section. * docs(wep): add index, statuses, numbering and platform section to the WEP process Implements the process improvements agreed with the maintainer: - WEP Index table in the README (number, title, status, discussion, implementation) with documented status values - Metadata header in the template (number, status, discussion link, implementor) and a Platform Considerations section - 'Do I Need a WEP?' section defining when a proposal is required - Support is now measured by upvotes on the Enhancement Proposals discussion rather than thumbs-ups on a draft PR - Decisions recorded in a standard comment format; rejected proposals stay findable via the index - Accepted proposals not started within 3 months become up for grabs - Migrated the existing proposal as WEP 0001 (dir renamed to 0001-titlebar-buttons, header added, status Implemented via #3508) * docs(wep): the WEP PR is the single discussion venue Per maintainer decision: proposals are discussed on the WEP PR itself (comments for feedback, thumbs-up reactions for support), not in a separate discussion thread. Pre-proposal ideas can optionally be floated in the Ideas category on GitHub Discussions or on Discord. Index column Discussion renamed to Proposal. --------- Co-authored-by: taliesin-ai --- .github/ISSUE_TEMPLATE/bug_report.yml | 41 ++++-- .github/ISSUE_TEMPLATE/config.yml | 4 +- .github/ISSUE_TEMPLATE/documentation.yml | 2 +- .github/ISSUE_TEMPLATE/feature_request.yml | 2 +- .github/file-labeler.yml | 73 ++++++---- .github/stale.yml | 36 ----- .github/workflows/labeler.yml | 36 +++++ CODE_OF_CONDUCT.md | 132 ++++++++++++++++++ CONTRIBUTING.md | 2 +- docs/src/content/docs/contributing.mdx | 14 +- docs/src/content/docs/feedback.mdx | 1 + v3/wep/README.md | 45 +++++- v3/wep/WEP_TEMPLATE.md | 13 +- .../proposal.md | 8 +- 14 files changed, 320 insertions(+), 89 deletions(-) delete mode 100644 .github/stale.yml create mode 100644 .github/workflows/labeler.yml create mode 100644 CODE_OF_CONDUCT.md rename v3/wep/proposals/{titlebar-buttons => 0001-titlebar-buttons}/proposal.md (94%) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 76ea14f1a3c..ce34d8f804a 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -7,25 +7,46 @@ body: - type: markdown attributes: value: | - ***Please note: No bug reports are currently being accepted for Wails v3*** - ***Please note: No bug reports are currently being accepted for Wails v3*** - ***Please note: No bug reports are currently being accepted for Wails v3*** Before submitting this issue, please do the following: - Do a web search for your error. This usually leads to a much better understanding of the issue. - - Prove that the error is indeed a Wails bug and not an application bug, with a specific set of steps to reproduce. + - Prove that the error is indeed a Wails bug and not an application bug, with a specific set of steps to reproduce. - Search the issue tracker using [this link](https://github.com/wailsapp/wails/issues?q=is%3Aissue+). - Search the [discussion forums](https://github.com/wailsapp/wails/discussions?discussions_q=type+your+issue+here). - - Read the [Troubleshooting Guide](https://wails.io/docs/next/guides/troubleshooting). + - For v3, check the [FAQ](https://v3.wails.io/faq/) and the [feedback guide](https://v3.wails.io/feedback/). For v2, read the [Troubleshooting Guide](https://wails.io/docs/guides/troubleshooting). - Create a [Minimal Reproducible Example](https://stackoverflow.com/help/minimal-reproducible-example) and link to it in the issue. - - If your issue is related to TypeScript generation, please open a ticket and create a PR with a failing test case. - TS tests can be found [here](https://github.com/wailsapp/wails/tree/master/v2/internal/binding/binding_test). Remember to add - your test to the `binding_test.go` file. - - Try to fix it yourself. Keep a list of things you have done to fix the problem. + - If your issue is related to the bindings or TypeScript generation, please open a ticket and create a PR with a failing test case. + For v3, the binding generator tests live [here](https://github.com/wailsapp/wails/tree/master/v3/internal/generator). + For v2 only, TS tests can be found [here](https://github.com/wailsapp/wails/tree/master/v2/internal/binding/binding_test). Remember to add your test to the `binding_test.go` file. + - Try to fix it yourself. Keep a list of things you have done to fix the problem. If after doing all the above, the problem remains, please continue with this ticket providing *all* the information requested. Bug reports that do not follow these steps will likely be closed, so please help us to help you. + - type: dropdown + id: version_family + attributes: + label: Wails version family + description: Which major version of Wails are you using? + options: + - v3 + - v2 + validations: + required: true + - type: dropdown + id: operating-system + attributes: + label: Operating System + description: Which operating system does the bug occur on? + options: + - Windows + - macOS + - Linux + - iOS (experimental) + - Android (experimental) + - Multiple / Other + validations: + required: true - type: textarea id: description attributes: @@ -75,7 +96,7 @@ body: id: systemdetails attributes: label: System Details - description: Please add the output of `wails doctor`. + description: Please add the output of `wails3 doctor` (for v2 projects, use `wails doctor`). render: shell validations: required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index e3632ecaae8..299ec7c4441 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,7 +1,7 @@ -blank_issues_enabled: true +blank_issues_enabled: false contact_links: - name: Discord Chat - url: https://discord.gg/BrRSWTaxVK + url: https://discord.gg/JDdSxwjhGf about: Ask questions and discuss with other Wails users in real time. - name: GitHub Community Discussions diff --git a/.github/ISSUE_TEMPLATE/documentation.yml b/.github/ISSUE_TEMPLATE/documentation.yml index c1259587b66..997fb40f83d 100644 --- a/.github/ISSUE_TEMPLATE/documentation.yml +++ b/.github/ISSUE_TEMPLATE/documentation.yml @@ -20,7 +20,7 @@ body: attributes: label: Have you read the Documentation Contribution Guidelines? options: - - label: I have read the [Documentation Contribution Guidelines](https://wails.io/community-guide#ways-of-contributing). + - label: I have read the [Documentation Contribution Guidelines](https://v3.wails.io/contributing/). required: true - type: textarea diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index b346c0bdc99..67d5ab0167e 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -8,7 +8,7 @@ body: attributes: value: | Before opening a feature request, please check the [Roadmap](https://github.com/wailsapp/wails/discussions/1484) to see if it has already been requested. - ***Please note: No new feature requests are being accepted for Wails v1*** + ***Please note: Enhancements should be discussed in [Ideas](https://github.com/wailsapp/wails/discussions/categories/ideas) on GitHub Discussions or on [Discord](https://discord.gg/JDdSxwjhGf) before opening a feature request. Substantial new functionality should be submitted as a [Wails Enhancement Proposal (WEP)](https://github.com/wailsapp/wails/blob/master/v3/wep/README.md). See the [feedback guide](https://v3.wails.io/feedback/) for details.*** - type: textarea attributes: diff --git a/.github/file-labeler.yml b/.github/file-labeler.yml index 69494cbae0d..d709c68139c 100644 --- a/.github/file-labeler.yml +++ b/.github/file-labeler.yml @@ -1,44 +1,63 @@ -# File path specific labels +# File path specific labels (actions/labeler v5 configuration format) v2-only: - - 'v2/**/*' + - changed-files: + - any-glob-to-any-file: + - 'v2/**/*' v3-alpha: - - 'v3/**/*' + - changed-files: + - any-glob-to-any-file: + - 'v3/**/*' windows: - - '**/*_windows.go' - - 'v2/internal/frontend/desktop/windows/**/*' + - changed-files: + - any-glob-to-any-file: + - '**/*_windows.go' + - 'v2/internal/frontend/desktop/windows/**/*' macos: - - '**/*_darwin.go' - - 'v2/internal/frontend/desktop/darwin/**/*' + - changed-files: + - any-glob-to-any-file: + - '**/*_darwin.go' + - 'v2/internal/frontend/desktop/darwin/**/*' linux: - - '**/*_linux.go' - - 'v2/internal/frontend/desktop/linux/**/*' + - changed-files: + - any-glob-to-any-file: + - '**/*_linux.go' + - 'v2/internal/frontend/desktop/linux/**/*' cli: - - 'v2/cmd/**/*' - - 'v3/cmd/**/*' - - '**/cli/**/*' - - '**/commands/**/*' - + - changed-files: + - any-glob-to-any-file: + - 'v2/cmd/**/*' + - 'v3/cmd/**/*' + - '**/cli/**/*' + - '**/commands/**/*' + documentation: - - '**/*.md' - - 'docs/**/*' - - 'website/**/*' - - 'mkdocs-website/**/*' + - changed-files: + - any-glob-to-any-file: + - '**/*.md' + - 'docs/**/*' + - 'website/**/*' + - 'mkdocs-website/**/*' templates: - - '**/templates/**/*' - - '**/template/**/*' + - changed-files: + - any-glob-to-any-file: + - '**/templates/**/*' + - '**/template/**/*' runtime: - - '**/runtime/**/*' - - 'v2/internal/runtime/**/*' - - 'v3/internal/runtime/**/*' - -bindings: - - 'v2/internal/binding/**/*' - - 'v3/internal/generator/**/*' + - changed-files: + - any-glob-to-any-file: + - '**/runtime/**/*' + - 'v2/internal/runtime/**/*' + - 'v3/internal/runtime/**/*' +bindings: + - changed-files: + - any-glob-to-any-file: + - 'v2/internal/binding/**/*' + - 'v3/internal/generator/**/*' diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index d8bcc83ec8c..00000000000 --- a/.github/stale.yml +++ /dev/null @@ -1,36 +0,0 @@ -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 45 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 10 -# Issues with these labels will never be considered stale -exemptLabels: - - pinned - - security - - onhold - - inprogress - - "Selected For Development" - - bug - - enhancement - - v3-alpha - - high-priority -# Label to use when marking an issue as stale -staleLabel: "stale" -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs within the next 10 days. - - If this issue is still relevant, please add a comment to keep it open. - Thank you for your contributions. -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: > - This issue has been automatically closed due to lack of activity. - Please feel free to reopen it if it's still relevant. -exemptMilestones: true -exemptAssignees: true -# Only mark issues (not PRs) -only: issues -# Exempt issues created before a certain date -exemptCreatedBefore: "2024-01-01T00:00:00Z" -# Starts checking issues only after the specified date -startDate: "2025-06-01T00:00:00Z" diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 00000000000..b402be4ef00 --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,36 @@ +name: Auto Labeler + +on: + issues: + types: [opened, edited] + pull_request_target: + +jobs: + issue-labeler: + name: Label issues + if: github.event_name == 'issues' + runs-on: ubuntu-latest + permissions: + contents: read + issues: write + steps: + - uses: github/issue-labeler@v3.4 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + configuration-path: .github/issue-labeler.yml + enable-versioned-regex: 0 + include-title: 1 + + pr-labeler: + name: Label pull requests + if: github.event_name == 'pull_request_target' + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write + steps: + - uses: actions/labeler@v5 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + configuration-path: .github/file-labeler.yml + sync-labels: false diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000000..3259accfbc4 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,132 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances + of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official email address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +coc@wails.io. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1f54b54d054..5f981743edd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,7 +15,7 @@ Thanks for your interest in contributing! Wails has two active tracks. Pick the - Docs: [v3.wails.io](https://v3.wails.io/). - Detailed contributor guide: [v3.wails.io/contributing](https://v3.wails.io/contributing/). - Changelog: v3 entries are added automatically from your PR on merge. To control the wording, add your own entry to `v3/UNRELEASED_CHANGELOG.md` and the automation will use it instead. -- **Enhancements require prior discussion** on [Discord](https://discord.gg/JDdSxwjhGf) — see the [feedback guide](https://v3.wails.io/getting-started/feedback/). +- **Enhancements require prior discussion** in [Ideas](https://github.com/wailsapp/wails/discussions/categories/ideas) on GitHub Discussions (see the [feedback guide](https://v3.wails.io/feedback/)). Substantial new functionality goes through the [Wails Enhancement Proposal (WEP) process](v3/wep/README.md). ## Pull request checklist diff --git a/docs/src/content/docs/contributing.mdx b/docs/src/content/docs/contributing.mdx index 841c3028298..607b24a1197 100644 --- a/docs/src/content/docs/contributing.mdx +++ b/docs/src/content/docs/contributing.mdx @@ -38,6 +38,18 @@ Contribute code through pull requests: - Performance improvements - Tests +### 4. Propose an Enhancement (WEP) + +Substantial new functionality goes through the Wails Enhancement Proposal (WEP) process. It keeps feature development transparent and ensures every accepted proposal has community support and an implementor. In short: + +1. Optionally float your idea in the [Ideas](https://github.com/wailsapp/wails/discussions/categories/ideas) category on GitHub Discussions or on [Discord](https://discord.gg/JDdSxwjhGf) to gauge interest. +2. Copy [`v3/wep/WEP_TEMPLATE.md`](https://github.com/wailsapp/wails/blob/master/v3/wep/WEP_TEMPLATE.md) to `v3/wep/proposals//proposal.md` and fill in every section. +3. Open a draft pull request titled `[WEP] ` containing only the proposal. The PR is the official place to discuss it. +4. Gather feedback and support (comments and thumbs-up reactions on the PR). Allow at least two weeks for discussion, and agree on who will implement the proposal. +5. Mark the PR ready for review. The maintainers make the final decision: accepted proposals are assigned a WEP number and merged. + +The full process is documented in [`v3/wep/README.md`](https://github.com/wailsapp/wails/blob/master/v3/wep/README.md). + ## Getting Started ### Fork and Clone @@ -241,7 +253,7 @@ npm run dev ### Code of Conduct -Be respectful, inclusive, and professional. We're all here to build great software together. +Be respectful, inclusive, and professional. We're all here to build great software together. See the [Code of Conduct](https://github.com/wailsapp/wails/blob/master/CODE_OF_CONDUCT.md) for details. ## Recognition diff --git a/docs/src/content/docs/feedback.mdx b/docs/src/content/docs/feedback.mdx index c56de054982..6c426d759db 100644 --- a/docs/src/content/docs/feedback.mdx +++ b/docs/src/content/docs/feedback.mdx @@ -47,6 +47,7 @@ discussions before creating new ones. Here are the different ways to contribute: - Clearly describe the feature and the problem it solves. - Feel free to also discuss ideas in the [#v3](https://discord.gg/bdj28QNHmT) channel on Discord. + - Substantial new functionality goes through the [Wails Enhancement Proposal (WEP) process](https://github.com/wailsapp/wails/blob/master/v3/wep/README.md), a structured proposal that is discussed with the community on its pull request before being accepted for implementation. See the [contributing guide](/contributing/#4-propose-an-enhancement-wep) for a summary. </TabItem> diff --git a/v3/wep/README.md b/v3/wep/README.md index 63ea57c980a..55be7bfad90 100644 --- a/v3/wep/README.md +++ b/v3/wep/README.md @@ -11,10 +11,20 @@ Following this structured approach ensures transparency, community involvement, **NOTE**: This process is for proposing new functionality. For bug fixes, documentation improvements, and other minor changes, please follow the standard PR process. +## Do I Need a WEP? + +Not every change needs a proposal. As a rule of thumb: + +- **WEP required**: new public API, changes to existing API behaviour, breaking changes, new cross-platform functionality, or anything involving significant platform-specific work. +- **No WEP needed**: bug fixes, documentation, small additive options, internal refactoring. Use the standard PR process. + +If you are unsure, ask in the [Ideas](https://github.com/wailsapp/wails/discussions/categories/ideas) category on GitHub Discussions or on [Discord](https://discord.gg/JDdSxwjhGf). + ## Submission of Proposal ### 1. Idea Initiation +- **Gauge Interest (optional)**: Before writing a proposal, consider floating the idea in the [Ideas](https://github.com/wailsapp/wails/discussions/categories/ideas) category on GitHub Discussions or on [Discord](https://discord.gg/JDdSxwjhGf). It can catch overlap with existing plans before you invest time in a write-up. - **Document Your Idea**: - Create a new directory: `v3/wep/proposals/<name of proposal>` with the name of your proposal. - Copy the WEP template located in `v3/wep/WEP_TEMPLATE.md` into `v3/wep/proposals/<name of proposal>/proposal.md`. @@ -30,9 +40,9 @@ Following this structured approach ensures transparency, community involvement, ### 3. Community Discussion -- **Share Your Proposal**: Present your proposal to the Wails community. Try to get support for the proposal to increase the chances of acceptance. If you are on the discord server, create a post in the [`#enhancement-proposals`](https://discord.gg/TA8kbQds95) channel. -- **Gather Feedback**: Refine your proposal based on community input. All feedback should be added as comments in the PR. -- **Show Support**: Agreement with the proposal should be indicated by adding a thumbs-up emoji to the PR. The more thumbs-up emojis, the more likely the proposal will be accepted. +- **Share Your Proposal**: The PR is the official place to discuss the proposal. Present it to the Wails community and try to get support for it to increase the chances of acceptance. If you are on the discord server, share it in the [`#enhancement-proposals`](https://discord.gg/TA8kbQds95) channel. +- **Gather Feedback**: Refine your proposal based on community input. All feedback should be added as comments on the PR so the discussion stays with the document. +- **Show Support**: Agreement with the proposal should be indicated by adding a thumbs-up reaction to the PR. The more support a proposal has, the more likely it is to be accepted. - **Iterate**: Make changes to the proposal based on feedback. - **Agree on an Implementor**: To avoid stagnant proposals, we require someone agree to implement it. This could be the proposer. - **Ready for Review**: Once the proposal is ready for review, change the PR status to `Ready for Review`. @@ -41,11 +51,20 @@ A minimum of 2 weeks should be given for community feedback and discussion. ### 4. Final Decision -- **Decision**: The Wails maintainers will make a final decision on the proposal based on community feedback and the proposal's merits. - - If accepted, the proposal will be assigned a WEP number and the PR merged. - - If rejected, the reasons will be provided in the PR comments. +- **Decision**: The Wails maintainers will make a final decision on the proposal based on community feedback and the proposal's merits. The decision is recorded as a comment on the PR in this format: + + ``` + **Decision**: Accepted / Rejected + **Decided by**: @maintainer(s) + **Rationale**: A short explanation of the decision. + ``` + +- **If accepted**: + - The proposal is assigned the next WEP number and its directory renamed to `NNNN-<name of proposal>`. + - The proposal's status is updated to `Accepted`, it is added to the [WEP Index](#wep-index), and the PR is merged. +- **If rejected**: The PR is closed and the proposal recorded in the [WEP Index](#wep-index) with a link to the decision, so the outcome is easy to find if the idea comes up again. -*NOTE*: If a proposal has not met the required support or has been inactive for more than a month, it may be closed. +*NOTE*: If a proposal has not met the required support or has been inactive for more than a month, it may be closed as `Withdrawn`. ## Implementation of Proposal @@ -66,4 +85,16 @@ Once a proposal has been accepted and an implementation plan has been decided, t - **Review of PR**: Address any review comments. - **Merge**: The PR will be merged after satisfactory review. +- **Update the Status**: When the implementation PR merges, update the proposal's status to `Implemented` and add the implementation PR to the [WEP Index](#wep-index). + +*NOTE*: Acceptance requires a committed implementor. If implementation has not started within 3 months of acceptance, the proposal is marked as up for grabs in the WEP Index and anyone may take it on. + +## WEP Index + +| WEP | Title | Status | Proposal | Implementation | +|-----|-------|--------|----------|----------------| +| [0001](proposals/0001-titlebar-buttons/proposal.md) | Customising Window Controls | Implemented | [#3508](https://github.com/wailsapp/wails/pull/3508) | [#3508](https://github.com/wailsapp/wails/pull/3508) | + +**Statuses**: `Draft` (under discussion), `Accepted` (approved, awaiting implementation), `Implemented` (shipped), `Rejected` (declined), `Withdrawn` (closed by the author or for inactivity). + The WEP process ensures structured and collaborative enhancement of Wails. Adhere to this guide to contribute effectively to the project's growth. \ No newline at end of file diff --git a/v3/wep/WEP_TEMPLATE.md b/v3/wep/WEP_TEMPLATE.md index c822c236177..dc2140ede72 100644 --- a/v3/wep/WEP_TEMPLATE.md +++ b/v3/wep/WEP_TEMPLATE.md @@ -2,8 +2,12 @@ ## Title +**WEP Number**: (leave blank, assigned on acceptance) +**Status**: Draft **Author**: [Your Name] -**Created**: [YYYY-MM-DD] +**Created**: [YYYY-MM-DD] +**Discussion**: [optional link to any prior discussion of the idea] +**Implementor**: [who has agreed to implement this, may be the author] ## Summary @@ -21,6 +25,13 @@ Provide a detailed description of the proposed feature, including: - Implementation steps - Potential impact on existing functionality +## Platform Considerations + +Describe how the feature behaves on each platform (Windows, macOS, Linux, and mobile where relevant). Include: + +- Platform-specific behaviour, limitations or API differences +- Any platform where the feature is unsupported, and why + ## Pros/Cons List the pros and cons of the proposed solution. diff --git a/v3/wep/proposals/titlebar-buttons/proposal.md b/v3/wep/proposals/0001-titlebar-buttons/proposal.md similarity index 94% rename from v3/wep/proposals/titlebar-buttons/proposal.md rename to v3/wep/proposals/0001-titlebar-buttons/proposal.md index 8bd6b8c4fdc..c699f8d1c2d 100644 --- a/v3/wep/proposals/titlebar-buttons/proposal.md +++ b/v3/wep/proposals/0001-titlebar-buttons/proposal.md @@ -2,8 +2,12 @@ ## Customising Window Controls in Wails -**Author**: Lea Anthony -**Created**: 2024-05-20 +**WEP Number**: 0001 +**Status**: Implemented +**Author**: Lea Anthony +**Created**: 2024-05-20 +**Proposal**: [#3508](https://github.com/wailsapp/wails/pull/3508) +**Implementor**: Lea Anthony ## Summary From 5cd2be6e84da9116a6ca8e234277754b18c68cea Mon Sep 17 00:00:00 2001 From: catinkayak <wayneforrest@gmail.com> Date: Wed, 8 Jul 2026 09:27:37 +1200 Subject: [PATCH 17/29] fix(v3/windows): keep host-owned rasterization scale under visual hosting (#5761) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(v3/windows): keep host-owned scale under visual hosting #5734 re-enabled WebView2 automatic monitor-scale detection (ShouldDetectMonitorScaleChanges) unconditionally to fix the mixed-DPI GPU-process crash. That is correct for the default windowed (HWND-child) hosting mode, but wrong under UseVisualHosting (COREWEBVIEW2_HOSTING_MODE_WINDOW_TO_VISUAL): the content is a DirectComposition visual decoupled from the child HWND that automatic detection tracks, so on a mixed-DPI monitor cross detection reads the wrong monitor and settles the visual on a stale rasterization scale -- the whole UI renders shrunk (small fonts) until something forces a re-layout. Gate the detection-enable on hosting mode: - windowed: enable detection (unchanged; keeps #5734's crash fix) - visual hosting: explicitly disable detection so the host owns the scale via resyncWebviewRasterizationScale (monitorScaleDetectionOn stays false). The module leaves detection at its platform default (enabled), so visual hosting must disable it explicitly -- merely skipping the enable would leave both Edge's detection and the host resync writing the scale (the two-writer race #5734 targets). Host-owned scale is reliable now that the by-value PutRasterizationScale bug (#5701) is fixed, and is the documented contract (WebView2Feedback #3665: detection-off is correct when the host puts the scale on every change). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(v3/windows): derive monitorScaleDetectionOn from actual controller state Query GetShouldDetectMonitorScaleChanges after the Put and set the single-writer flag from the controller's real state, not from the value requested. A failed PutShouldDetectMonitorScaleChanges could leave detection at its platform default (enabled) while monitorScaleDetectionOn stayed false, so resyncWebviewRasterizationScale would keep writing PutRasterizationScale concurrently with Edge — the two-writer scale(0,0) race this change removes. If the query itself fails, assume detection may be on and stand the host resync down. Addresses review feedback on #5761. --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: Lea Anthony <lea.anthony@gmail.com> --- v3/pkg/application/webview_window_windows.go | 67 ++++++++++++++------ 1 file changed, 49 insertions(+), 18 deletions(-) diff --git a/v3/pkg/application/webview_window_windows.go b/v3/pkg/application/webview_window_windows.go index 2b3594bef5e..9916913da98 100644 --- a/v3/pkg/application/webview_window_windows.go +++ b/v3/pkg/application/webview_window_windows.go @@ -2383,28 +2383,59 @@ func (w *windowsWebviewWindow) setupChromium() { chromium.Embed(w.hwnd) - // Ensure automatic monitor-scale detection is on. Published webview2 - // module versions up to v1.0.27 disable ShouldDetectMonitorScaleChanges - // at controller creation (the in-repo module no longer does), leaving - // rasterization-scale updates entirely to the host's WM_DPICHANGED - // handling. In that - // host-managed mode, dragging the window across a mixed-DPI monitor - // boundary can make the embedded browser compute a degenerate - // scale(0,0) transform (ui/gfx/geometry/transform.cc NOTREACHED - // "is not invertible"); the resulting compositor frame is rejected by - // the viz process as a malformed Mojo message, which kills the GPU - // process, and after enough repeat kills the browser process gives up - // ("GPU process isn't usable. Goodbye.") taking the controller with - // it. Detection-on is the WebView2 default and keeps monitor-cross - // scale updates inside Edge, where that path is actually exercised; - // bounds stay raw-pixels. While detection is on, the host-side - // WM_DPICHANGED / un-minimise scale resyncs stand down (see + // Configure who owns the WebView2 rasterization scale on a monitor-DPI + // change. Two hosting modes need opposite answers: + // + // Windowed (HWND-child) hosting — the default: enable automatic + // monitor-scale detection. Published webview2 module versions up to + // v1.0.27 disabled ShouldDetectMonitorScaleChanges at controller creation + // (the in-repo module no longer does), leaving rasterization-scale updates + // entirely to the host's WM_DPICHANGED handling. In that host-managed mode, + // dragging the window across a mixed-DPI monitor boundary can make the + // embedded browser compute a degenerate scale(0,0) transform + // (ui/gfx/geometry/transform.cc NOTREACHED "is not invertible"); the + // resulting compositor frame is rejected by the viz process as a malformed + // Mojo message, which kills the GPU process, and after enough repeat kills + // the browser process gives up ("GPU process isn't usable. Goodbye.") + // taking the controller with it. Detection-on is the WebView2 default and + // keeps monitor-cross scale updates inside Edge, where that path is + // actually exercised; bounds stay raw-pixels. While detection is on, the + // host-side WM_DPICHANGED / un-minimise scale resyncs stand down (see // monitorScaleDetectionOn) so the scale has exactly one writer. + // + // Visual hosting (UseVisualHosting -> COREWEBVIEW2_HOSTING_MODE_WINDOW_TO_VISUAL): + // the content is a DirectComposition visual, decoupled from the child HWND + // that automatic detection tracks. Across a mixed-DPI boundary detection + // then reads the wrong monitor and settles the visual on a stale scale, so + // the whole UI renders shrunk. There the host must own the scale via + // resyncWebviewRasterizationScale (correct per WebView2Feedback #3665, and + // reliable now that the by-value PutRasterizationScale bug is fixed). The + // module leaves detection at its platform default (enabled), so visual + // hosting must disable it *explicitly* — merely skipping the enable would + // leave detection on AND the host resync running, i.e. two writers racing, + // which is the scale(0,0) crash above. With detection off the host owns the + // scale via resyncWebviewRasterizationScale. + // + // Whichever mode: monitorScaleDetectionOn is set from the controller's + // *actual* ShouldDetectMonitorScaleChanges after the Put, never from the + // value we asked for. A failed Put can leave detection at its platform + // default (enabled) while we intended off; keying the flag off intent would + // then run the host resync against a detecting Edge — the exact two-writer + // race this guards against. The host stands down whenever detection is on so + // the rasterization scale keeps exactly one writer. if controller := chromium.GetController(); controller != nil { if c3 := controller.GetICoreWebView2Controller3(); c3 != nil { - if err := c3.PutShouldDetectMonitorScaleChanges(true); err != nil { - globalApplication.error("webview2: enable monitor scale detection: %v", err) + wantDetection := !globalApplication.options.Windows.UseVisualHosting + if err := c3.PutShouldDetectMonitorScaleChanges(wantDetection); err != nil { + globalApplication.error("webview2: set monitor scale detection to %v: %v", wantDetection, err) + } + if on, err := c3.GetShouldDetectMonitorScaleChanges(); err == nil { + w.monitorScaleDetectionOn = on } else { + // Can't confirm the state: assume detection may be on and stand + // the host resync down. A cosmetic stale scale beats risking the + // two-writer GPU-process crash. + globalApplication.error("webview2: query monitor scale detection: %v", err) w.monitorScaleDetectionOn = true } } From aea50fbdb46c09c30ccb0c419662af84c183897b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <github-actions[bot]@users.noreply.github.com> Date: Tue, 7 Jul 2026 21:28:15 +0000 Subject: [PATCH 18/29] =?UTF-8?q?chore(changelog):=20auto-add=20entry=20fo?= =?UTF-8?q?r=20PR=20#5761=20=E2=80=94=20fix(v3/windows):=20keep=20host-own?= =?UTF-8?q?ed=20rasterization=20scale=20under=20visual=20hosting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v3/UNRELEASED_CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/v3/UNRELEASED_CHANGELOG.md b/v3/UNRELEASED_CHANGELOG.md index 2ebe4eb0b50..cf1e65019ab 100644 --- a/v3/UNRELEASED_CHANGELOG.md +++ b/v3/UNRELEASED_CHANGELOG.md @@ -20,6 +20,7 @@ After processing, the content will be moved to the main changelog and this file ## Changed <!-- Changes in existing functionality --> +- Configure WebView2 monitor-scale detection based on UseVisualHosting in [PR](https://github.com/wailsapp/wails/pull/5761) by @wayneforrest ## Fixed <!-- Bug fixes --> From 25137cef7e8c3ee4781aa735d497d7b3438c0feb Mon Sep 17 00:00:00 2001 From: Savely Krasovsky <dev.wkxqk@fastmail.com> Date: Wed, 8 Jul 2026 00:23:21 +0200 Subject: [PATCH 19/29] feat(windows): add support for custom hit-test logic for non-client regions (#5462) * feat(windows): add support for custom hit-test logic for non-client regions on Windows * fix(windows): address review comments * refactor: simplify non-client hit test handling logic * fix: remove handling for non-client right mouse button events * feat(windows): add cursor handling * feat(windows): handle right-click on window caption to display the system menu * fix(windows): enable non-client region tracking only is the feature is enabled * fix(windows): preserve native hover state for non-client buttons * fix(windows): address review comments * fix(runtime): rename app region css tracking internals * chore(windows): document non-client hit test ordering * feat(runtime): add runtime-config-ready event to improve initialization consistency * feat(windows): document `NonClientRegionSupport` and `WebView2CompositionHosting` options with examples and video * docs: correct video asset path in frameless windows documentation * docs: clarify `WebView2CompositionHosting` experimental status * docs: fix alignment issue in `WebView2CompositionHosting` example * docs: clarify Snap Layouts behavior and add reference to native non-client regions * docs(windows): replace `--wails-app-region` with `--wails-non-client-region` in examples and descriptions * fix(runtime): ensure runtime initialization checks for DOM environment * [skip ci] Publish @wailsio/runtime v3.0.0-alpha.96 * fix(windows): add `extendFrameIntoClientArea` helper for improved frame extension logic * fix(windows): clarify 32-bit API limitations and retain 64-bit `SetWindowLongPtrW`/`GetWindowLongPtrW` usage * fix(windows): handle `WM_SETCURSOR` with `compositionCursor` to ensure correct cursor display in client area * feat(webview2): add support for `ICoreWebView2NavigationStartingEventHandler` and navigation starting event handling * fix(webview2): add fallback to HWND controller when composition hosting fails and implement resource cleanup * fix(windows): use DPI-aware system metrics for non-client area calculations and remove hardcoded resize border fields * fix(webview2): improve DPI handling for composition-hosted and HWND-hosted WebViews, ensure correct rasterization scale updates * fix(windows): track mouse leave events in non-client and client areas to improve input handling * fix(runtime): add comment to clarify * [skip ci] Publish @wailsio/runtime v3.0.0-alpha.97 * fix(windows): remove duplicate non-client state * chore(v3): bump webview2 to v1.0.24 * chore(v3): bump to v3.0.0-alpha2.114 and update changelog [skip ci] * [skip ci] Publish @wailsio/runtime v3.0.0-alpha.96 * chore(v3): bump to v3.0.0-alpha2.114 and update changelog [skip ci] * revert: drop fork-CI artifacts (runtime alpha.96 bump + typedoc regen, fork-minted alpha2.114 release) These were committed to this branch by the fork's own GitHub Actions (publish-npm on push, nightly-release-v3 on cron), not by anyone working on the PR. The typedoc regen stamps fork source links into 90+ files and the release bump collides with upstream's real v3.0.0-alpha2.114. * fix(runtime): append scanned elements without spreading the NodeList Spreading document.body.querySelectorAll("*") into push() passes every element as a call argument, which overflows the engine's argument limit on very large documents. Reported by Copilot review. --------- Co-authored-by: GitHub Actions <github-actions@github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: taliesin-ai <lea.anthony@gmail.com> --- .../wails-app-region.mp4 | Bin 0 -> 2553915 bytes .../content/docs/features/windows/basics.mdx | 2 +- .../docs/features/windows/frameless.mdx | 152 +++++ .../content/docs/features/windows/options.mdx | 22 + .../bundledassets/runtime.debug.js | 163 +++++- .../assetserver/bundledassets/runtime.js | 2 +- .../desktop/@wailsio/runtime/package.json | 1 + .../desktop/@wailsio/runtime/src/appregion.ts | 235 ++++++++ .../desktop/@wailsio/runtime/src/drag.ts | 7 + .../desktop/@wailsio/runtime/src/index.ts | 1 + v3/internal/runtime/runtime.go | 3 +- .../pkg/edge/COREWEBVIEW2_MOUSE_EVENT_KIND.go | 26 + .../COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS.go | 16 + .../COREWEBVIEW2_NON_CLIENT_REGION_KIND.go | 14 + .../ICoreWebView2CompositionController.go | 109 ++++ .../ICoreWebView2CompositionController4.go | 73 +++ .../pkg/edge/ICoreWebView2Controller.go | 8 + ...w2CompositionControllerCompletedHandler.go | 50 ++ .../ICoreWebView2CursorChangedEventHandler.go | 50 ++ .../pkg/edge/ICoreWebView2Environment3.go | 63 +++ ...eWebView2NavigationStartingEventHandler.go | 58 ++ .../pkg/edge/ICoreWebView2Settings9.go | 95 ++++ .../webview2/pkg/edge/IDCompositionDevice.go | 86 +++ .../webview2/pkg/edge/IDCompositionTarget.go | 42 ++ .../webview2/pkg/edge/IDCompositionVisual.go | 25 + v3/internal/webview2/pkg/edge/chromium.go | 285 +++++++++- v3/internal/webview2/pkg/edge/com.go | 5 + .../webview2/pkg/edge/composition_host.go | 68 +++ v3/internal/webview2/pkg/edge/corewebview2.go | 25 + v3/pkg/application/application_server.go | 69 +-- v3/pkg/application/webview_window.go | 70 ++- v3/pkg/application/webview_window_android.go | 3 + v3/pkg/application/webview_window_darwin.go | 3 + v3/pkg/application/webview_window_ios.go | 3 + v3/pkg/application/webview_window_linux.go | 2 + v3/pkg/application/webview_window_options.go | 15 + v3/pkg/application/webview_window_windows.go | 100 +++- .../webview_window_windows_nonclient.go | 535 ++++++++++++++++++ v3/pkg/w32/dwmapi.go | 13 + v3/pkg/w32/user32.go | 39 +- v3/pkg/w32/window.go | 20 +- 41 files changed, 2459 insertions(+), 99 deletions(-) create mode 100644 docs/src/assets/windows-native-non-client-regions/wails-app-region.mp4 create mode 100644 v3/internal/runtime/desktop/@wailsio/runtime/src/appregion.ts create mode 100644 v3/internal/webview2/pkg/edge/COREWEBVIEW2_MOUSE_EVENT_KIND.go create mode 100644 v3/internal/webview2/pkg/edge/COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS.go create mode 100644 v3/internal/webview2/pkg/edge/COREWEBVIEW2_NON_CLIENT_REGION_KIND.go create mode 100644 v3/internal/webview2/pkg/edge/ICoreWebView2CompositionController.go create mode 100644 v3/internal/webview2/pkg/edge/ICoreWebView2CompositionController4.go create mode 100644 v3/internal/webview2/pkg/edge/ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler.go create mode 100644 v3/internal/webview2/pkg/edge/ICoreWebView2CursorChangedEventHandler.go create mode 100644 v3/internal/webview2/pkg/edge/ICoreWebView2Environment3.go create mode 100644 v3/internal/webview2/pkg/edge/ICoreWebView2NavigationStartingEventHandler.go create mode 100644 v3/internal/webview2/pkg/edge/ICoreWebView2Settings9.go create mode 100644 v3/internal/webview2/pkg/edge/IDCompositionDevice.go create mode 100644 v3/internal/webview2/pkg/edge/IDCompositionTarget.go create mode 100644 v3/internal/webview2/pkg/edge/IDCompositionVisual.go create mode 100644 v3/internal/webview2/pkg/edge/composition_host.go create mode 100644 v3/pkg/application/webview_window_windows_nonclient.go diff --git a/docs/src/assets/windows-native-non-client-regions/wails-app-region.mp4 b/docs/src/assets/windows-native-non-client-regions/wails-app-region.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..c399b404ea4f7f4755b2eef9b012caa23999cc1e GIT binary patch literal 2553915 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 _$jE6{Ul7Q!@a3Gs1zsgWYx5<!xp-J4wpn#o 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�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 Wlcvvw;LbFZrMW^goKxi_4qO?hkDW-|O* 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%0AT^H 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 literal 0 HcmV?d00001 diff --git a/docs/src/content/docs/features/windows/basics.mdx b/docs/src/content/docs/features/windows/basics.mdx index 55a3f623096..0d5bd935f2d 100644 --- a/docs/src/content/docs/features/windows/basics.mdx +++ b/docs/src/content/docs/features/windows/basics.mdx @@ -403,7 +403,7 @@ mainWindow.AttachModal(childWindow) There is no per-window `SetIcon` — the application icon is set on the app via `app.SetIcon([]byte)` (or for a Linux-specific window icon, the `application.LinuxWindow.Icon` field at window creation). **Snap Assist:** - Shows Windows 11 snap layout options for the window. + Shows Windows 11 snap layout options through the system shortcut path. For a custom HTML maximize button with native hover Snap Layouts, use [Native Non-Client Regions on Windows](/features/windows/frameless#native-non-client-regions-on-windows) instead. **Taskbar flashing:** Useful for notifications when window is minimised. diff --git a/docs/src/content/docs/features/windows/frameless.mdx b/docs/src/content/docs/features/windows/frameless.mdx index 0a22a7b763a..aadea7f314e 100644 --- a/docs/src/content/docs/features/windows/frameless.mdx +++ b/docs/src/content/docs/features/windows/frameless.mdx @@ -6,6 +6,7 @@ sidebar: --- import { Tabs, TabItem, Card, CardGrid } from "@astrojs/starlight/components"; +import wailsAppRegionVideo from "../../../../assets/windows-native-non-client-regions/wails-app-region.mp4"; ## Frameless Windows @@ -173,6 +174,156 @@ document.querySelector('.maximize').addEventListener('click', () => Window.Maxim document.querySelector('.close').addEventListener('click', () => Window.Close()) ``` +## Native Non-Client Regions on Windows + +Windows can treat parts of a custom title bar as native non-client areas. This lets you draw the title bar and caption buttons with any HTML/CSS design while keeping native Windows behavior: the caption area drags the window, the maximize button can show Windows 11 Snap Assist / Snap Layouts, and the minimize, maximize, and close buttons receive native hit testing and mouse state. + +The video below shows a custom HTML/CSS title bar using native Windows hit testing, including Windows 11 Snap Assist / Snap Layouts on a custom maximize button. + +<video src={wailsAppRegionVideo} controls muted playsInline></video> + +Wails supports two Windows-specific mechanisms: + +- `app-region` through WebView2's native non-client region support +- `--wails-non-client-region` through Wails runtime tracking for custom caption buttons + +### Choosing a Mode + +:::caution[Experimental] +`WebView2CompositionHosting` changes how the window hosts and interacts with WebView2 under the hood. Instead of the default HWND-hosted WebView2 controller, Wails uses composition controller hosting and forwards input explicitly. This mode may have rendering, input, focus, or WebView2 Runtime compatibility issues. Enable it only when you need native custom caption-button behavior, and test your app carefully on the Windows and WebView2 Runtime versions you support. +::: + +Choose based on what you need from Windows: + +- Use `NonClientRegionSupport` for simple native app dragging with WebView2's `app-region: drag` and `app-region: no-drag`. +- Use `WebView2CompositionHosting` when your custom minimize, maximize, and close buttons should behave like native Windows caption buttons. +- Enable both when the same window needs WebView2-native `app-region` support and Wails-managed custom caption-button regions. + +`NonClientRegionSupport` is the lightweight native alternative to Wails' `--wails-draggable` tracking. You mark draggable and non-draggable areas with CSS, WebView2 decides which pixels belong to the caption, and Wails asks WebView2 for the native region when hit testing. + +That is the full scope of this mode today. It does not make custom minimize, maximize, or close buttons behave like native Windows caption buttons, and it does not enable Windows 11 Snap Assist / Snap Layouts for a custom maximize button. Use it when you need simple native app dragging without the extra machinery of `--wails-draggable`. + +`WebView2CompositionHosting` is for custom caption buttons with native behavior. Wails tracks DOM rectangles marked with `--wails-non-client-region`, maps them to Windows hit-test values such as `HTMINBUTTON`, `HTMAXBUTTON`, and `HTCLOSE`, and forwards mouse input back into the composition-hosted WebView2 surface. That is what allows a custom maximize button to participate in Windows 11 Snap Assist / Snap Layouts while keeping any visual design you choose. + +Put another way: `NonClientRegionSupport` is WebView2-native CSS region support. `WebView2CompositionHosting` is Wails taking responsibility for host-owned composition and custom non-client hit testing. + +### WebView2 app-region + +Enable WebView2's native non-client region support for the window: + +```go +window := app.Window.NewWithOptions(application.WebviewWindowOptions{ + Frameless: true, + Windows: application.WindowsWindow{ + NonClientRegionSupport: true, + }, +}) +``` + +Then mark draggable areas with the CSS `app-region` property: + +```css +.titlebar { + app-region: drag; +} + +.titlebar button, +.titlebar input, +.titlebar select, +.titlebar textarea { + app-region: no-drag; +} +``` + +Use this when you only need native caption dragging and your title bar controls are handled with normal frontend clicks. + +The limitation of this mode is that it is constrained by WebView2's own non-client region support. In current WebView2 releases, that means drag and no-drag regions only. It is not intended to model fully custom frontend caption buttons with distinct native minimize, maximize, and close roles. + +### Custom Caption Buttons with Native Behavior + +For custom minimize, maximize, and close buttons that should behave like system caption buttons, enable composition hosting: + +:::caution[Experimental] +`WebView2CompositionHosting` uses WebView2 composition controller hosting with DirectComposition. See [Choosing a Mode](#choosing-a-mode) before enabling it. +::: + +```go +window := app.Window.NewWithOptions(application.WebviewWindowOptions{ + Frameless: true, + Windows: application.WindowsWindow{ + WebView2CompositionHosting: true, + }, +}) +``` + +Then mark each frontend region with `--wails-non-client-region`: + +```html +<div class="titlebar"> + <div class="title">My Application</div> + <div class="window-controls"> + <button class="window-button minimize" aria-label="Minimize"></button> + <button class="window-button maximize" aria-label="Maximize"></button> + <button class="window-button close" aria-label="Close"></button> + </div> +</div> +``` + +```css +.titlebar { + --wails-non-client-region: caption; + height: 40px; +} + +.window-controls { + display: flex; + height: 100%; +} + +.window-button { + width: 46px; + border: 0; + background: transparent; +} + +.window-button.minimize { + --wails-non-client-region: minimize; +} + +.window-button.maximize { + --wails-non-client-region: maximize; +} + +.window-button.close { + --wails-non-client-region: close; +} +``` + +Supported `--wails-non-client-region` values: + +- `caption` - draggable caption area +- `minimize` - native minimize button hit target +- `maximize` - native maximize button hit target, including Windows 11 Snap Assist / Snap Layouts hover behavior +- `close` - native close button hit target + +The Wails runtime observes DOM, style, size, scroll, and viewport changes, then sends region snapshots to the native window. Region geometry is measured in CSS pixels and converted to physical pixels for Windows hit testing. + +The visual design remains entirely yours. The regions only tell Windows what each rectangle means; the button shape, icon, color, spacing, hover styling, and layout still come from your frontend. + +### Combining Both + +You can enable both options when you want WebView2 `app-region` support and Wails-managed caption button regions in the same window: + +```go +window := app.Window.NewWithOptions(application.WebviewWindowOptions{ + Frameless: true, + Windows: application.WindowsWindow{ + NonClientRegionSupport: true, + WebView2CompositionHosting: true, + }, +}) +``` + ## System Buttons ### Implementing Close/Minimise/Maximise @@ -358,6 +509,7 @@ body { // Trigger Windows 11 Snap Assist window.SnapAssist() ``` + This triggers Snap Layouts through the Windows hotkey path. For a custom HTML maximize button with native hover Snap Layouts, use [Native Non-Client Regions on Windows](#native-non-client-regions-on-windows) instead. **Custom title bar height:** Windows automatically detects drag regions from CSS. diff --git a/docs/src/content/docs/features/windows/options.mdx b/docs/src/content/docs/features/windows/options.mdx index 0595e951f00..9319acb5b8d 100644 --- a/docs/src/content/docs/features/windows/options.mdx +++ b/docs/src/content/docs/features/windows/options.mdx @@ -948,6 +948,8 @@ Windows: application.WindowsWindow{ BackdropType: application.Auto, CustomTheme: application.ThemeSettings{}, DisableFramelessWindowDecorations: false, + NonClientRegionSupport: false, + WebView2CompositionHosting: false, }, ``` @@ -973,6 +975,15 @@ There are no `WindowsBackdropTypeMica`-style constants — use `application.Mica **DisableFramelessWindowDecorations** (`bool`) - Disable default frameless decorations (Aero shadow, rounded corners). +**NonClientRegionSupport** (`bool`) +- Enables WebView2-native `app-region: drag` / `app-region: no-drag` support for frameless custom title bars. +- This is for simple native app dragging only. It does not provide native custom caption-button behavior or Windows 11 Snap Assist / Snap Layouts for custom maximize buttons. + +**WebView2CompositionHosting** (`bool`) +- Enables Wails-managed `--wails-non-client-region` support for custom caption buttons with native Windows behavior, including Windows 11 Snap Assist / Snap Layouts on custom maximize buttons. +- Experimental. This hosts WebView2 through `ICoreWebView2CompositionController` and DirectComposition instead of the default HWND-hosted controller. +- Can be combined with `NonClientRegionSupport` when a window needs both WebView2-native `app-region` support and Wails-managed custom caption-button regions. + **Example:** ```go @@ -982,6 +993,17 @@ Windows: application.WindowsWindow{ }, ``` +**Example - Custom Windows title bar regions:** + +```go +Windows: application.WindowsWindow{ + NonClientRegionSupport: true, + WebView2CompositionHosting: true, +}, +``` + +See [Frameless Windows](/features/windows/frameless#native-non-client-regions-on-windows) for the detailed behavior, tradeoffs, and matching CSS. + ### Linux Options (per-window) The per-window struct is `application.LinuxWindow` — **not** `LinuxOptions`. diff --git a/v3/internal/assetserver/bundledassets/runtime.debug.js b/v3/internal/assetserver/bundledassets/runtime.debug.js index 0c473d866e8..4cf80000d7d 100644 --- a/v3/internal/assetserver/bundledassets/runtime.debug.js +++ b/v3/internal/assetserver/bundledassets/runtime.debug.js @@ -1911,6 +1911,9 @@ function primaryDown(event) { } } if (resizeEdge) { + if (event.type !== "mousedown") { + return; + } canResize = true; return; } @@ -1991,6 +1994,164 @@ function onMouseMove(event) { else setResize(); } +// desktop/@wailsio/runtime/src/appregion.ts +var regionProperty = "--wails-non-client-region"; +var runtimeConfigReadyEvent = "wails:runtime-config-ready"; +var validRegions = /* @__PURE__ */ new Set(["caption", "minimize", "maximize", "close"]); +if (hasDOM) { + window._wails = window._wails || {}; +} +var updatePending = false; +var lastPayload = ""; +var observedElements = /* @__PURE__ */ new Set(); +var resizeObserver; +var trackingStarted = false; +function normaliseRegionKind(value) { + const region = value.trim().toLowerCase(); + if (validRegions.has(region)) { + return region; + } + return void 0; +} +function nonClientRegionForElement(element) { + if (!(element instanceof HTMLElement)) { + return void 0; + } + const style = window.getComputedStyle(element); + const region = normaliseRegionKind(style.getPropertyValue(regionProperty)); + if (!region) { + return void 0; + } + const parent = element.parentElement; + if (parent) { + const parentStyle = window.getComputedStyle(parent); + if (normaliseRegionKind(parentStyle.getPropertyValue(regionProperty)) === region) { + return void 0; + } + } + return region; +} +function isVisible(element) { + const style = window.getComputedStyle(element); + return style.display !== "none" && style.visibility !== "hidden" && style.contentVisibility !== "hidden"; +} +function elementRegion(element) { + if (!(element instanceof HTMLElement)) { + return void 0; + } + const kind = nonClientRegionForElement(element); + if (!kind || !isVisible(element)) { + return void 0; + } + const rect = element.getBoundingClientRect(); + if (rect.width <= 0 || rect.height <= 0) { + return void 0; + } + const scale = window.devicePixelRatio || 1; + const left = Math.floor(rect.left * scale); + const top = Math.floor(rect.top * scale); + const right = Math.ceil(rect.right * scale); + const bottom = Math.ceil(rect.bottom * scale); + if (right <= left || bottom <= top) { + return void 0; + } + return { kind, left, top, right, bottom }; +} +function regionElements() { + const elements = []; + if (document.documentElement) { + elements.push(document.documentElement); + } + if (document.body) { + elements.push(document.body); + for (const element of document.body.querySelectorAll("*")) { + elements.push(element); + } + } + return elements; +} +function observeRegionElements(elements) { + if (typeof ResizeObserver === "undefined") { + return; + } + resizeObserver != null ? resizeObserver : resizeObserver = new ResizeObserver(scheduleUpdate); + const nextElements = new Set(elements); + for (const element of observedElements) { + if (!nextElements.has(element)) { + resizeObserver.unobserve(element); + } + } + for (const element of nextElements) { + if (!observedElements.has(element)) { + resizeObserver.observe(element); + } + } + observedElements = nextElements; +} +function updateNonClientRegions() { + updatePending = false; + const elements = regionElements(); + const regions = []; + const activeElements = []; + for (const element of elements) { + const region = elementRegion(element); + if (region) { + regions.push(region); + activeElements.push(element); + } + } + observeRegionElements(activeElements); + const payload = JSON.stringify({ version: 1, regions }); + if (payload === lastPayload) { + return; + } + lastPayload = payload; + invoke("wails:non-client-region:" + payload); +} +function scheduleUpdate() { + if (updatePending) { + return; + } + updatePending = true; + window.requestAnimationFrame(updateNonClientRegions); +} +function startNonClientRegionTracking() { + var _a3, _b; + if (trackingStarted) { + return; + } + trackingStarted = true; + scheduleUpdate(); + const mutationObserver = new MutationObserver(scheduleUpdate); + mutationObserver.observe(document.documentElement, { + attributes: true, + childList: true, + subtree: true + }); + window.addEventListener("resize", scheduleUpdate); + window.addEventListener("scroll", scheduleUpdate, true); + (_a3 = window.visualViewport) == null ? void 0 : _a3.addEventListener("resize", scheduleUpdate); + (_b = window.visualViewport) == null ? void 0 : _b.addEventListener("scroll", scheduleUpdate); +} +function tryStartNonClientRegionTracking() { + var _a3, _b; + const os = (_a3 = window._wails.environment) == null ? void 0 : _a3.OS; + if (os === void 0) { + return false; + } + const enabled = (_b = window._wails.flags) == null ? void 0 : _b.nonClientRegionTracking; + if (os === "windows") { + if (enabled === true) { + whenReady(startNonClientRegionTracking); + } + return true; + } + return true; +} +if (hasDOM && !tryStartNonClientRegionTracking()) { + window.addEventListener(runtimeConfigReadyEvent, tryStartNonClientRegionTracking, { once: true }); +} + // desktop/@wailsio/runtime/src/application.ts var application_exports = {}; __export(application_exports, { @@ -3081,4 +3242,4 @@ export { objectNames, setTransport }; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2luZGV4LnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy93bWwudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2Jyb3dzZXIudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL25hbm9pZC50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvZW52aXJvbm1lbnQudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3J1bnRpbWUudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2RpYWxvZ3MudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2V2ZW50cy50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvbGlzdGVuZXIudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2NyZWF0ZS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvZXZlbnRfdHlwZXMudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3V0aWxzLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy93aW5kb3cudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL2NvbXBpbGVkL21haW4uanMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3N5c3RlbS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY29udGV4dG1lbnUudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2ZsYWdzLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9kcmFnLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9hcHBsaWNhdGlvbi50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY2FsbHMudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2NhbGxhYmxlLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9jYW5jZWxsYWJsZS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY2xpcGJvYXJkLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9zY3JlZW5zLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9pb3MudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2FuZHJvaWQudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3VwZGF0ZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG4vLyBTZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xufVxuXG5pbXBvcnQgXCIuL2NvbnRleHRtZW51LmpzXCI7XG5pbXBvcnQgXCIuL2RyYWcuanNcIjtcblxuLy8gUmUtZXhwb3J0IHB1YmxpYyBBUElcbmltcG9ydCAqIGFzIEFwcGxpY2F0aW9uIGZyb20gXCIuL2FwcGxpY2F0aW9uLmpzXCI7XG5pbXBvcnQgKiBhcyBCcm93c2VyIGZyb20gXCIuL2Jyb3dzZXIuanNcIjtcbmltcG9ydCAqIGFzIENhbGwgZnJvbSBcIi4vY2FsbHMuanNcIjtcbmltcG9ydCAqIGFzIENsaXBib2FyZCBmcm9tIFwiLi9jbGlwYm9hcmQuanNcIjtcbmltcG9ydCAqIGFzIENyZWF0ZSBmcm9tIFwiLi9jcmVhdGUuanNcIjtcbmltcG9ydCAqIGFzIERpYWxvZ3MgZnJvbSBcIi4vZGlhbG9ncy5qc1wiO1xuaW1wb3J0ICogYXMgRXZlbnRzIGZyb20gXCIuL2V2ZW50cy5qc1wiO1xuaW1wb3J0ICogYXMgRmxhZ3MgZnJvbSBcIi4vZmxhZ3MuanNcIjtcbmltcG9ydCAqIGFzIFNjcmVlbnMgZnJvbSBcIi4vc2NyZWVucy5qc1wiO1xuaW1wb3J0ICogYXMgU3lzdGVtIGZyb20gXCIuL3N5c3RlbS5qc1wiO1xuaW1wb3J0ICogYXMgSU9TIGZyb20gXCIuL2lvcy5qc1wiO1xuaW1wb3J0ICogYXMgQW5kcm9pZCBmcm9tIFwiLi9hbmRyb2lkLmpzXCI7XG5pbXBvcnQgKiBhcyBVcGRhdGVyIGZyb20gXCIuL3VwZGF0ZXIuanNcIjtcbmltcG9ydCBXaW5kb3csIHsgaGFuZGxlRHJhZ0VudGVyLCBoYW5kbGVEcmFnTGVhdmUsIGhhbmRsZURyYWdPdmVyIH0gZnJvbSBcIi4vd2luZG93LmpzXCI7XG5pbXBvcnQgKiBhcyBXTUwgZnJvbSBcIi4vd21sLmpzXCI7XG5cbmV4cG9ydCB7XG4gICAgQXBwbGljYXRpb24sXG4gICAgQnJvd3NlcixcbiAgICBDYWxsLFxuICAgIENsaXBib2FyZCxcbiAgICBEaWFsb2dzLFxuICAgIEV2ZW50cyxcbiAgICBGbGFncyxcbiAgICBTY3JlZW5zLFxuICAgIFN5c3RlbSxcbiAgICBJT1MsXG4gICAgQW5kcm9pZCxcbiAgICBVcGRhdGVyLFxuICAgIFdpbmRvdyxcbiAgICBXTUxcbn07XG5cbi8qKlxuICogQW4gaW50ZXJuYWwgdXRpbGl0eSBjb25zdW1lZCBieSB0aGUgYmluZGluZyBnZW5lcmF0b3IuXG4gKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgeyBDcmVhdGUgfTtcblxuZXhwb3J0ICogZnJvbSBcIi4vY2FuY2VsbGFibGUuanNcIjtcblxuLy8gRXhwb3J0IHRyYW5zcG9ydCBpbnRlcmZhY2VzIGFuZCB1dGlsaXRpZXNcbmV4cG9ydCB7XG4gICAgc2V0VHJhbnNwb3J0LFxuICAgIGdldFRyYW5zcG9ydCxcbiAgICB0eXBlIFJ1bnRpbWVUcmFuc3BvcnQsXG4gICAgb2JqZWN0TmFtZXMsXG4gICAgY2xpZW50SWQsXG59IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcblxuaW1wb3J0IHsgY2xpZW50SWQgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbi8vIE5vdGlmeSBiYWNrZW5kXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5pbnZva2UgPSBTeXN0ZW0uaW52b2tlO1xuICAgIHdpbmRvdy5fd2FpbHMuY2xpZW50SWQgPSBjbGllbnRJZDtcbn1cblxuLy8gUmVnaXN0ZXIgcGxhdGZvcm0gaGFuZGxlcnMgKGludGVybmFsIEFQSSlcbi8vIE5vdGU6IFdpbmRvdyBpcyB0aGUgdGhpc1dpbmRvdyBpbnN0YW5jZSAoZGVmYXVsdCBleHBvcnQgZnJvbSB3aW5kb3cudHMpXG4vLyBCaW5kaW5nIGVuc3VyZXMgJ3RoaXMnIGNvcnJlY3RseSByZWZlcnMgdG8gdGhlIGN1cnJlbnQgd2luZG93IGluc3RhbmNlXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVQbGF0Zm9ybUZpbGVEcm9wID0gV2luZG93LkhhbmRsZVBsYXRmb3JtRmlsZURyb3AuYmluZChXaW5kb3cpO1xufVxuXG4vLyBMaW51eC1zcGVjaWZpYyBkcmFnIGhhbmRsZXJzIChHVEsgaW50ZXJjZXB0cyBET00gZHJhZyBldmVudHMpXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnRW50ZXIgPSBoYW5kbGVEcmFnRW50ZXI7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnTGVhdmUgPSBoYW5kbGVEcmFnTGVhdmU7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnT3ZlciA9IGhhbmRsZURyYWdPdmVyO1xufVxuXG5pZiAoaGFzRE9NKSB7XG4gICAgU3lzdGVtLmludm9rZShcIndhaWxzOnJ1bnRpbWU6cmVhZHlcIik7XG59XG5cbi8qKlxuICogTG9hZHMgYSBzY3JpcHQgZnJvbSB0aGUgZ2l2ZW4gVVJMIGlmIGl0IGV4aXN0cy5cbiAqIFVzZXMgSEVBRCByZXF1ZXN0IHRvIGNoZWNrIGV4aXN0ZW5jZSwgdGhlbiBpbmplY3RzIGEgc2NyaXB0IHRhZy5cbiAqIFNpbGVudGx5IGlnbm9yZXMgaWYgdGhlIHNjcmlwdCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZE9wdGlvbmFsU2NyaXB0KHVybDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZldGNoKHVybCwgeyBtZXRob2Q6ICdIRUFEJyB9KVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICAvLyBWZXJpZnkgdGhlIHJlc3BvbnNlIGlzIGFjdHVhbGx5IEphdmFTY3JpcHQgYW5kIG5vdCBhbiBIVE1MIGZhbGxiYWNrXG4gICAgICAgICAgICAgICAgLy8gKGUuZy4gVml0ZSBkZXYgc2VydmVyIHJldHVybnMgaW5kZXguaHRtbCBmb3IgdW5rbm93biByb3V0ZXMpXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSAocmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZS5pbmNsdWRlcygnamF2YXNjcmlwdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHQuc3JjID0gdXJsO1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4ge30pOyAvLyBTaWxlbnRseSBpZ25vcmUgLSBzY3JpcHQgaXMgb3B0aW9uYWxcbn1cblxuLy8gTG9hZCBjdXN0b20uanMgaWYgYXZhaWxhYmxlICh1c2VkIGJ5IHNlcnZlciBtb2RlIGZvciBXZWJTb2NrZXQgZXZlbnRzLCBldGMuKVxuaWYgKGhhc0RPTSkge1xuICAgIGxvYWRPcHRpb25hbFNjcmlwdCgnL3dhaWxzL2N1c3RvbS5qcycpO1xufVxuIiwgIi8qXG4gXyAgICAgX18gICAgIF8gX19cbnwgfCAgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBPcGVuVVJMIH0gZnJvbSBcIi4vYnJvd3Nlci5qc1wiO1xuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tIFwiLi9kaWFsb2dzLmpzXCI7XG5pbXBvcnQgeyBFbWl0IH0gZnJvbSBcIi4vZXZlbnRzLmpzXCI7XG5pbXBvcnQgeyBjYW5BYm9ydExpc3RlbmVycywgd2hlblJlYWR5IH0gZnJvbSBcIi4vdXRpbHMuanNcIjtcbmltcG9ydCBXaW5kb3cgZnJvbSBcIi4vd2luZG93LmpzXCI7XG5cbi8qKlxuICogU2VuZHMgYW4gZXZlbnQgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBhbmQgb3B0aW9uYWwgZGF0YS5cbiAqXG4gKiBAcGFyYW0gZXZlbnROYW1lIC0gLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQgdG8gc2VuZC5cbiAqIEBwYXJhbSBbZGF0YT1udWxsXSAtIC0gT3B0aW9uYWwgZGF0YSB0byBzZW5kIGFsb25nIHdpdGggdGhlIGV2ZW50LlxuICovXG5mdW5jdGlvbiBzZW5kRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIGRhdGE6IGFueSA9IG51bGwpOiB2b2lkIHtcbiAgICBFbWl0KGV2ZW50TmFtZSwgZGF0YSk7XG59XG5cbi8qKlxuICogQ2FsbHMgYSBtZXRob2Qgb24gYSBzcGVjaWZpZWQgd2luZG93LlxuICpcbiAqIEBwYXJhbSB3aW5kb3dOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHdpbmRvdyB0byBjYWxsIHRoZSBtZXRob2Qgb24uXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QgdG8gY2FsbC5cbiAqL1xuZnVuY3Rpb24gY2FsbFdpbmRvd01ldGhvZCh3aW5kb3dOYW1lOiBzdHJpbmcsIG1ldGhvZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRhcmdldFdpbmRvdyA9IFdpbmRvdy5HZXQod2luZG93TmFtZSk7XG4gICAgY29uc3QgbWV0aG9kID0gKHRhcmdldFdpbmRvdyBhcyBhbnkpW21ldGhvZE5hbWVdO1xuXG4gICAgaWYgKHR5cGVvZiBtZXRob2QgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBXaW5kb3cgbWV0aG9kICcke21ldGhvZE5hbWV9JyBub3QgZm91bmRgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIG1ldGhvZC5jYWxsKHRhcmdldFdpbmRvdyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBjYWxsaW5nIHdpbmRvdyBtZXRob2QgJyR7bWV0aG9kTmFtZX0nOiBgLCBlKTtcbiAgICB9XG59XG5cbi8qKlxuICogUmVzcG9uZHMgdG8gYSB0cmlnZ2VyaW5nIGV2ZW50IGJ5IHJ1bm5pbmcgYXBwcm9wcmlhdGUgV01MIGFjdGlvbnMgZm9yIHRoZSBjdXJyZW50IHRhcmdldC5cbiAqL1xuZnVuY3Rpb24gb25XTUxUcmlnZ2VyZWQoZXY6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IGV2LmN1cnJlbnRUYXJnZXQgYXMgRWxlbWVudDtcblxuICAgIGZ1bmN0aW9uIHJ1bkVmZmVjdChjaG9pY2UgPSBcIlllc1wiKSB7XG4gICAgICAgIGlmIChjaG9pY2UgIT09IFwiWWVzXCIpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZXZlbnRUeXBlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3dtbC1ldmVudCcpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXdtbC1ldmVudCcpO1xuICAgICAgICBjb25zdCB0YXJnZXRXaW5kb3cgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLXRhcmdldC13aW5kb3cnKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtdGFyZ2V0LXdpbmRvdycpIHx8IFwiXCI7XG4gICAgICAgIGNvbnN0IHdpbmRvd01ldGhvZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd3bWwtd2luZG93JykgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtd21sLXdpbmRvdycpO1xuICAgICAgICBjb25zdCB1cmwgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLW9wZW51cmwnKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtb3BlbnVybCcpO1xuXG4gICAgICAgIGlmIChldmVudFR5cGUgIT09IG51bGwpXG4gICAgICAgICAgICBzZW5kRXZlbnQoZXZlbnRUeXBlKTtcbiAgICAgICAgaWYgKHdpbmRvd01ldGhvZCAhPT0gbnVsbClcbiAgICAgICAgICAgIGNhbGxXaW5kb3dNZXRob2QodGFyZ2V0V2luZG93LCB3aW5kb3dNZXRob2QpO1xuICAgICAgICBpZiAodXJsICE9PSBudWxsKVxuICAgICAgICAgICAgdm9pZCBPcGVuVVJMKHVybCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlybSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd3bWwtY29uZmlybScpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXdtbC1jb25maXJtJyk7XG5cbiAgICBpZiAoY29uZmlybSkge1xuICAgICAgICBRdWVzdGlvbih7XG4gICAgICAgICAgICBUaXRsZTogXCJDb25maXJtXCIsXG4gICAgICAgICAgICBNZXNzYWdlOiBjb25maXJtLFxuICAgICAgICAgICAgRGV0YWNoZWQ6IGZhbHNlLFxuICAgICAgICAgICAgQnV0dG9uczogW1xuICAgICAgICAgICAgICAgIHsgTGFiZWw6IFwiWWVzXCIgfSxcbiAgICAgICAgICAgICAgICB7IExhYmVsOiBcIk5vXCIsIElzRGVmYXVsdDogdHJ1ZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0pLnRoZW4ocnVuRWZmZWN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBydW5FZmZlY3QoKTtcbiAgICB9XG59XG5cbi8vIFByaXZhdGUgZmllbGQgbmFtZXMuXG5jb25zdCBjb250cm9sbGVyU3ltID0gU3ltYm9sKFwiY29udHJvbGxlclwiKTtcbmNvbnN0IHRyaWdnZXJNYXBTeW0gPSBTeW1ib2woXCJ0cmlnZ2VyTWFwXCIpO1xuY29uc3QgZWxlbWVudENvdW50U3ltID0gU3ltYm9sKFwiZWxlbWVudENvdW50XCIpO1xuXG4vKipcbiAqIEFib3J0Q29udHJvbGxlclJlZ2lzdHJ5IGRvZXMgbm90IGFjdHVhbGx5IHJlbWVtYmVyIGFjdGl2ZSBldmVudCBsaXN0ZW5lcnM6IGluc3RlYWRcbiAqIGl0IHRpZXMgdGhlbSB0byBhbiBBYm9ydFNpZ25hbCBhbmQgdXNlcyBhbiBBYm9ydENvbnRyb2xsZXIgdG8gcmVtb3ZlIHRoZW0gYWxsIGF0IG9uY2UuXG4gKi9cbmNsYXNzIEFib3J0Q29udHJvbGxlclJlZ2lzdHJ5IHtcbiAgICAvLyBQcml2YXRlIGZpZWxkcy5cbiAgICBbY29udHJvbGxlclN5bV06IEFib3J0Q29udHJvbGxlcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzW2NvbnRyb2xsZXJTeW1dID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gb3B0aW9ucyBvYmplY3QgZm9yIGFkZEV2ZW50TGlzdGVuZXIgdGhhdCB0aWVzIHRoZSBsaXN0ZW5lclxuICAgICAqIHRvIHRoZSBBYm9ydFNpZ25hbCBmcm9tIHRoZSBjdXJyZW50IEFib3J0Q29udHJvbGxlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbGVtZW50IC0gQW4gSFRNTCBlbGVtZW50XG4gICAgICogQHBhcmFtIHRyaWdnZXJzIC0gVGhlIGxpc3Qgb2YgYWN0aXZlIFdNTCB0cmlnZ2VyIGV2ZW50cyBmb3IgdGhlIHNwZWNpZmllZCBlbGVtZW50c1xuICAgICAqL1xuICAgIHNldChlbGVtZW50OiBFbGVtZW50LCB0cmlnZ2Vyczogc3RyaW5nW10pOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB7IHNpZ25hbDogdGhpc1tjb250cm9sbGVyU3ltXS5zaWduYWwgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCByZWdpc3RlcmVkIGV2ZW50IGxpc3RlbmVycyBhbmQgcmVzZXRzIHRoZSByZWdpc3RyeS5cbiAgICAgKi9cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpc1tjb250cm9sbGVyU3ltXS5hYm9ydCgpO1xuICAgICAgICB0aGlzW2NvbnRyb2xsZXJTeW1dID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBXZWFrTWFwUmVnaXN0cnkgbWFwcyBhY3RpdmUgdHJpZ2dlciBldmVudHMgdG8gZWFjaCBET00gZWxlbWVudCB0aHJvdWdoIGEgV2Vha01hcC5cbiAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBtYXBwaW5nIHJlbWFpbnMgcHJpdmF0ZSB0byB0aGlzIG1vZHVsZSwgd2hpbGUgc3RpbGwgYWxsb3dpbmcgZ2FyYmFnZVxuICogY29sbGVjdGlvbiBvZiB0aGUgaW52b2x2ZWQgZWxlbWVudHMuXG4gKi9cbmNsYXNzIFdlYWtNYXBSZWdpc3RyeSB7XG4gICAgLyoqIFN0b3JlcyB0aGUgY3VycmVudCBlbGVtZW50LXRvLXRyaWdnZXIgbWFwcGluZy4gKi9cbiAgICBbdHJpZ2dlck1hcFN5bV06IFdlYWtNYXA8RWxlbWVudCwgc3RyaW5nW10+O1xuICAgIC8qKiBDb3VudHMgdGhlIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIGFjdGl2ZSBXTUwgdHJpZ2dlcnMuICovXG4gICAgW2VsZW1lbnRDb3VudFN5bV06IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzW3RyaWdnZXJNYXBTeW1dID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgICAgdGhpc1tlbGVtZW50Q291bnRTeW1dID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGFjdGl2ZSB0cmlnZ2VycyBmb3IgdGhlIHNwZWNpZmllZCBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIGVsZW1lbnQgLSBBbiBIVE1MIGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gdHJpZ2dlcnMgLSBUaGUgbGlzdCBvZiBhY3RpdmUgV01MIHRyaWdnZXIgZXZlbnRzIGZvciB0aGUgc3BlY2lmaWVkIGVsZW1lbnRcbiAgICAgKi9cbiAgICBzZXQoZWxlbWVudDogRWxlbWVudCwgdHJpZ2dlcnM6IHN0cmluZ1tdKTogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMge1xuICAgICAgICBpZiAoIXRoaXNbdHJpZ2dlck1hcFN5bV0uaGFzKGVsZW1lbnQpKSB7IHRoaXNbZWxlbWVudENvdW50U3ltXSsrOyB9XG4gICAgICAgIHRoaXNbdHJpZ2dlck1hcFN5bV0uc2V0KGVsZW1lbnQsIHRyaWdnZXJzKTtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIHJlZ2lzdGVyZWQgZXZlbnQgbGlzdGVuZXJzLlxuICAgICAqL1xuICAgIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpc1tlbGVtZW50Q291bnRTeW1dIDw9IDApXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgnKicpKSB7XG4gICAgICAgICAgICBpZiAodGhpc1tlbGVtZW50Q291bnRTeW1dIDw9IDApXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJzID0gdGhpc1t0cmlnZ2VyTWFwU3ltXS5nZXQoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAodHJpZ2dlcnMgIT0gbnVsbCkgeyB0aGlzW2VsZW1lbnRDb3VudFN5bV0tLTsgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMgfHwgW10pXG4gICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHRyaWdnZXIsIG9uV01MVHJpZ2dlcmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXNbdHJpZ2dlck1hcFN5bV0gPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICB0aGlzW2VsZW1lbnRDb3VudFN5bV0gPSAwO1xuICAgIH1cbn1cblxuY29uc3QgdHJpZ2dlclJlZ2lzdHJ5ID0gY2FuQWJvcnRMaXN0ZW5lcnMoKSA/IG5ldyBBYm9ydENvbnRyb2xsZXJSZWdpc3RyeSgpIDogbmV3IFdlYWtNYXBSZWdpc3RyeSgpO1xuXG4vKipcbiAqIEFkZHMgZXZlbnQgbGlzdGVuZXJzIHRvIHRoZSBzcGVjaWZpZWQgZWxlbWVudC5cbiAqL1xuZnVuY3Rpb24gYWRkV01MTGlzdGVuZXJzKGVsZW1lbnQ6IEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0cmlnZ2VyUmVnRXhwID0gL1xcUysvZztcbiAgICBjb25zdCB0cmlnZ2VyQXR0ciA9IChlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLXRyaWdnZXInKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtdHJpZ2dlcicpIHx8IFwiY2xpY2tcIik7XG4gICAgY29uc3QgdHJpZ2dlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBsZXQgbWF0Y2g7XG4gICAgd2hpbGUgKChtYXRjaCA9IHRyaWdnZXJSZWdFeHAuZXhlYyh0cmlnZ2VyQXR0cikpICE9PSBudWxsKVxuICAgICAgICB0cmlnZ2Vycy5wdXNoKG1hdGNoWzBdKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB0cmlnZ2VyUmVnaXN0cnkuc2V0KGVsZW1lbnQsIHRyaWdnZXJzKTtcbiAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMpXG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0cmlnZ2VyLCBvbldNTFRyaWdnZXJlZCwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogU2NoZWR1bGVzIGFuIGF1dG9tYXRpYyByZWxvYWQgb2YgV01MIHRvIGJlIHBlcmZvcm1lZCBhcyBzb29uIGFzIHRoZSBkb2N1bWVudCBpcyBmdWxseSBsb2FkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbmFibGUoKTogdm9pZCB7XG4gICAgd2hlblJlYWR5KFJlbG9hZCk7XG59XG5cbi8qKlxuICogUmVsb2FkcyB0aGUgV01MIHBhZ2UgYnkgYWRkaW5nIG5lY2Vzc2FyeSBldmVudCBsaXN0ZW5lcnMgYW5kIGJyb3dzZXIgbGlzdGVuZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gUmVsb2FkKCk6IHZvaWQge1xuICAgIHRyaWdnZXJSZWdpc3RyeS5yZXNldCgpO1xuICAgIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgnW3dtbC1ldmVudF0sIFt3bWwtd2luZG93XSwgW3dtbC1vcGVudXJsXSwgW2RhdGEtd21sLWV2ZW50XSwgW2RhdGEtd21sLXdpbmRvd10sIFtkYXRhLXdtbC1vcGVudXJsXScpLmZvckVhY2goYWRkV01MTGlzdGVuZXJzKTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHsgbmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXMgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkJyb3dzZXIpO1xuXG5jb25zdCBCcm93c2VyT3BlblVSTCA9IDA7XG5cbi8qKlxuICogT3BlbiBhIGJyb3dzZXIgd2luZG93IHRvIHRoZSBnaXZlbiBVUkwuXG4gKlxuICogQHBhcmFtIHVybCAtIFRoZSBVUkwgdG8gb3BlblxuICovXG5leHBvcnQgZnVuY3Rpb24gT3BlblVSTCh1cmw6IHN0cmluZyB8IFVSTCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBjYWxsKEJyb3dzZXJPcGVuVVJMLCB7dXJsOiB1cmwudG9TdHJpbmcoKX0pO1xufVxuIiwgIi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2FpL25hbm9pZFxuXG4vLyBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbi8vXG4vLyBDb3B5cmlnaHQgMjAxNyBBbmRyZXkgU2l0bmlrIDxhbmRyZXlAc2l0bmlrLnJ1PlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2Zcbi8vIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW5cbi8vIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG9cbi8vIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mXG4vLyB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sXG4vLyAgICAgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gICAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuLy8gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyAgICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1Ncbi8vIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUlxuLy8gQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSXG4vLyBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTlxuLy8gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gVGhpcyBhbHBoYWJldCB1c2VzIGBBLVphLXowLTlfLWAgc3ltYm9scy5cbi8vIFRoZSBvcmRlciBvZiBjaGFyYWN0ZXJzIGlzIG9wdGltaXplZCBmb3IgYmV0dGVyIGd6aXAgYW5kIGJyb3RsaSBjb21wcmVzc2lvbi5cbi8vIFJlZmVyZW5jZXMgdG8gdGhlIHNhbWUgZmlsZSAod29ya3MgYm90aCBmb3IgZ3ppcCBhbmQgYnJvdGxpKTpcbi8vIGAndXNlYCwgYGFuZG9tYCwgYW5kIGByaWN0J2Bcbi8vIFJlZmVyZW5jZXMgdG8gdGhlIGJyb3RsaSBkZWZhdWx0IGRpY3Rpb25hcnk6XG4vLyBgLTI2VGAsIGAxOTgzYCwgYDQwcHhgLCBgNzVweGAsIGBidXNoYCwgYGphY2tgLCBgbWluZGAsIGB2ZXJ5YCwgYW5kIGB3b2xmYFxuY29uc3QgdXJsQWxwaGFiZXQgPVxuICAgICd1c2VhbmRvbS0yNlQxOTgzNDBQWDc1cHhKQUNLVkVSWU1JTkRCVVNIV09MRl9HUVpiZmdoamtscXZ3eXpyaWN0J1xuXG5leHBvcnQgZnVuY3Rpb24gbmFub2lkKHNpemU6IG51bWJlciA9IDIxKTogc3RyaW5nIHtcbiAgICBsZXQgaWQgPSAnJ1xuICAgIC8vIEEgY29tcGFjdCBhbHRlcm5hdGl2ZSBmb3IgYGZvciAodmFyIGkgPSAwOyBpIDwgc3RlcDsgaSsrKWAuXG4gICAgbGV0IGkgPSBzaXplIHwgMFxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgLy8gYHwgMGAgaXMgbW9yZSBjb21wYWN0IGFuZCBmYXN0ZXIgdGhhbiBgTWF0aC5mbG9vcigpYC5cbiAgICAgICAgaWQgKz0gdXJsQWxwaGFiZXRbKE1hdGgucmFuZG9tKCkgKiA2NCkgfCAwXVxuICAgIH1cbiAgICByZXR1cm4gaWRcbn1cbiIsICIvKlxuIF8gICAgIF9fICAgICBfIF9fXG58IHwgIC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLyoqXG4gKiBUcnVlIHdoZW4gcnVubmluZyBpbnNpZGUgYSBicm93c2VyL3dlYnZpZXcgd2l0aCBhIERPTSBhdmFpbGFibGUuXG4gKiBGYWxzZSB1bmRlciBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgKGUuZy4gYG5leHQgYnVpbGRgIHByZXJlbmRlcmluZyksXG4gKiB3aGVyZSBhcHBsaWNhdGlvbiBjb2RlIG1heSBpbXBvcnQgdGhlIHJ1bnRpbWUgbW9kdWxlIGV2ZW4gdGhvdWdoIG5vXG4gKiBXYWlscyBBUElzIGNhbiBhY3R1YWxseSBiZSB1c2VkICgjNDY3OSkuIE1vZHVsZXMgbXVzdCBub3QgdG91Y2hcbiAqIGB3aW5kb3dgL2Bkb2N1bWVudGAgYXQgaW1wb3J0IHRpbWUgZXhjZXB0IGJlaGluZCB0aGlzIGd1YXJkLlxuICovXG5leHBvcnQgY29uc3QgaGFzRE9NID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCI7XG4iLCAiLypcbiBfICAgICBfXyAgICAgXyBfX1xufCB8ICAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gXCIuL25hbm9pZC5qc1wiO1xuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuLy8gUmVzb2x2ZWQgbGF6aWx5OiB3aW5kb3cgZG9lcyBub3QgZXhpc3Qgd2hlbiB0aGUgbW9kdWxlIGlzIGltcG9ydGVkIGR1cmluZ1xuLy8gc2VydmVyLXNpZGUgcmVuZGVyaW5nICgjNDY3OSksIGFuZCBub3RoaW5nIGNhbiBjYWxsIHRoZSBydW50aW1lIHRoZXJlLlxuZnVuY3Rpb24gcnVudGltZVVSTCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgXCIvd2FpbHMvcnVudGltZVwiO1xufVxuXG4vLyBTdGF5IHVuZGVyIFdlYlZpZXcyJ3MgfjJNQiByZXF1ZXN0IGJvZHkgYnVmZmVyaW5nIGxpbWl0IGluIFdlYlJlc291cmNlUmVxdWVzdGVkLlxuY29uc3QgQ0hVTktfVEhSRVNIT0xEID0gNTEyICogMTAyNDtcblxuLy8gUmUtZXhwb3J0IG5hbm9pZCBmb3IgY3VzdG9tIHRyYW5zcG9ydCBpbXBsZW1lbnRhdGlvbnNcbmV4cG9ydCB7IG5hbm9pZCB9O1xuXG50eXBlIENhbGxFcnJvclR5cGUgPSB7XG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGNhdXNlPzogdW5rbm93bixcbiAgICBraW5kOiBcIlJlZmVyZW5jZUVycm9yXCIgfCBcIlR5cGVFcnJvclwiIHwgXCJSdW50aW1lRXJyb3JcIlxufVxuXG4vKipcbiAqIEV4Y2VwdGlvbiBjbGFzcyB0aGF0IHdpbGwgYmUgdGhyb3duIGluIGNhc2UgdGhlIGJvdW5kIG1ldGhvZCByZXR1cm5zIGFuIGVycm9yLlxuICogVGhlIHZhbHVlIG9mIHRoZSB7QGxpbmsgUnVudGltZUVycm9yI25hbWV9IHByb3BlcnR5IGlzIFwiUnVudGltZUVycm9yXCIuXG4gKi9cbmV4cG9ydCBjbGFzcyBSdW50aW1lRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBSdW50aW1lRXJyb3IgaW5zdGFuY2UuXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgdG8gYmUgZm9yd2FyZGVkIHRvIHRoZSBFcnJvciBjb25zdHJ1Y3Rvci5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nLCBvcHRpb25zPzogRXJyb3JPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UsIG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIlJ1bnRpbWVFcnJvclwiO1xuICAgIH1cbn1cblxuLy8gT2JqZWN0IE5hbWVzXG5leHBvcnQgY29uc3Qgb2JqZWN0TmFtZXMgPSBPYmplY3QuZnJlZXplKHtcbiAgICBDYWxsOiAwLFxuICAgIENsaXBib2FyZDogMSxcbiAgICBBcHBsaWNhdGlvbjogMixcbiAgICBFdmVudHM6IDMsXG4gICAgQ29udGV4dE1lbnU6IDQsXG4gICAgRGlhbG9nOiA1LFxuICAgIFdpbmRvdzogNixcbiAgICBTY3JlZW5zOiA3LFxuICAgIFN5c3RlbTogOCxcbiAgICBCcm93c2VyOiA5LFxuICAgIENhbmNlbENhbGw6IDEwLFxuICAgIElPUzogMTEsXG4gICAgQW5kcm9pZDogMTIsXG59KTtcbmV4cG9ydCBsZXQgY2xpZW50SWQgPSBuYW5vaWQoKTtcblxuLyoqXG4gKiBSdW50aW1lVHJhbnNwb3J0IGRlZmluZXMgdGhlIGludGVyZmFjZSBmb3IgY3VzdG9tIElQQyB0cmFuc3BvcnQgaW1wbGVtZW50YXRpb25zLlxuICogSW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIHRvIHVzZSBXZWJTb2NrZXRzLCBjdXN0b20gcHJvdG9jb2xzLCBvciBhbnkgb3RoZXJcbiAqIHRyYW5zcG9ydCBtZWNoYW5pc20gaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBIVFRQIGZldGNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bnRpbWVUcmFuc3BvcnQge1xuICAgIC8qKlxuICAgICAqIFNlbmQgYSBydW50aW1lIGNhbGwgYW5kIHJldHVybiB0aGUgcmVzcG9uc2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2JqZWN0SUQgLSBUaGUgV2FpbHMgb2JqZWN0IElEICgwPUNhbGwsIDE9Q2xpcGJvYXJkLCBldGMuKVxuICAgICAqIEBwYXJhbSBtZXRob2QgLSBUaGUgbWV0aG9kIElEIHRvIGNhbGxcbiAgICAgKiBAcGFyYW0gd2luZG93TmFtZSAtIE9wdGlvbmFsIHdpbmRvdyBuYW1lXG4gICAgICogQHBhcmFtIGFyZ3MgLSBBcmd1bWVudHMgdG8gcGFzcyAod2lsbCBiZSBKU09OIHN0cmluZ2lmaWVkIGlmIHByZXNlbnQpXG4gICAgICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3BvbnNlIGRhdGFcbiAgICAgKi9cbiAgICBjYWxsKG9iamVjdElEOiBudW1iZXIsIG1ldGhvZDogbnVtYmVyLCB3aW5kb3dOYW1lOiBzdHJpbmcsIGFyZ3M6IGFueSk6IFByb21pc2U8YW55Pjtcbn1cblxuLyoqXG4gKiBDdXN0b20gdHJhbnNwb3J0IGltcGxlbWVudGF0aW9uIChjYW4gYmUgc2V0IGJ5IHVzZXIpXG4gKi9cbmxldCBjdXN0b21UcmFuc3BvcnQ6IFJ1bnRpbWVUcmFuc3BvcnQgfCBudWxsID0gbnVsbDtcblxuLyoqXG4gKiBTZXQgYSBjdXN0b20gdHJhbnNwb3J0IGZvciBhbGwgV2FpbHMgcnVudGltZSBjYWxscy5cbiAqIFRoaXMgYWxsb3dzIHlvdSB0byByZXBsYWNlIHRoZSBkZWZhdWx0IEhUVFAgZmV0Y2ggdHJhbnNwb3J0IHdpdGhcbiAqIFdlYlNvY2tldHMsIGN1c3RvbSBwcm90b2NvbHMsIG9yIGFueSBvdGhlciBtZWNoYW5pc20uXG4gKlxuICogQHBhcmFtIHRyYW5zcG9ydCAtIFlvdXIgY3VzdG9tIHRyYW5zcG9ydCBpbXBsZW1lbnRhdGlvblxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBzZXRUcmFuc3BvcnQgfSBmcm9tICcvd2FpbHMvcnVudGltZS5qcyc7XG4gKlxuICogY29uc3Qgd3NUcmFuc3BvcnQgPSB7XG4gKiAgIGNhbGw6IGFzeW5jIChvYmplY3RJRCwgbWV0aG9kLCB3aW5kb3dOYW1lLCBhcmdzKSA9PiB7XG4gKiAgICAgLy8gWW91ciBXZWJTb2NrZXQgaW1wbGVtZW50YXRpb25cbiAqICAgfVxuICogfTtcbiAqXG4gKiBzZXRUcmFuc3BvcnQod3NUcmFuc3BvcnQpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRUcmFuc3BvcnQodHJhbnNwb3J0OiBSdW50aW1lVHJhbnNwb3J0IHwgbnVsbCk6IHZvaWQge1xuICAgIGN1c3RvbVRyYW5zcG9ydCA9IHRyYW5zcG9ydDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGN1cnJlbnQgdHJhbnNwb3J0ICh1c2VmdWwgZm9yIGV4dGVuZGluZy93cmFwcGluZylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zcG9ydCgpOiBSdW50aW1lVHJhbnNwb3J0IHwgbnVsbCB7XG4gICAgcmV0dXJuIGN1c3RvbVRyYW5zcG9ydDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHJ1bnRpbWUgY2FsbGVyIHdpdGggc3BlY2lmaWVkIElELlxuICpcbiAqIEBwYXJhbSBvYmplY3QgLSBUaGUgb2JqZWN0IHRvIGludm9rZSB0aGUgbWV0aG9kIG9uLlxuICogQHBhcmFtIHdpbmRvd05hbWUgLSBUaGUgbmFtZSBvZiB0aGUgd2luZG93LlxuICogQHJldHVybiBUaGUgbmV3IHJ1bnRpbWUgY2FsbGVyIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV3UnVudGltZUNhbGxlcihvYmplY3Q6IG51bWJlciwgd2luZG93TmFtZTogc3RyaW5nID0gJycpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG1ldGhvZDogbnVtYmVyLCBhcmdzOiBhbnkgPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBydW50aW1lQ2FsbFdpdGhJRChvYmplY3QsIG1ldGhvZCwgd2luZG93TmFtZSwgYXJncyk7XG4gICAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVudGltZUNhbGxXaXRoSUQob2JqZWN0SUQ6IG51bWJlciwgbWV0aG9kOiBudW1iZXIsIHdpbmRvd05hbWU6IHN0cmluZywgYXJnczogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyBVc2UgY3VzdG9tIHRyYW5zcG9ydCBpZiBhdmFpbGFibGVcbiAgICBpZiAoY3VzdG9tVHJhbnNwb3J0KSB7XG4gICAgICAgIHJldHVybiBjdXN0b21UcmFuc3BvcnQuY2FsbChvYmplY3RJRCwgbWV0aG9kLCB3aW5kb3dOYW1lLCBhcmdzKTtcbiAgICB9XG5cbiAgICAvLyBEZWZhdWx0IEhUVFAgZmV0Y2ggdHJhbnNwb3J0XG4gICAgbGV0IHVybCA9IG5ldyBVUkwocnVudGltZVVSTCgpKTtcblxuICAgIGxldCBib2R5OiB7IG9iamVjdDogbnVtYmVyOyBtZXRob2Q6IG51bWJlciwgYXJncz86IGFueSB9ID0ge1xuICAgICAgb2JqZWN0OiBvYmplY3RJRCxcbiAgICAgIG1ldGhvZFxuICAgIH1cbiAgICBpZiAoYXJncyAhPT0gbnVsbCAmJiBhcmdzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGJvZHkuYXJncyA9IGFyZ3M7XG4gICAgfVxuXG4gICAgbGV0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgIFtcIngtd2FpbHMtY2xpZW50LWlkXCJdOiBjbGllbnRJZCxcbiAgICAgICAgW1wiQ29udGVudC1UeXBlXCJdOiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgIH1cbiAgICBpZiAod2luZG93TmFtZSkge1xuICAgICAgICBoZWFkZXJzW1wieC13YWlscy13aW5kb3ctbmFtZVwiXSA9IHdpbmRvd05hbWU7XG4gICAgfVxuXG4gICAgY29uc3QgYm9keVN0ciA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgIGxldCByZXNwb25zZTogUmVzcG9uc2U7XG4gICAgaWYgKGJvZHlTdHIubGVuZ3RoID4gQ0hVTktfVEhSRVNIT0xEKSB7XG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgc2VuZENodW5rZWQodXJsLCBoZWFkZXJzLCBib2R5U3RyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgeyBtZXRob2Q6ICdQT1NUJywgaGVhZGVycywgYm9keTogYm9keVN0ciB9KTtcbiAgICB9XG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgY29uc3QgY3QgPSByZXNwb25zZS5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKTtcbiAgICAgIGlmIChjdD8uaW5jbHVkZXMoXCJhcHBsaWNhdGlvbi9qc29uXCIpKSB7XG4gICAgICAgICAgY29uc3QganNvbjogQ2FsbEVycm9yVHlwZSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICAgICAgICBsZXQgZXJyO1xuICAgICAgICAgIHN3aXRjaCAoanNvbi5raW5kKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJSZWZlcmVuY2VFcnJvclwiOiBlcnIgPSBuZXcgUmVmZXJlbmNlRXJyb3IoanNvbi5tZXNzYWdlKTsgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJUeXBlRXJyb3JcIjogICAgICBlcnIgPSBuZXcgVHlwZUVycm9yKGpzb24ubWVzc2FnZSk7IGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiUnVudGltZUVycm9yXCI6ICAgZXJyID0gbmV3IFJ1bnRpbWVFcnJvcihqc29uLm1lc3NhZ2UpOyBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICBlcnIgPSBuZXcgRXJyb3IoanNvbi5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXJyLmNhdXNlID0ganNvbi5jYXVzZTtcbiAgICAgICAgICB0aHJvdyBlcnJcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihhd2FpdCByZXNwb25zZS50ZXh0KCkpO1xuICAgIH1cblxuICAgIGlmICgocmVzcG9uc2UuaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIik/LmluZGV4T2YoXCJhcHBsaWNhdGlvbi9qc29uXCIpID8/IC0xKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpO1xuICAgIH1cbn1cblxuLy8gc2VuZENodW5rZWQgc3BsaXRzIGEgbGFyZ2Ugc2VyaWFsaXNlZCByZXF1ZXN0IGJvZHkgaW50byBDSFVOS19USFJFU0hPTEQtc2l6ZWRcbi8vIGJ5dGUgY2h1bmtzIGFuZCBzZW5kcyB0aGVtIHNlcmlhbGx5LiAgRW5jb2RpbmcgdG8gVVRGLTggYnl0ZXMgYmVmb3JlIHNsaWNpbmdcbi8vIHByZXZlbnRzIGNvcnJ1cHRpb24gb2Ygbm9uLUJNUCBjaGFyYWN0ZXJzIChzdXJyb2dhdGUgcGFpcnMpIHRoYXQgd291bGQgb2NjdXJcbi8vIHdoZW4gc3BsaXR0aW5nIGF0IEphdmFTY3JpcHQgc3RyaW5nIGluZGljZXMuICBUaGUgR28gdHJhbnNwb3J0IGFzc2VtYmxlcyB0aGVcbi8vIHJhdyBieXRlcyBiZWZvcmUgcHJvY2Vzc2luZy4gIE9ubHkgdGhlIGZpbmFsIGNodW5rJ3MgcmVzcG9uc2UgY2FycmllcyB0aGUgUlBDIHJlc3VsdC5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRDaHVua2VkKHVybDogVVJMLCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBib2R5U3RyOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgY2h1bmtJZCA9IG5hbm9pZCgpO1xuICAgIGNvbnN0IGJvZHlCeXRlcyA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShib2R5U3RyKTtcbiAgICBjb25zdCB0b3RhbENodW5rcyA9IE1hdGguY2VpbChib2R5Qnl0ZXMubGVuZ3RoIC8gQ0hVTktfVEhSRVNIT0xEKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG90YWxDaHVua3MgLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2h1bmsgPSBib2R5Qnl0ZXMuc3ViYXJyYXkoaSAqIENIVU5LX1RIUkVTSE9MRCwgKGkgKyAxKSAqIENIVU5LX1RIUkVTSE9MRCk7XG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgJ3gtd2FpbHMtY2h1bmstaWQnOiBjaHVua0lkLFxuICAgICAgICAgICAgICAgICd4LXdhaWxzLWNodW5rLWluZGV4JzogU3RyaW5nKGkpLFxuICAgICAgICAgICAgICAgICd4LXdhaWxzLWNodW5rLXRvdGFsJzogU3RyaW5nKHRvdGFsQ2h1bmtzKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib2R5OiBjaHVuayxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcmVzcC5vaykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGF3YWl0IHJlc3AudGV4dCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICAgICAgICAneC13YWlscy1jaHVuay1pZCc6IGNodW5rSWQsXG4gICAgICAgICAgICAneC13YWlscy1jaHVuay1pbmRleCc6IFN0cmluZyh0b3RhbENodW5rcyAtIDEpLFxuICAgICAgICAgICAgJ3gtd2FpbHMtY2h1bmstdG90YWwnOiBTdHJpbmcodG90YWxDaHVua3MpLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBib2R5Qnl0ZXMuc3ViYXJyYXkoKHRvdGFsQ2h1bmtzIC0gMSkgKiBDSFVOS19USFJFU0hPTEQpLFxuICAgIH0pO1xufVxuXG4vKipcbiAqIEFuZHJvaWQgV2ViVmlldyBjYW5ub3QgZGVsaXZlciBmZXRjaCgpIFBPU1QgYm9kaWVzIHRvXG4gKiBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0LCBzbyB0aGUgZGVmYXVsdCBIVFRQIHRyYW5zcG9ydCBjYW5ub3QgcmVhY2ggR28uXG4gKiBXaGVuIHRoZSBBbmRyb2lkIEphdmFzY3JpcHRJbnRlcmZhY2UgYnJpZGdlICh3aW5kb3cud2FpbHMpIGlzIHByZXNlbnQsXG4gKiByb3V0ZSBydW50aW1lIGNhbGxzIHRocm91Z2ggaXQgaW5zdGVhZC4gUmVzcG9uc2VzIGFycml2ZSB2aWFcbiAqIHdpbmRvdy5fd2FpbHNBbmRyb2lkQ2FsbGJhY2ssIGludm9rZWQgYnkgdGhlIEphdmEgc2lkZS5cbiAqL1xuaW50ZXJmYWNlIEFuZHJvaWRKU0JyaWRnZSB7XG4gICAgaW52b2tlQXN5bmMoY2FsbGJhY2tJRDogc3RyaW5nLCBwYXlsb2FkOiBzdHJpbmcpOiB2b2lkO1xufVxuXG5jb25zdCBhbmRyb2lkQnJpZGdlOiBBbmRyb2lkSlNCcmlkZ2UgfCBudWxsID0gaGFzRE9NICYmXG4gICAgdHlwZW9mICh3aW5kb3cgYXMgYW55KS53YWlscz8uaW52b2tlQXN5bmMgPT09IFwiZnVuY3Rpb25cIiA/ICh3aW5kb3cgYXMgYW55KS53YWlscyA6IG51bGw7XG5cbmlmIChhbmRyb2lkQnJpZGdlKSB7XG4gICAgY29uc3QgcGVuZGluZyA9IG5ldyBNYXA8c3RyaW5nLCB7IHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkOyByZWplY3Q6IChyZWFzb246IGFueSkgPT4gdm9pZCB9PigpO1xuXG4gICAgKHdpbmRvdyBhcyBhbnkpLl93YWlsc0FuZHJvaWRDYWxsYmFjayA9IChpZDogc3RyaW5nLCByZXNwb25zZTogc3RyaW5nIHwgbnVsbCwgZXJyb3I6IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IHBlbmRpbmcuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFwcm9taXNlKSByZXR1cm47XG4gICAgICAgIHBlbmRpbmcuZGVsZXRlKGlkKTtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdChuZXcgRXJyb3IoZXJyb3IpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZW52ZWxvcGUgPSBKU09OLnBhcnNlKHJlc3BvbnNlID8/IFwie31cIik7XG4gICAgICAgICAgICBpZiAoIWVudmVsb3BlLm9rKSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGVudmVsb3BlLmVycm9yID8/IFwidW5rbm93biBydW50aW1lIGNhbGwgZXJyb3JcIikpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShcInRleHRcIiBpbiBlbnZlbG9wZSA/IGVudmVsb3BlLnRleHQgOiBlbnZlbG9wZS5kYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY3VzdG9tVHJhbnNwb3J0ID0ge1xuICAgICAgICBjYWxsKG9iamVjdElEOiBudW1iZXIsIG1ldGhvZDogbnVtYmVyLCB3aW5kb3dOYW1lOiBzdHJpbmcsIGFyZ3M6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gbmFub2lkKCk7XG4gICAgICAgICAgICAgICAgcGVuZGluZy5zZXQoaWQsIHsgcmVzb2x2ZSwgcmVqZWN0IH0pO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGFuZHJvaWRCcmlkZ2UuaW52b2tlQXN5bmMoaWQsIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogb2JqZWN0SUQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd05hbWU6IHdpbmRvd05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzOiBhcmdzID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWQsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGxlYWsgdGhlIHBlbmRpbmcgZW50cnkgaWYgZGlzcGF0Y2ggdGhyb3dzIHN5bmNocm9ub3VzbHlcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZy5kZWxldGUoaWQpO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHtuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lc30gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG4vLyBzZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xufVxuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5EaWFsb2cpO1xuXG4vLyBEZWZpbmUgY29uc3RhbnRzIGZyb20gdGhlIGBtZXRob2RzYCBvYmplY3QgaW4gVGl0bGUgQ2FzZVxuY29uc3QgRGlhbG9nSW5mbyA9IDA7XG5jb25zdCBEaWFsb2dXYXJuaW5nID0gMTtcbmNvbnN0IERpYWxvZ0Vycm9yID0gMjtcbmNvbnN0IERpYWxvZ1F1ZXN0aW9uID0gMztcbmNvbnN0IERpYWxvZ09wZW5GaWxlID0gNDtcbmNvbnN0IERpYWxvZ1NhdmVGaWxlID0gNTtcblxuZXhwb3J0IGludGVyZmFjZSBPcGVuRmlsZURpYWxvZ09wdGlvbnMge1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZGlyZWN0b3JpZXMgY2FuIGJlIGNob3Nlbi4gKi9cbiAgICBDYW5DaG9vc2VEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBmaWxlcyBjYW4gYmUgY2hvc2VuLiAqL1xuICAgIENhbkNob29zZUZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGRpcmVjdG9yaWVzIGNhbiBiZSBjcmVhdGVkLiAqL1xuICAgIENhbkNyZWF0ZURpcmVjdG9yaWVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGhpZGRlbiBmaWxlcyBzaG91bGQgYmUgc2hvd24uICovXG4gICAgU2hvd0hpZGRlbkZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGFsaWFzZXMgc2hvdWxkIGJlIHJlc29sdmVkLiAqL1xuICAgIFJlc29sdmVzQWxpYXNlcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBtdWx0aXBsZSBzZWxlY3Rpb24gaXMgYWxsb3dlZC4gKi9cbiAgICBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZXh0ZW5zaW9uIHNob3VsZCBiZSBoaWRkZW4uICovXG4gICAgSGlkZUV4dGVuc2lvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBoaWRkZW4gZXh0ZW5zaW9ucyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gICAgQ2FuU2VsZWN0SGlkZGVuRXh0ZW5zaW9uPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGZpbGUgcGFja2FnZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZGlyZWN0b3JpZXMuICovXG4gICAgVHJlYXRzRmlsZVBhY2thZ2VzQXNEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBvdGhlciBmaWxlIHR5cGVzIGFyZSBhbGxvd2VkLiAqL1xuICAgIEFsbG93c090aGVyRmlsZXR5cGVzPzogYm9vbGVhbjtcbiAgICAvKiogQXJyYXkgb2YgZmlsZSBmaWx0ZXJzLiAqL1xuICAgIEZpbHRlcnM/OiBGaWxlRmlsdGVyW107XG4gICAgLyoqIFRpdGxlIG9mIHRoZSBkaWFsb2cuICovXG4gICAgVGl0bGU/OiBzdHJpbmc7XG4gICAgLyoqIE1lc3NhZ2UgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIE1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgLyoqIFRleHQgdG8gZGlzcGxheSBvbiB0aGUgYnV0dG9uLiAqL1xuICAgIEJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gICAgLyoqIERpcmVjdG9yeSB0byBvcGVuIGluIHRoZSBkaWFsb2cuICovXG4gICAgRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGRpYWxvZyBzaG91bGQgYXBwZWFyIGRldGFjaGVkIGZyb20gdGhlIG1haW4gd2luZG93LiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYXZlRmlsZURpYWxvZ09wdGlvbnMge1xuICAgIC8qKiBEZWZhdWx0IGZpbGVuYW1lIHRvIHVzZSBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIEZpbGVuYW1lPzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZGlyZWN0b3JpZXMgY2FuIGJlIGNob3Nlbi4gKi9cbiAgICBDYW5DaG9vc2VEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBmaWxlcyBjYW4gYmUgY2hvc2VuLiAqL1xuICAgIENhbkNob29zZUZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGRpcmVjdG9yaWVzIGNhbiBiZSBjcmVhdGVkLiAqL1xuICAgIENhbkNyZWF0ZURpcmVjdG9yaWVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGhpZGRlbiBmaWxlcyBzaG91bGQgYmUgc2hvd24uICovXG4gICAgU2hvd0hpZGRlbkZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGFsaWFzZXMgc2hvdWxkIGJlIHJlc29sdmVkLiAqL1xuICAgIFJlc29sdmVzQWxpYXNlcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZXh0ZW5zaW9uIHNob3VsZCBiZSBoaWRkZW4uICovXG4gICAgSGlkZUV4dGVuc2lvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBoaWRkZW4gZXh0ZW5zaW9ucyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gICAgQ2FuU2VsZWN0SGlkZGVuRXh0ZW5zaW9uPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGZpbGUgcGFja2FnZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZGlyZWN0b3JpZXMuICovXG4gICAgVHJlYXRzRmlsZVBhY2thZ2VzQXNEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBvdGhlciBmaWxlIHR5cGVzIGFyZSBhbGxvd2VkLiAqL1xuICAgIEFsbG93c090aGVyRmlsZXR5cGVzPzogYm9vbGVhbjtcbiAgICAvKiogQXJyYXkgb2YgZmlsZSBmaWx0ZXJzLiAqL1xuICAgIEZpbHRlcnM/OiBGaWxlRmlsdGVyW107XG4gICAgLyoqIFRpdGxlIG9mIHRoZSBkaWFsb2cuICovXG4gICAgVGl0bGU/OiBzdHJpbmc7XG4gICAgLyoqIE1lc3NhZ2UgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIE1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgLyoqIFRleHQgdG8gZGlzcGxheSBvbiB0aGUgYnV0dG9uLiAqL1xuICAgIEJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gICAgLyoqIERpcmVjdG9yeSB0byBvcGVuIGluIHRoZSBkaWFsb2cuICovXG4gICAgRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGRpYWxvZyBzaG91bGQgYXBwZWFyIGRldGFjaGVkIGZyb20gdGhlIG1haW4gd2luZG93LiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlRGlhbG9nT3B0aW9ucyB7XG4gICAgLyoqIFRoZSB0aXRsZSBvZiB0aGUgZGlhbG9nIHdpbmRvdy4gKi9cbiAgICBUaXRsZT86IHN0cmluZztcbiAgICAvKiogVGhlIG1haW4gbWVzc2FnZSB0byBzaG93IGluIHRoZSBkaWFsb2cuICovXG4gICAgTWVzc2FnZT86IHN0cmluZztcbiAgICAvKiogQXJyYXkgb2YgYnV0dG9uIG9wdGlvbnMgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIEJ1dHRvbnM/OiBCdXR0b25bXTtcbiAgICAvKiogVHJ1ZSBpZiB0aGUgZGlhbG9nIHNob3VsZCBhcHBlYXIgZGV0YWNoZWQgZnJvbSB0aGUgbWFpbiB3aW5kb3cgKGlmIGFwcGxpY2FibGUpLiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b24ge1xuICAgIC8qKiBUZXh0IHRoYXQgYXBwZWFycyB3aXRoaW4gdGhlIGJ1dHRvbi4gKi9cbiAgICBMYWJlbD86IHN0cmluZztcbiAgICAvKiogVHJ1ZSBpZiB0aGUgYnV0dG9uIHNob3VsZCBjYW5jZWwgYW4gb3BlcmF0aW9uIHdoZW4gY2xpY2tlZC4gKi9cbiAgICBJc0NhbmNlbD86IGJvb2xlYW47XG4gICAgLyoqIFRydWUgaWYgdGhlIGJ1dHRvbiBzaG91bGQgYmUgdGhlIGRlZmF1bHQgYWN0aW9uIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBlbnRlci4gKi9cbiAgICBJc0RlZmF1bHQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVGaWx0ZXIge1xuICAgIC8qKiBEaXNwbGF5IG5hbWUgZm9yIHRoZSBmaWx0ZXIsIGl0IGNvdWxkIGJlIFwiVGV4dCBGaWxlc1wiLCBcIkltYWdlc1wiIGV0Yy4gKi9cbiAgICBEaXNwbGF5TmFtZT86IHN0cmluZztcbiAgICAvKiogUGF0dGVybiB0byBtYXRjaCBmb3IgdGhlIGZpbHRlciwgZS5nLiBcIioudHh0OyoubWRcIiBmb3IgdGV4dCBtYXJrZG93biBmaWxlcy4gKi9cbiAgICBQYXR0ZXJuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByZXNlbnRzIGEgZGlhbG9nIG9mIHNwZWNpZmllZCB0eXBlIHdpdGggdGhlIGdpdmVuIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHR5cGUgLSBEaWFsb2cgdHlwZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgdGhlIGRpYWxvZy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggcmVzdWx0IG9mIGRpYWxvZy5cbiAqL1xuZnVuY3Rpb24gZGlhbG9nKHR5cGU6IG51bWJlciwgb3B0aW9uczogTWVzc2FnZURpYWxvZ09wdGlvbnMgfCBPcGVuRmlsZURpYWxvZ09wdGlvbnMgfCBTYXZlRmlsZURpYWxvZ09wdGlvbnMgPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGNhbGwodHlwZSwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogUHJlc2VudHMgYW4gaW5mbyBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9uc1xuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbGFiZWwgb2YgdGhlIGNob3NlbiBidXR0b24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJbmZvKG9wdGlvbnM6IE1lc3NhZ2VEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHsgcmV0dXJuIGRpYWxvZyhEaWFsb2dJbmZvLCBvcHRpb25zKTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgd2FybmluZyBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGxhYmVsIG9mIHRoZSBjaG9zZW4gYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gV2FybmluZyhvcHRpb25zOiBNZXNzYWdlRGlhbG9nT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7IHJldHVybiBkaWFsb2coRGlhbG9nV2FybmluZywgb3B0aW9ucyk7IH1cblxuLyoqXG4gKiBQcmVzZW50cyBhbiBlcnJvciBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGxhYmVsIG9mIHRoZSBjaG9zZW4gYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRXJyb3Iob3B0aW9uczogTWVzc2FnZURpYWxvZ09wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4geyByZXR1cm4gZGlhbG9nKERpYWxvZ0Vycm9yLCBvcHRpb25zKTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgcXVlc3Rpb24gZGlhbG9nLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gRGlhbG9nIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBsYWJlbCBvZiB0aGUgY2hvc2VuIGJ1dHRvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFF1ZXN0aW9uKG9wdGlvbnM6IE1lc3NhZ2VEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHsgcmV0dXJuIGRpYWxvZyhEaWFsb2dRdWVzdGlvbiwgb3B0aW9ucyk7IH1cblxuLyoqXG4gKiBQcmVzZW50cyBhIGZpbGUgc2VsZWN0aW9uIGRpYWxvZyB0byBwaWNrIG9uZSBvciBtb3JlIGZpbGVzIHRvIG9wZW4uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFNlbGVjdGVkIGZpbGUgb3IgbGlzdCBvZiBmaWxlcywgb3IgYSBibGFuayBzdHJpbmcvZW1wdHkgbGlzdCBpZiBubyBmaWxlIGhhcyBiZWVuIHNlbGVjdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zICYgeyBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjogdHJ1ZSB9KTogUHJvbWlzZTxzdHJpbmdbXT47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zICYgeyBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbj86IGZhbHNlIHwgdW5kZWZpbmVkIH0pOiBQcm9taXNlPHN0cmluZz47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCBzdHJpbmdbXT47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCBzdHJpbmdbXT4geyByZXR1cm4gZGlhbG9nKERpYWxvZ09wZW5GaWxlLCBvcHRpb25zKSA/PyBbXTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgZmlsZSBzZWxlY3Rpb24gZGlhbG9nIHRvIHBpY2sgYSBmaWxlIHRvIHNhdmUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFNlbGVjdGVkIGZpbGUsIG9yIGEgYmxhbmsgc3RyaW5nIGlmIG5vIGZpbGUgaGFzIGJlZW4gc2VsZWN0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTYXZlRmlsZShvcHRpb25zOiBTYXZlRmlsZURpYWxvZ09wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4geyByZXR1cm4gZGlhbG9nKERpYWxvZ1NhdmVGaWxlLCBvcHRpb25zKTsgfVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmltcG9ydCB7IGV2ZW50TGlzdGVuZXJzLCBMaXN0ZW5lciwgbGlzdGVuZXJPZmYgfSBmcm9tIFwiLi9saXN0ZW5lci5qc1wiO1xuaW1wb3J0IHsgRXZlbnRzIGFzIENyZWF0ZSB9IGZyb20gXCIuL2NyZWF0ZS5qc1wiO1xuaW1wb3J0IHsgVHlwZXMgfSBmcm9tIFwiLi9ldmVudF90eXBlcy5qc1wiO1xuXG4vLyBTZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xuICAgIHdpbmRvdy5fd2FpbHMuZGlzcGF0Y2hXYWlsc0V2ZW50ID0gZGlzcGF0Y2hXYWlsc0V2ZW50O1xufVxuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5FdmVudHMpO1xuY29uc3QgRW1pdE1ldGhvZCA9IDA7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2V2ZW50X3R5cGVzLmpzXCI7XG5cbi8qKlxuICogQSB0YWJsZSBvZiBkYXRhIHR5cGVzIGZvciBhbGwga25vd24gZXZlbnRzLlxuICogV2lsbCBiZSBtb25rZXktcGF0Y2hlZCBieSB0aGUgYmluZGluZyBnZW5lcmF0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tRXZlbnRzIHt9XG5cbi8qKlxuICogRWl0aGVyIGEga25vd24gZXZlbnQgbmFtZSBvciBhbiBhcmJpdHJhcnkgc3RyaW5nLlxuICovXG5leHBvcnQgdHlwZSBXYWlsc0V2ZW50TmFtZTxFIGV4dGVuZHMga2V5b2YgQ3VzdG9tRXZlbnRzID0ga2V5b2YgQ3VzdG9tRXZlbnRzPiA9IEUgfCAoc3RyaW5nICYge30pO1xuXG4vKipcbiAqIFVuaW9uIG9mIGFsbCBrbm93biBzeXN0ZW0gZXZlbnQgbmFtZXMuXG4gKi9cbnR5cGUgU3lzdGVtRXZlbnROYW1lID0ge1xuICAgIFtLIGluIGtleW9mICh0eXBlb2YgVHlwZXMpXTogKHR5cGVvZiBUeXBlcylbS11ba2V5b2YgKCh0eXBlb2YgVHlwZXMpW0tdKV1cbn0gZXh0ZW5kcyAoaW5mZXIgTSkgPyBNW2tleW9mIE1dIDogbmV2ZXI7XG5cbi8qKlxuICogVGhlIGRhdGEgdHlwZSBhc3NvY2lhdGVkIHRvIGEgZ2l2ZW4gZXZlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFdhaWxzRXZlbnREYXRhPEUgZXh0ZW5kcyBXYWlsc0V2ZW50TmFtZSA9IFdhaWxzRXZlbnROYW1lPiA9XG4gICAgRSBleHRlbmRzIGtleW9mIEN1c3RvbUV2ZW50cyA/IEN1c3RvbUV2ZW50c1tFXSA6IChFIGV4dGVuZHMgU3lzdGVtRXZlbnROYW1lID8gdm9pZCA6IGFueSk7XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgaGFuZGxlcnMgZm9yIGEgZ2l2ZW4gZXZlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFdhaWxzRXZlbnRDYWxsYmFjazxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4gPSAoZXY6IFdhaWxzRXZlbnQ8RT4pID0+IHZvaWQ7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHN5c3RlbSBldmVudCBvciBhIGN1c3RvbSBldmVudCBlbWl0dGVkIHRocm91Z2ggd2FpbHMtcHJvdmlkZWQgZmFjaWxpdGllcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFdhaWxzRXZlbnQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAgICovXG4gICAgbmFtZTogRTtcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbWl0dGVkIGV2ZW50LlxuICAgICAqL1xuICAgIGRhdGE6IFdhaWxzRXZlbnREYXRhPEU+O1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgb3JpZ2luYXRpbmcgd2luZG93LiBPbWl0dGVkIGZvciBhcHBsaWNhdGlvbiBldmVudHMuXG4gICAgICogV2lsbCBiZSBvdmVycmlkZGVuIGlmIHNldCBtYW51YWxseS5cbiAgICAgKi9cbiAgICBzZW5kZXI/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBFLCBkYXRhOiBXYWlsc0V2ZW50RGF0YTxFPik7XG4gICAgY29uc3RydWN0b3IobmFtZTogV2FpbHNFdmVudERhdGE8RT4gZXh0ZW5kcyBudWxsIHwgdm9pZCA/IEUgOiBuZXZlcilcbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBFLCBkYXRhPzogYW55KSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGEgPz8gbnVsbDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoV2FpbHNFdmVudChldmVudDogYW55KSB7XG4gICAgbGV0IGxpc3RlbmVycyA9IGV2ZW50TGlzdGVuZXJzLmdldChldmVudC5uYW1lKTtcbiAgICBpZiAoIWxpc3RlbmVycykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHdhaWxzRXZlbnQgPSBuZXcgV2FpbHNFdmVudChcbiAgICAgICAgZXZlbnQubmFtZSxcbiAgICAgICAgKGV2ZW50Lm5hbWUgaW4gQ3JlYXRlKSA/IENyZWF0ZVtldmVudC5uYW1lXShldmVudC5kYXRhKSA6IGV2ZW50LmRhdGFcbiAgICApO1xuICAgIGlmICgnc2VuZGVyJyBpbiBldmVudCkge1xuICAgICAgICB3YWlsc0V2ZW50LnNlbmRlciA9IGV2ZW50LnNlbmRlcjtcbiAgICB9XG5cbiAgICAvLyBEaXNwYXRjaCB0byBhIHNuYXBzaG90LCB0aGVuIHJlbW92ZSBhbGwgZXhwaXJlZCBsaXN0ZW5lcnMgaW4gYSBzaW5nbGVcbiAgICAvLyBwb3N0LWRpc3BhdGNoIGZpbHRlciBvZiB0aGUgbGl2ZSBtYXAuXG4gICAgLy8gLSBXcml0aW5nIHRoZSBzbmFwc2hvdCBiYWNrIHdob2xlc2FsZSB3b3VsZCB1bmRvIHN1YnNjcmlwdGlvbiBjaGFuZ2VzXG4gICAgLy8gICBtYWRlIGluc2lkZSBhIGhhbmRsZXIgKCM0MzkzKS5cbiAgICAvLyAtIENhbGxpbmcgbGlzdGVuZXJPZmYoKSBwZXIgZXhwaXJlZCBsaXN0ZW5lciBpbnNpZGUgdGhlIGxvb3AgaXMgTyhuXHUwMEIyKVxuICAgIC8vICAgd2hlbiBtYW55IGxpc3RlbmVycyBleHBpcmUgb24gdGhlIHNhbWUgZXZlbnQuXG4gICAgLy8gRmlsdGVyaW5nIHRoZSBsaXZlIGFycmF5IG9uY2UgYWZ0ZXIgZGlzcGF0Y2ggaXMgTyhuKSBhbmQgc3RpbGwgaG9ub3Vyc1xuICAgIC8vIGFueSBsaXN0ZW5lcnMgYWRkZWQgb3IgcmVtb3ZlZCBieSBoYW5kbGVycyBkdXJpbmcgZGlzcGF0Y2guXG4gICAgY29uc3QgZXhwaXJlZCA9IG5ldyBTZXQ8TGlzdGVuZXI+KCk7XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMuc2xpY2UoKSkge1xuICAgICAgICBpZiAobGlzdGVuZXIuZGlzcGF0Y2god2FpbHNFdmVudCkpIHtcbiAgICAgICAgICAgIGV4cGlyZWQuYWRkKGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXhwaXJlZC5zaXplID4gMCkge1xuICAgICAgICBjb25zdCBsaXZlID0gZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50Lm5hbWUpO1xuICAgICAgICBpZiAobGl2ZSkge1xuICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nID0gbGl2ZS5maWx0ZXIobCA9PiAhZXhwaXJlZC5oYXMobCkpO1xuICAgICAgICAgICAgaWYgKHJlbWFpbmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBldmVudExpc3RlbmVycy5kZWxldGUoZXZlbnQubmFtZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV2ZW50TGlzdGVuZXJzLnNldChldmVudC5uYW1lLCByZW1haW5pbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGZvciBhIHNwZWNpZmljIGV2ZW50LlxuICpcbiAqIEBwYXJhbSBldmVudE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQgdG8gcmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZvci5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICogQHBhcmFtIG1heENhbGxiYWNrcyAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0aGUgY2FsbGJhY2sgY2FuIGJlIGNhbGxlZCBmb3IgdGhlIGV2ZW50LiBPbmNlIHRoZSBtYXhpbXVtIG51bWJlciBpcyByZWFjaGVkLCB0aGUgY2FsbGJhY2sgd2lsbCBubyBsb25nZXIgYmUgY2FsbGVkLlxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0LCB3aGVuIGNhbGxlZCwgd2lsbCB1bnJlZ2lzdGVyIHRoZSBjYWxsYmFjayBmcm9tIHRoZSBldmVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE9uTXVsdGlwbGU8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KGV2ZW50TmFtZTogRSwgY2FsbGJhY2s6IFdhaWxzRXZlbnRDYWxsYmFjazxFPiwgbWF4Q2FsbGJhY2tzOiBudW1iZXIpIHtcbiAgICBsZXQgbGlzdGVuZXJzID0gZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50TmFtZSkgfHwgW107XG4gICAgY29uc3QgdGhpc0xpc3RlbmVyID0gbmV3IExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2ssIG1heENhbGxiYWNrcyk7XG4gICAgbGlzdGVuZXJzLnB1c2godGhpc0xpc3RlbmVyKTtcbiAgICBldmVudExpc3RlbmVycy5zZXQoZXZlbnROYW1lLCBsaXN0ZW5lcnMpO1xuICAgIHJldHVybiAoKSA9PiBsaXN0ZW5lck9mZih0aGlzTGlzdGVuZXIpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIHNwZWNpZmllZCBldmVudCBvY2N1cnMuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudCB0byByZWdpc3RlciB0aGUgY2FsbGJhY2sgZm9yLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLCB3aWxsIHVucmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZyb20gdGhlIGV2ZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gT248RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KGV2ZW50TmFtZTogRSwgY2FsbGJhY2s6IFdhaWxzRXZlbnRDYWxsYmFjazxFPik6ICgpID0+IHZvaWQge1xuICAgIHJldHVybiBPbk11bHRpcGxlKGV2ZW50TmFtZSwgY2FsbGJhY2ssIC0xKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBvbmx5IG9uY2UgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudCB0byByZWdpc3RlciB0aGUgY2FsbGJhY2sgZm9yLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLCB3aWxsIHVucmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZyb20gdGhlIGV2ZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gT25jZTxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4oZXZlbnROYW1lOiBFLCBjYWxsYmFjazogV2FpbHNFdmVudENhbGxiYWNrPEU+KTogKCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIE9uTXVsdGlwbGUoZXZlbnROYW1lLCBjYWxsYmFjaywgMSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBldmVudCBsaXN0ZW5lcnMgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQgbmFtZXMuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZXMgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnRzIHRvIHJlbW92ZSBsaXN0ZW5lcnMgZm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT2ZmKC4uLmV2ZW50TmFtZXM6IFtXYWlsc0V2ZW50TmFtZSwgLi4uV2FpbHNFdmVudE5hbWVbXV0pOiB2b2lkIHtcbiAgICBldmVudE5hbWVzLmZvckVhY2goZXZlbnROYW1lID0+IGV2ZW50TGlzdGVuZXJzLmRlbGV0ZShldmVudE5hbWUpKTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBldmVudCBsaXN0ZW5lcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBPZmZBbGwoKTogdm9pZCB7XG4gICAgZXZlbnRMaXN0ZW5lcnMuY2xlYXIoKTtcbn1cblxuLyoqXG4gKiBFbWl0cyBhbiBldmVudC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCB3aWxsIGJlIGZ1bGZpbGxlZCBvbmNlIHRoZSBldmVudCBoYXMgYmVlbiBlbWl0dGVkLiAgUmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGUgZXZlbnQgd2FzIGNhbmNlbGxlZC5cbiAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50IHRvIGVtaXRcbiAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgdGhhdCB3aWxsIGJlIHNlbnQgd2l0aCB0aGUgZXZlbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVtaXQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KG5hbWU6IEUsIGRhdGE6IFdhaWxzRXZlbnREYXRhPEU+KTogUHJvbWlzZTxib29sZWFuPlxuZXhwb3J0IGZ1bmN0aW9uIEVtaXQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KG5hbWU6IFdhaWxzRXZlbnREYXRhPEU+IGV4dGVuZHMgbnVsbCB8IHZvaWQgPyBFIDogbmV2ZXIpOiBQcm9taXNlPGJvb2xlYW4+XG5leHBvcnQgZnVuY3Rpb24gRW1pdDxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4obmFtZTogV2FpbHNFdmVudERhdGE8RT4sIGRhdGE/OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gY2FsbChFbWl0TWV0aG9kLCAgbmV3IFdhaWxzRXZlbnQobmFtZSwgZGF0YSkpXG59XG5cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLy8gVGhlIGZvbGxvd2luZyB1dGlsaXRpZXMgaGF2ZSBiZWVuIGZhY3RvcmVkIG91dCBvZiAuL2V2ZW50cy50c1xuLy8gZm9yIHRlc3RpbmcgcHVycG9zZXMuXG5cbmV4cG9ydCBjb25zdCBldmVudExpc3RlbmVycyA9IG5ldyBNYXA8c3RyaW5nLCBMaXN0ZW5lcltdPigpO1xuXG5leHBvcnQgY2xhc3MgTGlzdGVuZXIge1xuICAgIGV2ZW50TmFtZTogc3RyaW5nO1xuICAgIGNhbGxiYWNrOiAoZGF0YTogYW55KSA9PiB2b2lkO1xuICAgIG1heENhbGxiYWNrczogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IoZXZlbnROYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoZGF0YTogYW55KSA9PiB2b2lkLCBtYXhDYWxsYmFja3M6IG51bWJlcikge1xuICAgICAgICB0aGlzLmV2ZW50TmFtZSA9IGV2ZW50TmFtZTtcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgICB0aGlzLm1heENhbGxiYWNrcyA9IG1heENhbGxiYWNrcyB8fCAtMTtcbiAgICB9XG5cbiAgICBkaXNwYXRjaChkYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2soZGF0YSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWF4Q2FsbGJhY2tzID09PSAtMSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0aGlzLm1heENhbGxiYWNrcyAtPSAxO1xuICAgICAgICByZXR1cm4gdGhpcy5tYXhDYWxsYmFja3MgPT09IDA7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuZXJPZmYobGlzdGVuZXI6IExpc3RlbmVyKTogdm9pZCB7XG4gICAgbGV0IGxpc3RlbmVycyA9IGV2ZW50TGlzdGVuZXJzLmdldChsaXN0ZW5lci5ldmVudE5hbWUpO1xuICAgIGlmICghbGlzdGVuZXJzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnMuZmlsdGVyKGwgPT4gbCAhPT0gbGlzdGVuZXIpO1xuICAgIGlmIChsaXN0ZW5lcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50TGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lci5ldmVudE5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGV2ZW50TGlzdGVuZXJzLnNldChsaXN0ZW5lci5ldmVudE5hbWUsIGxpc3RlbmVycyk7XG4gICAgfVxufVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG4vKipcbiAqIEFueSBpcyBhIGR1bW15IGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBzaW1wbGUgb3IgdW5rbm93biB0eXBlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFueTxUID0gYW55Pihzb3VyY2U6IGFueSk6IFQge1xuICAgIHJldHVybiBzb3VyY2U7XG59XG5cbi8qKlxuICogQnl0ZVNsaWNlIGlzIGEgY3JlYXRpb24gZnVuY3Rpb24gdGhhdCByZXBsYWNlc1xuICogbnVsbCBzdHJpbmdzIHdpdGggZW1wdHkgc3RyaW5ncy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJ5dGVTbGljZShzb3VyY2U6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuICgoc291cmNlID09IG51bGwpID8gXCJcIiA6IHNvdXJjZSk7XG59XG5cbi8qKlxuICogQXJyYXkgdGFrZXMgYSBjcmVhdGlvbiBmdW5jdGlvbiBmb3IgYW4gYXJiaXRyYXJ5IHR5cGVcbiAqIGFuZCByZXR1cm5zIGFuIGluLXBsYWNlIGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBhbiBhcnJheVxuICogd2hvc2UgZWxlbWVudHMgYXJlIG9mIHRoYXQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFycmF5PFQgPSBhbnk+KGVsZW1lbnQ6IChzb3VyY2U6IGFueSkgPT4gVCk6IChzb3VyY2U6IGFueSkgPT4gVFtdIHtcbiAgICBpZiAoZWxlbWVudCA9PT0gQW55KSB7XG4gICAgICAgIHJldHVybiAoc291cmNlKSA9PiAoc291cmNlID09PSBudWxsID8gW10gOiBzb3VyY2UpO1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiB7XG4gICAgICAgIGlmIChzb3VyY2UgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc291cmNlW2ldID0gZWxlbWVudChzb3VyY2VbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBNYXAgdGFrZXMgY3JlYXRpb24gZnVuY3Rpb25zIGZvciB0d28gYXJiaXRyYXJ5IHR5cGVzXG4gKiBhbmQgcmV0dXJucyBhbiBpbi1wbGFjZSBjcmVhdGlvbiBmdW5jdGlvbiBmb3IgYW4gb2JqZWN0XG4gKiB3aG9zZSBrZXlzIGFuZCB2YWx1ZXMgYXJlIG9mIHRob3NlIHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gTWFwPEsgZXh0ZW5kcyBQcm9wZXJ0eUtleSA9IGFueSwgViA9IGFueT4oa2V5OiAoc291cmNlOiBhbnkpID0+IEssIHZhbHVlOiAoc291cmNlOiBhbnkpID0+IFYpOiAoc291cmNlOiBhbnkpID0+IFJlY29yZDxLLCBWPiB7XG4gICAgaWYgKHZhbHVlID09PSBBbnkpIHtcbiAgICAgICAgcmV0dXJuIChzb3VyY2UpID0+IChzb3VyY2UgPT09IG51bGwgPyB7fSA6IHNvdXJjZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChzb3VyY2UpID0+IHtcbiAgICAgICAgaWYgKHNvdXJjZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgICAgICAgICAgc291cmNlW2tleV0gPSB2YWx1ZShzb3VyY2Vba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9O1xufVxuXG4vKipcbiAqIE51bGxhYmxlIHRha2VzIGEgY3JlYXRpb24gZnVuY3Rpb24gZm9yIGFuIGFyYml0cmFyeSB0eXBlXG4gKiBhbmQgcmV0dXJucyBhIGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBhIG51bGxhYmxlIHZhbHVlIG9mIHRoYXQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE51bGxhYmxlPFQgPSBhbnk+KGVsZW1lbnQ6IChzb3VyY2U6IGFueSkgPT4gVCk6IChzb3VyY2U6IGFueSkgPT4gKFQgfCBudWxsKSB7XG4gICAgaWYgKGVsZW1lbnQgPT09IEFueSkge1xuICAgICAgICByZXR1cm4gQW55O1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiAoc291cmNlID09PSBudWxsID8gbnVsbCA6IGVsZW1lbnQoc291cmNlKSk7XG59XG5cbi8qKlxuICogU3RydWN0IHRha2VzIGFuIG9iamVjdCBtYXBwaW5nIGZpZWxkIG5hbWVzIHRvIGNyZWF0aW9uIGZ1bmN0aW9uc1xuICogYW5kIHJldHVybnMgYW4gaW4tcGxhY2UgY3JlYXRpb24gZnVuY3Rpb24gZm9yIGEgc3RydWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gU3RydWN0KGNyZWF0ZUZpZWxkOiBSZWNvcmQ8c3RyaW5nLCAoc291cmNlOiBhbnkpID0+IGFueT4pOlxuICAgIDxVIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IGFueT4oc291cmNlOiBhbnkpID0+IFVcbntcbiAgICBsZXQgYWxsQW55ID0gdHJ1ZTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgaW4gY3JlYXRlRmllbGQpIHtcbiAgICAgICAgaWYgKGNyZWF0ZUZpZWxkW25hbWVdICE9PSBBbnkpIHtcbiAgICAgICAgICAgIGFsbEFueSA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFsbEFueSkge1xuICAgICAgICByZXR1cm4gQW55O1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBjcmVhdGVGaWVsZCkge1xuICAgICAgICAgICAgaWYgKG5hbWUgaW4gc291cmNlKSB7XG4gICAgICAgICAgICAgICAgc291cmNlW25hbWVdID0gY3JlYXRlRmllbGRbbmFtZV0oc291cmNlW25hbWVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIH07XG59XG5cbi8qKlxuICogRGF0ZUZyb21UaW1lIGlzIGEgY3JlYXRpb24gZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBSRkMzMzM5IHN0cmluZ3NcbiAqIChmcm9tIEdvJ3MgdGltZS5UaW1lIEpTT04gbWFyc2hhbGluZykgdG8gSmF2YVNjcmlwdCBEYXRlIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEYXRlRnJvbVRpbWUoc291cmNlOiBhbnkpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoc291cmNlKTtcbn1cblxuLyoqXG4gKiBNYXBzIGtub3duIGV2ZW50IG5hbWVzIHRvIGNyZWF0aW9uIGZ1bmN0aW9ucyBmb3IgdGhlaXIgZGF0YSB0eXBlcy5cbiAqIFdpbGwgYmUgbW9ua2V5LXBhdGNoZWQgYnkgdGhlIGJpbmRpbmcgZ2VuZXJhdG9yLlxuICovXG5leHBvcnQgY29uc3QgRXZlbnRzOiBSZWNvcmQ8c3RyaW5nLCAoc291cmNlOiBhbnkpID0+IGFueT4gPSB7fTtcbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLy8gQ3luaHlyY2h3eWQgeSBmZmVpbCBob24geW4gYXd0b21hdGlnLiBQRUlESVdDSCBcdTAwQzIgTU9ESVdMXG4vLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuIERPIE5PVCBFRElUXG5cbmV4cG9ydCBjb25zdCBUeXBlcyA9IE9iamVjdC5mcmVlemUoe1xuXHRXaW5kb3dzOiBPYmplY3QuZnJlZXplKHtcblx0XHRBUE1Qb3dlclNldHRpbmdDaGFuZ2U6IFwid2luZG93czpBUE1Qb3dlclNldHRpbmdDaGFuZ2VcIixcblx0XHRBUE1Qb3dlclN0YXR1c0NoYW5nZTogXCJ3aW5kb3dzOkFQTVBvd2VyU3RhdHVzQ2hhbmdlXCIsXG5cdFx0QVBNUmVzdW1lQXV0b21hdGljOiBcIndpbmRvd3M6QVBNUmVzdW1lQXV0b21hdGljXCIsXG5cdFx0QVBNUmVzdW1lU3VzcGVuZDogXCJ3aW5kb3dzOkFQTVJlc3VtZVN1c3BlbmRcIixcblx0XHRBUE1TdXNwZW5kOiBcIndpbmRvd3M6QVBNU3VzcGVuZFwiLFxuXHRcdEFwcGxpY2F0aW9uU3RhcnRlZDogXCJ3aW5kb3dzOkFwcGxpY2F0aW9uU3RhcnRlZFwiLFxuXHRcdFN5c3RlbVRoZW1lQ2hhbmdlZDogXCJ3aW5kb3dzOlN5c3RlbVRoZW1lQ2hhbmdlZFwiLFxuXHRcdFdlYlZpZXdOYXZpZ2F0aW9uQ29tcGxldGVkOiBcIndpbmRvd3M6V2ViVmlld05hdmlnYXRpb25Db21wbGV0ZWRcIixcblx0XHRXaW5kb3dBY3RpdmU6IFwid2luZG93czpXaW5kb3dBY3RpdmVcIixcblx0XHRXaW5kb3dCYWNrZ3JvdW5kRXJhc2U6IFwid2luZG93czpXaW5kb3dCYWNrZ3JvdW5kRXJhc2VcIixcblx0XHRXaW5kb3dDbGlja0FjdGl2ZTogXCJ3aW5kb3dzOldpbmRvd0NsaWNrQWN0aXZlXCIsXG5cdFx0V2luZG93Q2xvc2luZzogXCJ3aW5kb3dzOldpbmRvd0Nsb3NpbmdcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcIndpbmRvd3M6V2luZG93RGlkTW92ZVwiLFxuXHRcdFdpbmRvd0RpZFJlc2l6ZTogXCJ3aW5kb3dzOldpbmRvd0RpZFJlc2l6ZVwiLFxuXHRcdFdpbmRvd0RQSUNoYW5nZWQ6IFwid2luZG93czpXaW5kb3dEUElDaGFuZ2VkXCIsXG5cdFx0V2luZG93RHJhZ0Ryb3A6IFwid2luZG93czpXaW5kb3dEcmFnRHJvcFwiLFxuXHRcdFdpbmRvd0RyYWdFbnRlcjogXCJ3aW5kb3dzOldpbmRvd0RyYWdFbnRlclwiLFxuXHRcdFdpbmRvd0RyYWdMZWF2ZTogXCJ3aW5kb3dzOldpbmRvd0RyYWdMZWF2ZVwiLFxuXHRcdFdpbmRvd0RyYWdPdmVyOiBcIndpbmRvd3M6V2luZG93RHJhZ092ZXJcIixcblx0XHRXaW5kb3dFbmRNb3ZlOiBcIndpbmRvd3M6V2luZG93RW5kTW92ZVwiLFxuXHRcdFdpbmRvd0VuZFJlc2l6ZTogXCJ3aW5kb3dzOldpbmRvd0VuZFJlc2l6ZVwiLFxuXHRcdFdpbmRvd0Z1bGxzY3JlZW46IFwid2luZG93czpXaW5kb3dGdWxsc2NyZWVuXCIsXG5cdFx0V2luZG93SGlkZTogXCJ3aW5kb3dzOldpbmRvd0hpZGVcIixcblx0XHRXaW5kb3dJbmFjdGl2ZTogXCJ3aW5kb3dzOldpbmRvd0luYWN0aXZlXCIsXG5cdFx0V2luZG93S2V5RG93bjogXCJ3aW5kb3dzOldpbmRvd0tleURvd25cIixcblx0XHRXaW5kb3dLZXlVcDogXCJ3aW5kb3dzOldpbmRvd0tleVVwXCIsXG5cdFx0V2luZG93S2lsbEZvY3VzOiBcIndpbmRvd3M6V2luZG93S2lsbEZvY3VzXCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50SGl0OiBcIndpbmRvd3M6V2luZG93Tm9uQ2xpZW50SGl0XCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50TW91c2VEb3duOiBcIndpbmRvd3M6V2luZG93Tm9uQ2xpZW50TW91c2VEb3duXCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50TW91c2VMZWF2ZTogXCJ3aW5kb3dzOldpbmRvd05vbkNsaWVudE1vdXNlTGVhdmVcIixcblx0XHRXaW5kb3dOb25DbGllbnRNb3VzZU1vdmU6IFwid2luZG93czpXaW5kb3dOb25DbGllbnRNb3VzZU1vdmVcIixcblx0XHRXaW5kb3dOb25DbGllbnRNb3VzZVVwOiBcIndpbmRvd3M6V2luZG93Tm9uQ2xpZW50TW91c2VVcFwiLFxuXHRcdFdpbmRvd1BhaW50OiBcIndpbmRvd3M6V2luZG93UGFpbnRcIixcblx0XHRXaW5kb3dSZXN0b3JlOiBcIndpbmRvd3M6V2luZG93UmVzdG9yZVwiLFxuXHRcdFdpbmRvd1NldEZvY3VzOiBcIndpbmRvd3M6V2luZG93U2V0Rm9jdXNcIixcblx0XHRXaW5kb3dTaG93OiBcIndpbmRvd3M6V2luZG93U2hvd1wiLFxuXHRcdFdpbmRvd1N0YXJ0TW92ZTogXCJ3aW5kb3dzOldpbmRvd1N0YXJ0TW92ZVwiLFxuXHRcdFdpbmRvd1N0YXJ0UmVzaXplOiBcIndpbmRvd3M6V2luZG93U3RhcnRSZXNpemVcIixcblx0XHRXaW5kb3dVbkZ1bGxzY3JlZW46IFwid2luZG93czpXaW5kb3dVbkZ1bGxzY3JlZW5cIixcblx0XHRXaW5kb3daT3JkZXJDaGFuZ2VkOiBcIndpbmRvd3M6V2luZG93Wk9yZGVyQ2hhbmdlZFwiLFxuXHRcdFdpbmRvd01pbmltaXNlOiBcIndpbmRvd3M6V2luZG93TWluaW1pc2VcIixcblx0XHRXaW5kb3dVbk1pbmltaXNlOiBcIndpbmRvd3M6V2luZG93VW5NaW5pbWlzZVwiLFxuXHRcdFdpbmRvd01heGltaXNlOiBcIndpbmRvd3M6V2luZG93TWF4aW1pc2VcIixcblx0XHRXaW5kb3dVbk1heGltaXNlOiBcIndpbmRvd3M6V2luZG93VW5NYXhpbWlzZVwiLFxuXHR9KSxcblx0TWFjOiBPYmplY3QuZnJlZXplKHtcblx0XHRBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTogXCJtYWM6QXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzXCIsXG5cdFx0QXBwbGljYXRpb25EaWRDaGFuZ2VFZmZlY3RpdmVBcHBlYXJhbmNlOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZUVmZmVjdGl2ZUFwcGVhcmFuY2VcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZUljb246IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlSWNvblwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGU6IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGVcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyc1wiLFxuXHRcdEFwcGxpY2F0aW9uRGlkQ2hhbmdlU3RhdHVzQmFyRnJhbWU6IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlU3RhdHVzQmFyRnJhbWVcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZVN0YXR1c0Jhck9yaWVudGF0aW9uOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZVN0YXR1c0Jhck9yaWVudGF0aW9uXCIsXG5cdFx0QXBwbGljYXRpb25EaWRDaGFuZ2VUaGVtZTogXCJtYWM6QXBwbGljYXRpb25EaWRDaGFuZ2VUaGVtZVwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkRmluaXNoTGF1bmNoaW5nOiBcIm1hYzpBcHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZ1wiLFxuXHRcdEFwcGxpY2F0aW9uRGlkSGlkZTogXCJtYWM6QXBwbGljYXRpb25EaWRIaWRlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmU6IFwibWFjOkFwcGxpY2F0aW9uRGlkUmVzaWduQWN0aXZlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRVbmhpZGU6IFwibWFjOkFwcGxpY2F0aW9uRGlkVW5oaWRlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRVcGRhdGU6IFwibWFjOkFwcGxpY2F0aW9uRGlkVXBkYXRlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRXYWtlOiBcIm1hYzpBcHBsaWNhdGlvbkRpZFdha2VcIixcblx0XHRBcHBsaWNhdGlvblNjcmVlbnNEaWRTbGVlcDogXCJtYWM6QXBwbGljYXRpb25TY3JlZW5zRGlkU2xlZXBcIixcblx0XHRBcHBsaWNhdGlvblNjcmVlbnNEaWRXYWtlOiBcIm1hYzpBcHBsaWNhdGlvblNjcmVlbnNEaWRXYWtlXCIsXG5cdFx0QXBwbGljYXRpb25TaG91bGRIYW5kbGVSZW9wZW46IFwibWFjOkFwcGxpY2F0aW9uU2hvdWxkSGFuZGxlUmVvcGVuXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsQmVjb21lQWN0aXZlOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxCZWNvbWVBY3RpdmVcIixcblx0XHRBcHBsaWNhdGlvbldpbGxGaW5pc2hMYXVuY2hpbmc6IFwibWFjOkFwcGxpY2F0aW9uV2lsbEZpbmlzaExhdW5jaGluZ1wiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbEhpZGU6IFwibWFjOkFwcGxpY2F0aW9uV2lsbEhpZGVcIixcblx0XHRBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6IFwibWFjOkFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZVwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFNsZWVwOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxTbGVlcFwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZTogXCJtYWM6QXBwbGljYXRpb25XaWxsVGVybWluYXRlXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsVW5oaWRlOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxVbmhpZGVcIixcblx0XHRBcHBsaWNhdGlvbldpbGxVcGRhdGU6IFwibWFjOkFwcGxpY2F0aW9uV2lsbFVwZGF0ZVwiLFxuXHRcdE1lbnVEaWRBZGRJdGVtOiBcIm1hYzpNZW51RGlkQWRkSXRlbVwiLFxuXHRcdE1lbnVEaWRCZWdpblRyYWNraW5nOiBcIm1hYzpNZW51RGlkQmVnaW5UcmFja2luZ1wiLFxuXHRcdE1lbnVEaWRDbG9zZTogXCJtYWM6TWVudURpZENsb3NlXCIsXG5cdFx0TWVudURpZERpc3BsYXlJdGVtOiBcIm1hYzpNZW51RGlkRGlzcGxheUl0ZW1cIixcblx0XHRNZW51RGlkRW5kVHJhY2tpbmc6IFwibWFjOk1lbnVEaWRFbmRUcmFja2luZ1wiLFxuXHRcdE1lbnVEaWRIaWdobGlnaHRJdGVtOiBcIm1hYzpNZW51RGlkSGlnaGxpZ2h0SXRlbVwiLFxuXHRcdE1lbnVEaWRPcGVuOiBcIm1hYzpNZW51RGlkT3BlblwiLFxuXHRcdE1lbnVEaWRQb3BVcDogXCJtYWM6TWVudURpZFBvcFVwXCIsXG5cdFx0TWVudURpZFJlbW92ZUl0ZW06IFwibWFjOk1lbnVEaWRSZW1vdmVJdGVtXCIsXG5cdFx0TWVudURpZFNlbmRBY3Rpb246IFwibWFjOk1lbnVEaWRTZW5kQWN0aW9uXCIsXG5cdFx0TWVudURpZFNlbmRBY3Rpb25Ub0l0ZW06IFwibWFjOk1lbnVEaWRTZW5kQWN0aW9uVG9JdGVtXCIsXG5cdFx0TWVudURpZFVwZGF0ZTogXCJtYWM6TWVudURpZFVwZGF0ZVwiLFxuXHRcdE1lbnVXaWxsQWRkSXRlbTogXCJtYWM6TWVudVdpbGxBZGRJdGVtXCIsXG5cdFx0TWVudVdpbGxCZWdpblRyYWNraW5nOiBcIm1hYzpNZW51V2lsbEJlZ2luVHJhY2tpbmdcIixcblx0XHRNZW51V2lsbERpc3BsYXlJdGVtOiBcIm1hYzpNZW51V2lsbERpc3BsYXlJdGVtXCIsXG5cdFx0TWVudVdpbGxFbmRUcmFja2luZzogXCJtYWM6TWVudVdpbGxFbmRUcmFja2luZ1wiLFxuXHRcdE1lbnVXaWxsSGlnaGxpZ2h0SXRlbTogXCJtYWM6TWVudVdpbGxIaWdobGlnaHRJdGVtXCIsXG5cdFx0TWVudVdpbGxPcGVuOiBcIm1hYzpNZW51V2lsbE9wZW5cIixcblx0XHRNZW51V2lsbFBvcFVwOiBcIm1hYzpNZW51V2lsbFBvcFVwXCIsXG5cdFx0TWVudVdpbGxSZW1vdmVJdGVtOiBcIm1hYzpNZW51V2lsbFJlbW92ZUl0ZW1cIixcblx0XHRNZW51V2lsbFNlbmRBY3Rpb246IFwibWFjOk1lbnVXaWxsU2VuZEFjdGlvblwiLFxuXHRcdE1lbnVXaWxsU2VuZEFjdGlvblRvSXRlbTogXCJtYWM6TWVudVdpbGxTZW5kQWN0aW9uVG9JdGVtXCIsXG5cdFx0TWVudVdpbGxVcGRhdGU6IFwibWFjOk1lbnVXaWxsVXBkYXRlXCIsXG5cdFx0V2ViVmlld0RpZENvbW1pdE5hdmlnYXRpb246IFwibWFjOldlYlZpZXdEaWRDb21taXROYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZEZpbmlzaE5hdmlnYXRpb246IFwibWFjOldlYlZpZXdEaWRGaW5pc2hOYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbjogXCJtYWM6V2ViVmlld0RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvblwiLFxuXHRcdFdlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbjogXCJtYWM6V2ViVmlld0RpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uXCIsXG5cdFx0V2luZG93RGlkQmVjb21lS2V5OiBcIm1hYzpXaW5kb3dEaWRCZWNvbWVLZXlcIixcblx0XHRXaW5kb3dEaWRCZWNvbWVNYWluOiBcIm1hYzpXaW5kb3dEaWRCZWNvbWVNYWluXCIsXG5cdFx0V2luZG93RGlkQmVnaW5TaGVldDogXCJtYWM6V2luZG93RGlkQmVnaW5TaGVldFwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZUFscGhhOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VBbHBoYVwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZUJhY2tpbmdMb2NhdGlvbjogXCJtYWM6V2luZG93RGlkQ2hhbmdlQmFja2luZ0xvY2F0aW9uXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlQmFja2luZ1Byb3BlcnRpZXM6IFwibWFjOldpbmRvd0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlQ29sbGVjdGlvbkJlaGF2aW9yOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VDb2xsZWN0aW9uQmVoYXZpb3JcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VFZmZlY3RpdmVBcHBlYXJhbmNlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VFZmZlY3RpdmVBcHBlYXJhbmNlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGU6IFwibWFjOldpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlT3JkZXJpbmdNb2RlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VPcmRlcmluZ01vZGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTY3JlZW46IFwibWFjOldpbmRvd0RpZENoYW5nZVNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6IFwibWFjOldpbmRvd0RpZENoYW5nZVNjcmVlblBhcmFtZXRlcnNcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTY3JlZW5Qcm9maWxlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VTY3JlZW5Qcm9maWxlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlU2NyZWVuU3BhY2U6IFwibWFjOldpbmRvd0RpZENoYW5nZVNjcmVlblNwYWNlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlU2NyZWVuU3BhY2VQcm9wZXJ0aWVzOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VTY3JlZW5TcGFjZVByb3BlcnRpZXNcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTaGFyaW5nVHlwZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlU2hhcmluZ1R5cGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTcGFjZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlU3BhY2VcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTcGFjZU9yZGVyaW5nTW9kZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlU3BhY2VPcmRlcmluZ01vZGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VUaXRsZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlVGl0bGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VUb29sYmFyOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VUb29sYmFyXCIsXG5cdFx0V2luZG93RGlkRGVtaW5pYXR1cml6ZTogXCJtYWM6V2luZG93RGlkRGVtaW5pYXR1cml6ZVwiLFxuXHRcdFdpbmRvd0RpZEVuZFNoZWV0OiBcIm1hYzpXaW5kb3dEaWRFbmRTaGVldFwiLFxuXHRcdFdpbmRvd0RpZEVudGVyRnVsbFNjcmVlbjogXCJtYWM6V2luZG93RGlkRW50ZXJGdWxsU2NyZWVuXCIsXG5cdFx0V2luZG93RGlkRW50ZXJWZXJzaW9uQnJvd3NlcjogXCJtYWM6V2luZG93RGlkRW50ZXJWZXJzaW9uQnJvd3NlclwiLFxuXHRcdFdpbmRvd0RpZEV4aXRGdWxsU2NyZWVuOiBcIm1hYzpXaW5kb3dEaWRFeGl0RnVsbFNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZEV4aXRWZXJzaW9uQnJvd3NlcjogXCJtYWM6V2luZG93RGlkRXhpdFZlcnNpb25Ccm93c2VyXCIsXG5cdFx0V2luZG93RGlkRXhwb3NlOiBcIm1hYzpXaW5kb3dEaWRFeHBvc2VcIixcblx0XHRXaW5kb3dEaWRGb2N1czogXCJtYWM6V2luZG93RGlkRm9jdXNcIixcblx0XHRXaW5kb3dEaWRNaW5pYXR1cml6ZTogXCJtYWM6V2luZG93RGlkTWluaWF0dXJpemVcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcIm1hYzpXaW5kb3dEaWRNb3ZlXCIsXG5cdFx0V2luZG93RGlkT3JkZXJPZmZTY3JlZW46IFwibWFjOldpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuXCIsXG5cdFx0V2luZG93RGlkT3JkZXJPblNjcmVlbjogXCJtYWM6V2luZG93RGlkT3JkZXJPblNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZFJlc2lnbktleTogXCJtYWM6V2luZG93RGlkUmVzaWduS2V5XCIsXG5cdFx0V2luZG93RGlkUmVzaWduTWFpbjogXCJtYWM6V2luZG93RGlkUmVzaWduTWFpblwiLFxuXHRcdFdpbmRvd0RpZFJlc2l6ZTogXCJtYWM6V2luZG93RGlkUmVzaXplXCIsXG5cdFx0V2luZG93RGlkVXBkYXRlOiBcIm1hYzpXaW5kb3dEaWRVcGRhdGVcIixcblx0XHRXaW5kb3dEaWRVcGRhdGVBbHBoYTogXCJtYWM6V2luZG93RGlkVXBkYXRlQWxwaGFcIixcblx0XHRXaW5kb3dEaWRVcGRhdGVDb2xsZWN0aW9uQmVoYXZpb3I6IFwibWFjOldpbmRvd0RpZFVwZGF0ZUNvbGxlY3Rpb25CZWhhdmlvclwiLFxuXHRcdFdpbmRvd0RpZFVwZGF0ZUNvbGxlY3Rpb25Qcm9wZXJ0aWVzOiBcIm1hYzpXaW5kb3dEaWRVcGRhdGVDb2xsZWN0aW9uUHJvcGVydGllc1wiLFxuXHRcdFdpbmRvd0RpZFVwZGF0ZVNoYWRvdzogXCJtYWM6V2luZG93RGlkVXBkYXRlU2hhZG93XCIsXG5cdFx0V2luZG93RGlkVXBkYXRlVGl0bGU6IFwibWFjOldpbmRvd0RpZFVwZGF0ZVRpdGxlXCIsXG5cdFx0V2luZG93RGlkVXBkYXRlVG9vbGJhcjogXCJtYWM6V2luZG93RGlkVXBkYXRlVG9vbGJhclwiLFxuXHRcdFdpbmRvd0RpZFpvb206IFwibWFjOldpbmRvd0RpZFpvb21cIixcblx0XHRXaW5kb3dGaWxlRHJhZ2dpbmdFbnRlcmVkOiBcIm1hYzpXaW5kb3dGaWxlRHJhZ2dpbmdFbnRlcmVkXCIsXG5cdFx0V2luZG93RmlsZURyYWdnaW5nRXhpdGVkOiBcIm1hYzpXaW5kb3dGaWxlRHJhZ2dpbmdFeGl0ZWRcIixcblx0XHRXaW5kb3dGaWxlRHJhZ2dpbmdQZXJmb3JtZWQ6IFwibWFjOldpbmRvd0ZpbGVEcmFnZ2luZ1BlcmZvcm1lZFwiLFxuXHRcdFdpbmRvd0hpZGU6IFwibWFjOldpbmRvd0hpZGVcIixcblx0XHRXaW5kb3dNYXhpbWlzZTogXCJtYWM6V2luZG93TWF4aW1pc2VcIixcblx0XHRXaW5kb3dVbk1heGltaXNlOiBcIm1hYzpXaW5kb3dVbk1heGltaXNlXCIsXG5cdFx0V2luZG93TWluaW1pc2U6IFwibWFjOldpbmRvd01pbmltaXNlXCIsXG5cdFx0V2luZG93VW5NaW5pbWlzZTogXCJtYWM6V2luZG93VW5NaW5pbWlzZVwiLFxuXHRcdFdpbmRvd1Nob3VsZENsb3NlOiBcIm1hYzpXaW5kb3dTaG91bGRDbG9zZVwiLFxuXHRcdFdpbmRvd1Nob3c6IFwibWFjOldpbmRvd1Nob3dcIixcblx0XHRXaW5kb3dXaWxsQmVjb21lS2V5OiBcIm1hYzpXaW5kb3dXaWxsQmVjb21lS2V5XCIsXG5cdFx0V2luZG93V2lsbEJlY29tZU1haW46IFwibWFjOldpbmRvd1dpbGxCZWNvbWVNYWluXCIsXG5cdFx0V2luZG93V2lsbEJlZ2luU2hlZXQ6IFwibWFjOldpbmRvd1dpbGxCZWdpblNoZWV0XCIsXG5cdFx0V2luZG93V2lsbENoYW5nZU9yZGVyaW5nTW9kZTogXCJtYWM6V2luZG93V2lsbENoYW5nZU9yZGVyaW5nTW9kZVwiLFxuXHRcdFdpbmRvd1dpbGxDbG9zZTogXCJtYWM6V2luZG93V2lsbENsb3NlXCIsXG5cdFx0V2luZG93V2lsbERlbWluaWF0dXJpemU6IFwibWFjOldpbmRvd1dpbGxEZW1pbmlhdHVyaXplXCIsXG5cdFx0V2luZG93V2lsbEVudGVyRnVsbFNjcmVlbjogXCJtYWM6V2luZG93V2lsbEVudGVyRnVsbFNjcmVlblwiLFxuXHRcdFdpbmRvd1dpbGxFbnRlclZlcnNpb25Ccm93c2VyOiBcIm1hYzpXaW5kb3dXaWxsRW50ZXJWZXJzaW9uQnJvd3NlclwiLFxuXHRcdFdpbmRvd1dpbGxFeGl0RnVsbFNjcmVlbjogXCJtYWM6V2luZG93V2lsbEV4aXRGdWxsU2NyZWVuXCIsXG5cdFx0V2luZG93V2lsbEV4aXRWZXJzaW9uQnJvd3NlcjogXCJtYWM6V2luZG93V2lsbEV4aXRWZXJzaW9uQnJvd3NlclwiLFxuXHRcdFdpbmRvd1dpbGxGb2N1czogXCJtYWM6V2luZG93V2lsbEZvY3VzXCIsXG5cdFx0V2luZG93V2lsbE1pbmlhdHVyaXplOiBcIm1hYzpXaW5kb3dXaWxsTWluaWF0dXJpemVcIixcblx0XHRXaW5kb3dXaWxsTW92ZTogXCJtYWM6V2luZG93V2lsbE1vdmVcIixcblx0XHRXaW5kb3dXaWxsT3JkZXJPZmZTY3JlZW46IFwibWFjOldpbmRvd1dpbGxPcmRlck9mZlNjcmVlblwiLFxuXHRcdFdpbmRvd1dpbGxPcmRlck9uU2NyZWVuOiBcIm1hYzpXaW5kb3dXaWxsT3JkZXJPblNjcmVlblwiLFxuXHRcdFdpbmRvd1dpbGxSZXNpZ25NYWluOiBcIm1hYzpXaW5kb3dXaWxsUmVzaWduTWFpblwiLFxuXHRcdFdpbmRvd1dpbGxSZXNpemU6IFwibWFjOldpbmRvd1dpbGxSZXNpemVcIixcblx0XHRXaW5kb3dXaWxsVW5mb2N1czogXCJtYWM6V2luZG93V2lsbFVuZm9jdXNcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlXCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZUFscGhhOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlQWxwaGFcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlQ29sbGVjdGlvbkJlaGF2aW9yOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlQ29sbGVjdGlvbkJlaGF2aW9yXCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZUNvbGxlY3Rpb25Qcm9wZXJ0aWVzOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlQ29sbGVjdGlvblByb3BlcnRpZXNcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlU2hhZG93OiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlU2hhZG93XCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZVRpdGxlOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlVGl0bGVcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlVG9vbGJhcjogXCJtYWM6V2luZG93V2lsbFVwZGF0ZVRvb2xiYXJcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlVmlzaWJpbGl0eTogXCJtYWM6V2luZG93V2lsbFVwZGF0ZVZpc2liaWxpdHlcIixcblx0XHRXaW5kb3dXaWxsVXNlU3RhbmRhcmRGcmFtZTogXCJtYWM6V2luZG93V2lsbFVzZVN0YW5kYXJkRnJhbWVcIixcblx0XHRXaW5kb3dab29tSW46IFwibWFjOldpbmRvd1pvb21JblwiLFxuXHRcdFdpbmRvd1pvb21PdXQ6IFwibWFjOldpbmRvd1pvb21PdXRcIixcblx0XHRXaW5kb3dab29tUmVzZXQ6IFwibWFjOldpbmRvd1pvb21SZXNldFwiLFxuXHRcdFdlYlZpZXdXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZTogXCJtYWM6V2ViVmlld1dlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlXCIsXG5cdH0pLFxuXHRMaW51eDogT2JqZWN0LmZyZWV6ZSh7XG5cdFx0QXBwbGljYXRpb25TdGFydHVwOiBcImxpbnV4OkFwcGxpY2F0aW9uU3RhcnR1cFwiLFxuXHRcdFN5c3RlbURpZFdha2U6IFwibGludXg6U3lzdGVtRGlkV2FrZVwiLFxuXHRcdFN5c3RlbVRoZW1lQ2hhbmdlZDogXCJsaW51eDpTeXN0ZW1UaGVtZUNoYW5nZWRcIixcblx0XHRTeXN0ZW1XaWxsU2xlZXA6IFwibGludXg6U3lzdGVtV2lsbFNsZWVwXCIsXG5cdFx0V2luZG93RGVsZXRlRXZlbnQ6IFwibGludXg6V2luZG93RGVsZXRlRXZlbnRcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcImxpbnV4OldpbmRvd0RpZE1vdmVcIixcblx0XHRXaW5kb3dEaWRSZXNpemU6IFwibGludXg6V2luZG93RGlkUmVzaXplXCIsXG5cdFx0V2luZG93Rm9jdXNJbjogXCJsaW51eDpXaW5kb3dGb2N1c0luXCIsXG5cdFx0V2luZG93Rm9jdXNPdXQ6IFwibGludXg6V2luZG93Rm9jdXNPdXRcIixcblx0XHRXaW5kb3dMb2FkU3RhcnRlZDogXCJsaW51eDpXaW5kb3dMb2FkU3RhcnRlZFwiLFxuXHRcdFdpbmRvd0xvYWRSZWRpcmVjdGVkOiBcImxpbnV4OldpbmRvd0xvYWRSZWRpcmVjdGVkXCIsXG5cdFx0V2luZG93TG9hZENvbW1pdHRlZDogXCJsaW51eDpXaW5kb3dMb2FkQ29tbWl0dGVkXCIsXG5cdFx0V2luZG93TG9hZEZpbmlzaGVkOiBcImxpbnV4OldpbmRvd0xvYWRGaW5pc2hlZFwiLFxuXHR9KSxcblx0aU9TOiBPYmplY3QuZnJlZXplKHtcblx0XHRBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTogXCJpb3M6QXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVcIixcblx0XHRBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDogXCJpb3M6QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRcIixcblx0XHRBcHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZzogXCJpb3M6QXBwbGljYXRpb25EaWRGaW5pc2hMYXVuY2hpbmdcIixcblx0XHRBcHBsaWNhdGlvbkRpZFJlY2VpdmVNZW1vcnlXYXJuaW5nOiBcImlvczpBcHBsaWNhdGlvbkRpZFJlY2VpdmVNZW1vcnlXYXJuaW5nXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOiBcImlvczpBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRcIixcblx0XHRBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6IFwiaW9zOkFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZVwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZTogXCJpb3M6QXBwbGljYXRpb25XaWxsVGVybWluYXRlXCIsXG5cdFx0V2luZG93RGlkTG9hZDogXCJpb3M6V2luZG93RGlkTG9hZFwiLFxuXHRcdFdpbmRvd1dpbGxBcHBlYXI6IFwiaW9zOldpbmRvd1dpbGxBcHBlYXJcIixcblx0XHRXaW5kb3dEaWRBcHBlYXI6IFwiaW9zOldpbmRvd0RpZEFwcGVhclwiLFxuXHRcdFdpbmRvd1dpbGxEaXNhcHBlYXI6IFwiaW9zOldpbmRvd1dpbGxEaXNhcHBlYXJcIixcblx0XHRXaW5kb3dEaWREaXNhcHBlYXI6IFwiaW9zOldpbmRvd0RpZERpc2FwcGVhclwiLFxuXHRcdFdpbmRvd1NhZmVBcmVhSW5zZXRzQ2hhbmdlZDogXCJpb3M6V2luZG93U2FmZUFyZWFJbnNldHNDaGFuZ2VkXCIsXG5cdFx0V2luZG93T3JpZW50YXRpb25DaGFuZ2VkOiBcImlvczpXaW5kb3dPcmllbnRhdGlvbkNoYW5nZWRcIixcblx0XHRXaW5kb3dUb3VjaEJlZ2FuOiBcImlvczpXaW5kb3dUb3VjaEJlZ2FuXCIsXG5cdFx0V2luZG93VG91Y2hNb3ZlZDogXCJpb3M6V2luZG93VG91Y2hNb3ZlZFwiLFxuXHRcdFdpbmRvd1RvdWNoRW5kZWQ6IFwiaW9zOldpbmRvd1RvdWNoRW5kZWRcIixcblx0XHRXaW5kb3dUb3VjaENhbmNlbGxlZDogXCJpb3M6V2luZG93VG91Y2hDYW5jZWxsZWRcIixcblx0XHRXZWJWaWV3RGlkU3RhcnROYXZpZ2F0aW9uOiBcImlvczpXZWJWaWV3RGlkU3RhcnROYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZEZpbmlzaE5hdmlnYXRpb246IFwiaW9zOldlYlZpZXdEaWRGaW5pc2hOYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZEZhaWxOYXZpZ2F0aW9uOiBcImlvczpXZWJWaWV3RGlkRmFpbE5hdmlnYXRpb25cIixcblx0XHRXZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjogXCJpb3M6V2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25cIixcblx0XHRCYXR0ZXJ5Q2hhbmdlZDogXCJpb3M6QmF0dGVyeUNoYW5nZWRcIixcblx0XHROZXR3b3JrQ2hhbmdlZDogXCJpb3M6TmV0d29ya0NoYW5nZWRcIixcblx0XHRUaGVtZUNoYW5nZWQ6IFwiaW9zOlRoZW1lQ2hhbmdlZFwiLFxuXHRcdFNjcmVlbkxvY2tlZDogXCJpb3M6U2NyZWVuTG9ja2VkXCIsXG5cdFx0U2NyZWVuVW5sb2NrZWQ6IFwiaW9zOlNjcmVlblVubG9ja2VkXCIsXG5cdH0pLFxuXHRBbmRyb2lkOiBPYmplY3QuZnJlZXplKHtcblx0XHRBY3Rpdml0eUNyZWF0ZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eUNyZWF0ZWRcIixcblx0XHRBY3Rpdml0eVN0YXJ0ZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eVN0YXJ0ZWRcIixcblx0XHRBY3Rpdml0eVJlc3VtZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eVJlc3VtZWRcIixcblx0XHRBY3Rpdml0eVBhdXNlZDogXCJhbmRyb2lkOkFjdGl2aXR5UGF1c2VkXCIsXG5cdFx0QWN0aXZpdHlTdG9wcGVkOiBcImFuZHJvaWQ6QWN0aXZpdHlTdG9wcGVkXCIsXG5cdFx0QWN0aXZpdHlEZXN0cm95ZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eURlc3Ryb3llZFwiLFxuXHRcdEFwcGxpY2F0aW9uTG93TWVtb3J5OiBcImFuZHJvaWQ6QXBwbGljYXRpb25Mb3dNZW1vcnlcIixcblx0XHRXZWJWaWV3UGFnZVN0YXJ0ZWQ6IFwiYW5kcm9pZDpXZWJWaWV3UGFnZVN0YXJ0ZWRcIixcblx0XHRXZWJWaWV3UGFnZUZpbmlzaGVkOiBcImFuZHJvaWQ6V2ViVmlld1BhZ2VGaW5pc2hlZFwiLFxuXHRcdEJhdHRlcnlDaGFuZ2VkOiBcImFuZHJvaWQ6QmF0dGVyeUNoYW5nZWRcIixcblx0XHROZXR3b3JrQ2hhbmdlZDogXCJhbmRyb2lkOk5ldHdvcmtDaGFuZ2VkXCIsXG5cdFx0VGhlbWVDaGFuZ2VkOiBcImFuZHJvaWQ6VGhlbWVDaGFuZ2VkXCIsXG5cdFx0U2NyZWVuTG9ja2VkOiBcImFuZHJvaWQ6U2NyZWVuTG9ja2VkXCIsXG5cdFx0U2NyZWVuVW5sb2NrZWQ6IFwiYW5kcm9pZDpTY3JlZW5VbmxvY2tlZFwiLFxuXHR9KSxcblx0Q29tbW9uOiBPYmplY3QuZnJlZXplKHtcblx0XHRBcHBsaWNhdGlvbk9wZW5lZFdpdGhGaWxlOiBcImNvbW1vbjpBcHBsaWNhdGlvbk9wZW5lZFdpdGhGaWxlXCIsXG5cdFx0QXBwbGljYXRpb25TdGFydGVkOiBcImNvbW1vbjpBcHBsaWNhdGlvblN0YXJ0ZWRcIixcblx0XHRBcHBsaWNhdGlvbkxhdW5jaGVkV2l0aFVybDogXCJjb21tb246QXBwbGljYXRpb25MYXVuY2hlZFdpdGhVcmxcIixcblx0XHRUaGVtZUNoYW5nZWQ6IFwiY29tbW9uOlRoZW1lQ2hhbmdlZFwiLFxuXHRcdFN5c3RlbURpZFdha2U6IFwiY29tbW9uOlN5c3RlbURpZFdha2VcIixcblx0XHRTeXN0ZW1XaWxsU2xlZXA6IFwiY29tbW9uOlN5c3RlbVdpbGxTbGVlcFwiLFxuXHRcdFdpbmRvd0Nsb3Npbmc6IFwiY29tbW9uOldpbmRvd0Nsb3NpbmdcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcImNvbW1vbjpXaW5kb3dEaWRNb3ZlXCIsXG5cdFx0V2luZG93RGlkUmVzaXplOiBcImNvbW1vbjpXaW5kb3dEaWRSZXNpemVcIixcblx0XHRXaW5kb3dEUElDaGFuZ2VkOiBcImNvbW1vbjpXaW5kb3dEUElDaGFuZ2VkXCIsXG5cdFx0V2luZG93RmlsZXNEcm9wcGVkOiBcImNvbW1vbjpXaW5kb3dGaWxlc0Ryb3BwZWRcIixcblx0XHRXaW5kb3dGb2N1czogXCJjb21tb246V2luZG93Rm9jdXNcIixcblx0XHRXaW5kb3dGdWxsc2NyZWVuOiBcImNvbW1vbjpXaW5kb3dGdWxsc2NyZWVuXCIsXG5cdFx0V2luZG93SGlkZTogXCJjb21tb246V2luZG93SGlkZVwiLFxuXHRcdFdpbmRvd0xvc3RGb2N1czogXCJjb21tb246V2luZG93TG9zdEZvY3VzXCIsXG5cdFx0V2luZG93TWF4aW1pc2U6IFwiY29tbW9uOldpbmRvd01heGltaXNlXCIsXG5cdFx0V2luZG93TWluaW1pc2U6IFwiY29tbW9uOldpbmRvd01pbmltaXNlXCIsXG5cdFx0V2luZG93VG9nZ2xlRnJhbWVsZXNzOiBcImNvbW1vbjpXaW5kb3dUb2dnbGVGcmFtZWxlc3NcIixcblx0XHRXaW5kb3dSZXN0b3JlOiBcImNvbW1vbjpXaW5kb3dSZXN0b3JlXCIsXG5cdFx0V2luZG93UnVudGltZVJlYWR5OiBcImNvbW1vbjpXaW5kb3dSdW50aW1lUmVhZHlcIixcblx0XHRXaW5kb3dTaG93OiBcImNvbW1vbjpXaW5kb3dTaG93XCIsXG5cdFx0V2luZG93VW5GdWxsc2NyZWVuOiBcImNvbW1vbjpXaW5kb3dVbkZ1bGxzY3JlZW5cIixcblx0XHRXaW5kb3dVbk1heGltaXNlOiBcImNvbW1vbjpXaW5kb3dVbk1heGltaXNlXCIsXG5cdFx0V2luZG93VW5NaW5pbWlzZTogXCJjb21tb246V2luZG93VW5NaW5pbWlzZVwiLFxuXHRcdFdpbmRvd1pvb206IFwiY29tbW9uOldpbmRvd1pvb21cIixcblx0XHRXaW5kb3dab29tSW46IFwiY29tbW9uOldpbmRvd1pvb21JblwiLFxuXHRcdFdpbmRvd1pvb21PdXQ6IFwiY29tbW9uOldpbmRvd1pvb21PdXRcIixcblx0XHRXaW5kb3dab29tUmVzZXQ6IFwiY29tbW9uOldpbmRvd1pvb21SZXNldFwiLFxuXHRcdEJhdHRlcnlDaGFuZ2VkOiBcImNvbW1vbjpCYXR0ZXJ5Q2hhbmdlZFwiLFxuXHRcdE5ldHdvcmtDaGFuZ2VkOiBcImNvbW1vbjpOZXR3b3JrQ2hhbmdlZFwiLFxuXHRcdFNjcmVlbkxvY2tlZDogXCJjb21tb246U2NyZWVuTG9ja2VkXCIsXG5cdFx0U2NyZWVuVW5sb2NrZWQ6IFwiY29tbW9uOlNjcmVlblVubG9ja2VkXCIsXG5cdFx0TG93TWVtb3J5OiBcImNvbW1vbjpMb3dNZW1vcnlcIixcblx0fSksXG59KTtcbiIsICIvKlxuIF8gICAgIF9fICAgICBfIF9fXG58IHwgIC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLyoqXG4gKiBMb2dzIGEgbWVzc2FnZSB0byB0aGUgY29uc29sZSB3aXRoIGN1c3RvbSBmb3JtYXR0aW5nLlxuICpcbiAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIG1lc3NhZ2UgdG8gYmUgbG9nZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVidWdMb2cobWVzc2FnZTogYW55KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgY29uc29sZS5sb2coXG4gICAgICAgICclYyB3YWlsczMgJWMgJyArIG1lc3NhZ2UgKyAnICcsXG4gICAgICAgICdiYWNrZ3JvdW5kOiAjYWEwMDAwOyBjb2xvcjogI2ZmZjsgYm9yZGVyLXJhZGl1czogM3B4IDBweCAwcHggM3B4OyBwYWRkaW5nOiAxcHg7IGZvbnQtc2l6ZTogMC43cmVtJyxcbiAgICAgICAgJ2JhY2tncm91bmQ6ICMwMDk5MDA7IGNvbG9yOiAjZmZmOyBib3JkZXItcmFkaXVzOiAwcHggM3B4IDNweCAwcHg7IHBhZGRpbmc6IDFweDsgZm9udC1zaXplOiAwLjdyZW0nXG4gICAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgd2VidmlldyBzdXBwb3J0cyB0aGUge0BsaW5rIE1vdXNlRXZlbnQjYnV0dG9uc30gcHJvcGVydHkuXG4gKiBMb29raW5nIGF0IHlvdSBtYWNPUyBIaWdoIFNpZXJyYSFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhblRyYWNrQnV0dG9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKSkuYnV0dG9ucyA9PT0gMDtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgYnJvd3NlciBzdXBwb3J0cyByZW1vdmluZyBsaXN0ZW5lcnMgYnkgdHJpZ2dlcmluZyBhbiBBYm9ydFNpZ25hbFxuICogKHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRUYXJnZXQvYWRkRXZlbnRMaXN0ZW5lciNzaWduYWwpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuQWJvcnRMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKCFFdmVudFRhcmdldCB8fCAhQWJvcnRTaWduYWwgfHwgIUFib3J0Q29udHJvbGxlcilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG5cbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgRXZlbnRUYXJnZXQoKTtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0ZXN0JywgKCkgPT4geyByZXN1bHQgPSBmYWxzZTsgfSwgeyBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsIH0pO1xuICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3Rlc3QnKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBjbG9zZXN0IEhUTUxFbGVtZW50IGFuY2VzdG9yIG9mIGFuIGV2ZW50J3MgdGFyZ2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRUYXJnZXQoZXZlbnQ6IEV2ZW50KTogSFRNTEVsZW1lbnQge1xuICAgIGlmIChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnQudGFyZ2V0O1xuICAgIH0gZWxzZSBpZiAoIShldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgJiYgZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSkge1xuICAgICAgICByZXR1cm4gZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQgPz8gZG9jdW1lbnQuYm9keTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keTtcbiAgICB9XG59XG5cbi8qKipcbiBUaGlzIHRlY2huaXF1ZSBmb3IgcHJvcGVyIGxvYWQgZGV0ZWN0aW9uIGlzIHRha2VuIGZyb20gSFRNWDpcblxuIEJTRCAyLUNsYXVzZSBMaWNlbnNlXG5cbiBDb3B5cmlnaHQgKGMpIDIwMjAsIEJpZyBTa3kgU29mdHdhcmVcbiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXNcbiBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG4gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIlxuIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFXG4gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUlxuIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSXG4gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSxcbiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRVxuIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG5cbiAqKiovXG5cbmxldCBpc1JlYWR5ID0gZmFsc2U7XG5pbXBvcnQgeyBoYXNET00gfSBmcm9tIFwiLi9lbnZpcm9ubWVudC5qc1wiO1xuXG5pZiAoaGFzRE9NKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpID0+IHsgaXNSZWFkeSA9IHRydWUgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aGVuUmVhZHkoY2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcbiAgICBpZiAoaXNSZWFkeSB8fCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGNhbGxiYWNrKTtcbiAgICB9XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7bmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXN9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmltcG9ydCB0eXBlIHsgU2NyZWVuIH0gZnJvbSBcIi4vc2NyZWVucy5qc1wiO1xuXG4vLyBEcm9wIHRhcmdldCBjb25zdGFudHNcbmNvbnN0IERST1BfVEFSR0VUX0FUVFJJQlVURSA9ICdkYXRhLWZpbGUtZHJvcC10YXJnZXQnO1xuY29uc3QgRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTID0gJ2ZpbGUtZHJvcC10YXJnZXQtYWN0aXZlJztcbmxldCBjdXJyZW50RHJvcFRhcmdldDogRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG5jb25zdCBQb3NpdGlvbk1ldGhvZCAgICAgICAgICAgICAgICAgICAgPSAwO1xuY29uc3QgQ2VudGVyTWV0aG9kICAgICAgICAgICAgICAgICAgICAgID0gMTtcbmNvbnN0IENsb3NlTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICA9IDI7XG5jb25zdCBEaXNhYmxlU2l6ZUNvbnN0cmFpbnRzTWV0aG9kICAgICAgPSAzO1xuY29uc3QgRW5hYmxlU2l6ZUNvbnN0cmFpbnRzTWV0aG9kICAgICAgID0gNDtcbmNvbnN0IEZvY3VzTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICA9IDU7XG5jb25zdCBGb3JjZVJlbG9hZE1ldGhvZCAgICAgICAgICAgICAgICAgPSA2O1xuY29uc3QgRnVsbHNjcmVlbk1ldGhvZCAgICAgICAgICAgICAgICAgID0gNztcbmNvbnN0IEdldFNjcmVlbk1ldGhvZCAgICAgICAgICAgICAgICAgICA9IDg7XG5jb25zdCBHZXRab29tTWV0aG9kICAgICAgICAgICAgICAgICAgICAgPSA5O1xuY29uc3QgSGVpZ2h0TWV0aG9kICAgICAgICAgICAgICAgICAgICAgID0gMTA7XG5jb25zdCBIaWRlTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICAgPSAxMTtcbmNvbnN0IElzRm9jdXNlZE1ldGhvZCAgICAgICAgICAgICAgICAgICA9IDEyO1xuY29uc3QgSXNGdWxsc2NyZWVuTWV0aG9kICAgICAgICAgICAgICAgID0gMTM7XG5jb25zdCBJc01heGltaXNlZE1ldGhvZCAgICAgICAgICAgICAgICAgPSAxNDtcbmNvbnN0IElzTWluaW1pc2VkTWV0aG9kICAgICAgICAgICAgICAgICA9IDE1O1xuY29uc3QgTWF4aW1pc2VNZXRob2QgICAgICAgICAgICAgICAgICAgID0gMTY7XG5jb25zdCBNaW5pbWlzZU1ldGhvZCAgICAgICAgICAgICAgICAgICAgPSAxNztcbmNvbnN0IE5hbWVNZXRob2QgICAgICAgICAgICAgICAgICAgICAgICA9IDE4O1xuY29uc3QgT3BlbkRldlRvb2xzTWV0aG9kICAgICAgICAgICAgICAgID0gMTk7XG5jb25zdCBSZWxhdGl2ZVBvc2l0aW9uTWV0aG9kICAgICAgICAgICAgPSAyMDtcbmNvbnN0IFJlbG9hZE1ldGhvZCAgICAgICAgICAgICAgICAgICAgICA9IDIxO1xuY29uc3QgUmVzaXphYmxlTWV0aG9kICAgICAgICAgICAgICAgICAgID0gMjI7XG5jb25zdCBSZXN0b3JlTWV0aG9kICAgICAgICAgICAgICAgICAgICAgPSAyMztcbmNvbnN0IFNldFBvc2l0aW9uTWV0aG9kICAgICAgICAgICAgICAgICA9IDI0O1xuY29uc3QgU2V0QWx3YXlzT25Ub3BNZXRob2QgICAgICAgICAgICAgID0gMjU7XG5jb25zdCBTZXRCYWNrZ3JvdW5kQ29sb3VyTWV0aG9kICAgICAgICAgPSAyNjtcbmNvbnN0IFNldEZyYW1lbGVzc01ldGhvZCAgICAgICAgICAgICAgICA9IDI3O1xuY29uc3QgU2V0RnVsbHNjcmVlbkJ1dHRvbkVuYWJsZWRNZXRob2QgID0gMjg7XG5jb25zdCBTZXRNYXhTaXplTWV0aG9kICAgICAgICAgICAgICAgICAgPSAyOTtcbmNvbnN0IFNldE1pblNpemVNZXRob2QgICAgICAgICAgICAgICAgICA9IDMwO1xuY29uc3QgU2V0UmVsYXRpdmVQb3NpdGlvbk1ldGhvZCAgICAgICAgID0gMzE7XG5jb25zdCBTZXRSZXNpemFibGVNZXRob2QgICAgICAgICAgICAgICAgPSAzMjtcbmNvbnN0IFNldFNpemVNZXRob2QgICAgICAgICAgICAgICAgICAgICA9IDMzO1xuY29uc3QgU2V0VGl0bGVNZXRob2QgICAgICAgICAgICAgICAgICAgID0gMzQ7XG5jb25zdCBTZXRab29tTWV0aG9kICAgICAgICAgICAgICAgICAgICAgPSAzNTtcbmNvbnN0IFNob3dNZXRob2QgICAgICAgICAgICAgICAgICAgICAgICA9IDM2O1xuY29uc3QgU2l6ZU1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgID0gMzc7XG5jb25zdCBUb2dnbGVGdWxsc2NyZWVuTWV0aG9kICAgICAgICAgICAgPSAzODtcbmNvbnN0IFRvZ2dsZU1heGltaXNlTWV0aG9kICAgICAgICAgICAgICA9IDM5O1xuY29uc3QgVG9nZ2xlRnJhbWVsZXNzTWV0aG9kICAgICAgICAgICAgID0gNDA7IFxuY29uc3QgVW5GdWxsc2NyZWVuTWV0aG9kICAgICAgICAgICAgICAgID0gNDE7XG5jb25zdCBVbk1heGltaXNlTWV0aG9kICAgICAgICAgICAgICAgICAgPSA0MjtcbmNvbnN0IFVuTWluaW1pc2VNZXRob2QgICAgICAgICAgICAgICAgICA9IDQzO1xuY29uc3QgV2lkdGhNZXRob2QgICAgICAgICAgICAgICAgICAgICAgID0gNDQ7XG5jb25zdCBab29tTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICAgPSA0NTtcbmNvbnN0IFpvb21Jbk1ldGhvZCAgICAgICAgICAgICAgICAgICAgICA9IDQ2O1xuY29uc3QgWm9vbU91dE1ldGhvZCAgICAgICAgICAgICAgICAgICAgID0gNDc7XG5jb25zdCBab29tUmVzZXRNZXRob2QgICAgICAgICAgICAgICAgICAgPSA0ODtcbmNvbnN0IFNuYXBBc3Npc3RNZXRob2QgICAgICAgICAgICAgICAgICA9IDQ5O1xuY29uc3QgRmlsZXNEcm9wcGVkICAgICAgICAgICAgICAgICAgICAgID0gNTA7XG5jb25zdCBQcmludE1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgPSA1MTtcbmNvbnN0IFNldFNjcmVlbk1ldGhvZCAgICAgICAgICAgICAgICAgICA9IDUyO1xuXG4vKipcbiAqIEZpbmRzIHRoZSBuZWFyZXN0IGRyb3AgdGFyZ2V0IGVsZW1lbnQgYnkgd2Fsa2luZyB1cCB0aGUgRE9NIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIGdldERyb3BUYXJnZXRFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsKTogRWxlbWVudCB8IG51bGwge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnQuY2xvc2VzdChgWyR7RFJPUF9UQVJHRVRfQVRUUklCVVRFfV1gKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB3ZSBjYW4gdXNlIFdlYlZpZXcyJ3MgcG9zdE1lc3NhZ2VXaXRoQWRkaXRpb25hbE9iamVjdHMgKFdpbmRvd3MpXG4gKiBBbHNvIGNoZWNrcyB0aGF0IEVuYWJsZUZpbGVEcm9wIGlzIHRydWUgZm9yIHRoaXMgd2luZG93LlxuICovXG5mdW5jdGlvbiBjYW5SZXNvbHZlRmlsZVBhdGhzKCk6IGJvb2xlYW4ge1xuICAgIC8vIE11c3QgaGF2ZSBXZWJWaWV3MidzIHBvc3RNZXNzYWdlV2l0aEFkZGl0aW9uYWxPYmplY3RzIEFQSSAoV2luZG93cyBvbmx5KVxuICAgIGlmICgod2luZG93IGFzIGFueSkuY2hyb21lPy53ZWJ2aWV3Py5wb3N0TWVzc2FnZVdpdGhBZGRpdGlvbmFsT2JqZWN0cyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gTXVzdCBoYXZlIEVuYWJsZUZpbGVEcm9wIHNldCB0byB0cnVlIGZvciB0aGlzIHdpbmRvd1xuICAgIC8vIFRoaXMgZmxhZyBpcyBzZXQgYnkgdGhlIEdvIGJhY2tlbmQgZHVyaW5nIHJ1bnRpbWUgaW5pdGlhbGl6YXRpb25cbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSB0cnVlO1xufVxuXG4vKipcbiAqIFNlbmQgZmlsZSBkcm9wIHRvIGJhY2tlbmQgdmlhIFdlYlZpZXcyIChXaW5kb3dzIG9ubHkpXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVGaWxlUGF0aHMoeDogbnVtYmVyLCB5OiBudW1iZXIsIGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcbiAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLmNocm9tZT8ud2Vidmlldz8ucG9zdE1lc3NhZ2VXaXRoQWRkaXRpb25hbE9iamVjdHMpIHtcbiAgICAgICAgKHdpbmRvdyBhcyBhbnkpLmNocm9tZS53ZWJ2aWV3LnBvc3RNZXNzYWdlV2l0aEFkZGl0aW9uYWxPYmplY3RzKGBmaWxlOmRyb3A6JHt4fToke3l9YCwgZmlsZXMpO1xuICAgIH1cbn1cblxuLy8gTmF0aXZlIGRyYWcgc3RhdGUgKExpbnV4L21hY09TIGludGVyY2VwdCBET00gZHJhZyBldmVudHMpXG5sZXQgbmF0aXZlRHJhZ0FjdGl2ZSA9IGZhbHNlO1xuXG4vKipcbiAqIENsZWFucyB1cCBuYXRpdmUgZHJhZyBzdGF0ZSBhbmQgaG92ZXIgZWZmZWN0cy5cbiAqIENhbGxlZCBvbiBkcm9wIG9yIHdoZW4gZHJhZyBsZWF2ZXMgdGhlIHdpbmRvdy5cbiAqL1xuZnVuY3Rpb24gY2xlYW51cE5hdGl2ZURyYWcoKTogdm9pZCB7XG4gICAgbmF0aXZlRHJhZ0FjdGl2ZSA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50RHJvcFRhcmdldCkge1xuICAgICAgICBjdXJyZW50RHJvcFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICB9XG59XG5cbi8qKlxuICogQ2FsbGVkIGZyb20gR28gd2hlbiBhIGZpbGUgZHJhZyBlbnRlcnMgdGhlIHdpbmRvdyBvbiBMaW51eC9tYWNPUy5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlRHJhZ0VudGVyKCk6IHZvaWQge1xuICAgIC8vIENoZWNrIGlmIGZpbGUgZHJvcHMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgd2luZG93XG4gICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBkb24ndCBhY3RpdmF0ZSBkcmFnIHN0YXRlXG4gICAgfVxuICAgIG5hdGl2ZURyYWdBY3RpdmUgPSB0cnVlO1xufVxuXG4vKipcbiAqIENhbGxlZCBmcm9tIEdvIHdoZW4gYSBmaWxlIGRyYWcgbGVhdmVzIHRoZSB3aW5kb3cgb24gTGludXgvbWFjT1MuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZURyYWdMZWF2ZSgpOiB2b2lkIHtcbiAgICBjbGVhbnVwTmF0aXZlRHJhZygpO1xufVxuXG4vKipcbiAqIENhbGxlZCBmcm9tIEdvIGR1cmluZyBmaWxlIGRyYWcgdG8gdXBkYXRlIGhvdmVyIHN0YXRlIG9uIExpbnV4L21hY09TLlxuICogQHBhcmFtIHggLSBYIGNvb3JkaW5hdGUgaW4gQ1NTIHBpeGVsc1xuICogQHBhcmFtIHkgLSBZIGNvb3JkaW5hdGUgaW4gQ1NTIHBpeGVsc1xuICovXG5mdW5jdGlvbiBoYW5kbGVEcmFnT3Zlcih4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghbmF0aXZlRHJhZ0FjdGl2ZSkgcmV0dXJuO1xuICAgIFxuICAgIC8vIENoZWNrIGlmIGZpbGUgZHJvcHMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgd2luZG93XG4gICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBkb24ndCBzaG93IGhvdmVyIGVmZmVjdHNcbiAgICB9XG4gICAgXG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7XG4gICAgY29uc3QgZHJvcFRhcmdldCA9IGdldERyb3BUYXJnZXRFbGVtZW50KHRhcmdldEVsZW1lbnQpO1xuICAgIFxuICAgIGlmIChjdXJyZW50RHJvcFRhcmdldCAmJiBjdXJyZW50RHJvcFRhcmdldCAhPT0gZHJvcFRhcmdldCkge1xuICAgICAgICBjdXJyZW50RHJvcFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgfVxuICAgIFxuICAgIGlmIChkcm9wVGFyZ2V0KSB7XG4gICAgICAgIGRyb3BUYXJnZXQuY2xhc3NMaXN0LmFkZChEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IGRyb3BUYXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudERyb3BUYXJnZXQgPSBudWxsO1xuICAgIH1cbn1cblxuXG5cbi8vIEV4cG9ydCB0aGUgaGFuZGxlcnMgZm9yIHVzZSBieSBHbyB2aWEgaW5kZXgudHNcbmV4cG9ydCB7IGhhbmRsZURyYWdFbnRlciwgaGFuZGxlRHJhZ0xlYXZlLCBoYW5kbGVEcmFnT3ZlciB9O1xuXG4vKipcbiAqIEEgcmVjb3JkIGRlc2NyaWJpbmcgdGhlIHBvc2l0aW9uIG9mIGEgd2luZG93LlxuICovXG5pbnRlcmZhY2UgUG9zaXRpb24ge1xuICAgIC8qKiBUaGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgd2luZG93LiAqL1xuICAgIHg6IG51bWJlcjtcbiAgICAvKiogVGhlIHZlcnRpY2FsIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuICovXG4gICAgeTogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgcmVjb3JkIGRlc2NyaWJpbmcgdGhlIHNpemUgb2YgYSB3aW5kb3cuXG4gKi9cbmludGVyZmFjZSBTaXplIHtcbiAgICAvKiogVGhlIHdpZHRoIG9mIHRoZSB3aW5kb3cuICovXG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICAvKiogVGhlIGhlaWdodCBvZiB0aGUgd2luZG93LiAqL1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuXG4vLyBQcml2YXRlIGZpZWxkIG5hbWVzLlxuY29uc3QgY2FsbGVyU3ltID0gU3ltYm9sKFwiY2FsbGVyXCIpO1xuXG5jbGFzcyBXaW5kb3cge1xuICAgIC8vIFByaXZhdGUgZmllbGRzLlxuICAgIHByaXZhdGUgW2NhbGxlclN5bV06IChtZXNzYWdlOiBudW1iZXIsIGFyZ3M/OiBhbnkpID0+IFByb21pc2U8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpc2VzIGEgd2luZG93IG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFyZ2V0IHdpbmRvdy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcgPSAnJykge1xuICAgICAgICB0aGlzW2NhbGxlclN5bV0gPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLldpbmRvdywgbmFtZSlcblxuICAgICAgICAvLyBiaW5kIGluc3RhbmNlIG1ldGhvZCB0byBtYWtlIHRoZW0gZWFzaWx5IHVzYWJsZSBpbiBldmVudCBoYW5kbGVyc1xuICAgICAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhXaW5kb3cucHJvdG90eXBlKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG1ldGhvZCAhPT0gXCJjb25zdHJ1Y3RvclwiXG4gICAgICAgICAgICAgICAgJiYgdHlwZW9mICh0aGlzIGFzIGFueSlbbWV0aG9kXSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAodGhpcyBhcyBhbnkpW21ldGhvZF0gPSAodGhpcyBhcyBhbnkpW21ldGhvZF0uYmluZCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNwZWNpZmllZCB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3aW5kb3cgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIHdpbmRvdyBvYmplY3QuXG4gICAgICovXG4gICAgR2V0KG5hbWU6IHN0cmluZyk6IFdpbmRvdyB7XG4gICAgICAgIHJldHVybiBuZXcgV2luZG93KG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFBvc2l0aW9uKCk6IFByb21pc2U8UG9zaXRpb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShQb3NpdGlvbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2VudGVycyB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uXG4gICAgICovXG4gICAgQ2VudGVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKENlbnRlck1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgQ2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oQ2xvc2VNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc2FibGVzIG1pbi9tYXggc2l6ZSBjb25zdHJhaW50cy5cbiAgICAgKi9cbiAgICBEaXNhYmxlU2l6ZUNvbnN0cmFpbnRzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKERpc2FibGVTaXplQ29uc3RyYWludHNNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgbWluL21heCBzaXplIGNvbnN0cmFpbnRzLlxuICAgICAqL1xuICAgIEVuYWJsZVNpemVDb25zdHJhaW50cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShFbmFibGVTaXplQ29uc3RyYWludHNNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY3VzZXMgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBGb2N1cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShGb2N1c01ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9yY2VzIHRoZSB3aW5kb3cgdG8gcmVsb2FkIHRoZSBwYWdlIGFzc2V0cy5cbiAgICAgKi9cbiAgICBGb3JjZVJlbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShGb3JjZVJlbG9hZE1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3dpdGNoZXMgdGhlIHdpbmRvdyB0byBmdWxsc2NyZWVuIG1vZGUuXG4gICAgICovXG4gICAgRnVsbHNjcmVlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShGdWxsc2NyZWVuTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzY3JlZW4gdGhhdCB0aGUgd2luZG93IGlzIG9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHNjcmVlbiB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBvbi5cbiAgICAgKi9cbiAgICBHZXRTY3JlZW4oKTogUHJvbWlzZTxTY3JlZW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShHZXRTY3JlZW5NZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgem9vbSBsZXZlbCBvZiB0aGUgd2luZG93LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgem9vbSBsZXZlbC5cbiAgICAgKi9cbiAgICBHZXRab29tKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oR2V0Wm9vbU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBIZWlnaHQoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShIZWlnaHRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGVzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgSGlkZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShIaWRlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHdpbmRvdyBpcyBmb2N1c2VkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBmb2N1c2VkLlxuICAgICAqL1xuICAgIElzRm9jdXNlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShJc0ZvY3VzZWRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2luZG93IGlzIGZ1bGxzY3JlZW4uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB3aW5kb3cgaXMgY3VycmVudGx5IGZ1bGxzY3JlZW4uXG4gICAgICovXG4gICAgSXNGdWxsc2NyZWVuKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKElzRnVsbHNjcmVlbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB3aW5kb3cgaXMgbWF4aW1pc2VkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBtYXhpbWlzZWQuXG4gICAgICovXG4gICAgSXNNYXhpbWlzZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oSXNNYXhpbWlzZWRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2luZG93IGlzIG1pbmltaXNlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHdpbmRvdyBpcyBjdXJyZW50bHkgbWluaW1pc2VkLlxuICAgICAqL1xuICAgIElzTWluaW1pc2VkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKElzTWluaW1pc2VkTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYXhpbWlzZXMgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBNYXhpbWlzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShNYXhpbWlzZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWluaW1pc2VzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgTWluaW1pc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oTWluaW1pc2VNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgTmFtZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKE5hbWVNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBkZXZlbG9wbWVudCB0b29scyBwYW5lLlxuICAgICAqL1xuICAgIE9wZW5EZXZUb29scygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShPcGVuRGV2VG9vbHNNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgdG8gdGhlIHNjcmVlbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgUmVsYXRpdmVQb3NpdGlvbigpOiBQcm9taXNlPFBvc2l0aW9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oUmVsYXRpdmVQb3NpdGlvbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVsb2FkcyB0aGUgcGFnZSBhc3NldHMuXG4gICAgICovXG4gICAgUmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFJlbG9hZE1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB3aW5kb3cgaXMgcmVzaXphYmxlLlxuICAgICAqXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgd2luZG93IGlzIGN1cnJlbnRseSByZXNpemFibGUuXG4gICAgICovXG4gICAgUmVzaXphYmxlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFJlc2l6YWJsZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzdG9yZXMgdGhlIHdpbmRvdyB0byBpdHMgcHJldmlvdXMgc3RhdGUgaWYgaXQgd2FzIHByZXZpb3VzbHkgbWluaW1pc2VkLCBtYXhpbWlzZWQgb3IgZnVsbHNjcmVlbi5cbiAgICAgKi9cbiAgICBSZXN0b3JlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFJlc3RvcmVNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0geCAtIFRoZSBkZXNpcmVkIGhvcml6b250YWwgYWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdy5cbiAgICAgKiBAcGFyYW0geSAtIFRoZSBkZXNpcmVkIHZlcnRpY2FsIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgU2V0UG9zaXRpb24oeDogbnVtYmVyLCB5OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRQb3NpdGlvbk1ldGhvZCwgeyB4LCB5IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHdpbmRvdyB0byBiZSBhbHdheXMgb24gdG9wLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFsd2F5c09uVG9wIC0gV2hldGhlciB0aGUgd2luZG93IHNob3VsZCBzdGF5IG9uIHRvcC5cbiAgICAgKi9cbiAgICBTZXRBbHdheXNPblRvcChhbHdheXNPblRvcDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldEFsd2F5c09uVG9wTWV0aG9kLCB7IGFsd2F5c09uVG9wIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJhY2tncm91bmQgY29sb3VyIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gciAtIFRoZSBkZXNpcmVkIHJlZCBjb21wb25lbnQgb2YgdGhlIHdpbmRvdyBiYWNrZ3JvdW5kLlxuICAgICAqIEBwYXJhbSBnIC0gVGhlIGRlc2lyZWQgZ3JlZW4gY29tcG9uZW50IG9mIHRoZSB3aW5kb3cgYmFja2dyb3VuZC5cbiAgICAgKiBAcGFyYW0gYiAtIFRoZSBkZXNpcmVkIGJsdWUgY29tcG9uZW50IG9mIHRoZSB3aW5kb3cgYmFja2dyb3VuZC5cbiAgICAgKiBAcGFyYW0gYSAtIFRoZSBkZXNpcmVkIGFscGhhIGNvbXBvbmVudCBvZiB0aGUgd2luZG93IGJhY2tncm91bmQuXG4gICAgICovXG4gICAgU2V0QmFja2dyb3VuZENvbG91cihyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyLCBhOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRCYWNrZ3JvdW5kQ29sb3VyTWV0aG9kLCB7IHIsIGcsIGIsIGEgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgd2luZG93IGZyYW1lIGFuZCB0aXRsZSBiYXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZnJhbWVsZXNzIC0gV2hldGhlciB0aGUgd2luZG93IHNob3VsZCBiZSBmcmFtZWxlc3MuXG4gICAgICovXG4gICAgU2V0RnJhbWVsZXNzKGZyYW1lbGVzczogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldEZyYW1lbGVzc01ldGhvZCwgeyBmcmFtZWxlc3MgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgdGhlIHN5c3RlbSBmdWxsc2NyZWVuIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbmFibGVkIC0gV2hldGhlciB0aGUgZnVsbHNjcmVlbiBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWQuXG4gICAgICovXG4gICAgU2V0RnVsbHNjcmVlbkJ1dHRvbkVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldEZ1bGxzY3JlZW5CdXR0b25FbmFibGVkTWV0aG9kLCB7IGVuYWJsZWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gd2lkdGggLSBUaGUgZGVzaXJlZCBtYXhpbXVtIHdpZHRoIG9mIHRoZSB3aW5kb3cuXG4gICAgICogQHBhcmFtIGhlaWdodCAtIFRoZSBkZXNpcmVkIG1heGltdW0gaGVpZ2h0IG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgU2V0TWF4U2l6ZSh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldE1heFNpemVNZXRob2QsIHsgd2lkdGgsIGhlaWdodCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBtaW5pbXVtIHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB3aWR0aCAtIFRoZSBkZXNpcmVkIG1pbmltdW0gd2lkdGggb2YgdGhlIHdpbmRvdy5cbiAgICAgKiBAcGFyYW0gaGVpZ2h0IC0gVGhlIGRlc2lyZWQgbWluaW11bSBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRNaW5TaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0TWluU2l6ZU1ldGhvZCwgeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgdG8gdGhlIHNjcmVlbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB4IC0gVGhlIGRlc2lyZWQgaG9yaXpvbnRhbCByZWxhdGl2ZSBwb3NpdGlvbiBvZiB0aGUgd2luZG93LlxuICAgICAqIEBwYXJhbSB5IC0gVGhlIGRlc2lyZWQgdmVydGljYWwgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRSZWxhdGl2ZVBvc2l0aW9uKHg6IG51bWJlciwgeTogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0UmVsYXRpdmVQb3NpdGlvbk1ldGhvZCwgeyB4LCB5IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgd2hldGhlciB0aGUgd2luZG93IGlzIHJlc2l6YWJsZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXNpemFibGUgLSBXaGV0aGVyIHRoZSB3aW5kb3cgc2hvdWxkIGJlIHJlc2l6YWJsZS5cbiAgICAgKi9cbiAgICBTZXRSZXNpemFibGUocmVzaXphYmxlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0UmVzaXphYmxlTWV0aG9kLCB7IHJlc2l6YWJsZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzaXplIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gd2lkdGggLSBUaGUgZGVzaXJlZCB3aWR0aCBvZiB0aGUgd2luZG93LlxuICAgICAqIEBwYXJhbSBoZWlnaHQgLSBUaGUgZGVzaXJlZCBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRTaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0U2l6ZU1ldGhvZCwgeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRpdGxlIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGl0bGUgLSBUaGUgZGVzaXJlZCB0aXRsZSBvZiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFNldFRpdGxlKHRpdGxlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRUaXRsZU1ldGhvZCwgeyB0aXRsZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB6b29tIGxldmVsIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gem9vbSAtIFRoZSBkZXNpcmVkIHpvb20gbGV2ZWwuXG4gICAgICovXG4gICAgU2V0Wm9vbSh6b29tOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRab29tTWV0aG9kLCB7IHpvb20gfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvd3MgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTaG93KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNob3dNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTaXplKCk6IFByb21pc2U8U2l6ZT4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNpemVNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIHdpbmRvdyBiZXR3ZWVuIGZ1bGxzY3JlZW4gYW5kIG5vcm1hbC5cbiAgICAgKi9cbiAgICBUb2dnbGVGdWxsc2NyZWVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFRvZ2dsZUZ1bGxzY3JlZW5NZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIHdpbmRvdyBiZXR3ZWVuIG1heGltaXNlZCBhbmQgbm9ybWFsLlxuICAgICAqL1xuICAgIFRvZ2dsZU1heGltaXNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFRvZ2dsZU1heGltaXNlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIHRoZSB3aW5kb3cgYmV0d2VlbiBmcmFtZWxlc3MgYW5kIG5vcm1hbC5cbiAgICAgKi9cbiAgICBUb2dnbGVGcmFtZWxlc3MoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oVG9nZ2xlRnJhbWVsZXNzTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbi1mdWxsc2NyZWVucyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFVuRnVsbHNjcmVlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShVbkZ1bGxzY3JlZW5NZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVuLW1heGltaXNlcyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFVuTWF4aW1pc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oVW5NYXhpbWlzZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVW4tbWluaW1pc2VzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgVW5NaW5pbWlzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShVbk1pbmltaXNlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB3aWR0aCBvZiB0aGUgd2luZG93LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgd2lkdGggb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBXaWR0aCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFdpZHRoTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBab29tcyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFpvb20oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oWm9vbU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5jcmVhc2VzIHRoZSB6b29tIGxldmVsIG9mIHRoZSB3ZWJ2aWV3IGNvbnRlbnQuXG4gICAgICovXG4gICAgWm9vbUluKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFpvb21Jbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVjcmVhc2VzIHRoZSB6b29tIGxldmVsIG9mIHRoZSB3ZWJ2aWV3IGNvbnRlbnQuXG4gICAgICovXG4gICAgWm9vbU91dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShab29tT3V0TWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldHMgdGhlIHpvb20gbGV2ZWwgb2YgdGhlIHdlYnZpZXcgY29udGVudC5cbiAgICAgKi9cbiAgICBab29tUmVzZXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oWm9vbVJlc2V0TWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGZpbGUgZHJvcHMgb3JpZ2luYXRpbmcgZnJvbSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIChlLmcuLCBtYWNPUy9MaW51eCBuYXRpdmUgZHJhZy1hbmQtZHJvcCkuXG4gICAgICogR2F0aGVycyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZHJvcCB0YXJnZXQgZWxlbWVudCBhbmQgc2VuZHMgaXQgYmFjayB0byB0aGUgR28gYmFja2VuZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlbmFtZXMgLSBBbiBhcnJheSBvZiBmaWxlIHBhdGhzIChzdHJpbmdzKSB0aGF0IHdlcmUgZHJvcHBlZC5cbiAgICAgKiBAcGFyYW0geCAtIFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIGRyb3AgZXZlbnQsIGluIGxvZ2ljYWwgKENTUykgcGl4ZWxzIHJlbGF0aXZlIHRvIHRoZSB3ZWJ2aWV3LlxuICAgICAqIEBwYXJhbSB5IC0gVGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgZHJvcCBldmVudCwgaW4gbG9naWNhbCAoQ1NTKSBwaXhlbHMgcmVsYXRpdmUgdG8gdGhlIHdlYnZpZXcuXG4gICAgICovXG4gICAgSGFuZGxlUGxhdGZvcm1GaWxlRHJvcChmaWxlbmFtZXM6IHN0cmluZ1tdLCB4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBDaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBpZ25vcmUgdGhlIGRyb3BcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7XG4gICAgICAgIGNvbnN0IGRyb3BUYXJnZXQgPSBnZXREcm9wVGFyZ2V0RWxlbWVudChlbGVtZW50KTtcblxuICAgICAgICBpZiAoIWRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIC8vIERyb3Agd2FzIG5vdCBvbiBhIGRlc2lnbmF0ZWQgZHJvcCB0YXJnZXQgLSBpZ25vcmVcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnREZXRhaWxzID0ge1xuICAgICAgICAgICAgaWQ6IGRyb3BUYXJnZXQuaWQsXG4gICAgICAgICAgICBjbGFzc0xpc3Q6IEFycmF5LmZyb20oZHJvcFRhcmdldC5jbGFzc0xpc3QpLFxuICAgICAgICAgICAgYXR0cmlidXRlczoge30gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkcm9wVGFyZ2V0LmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBkcm9wVGFyZ2V0LmF0dHJpYnV0ZXNbaV07XG4gICAgICAgICAgICBlbGVtZW50RGV0YWlscy5hdHRyaWJ1dGVzW2F0dHIubmFtZV0gPSBhdHRyLnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgICAgIGZpbGVuYW1lcyxcbiAgICAgICAgICAgIHgsXG4gICAgICAgICAgICB5LFxuICAgICAgICAgICAgZWxlbWVudERldGFpbHMsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpc1tjYWxsZXJTeW1dKEZpbGVzRHJvcHBlZCwgcGF5bG9hZCk7XG4gICAgICAgIFxuICAgICAgICAvLyBDbGVhbiB1cCBuYXRpdmUgZHJhZyBzdGF0ZSBhZnRlciBkcm9wXG4gICAgICAgIGNsZWFudXBOYXRpdmVEcmFnKCk7XG4gICAgfVxuICBcbiAgICAvKipcbiAgICAgKiBNb3ZlcyB0aGUgd2luZG93IHRvIHRoZSBjZW50ZXIgb2YgdGhlIHNwZWNpZmllZCBzY3JlZW4ncyB3b3JrIGFyZWEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NyZWVuSUQgLSBUaGUgSUQgb2YgdGhlIHRhcmdldCBzY3JlZW4uXG4gICAgICovXG4gICAgU2V0U2NyZWVuKHNjcmVlbklEOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRTY3JlZW5NZXRob2QsIHsgc2NyZWVuSUQgfSk7XG4gICAgfVxuXG4gICAgLyogVHJpZ2dlcnMgV2luZG93cyAxMSBTbmFwIEFzc2lzdCBmZWF0dXJlIChXaW5kb3dzIG9ubHkpLlxuICAgICAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byBwcmVzc2luZyBXaW4rWiBhbmQgc2hvd3Mgc25hcCBsYXlvdXQgb3B0aW9ucy5cbiAgICAgKi9cbiAgICBTbmFwQXNzaXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNuYXBBc3Npc3RNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBwcmludCBkaWFsb2cgZm9yIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgUHJpbnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oUHJpbnRNZXRob2QpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgd2luZG93IHdpdGhpbiB3aGljaCB0aGUgc2NyaXB0IGlzIHJ1bm5pbmcuXG4gKi9cbmNvbnN0IHRoaXNXaW5kb3cgPSBuZXcgV2luZG93KCcnKTtcblxuLyoqXG4gKiBTZXRzIHVwIGdsb2JhbCBkcmFnIGFuZCBkcm9wIGV2ZW50IGxpc3RlbmVycyBmb3IgZmlsZSBkcm9wcy5cbiAqIEhhbmRsZXMgdmlzdWFsIGZlZWRiYWNrIChob3ZlciBzdGF0ZSkgYW5kIGZpbGUgZHJvcCBwcm9jZXNzaW5nLlxuICovXG5mdW5jdGlvbiBzZXR1cERyb3BUYXJnZXRMaXN0ZW5lcnMoKSB7XG4gICAgY29uc3QgZG9jRWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBsZXQgZHJhZ0VudGVyQ291bnRlciA9IDA7XG5cbiAgICBkb2NFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoIWV2ZW50LmRhdGFUcmFuc2Zlcj8udHlwZXMuaW5jbHVkZXMoJ0ZpbGVzJykpIHtcbiAgICAgICAgICAgIHJldHVybjsgLy8gT25seSBoYW5kbGUgZmlsZSBkcmFncywgbGV0IG90aGVyIGRyYWdzIHBhc3MgdGhyb3VnaFxuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIEFsd2F5cyBwcmV2ZW50IGRlZmF1bHQgdG8gc3RvcCBicm93c2VyIG5hdmlnYXRpb25cbiAgICAgICAgLy8gT24gV2luZG93cywgY2hlY2sgaWYgZmlsZSBkcm9wcyBhcmUgZW5hYmxlZCBmb3IgdGhpcyB3aW5kb3dcbiAgICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ25vbmUnOyAvLyBTaG93IFwibm8gZHJvcFwiIGN1cnNvclxuICAgICAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBkb24ndCBzaG93IGhvdmVyIGVmZmVjdHNcbiAgICAgICAgfVxuICAgICAgICBkcmFnRW50ZXJDb3VudGVyKys7XG4gICAgICAgIFxuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKTtcbiAgICAgICAgY29uc3QgZHJvcFRhcmdldCA9IGdldERyb3BUYXJnZXRFbGVtZW50KHRhcmdldEVsZW1lbnQpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBob3ZlciBzdGF0ZVxuICAgICAgICBpZiAoY3VycmVudERyb3BUYXJnZXQgJiYgY3VycmVudERyb3BUYXJnZXQgIT09IGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICBkcm9wVGFyZ2V0LmNsYXNzTGlzdC5hZGQoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ2NvcHknO1xuICAgICAgICAgICAgY3VycmVudERyb3BUYXJnZXQgPSBkcm9wVGFyZ2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbm9uZSc7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9LCBmYWxzZSk7XG5cbiAgICBkb2NFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBPbmx5IGhhbmRsZSBmaWxlIGRyYWdzXG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gQWx3YXlzIHByZXZlbnQgZGVmYXVsdCB0byBzdG9wIGJyb3dzZXIgbmF2aWdhdGlvblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBjaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbm9uZSc7IC8vIFNob3cgXCJubyBkcm9wXCIgY3Vyc29yXG4gICAgICAgICAgICByZXR1cm47IC8vIEZpbGUgZHJvcHMgZGlzYWJsZWQsIGRvbid0IHNob3cgaG92ZXIgZWZmZWN0c1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgZHJvcCB0YXJnZXQgYXMgY3Vyc29yIG1vdmVzXG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xuICAgICAgICBjb25zdCBkcm9wVGFyZ2V0ID0gZ2V0RHJvcFRhcmdldEVsZW1lbnQodGFyZ2V0RWxlbWVudCk7XG4gICAgICAgIFxuICAgICAgICBpZiAoY3VycmVudERyb3BUYXJnZXQgJiYgY3VycmVudERyb3BUYXJnZXQgIT09IGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGlmICghZHJvcFRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKSkge1xuICAgICAgICAgICAgICAgIGRyb3BUYXJnZXQuY2xhc3NMaXN0LmFkZChEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSc7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IGRyb3BUYXJnZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sIGZhbHNlKTtcblxuICAgIGRvY0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIEFsd2F5cyBwcmV2ZW50IGRlZmF1bHQgdG8gc3RvcCBicm93c2VyIG5hdmlnYXRpb25cbiAgICAgICAgLy8gT24gV2luZG93cywgY2hlY2sgaWYgZmlsZSBkcm9wcyBhcmUgZW5hYmxlZCBmb3IgdGhpcyB3aW5kb3dcbiAgICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gT24gTGludXgvV2ViS2l0R1RLIGFuZCBtYWNPUywgZHJhZ2xlYXZlIGZpcmVzIGltbWVkaWF0ZWx5IHdpdGggcmVsYXRlZFRhcmdldD1udWxsIHdoZW4gbmF0aXZlXG4gICAgICAgIC8vIGRyYWcgaGFuZGxpbmcgaXMgaW52b2x2ZWQuIElnbm9yZSB0aGVzZSBzcHVyaW91cyBldmVudHMgLSB3ZSdsbCBjbGVhbiB1cCBvbiBkcm9wIGluc3RlYWQuXG4gICAgICAgIGlmIChldmVudC5yZWxhdGVkVGFyZ2V0ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGRyYWdFbnRlckNvdW50ZXItLTtcbiAgICAgICAgXG4gICAgICAgIGlmIChkcmFnRW50ZXJDb3VudGVyID09PSAwIHx8IFxuICAgICAgICAgICAgKGN1cnJlbnREcm9wVGFyZ2V0ICYmICFjdXJyZW50RHJvcFRhcmdldC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpKSkge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnREcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgY3VycmVudERyb3BUYXJnZXQuY2xhc3NMaXN0LnJlbW92ZShEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRyYWdFbnRlckNvdW50ZXIgPSAwO1xuICAgICAgICB9XG4gICAgfSwgZmFsc2UpO1xuXG4gICAgZG9jRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBPbmx5IGhhbmRsZSBmaWxlIGRyb3BzXG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gQWx3YXlzIHByZXZlbnQgZGVmYXVsdCB0byBzdG9wIGJyb3dzZXIgbmF2aWdhdGlvblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBjaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRyYWdFbnRlckNvdW50ZXIgPSAwO1xuICAgICAgICBcbiAgICAgICAgaWYgKGN1cnJlbnREcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBoYW5kbGUgZmlsZSBkcm9wcyB2aWEgSmF2YVNjcmlwdFxuICAgICAgICAvLyBPbiBtYWNPUy9MaW51eCwgbmF0aXZlIGNvZGUgd2lsbCBjYWxsIEhhbmRsZVBsYXRmb3JtRmlsZURyb3BcbiAgICAgICAgaWYgKGNhblJlc29sdmVGaWxlUGF0aHMoKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZXM6IEZpbGVbXSA9IFtdO1xuICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ua2luZCA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gaXRlbS5nZXRBc0ZpbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlKSBmaWxlcy5wdXNoKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzLnB1c2goZmlsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmVGaWxlUGF0aHMoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSwgZmlsZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgZmFsc2UpO1xufVxuXG4vLyBJbml0aWFsaXplIGxpc3RlbmVycyB3aGVuIHRoZSBzY3JpcHQgbG9hZHNcbmlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHNldHVwRHJvcFRhcmdldExpc3RlbmVycygpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0aGlzV2luZG93O1xuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgKiBhcyBSdW50aW1lIGZyb20gXCIuLi9Ad2FpbHNpby9ydW50aW1lL3NyY1wiO1xuXG4vLyBOT1RFOiB0aGUgZm9sbG93aW5nIG1ldGhvZHMgTVVTVCBiZSBpbXBvcnRlZCBleHBsaWNpdGx5IGJlY2F1c2Ugb2YgaG93IGVzYnVpbGQgaW5qZWN0aW9uIHdvcmtzXG5pbXBvcnQgeyBFbmFibGUgYXMgRW5hYmxlV01MIH0gZnJvbSBcIi4uL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3dtbFwiO1xuaW1wb3J0IHsgZGVidWdMb2cgfSBmcm9tIFwiLi4vQHdhaWxzaW8vcnVudGltZS9zcmMvdXRpbHNcIjtcblxud2luZG93LndhaWxzID0gUnVudGltZTtcbkVuYWJsZVdNTCgpO1xuXG5pZiAoREVCVUcpIHtcbiAgICBkZWJ1Z0xvZyhcIldhaWxzIFJ1bnRpbWUgTG9hZGVkXCIpXG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5TeXN0ZW0pO1xuXG5jb25zdCBTeXN0ZW1Jc0RhcmtNb2RlID0gMDtcbmNvbnN0IFN5c3RlbUVudmlyb25tZW50ID0gMTtcbmNvbnN0IFN5c3RlbUNhcGFiaWxpdGllcyA9IDI7XG5cbmNvbnN0IF9pbnZva2UgPSAoZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIFdpbmRvd3MgV2ViVmlldzJcbiAgICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5jaHJvbWU/LndlYnZpZXc/LnBvc3RNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLmNocm9tZS53ZWJ2aWV3LnBvc3RNZXNzYWdlLmJpbmQoKHdpbmRvdyBhcyBhbnkpLmNocm9tZS53ZWJ2aWV3KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBtYWNPUy9pT1MgV0tXZWJWaWV3XG4gICAgICAgIGVsc2UgaWYgKCh3aW5kb3cgYXMgYW55KS53ZWJraXQ/Lm1lc3NhZ2VIYW5kbGVycz8uWydleHRlcm5hbCddPy5wb3N0TWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS53ZWJraXQubWVzc2FnZUhhbmRsZXJzWydleHRlcm5hbCddLnBvc3RNZXNzYWdlLmJpbmQoKHdpbmRvdyBhcyBhbnkpLndlYmtpdC5tZXNzYWdlSGFuZGxlcnNbJ2V4dGVybmFsJ10pO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFuZHJvaWQgV2ViVmlldyAtIHVzZXMgYWRkSmF2YXNjcmlwdEludGVyZmFjZSB3aGljaCBleHBvc2VzIHdpbmRvdy53YWlscy5pbnZva2VcbiAgICAgICAgZWxzZSBpZiAoKHdpbmRvdyBhcyBhbnkpLndhaWxzPy5pbnZva2UpIHtcbiAgICAgICAgICAgIHJldHVybiAobXNnOiBhbnkpID0+ICh3aW5kb3cgYXMgYW55KS53YWlscy5pbnZva2UodHlwZW9mIG1zZyA9PT0gJ3N0cmluZycgPyBtc2cgOiBKU09OLnN0cmluZ2lmeShtc2cpKTtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2goZSkge31cblxuICAgIGNvbnNvbGUud2FybignXFxuJWNcdTI2QTBcdUZFMEYgQnJvd3NlciBFbnZpcm9ubWVudCBEZXRlY3RlZCAlY1xcblxcbiVjT25seSBVSSBwcmV2aWV3cyBhcmUgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyLiBGb3IgZnVsbCBmdW5jdGlvbmFsaXR5LCBwbGVhc2UgcnVuIHRoZSBhcHBsaWNhdGlvbiBpbiBkZXNrdG9wIG1vZGUuXFxuTW9yZSBpbmZvcm1hdGlvbiBhdDogaHR0cHM6Ly92My53YWlscy5pby9sZWFybi9idWlsZC8jdXNpbmctYS1icm93c2VyLWZvci1kZXZlbG9wbWVudFxcbicsXG4gICAgICAgICdiYWNrZ3JvdW5kOiAjZmZmZmZmOyBjb2xvcjogIzAwMDAwMDsgZm9udC13ZWlnaHQ6IGJvbGQ7IHBhZGRpbmc6IDRweCA4cHg7IGJvcmRlci1yYWRpdXM6IDRweDsgYm9yZGVyOiAycHggc29saWQgIzAwMDAwMDsnLFxuICAgICAgICAnYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7JyxcbiAgICAgICAgJ2NvbG9yOiAjZmZmZmZmOyBmb250LXN0eWxlOiBpdGFsaWM7IGZvbnQtd2VpZ2h0OiBib2xkOycpO1xuICAgIHJldHVybiBudWxsO1xufSkoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZShtc2c6IGFueSk6IHZvaWQge1xuICAgIF9pbnZva2U/Lihtc2cpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgc3lzdGVtIGRhcmsgbW9kZSBzdGF0dXMuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgaWYgdGhlIHN5c3RlbSBpcyBpbiBkYXJrIG1vZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc0RhcmtNb2RlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBjYWxsKFN5c3RlbUlzRGFya01vZGUpO1xufVxuXG4vKipcbiAqIEZldGNoZXMgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgYXBwbGljYXRpb24gZnJvbSB0aGUgc2VydmVyLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBjYXBhYmlsaXRpZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBDYXBhYmlsaXRpZXMoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgcmV0dXJuIGNhbGwoU3lzdGVtQ2FwYWJpbGl0aWVzKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPU0luZm8ge1xuICAgIC8qKiBUaGUgYnJhbmRpbmcgb2YgdGhlIE9TLiAqL1xuICAgIEJyYW5kaW5nOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBJRCBvZiB0aGUgT1MuICovXG4gICAgSUQ6IHN0cmluZztcbiAgICAvKiogVGhlIG5hbWUgb2YgdGhlIE9TLiAqL1xuICAgIE5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIHZlcnNpb24gb2YgdGhlIE9TLiAqL1xuICAgIFZlcnNpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudEluZm8ge1xuICAgIC8qKiBUaGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBzeXN0ZW0uICovXG4gICAgQXJjaDogc3RyaW5nO1xuICAgIC8qKiBUcnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nIGluIGRlYnVnIG1vZGUsIG90aGVyd2lzZSBmYWxzZS4gKi9cbiAgICBEZWJ1ZzogYm9vbGVhbjtcbiAgICAvKiogVGhlIG9wZXJhdGluZyBzeXN0ZW0gaW4gdXNlLiAqL1xuICAgIE9TOiBzdHJpbmc7XG4gICAgLyoqIERldGFpbHMgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICovXG4gICAgT1NJbmZvOiBPU0luZm87XG4gICAgLyoqIEFkZGl0aW9uYWwgcGxhdGZvcm0gaW5mb3JtYXRpb24uICovXG4gICAgUGxhdGZvcm1JbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBlbnZpcm9ubWVudCBkZXRhaWxzLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9iamVjdCBjb250YWluaW5nIE9TIGFuZCBzeXN0ZW0gYXJjaGl0ZWN0dXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRW52aXJvbm1lbnQoKTogUHJvbWlzZTxFbnZpcm9ubWVudEluZm8+IHtcbiAgICByZXR1cm4gY2FsbChTeXN0ZW1FbnZpcm9ubWVudCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0gaXMgV2luZG93cy5cbiAqXG4gKiBAcmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaXMgV2luZG93cywgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNXaW5kb3dzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1MgPT09IFwid2luZG93c1wiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtIGlzIExpbnV4LlxuICpcbiAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtIGlzIExpbnV4LCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc0xpbnV4KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1MgPT09IFwibGludXhcIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgYSBtYWNPUyBvcGVyYXRpbmcgc3lzdGVtLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGVudmlyb25tZW50IGlzIG1hY09TLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc01hYygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZW52aXJvbm1lbnQ/Lk9TID09PSBcImRhcndpblwiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtIGlzIGlPUy5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGlzIGlPUywgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNJT1MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmVudmlyb25tZW50Py5PUyA9PT0gXCJpb3NcIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbSBpcyBBbmRyb2lkLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaXMgQW5kcm9pZCwgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNBbmRyb2lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1MgPT09IFwiYW5kcm9pZFwiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgYXBwIGlzIHJ1bm5pbmcgb24gYSBtb2JpbGUgT1MgKGlPUyBvciBBbmRyb2lkKS5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIG9uIGlPUyBvciBBbmRyb2lkLCBvdGhlcndpc2UgZmFsc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gSXNJT1MoKSB8fCBJc0FuZHJvaWQoKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGFwcCBpcyBydW5uaW5nIG9uIGEgZGVza3RvcCBPUyAobWFjT1MsIFdpbmRvd3Mgb3IgTGludXgpLlxuICpcbiAqIEByZXR1cm5zIFRydWUgb24gbWFjT1MsIFdpbmRvd3Mgb3IgTGludXgsIG90aGVyd2lzZSBmYWxzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzRGVza3RvcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gSXNNYWMoKSB8fCBJc1dpbmRvd3MoKSB8fCBJc0xpbnV4KCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGFyY2hpdGVjdHVyZSBpcyBBTUQ2NC5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGFyY2hpdGVjdHVyZSBpcyBBTUQ2NCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNBTUQ2NCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZW52aXJvbm1lbnQ/LkFyY2ggPT09IFwiYW1kNjRcIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgYXJjaGl0ZWN0dXJlIGlzIEFSTS5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjdXJyZW50IGFyY2hpdGVjdHVyZSBpcyBBUk0sIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzQVJNKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uQXJjaCA9PT0gXCJhcm1cIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgQVJNNjQgYXJjaGl0ZWN0dXJlLlxuICpcbiAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgZW52aXJvbm1lbnQgaXMgQVJNNjQgYXJjaGl0ZWN0dXJlLCBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzQVJNNjQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmVudmlyb25tZW50Py5BcmNoID09PSBcImFybTY0XCI7XG59XG5cbi8qKlxuICogUmVwb3J0cyB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgcnVuIGluIGRlYnVnIG1vZGUuXG4gKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgYXBwIGlzIGJlaW5nIHJ1biBpbiBkZWJ1ZyBtb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNEZWJ1ZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbigod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uRGVidWcpO1xufVxuXG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuaW1wb3J0IHsgSXNEZWJ1ZyB9IGZyb20gXCIuL3N5c3RlbS5qc1wiO1xuaW1wb3J0IHsgZXZlbnRUYXJnZXQgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG4vLyBzZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIGNvbnRleHRNZW51SGFuZGxlcik7XG59XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkNvbnRleHRNZW51KTtcblxuY29uc3QgQ29udGV4dE1lbnVPcGVuID0gMDtcblxuZnVuY3Rpb24gb3BlbkNvbnRleHRNZW51KGlkOiBzdHJpbmcsIHg6IG51bWJlciwgeTogbnVtYmVyLCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB2b2lkIGNhbGwoQ29udGV4dE1lbnVPcGVuLCB7aWQsIHgsIHksIGRhdGF9KTtcbn1cblxuZnVuY3Rpb24gY29udGV4dE1lbnVIYW5kbGVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnRUYXJnZXQoZXZlbnQpO1xuXG4gICAgLy8gQ2hlY2sgZm9yIGN1c3RvbSBjb250ZXh0IG1lbnVcbiAgICBjb25zdCBjdXN0b21Db250ZXh0TWVudSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRhcmdldCkuZ2V0UHJvcGVydHlWYWx1ZShcIi0tY3VzdG9tLWNvbnRleHRtZW51XCIpLnRyaW0oKTtcblxuICAgIGlmIChjdXN0b21Db250ZXh0TWVudSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBkYXRhID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1jdXN0b20tY29udGV4dG1lbnUtZGF0YVwiKTtcbiAgICAgICAgb3BlbkNvbnRleHRNZW51KGN1c3RvbUNvbnRleHRNZW51LCBldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZLCBkYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzRGVmYXVsdENvbnRleHRNZW51KGV2ZW50LCB0YXJnZXQpO1xuICAgIH1cbn1cblxuXG4vKlxuLS1kZWZhdWx0LWNvbnRleHRtZW51OiBhdXRvOyAoZGVmYXVsdCkgd2lsbCBzaG93IHRoZSBkZWZhdWx0IGNvbnRleHQgbWVudSBpZiBjb250ZW50RWRpdGFibGUgaXMgdHJ1ZSBPUiB0ZXh0IGhhcyBiZWVuIHNlbGVjdGVkIE9SIGVsZW1lbnQgaXMgaW5wdXQgb3IgdGV4dGFyZWFcbi0tZGVmYXVsdC1jb250ZXh0bWVudTogc2hvdzsgd2lsbCBhbHdheXMgc2hvdyB0aGUgZGVmYXVsdCBjb250ZXh0IG1lbnVcbi0tZGVmYXVsdC1jb250ZXh0bWVudTogaGlkZTsgd2lsbCBhbHdheXMgaGlkZSB0aGUgZGVmYXVsdCBjb250ZXh0IG1lbnVcblxuVGhpcyBydWxlIGlzIGluaGVyaXRlZCBsaWtlIG5vcm1hbCBDU1MgcnVsZXMsIHNvIG5lc3Rpbmcgd29ya3MgYXMgZXhwZWN0ZWRcbiovXG5mdW5jdGlvbiBwcm9jZXNzRGVmYXVsdENvbnRleHRNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCB0YXJnZXQ6IEhUTUxFbGVtZW50KSB7XG4gICAgLy8gRGVidWcgYnVpbGRzIGFsd2F5cyBzaG93IHRoZSBtZW51XG4gICAgaWYgKElzRGVidWcoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzcyBkZWZhdWx0IGNvbnRleHQgbWVudVxuICAgIHN3aXRjaCAod2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1kZWZhdWx0LWNvbnRleHRtZW51XCIpLnRyaW0oKSkge1xuICAgICAgICBjYXNlICdzaG93JzpcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAnaGlkZSc6XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGNvbnRlbnRFZGl0YWJsZSBpcyB0cnVlXG4gICAgaWYgKHRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdGV4dCBoYXMgYmVlbiBzZWxlY3RlZFxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBjb25zdCBoYXNTZWxlY3Rpb24gPSBzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnRvU3RyaW5nKCkubGVuZ3RoID4gMDtcbiAgICBpZiAoaGFzU2VsZWN0aW9uKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0aW9uLnJhbmdlQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdChpKTtcbiAgICAgICAgICAgIGNvbnN0IHJlY3RzID0gcmFuZ2UuZ2V0Q2xpZW50UmVjdHMoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcmVjdHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0gcmVjdHNbal07XG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQocmVjdC5sZWZ0LCByZWN0LnRvcCkgPT09IHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdGFnIGlzIGlucHV0IG9yIHRleHRhcmVhLlxuICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8IHRhcmdldCBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKGhhc1NlbGVjdGlvbiB8fCAoIXRhcmdldC5yZWFkT25seSAmJiAhdGFyZ2V0LmRpc2FibGVkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gaGlkZSBkZWZhdWx0IGNvbnRleHQgbWVudVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZnJvbSB0aGUgZmxhZyBtYXAuXG4gKlxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gcmV0cmlldmUgdGhlIHZhbHVlIGZvci5cbiAqIEByZXR1cm4gVGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldEZsYWcoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuX3dhaWxzLmZsYWdzW2tleV07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gcmV0cmlldmUgZmxhZyAnXCIgKyBrZXkgKyBcIic6IFwiICsgZSwgeyBjYXVzZTogZSB9KTtcbiAgICB9XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IGludm9rZSwgSXNXaW5kb3dzLCBJc0xpbnV4IH0gZnJvbSBcIi4vc3lzdGVtLmpzXCI7XG5pbXBvcnQgeyBHZXRGbGFnIH0gZnJvbSBcIi4vZmxhZ3MuanNcIjtcbmltcG9ydCB7IGNhblRyYWNrQnV0dG9ucywgZXZlbnRUYXJnZXQgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG4vLyBTZXR1cFxubGV0IGNhbkRyYWcgPSBmYWxzZTtcbmxldCBkcmFnZ2luZyA9IGZhbHNlO1xuXG5sZXQgcmVzaXphYmxlID0gZmFsc2U7XG5sZXQgY2FuUmVzaXplID0gZmFsc2U7XG5sZXQgcmVzaXppbmcgPSBmYWxzZTtcbmxldCByZXNpemVFZGdlOiBzdHJpbmcgPSBcIlwiO1xubGV0IGRlZmF1bHRDdXJzb3IgPSBcImF1dG9cIjtcblxubGV0IGJ1dHRvbnMgPSAwO1xuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxubGV0IGJ1dHRvbnNUcmFja2VkID0gZmFsc2U7XG5cbmlmIChoYXNET00pIHtcbiAgICBidXR0b25zVHJhY2tlZCA9IGNhblRyYWNrQnV0dG9ucygpO1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xuICAgIHdpbmRvdy5fd2FpbHMuc2V0UmVzaXphYmxlID0gKHZhbHVlOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIHJlc2l6YWJsZSA9IHZhbHVlO1xuICAgICAgICBpZiAoIXJlc2l6YWJsZSkge1xuICAgICAgICAgICAgLy8gU3RvcCByZXNpemluZyBpZiBpbiBwcm9ncmVzcy5cbiAgICAgICAgICAgIGNhblJlc2l6ZSA9IHJlc2l6aW5nID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRSZXNpemUoKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbi8vIERlZmVyIGF0dGFjaGluZyBtb3VzZSBsaXN0ZW5lcnMgdW50aWwgd2Uga25vdyB3ZSdyZSBub3Qgb24gbW9iaWxlLlxubGV0IGRyYWdJbml0RG9uZSA9IGZhbHNlO1xuZnVuY3Rpb24gaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgb3MgPSAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1M7XG4gICAgaWYgKG9zID09PSBcImlvc1wiIHx8IG9zID09PSBcImFuZHJvaWRcIikgcmV0dXJuIHRydWU7XG4gICAgLy8gRmFsbGJhY2sgaGV1cmlzdGljIGlmIGVudmlyb25tZW50IG5vdCB5ZXQgc2V0XG4gICAgY29uc3QgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50IHx8IG5hdmlnYXRvci52ZW5kb3IgfHwgKHdpbmRvdyBhcyBhbnkpLm9wZXJhIHx8IFwiXCI7XG4gICAgcmV0dXJuIC9hbmRyb2lkfGlwaG9uZXxpcGFkfGlwb2R8aWVtb2JpbGV8d3BkZXNrdG9wL2kudGVzdCh1YSk7XG59XG5mdW5jdGlvbiB0cnlJbml0RHJhZ0hhbmRsZXJzKCk6IHZvaWQge1xuICAgIGlmIChkcmFnSW5pdERvbmUpIHJldHVybjtcbiAgICBpZiAoaXNNb2JpbGUoKSkgcmV0dXJuO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB1cGRhdGUsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdXBkYXRlLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB1cGRhdGUsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICBmb3IgKGNvbnN0IGV2IG9mIFsnY2xpY2snLCAnY29udGV4dG1lbnUnLCAnZGJsY2xpY2snXSkge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihldiwgc3VwcHJlc3NFdmVudCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgIH1cbiAgICBkcmFnSW5pdERvbmUgPSB0cnVlO1xufVxuaWYgKGhhc0RPTSkge1xuICAgIC8vIEF0dGVtcHQgaW1tZWRpYXRlIGluaXQgKGluIGNhc2UgZW52aXJvbm1lbnQgYWxyZWFkeSBwcmVzZW50KVxuICAgIHRyeUluaXREcmFnSGFuZGxlcnMoKTtcbiAgICAvLyBBbHNvIGF0dGVtcHQgb24gRE9NIHJlYWR5XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIHRyeUluaXREcmFnSGFuZGxlcnMsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICAvLyBBcyBhIGxhc3QgcmVzb3J0LCBwb2xsIGZvciBlbnZpcm9ubWVudCBmb3IgYSBzaG9ydCBwZXJpb2RcbiAgICBsZXQgZHJhZ0VudlBvbGxzID0gMDtcbiAgICBjb25zdCBkcmFnRW52UG9sbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGlmIChkcmFnSW5pdERvbmUpIHsgd2luZG93LmNsZWFySW50ZXJ2YWwoZHJhZ0VudlBvbGwpOyByZXR1cm47IH1cbiAgICAgICAgdHJ5SW5pdERyYWdIYW5kbGVycygpO1xuICAgICAgICBpZiAoKytkcmFnRW52UG9sbHMgPiAxMDApIHsgd2luZG93LmNsZWFySW50ZXJ2YWwoZHJhZ0VudlBvbGwpOyB9XG4gICAgfSwgNTApO1xufVxuXG5mdW5jdGlvbiBzdXBwcmVzc0V2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIC8vIFN1cHByZXNzIGNsaWNrIGV2ZW50cyB3aGlsZSByZXNpemluZyBvciBkcmFnZ2luZy5cbiAgICBpZiAoZHJhZ2dpbmcgfHwgcmVzaXppbmcpIHtcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbn1cblxuLy8gVXNlIGNvbnN0YW50cyB0byBhdm9pZCBjb21wYXJpbmcgc3RyaW5ncyBtdWx0aXBsZSB0aW1lcy5cbmNvbnN0IE1vdXNlRG93biA9IDA7XG5jb25zdCBNb3VzZVVwICAgPSAxO1xuY29uc3QgTW91c2VNb3ZlID0gMjtcblxuZnVuY3Rpb24gdXBkYXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgLy8gV2luZG93cyBzdXBwcmVzc2VzIG1vdXNlIGV2ZW50cyBhdCB0aGUgZW5kIG9mIGRyYWdnaW5nIG9yIHJlc2l6aW5nLFxuICAgIC8vIHNvIHdlIG5lZWQgdG8gYmUgc21hcnQgYW5kIHN5bnRoZXNpemUgYnV0dG9uIGV2ZW50cy5cblxuICAgIGxldCBldmVudFR5cGU6IG51bWJlciwgZXZlbnRCdXR0b25zID0gZXZlbnQuYnV0dG9ucztcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnbW91c2Vkb3duJzpcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IE1vdXNlRG93bjtcbiAgICAgICAgICAgIGlmICghYnV0dG9uc1RyYWNrZWQpIHsgZXZlbnRCdXR0b25zID0gYnV0dG9ucyB8ICgxIDw8IGV2ZW50LmJ1dHRvbik7IH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtb3VzZXVwJzpcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IE1vdXNlVXA7XG4gICAgICAgICAgICBpZiAoIWJ1dHRvbnNUcmFja2VkKSB7IGV2ZW50QnV0dG9ucyA9IGJ1dHRvbnMgJiB+KDEgPDwgZXZlbnQuYnV0dG9uKTsgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBldmVudFR5cGUgPSBNb3VzZU1vdmU7XG4gICAgICAgICAgICBpZiAoIWJ1dHRvbnNUcmFja2VkKSB7IGV2ZW50QnV0dG9ucyA9IGJ1dHRvbnM7IH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxldCByZWxlYXNlZCA9IGJ1dHRvbnMgJiB+ZXZlbnRCdXR0b25zO1xuICAgIGxldCBwcmVzc2VkID0gZXZlbnRCdXR0b25zICYgfmJ1dHRvbnM7XG5cbiAgICBidXR0b25zID0gZXZlbnRCdXR0b25zO1xuXG4gICAgLy8gU3ludGhlc2l6ZSBhIHJlbGVhc2UtcHJlc3Mgc2VxdWVuY2UgaWYgd2UgZGV0ZWN0IGEgcHJlc3Mgb2YgYW4gYWxyZWFkeSBwcmVzc2VkIGJ1dHRvbi5cbiAgICBpZiAoZXZlbnRUeXBlID09PSBNb3VzZURvd24gJiYgIShwcmVzc2VkICYgZXZlbnQuYnV0dG9uKSkge1xuICAgICAgICByZWxlYXNlZCB8PSAoMSA8PCBldmVudC5idXR0b24pO1xuICAgICAgICBwcmVzc2VkIHw9ICgxIDw8IGV2ZW50LmJ1dHRvbik7XG4gICAgfVxuXG4gICAgLy8gU3VwcHJlc3MgYWxsIGJ1dHRvbiBldmVudHMgZHVyaW5nIGRyYWdnaW5nIGFuZCByZXNpemluZyxcbiAgICAvLyB1bmxlc3MgdGhpcyBpcyBhIG1vdXNldXAgZXZlbnQgdGhhdCBpcyBlbmRpbmcgYSBkcmFnIGFjdGlvbi5cbiAgICBpZiAoXG4gICAgICAgIGV2ZW50VHlwZSAhPT0gTW91c2VNb3ZlIC8vIEZhc3QgcGF0aCBmb3IgbW91c2Vtb3ZlXG4gICAgICAgICYmIHJlc2l6aW5nXG4gICAgICAgIHx8IChcbiAgICAgICAgICAgIGRyYWdnaW5nXG4gICAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAgICAgZXZlbnRUeXBlID09PSBNb3VzZURvd25cbiAgICAgICAgICAgICAgICB8fCBldmVudC5idXR0b24gIT09IDBcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICkge1xuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHJlbGVhc2VzXG4gICAgaWYgKHJlbGVhc2VkICYgMSkgeyBwcmltYXJ5VXAoZXZlbnQpOyB9XG4gICAgLy8gSGFuZGxlIHByZXNzZXNcbiAgICBpZiAocHJlc3NlZCAmIDEpIHsgcHJpbWFyeURvd24oZXZlbnQpOyB9XG5cbiAgICAvLyBIYW5kbGUgbW91c2Vtb3ZlXG4gICAgaWYgKGV2ZW50VHlwZSA9PT0gTW91c2VNb3ZlKSB7IG9uTW91c2VNb3ZlKGV2ZW50KTsgfTtcbn1cblxuZnVuY3Rpb24gcHJpbWFyeURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBSZXNldCByZWFkaW5lc3Mgc3RhdGUuXG4gICAgY2FuRHJhZyA9IGZhbHNlO1xuICAgIGNhblJlc2l6ZSA9IGZhbHNlO1xuXG4gICAgLy8gSWdub3JlIHJlcGVhdGVkIGNsaWNrcyBvbiBtYWNPUyBhbmQgTGludXguXG4gICAgaWYgKCFJc1dpbmRvd3MoKSkge1xuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21vdXNlZG93bicgJiYgZXZlbnQuYnV0dG9uID09PSAwICYmIGV2ZW50LmRldGFpbCAhPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc2l6ZUVkZ2UpIHtcbiAgICAgICAgLy8gUmVhZHkgdG8gcmVzaXplIGlmIHRoZSBwcmltYXJ5IGJ1dHRvbiB3YXMgcHJlc3NlZCBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gICAgICAgIGNhblJlc2l6ZSA9IHRydWU7XG4gICAgICAgIC8vIERvIG5vdCBzdGFydCBkcmFnIG9wZXJhdGlvbnMgd2hlbiBvbiByZXNpemUgZWRnZXMuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZXRyaWV2ZSB0YXJnZXQgZWxlbWVudFxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50VGFyZ2V0KGV2ZW50KTtcblxuICAgIC8vIFJlYWR5IHRvIGRyYWcgaWYgdGhlIHByaW1hcnkgYnV0dG9uIHdhcyBwcmVzc2VkIGZvciB0aGUgZmlyc3QgdGltZSBvbiBhIGRyYWdnYWJsZSBlbGVtZW50LlxuICAgIC8vIElnbm9yZSBjbGlja3Mgb24gdGhlIHNjcm9sbGJhci5cbiAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRhcmdldCk7XG4gICAgY2FuRHJhZyA9IChcbiAgICAgICAgc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcIi0td2FpbHMtZHJhZ2dhYmxlXCIpLnRyaW0oKSA9PT0gXCJkcmFnXCJcbiAgICAgICAgJiYgKFxuICAgICAgICAgICAgZXZlbnQub2Zmc2V0WCAtIHBhcnNlRmxvYXQoc3R5bGUucGFkZGluZ0xlZnQpIDwgdGFyZ2V0LmNsaWVudFdpZHRoXG4gICAgICAgICAgICAmJiBldmVudC5vZmZzZXRZIC0gcGFyc2VGbG9hdChzdHlsZS5wYWRkaW5nVG9wKSA8IHRhcmdldC5jbGllbnRIZWlnaHRcbiAgICAgICAgKVxuICAgICk7XG59XG5cbmZ1bmN0aW9uIHByaW1hcnlVcChldmVudDogTW91c2VFdmVudCkge1xuICAgIC8vIFN0b3AgZHJhZ2dpbmcgYW5kIHJlc2l6aW5nLlxuICAgIGNhbkRyYWcgPSBmYWxzZTtcbiAgICBkcmFnZ2luZyA9IGZhbHNlO1xuICAgIGNhblJlc2l6ZSA9IGZhbHNlO1xuICAgIHJlc2l6aW5nID0gZmFsc2U7XG59XG5cbmNvbnN0IGN1cnNvckZvckVkZ2UgPSBPYmplY3QuZnJlZXplKHtcbiAgICBcInNlLXJlc2l6ZVwiOiBcIm53c2UtcmVzaXplXCIsXG4gICAgXCJzdy1yZXNpemVcIjogXCJuZXN3LXJlc2l6ZVwiLFxuICAgIFwibnctcmVzaXplXCI6IFwibndzZS1yZXNpemVcIixcbiAgICBcIm5lLXJlc2l6ZVwiOiBcIm5lc3ctcmVzaXplXCIsXG4gICAgXCJ3LXJlc2l6ZVwiOiBcImV3LXJlc2l6ZVwiLFxuICAgIFwibi1yZXNpemVcIjogXCJucy1yZXNpemVcIixcbiAgICBcInMtcmVzaXplXCI6IFwibnMtcmVzaXplXCIsXG4gICAgXCJlLXJlc2l6ZVwiOiBcImV3LXJlc2l6ZVwiLFxufSlcblxuZnVuY3Rpb24gc2V0UmVzaXplKGVkZ2U/OiBrZXlvZiB0eXBlb2YgY3Vyc29yRm9yRWRnZSk6IHZvaWQge1xuICAgIGlmIChlZGdlKSB7XG4gICAgICAgIGlmICghcmVzaXplRWRnZSkgeyBkZWZhdWx0Q3Vyc29yID0gZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3I7IH1cbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSBjdXJzb3JGb3JFZGdlW2VkZ2VdO1xuICAgIH0gZWxzZSBpZiAoIWVkZ2UgJiYgcmVzaXplRWRnZSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IGRlZmF1bHRDdXJzb3I7XG4gICAgfVxuXG4gICAgcmVzaXplRWRnZSA9IGVkZ2UgfHwgXCJcIjtcbn1cblxuZnVuY3Rpb24gb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoY2FuUmVzaXplICYmIHJlc2l6ZUVkZ2UpIHtcbiAgICAgICAgLy8gU3RhcnQgcmVzaXppbmcuXG4gICAgICAgIHJlc2l6aW5nID0gdHJ1ZTtcbiAgICAgICAgaW52b2tlKFwid2FpbHM6cmVzaXplOlwiICsgcmVzaXplRWRnZSk7XG4gICAgfSBlbHNlIGlmIChjYW5EcmFnKSB7XG4gICAgICAgIC8vIFN0YXJ0IGRyYWdnaW5nLlxuICAgICAgICBkcmFnZ2luZyA9IHRydWU7XG4gICAgICAgIGludm9rZShcIndhaWxzOmRyYWdcIik7XG4gICAgfVxuXG4gICAgaWYgKGRyYWdnaW5nIHx8IHJlc2l6aW5nKSB7XG4gICAgICAgIC8vIEVpdGhlciBkcmFnIG9yIHJlc2l6ZSBpcyBvbmdvaW5nLFxuICAgICAgICAvLyByZXNldCByZWFkaW5lc3MgYW5kIHN0b3AgcHJvY2Vzc2luZy5cbiAgICAgICAgY2FuRHJhZyA9IGNhblJlc2l6ZSA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFyZXNpemFibGUgfHwgKCFJc1dpbmRvd3MoKSAmJiAhKElzTGludXgoKSAmJiBHZXRGbGFnKFwiZnJhbWVsZXNzXCIpKSkpIHtcbiAgICAgICAgaWYgKHJlc2l6ZUVkZ2UpIHsgc2V0UmVzaXplKCk7IH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc2l6ZUhhbmRsZUhlaWdodCA9IEdldEZsYWcoXCJzeXN0ZW0ucmVzaXplSGFuZGxlSGVpZ2h0XCIpIHx8IDU7XG4gICAgY29uc3QgcmVzaXplSGFuZGxlV2lkdGggPSBHZXRGbGFnKFwic3lzdGVtLnJlc2l6ZUhhbmRsZVdpZHRoXCIpIHx8IDU7XG5cbiAgICAvLyBFeHRyYSBwaXhlbHMgZm9yIHRoZSBjb3JuZXIgYXJlYXMuXG4gICAgY29uc3QgY29ybmVyRXh0cmEgPSBHZXRGbGFnKFwicmVzaXplQ29ybmVyRXh0cmFcIikgfHwgMTA7XG5cbiAgICAvLyBXaGVuIGEgc2Nyb2xsYmFyIGlzIHByZXNlbnQgYXQgdGhlIHdpbmRvdyBlZGdlIGl0IGNvbnN1bWVzIG1vdXNlIGV2ZW50cyBpbiB0aGF0IHN0cmlwLlxuICAgIC8vIFNoaWZ0IHRoZSBlZmZlY3RpdmUgY29udGVudCBlZGdlIGlud2FyZCBzbyB0aGUgcmVzaXplIHpvbmUgc2l0cyBqdXN0IGJlZm9yZSB0aGUgc2Nyb2xsYmFyLlxuICAgIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gTWF0aC5tYXgoMCwgd2luZG93LmlubmVyV2lkdGggLSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpO1xuICAgIGNvbnN0IHNjcm9sbGJhckhlaWdodCA9IE1hdGgubWF4KDAsIHdpbmRvdy5pbm5lckhlaWdodCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpO1xuICAgIGNvbnN0IHJpZ2h0Q29udGVudEVkZ2UgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIHNjcm9sbGJhcldpZHRoO1xuICAgIGNvbnN0IGJvdHRvbUNvbnRlbnRFZGdlID0gd2luZG93LmlubmVySGVpZ2h0IC0gc2Nyb2xsYmFySGVpZ2h0O1xuXG4gICAgY29uc3QgcmlnaHRCb3JkZXIgPSBldmVudC5jbGllbnRYIDwgcmlnaHRDb250ZW50RWRnZSAmJiAocmlnaHRDb250ZW50RWRnZSAtIGV2ZW50LmNsaWVudFgpIDwgcmVzaXplSGFuZGxlV2lkdGg7XG4gICAgY29uc3QgbGVmdEJvcmRlciA9IGV2ZW50LmNsaWVudFggPCByZXNpemVIYW5kbGVXaWR0aDtcbiAgICBjb25zdCB0b3BCb3JkZXIgPSBldmVudC5jbGllbnRZIDwgcmVzaXplSGFuZGxlSGVpZ2h0O1xuICAgIGNvbnN0IGJvdHRvbUJvcmRlciA9IGV2ZW50LmNsaWVudFkgPCBib3R0b21Db250ZW50RWRnZSAmJiAoYm90dG9tQ29udGVudEVkZ2UgLSBldmVudC5jbGllbnRZKSA8IHJlc2l6ZUhhbmRsZUhlaWdodDtcblxuICAgIC8vIEFkanVzdCBmb3IgY29ybmVyIGFyZWFzLlxuICAgIGNvbnN0IHJpZ2h0Q29ybmVyID0gZXZlbnQuY2xpZW50WCA8IHJpZ2h0Q29udGVudEVkZ2UgJiYgKHJpZ2h0Q29udGVudEVkZ2UgLSBldmVudC5jbGllbnRYKSA8IChyZXNpemVIYW5kbGVXaWR0aCArIGNvcm5lckV4dHJhKTtcbiAgICBjb25zdCBsZWZ0Q29ybmVyID0gZXZlbnQuY2xpZW50WCA8IChyZXNpemVIYW5kbGVXaWR0aCArIGNvcm5lckV4dHJhKTtcbiAgICBjb25zdCB0b3BDb3JuZXIgPSBldmVudC5jbGllbnRZIDwgKHJlc2l6ZUhhbmRsZUhlaWdodCArIGNvcm5lckV4dHJhKTtcbiAgICBjb25zdCBib3R0b21Db3JuZXIgPSBldmVudC5jbGllbnRZIDwgYm90dG9tQ29udGVudEVkZ2UgJiYgKGJvdHRvbUNvbnRlbnRFZGdlIC0gZXZlbnQuY2xpZW50WSkgPCAocmVzaXplSGFuZGxlSGVpZ2h0ICsgY29ybmVyRXh0cmEpO1xuXG4gICAgaWYgKCFsZWZ0Q29ybmVyICYmICF0b3BDb3JuZXIgJiYgIWJvdHRvbUNvcm5lciAmJiAhcmlnaHRDb3JuZXIpIHtcbiAgICAgICAgLy8gT3B0aW1pc2F0aW9uOiBvdXQgb2YgYWxsIGNvcm5lciBhcmVhcyBpbXBsaWVzIG91dCBvZiBib3JkZXJzLlxuICAgICAgICBzZXRSZXNpemUoKTtcbiAgICB9XG4gICAgLy8gRGV0ZWN0IGNvcm5lcnMuXG4gICAgZWxzZSBpZiAocmlnaHRDb3JuZXIgJiYgYm90dG9tQ29ybmVyKSBzZXRSZXNpemUoXCJzZS1yZXNpemVcIik7XG4gICAgZWxzZSBpZiAobGVmdENvcm5lciAmJiBib3R0b21Db3JuZXIpIHNldFJlc2l6ZShcInN3LXJlc2l6ZVwiKTtcbiAgICBlbHNlIGlmIChsZWZ0Q29ybmVyICYmIHRvcENvcm5lcikgc2V0UmVzaXplKFwibnctcmVzaXplXCIpO1xuICAgIGVsc2UgaWYgKHRvcENvcm5lciAmJiByaWdodENvcm5lcikgc2V0UmVzaXplKFwibmUtcmVzaXplXCIpO1xuICAgIC8vIERldGVjdCBib3JkZXJzLlxuICAgIGVsc2UgaWYgKGxlZnRCb3JkZXIpIHNldFJlc2l6ZShcInctcmVzaXplXCIpO1xuICAgIGVsc2UgaWYgKHRvcEJvcmRlcikgc2V0UmVzaXplKFwibi1yZXNpemVcIik7XG4gICAgZWxzZSBpZiAoYm90dG9tQm9yZGVyKSBzZXRSZXNpemUoXCJzLXJlc2l6ZVwiKTtcbiAgICBlbHNlIGlmIChyaWdodEJvcmRlcikgc2V0UmVzaXplKFwiZS1yZXNpemVcIik7XG4gICAgLy8gT3V0IG9mIGJvcmRlciBhcmVhLlxuICAgIGVsc2Ugc2V0UmVzaXplKCk7XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuY29uc3QgY2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuQXBwbGljYXRpb24pO1xuXG5jb25zdCBIaWRlTWV0aG9kID0gMDtcbmNvbnN0IFNob3dNZXRob2QgPSAxO1xuY29uc3QgUXVpdE1ldGhvZCA9IDI7XG5cbi8qKlxuICogSGlkZXMgYSBjZXJ0YWluIG1ldGhvZCBieSBjYWxsaW5nIHRoZSBIaWRlTWV0aG9kIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSGlkZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gY2FsbChIaWRlTWV0aG9kKTtcbn1cblxuLyoqXG4gKiBDYWxscyB0aGUgU2hvd01ldGhvZCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gU2hvdygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gY2FsbChTaG93TWV0aG9kKTtcbn1cblxuLyoqXG4gKiBDYWxscyB0aGUgUXVpdE1ldGhvZCB0byB0ZXJtaW5hdGUgdGhlIHByb2dyYW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBRdWl0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBjYWxsKFF1aXRNZXRob2QpO1xufVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBDYW5jZWxsYWJsZVByb21pc2UsIHR5cGUgQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVycyB9IGZyb20gXCIuL2NhbmNlbGxhYmxlLmpzXCI7XG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gXCIuL25hbm9pZC5qc1wiO1xuXG4vLyBTZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xufVxuXG50eXBlIFByb21pc2VSZXNvbHZlcnMgPSBPbWl0PENhbmNlbGxhYmxlUHJvbWlzZVdpdGhSZXNvbHZlcnM8YW55PiwgXCJwcm9taXNlXCIgfCBcIm9uY2FuY2VsbGVkXCI+XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkNhbGwpO1xuY29uc3QgY2FuY2VsQ2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuQ2FuY2VsQ2FsbCk7XG5jb25zdCBjYWxsUmVzcG9uc2VzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2VSZXNvbHZlcnM+KCk7XG5cbmNvbnN0IENhbGxCaW5kaW5nID0gMDtcbmNvbnN0IENhbmNlbE1ldGhvZCA9IDBcblxuLyoqXG4gKiBIb2xkcyBhbGwgcmVxdWlyZWQgaW5mb3JtYXRpb24gZm9yIGEgYmluZGluZyBjYWxsLlxuICogTWF5IHByb3ZpZGUgZWl0aGVyIGEgbWV0aG9kIElEIG9yIGEgbWV0aG9kIG5hbWUsIGJ1dCBub3QgYm90aC5cbiAqL1xuZXhwb3J0IHR5cGUgQ2FsbE9wdGlvbnMgPSB7XG4gICAgLyoqIFRoZSBudW1lcmljIElEIG9mIHRoZSBib3VuZCBtZXRob2QgdG8gY2FsbC4gKi9cbiAgICBtZXRob2RJRDogbnVtYmVyO1xuICAgIC8qKiBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGJvdW5kIG1ldGhvZCB0byBjYWxsLiAqL1xuICAgIG1ldGhvZE5hbWU/OiBuZXZlcjtcbiAgICAvKiogQXJndW1lbnRzIHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBib3VuZCBtZXRob2QuICovXG4gICAgYXJnczogYW55W107XG59IHwge1xuICAgIC8qKiBUaGUgbnVtZXJpYyBJRCBvZiB0aGUgYm91bmQgbWV0aG9kIHRvIGNhbGwuICovXG4gICAgbWV0aG9kSUQ/OiBuZXZlcjtcbiAgICAvKiogVGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBib3VuZCBtZXRob2QgdG8gY2FsbC4gKi9cbiAgICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gICAgLyoqIEFyZ3VtZW50cyB0byBiZSBwYXNzZWQgaW50byB0aGUgYm91bmQgbWV0aG9kLiAqL1xuICAgIGFyZ3M6IGFueVtdO1xufTtcblxuLy8gcnVudGltZS5qcyBuZWVkcyB0byB1c2UgUnVudGltZUVycm9yIGludGVybmFsbHkgdG8gcHJvcGVybHkgcGFyc2UgYW5kIHJldHVyblxuLy8gZXJyb3JzIGZvciBiaW5kaW5nIGNhbGxzLCBzbyBpdCBoYWQgdG8gbW92ZSB0aGVyZS4gRXhwb3J0aW5nIGhlcmUgYWdhaW4gdG9cbi8vIGtlZXAgZnJvbSBicmVha2luZyB0aGUgcHVibGljIENhbGwgaW50ZXJmYWNlLlxuZXhwb3J0IHsgUnVudGltZUVycm9yIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBJRCB1c2luZyB0aGUgbmFub2lkIGxpYnJhcnkuXG4gKlxuICogQHJldHVybnMgQSB1bmlxdWUgSUQgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgY2FsbFJlc3BvbnNlcyBzZXQuXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlSUQoKTogc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGRvIHtcbiAgICAgICAgcmVzdWx0ID0gbmFub2lkKCk7XG4gICAgfSB3aGlsZSAoY2FsbFJlc3BvbnNlcy5oYXMocmVzdWx0KSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDYWxsIGEgYm91bmQgbWV0aG9kIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gY2FsbCBvcHRpb25zLlxuICpcbiAqIEluIGNhc2Ugb2YgZmFpbHVyZSwgdGhlIHJldHVybmVkIHByb21pc2Ugd2lsbCByZWplY3Qgd2l0aCBhbiBleGNlcHRpb25cbiAqIGFtb25nIFJlZmVyZW5jZUVycm9yICh1bmtub3duIG1ldGhvZCksIFR5cGVFcnJvciAod3JvbmcgYXJndW1lbnQgY291bnQgb3IgdHlwZSksXG4gKiB7QGxpbmsgUnVudGltZUVycm9yfSAobWV0aG9kIHJldHVybmVkIGFuIGVycm9yKSwgb3Igb3RoZXIgKG5ldHdvcmsgb3IgaW50ZXJuYWwgZXJyb3JzKS5cbiAqIFRoZSBleGNlcHRpb24gbWlnaHQgaGF2ZSBhIFwiY2F1c2VcIiBmaWVsZCB3aXRoIHRoZSB2YWx1ZSByZXR1cm5lZFxuICogYnkgdGhlIGFwcGxpY2F0aW9uLSBvciBzZXJ2aWNlLWxldmVsIGVycm9yIG1hcnNoYWxpbmcgZnVuY3Rpb25zLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQSBtZXRob2QgY2FsbCBkZXNjcmlwdG9yLlxuICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgY2FsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENhbGwob3B0aW9uczogQ2FsbE9wdGlvbnMpOiBDYW5jZWxsYWJsZVByb21pc2U8YW55PiB7XG4gICAgY29uc3QgaWQgPSBnZW5lcmF0ZUlEKCk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBDYW5jZWxsYWJsZVByb21pc2Uud2l0aFJlc29sdmVyczxhbnk+KCk7XG4gICAgY2FsbFJlc3BvbnNlcy5zZXQoaWQsIHsgcmVzb2x2ZTogcmVzdWx0LnJlc29sdmUsIHJlamVjdDogcmVzdWx0LnJlamVjdCB9KTtcblxuICAgIGNvbnN0IHJlcXVlc3QgPSBjYWxsKENhbGxCaW5kaW5nLCBPYmplY3QuYXNzaWduKHsgXCJjYWxsLWlkXCI6IGlkIH0sIG9wdGlvbnMpKTtcbiAgICBsZXQgcnVubmluZyA9IHRydWU7XG5cbiAgICByZXF1ZXN0LnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBydW5uaW5nID0gZmFsc2U7XG4gICAgICAgIGNhbGxSZXNwb25zZXMuZGVsZXRlKGlkKTtcbiAgICAgICAgcmVzdWx0LnJlc29sdmUocmVzKTtcbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgY2FsbFJlc3BvbnNlcy5kZWxldGUoaWQpO1xuICAgICAgICByZXN1bHQucmVqZWN0KGVycik7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjYW5jZWwgPSAoKSA9PiB7XG4gICAgICAgIGNhbGxSZXNwb25zZXMuZGVsZXRlKGlkKTtcbiAgICAgICAgcmV0dXJuIGNhbmNlbENhbGwoQ2FuY2VsTWV0aG9kLCB7XCJjYWxsLWlkXCI6IGlkfSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHdoaWxlIHJlcXVlc3RpbmcgYmluZGluZyBjYWxsIGNhbmNlbGxhdGlvbjpcIiwgZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHJlc3VsdC5vbmNhbmNlbGxlZCA9ICgpID0+IHtcbiAgICAgICAgaWYgKHJ1bm5pbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBjYW5jZWwoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LnRoZW4oY2FuY2VsKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0LnByb21pc2U7XG59XG5cbi8qKlxuICogQ2FsbHMgYSBib3VuZCBtZXRob2QgYnkgbmFtZSB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLlxuICogU2VlIHtAbGluayBDYWxsfSBmb3IgZGV0YWlscy5cbiAqXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QgaW4gdGhlIGZvcm1hdCAncGFja2FnZS5zdHJ1Y3QubWV0aG9kJy5cbiAqIEBwYXJhbSBhcmdzIC0gVGhlIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBtZXRob2QgY2FsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJ5TmFtZShtZXRob2ROYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogQ2FuY2VsbGFibGVQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBDYWxsKHsgbWV0aG9kTmFtZSwgYXJncyB9KTtcbn1cblxuLyoqXG4gKiBDYWxscyBhIG1ldGhvZCBieSBpdHMgbnVtZXJpYyBJRCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLlxuICogU2VlIHtAbGluayBDYWxsfSBmb3IgZGV0YWlscy5cbiAqXG4gKiBAcGFyYW0gbWV0aG9kSUQgLSBUaGUgSUQgb2YgdGhlIG1ldGhvZCB0byBjYWxsLlxuICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAqIEByZXR1cm4gVGhlIHJlc3VsdCBvZiB0aGUgbWV0aG9kIGNhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBCeUlEKG1ldGhvZElEOiBudW1iZXIsIC4uLmFyZ3M6IGFueVtdKTogQ2FuY2VsbGFibGVQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBDYWxsKHsgbWV0aG9kSUQsIGFyZ3MgfSk7XG59XG4iLCAiLy8gU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vaW5zcGVjdC1qcy9pcy1jYWxsYWJsZVxuXG4vLyBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbi8vXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTUgSm9yZGFuIEhhcmJhbmRcbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4vLyBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbi8vIFNPRlRXQVJFLlxuXG52YXIgZm5Ub1N0ciA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztcbnZhciByZWZsZWN0QXBwbHk6IHR5cGVvZiBSZWZsZWN0LmFwcGx5IHwgZmFsc2UgfCBudWxsID0gdHlwZW9mIFJlZmxlY3QgPT09ICdvYmplY3QnICYmIFJlZmxlY3QgIT09IG51bGwgJiYgUmVmbGVjdC5hcHBseTtcbnZhciBiYWRBcnJheUxpa2U6IGFueTtcbnZhciBpc0NhbGxhYmxlTWFya2VyOiBhbnk7XG5pZiAodHlwZW9mIHJlZmxlY3RBcHBseSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnR5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgYmFkQXJyYXlMaWtlID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnbGVuZ3RoJywge1xuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgaXNDYWxsYWJsZU1hcmtlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlzQ2FsbGFibGVNYXJrZXIgPSB7fTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgICAgICAgcmVmbGVjdEFwcGx5KGZ1bmN0aW9uICgpIHsgdGhyb3cgNDI7IH0sIG51bGwsIGJhZEFycmF5TGlrZSk7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgICBpZiAoXyAhPT0gaXNDYWxsYWJsZU1hcmtlcikge1xuICAgICAgICAgICAgcmVmbGVjdEFwcGx5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn0gZWxzZSB7XG4gICAgcmVmbGVjdEFwcGx5ID0gbnVsbDtcbn1cblxudmFyIGNvbnN0cnVjdG9yUmVnZXggPSAvXlxccypjbGFzc1xcYi87XG52YXIgaXNFUzZDbGFzc0ZuID0gZnVuY3Rpb24gaXNFUzZDbGFzc0Z1bmN0aW9uKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgICB2YXIgZm5TdHIgPSBmblRvU3RyLmNhbGwodmFsdWUpO1xuICAgICAgICByZXR1cm4gY29uc3RydWN0b3JSZWdleC50ZXN0KGZuU3RyKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTsgLy8gbm90IGEgZnVuY3Rpb25cbiAgICB9XG59O1xuXG52YXIgdHJ5RnVuY3Rpb25PYmplY3QgPSBmdW5jdGlvbiB0cnlGdW5jdGlvblRvU3RyKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAoaXNFUzZDbGFzc0ZuKHZhbHVlKSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgICAgZm5Ub1N0ci5jYWxsKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufTtcbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgb2JqZWN0Q2xhc3MgPSAnW29iamVjdCBPYmplY3RdJztcbnZhciBmbkNsYXNzID0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbnZhciBnZW5DbGFzcyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSc7XG52YXIgZGRhQ2xhc3MgPSAnW29iamVjdCBIVE1MQWxsQ29sbGVjdGlvbl0nOyAvLyBJRSAxMVxudmFyIGRkYUNsYXNzMiA9ICdbb2JqZWN0IEhUTUwgZG9jdW1lbnQuYWxsIGNsYXNzXSc7XG52YXIgZGRhQ2xhc3MzID0gJ1tvYmplY3QgSFRNTENvbGxlY3Rpb25dJzsgLy8gSUUgOS0xMFxudmFyIGhhc1RvU3RyaW5nVGFnID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiAhIVN5bWJvbC50b1N0cmluZ1RhZzsgLy8gYmV0dGVyOiB1c2UgYGhhcy10b3N0cmluZ3RhZ2BcblxudmFyIGlzSUU2OCA9ICEoMCBpbiBbLF0pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNwYXJzZS1hcnJheXMsIGNvbW1hLXNwYWNpbmdcblxudmFyIGlzRERBOiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbiA9IGZ1bmN0aW9uIGlzRG9jdW1lbnREb3RBbGwoKSB7IHJldHVybiBmYWxzZTsgfTtcbmlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICdvYmplY3QnKSB7XG4gICAgLy8gRmlyZWZveCAzIGNhbm9uaWNhbGl6ZXMgRERBIHRvIHVuZGVmaW5lZCB3aGVuIGl0J3Mgbm90IGFjY2Vzc2VkIGRpcmVjdGx5XG4gICAgdmFyIGFsbCA9IGRvY3VtZW50LmFsbDtcbiAgICBpZiAodG9TdHIuY2FsbChhbGwpID09PSB0b1N0ci5jYWxsKGRvY3VtZW50LmFsbCkpIHtcbiAgICAgICAgaXNEREEgPSBmdW5jdGlvbiBpc0RvY3VtZW50RG90QWxsKHZhbHVlKSB7XG4gICAgICAgICAgICAvKiBnbG9iYWxzIGRvY3VtZW50OiBmYWxzZSAqL1xuICAgICAgICAgICAgLy8gaW4gSUUgNi04LCB0eXBlb2YgZG9jdW1lbnQuYWxsIGlzIFwib2JqZWN0XCIgYW5kIGl0J3MgdHJ1dGh5XG4gICAgICAgICAgICBpZiAoKGlzSUU2OCB8fCAhdmFsdWUpICYmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0ciA9IHRvU3RyLmNhbGwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyID09PSBkZGFDbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RyID09PSBkZGFDbGFzczJcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0ciA9PT0gZGRhQ2xhc3MzIC8vIG9wZXJhIDEyLjE2XG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBzdHIgPT09IG9iamVjdENsYXNzIC8vIElFIDYtOFxuICAgICAgICAgICAgICAgICAgICApICYmIHZhbHVlKCcnKSA9PSBudWxsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGVxZXFlcVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgLyoqLyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0NhbGxhYmxlUmVmQXBwbHk8VD4odmFsdWU6IFQgfCB1bmtub3duKTogdmFsdWUgaXMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkgIHtcbiAgICBpZiAoaXNEREEodmFsdWUpKSB7IHJldHVybiB0cnVlOyB9XG4gICAgaWYgKCF2YWx1ZSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgdHJ5IHtcbiAgICAgICAgKHJlZmxlY3RBcHBseSBhcyBhbnkpKHZhbHVlLCBudWxsLCBiYWRBcnJheUxpa2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUgIT09IGlzQ2FsbGFibGVNYXJrZXIpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgfVxuICAgIHJldHVybiAhaXNFUzZDbGFzc0ZuKHZhbHVlKSAmJiB0cnlGdW5jdGlvbk9iamVjdCh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGlzQ2FsbGFibGVOb1JlZkFwcGx5PFQ+KHZhbHVlOiBUIHwgdW5rbm93bik6IHZhbHVlIGlzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55IHtcbiAgICBpZiAoaXNEREEodmFsdWUpKSB7IHJldHVybiB0cnVlOyB9XG4gICAgaWYgKCF2YWx1ZSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgaWYgKGhhc1RvU3RyaW5nVGFnKSB7IHJldHVybiB0cnlGdW5jdGlvbk9iamVjdCh2YWx1ZSk7IH1cbiAgICBpZiAoaXNFUzZDbGFzc0ZuKHZhbHVlKSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICB2YXIgc3RyQ2xhc3MgPSB0b1N0ci5jYWxsKHZhbHVlKTtcbiAgICBpZiAoc3RyQ2xhc3MgIT09IGZuQ2xhc3MgJiYgc3RyQ2xhc3MgIT09IGdlbkNsYXNzICYmICEoL15cXFtvYmplY3QgSFRNTC8pLnRlc3Qoc3RyQ2xhc3MpKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIHJldHVybiB0cnlGdW5jdGlvbk9iamVjdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCByZWZsZWN0QXBwbHkgPyBpc0NhbGxhYmxlUmVmQXBwbHkgOiBpc0NhbGxhYmxlTm9SZWZBcHBseTtcbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IGlzQ2FsbGFibGUgZnJvbSBcIi4vY2FsbGFibGUuanNcIjtcblxuLyoqXG4gKiBFeGNlcHRpb24gY2xhc3MgdGhhdCB3aWxsIGJlIHVzZWQgYXMgcmVqZWN0aW9uIHJlYXNvblxuICogaW4gY2FzZSBhIHtAbGluayBDYW5jZWxsYWJsZVByb21pc2V9IGlzIGNhbmNlbGxlZCBzdWNjZXNzZnVsbHkuXG4gKlxuICogVGhlIHZhbHVlIG9mIHRoZSB7QGxpbmsgbmFtZX0gcHJvcGVydHkgaXMgdGhlIHN0cmluZyBgXCJDYW5jZWxFcnJvclwiYC5cbiAqIFRoZSB2YWx1ZSBvZiB0aGUge0BsaW5rIGNhdXNlfSBwcm9wZXJ0eSBpcyB0aGUgY2F1c2UgcGFzc2VkIHRvIHRoZSBjYW5jZWwgbWV0aG9kLCBpZiBhbnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDYW5jZWxFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGBDYW5jZWxFcnJvcmAgaW5zdGFuY2UuXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgdG8gYmUgZm9yd2FyZGVkIHRvIHRoZSBFcnJvciBjb25zdHJ1Y3Rvci5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nLCBvcHRpb25zPzogRXJyb3JPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UsIG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIkNhbmNlbEVycm9yXCI7XG4gICAgfVxufVxuXG4vKipcbiAqIEV4Y2VwdGlvbiBjbGFzcyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvblxuICogaW4gY2FzZSBhIHtAbGluayBDYW5jZWxsYWJsZVByb21pc2V9IHJlamVjdHMgYWZ0ZXIgYmVpbmcgY2FuY2VsbGVkLFxuICogb3Igd2hlbiB0aGUgYG9uY2FuY2VsbGVkYCBjYWxsYmFjayB0aHJvd3Mgb3IgcmVqZWN0cy5cbiAqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIHtAbGluayBuYW1lfSBwcm9wZXJ0eSBpcyB0aGUgc3RyaW5nIGBcIkNhbmNlbGxlZFJlamVjdGlvbkVycm9yXCJgLlxuICogVGhlIHZhbHVlIG9mIHRoZSB7QGxpbmsgY2F1c2V9IHByb3BlcnR5IGlzIHRoZSByZWFzb24gdGhlIHByb21pc2UgcmVqZWN0ZWQgd2l0aC5cbiAqXG4gKiBCZWNhdXNlIHRoZSBvcmlnaW5hbCBwcm9taXNlIHdhcyBjYW5jZWxsZWQsXG4gKiBhIHdyYXBwZXIgcHJvbWlzZSB3aWxsIGJlIHBhc3NlZCB0byB0aGUgdW5oYW5kbGVkIHJlamVjdGlvbiBsaXN0ZW5lciBpbnN0ZWFkLlxuICogVGhlIHtAbGluayBwcm9taXNlfSBwcm9wZXJ0eSBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgcHJvbWlzZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENhbmNlbGxlZFJlamVjdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIC8qKlxuICAgICAqIEhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBwcm9taXNlIHRoYXQgd2FzIGNhbmNlbGxlZCBhbmQgdGhlbiByZWplY3RlZC5cbiAgICAgKi9cbiAgICBwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj47XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcmAgaW5zdGFuY2UuXG4gICAgICogQHBhcmFtIHByb21pc2UgLSBUaGUgcHJvbWlzZSB0aGF0IGNhdXNlZCB0aGUgZXJyb3Igb3JpZ2luYWxseS5cbiAgICAgKiBAcGFyYW0gcmVhc29uIC0gVGhlIHJlamVjdGlvbiByZWFzb24uXG4gICAgICogQHBhcmFtIGluZm8gLSBBbiBvcHRpb25hbCBpbmZvcm1hdGl2ZSBtZXNzYWdlIHNwZWNpZnlpbmcgdGhlIGNpcmN1bXN0YW5jZXMgaW4gd2hpY2ggdGhlIGVycm9yIHdhcyB0aHJvd24uXG4gICAgICogICAgICAgICAgICAgICBEZWZhdWx0cyB0byB0aGUgc3RyaW5nIGBcIlVuaGFuZGxlZCByZWplY3Rpb24gaW4gY2FuY2VsbGVkIHByb21pc2UuXCJgLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb21pc2U6IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPiwgcmVhc29uPzogYW55LCBpbmZvPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKChpbmZvID8/IFwiVW5oYW5kbGVkIHJlamVjdGlvbiBpbiBjYW5jZWxsZWQgcHJvbWlzZS5cIikgKyBcIiBSZWFzb246IFwiICsgZXJyb3JNZXNzYWdlKHJlYXNvbiksIHsgY2F1c2U6IHJlYXNvbiB9KTtcbiAgICAgICAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgICAgICAgdGhpcy5uYW1lID0gXCJDYW5jZWxsZWRSZWplY3Rpb25FcnJvclwiO1xuICAgIH1cbn1cblxudHlwZSBDYW5jZWxsYWJsZVByb21pc2VSZXNvbHZlcjxUPiA9ICh2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+IHwgQ2FuY2VsbGFibGVQcm9taXNlTGlrZTxUPikgPT4gdm9pZDtcbnR5cGUgQ2FuY2VsbGFibGVQcm9taXNlUmVqZWN0b3IgPSAocmVhc29uPzogYW55KSA9PiB2b2lkO1xudHlwZSBDYW5jZWxsYWJsZVByb21pc2VDYW5jZWxsZXIgPSAoY2F1c2U/OiBhbnkpID0+IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPjtcbnR5cGUgQ2FuY2VsbGFibGVQcm9taXNlRXhlY3V0b3I8VD4gPSAocmVzb2x2ZTogQ2FuY2VsbGFibGVQcm9taXNlUmVzb2x2ZXI8VD4sIHJlamVjdDogQ2FuY2VsbGFibGVQcm9taXNlUmVqZWN0b3IpID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuY2VsbGFibGVQcm9taXNlTGlrZTxUPiB7XG4gICAgdGhlbjxUUmVzdWx0MSA9IFQsIFRSZXN1bHQyID0gbmV2ZXI+KG9uZnVsZmlsbGVkPzogKCh2YWx1ZTogVCkgPT4gVFJlc3VsdDEgfCBQcm9taXNlTGlrZTxUUmVzdWx0MT4gfCBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFRSZXN1bHQxPikgfCB1bmRlZmluZWQgfCBudWxsLCBvbnJlamVjdGVkPzogKChyZWFzb246IGFueSkgPT4gVFJlc3VsdDIgfCBQcm9taXNlTGlrZTxUUmVzdWx0Mj4gfCBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFRSZXN1bHQyPikgfCB1bmRlZmluZWQgfCBudWxsKTogQ2FuY2VsbGFibGVQcm9taXNlTGlrZTxUUmVzdWx0MSB8IFRSZXN1bHQyPjtcbiAgICBjYW5jZWwoY2F1c2U/OiBhbnkpOiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD47XG59XG5cbi8qKlxuICogV3JhcHMgYSBjYW5jZWxsYWJsZSBwcm9taXNlIGFsb25nIHdpdGggaXRzIHJlc29sdXRpb24gbWV0aG9kcy5cbiAqIFRoZSBgb25jYW5jZWxsZWRgIGZpZWxkIHdpbGwgYmUgbnVsbCBpbml0aWFsbHkgYnV0IG1heSBiZSBzZXQgdG8gcHJvdmlkZSBhIGN1c3RvbSBjYW5jZWxsYXRpb24gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxUPiB7XG4gICAgcHJvbWlzZTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+O1xuICAgIHJlc29sdmU6IENhbmNlbGxhYmxlUHJvbWlzZVJlc29sdmVyPFQ+O1xuICAgIHJlamVjdDogQ2FuY2VsbGFibGVQcm9taXNlUmVqZWN0b3I7XG4gICAgb25jYW5jZWxsZWQ6IENhbmNlbGxhYmxlUHJvbWlzZUNhbmNlbGxlciB8IG51bGw7XG59XG5cbmludGVyZmFjZSBDYW5jZWxsYWJsZVByb21pc2VTdGF0ZSB7XG4gICAgcmVhZG9ubHkgcm9vdDogQ2FuY2VsbGFibGVQcm9taXNlU3RhdGU7XG4gICAgcmVzb2x2aW5nOiBib29sZWFuO1xuICAgIHNldHRsZWQ6IGJvb2xlYW47XG4gICAgcmVhc29uPzogQ2FuY2VsRXJyb3I7XG59XG5cbi8vIFByaXZhdGUgZmllbGQgbmFtZXMuXG5jb25zdCBiYXJyaWVyU3ltID0gU3ltYm9sKFwiYmFycmllclwiKTtcbmNvbnN0IGNhbmNlbEltcGxTeW0gPSBTeW1ib2woXCJjYW5jZWxJbXBsXCIpO1xuY29uc3Qgc3BlY2llczogdHlwZW9mIFN5bWJvbC5zcGVjaWVzID0gU3ltYm9sLnNwZWNpZXMgPz8gU3ltYm9sKFwic3BlY2llc1BvbHlmaWxsXCIpO1xuXG4vKipcbiAqIEEgcHJvbWlzZSB3aXRoIGFuIGF0dGFjaGVkIG1ldGhvZCBmb3IgY2FuY2VsbGluZyBsb25nLXJ1bm5pbmcgb3BlcmF0aW9ucyAoc2VlIHtAbGluayBDYW5jZWxsYWJsZVByb21pc2UjY2FuY2VsfSkuXG4gKiBDYW5jZWxsYXRpb24gY2FuIG9wdGlvbmFsbHkgYmUgYm91bmQgdG8gYW4ge0BsaW5rIEFib3J0U2lnbmFsfVxuICogZm9yIGJldHRlciBjb21wb3NhYmlsaXR5IChzZWUge0BsaW5rIENhbmNlbGxhYmxlUHJvbWlzZSNjYW5jZWxPbn0pLlxuICpcbiAqIENhbmNlbGxpbmcgYSBwZW5kaW5nIHByb21pc2Ugd2lsbCByZXN1bHQgaW4gYW4gaW1tZWRpYXRlIHJlamVjdGlvblxuICogd2l0aCBhbiBpbnN0YW5jZSBvZiB7QGxpbmsgQ2FuY2VsRXJyb3J9IGFzIHJlYXNvbixcbiAqIGJ1dCB3aG9ldmVyIHN0YXJ0ZWQgdGhlIHByb21pc2Ugd2lsbCBiZSByZXNwb25zaWJsZVxuICogZm9yIGFjdHVhbGx5IGFib3J0aW5nIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGlvbi5cbiAqIFRvIHRoaXMgcHVycG9zZSwgdGhlIGNvbnN0cnVjdG9yIGFuZCBhbGwgY2hhaW5pbmcgbWV0aG9kc1xuICogYWNjZXB0IG9wdGlvbmFsIGNhbmNlbGxhdGlvbiBjYWxsYmFja3MuXG4gKlxuICogSWYgYSBgQ2FuY2VsbGFibGVQcm9taXNlYCBzdGlsbCByZXNvbHZlcyBhZnRlciBoYXZpbmcgYmVlbiBjYW5jZWxsZWQsXG4gKiB0aGUgcmVzdWx0IHdpbGwgYmUgZGlzY2FyZGVkLiBJZiBpdCByZWplY3RzLCB0aGUgcmVhc29uXG4gKiB3aWxsIGJlIHJlcG9ydGVkIGFzIGFuIHVuaGFuZGxlZCByZWplY3Rpb24sXG4gKiB3cmFwcGVkIGluIGEge0BsaW5rIENhbmNlbGxlZFJlamVjdGlvbkVycm9yfSBpbnN0YW5jZS5cbiAqIFRvIGZhY2lsaXRhdGUgdGhlIGhhbmRsaW5nIG9mIGNhbmNlbGxhdGlvbiByZXF1ZXN0cyxcbiAqIGNhbmNlbGxlZCBgQ2FuY2VsbGFibGVQcm9taXNlYHMgd2lsbCBfbm90XyByZXBvcnQgdW5oYW5kbGVkIGBDYW5jZWxFcnJvcmBzXG4gKiB3aG9zZSBgY2F1c2VgIGZpZWxkIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgd2l0aCB3aGljaCB0aGUgY3VycmVudCBwcm9taXNlIHdhcyBjYW5jZWxsZWQuXG4gKlxuICogQWxsIHVzdWFsIHByb21pc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBhbmQgcmV0dXJuIGEgYENhbmNlbGxhYmxlUHJvbWlzZWBcbiAqIHdob3NlIGNhbmNlbCBtZXRob2Qgd2lsbCBjYW5jZWwgdGhlIHBhcmVudCBvcGVyYXRpb24gYXMgd2VsbCwgcHJvcGFnYXRpbmcgdGhlIGNhbmNlbGxhdGlvbiByZWFzb25cbiAqIHVwd2FyZHMgdGhyb3VnaCBwcm9taXNlIGNoYWlucy5cbiAqIENvbnZlcnNlbHksIGNhbmNlbGxpbmcgYSBwcm9taXNlIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgY2FuY2VsIGRlcGVuZGVudCBwcm9taXNlcyBkb3duc3RyZWFtOlxuICogYGBgdHNcbiAqIGxldCByb290ID0gbmV3IENhbmNlbGxhYmxlUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7IC4uLiB9KTtcbiAqIGxldCBjaGlsZDEgPSByb290LnRoZW4oKCkgPT4geyAuLi4gfSk7XG4gKiBsZXQgY2hpbGQyID0gY2hpbGQxLnRoZW4oKCkgPT4geyAuLi4gfSk7XG4gKiBsZXQgY2hpbGQzID0gcm9vdC5jYXRjaCgoKSA9PiB7IC4uLiB9KTtcbiAqIGNoaWxkMS5jYW5jZWwoKTsgLy8gQ2FuY2VscyBjaGlsZDEgYW5kIHJvb3QsIGJ1dCBub3QgY2hpbGQyIG9yIGNoaWxkM1xuICogYGBgXG4gKiBDYW5jZWxsaW5nIGEgcHJvbWlzZSB0aGF0IGhhcyBhbHJlYWR5IHNldHRsZWQgaXMgc2FmZSBhbmQgaGFzIG5vIGNvbnNlcXVlbmNlLlxuICpcbiAqIFRoZSBgY2FuY2VsYCBtZXRob2QgcmV0dXJucyBhIHByb21pc2UgdGhhdCBfYWx3YXlzIGZ1bGZpbGxzX1xuICogYWZ0ZXIgdGhlIHdob2xlIGNoYWluIGhhcyBwcm9jZXNzZWQgdGhlIGNhbmNlbCByZXF1ZXN0XG4gKiBhbmQgYWxsIGF0dGFjaGVkIGNhbGxiYWNrcyB1cCB0byB0aGF0IG1vbWVudCBoYXZlIHJ1bi5cbiAqXG4gKiBBbGwgRVMyMDI0IHByb21pc2UgbWV0aG9kcyAoc3RhdGljIGFuZCBpbnN0YW5jZSkgYXJlIGRlZmluZWQgb24gQ2FuY2VsbGFibGVQcm9taXNlLFxuICogYnV0IGFjdHVhbCBhdmFpbGFiaWxpdHkgbWF5IHZhcnkgd2l0aCBPUy93ZWJ2aWV3IHZlcnNpb24uXG4gKlxuICogSW4gbGluZSB3aXRoIHRoZSBwcm9wb3NhbCBhdCBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1ybS1idWlsdGluLXN1YmNsYXNzaW5nLFxuICogYENhbmNlbGxhYmxlUHJvbWlzZWAgZG9lcyBub3Qgc3VwcG9ydCB0cmFuc3BhcmVudCBzdWJjbGFzc2luZy5cbiAqIEV4dGVuZGVycyBzaG91bGQgdGFrZSBjYXJlIHRvIHByb3ZpZGUgdGhlaXIgb3duIG1ldGhvZCBpbXBsZW1lbnRhdGlvbnMuXG4gKiBUaGlzIG1pZ2h0IGJlIHJlY29uc2lkZXJlZCBpbiBjYXNlIHRoZSBwcm9wb3NhbCBpcyByZXRpcmVkLlxuICpcbiAqIENhbmNlbGxhYmxlUHJvbWlzZSBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBET00gUHJvbWlzZSBvYmplY3RcbiAqIGFuZCBpcyBjb21wbGlhbnQgd2l0aCB0aGUgW1Byb21pc2VzL0ErIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vKVxuICogKGl0IHBhc3NlcyB0aGUgW2NvbXBsaWFuY2Ugc3VpdGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9taXNlcy1hcGx1cy9wcm9taXNlcy10ZXN0cykpXG4gKiBpZiBzbyBpcyB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIENhbmNlbGxhYmxlUHJvbWlzZTxUPiBleHRlbmRzIFByb21pc2U8VD4gaW1wbGVtZW50cyBQcm9taXNlTGlrZTxUPiwgQ2FuY2VsbGFibGVQcm9taXNlTGlrZTxUPiB7XG4gICAgLy8gUHJpdmF0ZSBmaWVsZHMuXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHByaXZhdGUgW2JhcnJpZXJTeW1dITogUGFydGlhbDxQcm9taXNlV2l0aFJlc29sdmVyczx2b2lkPj4gfCBudWxsO1xuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IFtjYW5jZWxJbXBsU3ltXSE6IChyZWFzb246IENhbmNlbEVycm9yKSA9PiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD47XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGBDYW5jZWxsYWJsZVByb21pc2VgLlxuICAgICAqXG4gICAgICogQHBhcmFtIGV4ZWN1dG9yIC0gQSBjYWxsYmFjayB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHByb21pc2UuIFRoaXMgY2FsbGJhY2sgaXMgcGFzc2VkIHR3byBhcmd1bWVudHM6XG4gICAgICogICAgICAgICAgICAgICAgICAgYSBgcmVzb2x2ZWAgY2FsbGJhY2sgdXNlZCB0byByZXNvbHZlIHRoZSBwcm9taXNlIHdpdGggYSB2YWx1ZVxuICAgICAqICAgICAgICAgICAgICAgICAgIG9yIHRoZSByZXN1bHQgb2YgYW5vdGhlciBwcm9taXNlIChwb3NzaWJseSBjYW5jZWxsYWJsZSksXG4gICAgICogICAgICAgICAgICAgICAgICAgYW5kIGEgYHJlamVjdGAgY2FsbGJhY2sgdXNlZCB0byByZWplY3QgdGhlIHByb21pc2Ugd2l0aCBhIHByb3ZpZGVkIHJlYXNvbiBvciBlcnJvci5cbiAgICAgKiAgICAgICAgICAgICAgICAgICBJZiB0aGUgdmFsdWUgcHJvdmlkZWQgdG8gdGhlIGByZXNvbHZlYCBjYWxsYmFjayBpcyBhIHRoZW5hYmxlIF9hbmRfIGNhbmNlbGxhYmxlIG9iamVjdFxuICAgICAqICAgICAgICAgICAgICAgICAgIChpdCBoYXMgYSBgdGhlbmAgX2FuZF8gYSBgY2FuY2VsYCBtZXRob2QpLFxuICAgICAqICAgICAgICAgICAgICAgICAgIGNhbmNlbGxhdGlvbiByZXF1ZXN0cyB3aWxsIGJlIGZvcndhcmRlZCB0byB0aGF0IG9iamVjdCBhbmQgdGhlIG9uY2FuY2VsbGVkIHdpbGwgbm90IGJlIGludm9rZWQgYW55bW9yZS5cbiAgICAgKiAgICAgICAgICAgICAgICAgICBJZiBhbnkgb25lIG9mIHRoZSB0d28gY2FsbGJhY2tzIGlzIGNhbGxlZCBfYWZ0ZXJfIHRoZSBwcm9taXNlIGhhcyBiZWVuIGNhbmNlbGxlZCxcbiAgICAgKiAgICAgICAgICAgICAgICAgICB0aGUgcHJvdmlkZWQgdmFsdWVzIHdpbGwgYmUgY2FuY2VsbGVkIGFuZCByZXNvbHZlZCBhcyB1c3VhbCxcbiAgICAgKiAgICAgICAgICAgICAgICAgICBidXQgdGhlaXIgcmVzdWx0cyB3aWxsIGJlIGRpc2NhcmRlZC5cbiAgICAgKiAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiB0aGUgcmVzb2x1dGlvbiBwcm9jZXNzIHVsdGltYXRlbHkgZW5kcyB1cCBpbiBhIHJlamVjdGlvblxuICAgICAqICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgbm90IGR1ZSB0byBjYW5jZWxsYXRpb24sIHRoZSByZWplY3Rpb24gcmVhc29uXG4gICAgICogICAgICAgICAgICAgICAgICAgd2lsbCBiZSB3cmFwcGVkIGluIGEge0BsaW5rIENhbmNlbGxlZFJlamVjdGlvbkVycm9yfVxuICAgICAqICAgICAgICAgICAgICAgICAgIGFuZCBidWJibGVkIHVwIGFzIGFuIHVuaGFuZGxlZCByZWplY3Rpb24uXG4gICAgICogQHBhcmFtIG9uY2FuY2VsbGVkIC0gSXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0IGFueSBvcGVyYXRpb25cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBzdGFydGVkIGJ5IHRoZSBleGVjdXRvciBpcyBwcm9wZXJseSBoYWx0ZWQgdXBvbiBjYW5jZWxsYXRpb24uXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb25hbCBjYWxsYmFjayBjYW4gYmUgdXNlZCB0byB0aGF0IHB1cnBvc2UuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgSXQgd2lsbCBiZSBjYWxsZWQgX3N5bmNocm9ub3VzbHlfIHdpdGggYSBjYW5jZWxsYXRpb24gY2F1c2VcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICB3aGVuIGNhbmNlbGxhdGlvbiBpcyByZXF1ZXN0ZWQsIF9hZnRlcl8gdGhlIHByb21pc2UgaGFzIGFscmVhZHkgcmVqZWN0ZWRcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICB3aXRoIGEge0BsaW5rIENhbmNlbEVycm9yfSwgYnV0IF9iZWZvcmVfXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgYW55IHtAbGluayB0aGVufS97QGxpbmsgY2F0Y2h9L3tAbGluayBmaW5hbGx5fSBjYWxsYmFjayBydW5zLlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBjYWxsYmFjayByZXR1cm5zIGEgdGhlbmFibGUsIHRoZSBwcm9taXNlIHJldHVybmVkIGZyb20ge0BsaW5rIGNhbmNlbH1cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICB3aWxsIG9ubHkgZnVsZmlsbCBhZnRlciB0aGUgZm9ybWVyIGhhcyBzZXR0bGVkLlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIFVuaGFuZGxlZCBleGNlcHRpb25zIG9yIHJlamVjdGlvbnMgZnJvbSB0aGUgY2FsbGJhY2sgd2lsbCBiZSB3cmFwcGVkXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgaW4gYSB7QGxpbmsgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3J9IGFuZCBidWJibGVkIHVwIGFzIHVuaGFuZGxlZCByZWplY3Rpb25zLlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBgcmVzb2x2ZWAgY2FsbGJhY2sgaXMgY2FsbGVkIGJlZm9yZSBjYW5jZWxsYXRpb24gd2l0aCBhIGNhbmNlbGxhYmxlIHByb21pc2UsXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgY2FuY2VsbGF0aW9uIHJlcXVlc3RzIG9uIHRoaXMgcHJvbWlzZSB3aWxsIGJlIGRpdmVydGVkIHRvIHRoYXQgcHJvbWlzZSxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIG9yaWdpbmFsIGBvbmNhbmNlbGxlZGAgY2FsbGJhY2sgd2lsbCBiZSBkaXNjYXJkZWQuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoZXhlY3V0b3I6IENhbmNlbGxhYmxlUHJvbWlzZUV4ZWN1dG9yPFQ+LCBvbmNhbmNlbGxlZD86IENhbmNlbGxhYmxlUHJvbWlzZUNhbmNlbGxlcikge1xuICAgICAgICBsZXQgcmVzb2x2ZSE6ICh2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KSA9PiB2b2lkO1xuICAgICAgICBsZXQgcmVqZWN0ITogKHJlYXNvbj86IGFueSkgPT4gdm9pZDtcbiAgICAgICAgc3VwZXIoKHJlcywgcmVqKSA9PiB7IHJlc29sdmUgPSByZXM7IHJlamVjdCA9IHJlajsgfSk7XG5cbiAgICAgICAgaWYgKCh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSlbc3BlY2llc10gIT09IFByb21pc2UpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5jZWxsYWJsZVByb21pc2UgZG9lcyBub3Qgc3VwcG9ydCB0cmFuc3BhcmVudCBzdWJjbGFzc2luZy4gUGxlYXNlIHJlZnJhaW4gZnJvbSBvdmVycmlkaW5nIHRoZSBbU3ltYm9sLnNwZWNpZXNdIHN0YXRpYyBwcm9wZXJ0eS5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcHJvbWlzZTogQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxUPiA9IHtcbiAgICAgICAgICAgIHByb21pc2U6IHRoaXMsXG4gICAgICAgICAgICByZXNvbHZlLFxuICAgICAgICAgICAgcmVqZWN0LFxuICAgICAgICAgICAgZ2V0IG9uY2FuY2VsbGVkKCkgeyByZXR1cm4gb25jYW5jZWxsZWQgPz8gbnVsbDsgfSxcbiAgICAgICAgICAgIHNldCBvbmNhbmNlbGxlZChjYikgeyBvbmNhbmNlbGxlZCA9IGNiID8/IHVuZGVmaW5lZDsgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHN0YXRlOiBDYW5jZWxsYWJsZVByb21pc2VTdGF0ZSA9IHtcbiAgICAgICAgICAgIGdldCByb290KCkgeyByZXR1cm4gc3RhdGU7IH0sXG4gICAgICAgICAgICByZXNvbHZpbmc6IGZhbHNlLFxuICAgICAgICAgICAgc2V0dGxlZDogZmFsc2VcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBTZXR1cCBjYW5jZWxsYXRpb24gc3lzdGVtLlxuICAgICAgICB2b2lkIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMsIHtcbiAgICAgICAgICAgIFtiYXJyaWVyU3ltXToge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbY2FuY2VsSW1wbFN5bV06IHtcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2FuY2VsbGVyRm9yKHByb21pc2UsIHN0YXRlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSdW4gdGhlIGFjdHVhbCBleGVjdXRvci5cbiAgICAgICAgY29uc3QgcmVqZWN0b3IgPSByZWplY3RvckZvcihwcm9taXNlLCBzdGF0ZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBleGVjdXRvcihyZXNvbHZlckZvcihwcm9taXNlLCBzdGF0ZSksIHJlamVjdG9yKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUucmVzb2x2aW5nKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJVbmhhbmRsZWQgZXhjZXB0aW9uIGluIENhbmNlbGxhYmxlUHJvbWlzZSBleGVjdXRvci5cIiwgZXJyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0b3IoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbmNlbHMgaW1tZWRpYXRlbHkgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgb3BlcmF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHByb21pc2UuXG4gICAgICogVGhlIHByb21pc2UgcmVqZWN0cyB3aXRoIGEge0BsaW5rIENhbmNlbEVycm9yfSBpbnN0YW5jZSBhcyByZWFzb24sXG4gICAgICogd2l0aCB0aGUge0BsaW5rIENhbmNlbEVycm9yI2NhdXNlfSBwcm9wZXJ0eSBzZXQgdG8gdGhlIGdpdmVuIGFyZ3VtZW50LCBpZiBhbnkuXG4gICAgICpcbiAgICAgKiBIYXMgbm8gZWZmZWN0IGlmIGNhbGxlZCBhZnRlciB0aGUgcHJvbWlzZSBoYXMgYWxyZWFkeSBzZXR0bGVkO1xuICAgICAqIHJlcGVhdGVkIGNhbGxzIGluIHBhcnRpY3VsYXIgYXJlIHNhZmUsIGJ1dCBvbmx5IHRoZSBmaXJzdCBvbmVcbiAgICAgKiB3aWxsIHNldCB0aGUgY2FuY2VsbGF0aW9uIGNhdXNlLlxuICAgICAqXG4gICAgICogVGhlIGBDYW5jZWxFcnJvcmAgZXhjZXB0aW9uIF9uZWVkIG5vdF8gYmUgaGFuZGxlZCBleHBsaWNpdGx5IF9vbiB0aGUgcHJvbWlzZXMgdGhhdCBhcmUgYmVpbmcgY2FuY2VsbGVkOl9cbiAgICAgKiBjYW5jZWxsaW5nIGEgcHJvbWlzZSB3aXRoIG5vIGF0dGFjaGVkIHJlamVjdGlvbiBoYW5kbGVyIGRvZXMgbm90IHRyaWdnZXIgYW4gdW5oYW5kbGVkIHJlamVjdGlvbiBldmVudC5cbiAgICAgKiBUaGVyZWZvcmUsIHRoZSBmb2xsb3dpbmcgaWRpb21zIGFyZSBhbGwgZXF1YWxseSBjb3JyZWN0OlxuICAgICAqIGBgYHRzXG4gICAgICogbmV3IENhbmNlbGxhYmxlUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7IC4uLiB9KS5jYW5jZWwoKTtcbiAgICAgKiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgLi4uIH0pLnRoZW4oLi4uKS5jYW5jZWwoKTtcbiAgICAgKiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgLi4uIH0pLnRoZW4oLi4uKS5jYXRjaCguLi4pLmNhbmNlbCgpO1xuICAgICAqIGBgYFxuICAgICAqIFdoZW5ldmVyIHNvbWUgY2FuY2VsbGVkIHByb21pc2UgaW4gYSBjaGFpbiByZWplY3RzIHdpdGggYSBgQ2FuY2VsRXJyb3JgXG4gICAgICogd2l0aCB0aGUgc2FtZSBjYW5jZWxsYXRpb24gY2F1c2UgYXMgaXRzZWxmLCB0aGUgZXJyb3Igd2lsbCBiZSBkaXNjYXJkZWQgc2lsZW50bHkuXG4gICAgICogSG93ZXZlciwgdGhlIGBDYW5jZWxFcnJvcmAgX3dpbGwgc3RpbGwgYmUgZGVsaXZlcmVkXyB0byBhbGwgYXR0YWNoZWQgcmVqZWN0aW9uIGhhbmRsZXJzXG4gICAgICogYWRkZWQgYnkge0BsaW5rIHRoZW59IGFuZCByZWxhdGVkIG1ldGhvZHM6XG4gICAgICogYGBgdHNcbiAgICAgKiBsZXQgY2FuY2VsbGFibGUgPSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgLi4uIH0pO1xuICAgICAqIGNhbmNlbGxhYmxlLnRoZW4oKCkgPT4geyAuLi4gfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICAgICAqIGNhbmNlbGxhYmxlLmNhbmNlbCgpOyAvLyBBIENhbmNlbEVycm9yIGlzIHByaW50ZWQgdG8gdGhlIGNvbnNvbGUuXG4gICAgICogYGBgXG4gICAgICogSWYgdGhlIGBDYW5jZWxFcnJvcmAgaXMgbm90IGhhbmRsZWQgZG93bnN0cmVhbSBieSB0aGUgdGltZSBpdCByZWFjaGVzXG4gICAgICogYSBfbm9uLWNhbmNlbGxlZF8gcHJvbWlzZSwgaXQgX3dpbGxfIHRyaWdnZXIgYW4gdW5oYW5kbGVkIHJlamVjdGlvbiBldmVudCxcbiAgICAgKiBqdXN0IGxpa2Ugbm9ybWFsIHJlamVjdGlvbnMgd291bGQ6XG4gICAgICogYGBgdHNcbiAgICAgKiBsZXQgY2FuY2VsbGFibGUgPSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgLi4uIH0pO1xuICAgICAqIGxldCBjaGFpbmVkID0gY2FuY2VsbGFibGUudGhlbigoKSA9PiB7IC4uLiB9KS50aGVuKCgpID0+IHsgLi4uIH0pOyAvLyBObyBjYXRjaC4uLlxuICAgICAqIGNhbmNlbGxhYmxlLmNhbmNlbCgpOyAvLyBVbmhhbmRsZWQgcmVqZWN0aW9uIGV2ZW50IG9uIGNoYWluZWQhXG4gICAgICogYGBgXG4gICAgICogVGhlcmVmb3JlLCBpdCBpcyBpbXBvcnRhbnQgdG8gZWl0aGVyIGNhbmNlbCB3aG9sZSBwcm9taXNlIGNoYWlucyBmcm9tIHRoZWlyIHRhaWwsXG4gICAgICogYXMgc2hvd24gaW4gdGhlIGNvcnJlY3QgaWRpb21zIGFib3ZlLCBvciB0YWtlIGNhcmUgb2YgaGFuZGxpbmcgZXJyb3JzIGV2ZXJ5d2hlcmUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBIGNhbmNlbGxhYmxlIHByb21pc2UgdGhhdCBfZnVsZmlsbHNfIGFmdGVyIHRoZSBjYW5jZWwgY2FsbGJhY2sgKGlmIGFueSlcbiAgICAgKiBhbmQgYWxsIGhhbmRsZXJzIGF0dGFjaGVkIHVwIHRvIHRoZSBjYWxsIHRvIGNhbmNlbCBoYXZlIHJ1bi5cbiAgICAgKiBJZiB0aGUgY2FuY2VsIGNhbGxiYWNrIHJldHVybnMgYSB0aGVuYWJsZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgYGNhbmNlbGBcbiAgICAgKiB3aWxsIGFsc28gd2FpdCBmb3IgdGhhdCB0aGVuYWJsZSB0byBzZXR0bGUuXG4gICAgICogVGhpcyBlbmFibGVzIGNhbGxlcnMgdG8gd2FpdCBmb3IgdGhlIGNhbmNlbGxlZCBvcGVyYXRpb24gdG8gdGVybWluYXRlXG4gICAgICogd2l0aG91dCBiZWluZyBmb3JjZWQgdG8gaGFuZGxlIHBvdGVudGlhbCBlcnJvcnMgYXQgdGhlIGNhbGwgc2l0ZS5cbiAgICAgKiBgYGB0c1xuICAgICAqIGNhbmNlbGxhYmxlLmNhbmNlbCgpLnRoZW4oKCkgPT4ge1xuICAgICAqICAgICAvLyBDbGVhbnVwIGZpbmlzaGVkLCBpdCdzIHNhZmUgdG8gZG8gc29tZXRoaW5nIGVsc2UuXG4gICAgICogfSwgKGVycikgPT4ge1xuICAgICAqICAgICAvLyBVbnJlYWNoYWJsZTogdGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSBjYW5jZWwgd2lsbCBuZXZlciByZWplY3QuXG4gICAgICogfSk7XG4gICAgICogYGBgXG4gICAgICogTm90ZSB0aGF0IHRoZSByZXR1cm5lZCBwcm9taXNlIHdpbGwgX25vdF8gaGFuZGxlIGltcGxpY2l0bHkgYW55IHJlamVjdGlvblxuICAgICAqIHRoYXQgbWlnaHQgaGF2ZSBvY2N1cnJlZCBhbHJlYWR5IGluIHRoZSBjYW5jZWxsZWQgY2hhaW4uXG4gICAgICogSXQgd2lsbCBqdXN0IHRyYWNrIHdoZXRoZXIgcmVnaXN0ZXJlZCBoYW5kbGVycyBoYXZlIGJlZW4gZXhlY3V0ZWQgb3Igbm90LlxuICAgICAqIFRoZXJlZm9yZSwgdW5oYW5kbGVkIHJlamVjdGlvbnMgd2lsbCBuZXZlciBiZSBzaWxlbnRseSBoYW5kbGVkIGJ5IGNhbGxpbmcgY2FuY2VsLlxuICAgICAqL1xuICAgIGNhbmNlbChjYXVzZT86IGFueSk6IENhbmNlbGxhYmxlUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICAvLyBJTlZBUklBTlQ6IHRoZSByZXN1bHQgb2YgdGhpc1tjYW5jZWxJbXBsU3ltXSBhbmQgdGhlIGJhcnJpZXIgZG8gbm90IGV2ZXIgcmVqZWN0LlxuICAgICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSBtYWNPUyBIaWdoIFNpZXJyYSBkb2VzIG5vdCBzdXBwb3J0IFByb21pc2UuYWxsU2V0dGxlZC5cbiAgICAgICAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICB0aGlzW2NhbmNlbEltcGxTeW1dKG5ldyBDYW5jZWxFcnJvcihcIlByb21pc2UgY2FuY2VsbGVkLlwiLCB7IGNhdXNlIH0pKSxcbiAgICAgICAgICAgICAgICBjdXJyZW50QmFycmllcih0aGlzKVxuICAgICAgICAgICAgXSkudGhlbigoKSA9PiByZXNvbHZlKCksICgpID0+IHJlc29sdmUoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJpbmRzIHByb21pc2UgY2FuY2VsbGF0aW9uIHRvIHRoZSBhYm9ydCBldmVudCBvZiB0aGUgZ2l2ZW4ge0BsaW5rIEFib3J0U2lnbmFsfS5cbiAgICAgKiBJZiB0aGUgc2lnbmFsIGhhcyBhbHJlYWR5IGFib3J0ZWQsIHRoZSBwcm9taXNlIHdpbGwgYmUgY2FuY2VsbGVkIGltbWVkaWF0ZWx5LlxuICAgICAqIFdoZW4gZWl0aGVyIGNvbmRpdGlvbiBpcyB2ZXJpZmllZCwgdGhlIGNhbmNlbGxhdGlvbiBjYXVzZSB3aWxsIGJlIHNldFxuICAgICAqIHRvIHRoZSBzaWduYWwncyBhYm9ydCByZWFzb24gKHNlZSB7QGxpbmsgQWJvcnRTaWduYWwjcmVhc29ufSkuXG4gICAgICpcbiAgICAgKiBIYXMgbm8gZWZmZWN0IGlmIGNhbGxlZCAob3IgaWYgdGhlIHNpZ25hbCBhYm9ydHMpIF9hZnRlcl8gdGhlIHByb21pc2UgaGFzIGFscmVhZHkgc2V0dGxlZC5cbiAgICAgKiBPbmx5IHRoZSBmaXJzdCBzaWduYWwgdG8gYWJvcnQgd2lsbCBzZXQgdGhlIGNhbmNlbGxhdGlvbiBjYXVzZS5cbiAgICAgKlxuICAgICAqIEZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIGNhbmNlbGxhdGlvbiBwcm9jZXNzLFxuICAgICAqIHNlZSB7QGxpbmsgY2FuY2VsfSBhbmQgdGhlIGBDYW5jZWxsYWJsZVByb21pc2VgIGNvbnN0cnVjdG9yLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgZW5hYmxlcyBgYXdhaXRgaW5nIGNhbmNlbGxhYmxlIHByb21pc2VzIHdpdGhvdXQgaGF2aW5nXG4gICAgICogdG8gc3RvcmUgdGhlbSBmb3IgZnV0dXJlIGNhbmNlbGxhdGlvbiwgZS5nLjpcbiAgICAgKiBgYGB0c1xuICAgICAqIGF3YWl0IGxvbmdSdW5uaW5nT3BlcmF0aW9uKCkuY2FuY2VsT24oc2lnbmFsKTtcbiAgICAgKiBgYGBcbiAgICAgKiBpbnN0ZWFkIG9mOlxuICAgICAqIGBgYHRzXG4gICAgICogbGV0IHByb21pc2VUb0JlQ2FuY2VsbGVkID0gbG9uZ1J1bm5pbmdPcGVyYXRpb24oKTtcbiAgICAgKiBhd2FpdCBwcm9taXNlVG9CZUNhbmNlbGxlZDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoaXMgcHJvbWlzZSwgZm9yIG1ldGhvZCBjaGFpbmluZy5cbiAgICAgKi9cbiAgICBjYW5jZWxPbihzaWduYWw6IEFib3J0U2lnbmFsKTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+IHtcbiAgICAgICAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgICAgICB2b2lkIHRoaXMuY2FuY2VsKHNpZ25hbC5yZWFzb24pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCAoKSA9PiB2b2lkIHRoaXMuY2FuY2VsKHNpZ25hbC5yZWFzb24pLCB7Y2FwdHVyZTogdHJ1ZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgY2FsbGJhY2tzIGZvciB0aGUgcmVzb2x1dGlvbiBhbmQvb3IgcmVqZWN0aW9uIG9mIHRoZSBgQ2FuY2VsbGFibGVQcm9taXNlYC5cbiAgICAgKlxuICAgICAqIFRoZSBvcHRpb25hbCBgb25jYW5jZWxsZWRgIGFyZ3VtZW50IHdpbGwgYmUgaW52b2tlZCB3aGVuIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGNhbmNlbGxlZCxcbiAgICAgKiB3aXRoIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYG9uY2FuY2VsbGVkYCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IuXG4gICAgICogV2hlbiB0aGUgcGFyZW50IHByb21pc2UgcmVqZWN0cyBvciBpcyBjYW5jZWxsZWQsIHRoZSBgb25yZWplY3RlZGAgY2FsbGJhY2sgd2lsbCBydW4sXG4gICAgICogX2V2ZW4gYWZ0ZXIgdGhlIHJldHVybmVkIHByb21pc2UgaGFzIGJlZW4gY2FuY2VsbGVkOl9cbiAgICAgKiBpbiB0aGF0IGNhc2UsIHNob3VsZCBpdCByZWplY3Qgb3IgdGhyb3csIHRoZSByZWFzb24gd2lsbCBiZSB3cmFwcGVkXG4gICAgICogaW4gYSB7QGxpbmsgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3J9IGFuZCBidWJibGVkIHVwIGFzIGFuIHVuaGFuZGxlZCByZWplY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb25mdWxmaWxsZWQgVGhlIGNhbGxiYWNrIHRvIGV4ZWN1dGUgd2hlbiB0aGUgUHJvbWlzZSBpcyByZXNvbHZlZC5cbiAgICAgKiBAcGFyYW0gb25yZWplY3RlZCBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZSB3aGVuIHRoZSBQcm9taXNlIGlzIHJlamVjdGVkLlxuICAgICAqIEByZXR1cm5zIEEgYENhbmNlbGxhYmxlUHJvbWlzZWAgZm9yIHRoZSBjb21wbGV0aW9uIG9mIHdoaWNoZXZlciBjYWxsYmFjayBpcyBleGVjdXRlZC5cbiAgICAgKiBUaGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBob29rZWQgdXAgdG8gcHJvcGFnYXRlIGNhbmNlbGxhdGlvbiByZXF1ZXN0cyB1cCB0aGUgY2hhaW4sIGJ1dCBub3QgZG93bjpcbiAgICAgKlxuICAgICAqICAgLSBpZiB0aGUgcGFyZW50IHByb21pc2UgaXMgY2FuY2VsbGVkLCB0aGUgYG9ucmVqZWN0ZWRgIGhhbmRsZXIgd2lsbCBiZSBpbnZva2VkIHdpdGggYSBgQ2FuY2VsRXJyb3JgXG4gICAgICogICAgIGFuZCB0aGUgcmV0dXJuZWQgcHJvbWlzZSBfd2lsbCByZXNvbHZlIHJlZ3VsYXJseV8gd2l0aCBpdHMgcmVzdWx0O1xuICAgICAqICAgLSBjb252ZXJzZWx5LCBpZiB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsIF90aGUgcGFyZW50IHByb21pc2UgaXMgY2FuY2VsbGVkIHRvbztfXG4gICAgICogICAgIHRoZSBgb25yZWplY3RlZGAgaGFuZGxlciB3aWxsIHN0aWxsIGJlIGludm9rZWQgd2l0aCB0aGUgcGFyZW50J3MgYENhbmNlbEVycm9yYCxcbiAgICAgKiAgICAgYnV0IGl0cyByZXN1bHQgd2lsbCBiZSBkaXNjYXJkZWRcbiAgICAgKiAgICAgYW5kIHRoZSByZXR1cm5lZCBwcm9taXNlIHdpbGwgcmVqZWN0IHdpdGggYSBgQ2FuY2VsRXJyb3JgIGFzIHdlbGwuXG4gICAgICpcbiAgICAgKiBUaGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIHtAbGluayBjYW5jZWx9IHdpbGwgZnVsZmlsbCBvbmx5IGFmdGVyIGFsbCBhdHRhY2hlZCBoYW5kbGVyc1xuICAgICAqIHVwIHRoZSBlbnRpcmUgcHJvbWlzZSBjaGFpbiBoYXZlIGJlZW4gcnVuLlxuICAgICAqXG4gICAgICogSWYgZWl0aGVyIGNhbGxiYWNrIHJldHVybnMgYSBjYW5jZWxsYWJsZSBwcm9taXNlLFxuICAgICAqIGNhbmNlbGxhdGlvbiByZXF1ZXN0cyB3aWxsIGJlIGRpdmVydGVkIHRvIGl0LFxuICAgICAqIGFuZCB0aGUgc3BlY2lmaWVkIGBvbmNhbmNlbGxlZGAgY2FsbGJhY2sgd2lsbCBiZSBkaXNjYXJkZWQuXG4gICAgICovXG4gICAgdGhlbjxUUmVzdWx0MSA9IFQsIFRSZXN1bHQyID0gbmV2ZXI+KG9uZnVsZmlsbGVkPzogKCh2YWx1ZTogVCkgPT4gVFJlc3VsdDEgfCBQcm9taXNlTGlrZTxUUmVzdWx0MT4gfCBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFRSZXN1bHQxPikgfCB1bmRlZmluZWQgfCBudWxsLCBvbnJlamVjdGVkPzogKChyZWFzb246IGFueSkgPT4gVFJlc3VsdDIgfCBQcm9taXNlTGlrZTxUUmVzdWx0Mj4gfCBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFRSZXN1bHQyPikgfCB1bmRlZmluZWQgfCBudWxsLCBvbmNhbmNlbGxlZD86IENhbmNlbGxhYmxlUHJvbWlzZUNhbmNlbGxlcik6IENhbmNlbGxhYmxlUHJvbWlzZTxUUmVzdWx0MSB8IFRSZXN1bHQyPiB7XG4gICAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBDYW5jZWxsYWJsZVByb21pc2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2FuY2VsbGFibGVQcm9taXNlLnByb3RvdHlwZS50aGVuIGNhbGxlZCBvbiBhbiBpbnZhbGlkIG9iamVjdC5cIik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOT1RFOiBUeXBlU2NyaXB0J3MgYnVpbHQtaW4gdHlwZSBmb3IgdGhlbiBpcyBicm9rZW4sXG4gICAgICAgIC8vIGFzIGl0IGFsbG93cyBzcGVjaWZ5aW5nIGFuIGFyYml0cmFyeSBUUmVzdWx0MSAhPSBUIGV2ZW4gd2hlbiBvbmZ1bGZpbGxlZCBpcyBub3QgYSBmdW5jdGlvbi5cbiAgICAgICAgLy8gV2UgY2Fubm90IGZpeCBpdCBpZiB3ZSB3YW50IHRvIENhbmNlbGxhYmxlUHJvbWlzZSB0byBpbXBsZW1lbnQgUHJvbWlzZUxpa2U8VD4uXG5cbiAgICAgICAgaWYgKCFpc0NhbGxhYmxlKG9uZnVsZmlsbGVkKSkgeyBvbmZ1bGZpbGxlZCA9IGlkZW50aXR5IGFzIGFueTsgfVxuICAgICAgICBpZiAoIWlzQ2FsbGFibGUob25yZWplY3RlZCkpIHsgb25yZWplY3RlZCA9IHRocm93ZXI7IH1cblxuICAgICAgICBpZiAob25mdWxmaWxsZWQgPT09IGlkZW50aXR5ICYmIG9ucmVqZWN0ZWQgPT0gdGhyb3dlcikge1xuICAgICAgICAgICAgLy8gU2hvcnRjdXQgZm9yIHRyaXZpYWwgYXJndW1lbnRzLlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKHJlc29sdmUpID0+IHJlc29sdmUodGhpcyBhcyBhbnkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJhcnJpZXI6IFBhcnRpYWw8UHJvbWlzZVdpdGhSZXNvbHZlcnM8dm9pZD4+ID0ge307XG4gICAgICAgIHRoaXNbYmFycmllclN5bV0gPSBiYXJyaWVyO1xuXG4gICAgICAgIHJldHVybiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPFRSZXN1bHQxIHwgVFJlc3VsdDI+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHZvaWQgc3VwZXIudGhlbihcbiAgICAgICAgICAgICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNbYmFycmllclN5bV0gPT09IGJhcnJpZXIpIHsgdGhpc1tiYXJyaWVyU3ltXSA9IG51bGw7IH1cbiAgICAgICAgICAgICAgICAgICAgYmFycmllci5yZXNvbHZlPy4oKTtcblxuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShvbmZ1bGZpbGxlZCEodmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKHJlYXNvbj8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNbYmFycmllclN5bV0gPT09IGJhcnJpZXIpIHsgdGhpc1tiYXJyaWVyU3ltXSA9IG51bGw7IH1cbiAgICAgICAgICAgICAgICAgICAgYmFycmllci5yZXNvbHZlPy4oKTtcblxuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShvbnJlamVjdGVkIShyZWFzb24pKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sIGFzeW5jIChjYXVzZT8pID0+IHtcbiAgICAgICAgICAgIC8vY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9uY2FuY2VsbGVkPy4oY2F1c2UpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNhbmNlbChjYXVzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEF0dGFjaGVzIGEgY2FsbGJhY2sgZm9yIG9ubHkgdGhlIHJlamVjdGlvbiBvZiB0aGUgUHJvbWlzZS5cbiAgICAgKlxuICAgICAqIFRoZSBvcHRpb25hbCBgb25jYW5jZWxsZWRgIGFyZ3VtZW50IHdpbGwgYmUgaW52b2tlZCB3aGVuIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGNhbmNlbGxlZCxcbiAgICAgKiB3aXRoIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYG9uY2FuY2VsbGVkYCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IuXG4gICAgICogV2hlbiB0aGUgcGFyZW50IHByb21pc2UgcmVqZWN0cyBvciBpcyBjYW5jZWxsZWQsIHRoZSBgb25yZWplY3RlZGAgY2FsbGJhY2sgd2lsbCBydW4sXG4gICAgICogX2V2ZW4gYWZ0ZXIgdGhlIHJldHVybmVkIHByb21pc2UgaGFzIGJlZW4gY2FuY2VsbGVkOl9cbiAgICAgKiBpbiB0aGF0IGNhc2UsIHNob3VsZCBpdCByZWplY3Qgb3IgdGhyb3csIHRoZSByZWFzb24gd2lsbCBiZSB3cmFwcGVkXG4gICAgICogaW4gYSB7QGxpbmsgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3J9IGFuZCBidWJibGVkIHVwIGFzIGFuIHVuaGFuZGxlZCByZWplY3Rpb24uXG4gICAgICpcbiAgICAgKiBJdCBpcyBlcXVpdmFsZW50IHRvXG4gICAgICogYGBgdHNcbiAgICAgKiBjYW5jZWxsYWJsZVByb21pc2UudGhlbih1bmRlZmluZWQsIG9ucmVqZWN0ZWQsIG9uY2FuY2VsbGVkKTtcbiAgICAgKiBgYGBcbiAgICAgKiBhbmQgdGhlIHNhbWUgY2F2ZWF0cyBhcHBseS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgUHJvbWlzZSBmb3IgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGNhbGxiYWNrLlxuICAgICAqIENhbmNlbGxhdGlvbiByZXF1ZXN0cyBvbiB0aGUgcmV0dXJuZWQgcHJvbWlzZVxuICAgICAqIHdpbGwgcHJvcGFnYXRlIHVwIHRoZSBjaGFpbiB0byB0aGUgcGFyZW50IHByb21pc2UsXG4gICAgICogYnV0IG5vdCBpbiB0aGUgb3RoZXIgZGlyZWN0aW9uLlxuICAgICAqXG4gICAgICogVGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSB7QGxpbmsgY2FuY2VsfSB3aWxsIGZ1bGZpbGwgb25seSBhZnRlciBhbGwgYXR0YWNoZWQgaGFuZGxlcnNcbiAgICAgKiB1cCB0aGUgZW50aXJlIHByb21pc2UgY2hhaW4gaGF2ZSBiZWVuIHJ1bi5cbiAgICAgKlxuICAgICAqIElmIGBvbnJlamVjdGVkYCByZXR1cm5zIGEgY2FuY2VsbGFibGUgcHJvbWlzZSxcbiAgICAgKiBjYW5jZWxsYXRpb24gcmVxdWVzdHMgd2lsbCBiZSBkaXZlcnRlZCB0byBpdCxcbiAgICAgKiBhbmQgdGhlIHNwZWNpZmllZCBgb25jYW5jZWxsZWRgIGNhbGxiYWNrIHdpbGwgYmUgZGlzY2FyZGVkLlxuICAgICAqIFNlZSB7QGxpbmsgdGhlbn0gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKi9cbiAgICBjYXRjaDxUUmVzdWx0ID0gbmV2ZXI+KG9ucmVqZWN0ZWQ/OiAoKHJlYXNvbjogYW55KSA9PiAoUHJvbWlzZUxpa2U8VFJlc3VsdD4gfCBUUmVzdWx0KSkgfCB1bmRlZmluZWQgfCBudWxsLCBvbmNhbmNlbGxlZD86IENhbmNlbGxhYmxlUHJvbWlzZUNhbmNlbGxlcik6IENhbmNlbGxhYmxlUHJvbWlzZTxUIHwgVFJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25yZWplY3RlZCwgb25jYW5jZWxsZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEF0dGFjaGVzIGEgY2FsbGJhY2sgdGhhdCBpcyBpbnZva2VkIHdoZW4gdGhlIENhbmNlbGxhYmxlUHJvbWlzZSBpcyBzZXR0bGVkIChmdWxmaWxsZWQgb3IgcmVqZWN0ZWQpLiBUaGVcbiAgICAgKiByZXNvbHZlZCB2YWx1ZSBjYW5ub3QgYmUgYWNjZXNzZWQgb3IgbW9kaWZpZWQgZnJvbSB0aGUgY2FsbGJhY2suXG4gICAgICogVGhlIHJldHVybmVkIHByb21pc2Ugd2lsbCBzZXR0bGUgaW4gdGhlIHNhbWUgc3RhdGUgYXMgdGhlIG9yaWdpbmFsIG9uZVxuICAgICAqIGFmdGVyIHRoZSBwcm92aWRlZCBjYWxsYmFjayBoYXMgY29tcGxldGVkIGV4ZWN1dGlvbixcbiAgICAgKiB1bmxlc3MgdGhlIGNhbGxiYWNrIHRocm93cyBvciByZXR1cm5zIGEgcmVqZWN0aW5nIHByb21pc2UsXG4gICAgICogaW4gd2hpY2ggY2FzZSB0aGUgcmV0dXJuZWQgcHJvbWlzZSB3aWxsIHJlamVjdCBhcyB3ZWxsLlxuICAgICAqXG4gICAgICogVGhlIG9wdGlvbmFsIGBvbmNhbmNlbGxlZGAgYXJndW1lbnQgd2lsbCBiZSBpbnZva2VkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLFxuICAgICAqIHdpdGggdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSBgb25jYW5jZWxsZWRgIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBPbmNlIHRoZSBwYXJlbnQgcHJvbWlzZSBzZXR0bGVzLCB0aGUgYG9uZmluYWxseWAgY2FsbGJhY2sgd2lsbCBydW4sXG4gICAgICogX2V2ZW4gYWZ0ZXIgdGhlIHJldHVybmVkIHByb21pc2UgaGFzIGJlZW4gY2FuY2VsbGVkOl9cbiAgICAgKiBpbiB0aGF0IGNhc2UsIHNob3VsZCBpdCByZWplY3Qgb3IgdGhyb3csIHRoZSByZWFzb24gd2lsbCBiZSB3cmFwcGVkXG4gICAgICogaW4gYSB7QGxpbmsgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3J9IGFuZCBidWJibGVkIHVwIGFzIGFuIHVuaGFuZGxlZCByZWplY3Rpb24uXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiB7QGxpbmsgdGhlbn0gYW5kIHRoZSBzYW1lIGNhdmVhdHMgYXBwbHkuXG4gICAgICogSXQgaXMgcG9seWZpbGxlZCwgaGVuY2UgYXZhaWxhYmxlIGluIGV2ZXJ5IE9TL3dlYnZpZXcgdmVyc2lvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgUHJvbWlzZSBmb3IgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGNhbGxiYWNrLlxuICAgICAqIENhbmNlbGxhdGlvbiByZXF1ZXN0cyBvbiB0aGUgcmV0dXJuZWQgcHJvbWlzZVxuICAgICAqIHdpbGwgcHJvcGFnYXRlIHVwIHRoZSBjaGFpbiB0byB0aGUgcGFyZW50IHByb21pc2UsXG4gICAgICogYnV0IG5vdCBpbiB0aGUgb3RoZXIgZGlyZWN0aW9uLlxuICAgICAqXG4gICAgICogVGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSB7QGxpbmsgY2FuY2VsfSB3aWxsIGZ1bGZpbGwgb25seSBhZnRlciBhbGwgYXR0YWNoZWQgaGFuZGxlcnNcbiAgICAgKiB1cCB0aGUgZW50aXJlIHByb21pc2UgY2hhaW4gaGF2ZSBiZWVuIHJ1bi5cbiAgICAgKlxuICAgICAqIElmIGBvbmZpbmFsbHlgIHJldHVybnMgYSBjYW5jZWxsYWJsZSBwcm9taXNlLFxuICAgICAqIGNhbmNlbGxhdGlvbiByZXF1ZXN0cyB3aWxsIGJlIGRpdmVydGVkIHRvIGl0LFxuICAgICAqIGFuZCB0aGUgc3BlY2lmaWVkIGBvbmNhbmNlbGxlZGAgY2FsbGJhY2sgd2lsbCBiZSBkaXNjYXJkZWQuXG4gICAgICogU2VlIHtAbGluayB0aGVufSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqL1xuICAgIGZpbmFsbHkob25maW5hbGx5PzogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkIHwgbnVsbCwgb25jYW5jZWxsZWQ/OiBDYW5jZWxsYWJsZVByb21pc2VDYW5jZWxsZXIpOiBDYW5jZWxsYWJsZVByb21pc2U8VD4ge1xuICAgICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQ2FuY2VsbGFibGVQcm9taXNlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbmNlbGxhYmxlUHJvbWlzZS5wcm90b3R5cGUuZmluYWxseSBjYWxsZWQgb24gYW4gaW52YWxpZCBvYmplY3QuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc0NhbGxhYmxlKG9uZmluYWxseSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRoZW4ob25maW5hbGx5LCBvbmZpbmFsbHksIG9uY2FuY2VsbGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRoZW4oXG4gICAgICAgICAgICAodmFsdWUpID0+IENhbmNlbGxhYmxlUHJvbWlzZS5yZXNvbHZlKG9uZmluYWxseSgpKS50aGVuKCgpID0+IHZhbHVlKSxcbiAgICAgICAgICAgIChyZWFzb24/KSA9PiBDYW5jZWxsYWJsZVByb21pc2UucmVzb2x2ZShvbmZpbmFsbHkoKSkudGhlbigoKSA9PiB7IHRocm93IHJlYXNvbjsgfSksXG4gICAgICAgICAgICBvbmNhbmNlbGxlZCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXZSB1c2UgdGhlIGBbU3ltYm9sLnNwZWNpZXNdYCBzdGF0aWMgcHJvcGVydHksIGlmIGF2YWlsYWJsZSxcbiAgICAgKiB0byBkaXNhYmxlIHRoZSBidWlsdC1pbiBhdXRvbWF0aWMgc3ViY2xhc3NpbmcgZmVhdHVyZXMgZnJvbSB7QGxpbmsgUHJvbWlzZX0uXG4gICAgICogSXQgaXMgY3JpdGljYWwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgdGhhdCBleHRlbmRlcnMgZG8gbm90IG92ZXJyaWRlIHRoaXMuXG4gICAgICogT25jZSB0aGUgcHJvcG9zYWwgYXQgaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcm0tYnVpbHRpbi1zdWJjbGFzc2luZ1xuICAgICAqIGlzIGVpdGhlciBhY2NlcHRlZCBvciByZXRpcmVkLCB0aGlzIGltcGxlbWVudGF0aW9uIHdpbGwgaGF2ZSB0byBiZSByZXZpc2VkIGFjY29yZGluZ2x5LlxuICAgICAqXG4gICAgICogQGlnbm9yZVxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXQgW3NwZWNpZXNdKCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgQ2FuY2VsbGFibGVQcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhbiBhcnJheSBvZiByZXN1bHRzXG4gICAgICogd2hlbiBhbGwgb2YgdGhlIHByb3ZpZGVkIFByb21pc2VzIHJlc29sdmUsIG9yIHJlamVjdGVkIHdoZW4gYW55IFByb21pc2UgaXMgcmVqZWN0ZWQuXG4gICAgICpcbiAgICAgKiBFdmVyeSBvbmUgb2YgdGhlIHByb3ZpZGVkIG9iamVjdHMgdGhhdCBpcyBhIHRoZW5hYmxlIF9hbmRfIGNhbmNlbGxhYmxlIG9iamVjdFxuICAgICAqIHdpbGwgYmUgY2FuY2VsbGVkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLCB3aXRoIHRoZSBzYW1lIGNhdXNlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIGFsbDxUPih2YWx1ZXM6IEl0ZXJhYmxlPFQgfCBQcm9taXNlTGlrZTxUPj4pOiBDYW5jZWxsYWJsZVByb21pc2U8QXdhaXRlZDxUPltdPjtcbiAgICBzdGF0aWMgYWxsPFQgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gfCBbXT4odmFsdWVzOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPHsgLXJlYWRvbmx5IFtQIGluIGtleW9mIFRdOiBBd2FpdGVkPFRbUF0+OyB9PjtcbiAgICBzdGF0aWMgYWxsPFQgZXh0ZW5kcyBJdGVyYWJsZTx1bmtub3duPiB8IEFycmF5TGlrZTx1bmtub3duPj4odmFsdWVzOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgbGV0IGNvbGxlY3RlZCA9IEFycmF5LmZyb20odmFsdWVzKTtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IGNvbGxlY3RlZC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gQ2FuY2VsbGFibGVQcm9taXNlLnJlc29sdmUoY29sbGVjdGVkKVxuICAgICAgICAgICAgOiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICB2b2lkIFByb21pc2UuYWxsKGNvbGxlY3RlZCkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgfSwgKGNhdXNlPyk6IFByb21pc2U8dm9pZD4gPT4gY2FuY2VsQWxsKHByb21pc2UsIGNvbGxlY3RlZCwgY2F1c2UpKTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIENhbmNlbGxhYmxlUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggYW4gYXJyYXkgb2YgcmVzdWx0c1xuICAgICAqIHdoZW4gYWxsIG9mIHRoZSBwcm92aWRlZCBQcm9taXNlcyByZXNvbHZlIG9yIHJlamVjdC5cbiAgICAgKlxuICAgICAqIEV2ZXJ5IG9uZSBvZiB0aGUgcHJvdmlkZWQgb2JqZWN0cyB0aGF0IGlzIGEgdGhlbmFibGUgX2FuZF8gY2FuY2VsbGFibGUgb2JqZWN0XG4gICAgICogd2lsbCBiZSBjYW5jZWxsZWQgd2hlbiB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsIHdpdGggdGhlIHNhbWUgY2F1c2UuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgYWxsU2V0dGxlZDxUPih2YWx1ZXM6IEl0ZXJhYmxlPFQgfCBQcm9taXNlTGlrZTxUPj4pOiBDYW5jZWxsYWJsZVByb21pc2U8UHJvbWlzZVNldHRsZWRSZXN1bHQ8QXdhaXRlZDxUPj5bXT47XG4gICAgc3RhdGljIGFsbFNldHRsZWQ8VCBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSB8IFtdPih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8eyAtcmVhZG9ubHkgW1AgaW4ga2V5b2YgVF06IFByb21pc2VTZXR0bGVkUmVzdWx0PEF3YWl0ZWQ8VFtQXT4+OyB9PjtcbiAgICBzdGF0aWMgYWxsU2V0dGxlZDxUIGV4dGVuZHMgSXRlcmFibGU8dW5rbm93bj4gfCBBcnJheUxpa2U8dW5rbm93bj4+KHZhbHVlczogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPiB7XG4gICAgICAgIGxldCBjb2xsZWN0ZWQgPSBBcnJheS5mcm9tKHZhbHVlcyk7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBjb2xsZWN0ZWQubGVuZ3RoID09PSAwXG4gICAgICAgICAgICA/IENhbmNlbGxhYmxlUHJvbWlzZS5yZXNvbHZlKGNvbGxlY3RlZClcbiAgICAgICAgICAgIDogbmV3IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgdm9pZCBQcm9taXNlLmFsbFNldHRsZWQoY29sbGVjdGVkKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICB9LCAoY2F1c2U/KTogUHJvbWlzZTx2b2lkPiA9PiBjYW5jZWxBbGwocHJvbWlzZSwgY29sbGVjdGVkLCBjYXVzZSkpO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYW55IGZ1bmN0aW9uIHJldHVybnMgYSBwcm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkIGJ5IHRoZSBmaXJzdCBnaXZlbiBwcm9taXNlIHRvIGJlIGZ1bGZpbGxlZCxcbiAgICAgKiBvciByZWplY3RlZCB3aXRoIGFuIEFnZ3JlZ2F0ZUVycm9yIGNvbnRhaW5pbmcgYW4gYXJyYXkgb2YgcmVqZWN0aW9uIHJlYXNvbnNcbiAgICAgKiBpZiBhbGwgb2YgdGhlIGdpdmVuIHByb21pc2VzIGFyZSByZWplY3RlZC5cbiAgICAgKiBJdCByZXNvbHZlcyBhbGwgZWxlbWVudHMgb2YgdGhlIHBhc3NlZCBpdGVyYWJsZSB0byBwcm9taXNlcyBhcyBpdCBydW5zIHRoaXMgYWxnb3JpdGhtLlxuICAgICAqXG4gICAgICogRXZlcnkgb25lIG9mIHRoZSBwcm92aWRlZCBvYmplY3RzIHRoYXQgaXMgYSB0aGVuYWJsZSBfYW5kXyBjYW5jZWxsYWJsZSBvYmplY3RcbiAgICAgKiB3aWxsIGJlIGNhbmNlbGxlZCB3aGVuIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGNhbmNlbGxlZCwgd2l0aCB0aGUgc2FtZSBjYXVzZS5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyBhbnk8VD4odmFsdWVzOiBJdGVyYWJsZTxUIHwgUHJvbWlzZUxpa2U8VD4+KTogQ2FuY2VsbGFibGVQcm9taXNlPEF3YWl0ZWQ8VD4+O1xuICAgIHN0YXRpYyBhbnk8VCBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSB8IFtdPih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8QXdhaXRlZDxUW251bWJlcl0+PjtcbiAgICBzdGF0aWMgYW55PFQgZXh0ZW5kcyBJdGVyYWJsZTx1bmtub3duPiB8IEFycmF5TGlrZTx1bmtub3duPj4odmFsdWVzOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgbGV0IGNvbGxlY3RlZCA9IEFycmF5LmZyb20odmFsdWVzKTtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IGNvbGxlY3RlZC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gQ2FuY2VsbGFibGVQcm9taXNlLnJlc29sdmUoY29sbGVjdGVkKVxuICAgICAgICAgICAgOiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICB2b2lkIFByb21pc2UuYW55KGNvbGxlY3RlZCkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgfSwgKGNhdXNlPyk6IFByb21pc2U8dm9pZD4gPT4gY2FuY2VsQWxsKHByb21pc2UsIGNvbGxlY3RlZCwgY2F1c2UpKTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIFByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvciByZWplY3RlZCB3aGVuIGFueSBvZiB0aGUgcHJvdmlkZWQgUHJvbWlzZXMgYXJlIHJlc29sdmVkIG9yIHJlamVjdGVkLlxuICAgICAqXG4gICAgICogRXZlcnkgb25lIG9mIHRoZSBwcm92aWRlZCBvYmplY3RzIHRoYXQgaXMgYSB0aGVuYWJsZSBfYW5kXyBjYW5jZWxsYWJsZSBvYmplY3RcbiAgICAgKiB3aWxsIGJlIGNhbmNlbGxlZCB3aGVuIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGNhbmNlbGxlZCwgd2l0aCB0aGUgc2FtZSBjYXVzZS5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyByYWNlPFQ+KHZhbHVlczogSXRlcmFibGU8VCB8IFByb21pc2VMaWtlPFQ+Pik6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFQ+PjtcbiAgICBzdGF0aWMgcmFjZTxUIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdIHwgW10+KHZhbHVlczogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFRbbnVtYmVyXT4+O1xuICAgIHN0YXRpYyByYWNlPFQgZXh0ZW5kcyBJdGVyYWJsZTx1bmtub3duPiB8IEFycmF5TGlrZTx1bmtub3duPj4odmFsdWVzOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgbGV0IGNvbGxlY3RlZCA9IEFycmF5LmZyb20odmFsdWVzKTtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdm9pZCBQcm9taXNlLnJhY2UoY29sbGVjdGVkKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0sIChjYXVzZT8pOiBQcm9taXNlPHZvaWQ+ID0+IGNhbmNlbEFsbChwcm9taXNlLCBjb2xsZWN0ZWQsIGNhdXNlKSk7XG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgY2FuY2VsbGVkIENhbmNlbGxhYmxlUHJvbWlzZSBmb3IgdGhlIHByb3ZpZGVkIGNhdXNlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIGNhbmNlbDxUID0gbmV2ZXI+KGNhdXNlPzogYW55KTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+IHtcbiAgICAgICAgY29uc3QgcCA9IG5ldyBDYW5jZWxsYWJsZVByb21pc2U8VD4oKCkgPT4ge30pO1xuICAgICAgICBwLmNhbmNlbChjYXVzZSk7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlIHRoYXQgY2FuY2Vsc1xuICAgICAqIGFmdGVyIHRoZSBzcGVjaWZpZWQgdGltZW91dCwgd2l0aCB0aGUgcHJvdmlkZWQgY2F1c2UuXG4gICAgICpcbiAgICAgKiBJZiB0aGUge0BsaW5rIEFib3J0U2lnbmFsLnRpbWVvdXR9IGZhY3RvcnkgbWV0aG9kIGlzIGF2YWlsYWJsZSxcbiAgICAgKiBpdCBpcyB1c2VkIHRvIGJhc2UgdGhlIHRpbWVvdXQgb24gX2FjdGl2ZV8gdGltZSByYXRoZXIgdGhhbiBfZWxhcHNlZF8gdGltZS5cbiAgICAgKiBPdGhlcndpc2UsIGB0aW1lb3V0YCBmYWxscyBiYWNrIHRvIHtAbGluayBzZXRUaW1lb3V0fS5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyB0aW1lb3V0PFQgPSBuZXZlcj4obWlsbGlzZWNvbmRzOiBudW1iZXIsIGNhdXNlPzogYW55KTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBDYW5jZWxsYWJsZVByb21pc2U8VD4oKCkgPT4ge30pO1xuICAgICAgICBpZiAoQWJvcnRTaWduYWwgJiYgdHlwZW9mIEFib3J0U2lnbmFsID09PSAnZnVuY3Rpb24nICYmIEFib3J0U2lnbmFsLnRpbWVvdXQgJiYgdHlwZW9mIEFib3J0U2lnbmFsLnRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIEFib3J0U2lnbmFsLnRpbWVvdXQobWlsbGlzZWNvbmRzKS5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IHZvaWQgcHJvbWlzZS5jYW5jZWwoY2F1c2UpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdm9pZCBwcm9taXNlLmNhbmNlbChjYXVzZSksIG1pbGxpc2Vjb25kcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBDYW5jZWxsYWJsZVByb21pc2UgdGhhdCByZXNvbHZlcyBhZnRlciB0aGUgc3BlY2lmaWVkIHRpbWVvdXQuXG4gICAgICogVGhlIHJldHVybmVkIHByb21pc2UgY2FuIGJlIGNhbmNlbGxlZCB3aXRob3V0IGNvbnNlcXVlbmNlcy5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyBzbGVlcChtaWxsaXNlY29uZHM6IG51bWJlcik6IENhbmNlbGxhYmxlUHJvbWlzZTx2b2lkPjtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IENhbmNlbGxhYmxlUHJvbWlzZSB0aGF0IHJlc29sdmVzIGFmdGVyXG4gICAgICogdGhlIHNwZWNpZmllZCB0aW1lb3V0LCB3aXRoIHRoZSBwcm92aWRlZCB2YWx1ZS5cbiAgICAgKiBUaGUgcmV0dXJuZWQgcHJvbWlzZSBjYW4gYmUgY2FuY2VsbGVkIHdpdGhvdXQgY29uc2VxdWVuY2VzLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHNsZWVwPFQ+KG1pbGxpc2Vjb25kczogbnVtYmVyLCB2YWx1ZTogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTxUPjtcbiAgICBzdGF0aWMgc2xlZXA8VCA9IHZvaWQ+KG1pbGxpc2Vjb25kczogbnVtYmVyLCB2YWx1ZT86IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8VD4ge1xuICAgICAgICByZXR1cm4gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTxUPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKHZhbHVlISksIG1pbGxpc2Vjb25kcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcmVqZWN0ZWQgQ2FuY2VsbGFibGVQcm9taXNlIGZvciB0aGUgcHJvdmlkZWQgcmVhc29uLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHJlamVjdDxUID0gbmV2ZXI+KHJlYXNvbj86IGFueSk6IENhbmNlbGxhYmxlUHJvbWlzZTxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPFQ+KChfLCByZWplY3QpID0+IHJlamVjdChyZWFzb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHJlc29sdmVkIENhbmNlbGxhYmxlUHJvbWlzZS5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyByZXNvbHZlKCk6IENhbmNlbGxhYmxlUHJvbWlzZTx2b2lkPjtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHJlc29sdmVkIENhbmNlbGxhYmxlUHJvbWlzZSBmb3IgdGhlIHByb3ZpZGVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHJlc29sdmU8VD4odmFsdWU6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8QXdhaXRlZDxUPj47XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyByZXNvbHZlZCBDYW5jZWxsYWJsZVByb21pc2UgZm9yIHRoZSBwcm92aWRlZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyByZXNvbHZlPFQ+KHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pOiBDYW5jZWxsYWJsZVByb21pc2U8QXdhaXRlZDxUPj47XG4gICAgc3RhdGljIHJlc29sdmU8VCA9IHZvaWQ+KHZhbHVlPzogVCB8IFByb21pc2VMaWtlPFQ+KTogQ2FuY2VsbGFibGVQcm9taXNlPEF3YWl0ZWQ8VD4+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQ2FuY2VsbGFibGVQcm9taXNlKSB7XG4gICAgICAgICAgICAvLyBPcHRpbWlzZSBmb3IgY2FuY2VsbGFibGUgcHJvbWlzZXMuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBDYW5jZWxsYWJsZVByb21pc2U8YW55PigocmVzb2x2ZSkgPT4gcmVzb2x2ZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlIGFuZCByZXR1cm5zIGl0IGluIGFuIG9iamVjdCwgYWxvbmcgd2l0aCBpdHMgcmVzb2x2ZSBhbmQgcmVqZWN0IGZ1bmN0aW9uc1xuICAgICAqIGFuZCBhIGdldHRlci9zZXR0ZXIgZm9yIHRoZSBjYW5jZWxsYXRpb24gY2FsbGJhY2suXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBwb2x5ZmlsbGVkLCBoZW5jZSBhdmFpbGFibGUgaW4gZXZlcnkgT1Mvd2VidmlldyB2ZXJzaW9uLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHdpdGhSZXNvbHZlcnM8VD4oKTogQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxUPiB7XG4gICAgICAgIGxldCByZXN1bHQ6IENhbmNlbGxhYmxlUHJvbWlzZVdpdGhSZXNvbHZlcnM8VD4gPSB7IG9uY2FuY2VsbGVkOiBudWxsIH0gYXMgYW55O1xuICAgICAgICByZXN1bHQucHJvbWlzZSA9IG5ldyBDYW5jZWxsYWJsZVByb21pc2U8VD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgcmVzdWx0LnJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICAgICAgcmVzdWx0LnJlamVjdCA9IHJlamVjdDtcbiAgICAgICAgfSwgKGNhdXNlPzogYW55KSA9PiB7IHJlc3VsdC5vbmNhbmNlbGxlZD8uKGNhdXNlKTsgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYSBjYWxsYmFjayB0aGF0IGltcGxlbWVudHMgdGhlIGNhbmNlbGxhdGlvbiBhbGdvcml0aG0gZm9yIHRoZSBnaXZlbiBjYW5jZWxsYWJsZSBwcm9taXNlLlxuICogVGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSB0aGUgcmVzdWx0aW5nIGZ1bmN0aW9uIGRvZXMgbm90IHJlamVjdC5cbiAqL1xuZnVuY3Rpb24gY2FuY2VsbGVyRm9yPFQ+KHByb21pc2U6IENhbmNlbGxhYmxlUHJvbWlzZVdpdGhSZXNvbHZlcnM8VD4sIHN0YXRlOiBDYW5jZWxsYWJsZVByb21pc2VTdGF0ZSkge1xuICAgIGxldCBjYW5jZWxsYXRpb25Qcm9taXNlOiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD4gPSB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gKHJlYXNvbjogQ2FuY2VsRXJyb3IpOiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD4gPT4ge1xuICAgICAgICBpZiAoIXN0YXRlLnNldHRsZWQpIHtcbiAgICAgICAgICAgIHN0YXRlLnNldHRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgc3RhdGUucmVhc29uID0gcmVhc29uO1xuICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVhc29uKTtcblxuICAgICAgICAgICAgLy8gQXR0YWNoIGFuIGVycm9yIGhhbmRsZXIgdGhhdCBpZ25vcmVzIHRoaXMgc3BlY2lmaWMgcmVqZWN0aW9uIHJlYXNvbiBhbmQgbm90aGluZyBlbHNlLlxuICAgICAgICAgICAgLy8gSW4gdGhlb3J5LCBhIHNhbmUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBhdCB0aGlzIHBvaW50XG4gICAgICAgICAgICAvLyBzaG91bGQgYWx3YXlzIHJlamVjdCB3aXRoIG91ciBjYW5jZWxsYXRpb24gcmVhc29uLFxuICAgICAgICAgICAgLy8gaGVuY2UgdGhlIGhhbmRsZXIgd2lsbCBuZXZlciB0aHJvdy5cbiAgICAgICAgICAgIHZvaWQgUHJvbWlzZS5wcm90b3R5cGUudGhlbi5jYWxsKHByb21pc2UucHJvbWlzZSwgdW5kZWZpbmVkLCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVyciAhPT0gcmVhc29uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHJlYXNvbiBpcyBub3Qgc2V0LCB0aGUgcHJvbWlzZSByZXNvbHZlZCByZWd1bGFybHksIGhlbmNlIHdlIG11c3Qgbm90IGNhbGwgb25jYW5jZWxsZWQuXG4gICAgICAgIC8vIElmIG9uY2FuY2VsbGVkIGlzIHVuc2V0LCBubyBuZWVkIHRvIGdvIGFueSBmdXJ0aGVyLlxuICAgICAgICBpZiAoIXN0YXRlLnJlYXNvbiB8fCAhcHJvbWlzZS5vbmNhbmNlbGxlZCkgeyByZXR1cm47IH1cblxuICAgICAgICBjYW5jZWxsYXRpb25Qcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShwcm9taXNlLm9uY2FuY2VsbGVkIShzdGF0ZS5yZWFzb24hLmNhdXNlKSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlamVjdChuZXcgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3IocHJvbWlzZS5wcm9taXNlLCBlcnIsIFwiVW5oYW5kbGVkIGV4Y2VwdGlvbiBpbiBvbmNhbmNlbGxlZCBjYWxsYmFjay5cIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaCgocmVhc29uPykgPT4ge1xuICAgICAgICAgICAgUHJvbWlzZS5yZWplY3QobmV3IENhbmNlbGxlZFJlamVjdGlvbkVycm9yKHByb21pc2UucHJvbWlzZSwgcmVhc29uLCBcIlVuaGFuZGxlZCByZWplY3Rpb24gaW4gb25jYW5jZWxsZWQgY2FsbGJhY2suXCIpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gVW5zZXQgb25jYW5jZWxsZWQgdG8gcHJldmVudCByZXBlYXRlZCBjYWxscy5cbiAgICAgICAgcHJvbWlzZS5vbmNhbmNlbGxlZCA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuIGNhbmNlbGxhdGlvblByb21pc2U7XG4gICAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYSBjYWxsYmFjayB0aGF0IGltcGxlbWVudHMgdGhlIHJlc29sdXRpb24gYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4gY2FuY2VsbGFibGUgcHJvbWlzZS5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZXJGb3I8VD4ocHJvbWlzZTogQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxUPiwgc3RhdGU6IENhbmNlbGxhYmxlUHJvbWlzZVN0YXRlKTogQ2FuY2VsbGFibGVQcm9taXNlUmVzb2x2ZXI8VD4ge1xuICAgIHJldHVybiAodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHN0YXRlLnJlc29sdmluZykgeyByZXR1cm47IH1cbiAgICAgICAgc3RhdGUucmVzb2x2aW5nID0gdHJ1ZTtcblxuICAgICAgICBpZiAodmFsdWUgPT09IHByb21pc2UucHJvbWlzZSkge1xuICAgICAgICAgICAgaWYgKHN0YXRlLnNldHRsZWQpIHsgcmV0dXJuOyB9XG4gICAgICAgICAgICBzdGF0ZS5zZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoXCJBIHByb21pc2UgY2Fubm90IGJlIHJlc29sdmVkIHdpdGggaXRzZWxmLlwiKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgICAgICBsZXQgdGhlbjogYW55O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGVuID0gKHZhbHVlIGFzIGFueSkudGhlbjtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHN0YXRlLnNldHRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNDYWxsYWJsZSh0aGVuKSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjYW5jZWwgPSAodmFsdWUgYXMgYW55KS5jYW5jZWw7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0NhbGxhYmxlKGNhbmNlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9uY2FuY2VsbGVkID0gKGNhdXNlPzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmbGVjdC5hcHBseShjYW5jZWwsIHZhbHVlLCBbY2F1c2VdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUucmVhc29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYWxyZWFkeSBjYW5jZWxsZWQsIHByb3BhZ2F0ZSBjYW5jZWxsYXRpb24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSB0aGUgY2FuY2VsbGVyIGFsZ29yaXRobSBkb2VzIG5vdCByZWplY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyBpdCBjYW4gYmUgZGlzY2FyZGVkIHNhZmVseS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkIGNhbmNlbGxlckZvcih7IC4uLnByb21pc2UsIG9uY2FuY2VsbGVkIH0sIHN0YXRlKShzdGF0ZS5yZWFzb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLm9uY2FuY2VsbGVkID0gb25jYW5jZWxsZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIHt9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdTdGF0ZTogQ2FuY2VsbGFibGVQcm9taXNlU3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgICAgIHJvb3Q6IHN0YXRlLnJvb3QsXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGdldCBzZXR0bGVkKCkgeyByZXR1cm4gdGhpcy5yb290LnNldHRsZWQgfSxcbiAgICAgICAgICAgICAgICAgICAgc2V0IHNldHRsZWQodmFsdWUpIHsgdGhpcy5yb290LnNldHRsZWQgPSB2YWx1ZTsgfSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0IHJlYXNvbigpIHsgcmV0dXJuIHRoaXMucm9vdC5yZWFzb24gfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZWplY3RvciA9IHJlamVjdG9yRm9yKHByb21pc2UsIG5ld1N0YXRlKTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBSZWZsZWN0LmFwcGx5KHRoZW4sIHZhbHVlLCBbcmVzb2x2ZXJGb3IocHJvbWlzZSwgbmV3U3RhdGUpLCByZWplY3Rvcl0pO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3RvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47IC8vIElNUE9SVEFOVCFcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZS5zZXR0bGVkKSB7IHJldHVybjsgfVxuICAgICAgICBzdGF0ZS5zZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHZhbHVlKTtcbiAgICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBjYWxsYmFjayB0aGF0IGltcGxlbWVudHMgdGhlIHJlamVjdGlvbiBhbGdvcml0aG0gZm9yIHRoZSBnaXZlbiBjYW5jZWxsYWJsZSBwcm9taXNlLlxuICovXG5mdW5jdGlvbiByZWplY3RvckZvcjxUPihwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+LCBzdGF0ZTogQ2FuY2VsbGFibGVQcm9taXNlU3RhdGUpOiBDYW5jZWxsYWJsZVByb21pc2VSZWplY3RvciB7XG4gICAgcmV0dXJuIChyZWFzb24/KSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZS5yZXNvbHZpbmcpIHsgcmV0dXJuOyB9XG4gICAgICAgIHN0YXRlLnJlc29sdmluZyA9IHRydWU7XG5cbiAgICAgICAgaWYgKHN0YXRlLnNldHRsZWQpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlYXNvbiBpbnN0YW5jZW9mIENhbmNlbEVycm9yICYmIHN0YXRlLnJlYXNvbiBpbnN0YW5jZW9mIENhbmNlbEVycm9yICYmIE9iamVjdC5pcyhyZWFzb24uY2F1c2UsIHN0YXRlLnJlYXNvbi5jYXVzZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU3dhbGxvdyBsYXRlIHJlamVjdGlvbnMgdGhhdCBhcmUgQ2FuY2VsRXJyb3JzIHdob3NlIGNhbmNlbGxhdGlvbiBjYXVzZSBpcyB0aGUgc2FtZSBhcyBvdXJzLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7fVxuXG4gICAgICAgICAgICB2b2lkIFByb21pc2UucmVqZWN0KG5ldyBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcihwcm9taXNlLnByb21pc2UsIHJlYXNvbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhdGUuc2V0dGxlZCA9IHRydWU7XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdChyZWFzb24pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIENhbmNlbHMgYWxsIHZhbHVlcyBpbiBhbiBhcnJheSB0aGF0IGxvb2sgbGlrZSBjYW5jZWxsYWJsZSB0aGVuYWJsZXMuXG4gKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIG9uY2UgYWxsIGNhbmNlbGxhdGlvbiBwcm9jZWR1cmVzIGZvciB0aGUgZ2l2ZW4gdmFsdWVzIGhhdmUgc2V0dGxlZC5cbiAqL1xuZnVuY3Rpb24gY2FuY2VsQWxsKHBhcmVudDogQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+LCB2YWx1ZXM6IGFueVtdLCBjYXVzZT86IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlc3VsdHM6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgbGV0IGNhbmNlbDogQ2FuY2VsbGFibGVQcm9taXNlQ2FuY2VsbGVyO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCFpc0NhbGxhYmxlKHZhbHVlLnRoZW4pKSB7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICBjYW5jZWwgPSB2YWx1ZS5jYW5jZWw7XG4gICAgICAgICAgICBpZiAoIWlzQ2FsbGFibGUoY2FuY2VsKSkgeyBjb250aW51ZTsgfVxuICAgICAgICB9IGNhdGNoIHsgY29udGludWU7IH1cblxuICAgICAgICBsZXQgcmVzdWx0OiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD47XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHQgPSBSZWZsZWN0LmFwcGx5KGNhbmNlbCwgdmFsdWUsIFtjYXVzZV0pO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIFByb21pc2UucmVqZWN0KG5ldyBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcihwYXJlbnQsIGVyciwgXCJVbmhhbmRsZWQgZXhjZXB0aW9uIGluIGNhbmNlbCBtZXRob2QuXCIpKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFyZXN1bHQpIHsgY29udGludWU7IH1cbiAgICAgICAgcmVzdWx0cy5wdXNoKFxuICAgICAgICAgICAgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UgID8gcmVzdWx0IDogUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkpLmNhdGNoKChyZWFzb24/KSA9PiB7XG4gICAgICAgICAgICAgICAgUHJvbWlzZS5yZWplY3QobmV3IENhbmNlbGxlZFJlamVjdGlvbkVycm9yKHBhcmVudCwgcmVhc29uLCBcIlVuaGFuZGxlZCByZWplY3Rpb24gaW4gY2FuY2VsIG1ldGhvZC5cIikpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocmVzdWx0cykgYXMgYW55O1xufVxuXG4vKipcbiAqIFJldHVybnMgaXRzIGFyZ3VtZW50LlxuICovXG5mdW5jdGlvbiBpZGVudGl0eTxUPih4OiBUKTogVCB7XG4gICAgcmV0dXJuIHg7XG59XG5cbi8qKlxuICogVGhyb3dzIGl0cyBhcmd1bWVudC5cbiAqL1xuZnVuY3Rpb24gdGhyb3dlcihyZWFzb24/OiBhbnkpOiBuZXZlciB7XG4gICAgdGhyb3cgcmVhc29uO1xufVxuXG4vKipcbiAqIEF0dGVtcHRzIHZhcmlvdXMgc3RyYXRlZ2llcyB0byBjb252ZXJ0IGFuIGVycm9yIHRvIGEgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBlcnJvck1lc3NhZ2UoZXJyOiBhbnkpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvciB8fCB0eXBlb2YgZXJyICE9PSAnb2JqZWN0JyB8fCBlcnIudG9TdHJpbmcgIT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiICsgZXJyO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCB7fVxuXG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGVycik7XG4gICAgfSBjYXRjaCB7fVxuXG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlcnIpO1xuICAgIH0gY2F0Y2gge31cblxuICAgIHJldHVybiBcIjxjb3VsZCBub3QgY29udmVydCBlcnJvciB0byBzdHJpbmc+XCI7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgY3VycmVudCBiYXJyaWVyIHByb21pc2UgZm9yIHRoZSBnaXZlbiBjYW5jZWxsYWJsZSBwcm9taXNlLiBJZiBuZWNlc3NhcnksIGluaXRpYWxpc2VzIHRoZSBiYXJyaWVyLlxuICovXG5mdW5jdGlvbiBjdXJyZW50QmFycmllcjxUPihwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2U8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgcHdyOiBQYXJ0aWFsPFByb21pc2VXaXRoUmVzb2x2ZXJzPHZvaWQ+PiA9IHByb21pc2VbYmFycmllclN5bV0gPz8ge307XG4gICAgaWYgKCEoJ3Byb21pc2UnIGluIHB3cikpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwd3IsIHByb21pc2VXaXRoUmVzb2x2ZXJzPHZvaWQ+KCkpO1xuICAgIH1cbiAgICBpZiAocHJvbWlzZVtiYXJyaWVyU3ltXSA9PSBudWxsKSB7XG4gICAgICAgIHB3ci5yZXNvbHZlISgpO1xuICAgICAgICBwcm9taXNlW2JhcnJpZXJTeW1dID0gcHdyO1xuICAgIH1cbiAgICByZXR1cm4gcHdyLnByb21pc2UhO1xufVxuXG4vLyBQb2x5ZmlsbCBQcm9taXNlLndpdGhSZXNvbHZlcnMuXG5sZXQgcHJvbWlzZVdpdGhSZXNvbHZlcnMgPSBQcm9taXNlLndpdGhSZXNvbHZlcnM7XG5pZiAocHJvbWlzZVdpdGhSZXNvbHZlcnMgJiYgdHlwZW9mIHByb21pc2VXaXRoUmVzb2x2ZXJzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcHJvbWlzZVdpdGhSZXNvbHZlcnMgPSBwcm9taXNlV2l0aFJlc29sdmVycy5iaW5kKFByb21pc2UpO1xufSBlbHNlIHtcbiAgICBwcm9taXNlV2l0aFJlc29sdmVycyA9IGZ1bmN0aW9uIDxUPigpOiBQcm9taXNlV2l0aFJlc29sdmVyczxUPiB7XG4gICAgICAgIGxldCByZXNvbHZlITogKHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQ7XG4gICAgICAgIGxldCByZWplY3QhOiAocmVhc29uPzogYW55KSA9PiB2b2lkO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8VD4oKHJlcywgcmVqKSA9PiB7IHJlc29sdmUgPSByZXM7IHJlamVjdCA9IHJlajsgfSk7XG4gICAgICAgIHJldHVybiB7IHByb21pc2UsIHJlc29sdmUsIHJlamVjdCB9O1xuICAgIH1cbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHtuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lc30gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5DbGlwYm9hcmQpO1xuXG5jb25zdCBDbGlwYm9hcmRTZXRUZXh0ID0gMDtcbmNvbnN0IENsaXBib2FyZFRleHQgPSAxO1xuXG4vKipcbiAqIFNldHMgdGhlIHRleHQgdG8gdGhlIENsaXBib2FyZC5cbiAqXG4gKiBAcGFyYW0gdGV4dCAtIFRoZSB0ZXh0IHRvIGJlIHNldCB0byB0aGUgQ2xpcGJvYXJkLlxuICogQHJldHVybiBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgc3VjY2Vzc2Z1bC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFNldFRleHQodGV4dDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGNhbGwoQ2xpcGJvYXJkU2V0VGV4dCwge3RleHR9KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIENsaXBib2FyZCB0ZXh0XG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdGV4dCBmcm9tIHRoZSBDbGlwYm9hcmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGNhbGwoQ2xpcGJvYXJkVGV4dCk7XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2l6ZSB7XG4gICAgLyoqIFRoZSB3aWR0aCBvZiBhIHJlY3Rhbmd1bGFyIGFyZWEuICovXG4gICAgV2lkdGg6IG51bWJlcjtcbiAgICAvKiogVGhlIGhlaWdodCBvZiBhIHJlY3Rhbmd1bGFyIGFyZWEuICovXG4gICAgSGVpZ2h0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjdCB7XG4gICAgLyoqIFRoZSBYIGNvb3JkaW5hdGUgb2YgdGhlIG9yaWdpbi4gKi9cbiAgICBYOiBudW1iZXI7XG4gICAgLyoqIFRoZSBZIGNvb3JkaW5hdGUgb2YgdGhlIG9yaWdpbi4gKi9cbiAgICBZOiBudW1iZXI7XG4gICAgLyoqIFRoZSB3aWR0aCBvZiB0aGUgcmVjdGFuZ2xlLiAqL1xuICAgIFdpZHRoOiBudW1iZXI7XG4gICAgLyoqIFRoZSBoZWlnaHQgb2YgdGhlIHJlY3RhbmdsZS4gKi9cbiAgICBIZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3JlZW4ge1xuICAgIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHNjcmVlbi4gKi9cbiAgICBJRDogc3RyaW5nO1xuICAgIC8qKiBIdW1hbi1yZWFkYWJsZSBuYW1lIG9mIHRoZSBzY3JlZW4uICovXG4gICAgTmFtZTogc3RyaW5nO1xuICAgIC8qKiBUaGUgc2NhbGUgZmFjdG9yIG9mIHRoZSBzY3JlZW4gKERQSS85NikuIDEgPSBzdGFuZGFyZCBEUEksIDIgPSBIaURQSSAoUmV0aW5hKSwgZXRjLiAqL1xuICAgIFNjYWxlRmFjdG9yOiBudW1iZXI7XG4gICAgLyoqIFRoZSBYIGNvb3JkaW5hdGUgb2YgdGhlIHNjcmVlbi4gKi9cbiAgICBYOiBudW1iZXI7XG4gICAgLyoqIFRoZSBZIGNvb3JkaW5hdGUgb2YgdGhlIHNjcmVlbi4gKi9cbiAgICBZOiBudW1iZXI7XG4gICAgLyoqIENvbnRhaW5zIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBzY3JlZW4uICovXG4gICAgU2l6ZTogU2l6ZTtcbiAgICAvKiogQ29udGFpbnMgdGhlIGJvdW5kcyBvZiB0aGUgc2NyZWVuIGluIHRlcm1zIG9mIFgsIFksIFdpZHRoLCBhbmQgSGVpZ2h0LiAqL1xuICAgIEJvdW5kczogUmVjdDtcbiAgICAvKiogQ29udGFpbnMgdGhlIHBoeXNpY2FsIGJvdW5kcyBvZiB0aGUgc2NyZWVuIGluIHRlcm1zIG9mIFgsIFksIFdpZHRoLCBhbmQgSGVpZ2h0IChiZWZvcmUgc2NhbGluZykuICovXG4gICAgUGh5c2ljYWxCb3VuZHM6IFJlY3Q7XG4gICAgLyoqIENvbnRhaW5zIHRoZSBhcmVhIG9mIHRoZSBzY3JlZW4gdGhhdCBpcyBhY3R1YWxseSB1c2FibGUgKGV4Y2x1ZGluZyB0YXNrYmFyIGFuZCBvdGhlciBzeXN0ZW0gVUkpLiAqL1xuICAgIFdvcmtBcmVhOiBSZWN0O1xuICAgIC8qKiBDb250YWlucyB0aGUgcGh5c2ljYWwgV29ya0FyZWEgb2YgdGhlIHNjcmVlbiAoYmVmb3JlIHNjYWxpbmcpLiAqL1xuICAgIFBoeXNpY2FsV29ya0FyZWE6IFJlY3Q7XG4gICAgLyoqIFRydWUgaWYgdGhpcyBpcyB0aGUgcHJpbWFyeSBtb25pdG9yIHNlbGVjdGVkIGJ5IHRoZSB1c2VyIGluIHRoZSBvcGVyYXRpbmcgc3lzdGVtLiAqL1xuICAgIElzUHJpbWFyeTogYm9vbGVhbjtcbiAgICAvKiogVGhlIHJvdGF0aW9uIG9mIHRoZSBzY3JlZW4uICovXG4gICAgUm90YXRpb246IG51bWJlcjtcbn1cblxuaW1wb3J0IHsgbmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXMgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5TY3JlZW5zKTtcblxuY29uc3QgZ2V0QWxsID0gMDtcbmNvbnN0IGdldFByaW1hcnkgPSAxO1xuY29uc3QgZ2V0Q3VycmVudCA9IDI7XG5jb25zdCBnZXRCeUlEID0gMztcbmNvbnN0IGdldEJ5SW5kZXggPSA0O1xuXG4vKipcbiAqIEdldHMgYWxsIHNjcmVlbnMuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXJyYXkgb2YgU2NyZWVuIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBHZXRBbGwoKTogUHJvbWlzZTxTY3JlZW5bXT4ge1xuICAgIHJldHVybiBjYWxsKGdldEFsbCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgcHJpbWFyeSBzY3JlZW4uXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHByaW1hcnkgc2NyZWVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gR2V0UHJpbWFyeSgpOiBQcm9taXNlPFNjcmVlbj4ge1xuICAgIHJldHVybiBjYWxsKGdldFByaW1hcnkpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGN1cnJlbnQgYWN0aXZlIHNjcmVlbi5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBjdXJyZW50IGFjdGl2ZSBzY3JlZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBHZXRDdXJyZW50KCk6IFByb21pc2U8U2NyZWVuPiB7XG4gICAgcmV0dXJuIGNhbGwoZ2V0Q3VycmVudCk7XG59XG5cbi8qKlxuICogR2V0cyBhIHNjcmVlbiBieSBpdHMgdW5pcXVlIGRpc3BsYXkgSUQuXG4gKlxuICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBzY3JlZW4uXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbWF0Y2hpbmcgU2NyZWVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gR2V0QnlJRChpZDogc3RyaW5nKTogUHJvbWlzZTxTY3JlZW4+IHtcbiAgICByZXR1cm4gY2FsbChnZXRCeUlELCB7IGlkIH0pO1xufVxuXG4vKipcbiAqIEdldHMgYSBzY3JlZW4gYnkgaXRzIGluZGV4IGluIHRoZSBzY3JlZW4gbGlzdC5cbiAqXG4gKiBAcGFyYW0gaW5kZXggLSBUaGUgemVyby1iYXNlZCBpbmRleCBvZiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG1hdGNoaW5nIFNjcmVlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldEJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IFByb21pc2U8U2NyZWVuPiB7XG4gICAgcmV0dXJuIGNhbGwoZ2V0QnlJbmRleCwgeyBpbmRleCB9KTtcbn1cbiIsICIvKlxuIF8gICAgIF9fICAgICBfIF9fXG58IHwgIC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHsgbmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXMgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLklPUyk7XG5cbi8vIE1ldGhvZCBJRHNcbmNvbnN0IEhhcHRpY3NJbXBhY3QgPSAwO1xuY29uc3QgRGV2aWNlSW5mbyA9IDE7XG5cbmV4cG9ydCBuYW1lc3BhY2UgSGFwdGljcyB7XG4gICAgZXhwb3J0IHR5cGUgSW1wYWN0U3R5bGUgPSBcImxpZ2h0XCJ8XCJtZWRpdW1cInxcImhlYXZ5XCJ8XCJzb2Z0XCJ8XCJyaWdpZFwiO1xuICAgIGV4cG9ydCBmdW5jdGlvbiBJbXBhY3Qoc3R5bGU6IEltcGFjdFN0eWxlID0gXCJtZWRpdW1cIik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gY2FsbChIYXB0aWNzSW1wYWN0LCB7IHN0eWxlIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBEZXZpY2Uge1xuICAgIGV4cG9ydCBpbnRlcmZhY2UgSW5mbyB7XG4gICAgICAgIG1vZGVsOiBzdHJpbmc7XG4gICAgICAgIHN5c3RlbU5hbWU6IHN0cmluZztcbiAgICAgICAgc3lzdGVtVmVyc2lvbjogc3RyaW5nO1xuICAgICAgICBpc1NpbXVsYXRvcjogYm9vbGVhbjtcbiAgICB9XG4gICAgZXhwb3J0IGZ1bmN0aW9uIEluZm8oKTogUHJvbWlzZTxJbmZvPiB7XG4gICAgICAgIHJldHVybiBjYWxsKERldmljZUluZm8pO1xuICAgIH1cbn1cbiIsICIvKlxuIF8gICAgIF9fICAgICBfIF9fXG58IHwgIC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHsgbmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXMgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkFuZHJvaWQpO1xuXG4vLyBNZXRob2QgSURzIChtdXN0IG1hdGNoIG1lc3NhZ2Vwcm9jZXNzb3JfYW5kcm9pZC5nbylcbmNvbnN0IEhhcHRpY3NWaWJyYXRlID0gMDtcbmNvbnN0IERldmljZUluZm8gPSAxO1xuY29uc3QgVG9hc3RTaG93ID0gMjtcblxuZXhwb3J0IG5hbWVzcGFjZSBIYXB0aWNzIHtcbiAgICAvKiogVmlicmF0ZSB0aGUgZGV2aWNlIGZvciB0aGUgZ2l2ZW4gZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBWaWJyYXRlKGR1cmF0aW9uTXM6IG51bWJlciA9IDEwMCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gY2FsbChIYXB0aWNzVmlicmF0ZSwgeyBkdXJhdGlvbjogZHVyYXRpb25NcyB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgRGV2aWNlIHtcbiAgICBleHBvcnQgaW50ZXJmYWNlIEluZm8ge1xuICAgICAgICBwbGF0Zm9ybTogc3RyaW5nO1xuICAgICAgICBtYW51ZmFjdHVyZXI6IHN0cmluZztcbiAgICAgICAgYnJhbmQ6IHN0cmluZztcbiAgICAgICAgbW9kZWw6IHN0cmluZztcbiAgICAgICAgZGV2aWNlOiBzdHJpbmc7XG4gICAgICAgIHZlcnNpb246IHN0cmluZztcbiAgICAgICAgc2RrSW50OiBudW1iZXI7XG4gICAgfVxuICAgIC8qKiBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIEFuZHJvaWQgZGV2aWNlLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBJbmZvKCk6IFByb21pc2U8SW5mbz4ge1xuICAgICAgICByZXR1cm4gY2FsbChEZXZpY2VJbmZvKTtcbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgVG9hc3Qge1xuICAgIC8qKiBTaG93IGEgc2hvcnQgQW5kcm9pZCB0b2FzdCBtZXNzYWdlLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBTaG93KG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gY2FsbChUb2FzdFNob3csIHsgbWVzc2FnZSB9KTtcbiAgICB9XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbi8qKlxuICogVXBkYXRlciBldmVudCBuYW1lIGNvbnN0YW50cy5cbiAqXG4gKiBVc2UgdGhlc2UgaW5zdGVhZCBvZiBoYXJkLWNvZGluZyBzdHJpbmcgbGl0ZXJhbHMgd2hlbiBzdWJzY3JpYmluZyB0b1xuICogdXBkYXRlciBldmVudHMgZnJvbSBKYXZhU2NyaXB0OlxuICpcbiAqICAgICBpbXBvcnQgeyBFdmVudHMsIFVwZGF0ZXIgfSBmcm9tIFwiQHdhaWxzaW8vcnVudGltZVwiO1xuICpcbiAqICAgICBFdmVudHMuT24oVXBkYXRlci5FdmVudHMuVXBkYXRlQXZhaWxhYmxlLCAoZSkgPT4ge1xuICogICAgICAgICBjb25zb2xlLmxvZyhcInVwZGF0ZSBmb3VuZDpcIiwgZS5kYXRhLnZlcnNpb24pO1xuICogICAgIH0pO1xuICpcbiAqICAgICBFdmVudHMuT24oVXBkYXRlci5FdmVudHMuRG93bmxvYWRQcm9ncmVzcywgKGUpID0+IHtcbiAqICAgICAgICAgY29uc3QgcCA9IGUuZGF0YTtcbiAqICAgICAgICAgY29uc29sZS5sb2coYCR7cC53cml0dGVufSAvICR7cC50b3RhbH0gYnl0ZXNgKTtcbiAqICAgICB9KTtcbiAqXG4gKiBNaXJyb3JzIHRoZSBHby1zaWRlIGNvbnN0YW50cyBpbiBgcGtnL3VwZGF0ZXIvZXZlbnRzLmdvYCBhbmQgdGhlXG4gKiB1c2VyLWFjdGlvbiBjb25zdGFudHMgaW4gYHBrZy91cGRhdGVyL3dpbmRvd19saWZlY3ljbGUuZ29gLiBBbnlcbiAqIGNoYW5nZXMgaGVyZSBtdXN0IHN0YXkgaW4gc3luYyB3aXRoIHRob3NlIGZpbGVzIFx1MjAxNCB0aGVyZSdzIGFuXG4gKiBpbnRlZ3JhdGlvbiB0ZXN0IHRoYXQgYXNzZXJ0cyB0aGUgc3RyaW5ncyBtYXRjaC5cbiAqL1xuZXhwb3J0IGNvbnN0IEV2ZW50cyA9IE9iamVjdC5mcmVlemUoe1xuICAgIC8qKiBBIENoZWNrIHJvdW5kLXRyaXAgaXMgc3RhcnRpbmcuIFBheWxvYWQ6IG51bGwuICovXG4gICAgQ2hlY2tTdGFydGVkOiBcIndhaWxzOnVwZGF0ZXI6Y2hlY2stc3RhcnRlZFwiLFxuICAgIC8qKiBDaGVjayBmb3VuZCBhIG5ld2VyIHJlbGVhc2UuIFBheWxvYWQ6IFJlbGVhc2UuICovXG4gICAgVXBkYXRlQXZhaWxhYmxlOiBcIndhaWxzOnVwZGF0ZXI6dXBkYXRlLWF2YWlsYWJsZVwiLFxuICAgIC8qKiBDaGVjayBjb25maXJtZWQgdGhlIGNhbGxlciBpcyB1cCB0byBkYXRlLiBQYXlsb2FkOiBudWxsLiAqL1xuICAgIE5vVXBkYXRlOiBcIndhaWxzOnVwZGF0ZXI6bm8tdXBkYXRlXCIsXG4gICAgLyoqIERvd25sb2FkIGlzIHN0YXJ0aW5nLiBQYXlsb2FkOiBSZWxlYXNlLiAqL1xuICAgIERvd25sb2FkU3RhcnRlZDogXCJ3YWlsczp1cGRhdGVyOmRvd25sb2FkLXN0YXJ0ZWRcIixcbiAgICAvKiogUGVyaW9kaWMgcHJvZ3Jlc3MgdGljayBkdXJpbmcgZG93bmxvYWQgKH4xMCBIeikuIFBheWxvYWQ6IFByb2dyZXNzLiAqL1xuICAgIERvd25sb2FkUHJvZ3Jlc3M6IFwid2FpbHM6dXBkYXRlcjpkb3dubG9hZC1wcm9ncmVzc1wiLFxuICAgIC8qKiBBbGwgYnl0ZXMgYXJlIG9uIGRpc2ssIGJ1dCB2ZXJpZmljYXRpb24gaGFzIG5vdCB5ZXQgc3RhcnRlZC4gUGF5bG9hZDogUmVsZWFzZS4gKi9cbiAgICBEb3dubG9hZENvbXBsZXRlOiBcIndhaWxzOnVwZGF0ZXI6ZG93bmxvYWQtY29tcGxldGVcIixcbiAgICAvKiogU2lnbmF0dXJlIC8gZGlnZXN0IHZlcmlmaWNhdGlvbiBoYXMgc3RhcnRlZC4gUGF5bG9hZDogUmVsZWFzZS4gKi9cbiAgICBWZXJpZnlpbmc6IFwid2FpbHM6dXBkYXRlcjp2ZXJpZnlpbmdcIixcbiAgICAvKiogVGhlIFVwZGF0ZXIgaXMgc3dhcHBpbmcgdGhlIGJpbmFyeSBpbnRvIHBsYWNlLiBQYXlsb2FkOiBSZWxlYXNlLiAqL1xuICAgIEluc3RhbGxpbmc6IFwid2FpbHM6dXBkYXRlcjppbnN0YWxsaW5nXCIsXG4gICAgLyoqIFVwZGF0ZSBpcyBzdGFnZWQgYW5kIGEgcmVzdGFydCBpcyBwZW5kaW5nLiBQYXlsb2FkOiBSZWxlYXNlLiAqL1xuICAgIFVwZGF0ZVJlYWR5OiBcIndhaWxzOnVwZGF0ZXI6dXBkYXRlLXJlYWR5XCIsXG4gICAgLyoqIFNvbWV0aGluZyBmYWlsZWQuIFBheWxvYWQ6IEVycm9ySW5mbyB7IHN0YWdlLCBtZXNzYWdlLCBwcm92aWRlciB9LiAqL1xuICAgIEVycm9yOiBcIndhaWxzOnVwZGF0ZXI6ZXJyb3JcIixcbiAgICAvKiogSG9zdC1zaWRlIGNvbnRleHQgZGVsaXZlcmVkIG9uY2UgcGVyIHNlc3Npb24uIFBheWxvYWQ6IE1ldGEgeyBjdXJyZW50VmVyc2lvbiwgc2tpcHBlZFZlcnNpb24gfS4gKi9cbiAgICBNZXRhOiBcIndhaWxzOnVwZGF0ZXI6bWV0YVwiLFxuXG4gICAgLyoqIFN1Yi1uYW1lc3BhY2U6IHVzZXItYWN0aW9uIGV2ZW50cyB0aGF0IHRoZSBVSSBlbWl0cyBCQUNLIHRvIHRoZSBob3N0LiAqL1xuICAgIFVzZXI6IE9iamVjdC5mcmVlemUoe1xuICAgICAgICAvKiogVXNlciBjbGlja2VkIEluc3RhbGwgb24gYW4gQXZhaWxhYmxlIHVwZGF0ZS4gKi9cbiAgICAgICAgSW5zdGFsbDogXCJ3YWlsczp1cGRhdGVyOnVzZXI6aW5zdGFsbFwiLFxuICAgICAgICAvKiogVXNlciBjbGlja2VkIFJlc3RhcnQgJiBBcHBseSBvbiBhIFJlYWR5IHVwZGF0ZS4gKi9cbiAgICAgICAgUmVzdGFydDogXCJ3YWlsczp1cGRhdGVyOnVzZXI6cmVzdGFydFwiLFxuICAgICAgICAvKiogVXNlciBjbGlja2VkIFNraXAgVGhpcyBWZXJzaW9uLiAqL1xuICAgICAgICBTa2lwOiBcIndhaWxzOnVwZGF0ZXI6dXNlcjpza2lwXCIsXG4gICAgICAgIC8qKiBVc2VyIGNsaWNrZWQgUmVtaW5kIE1lIExhdGVyLiAqL1xuICAgICAgICBSZW1pbmQ6IFwid2FpbHM6dXBkYXRlcjp1c2VyOnJlbWluZFwiLFxuICAgICAgICAvKiogVXNlciBjbGlja2VkIENsb3NlIC8gQ2FuY2VsLiAqL1xuICAgICAgICBDYW5jZWw6IFwid2FpbHM6dXBkYXRlcjp1c2VyOmNhbmNlbFwiLFxuICAgIH0pLFxuXG4gICAgLyoqIFN1Yi1uYW1lc3BhY2U6IGZyYW1ld29yay1pbnRlcm5hbCBldmVudHMgdGhlIFVJIGVtaXRzIHRvIGNvb3JkaW5hdGVcbiAgICAgKiAgd2l0aCB0aGUgaG9zdC4gTW9zdCBhcHAgY29kZSBjYW4gaWdub3JlIHRoZXNlLiAqL1xuICAgIFdpbmRvdzogT2JqZWN0LmZyZWV6ZSh7XG4gICAgICAgIC8qKiBUaGUgd2luZG93IGZpbmlzaGVkIGxvYWRpbmcgYW5kIGFza3MgdGhlIGhvc3QgdG8gcmVwbGF5IGN1cnJlbnQgc3RhdGUuICovXG4gICAgICAgIFJlYWR5OiBcIndhaWxzOnVwZGF0ZXI6d2luZG93OnJlYWR5XCIsXG4gICAgfSksXG59KTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQTtBQUFBO0FBQUE7QUFBQTs7O0FDNkJBLElBQU0sY0FDRjtBQUVHLFNBQVMsT0FBTyxPQUFlLElBQVk7QUFDOUMsTUFBSSxLQUFLO0FBRVQsTUFBSSxJQUFJLE9BQU87QUFDZixTQUFPLEtBQUs7QUFFUixVQUFNLFlBQWEsS0FBSyxPQUFPLElBQUksS0FBTSxDQUFDO0FBQUEsRUFDOUM7QUFDQSxTQUFPO0FBQ1g7OztBQ3hCTyxJQUFNLFNBQVMsT0FBTyxXQUFXLGVBQWUsT0FBTyxhQUFhOzs7QUNGM0UsU0FBUyxhQUFxQjtBQUMxQixTQUFPLE9BQU8sU0FBUyxTQUFTO0FBQ3BDO0FBR0Es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QUFBQSxFQUlELFFBQVEsT0FBTyxPQUFPO0FBQUE7QUFBQSxJQUVsQixPQUFPO0FBQUEsRUFDWCxDQUFDO0FBQ0wsQ0FBQzs7O0ExQi9ERCxJQUFJLFFBQVE7QUFDUixTQUFPLFNBQVMsT0FBTyxVQUFVLENBQUM7QUFDdEM7QUE0REEsSUFBSSxRQUFRO0FBQ1IsU0FBTyxPQUFPLFNBQWdCO0FBQzlCLFNBQU8sT0FBTyxXQUFXO0FBQzdCO0FBS0EsSUFBSSxRQUFRO0FBQ1IsU0FBTyxPQUFPLHlCQUF5QixlQUFPLHVCQUF1QixLQUFLLGNBQU07QUFDcEY7QUFHQSxJQUFJLFFBQVE7QUFDUixTQUFPLE9BQU8sa0JBQWtCO0FBQ2hDLFNBQU8sT0FBTyxrQkFBa0I7QUFDaEMsU0FBTyxPQUFPLGlCQUFpQjtBQUNuQztBQUVBLElBQUksUUFBUTtBQUNSLEVBQU8sT0FBTyxxQkFBcUI7QUFDdkM7QUFPTyxTQUFTLG1CQUFtQixLQUE0QjtBQUMzRCxTQUFPLE1BQU0sS0FBSyxFQUFFLFFBQVEsT0FBTyxDQUFDLEVBQy9CLEtBQUssY0FBWTtBQUNkLFFBQUksU0FBUyxJQUFJO0FBR2IsWUFBTSxlQUFlLFNBQVMsUUFBUSxJQUFJLGNBQWMsS0FBSyxJQUFJLFlBQVk7QUFDN0UsVUFBSSxZQUFZLFNBQVMsWUFBWSxHQUFHO0FBQ3BDLGNBQU0sU0FBUyxTQUFTLGNBQWMsUUFBUTtBQUM5QyxlQUFPLE1BQU07QUFDYixpQkFBUyxLQUFLLFlBQVksTUFBTTtBQUFBLE1BQ3BDO0FBQUEsSUFDSjtBQUFBLEVBQ0osQ0FBQyxFQUNBLE1BQU0sTUFBTTtBQUFBLEVBQUMsQ0FBQztBQUN2QjtBQUdBLElBQUksUUFBUTtBQUNSLHFCQUFtQixrQkFBa0I7QUFDekM7IiwKICAibmFtZXMiOiBbIl9hIiwgIkVycm9yIiwgImNhbGwiLCAiRXJyb3IiLCAiX2EiLCAiQXJyYXkiLCAiTWFwIiwgIkFycmF5IiwgIk1hcCIsICJrZXkiLCAiY2FsbCIsICJfYSIsICJfYSIsICJyZXNpemFibGUiLCAiX2EiLCAiY2FsbCIsICJfYSIsICJjYWxsIiwgIl9hIiwgImNhbGwiLCAiSGlkZU1ldGhvZCIsICJTaG93TWV0aG9kIiwgImlzRG9jdW1lbnREb3RBbGwiLCAiX2EiLCAicmVhc29uIiwgInZhbHVlIiwgImNhbGwiLCAiY2FsbCIsICJjYWxsIiwgImNhbGwiLCAiSGFwdGljcyIsICJEZXZpY2UiLCAiSW5mbyIsICJEZXZpY2UiLCAiSGFwdGljcyIsICJjYWxsIiwgIkRldmljZUluZm8iLCAiSGFwdGljcyIsICJEZXZpY2UiLCAiSW5mbyIsICJUb2FzdCIsICJTaG93IiwgIkV2ZW50cyIsICJFdmVudHMiXQp9Cg== +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2luZGV4LnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy93bWwudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2Jyb3dzZXIudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL25hbm9pZC50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvZW52aXJvbm1lbnQudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3J1bnRpbWUudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2RpYWxvZ3MudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2V2ZW50cy50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvbGlzdGVuZXIudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2NyZWF0ZS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvZXZlbnRfdHlwZXMudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3V0aWxzLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy93aW5kb3cudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL2NvbXBpbGVkL21haW4uanMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3N5c3RlbS50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY29udGV4dG1lbnUudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2ZsYWdzLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9kcmFnLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9hcHByZWdpb24udHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2FwcGxpY2F0aW9uLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9jYWxscy50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvY2FsbGFibGUudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2NhbmNlbGxhYmxlLnRzIiwgIi4uLy4uL3J1bnRpbWUvZGVza3RvcC9Ad2FpbHNpby9ydW50aW1lL3NyYy9jbGlwYm9hcmQudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3NjcmVlbnMudHMiLCAiLi4vLi4vcnVudGltZS9kZXNrdG9wL0B3YWlsc2lvL3J1bnRpbWUvc3JjL2lvcy50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvYW5kcm9pZC50cyIsICIuLi8uLi9ydW50aW1lL2Rlc2t0b3AvQHdhaWxzaW8vcnVudGltZS9zcmMvdXBkYXRlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbi8vIFNldHVwXG5pbXBvcnQgeyBoYXNET00gfSBmcm9tIFwiLi9lbnZpcm9ubWVudC5qc1wiO1xuXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscyA9IHdpbmRvdy5fd2FpbHMgfHwge307XG59XG5cbmltcG9ydCBcIi4vY29udGV4dG1lbnUuanNcIjtcbmltcG9ydCBcIi4vZHJhZy5qc1wiO1xuaW1wb3J0IFwiLi9hcHByZWdpb24uanNcIjtcblxuLy8gUmUtZXhwb3J0IHB1YmxpYyBBUElcbmltcG9ydCAqIGFzIEFwcGxpY2F0aW9uIGZyb20gXCIuL2FwcGxpY2F0aW9uLmpzXCI7XG5pbXBvcnQgKiBhcyBCcm93c2VyIGZyb20gXCIuL2Jyb3dzZXIuanNcIjtcbmltcG9ydCAqIGFzIENhbGwgZnJvbSBcIi4vY2FsbHMuanNcIjtcbmltcG9ydCAqIGFzIENsaXBib2FyZCBmcm9tIFwiLi9jbGlwYm9hcmQuanNcIjtcbmltcG9ydCAqIGFzIENyZWF0ZSBmcm9tIFwiLi9jcmVhdGUuanNcIjtcbmltcG9ydCAqIGFzIERpYWxvZ3MgZnJvbSBcIi4vZGlhbG9ncy5qc1wiO1xuaW1wb3J0ICogYXMgRXZlbnRzIGZyb20gXCIuL2V2ZW50cy5qc1wiO1xuaW1wb3J0ICogYXMgRmxhZ3MgZnJvbSBcIi4vZmxhZ3MuanNcIjtcbmltcG9ydCAqIGFzIFNjcmVlbnMgZnJvbSBcIi4vc2NyZWVucy5qc1wiO1xuaW1wb3J0ICogYXMgU3lzdGVtIGZyb20gXCIuL3N5c3RlbS5qc1wiO1xuaW1wb3J0ICogYXMgSU9TIGZyb20gXCIuL2lvcy5qc1wiO1xuaW1wb3J0ICogYXMgQW5kcm9pZCBmcm9tIFwiLi9hbmRyb2lkLmpzXCI7XG5pbXBvcnQgKiBhcyBVcGRhdGVyIGZyb20gXCIuL3VwZGF0ZXIuanNcIjtcbmltcG9ydCBXaW5kb3csIHsgaGFuZGxlRHJhZ0VudGVyLCBoYW5kbGVEcmFnTGVhdmUsIGhhbmRsZURyYWdPdmVyIH0gZnJvbSBcIi4vd2luZG93LmpzXCI7XG5pbXBvcnQgKiBhcyBXTUwgZnJvbSBcIi4vd21sLmpzXCI7XG5cbmV4cG9ydCB7XG4gICAgQXBwbGljYXRpb24sXG4gICAgQnJvd3NlcixcbiAgICBDYWxsLFxuICAgIENsaXBib2FyZCxcbiAgICBEaWFsb2dzLFxuICAgIEV2ZW50cyxcbiAgICBGbGFncyxcbiAgICBTY3JlZW5zLFxuICAgIFN5c3RlbSxcbiAgICBJT1MsXG4gICAgQW5kcm9pZCxcbiAgICBVcGRhdGVyLFxuICAgIFdpbmRvdyxcbiAgICBXTUxcbn07XG5cbi8qKlxuICogQW4gaW50ZXJuYWwgdXRpbGl0eSBjb25zdW1lZCBieSB0aGUgYmluZGluZyBnZW5lcmF0b3IuXG4gKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgeyBDcmVhdGUgfTtcblxuZXhwb3J0ICogZnJvbSBcIi4vY2FuY2VsbGFibGUuanNcIjtcblxuLy8gRXhwb3J0IHRyYW5zcG9ydCBpbnRlcmZhY2VzIGFuZCB1dGlsaXRpZXNcbmV4cG9ydCB7XG4gICAgc2V0VHJhbnNwb3J0LFxuICAgIGdldFRyYW5zcG9ydCxcbiAgICB0eXBlIFJ1bnRpbWVUcmFuc3BvcnQsXG4gICAgb2JqZWN0TmFtZXMsXG4gICAgY2xpZW50SWQsXG59IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcblxuaW1wb3J0IHsgY2xpZW50SWQgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbi8vIE5vdGlmeSBiYWNrZW5kXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5pbnZva2UgPSBTeXN0ZW0uaW52b2tlO1xuICAgIHdpbmRvdy5fd2FpbHMuY2xpZW50SWQgPSBjbGllbnRJZDtcbn1cblxuLy8gUmVnaXN0ZXIgcGxhdGZvcm0gaGFuZGxlcnMgKGludGVybmFsIEFQSSlcbi8vIE5vdGU6IFdpbmRvdyBpcyB0aGUgdGhpc1dpbmRvdyBpbnN0YW5jZSAoZGVmYXVsdCBleHBvcnQgZnJvbSB3aW5kb3cudHMpXG4vLyBCaW5kaW5nIGVuc3VyZXMgJ3RoaXMnIGNvcnJlY3RseSByZWZlcnMgdG8gdGhlIGN1cnJlbnQgd2luZG93IGluc3RhbmNlXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVQbGF0Zm9ybUZpbGVEcm9wID0gV2luZG93LkhhbmRsZVBsYXRmb3JtRmlsZURyb3AuYmluZChXaW5kb3cpO1xufVxuXG4vLyBMaW51eC1zcGVjaWZpYyBkcmFnIGhhbmRsZXJzIChHVEsgaW50ZXJjZXB0cyBET00gZHJhZyBldmVudHMpXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnRW50ZXIgPSBoYW5kbGVEcmFnRW50ZXI7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnTGVhdmUgPSBoYW5kbGVEcmFnTGVhdmU7XG4gICAgd2luZG93Ll93YWlscy5oYW5kbGVEcmFnT3ZlciA9IGhhbmRsZURyYWdPdmVyO1xufVxuXG5pZiAoaGFzRE9NKSB7XG4gICAgU3lzdGVtLmludm9rZShcIndhaWxzOnJ1bnRpbWU6cmVhZHlcIik7XG59XG5cbi8qKlxuICogTG9hZHMgYSBzY3JpcHQgZnJvbSB0aGUgZ2l2ZW4gVVJMIGlmIGl0IGV4aXN0cy5cbiAqIFVzZXMgSEVBRCByZXF1ZXN0IHRvIGNoZWNrIGV4aXN0ZW5jZSwgdGhlbiBpbmplY3RzIGEgc2NyaXB0IHRhZy5cbiAqIFNpbGVudGx5IGlnbm9yZXMgaWYgdGhlIHNjcmlwdCBkb2Vzbid0IGV4aXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZE9wdGlvbmFsU2NyaXB0KHVybDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZldGNoKHVybCwgeyBtZXRob2Q6ICdIRUFEJyB9KVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICAvLyBWZXJpZnkgdGhlIHJlc3BvbnNlIGlzIGFjdHVhbGx5IEphdmFTY3JpcHQgYW5kIG5vdCBhbiBIVE1MIGZhbGxiYWNrXG4gICAgICAgICAgICAgICAgLy8gKGUuZy4gVml0ZSBkZXYgc2VydmVyIHJldHVybnMgaW5kZXguaHRtbCBmb3IgdW5rbm93biByb3V0ZXMpXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFR5cGUgPSAocmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZS5pbmNsdWRlcygnamF2YXNjcmlwdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHQuc3JjID0gdXJsO1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4ge30pOyAvLyBTaWxlbnRseSBpZ25vcmUgLSBzY3JpcHQgaXMgb3B0aW9uYWxcbn1cblxuLy8gTG9hZCBjdXN0b20uanMgaWYgYXZhaWxhYmxlICh1c2VkIGJ5IHNlcnZlciBtb2RlIGZvciBXZWJTb2NrZXQgZXZlbnRzLCBldGMuKVxuaWYgKGhhc0RPTSkge1xuICAgIGxvYWRPcHRpb25hbFNjcmlwdCgnL3dhaWxzL2N1c3RvbS5qcycpO1xufVxuIiwgIi8qXG4gXyAgICAgX18gICAgIF8gX19cbnwgfCAgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBPcGVuVVJMIH0gZnJvbSBcIi4vYnJvd3Nlci5qc1wiO1xuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tIFwiLi9kaWFsb2dzLmpzXCI7XG5pbXBvcnQgeyBFbWl0IH0gZnJvbSBcIi4vZXZlbnRzLmpzXCI7XG5pbXBvcnQgeyBjYW5BYm9ydExpc3RlbmVycywgd2hlblJlYWR5IH0gZnJvbSBcIi4vdXRpbHMuanNcIjtcbmltcG9ydCBXaW5kb3cgZnJvbSBcIi4vd2luZG93LmpzXCI7XG5cbi8qKlxuICogU2VuZHMgYW4gZXZlbnQgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBhbmQgb3B0aW9uYWwgZGF0YS5cbiAqXG4gKiBAcGFyYW0gZXZlbnROYW1lIC0gLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQgdG8gc2VuZC5cbiAqIEBwYXJhbSBbZGF0YT1udWxsXSAtIC0gT3B0aW9uYWwgZGF0YSB0byBzZW5kIGFsb25nIHdpdGggdGhlIGV2ZW50LlxuICovXG5mdW5jdGlvbiBzZW5kRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIGRhdGE6IGFueSA9IG51bGwpOiB2b2lkIHtcbiAgICBFbWl0KGV2ZW50TmFtZSwgZGF0YSk7XG59XG5cbi8qKlxuICogQ2FsbHMgYSBtZXRob2Qgb24gYSBzcGVjaWZpZWQgd2luZG93LlxuICpcbiAqIEBwYXJhbSB3aW5kb3dOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHdpbmRvdyB0byBjYWxsIHRoZSBtZXRob2Qgb24uXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QgdG8gY2FsbC5cbiAqL1xuZnVuY3Rpb24gY2FsbFdpbmRvd01ldGhvZCh3aW5kb3dOYW1lOiBzdHJpbmcsIG1ldGhvZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRhcmdldFdpbmRvdyA9IFdpbmRvdy5HZXQod2luZG93TmFtZSk7XG4gICAgY29uc3QgbWV0aG9kID0gKHRhcmdldFdpbmRvdyBhcyBhbnkpW21ldGhvZE5hbWVdO1xuXG4gICAgaWYgKHR5cGVvZiBtZXRob2QgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBXaW5kb3cgbWV0aG9kICcke21ldGhvZE5hbWV9JyBub3QgZm91bmRgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIG1ldGhvZC5jYWxsKHRhcmdldFdpbmRvdyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBjYWxsaW5nIHdpbmRvdyBtZXRob2QgJyR7bWV0aG9kTmFtZX0nOiBgLCBlKTtcbiAgICB9XG59XG5cbi8qKlxuICogUmVzcG9uZHMgdG8gYSB0cmlnZ2VyaW5nIGV2ZW50IGJ5IHJ1bm5pbmcgYXBwcm9wcmlhdGUgV01MIGFjdGlvbnMgZm9yIHRoZSBjdXJyZW50IHRhcmdldC5cbiAqL1xuZnVuY3Rpb24gb25XTUxUcmlnZ2VyZWQoZXY6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IGV2LmN1cnJlbnRUYXJnZXQgYXMgRWxlbWVudDtcblxuICAgIGZ1bmN0aW9uIHJ1bkVmZmVjdChjaG9pY2UgPSBcIlllc1wiKSB7XG4gICAgICAgIGlmIChjaG9pY2UgIT09IFwiWWVzXCIpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZXZlbnRUeXBlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3dtbC1ldmVudCcpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXdtbC1ldmVudCcpO1xuICAgICAgICBjb25zdCB0YXJnZXRXaW5kb3cgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLXRhcmdldC13aW5kb3cnKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtdGFyZ2V0LXdpbmRvdycpIHx8IFwiXCI7XG4gICAgICAgIGNvbnN0IHdpbmRvd01ldGhvZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd3bWwtd2luZG93JykgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtd21sLXdpbmRvdycpO1xuICAgICAgICBjb25zdCB1cmwgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLW9wZW51cmwnKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtb3BlbnVybCcpO1xuXG4gICAgICAgIGlmIChldmVudFR5cGUgIT09IG51bGwpXG4gICAgICAgICAgICBzZW5kRXZlbnQoZXZlbnRUeXBlKTtcbiAgICAgICAgaWYgKHdpbmRvd01ldGhvZCAhPT0gbnVsbClcbiAgICAgICAgICAgIGNhbGxXaW5kb3dNZXRob2QodGFyZ2V0V2luZG93LCB3aW5kb3dNZXRob2QpO1xuICAgICAgICBpZiAodXJsICE9PSBudWxsKVxuICAgICAgICAgICAgdm9pZCBPcGVuVVJMKHVybCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlybSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd3bWwtY29uZmlybScpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXdtbC1jb25maXJtJyk7XG5cbiAgICBpZiAoY29uZmlybSkge1xuICAgICAgICBRdWVzdGlvbih7XG4gICAgICAgICAgICBUaXRsZTogXCJDb25maXJtXCIsXG4gICAgICAgICAgICBNZXNzYWdlOiBjb25maXJtLFxuICAgICAgICAgICAgRGV0YWNoZWQ6IGZhbHNlLFxuICAgICAgICAgICAgQnV0dG9uczogW1xuICAgICAgICAgICAgICAgIHsgTGFiZWw6IFwiWWVzXCIgfSxcbiAgICAgICAgICAgICAgICB7IExhYmVsOiBcIk5vXCIsIElzRGVmYXVsdDogdHJ1ZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0pLnRoZW4ocnVuRWZmZWN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBydW5FZmZlY3QoKTtcbiAgICB9XG59XG5cbi8vIFByaXZhdGUgZmllbGQgbmFtZXMuXG5jb25zdCBjb250cm9sbGVyU3ltID0gU3ltYm9sKFwiY29udHJvbGxlclwiKTtcbmNvbnN0IHRyaWdnZXJNYXBTeW0gPSBTeW1ib2woXCJ0cmlnZ2VyTWFwXCIpO1xuY29uc3QgZWxlbWVudENvdW50U3ltID0gU3ltYm9sKFwiZWxlbWVudENvdW50XCIpO1xuXG4vKipcbiAqIEFib3J0Q29udHJvbGxlclJlZ2lzdHJ5IGRvZXMgbm90IGFjdHVhbGx5IHJlbWVtYmVyIGFjdGl2ZSBldmVudCBsaXN0ZW5lcnM6IGluc3RlYWRcbiAqIGl0IHRpZXMgdGhlbSB0byBhbiBBYm9ydFNpZ25hbCBhbmQgdXNlcyBhbiBBYm9ydENvbnRyb2xsZXIgdG8gcmVtb3ZlIHRoZW0gYWxsIGF0IG9uY2UuXG4gKi9cbmNsYXNzIEFib3J0Q29udHJvbGxlclJlZ2lzdHJ5IHtcbiAgICAvLyBQcml2YXRlIGZpZWxkcy5cbiAgICBbY29udHJvbGxlclN5bV06IEFib3J0Q29udHJvbGxlcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzW2NvbnRyb2xsZXJTeW1dID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gb3B0aW9ucyBvYmplY3QgZm9yIGFkZEV2ZW50TGlzdGVuZXIgdGhhdCB0aWVzIHRoZSBsaXN0ZW5lclxuICAgICAqIHRvIHRoZSBBYm9ydFNpZ25hbCBmcm9tIHRoZSBjdXJyZW50IEFib3J0Q29udHJvbGxlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbGVtZW50IC0gQW4gSFRNTCBlbGVtZW50XG4gICAgICogQHBhcmFtIHRyaWdnZXJzIC0gVGhlIGxpc3Qgb2YgYWN0aXZlIFdNTCB0cmlnZ2VyIGV2ZW50cyBmb3IgdGhlIHNwZWNpZmllZCBlbGVtZW50c1xuICAgICAqL1xuICAgIHNldChlbGVtZW50OiBFbGVtZW50LCB0cmlnZ2Vyczogc3RyaW5nW10pOiBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB7IHNpZ25hbDogdGhpc1tjb250cm9sbGVyU3ltXS5zaWduYWwgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCByZWdpc3RlcmVkIGV2ZW50IGxpc3RlbmVycyBhbmQgcmVzZXRzIHRoZSByZWdpc3RyeS5cbiAgICAgKi9cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpc1tjb250cm9sbGVyU3ltXS5hYm9ydCgpO1xuICAgICAgICB0aGlzW2NvbnRyb2xsZXJTeW1dID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBXZWFrTWFwUmVnaXN0cnkgbWFwcyBhY3RpdmUgdHJpZ2dlciBldmVudHMgdG8gZWFjaCBET00gZWxlbWVudCB0aHJvdWdoIGEgV2Vha01hcC5cbiAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBtYXBwaW5nIHJlbWFpbnMgcHJpdmF0ZSB0byB0aGlzIG1vZHVsZSwgd2hpbGUgc3RpbGwgYWxsb3dpbmcgZ2FyYmFnZVxuICogY29sbGVjdGlvbiBvZiB0aGUgaW52b2x2ZWQgZWxlbWVudHMuXG4gKi9cbmNsYXNzIFdlYWtNYXBSZWdpc3RyeSB7XG4gICAgLyoqIFN0b3JlcyB0aGUgY3VycmVudCBlbGVtZW50LXRvLXRyaWdnZXIgbWFwcGluZy4gKi9cbiAgICBbdHJpZ2dlck1hcFN5bV06IFdlYWtNYXA8RWxlbWVudCwgc3RyaW5nW10+O1xuICAgIC8qKiBDb3VudHMgdGhlIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIGFjdGl2ZSBXTUwgdHJpZ2dlcnMuICovXG4gICAgW2VsZW1lbnRDb3VudFN5bV06IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzW3RyaWdnZXJNYXBTeW1dID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgICAgdGhpc1tlbGVtZW50Q291bnRTeW1dID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGFjdGl2ZSB0cmlnZ2VycyBmb3IgdGhlIHNwZWNpZmllZCBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIGVsZW1lbnQgLSBBbiBIVE1MIGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gdHJpZ2dlcnMgLSBUaGUgbGlzdCBvZiBhY3RpdmUgV01MIHRyaWdnZXIgZXZlbnRzIGZvciB0aGUgc3BlY2lmaWVkIGVsZW1lbnRcbiAgICAgKi9cbiAgICBzZXQoZWxlbWVudDogRWxlbWVudCwgdHJpZ2dlcnM6IHN0cmluZ1tdKTogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMge1xuICAgICAgICBpZiAoIXRoaXNbdHJpZ2dlck1hcFN5bV0uaGFzKGVsZW1lbnQpKSB7IHRoaXNbZWxlbWVudENvdW50U3ltXSsrOyB9XG4gICAgICAgIHRoaXNbdHJpZ2dlck1hcFN5bV0uc2V0KGVsZW1lbnQsIHRyaWdnZXJzKTtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIHJlZ2lzdGVyZWQgZXZlbnQgbGlzdGVuZXJzLlxuICAgICAqL1xuICAgIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpc1tlbGVtZW50Q291bnRTeW1dIDw9IDApXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgnKicpKSB7XG4gICAgICAgICAgICBpZiAodGhpc1tlbGVtZW50Q291bnRTeW1dIDw9IDApXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJzID0gdGhpc1t0cmlnZ2VyTWFwU3ltXS5nZXQoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAodHJpZ2dlcnMgIT0gbnVsbCkgeyB0aGlzW2VsZW1lbnRDb3VudFN5bV0tLTsgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMgfHwgW10pXG4gICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHRyaWdnZXIsIG9uV01MVHJpZ2dlcmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXNbdHJpZ2dlck1hcFN5bV0gPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICB0aGlzW2VsZW1lbnRDb3VudFN5bV0gPSAwO1xuICAgIH1cbn1cblxuY29uc3QgdHJpZ2dlclJlZ2lzdHJ5ID0gY2FuQWJvcnRMaXN0ZW5lcnMoKSA/IG5ldyBBYm9ydENvbnRyb2xsZXJSZWdpc3RyeSgpIDogbmV3IFdlYWtNYXBSZWdpc3RyeSgpO1xuXG4vKipcbiAqIEFkZHMgZXZlbnQgbGlzdGVuZXJzIHRvIHRoZSBzcGVjaWZpZWQgZWxlbWVudC5cbiAqL1xuZnVuY3Rpb24gYWRkV01MTGlzdGVuZXJzKGVsZW1lbnQ6IEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0cmlnZ2VyUmVnRXhwID0gL1xcUysvZztcbiAgICBjb25zdCB0cmlnZ2VyQXR0ciA9IChlbGVtZW50LmdldEF0dHJpYnV0ZSgnd21sLXRyaWdnZXInKSB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS13bWwtdHJpZ2dlcicpIHx8IFwiY2xpY2tcIik7XG4gICAgY29uc3QgdHJpZ2dlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBsZXQgbWF0Y2g7XG4gICAgd2hpbGUgKChtYXRjaCA9IHRyaWdnZXJSZWdFeHAuZXhlYyh0cmlnZ2VyQXR0cikpICE9PSBudWxsKVxuICAgICAgICB0cmlnZ2Vycy5wdXNoKG1hdGNoWzBdKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB0cmlnZ2VyUmVnaXN0cnkuc2V0KGVsZW1lbnQsIHRyaWdnZXJzKTtcbiAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMpXG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0cmlnZ2VyLCBvbldNTFRyaWdnZXJlZCwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogU2NoZWR1bGVzIGFuIGF1dG9tYXRpYyByZWxvYWQgb2YgV01MIHRvIGJlIHBlcmZvcm1lZCBhcyBzb29uIGFzIHRoZSBkb2N1bWVudCBpcyBmdWxseSBsb2FkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbmFibGUoKTogdm9pZCB7XG4gICAgd2hlblJlYWR5KFJlbG9hZCk7XG59XG5cbi8qKlxuICogUmVsb2FkcyB0aGUgV01MIHBhZ2UgYnkgYWRkaW5nIG5lY2Vzc2FyeSBldmVudCBsaXN0ZW5lcnMgYW5kIGJyb3dzZXIgbGlzdGVuZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gUmVsb2FkKCk6IHZvaWQge1xuICAgIHRyaWdnZXJSZWdpc3RyeS5yZXNldCgpO1xuICAgIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgnW3dtbC1ldmVudF0sIFt3bWwtd2luZG93XSwgW3dtbC1vcGVudXJsXSwgW2RhdGEtd21sLWV2ZW50XSwgW2RhdGEtd21sLXdpbmRvd10sIFtkYXRhLXdtbC1vcGVudXJsXScpLmZvckVhY2goYWRkV01MTGlzdGVuZXJzKTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHsgbmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXMgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkJyb3dzZXIpO1xuXG5jb25zdCBCcm93c2VyT3BlblVSTCA9IDA7XG5cbi8qKlxuICogT3BlbiBhIGJyb3dzZXIgd2luZG93IHRvIHRoZSBnaXZlbiBVUkwuXG4gKlxuICogQHBhcmFtIHVybCAtIFRoZSBVUkwgdG8gb3BlblxuICovXG5leHBvcnQgZnVuY3Rpb24gT3BlblVSTCh1cmw6IHN0cmluZyB8IFVSTCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBjYWxsKEJyb3dzZXJPcGVuVVJMLCB7dXJsOiB1cmwudG9TdHJpbmcoKX0pO1xufVxuIiwgIi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2FpL25hbm9pZFxuXG4vLyBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbi8vXG4vLyBDb3B5cmlnaHQgMjAxNyBBbmRyZXkgU2l0bmlrIDxhbmRyZXlAc2l0bmlrLnJ1PlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2Zcbi8vIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW5cbi8vIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG9cbi8vIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mXG4vLyB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sXG4vLyAgICAgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gICAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuLy8gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyAgICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1Ncbi8vIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUlxuLy8gQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSXG4vLyBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTlxuLy8gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gVGhpcyBhbHBoYWJldCB1c2VzIGBBLVphLXowLTlfLWAgc3ltYm9scy5cbi8vIFRoZSBvcmRlciBvZiBjaGFyYWN0ZXJzIGlzIG9wdGltaXplZCBmb3IgYmV0dGVyIGd6aXAgYW5kIGJyb3RsaSBjb21wcmVzc2lvbi5cbi8vIFJlZmVyZW5jZXMgdG8gdGhlIHNhbWUgZmlsZSAod29ya3MgYm90aCBmb3IgZ3ppcCBhbmQgYnJvdGxpKTpcbi8vIGAndXNlYCwgYGFuZG9tYCwgYW5kIGByaWN0J2Bcbi8vIFJlZmVyZW5jZXMgdG8gdGhlIGJyb3RsaSBkZWZhdWx0IGRpY3Rpb25hcnk6XG4vLyBgLTI2VGAsIGAxOTgzYCwgYDQwcHhgLCBgNzVweGAsIGBidXNoYCwgYGphY2tgLCBgbWluZGAsIGB2ZXJ5YCwgYW5kIGB3b2xmYFxuY29uc3QgdXJsQWxwaGFiZXQgPVxuICAgICd1c2VhbmRvbS0yNlQxOTgzNDBQWDc1cHhKQUNLVkVSWU1JTkRCVVNIV09MRl9HUVpiZmdoamtscXZ3eXpyaWN0J1xuXG5leHBvcnQgZnVuY3Rpb24gbmFub2lkKHNpemU6IG51bWJlciA9IDIxKTogc3RyaW5nIHtcbiAgICBsZXQgaWQgPSAnJ1xuICAgIC8vIEEgY29tcGFjdCBhbHRlcm5hdGl2ZSBmb3IgYGZvciAodmFyIGkgPSAwOyBpIDwgc3RlcDsgaSsrKWAuXG4gICAgbGV0IGkgPSBzaXplIHwgMFxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgLy8gYHwgMGAgaXMgbW9yZSBjb21wYWN0IGFuZCBmYXN0ZXIgdGhhbiBgTWF0aC5mbG9vcigpYC5cbiAgICAgICAgaWQgKz0gdXJsQWxwaGFiZXRbKE1hdGgucmFuZG9tKCkgKiA2NCkgfCAwXVxuICAgIH1cbiAgICByZXR1cm4gaWRcbn1cbiIsICIvKlxuIF8gICAgIF9fICAgICBfIF9fXG58IHwgIC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLyoqXG4gKiBUcnVlIHdoZW4gcnVubmluZyBpbnNpZGUgYSBicm93c2VyL3dlYnZpZXcgd2l0aCBhIERPTSBhdmFpbGFibGUuXG4gKiBGYWxzZSB1bmRlciBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgKGUuZy4gYG5leHQgYnVpbGRgIHByZXJlbmRlcmluZyksXG4gKiB3aGVyZSBhcHBsaWNhdGlvbiBjb2RlIG1heSBpbXBvcnQgdGhlIHJ1bnRpbWUgbW9kdWxlIGV2ZW4gdGhvdWdoIG5vXG4gKiBXYWlscyBBUElzIGNhbiBhY3R1YWxseSBiZSB1c2VkICgjNDY3OSkuIE1vZHVsZXMgbXVzdCBub3QgdG91Y2hcbiAqIGB3aW5kb3dgL2Bkb2N1bWVudGAgYXQgaW1wb3J0IHRpbWUgZXhjZXB0IGJlaGluZCB0aGlzIGd1YXJkLlxuICovXG5leHBvcnQgY29uc3QgaGFzRE9NID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCI7XG4iLCAiLypcbiBfICAgICBfXyAgICAgXyBfX1xufCB8ICAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gXCIuL25hbm9pZC5qc1wiO1xuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuLy8gUmVzb2x2ZWQgbGF6aWx5OiB3aW5kb3cgZG9lcyBub3QgZXhpc3Qgd2hlbiB0aGUgbW9kdWxlIGlzIGltcG9ydGVkIGR1cmluZ1xuLy8gc2VydmVyLXNpZGUgcmVuZGVyaW5nICgjNDY3OSksIGFuZCBub3RoaW5nIGNhbiBjYWxsIHRoZSBydW50aW1lIHRoZXJlLlxuZnVuY3Rpb24gcnVudGltZVVSTCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgXCIvd2FpbHMvcnVudGltZVwiO1xufVxuXG4vLyBTdGF5IHVuZGVyIFdlYlZpZXcyJ3MgfjJNQiByZXF1ZXN0IGJvZHkgYnVmZmVyaW5nIGxpbWl0IGluIFdlYlJlc291cmNlUmVxdWVzdGVkLlxuY29uc3QgQ0hVTktfVEhSRVNIT0xEID0gNTEyICogMTAyNDtcblxuLy8gUmUtZXhwb3J0IG5hbm9pZCBmb3IgY3VzdG9tIHRyYW5zcG9ydCBpbXBsZW1lbnRhdGlvbnNcbmV4cG9ydCB7IG5hbm9pZCB9O1xuXG50eXBlIENhbGxFcnJvclR5cGUgPSB7XG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGNhdXNlPzogdW5rbm93bixcbiAgICBraW5kOiBcIlJlZmVyZW5jZUVycm9yXCIgfCBcIlR5cGVFcnJvclwiIHwgXCJSdW50aW1lRXJyb3JcIlxufVxuXG4vKipcbiAqIEV4Y2VwdGlvbiBjbGFzcyB0aGF0IHdpbGwgYmUgdGhyb3duIGluIGNhc2UgdGhlIGJvdW5kIG1ldGhvZCByZXR1cm5zIGFuIGVycm9yLlxuICogVGhlIHZhbHVlIG9mIHRoZSB7QGxpbmsgUnVudGltZUVycm9yI25hbWV9IHByb3BlcnR5IGlzIFwiUnVudGltZUVycm9yXCIuXG4gKi9cbmV4cG9ydCBjbGFzcyBSdW50aW1lRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBSdW50aW1lRXJyb3IgaW5zdGFuY2UuXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgdG8gYmUgZm9yd2FyZGVkIHRvIHRoZSBFcnJvciBjb25zdHJ1Y3Rvci5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nLCBvcHRpb25zPzogRXJyb3JPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UsIG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIlJ1bnRpbWVFcnJvclwiO1xuICAgIH1cbn1cblxuLy8gT2JqZWN0IE5hbWVzXG5leHBvcnQgY29uc3Qgb2JqZWN0TmFtZXMgPSBPYmplY3QuZnJlZXplKHtcbiAgICBDYWxsOiAwLFxuICAgIENsaXBib2FyZDogMSxcbiAgICBBcHBsaWNhdGlvbjogMixcbiAgICBFdmVudHM6IDMsXG4gICAgQ29udGV4dE1lbnU6IDQsXG4gICAgRGlhbG9nOiA1LFxuICAgIFdpbmRvdzogNixcbiAgICBTY3JlZW5zOiA3LFxuICAgIFN5c3RlbTogOCxcbiAgICBCcm93c2VyOiA5LFxuICAgIENhbmNlbENhbGw6IDEwLFxuICAgIElPUzogMTEsXG4gICAgQW5kcm9pZDogMTIsXG59KTtcbmV4cG9ydCBsZXQgY2xpZW50SWQgPSBuYW5vaWQoKTtcblxuLyoqXG4gKiBSdW50aW1lVHJhbnNwb3J0IGRlZmluZXMgdGhlIGludGVyZmFjZSBmb3IgY3VzdG9tIElQQyB0cmFuc3BvcnQgaW1wbGVtZW50YXRpb25zLlxuICogSW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIHRvIHVzZSBXZWJTb2NrZXRzLCBjdXN0b20gcHJvdG9jb2xzLCBvciBhbnkgb3RoZXJcbiAqIHRyYW5zcG9ydCBtZWNoYW5pc20gaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBIVFRQIGZldGNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bnRpbWVUcmFuc3BvcnQge1xuICAgIC8qKlxuICAgICAqIFNlbmQgYSBydW50aW1lIGNhbGwgYW5kIHJldHVybiB0aGUgcmVzcG9uc2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2JqZWN0SUQgLSBUaGUgV2FpbHMgb2JqZWN0IElEICgwPUNhbGwsIDE9Q2xpcGJvYXJkLCBldGMuKVxuICAgICAqIEBwYXJhbSBtZXRob2QgLSBUaGUgbWV0aG9kIElEIHRvIGNhbGxcbiAgICAgKiBAcGFyYW0gd2luZG93TmFtZSAtIE9wdGlvbmFsIHdpbmRvdyBuYW1lXG4gICAgICogQHBhcmFtIGFyZ3MgLSBBcmd1bWVudHMgdG8gcGFzcyAod2lsbCBiZSBKU09OIHN0cmluZ2lmaWVkIGlmIHByZXNlbnQpXG4gICAgICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3BvbnNlIGRhdGFcbiAgICAgKi9cbiAgICBjYWxsKG9iamVjdElEOiBudW1iZXIsIG1ldGhvZDogbnVtYmVyLCB3aW5kb3dOYW1lOiBzdHJpbmcsIGFyZ3M6IGFueSk6IFByb21pc2U8YW55Pjtcbn1cblxuLyoqXG4gKiBDdXN0b20gdHJhbnNwb3J0IGltcGxlbWVudGF0aW9uIChjYW4gYmUgc2V0IGJ5IHVzZXIpXG4gKi9cbmxldCBjdXN0b21UcmFuc3BvcnQ6IFJ1bnRpbWVUcmFuc3BvcnQgfCBudWxsID0gbnVsbDtcblxuLyoqXG4gKiBTZXQgYSBjdXN0b20gdHJhbnNwb3J0IGZvciBhbGwgV2FpbHMgcnVudGltZSBjYWxscy5cbiAqIFRoaXMgYWxsb3dzIHlvdSB0byByZXBsYWNlIHRoZSBkZWZhdWx0IEhUVFAgZmV0Y2ggdHJhbnNwb3J0IHdpdGhcbiAqIFdlYlNvY2tldHMsIGN1c3RvbSBwcm90b2NvbHMsIG9yIGFueSBvdGhlciBtZWNoYW5pc20uXG4gKlxuICogQHBhcmFtIHRyYW5zcG9ydCAtIFlvdXIgY3VzdG9tIHRyYW5zcG9ydCBpbXBsZW1lbnRhdGlvblxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBzZXRUcmFuc3BvcnQgfSBmcm9tICcvd2FpbHMvcnVudGltZS5qcyc7XG4gKlxuICogY29uc3Qgd3NUcmFuc3BvcnQgPSB7XG4gKiAgIGNhbGw6IGFzeW5jIChvYmplY3RJRCwgbWV0aG9kLCB3aW5kb3dOYW1lLCBhcmdzKSA9PiB7XG4gKiAgICAgLy8gWW91ciBXZWJTb2NrZXQgaW1wbGVtZW50YXRpb25cbiAqICAgfVxuICogfTtcbiAqXG4gKiBzZXRUcmFuc3BvcnQod3NUcmFuc3BvcnQpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRUcmFuc3BvcnQodHJhbnNwb3J0OiBSdW50aW1lVHJhbnNwb3J0IHwgbnVsbCk6IHZvaWQge1xuICAgIGN1c3RvbVRyYW5zcG9ydCA9IHRyYW5zcG9ydDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGN1cnJlbnQgdHJhbnNwb3J0ICh1c2VmdWwgZm9yIGV4dGVuZGluZy93cmFwcGluZylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zcG9ydCgpOiBSdW50aW1lVHJhbnNwb3J0IHwgbnVsbCB7XG4gICAgcmV0dXJuIGN1c3RvbVRyYW5zcG9ydDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHJ1bnRpbWUgY2FsbGVyIHdpdGggc3BlY2lmaWVkIElELlxuICpcbiAqIEBwYXJhbSBvYmplY3QgLSBUaGUgb2JqZWN0IHRvIGludm9rZSB0aGUgbWV0aG9kIG9uLlxuICogQHBhcmFtIHdpbmRvd05hbWUgLSBUaGUgbmFtZSBvZiB0aGUgd2luZG93LlxuICogQHJldHVybiBUaGUgbmV3IHJ1bnRpbWUgY2FsbGVyIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV3UnVudGltZUNhbGxlcihvYmplY3Q6IG51bWJlciwgd2luZG93TmFtZTogc3RyaW5nID0gJycpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG1ldGhvZDogbnVtYmVyLCBhcmdzOiBhbnkgPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBydW50aW1lQ2FsbFdpdGhJRChvYmplY3QsIG1ldGhvZCwgd2luZG93TmFtZSwgYXJncyk7XG4gICAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVudGltZUNhbGxXaXRoSUQob2JqZWN0SUQ6IG51bWJlciwgbWV0aG9kOiBudW1iZXIsIHdpbmRvd05hbWU6IHN0cmluZywgYXJnczogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyBVc2UgY3VzdG9tIHRyYW5zcG9ydCBpZiBhdmFpbGFibGVcbiAgICBpZiAoY3VzdG9tVHJhbnNwb3J0KSB7XG4gICAgICAgIHJldHVybiBjdXN0b21UcmFuc3BvcnQuY2FsbChvYmplY3RJRCwgbWV0aG9kLCB3aW5kb3dOYW1lLCBhcmdzKTtcbiAgICB9XG5cbiAgICAvLyBEZWZhdWx0IEhUVFAgZmV0Y2ggdHJhbnNwb3J0XG4gICAgbGV0IHVybCA9IG5ldyBVUkwocnVudGltZVVSTCgpKTtcblxuICAgIGxldCBib2R5OiB7IG9iamVjdDogbnVtYmVyOyBtZXRob2Q6IG51bWJlciwgYXJncz86IGFueSB9ID0ge1xuICAgICAgb2JqZWN0OiBvYmplY3RJRCxcbiAgICAgIG1ldGhvZFxuICAgIH1cbiAgICBpZiAoYXJncyAhPT0gbnVsbCAmJiBhcmdzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGJvZHkuYXJncyA9IGFyZ3M7XG4gICAgfVxuXG4gICAgbGV0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgIFtcIngtd2FpbHMtY2xpZW50LWlkXCJdOiBjbGllbnRJZCxcbiAgICAgICAgW1wiQ29udGVudC1UeXBlXCJdOiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgIH1cbiAgICBpZiAod2luZG93TmFtZSkge1xuICAgICAgICBoZWFkZXJzW1wieC13YWlscy13aW5kb3ctbmFtZVwiXSA9IHdpbmRvd05hbWU7XG4gICAgfVxuXG4gICAgY29uc3QgYm9keVN0ciA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgIGxldCByZXNwb25zZTogUmVzcG9uc2U7XG4gICAgaWYgKGJvZHlTdHIubGVuZ3RoID4gQ0hVTktfVEhSRVNIT0xEKSB7XG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgc2VuZENodW5rZWQodXJsLCBoZWFkZXJzLCBib2R5U3RyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgeyBtZXRob2Q6ICdQT1NUJywgaGVhZGVycywgYm9keTogYm9keVN0ciB9KTtcbiAgICB9XG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgY29uc3QgY3QgPSByZXNwb25zZS5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKTtcbiAgICAgIGlmIChjdD8uaW5jbHVkZXMoXCJhcHBsaWNhdGlvbi9qc29uXCIpKSB7XG4gICAgICAgICAgY29uc3QganNvbjogQ2FsbEVycm9yVHlwZSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICAgICAgICBsZXQgZXJyO1xuICAgICAgICAgIHN3aXRjaCAoanNvbi5raW5kKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJSZWZlcmVuY2VFcnJvclwiOiBlcnIgPSBuZXcgUmVmZXJlbmNlRXJyb3IoanNvbi5tZXNzYWdlKTsgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJUeXBlRXJyb3JcIjogICAgICBlcnIgPSBuZXcgVHlwZUVycm9yKGpzb24ubWVzc2FnZSk7IGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiUnVudGltZUVycm9yXCI6ICAgZXJyID0gbmV3IFJ1bnRpbWVFcnJvcihqc29uLm1lc3NhZ2UpOyBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICBlcnIgPSBuZXcgRXJyb3IoanNvbi5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXJyLmNhdXNlID0ganNvbi5jYXVzZTtcbiAgICAgICAgICB0aHJvdyBlcnJcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihhd2FpdCByZXNwb25zZS50ZXh0KCkpO1xuICAgIH1cblxuICAgIGlmICgocmVzcG9uc2UuaGVhZGVycy5nZXQoXCJDb250ZW50LVR5cGVcIik/LmluZGV4T2YoXCJhcHBsaWNhdGlvbi9qc29uXCIpID8/IC0xKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpO1xuICAgIH1cbn1cblxuLy8gc2VuZENodW5rZWQgc3BsaXRzIGEgbGFyZ2Ugc2VyaWFsaXNlZCByZXF1ZXN0IGJvZHkgaW50byBDSFVOS19USFJFU0hPTEQtc2l6ZWRcbi8vIGJ5dGUgY2h1bmtzIGFuZCBzZW5kcyB0aGVtIHNlcmlhbGx5LiAgRW5jb2RpbmcgdG8gVVRGLTggYnl0ZXMgYmVmb3JlIHNsaWNpbmdcbi8vIHByZXZlbnRzIGNvcnJ1cHRpb24gb2Ygbm9uLUJNUCBjaGFyYWN0ZXJzIChzdXJyb2dhdGUgcGFpcnMpIHRoYXQgd291bGQgb2NjdXJcbi8vIHdoZW4gc3BsaXR0aW5nIGF0IEphdmFTY3JpcHQgc3RyaW5nIGluZGljZXMuICBUaGUgR28gdHJhbnNwb3J0IGFzc2VtYmxlcyB0aGVcbi8vIHJhdyBieXRlcyBiZWZvcmUgcHJvY2Vzc2luZy4gIE9ubHkgdGhlIGZpbmFsIGNodW5rJ3MgcmVzcG9uc2UgY2FycmllcyB0aGUgUlBDIHJlc3VsdC5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRDaHVua2VkKHVybDogVVJMLCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBib2R5U3RyOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgY2h1bmtJZCA9IG5hbm9pZCgpO1xuICAgIGNvbnN0IGJvZHlCeXRlcyA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShib2R5U3RyKTtcbiAgICBjb25zdCB0b3RhbENodW5rcyA9IE1hdGguY2VpbChib2R5Qnl0ZXMubGVuZ3RoIC8gQ0hVTktfVEhSRVNIT0xEKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG90YWxDaHVua3MgLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2h1bmsgPSBib2R5Qnl0ZXMuc3ViYXJyYXkoaSAqIENIVU5LX1RIUkVTSE9MRCwgKGkgKyAxKSAqIENIVU5LX1RIUkVTSE9MRCk7XG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgJ3gtd2FpbHMtY2h1bmstaWQnOiBjaHVua0lkLFxuICAgICAgICAgICAgICAgICd4LXdhaWxzLWNodW5rLWluZGV4JzogU3RyaW5nKGkpLFxuICAgICAgICAgICAgICAgICd4LXdhaWxzLWNodW5rLXRvdGFsJzogU3RyaW5nKHRvdGFsQ2h1bmtzKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib2R5OiBjaHVuayxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcmVzcC5vaykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGF3YWl0IHJlc3AudGV4dCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICAgICAgICAneC13YWlscy1jaHVuay1pZCc6IGNodW5rSWQsXG4gICAgICAgICAgICAneC13YWlscy1jaHVuay1pbmRleCc6IFN0cmluZyh0b3RhbENodW5rcyAtIDEpLFxuICAgICAgICAgICAgJ3gtd2FpbHMtY2h1bmstdG90YWwnOiBTdHJpbmcodG90YWxDaHVua3MpLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBib2R5Qnl0ZXMuc3ViYXJyYXkoKHRvdGFsQ2h1bmtzIC0gMSkgKiBDSFVOS19USFJFU0hPTEQpLFxuICAgIH0pO1xufVxuXG4vKipcbiAqIEFuZHJvaWQgV2ViVmlldyBjYW5ub3QgZGVsaXZlciBmZXRjaCgpIFBPU1QgYm9kaWVzIHRvXG4gKiBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0LCBzbyB0aGUgZGVmYXVsdCBIVFRQIHRyYW5zcG9ydCBjYW5ub3QgcmVhY2ggR28uXG4gKiBXaGVuIHRoZSBBbmRyb2lkIEphdmFzY3JpcHRJbnRlcmZhY2UgYnJpZGdlICh3aW5kb3cud2FpbHMpIGlzIHByZXNlbnQsXG4gKiByb3V0ZSBydW50aW1lIGNhbGxzIHRocm91Z2ggaXQgaW5zdGVhZC4gUmVzcG9uc2VzIGFycml2ZSB2aWFcbiAqIHdpbmRvdy5fd2FpbHNBbmRyb2lkQ2FsbGJhY2ssIGludm9rZWQgYnkgdGhlIEphdmEgc2lkZS5cbiAqL1xuaW50ZXJmYWNlIEFuZHJvaWRKU0JyaWRnZSB7XG4gICAgaW52b2tlQXN5bmMoY2FsbGJhY2tJRDogc3RyaW5nLCBwYXlsb2FkOiBzdHJpbmcpOiB2b2lkO1xufVxuXG5jb25zdCBhbmRyb2lkQnJpZGdlOiBBbmRyb2lkSlNCcmlkZ2UgfCBudWxsID0gaGFzRE9NICYmXG4gICAgdHlwZW9mICh3aW5kb3cgYXMgYW55KS53YWlscz8uaW52b2tlQXN5bmMgPT09IFwiZnVuY3Rpb25cIiA/ICh3aW5kb3cgYXMgYW55KS53YWlscyA6IG51bGw7XG5cbmlmIChhbmRyb2lkQnJpZGdlKSB7XG4gICAgY29uc3QgcGVuZGluZyA9IG5ldyBNYXA8c3RyaW5nLCB7IHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkOyByZWplY3Q6IChyZWFzb246IGFueSkgPT4gdm9pZCB9PigpO1xuXG4gICAgKHdpbmRvdyBhcyBhbnkpLl93YWlsc0FuZHJvaWRDYWxsYmFjayA9IChpZDogc3RyaW5nLCByZXNwb25zZTogc3RyaW5nIHwgbnVsbCwgZXJyb3I6IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IHBlbmRpbmcuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFwcm9taXNlKSByZXR1cm47XG4gICAgICAgIHBlbmRpbmcuZGVsZXRlKGlkKTtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdChuZXcgRXJyb3IoZXJyb3IpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZW52ZWxvcGUgPSBKU09OLnBhcnNlKHJlc3BvbnNlID8/IFwie31cIik7XG4gICAgICAgICAgICBpZiAoIWVudmVsb3BlLm9rKSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGVudmVsb3BlLmVycm9yID8/IFwidW5rbm93biBydW50aW1lIGNhbGwgZXJyb3JcIikpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShcInRleHRcIiBpbiBlbnZlbG9wZSA/IGVudmVsb3BlLnRleHQgOiBlbnZlbG9wZS5kYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY3VzdG9tVHJhbnNwb3J0ID0ge1xuICAgICAgICBjYWxsKG9iamVjdElEOiBudW1iZXIsIG1ldGhvZDogbnVtYmVyLCB3aW5kb3dOYW1lOiBzdHJpbmcsIGFyZ3M6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gbmFub2lkKCk7XG4gICAgICAgICAgICAgICAgcGVuZGluZy5zZXQoaWQsIHsgcmVzb2x2ZSwgcmVqZWN0IH0pO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGFuZHJvaWRCcmlkZ2UuaW52b2tlQXN5bmMoaWQsIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogb2JqZWN0SUQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd05hbWU6IHdpbmRvd05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzOiBhcmdzID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWQsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGxlYWsgdGhlIHBlbmRpbmcgZW50cnkgaWYgZGlzcGF0Y2ggdGhyb3dzIHN5bmNocm9ub3VzbHlcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZy5kZWxldGUoaWQpO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHtuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lc30gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG4vLyBzZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xufVxuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5EaWFsb2cpO1xuXG4vLyBEZWZpbmUgY29uc3RhbnRzIGZyb20gdGhlIGBtZXRob2RzYCBvYmplY3QgaW4gVGl0bGUgQ2FzZVxuY29uc3QgRGlhbG9nSW5mbyA9IDA7XG5jb25zdCBEaWFsb2dXYXJuaW5nID0gMTtcbmNvbnN0IERpYWxvZ0Vycm9yID0gMjtcbmNvbnN0IERpYWxvZ1F1ZXN0aW9uID0gMztcbmNvbnN0IERpYWxvZ09wZW5GaWxlID0gNDtcbmNvbnN0IERpYWxvZ1NhdmVGaWxlID0gNTtcblxuZXhwb3J0IGludGVyZmFjZSBPcGVuRmlsZURpYWxvZ09wdGlvbnMge1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZGlyZWN0b3JpZXMgY2FuIGJlIGNob3Nlbi4gKi9cbiAgICBDYW5DaG9vc2VEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBmaWxlcyBjYW4gYmUgY2hvc2VuLiAqL1xuICAgIENhbkNob29zZUZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGRpcmVjdG9yaWVzIGNhbiBiZSBjcmVhdGVkLiAqL1xuICAgIENhbkNyZWF0ZURpcmVjdG9yaWVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGhpZGRlbiBmaWxlcyBzaG91bGQgYmUgc2hvd24uICovXG4gICAgU2hvd0hpZGRlbkZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGFsaWFzZXMgc2hvdWxkIGJlIHJlc29sdmVkLiAqL1xuICAgIFJlc29sdmVzQWxpYXNlcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBtdWx0aXBsZSBzZWxlY3Rpb24gaXMgYWxsb3dlZC4gKi9cbiAgICBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZXh0ZW5zaW9uIHNob3VsZCBiZSBoaWRkZW4uICovXG4gICAgSGlkZUV4dGVuc2lvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBoaWRkZW4gZXh0ZW5zaW9ucyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gICAgQ2FuU2VsZWN0SGlkZGVuRXh0ZW5zaW9uPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGZpbGUgcGFja2FnZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZGlyZWN0b3JpZXMuICovXG4gICAgVHJlYXRzRmlsZVBhY2thZ2VzQXNEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBvdGhlciBmaWxlIHR5cGVzIGFyZSBhbGxvd2VkLiAqL1xuICAgIEFsbG93c090aGVyRmlsZXR5cGVzPzogYm9vbGVhbjtcbiAgICAvKiogQXJyYXkgb2YgZmlsZSBmaWx0ZXJzLiAqL1xuICAgIEZpbHRlcnM/OiBGaWxlRmlsdGVyW107XG4gICAgLyoqIFRpdGxlIG9mIHRoZSBkaWFsb2cuICovXG4gICAgVGl0bGU/OiBzdHJpbmc7XG4gICAgLyoqIE1lc3NhZ2UgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIE1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgLyoqIFRleHQgdG8gZGlzcGxheSBvbiB0aGUgYnV0dG9uLiAqL1xuICAgIEJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gICAgLyoqIERpcmVjdG9yeSB0byBvcGVuIGluIHRoZSBkaWFsb2cuICovXG4gICAgRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGRpYWxvZyBzaG91bGQgYXBwZWFyIGRldGFjaGVkIGZyb20gdGhlIG1haW4gd2luZG93LiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYXZlRmlsZURpYWxvZ09wdGlvbnMge1xuICAgIC8qKiBEZWZhdWx0IGZpbGVuYW1lIHRvIHVzZSBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIEZpbGVuYW1lPzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZGlyZWN0b3JpZXMgY2FuIGJlIGNob3Nlbi4gKi9cbiAgICBDYW5DaG9vc2VEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBmaWxlcyBjYW4gYmUgY2hvc2VuLiAqL1xuICAgIENhbkNob29zZUZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGRpcmVjdG9yaWVzIGNhbiBiZSBjcmVhdGVkLiAqL1xuICAgIENhbkNyZWF0ZURpcmVjdG9yaWVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGhpZGRlbiBmaWxlcyBzaG91bGQgYmUgc2hvd24uICovXG4gICAgU2hvd0hpZGRlbkZpbGVzPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGFsaWFzZXMgc2hvdWxkIGJlIHJlc29sdmVkLiAqL1xuICAgIFJlc29sdmVzQWxpYXNlcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZXh0ZW5zaW9uIHNob3VsZCBiZSBoaWRkZW4uICovXG4gICAgSGlkZUV4dGVuc2lvbj86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBoaWRkZW4gZXh0ZW5zaW9ucyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gICAgQ2FuU2VsZWN0SGlkZGVuRXh0ZW5zaW9uPzogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIGZpbGUgcGFja2FnZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZGlyZWN0b3JpZXMuICovXG4gICAgVHJlYXRzRmlsZVBhY2thZ2VzQXNEaXJlY3Rvcmllcz86IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiBvdGhlciBmaWxlIHR5cGVzIGFyZSBhbGxvd2VkLiAqL1xuICAgIEFsbG93c090aGVyRmlsZXR5cGVzPzogYm9vbGVhbjtcbiAgICAvKiogQXJyYXkgb2YgZmlsZSBmaWx0ZXJzLiAqL1xuICAgIEZpbHRlcnM/OiBGaWxlRmlsdGVyW107XG4gICAgLyoqIFRpdGxlIG9mIHRoZSBkaWFsb2cuICovXG4gICAgVGl0bGU/OiBzdHJpbmc7XG4gICAgLyoqIE1lc3NhZ2UgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIE1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgLyoqIFRleHQgdG8gZGlzcGxheSBvbiB0aGUgYnV0dG9uLiAqL1xuICAgIEJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gICAgLyoqIERpcmVjdG9yeSB0byBvcGVuIGluIHRoZSBkaWFsb2cuICovXG4gICAgRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGRpYWxvZyBzaG91bGQgYXBwZWFyIGRldGFjaGVkIGZyb20gdGhlIG1haW4gd2luZG93LiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlRGlhbG9nT3B0aW9ucyB7XG4gICAgLyoqIFRoZSB0aXRsZSBvZiB0aGUgZGlhbG9nIHdpbmRvdy4gKi9cbiAgICBUaXRsZT86IHN0cmluZztcbiAgICAvKiogVGhlIG1haW4gbWVzc2FnZSB0byBzaG93IGluIHRoZSBkaWFsb2cuICovXG4gICAgTWVzc2FnZT86IHN0cmluZztcbiAgICAvKiogQXJyYXkgb2YgYnV0dG9uIG9wdGlvbnMgdG8gc2hvdyBpbiB0aGUgZGlhbG9nLiAqL1xuICAgIEJ1dHRvbnM/OiBCdXR0b25bXTtcbiAgICAvKiogVHJ1ZSBpZiB0aGUgZGlhbG9nIHNob3VsZCBhcHBlYXIgZGV0YWNoZWQgZnJvbSB0aGUgbWFpbiB3aW5kb3cgKGlmIGFwcGxpY2FibGUpLiAqL1xuICAgIERldGFjaGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b24ge1xuICAgIC8qKiBUZXh0IHRoYXQgYXBwZWFycyB3aXRoaW4gdGhlIGJ1dHRvbi4gKi9cbiAgICBMYWJlbD86IHN0cmluZztcbiAgICAvKiogVHJ1ZSBpZiB0aGUgYnV0dG9uIHNob3VsZCBjYW5jZWwgYW4gb3BlcmF0aW9uIHdoZW4gY2xpY2tlZC4gKi9cbiAgICBJc0NhbmNlbD86IGJvb2xlYW47XG4gICAgLyoqIFRydWUgaWYgdGhlIGJ1dHRvbiBzaG91bGQgYmUgdGhlIGRlZmF1bHQgYWN0aW9uIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBlbnRlci4gKi9cbiAgICBJc0RlZmF1bHQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVGaWx0ZXIge1xuICAgIC8qKiBEaXNwbGF5IG5hbWUgZm9yIHRoZSBmaWx0ZXIsIGl0IGNvdWxkIGJlIFwiVGV4dCBGaWxlc1wiLCBcIkltYWdlc1wiIGV0Yy4gKi9cbiAgICBEaXNwbGF5TmFtZT86IHN0cmluZztcbiAgICAvKiogUGF0dGVybiB0byBtYXRjaCBmb3IgdGhlIGZpbHRlciwgZS5nLiBcIioudHh0OyoubWRcIiBmb3IgdGV4dCBtYXJrZG93biBmaWxlcy4gKi9cbiAgICBQYXR0ZXJuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByZXNlbnRzIGEgZGlhbG9nIG9mIHNwZWNpZmllZCB0eXBlIHdpdGggdGhlIGdpdmVuIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHR5cGUgLSBEaWFsb2cgdHlwZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgdGhlIGRpYWxvZy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggcmVzdWx0IG9mIGRpYWxvZy5cbiAqL1xuZnVuY3Rpb24gZGlhbG9nKHR5cGU6IG51bWJlciwgb3B0aW9uczogTWVzc2FnZURpYWxvZ09wdGlvbnMgfCBPcGVuRmlsZURpYWxvZ09wdGlvbnMgfCBTYXZlRmlsZURpYWxvZ09wdGlvbnMgPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGNhbGwodHlwZSwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogUHJlc2VudHMgYW4gaW5mbyBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9uc1xuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbGFiZWwgb2YgdGhlIGNob3NlbiBidXR0b24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJbmZvKG9wdGlvbnM6IE1lc3NhZ2VEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHsgcmV0dXJuIGRpYWxvZyhEaWFsb2dJbmZvLCBvcHRpb25zKTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgd2FybmluZyBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGxhYmVsIG9mIHRoZSBjaG9zZW4gYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gV2FybmluZyhvcHRpb25zOiBNZXNzYWdlRGlhbG9nT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7IHJldHVybiBkaWFsb2coRGlhbG9nV2FybmluZywgb3B0aW9ucyk7IH1cblxuLyoqXG4gKiBQcmVzZW50cyBhbiBlcnJvciBkaWFsb2cuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGxhYmVsIG9mIHRoZSBjaG9zZW4gYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRXJyb3Iob3B0aW9uczogTWVzc2FnZURpYWxvZ09wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4geyByZXR1cm4gZGlhbG9nKERpYWxvZ0Vycm9yLCBvcHRpb25zKTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgcXVlc3Rpb24gZGlhbG9nLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gRGlhbG9nIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBsYWJlbCBvZiB0aGUgY2hvc2VuIGJ1dHRvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFF1ZXN0aW9uKG9wdGlvbnM6IE1lc3NhZ2VEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHsgcmV0dXJuIGRpYWxvZyhEaWFsb2dRdWVzdGlvbiwgb3B0aW9ucyk7IH1cblxuLyoqXG4gKiBQcmVzZW50cyBhIGZpbGUgc2VsZWN0aW9uIGRpYWxvZyB0byBwaWNrIG9uZSBvciBtb3JlIGZpbGVzIHRvIG9wZW4uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFNlbGVjdGVkIGZpbGUgb3IgbGlzdCBvZiBmaWxlcywgb3IgYSBibGFuayBzdHJpbmcvZW1wdHkgbGlzdCBpZiBubyBmaWxlIGhhcyBiZWVuIHNlbGVjdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zICYgeyBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjogdHJ1ZSB9KTogUHJvbWlzZTxzdHJpbmdbXT47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zICYgeyBBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbj86IGZhbHNlIHwgdW5kZWZpbmVkIH0pOiBQcm9taXNlPHN0cmluZz47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCBzdHJpbmdbXT47XG5leHBvcnQgZnVuY3Rpb24gT3BlbkZpbGUob3B0aW9uczogT3BlbkZpbGVEaWFsb2dPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCBzdHJpbmdbXT4geyByZXR1cm4gZGlhbG9nKERpYWxvZ09wZW5GaWxlLCBvcHRpb25zKSA/PyBbXTsgfVxuXG4vKipcbiAqIFByZXNlbnRzIGEgZmlsZSBzZWxlY3Rpb24gZGlhbG9nIHRvIHBpY2sgYSBmaWxlIHRvIHNhdmUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBEaWFsb2cgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFNlbGVjdGVkIGZpbGUsIG9yIGEgYmxhbmsgc3RyaW5nIGlmIG5vIGZpbGUgaGFzIGJlZW4gc2VsZWN0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTYXZlRmlsZShvcHRpb25zOiBTYXZlRmlsZURpYWxvZ09wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4geyByZXR1cm4gZGlhbG9nKERpYWxvZ1NhdmVGaWxlLCBvcHRpb25zKTsgfVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmltcG9ydCB7IGV2ZW50TGlzdGVuZXJzLCBMaXN0ZW5lciwgbGlzdGVuZXJPZmYgfSBmcm9tIFwiLi9saXN0ZW5lci5qc1wiO1xuaW1wb3J0IHsgRXZlbnRzIGFzIENyZWF0ZSB9IGZyb20gXCIuL2NyZWF0ZS5qc1wiO1xuaW1wb3J0IHsgVHlwZXMgfSBmcm9tIFwiLi9ldmVudF90eXBlcy5qc1wiO1xuXG4vLyBTZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xuICAgIHdpbmRvdy5fd2FpbHMuZGlzcGF0Y2hXYWlsc0V2ZW50ID0gZGlzcGF0Y2hXYWlsc0V2ZW50O1xufVxuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5FdmVudHMpO1xuY29uc3QgRW1pdE1ldGhvZCA9IDA7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2V2ZW50X3R5cGVzLmpzXCI7XG5cbi8qKlxuICogQSB0YWJsZSBvZiBkYXRhIHR5cGVzIGZvciBhbGwga25vd24gZXZlbnRzLlxuICogV2lsbCBiZSBtb25rZXktcGF0Y2hlZCBieSB0aGUgYmluZGluZyBnZW5lcmF0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tRXZlbnRzIHt9XG5cbi8qKlxuICogRWl0aGVyIGEga25vd24gZXZlbnQgbmFtZSBvciBhbiBhcmJpdHJhcnkgc3RyaW5nLlxuICovXG5leHBvcnQgdHlwZSBXYWlsc0V2ZW50TmFtZTxFIGV4dGVuZHMga2V5b2YgQ3VzdG9tRXZlbnRzID0ga2V5b2YgQ3VzdG9tRXZlbnRzPiA9IEUgfCAoc3RyaW5nICYge30pO1xuXG4vKipcbiAqIFVuaW9uIG9mIGFsbCBrbm93biBzeXN0ZW0gZXZlbnQgbmFtZXMuXG4gKi9cbnR5cGUgU3lzdGVtRXZlbnROYW1lID0ge1xuICAgIFtLIGluIGtleW9mICh0eXBlb2YgVHlwZXMpXTogKHR5cGVvZiBUeXBlcylbS11ba2V5b2YgKCh0eXBlb2YgVHlwZXMpW0tdKV1cbn0gZXh0ZW5kcyAoaW5mZXIgTSkgPyBNW2tleW9mIE1dIDogbmV2ZXI7XG5cbi8qKlxuICogVGhlIGRhdGEgdHlwZSBhc3NvY2lhdGVkIHRvIGEgZ2l2ZW4gZXZlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFdhaWxzRXZlbnREYXRhPEUgZXh0ZW5kcyBXYWlsc0V2ZW50TmFtZSA9IFdhaWxzRXZlbnROYW1lPiA9XG4gICAgRSBleHRlbmRzIGtleW9mIEN1c3RvbUV2ZW50cyA/IEN1c3RvbUV2ZW50c1tFXSA6IChFIGV4dGVuZHMgU3lzdGVtRXZlbnROYW1lID8gdm9pZCA6IGFueSk7XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgaGFuZGxlcnMgZm9yIGEgZ2l2ZW4gZXZlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFdhaWxzRXZlbnRDYWxsYmFjazxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4gPSAoZXY6IFdhaWxzRXZlbnQ8RT4pID0+IHZvaWQ7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHN5c3RlbSBldmVudCBvciBhIGN1c3RvbSBldmVudCBlbWl0dGVkIHRocm91Z2ggd2FpbHMtcHJvdmlkZWQgZmFjaWxpdGllcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFdhaWxzRXZlbnQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAgICovXG4gICAgbmFtZTogRTtcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbWl0dGVkIGV2ZW50LlxuICAgICAqL1xuICAgIGRhdGE6IFdhaWxzRXZlbnREYXRhPEU+O1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgb3JpZ2luYXRpbmcgd2luZG93LiBPbWl0dGVkIGZvciBhcHBsaWNhdGlvbiBldmVudHMuXG4gICAgICogV2lsbCBiZSBvdmVycmlkZGVuIGlmIHNldCBtYW51YWxseS5cbiAgICAgKi9cbiAgICBzZW5kZXI/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBFLCBkYXRhOiBXYWlsc0V2ZW50RGF0YTxFPik7XG4gICAgY29uc3RydWN0b3IobmFtZTogV2FpbHNFdmVudERhdGE8RT4gZXh0ZW5kcyBudWxsIHwgdm9pZCA/IEUgOiBuZXZlcilcbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBFLCBkYXRhPzogYW55KSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGEgPz8gbnVsbDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoV2FpbHNFdmVudChldmVudDogYW55KSB7XG4gICAgbGV0IGxpc3RlbmVycyA9IGV2ZW50TGlzdGVuZXJzLmdldChldmVudC5uYW1lKTtcbiAgICBpZiAoIWxpc3RlbmVycykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHdhaWxzRXZlbnQgPSBuZXcgV2FpbHNFdmVudChcbiAgICAgICAgZXZlbnQubmFtZSxcbiAgICAgICAgKGV2ZW50Lm5hbWUgaW4gQ3JlYXRlKSA/IENyZWF0ZVtldmVudC5uYW1lXShldmVudC5kYXRhKSA6IGV2ZW50LmRhdGFcbiAgICApO1xuICAgIGlmICgnc2VuZGVyJyBpbiBldmVudCkge1xuICAgICAgICB3YWlsc0V2ZW50LnNlbmRlciA9IGV2ZW50LnNlbmRlcjtcbiAgICB9XG5cbiAgICAvLyBEaXNwYXRjaCB0byBhIHNuYXBzaG90LCB0aGVuIHJlbW92ZSBhbGwgZXhwaXJlZCBsaXN0ZW5lcnMgaW4gYSBzaW5nbGVcbiAgICAvLyBwb3N0LWRpc3BhdGNoIGZpbHRlciBvZiB0aGUgbGl2ZSBtYXAuXG4gICAgLy8gLSBXcml0aW5nIHRoZSBzbmFwc2hvdCBiYWNrIHdob2xlc2FsZSB3b3VsZCB1bmRvIHN1YnNjcmlwdGlvbiBjaGFuZ2VzXG4gICAgLy8gICBtYWRlIGluc2lkZSBhIGhhbmRsZXIgKCM0MzkzKS5cbiAgICAvLyAtIENhbGxpbmcgbGlzdGVuZXJPZmYoKSBwZXIgZXhwaXJlZCBsaXN0ZW5lciBpbnNpZGUgdGhlIGxvb3AgaXMgTyhuXHUwMEIyKVxuICAgIC8vICAgd2hlbiBtYW55IGxpc3RlbmVycyBleHBpcmUgb24gdGhlIHNhbWUgZXZlbnQuXG4gICAgLy8gRmlsdGVyaW5nIHRoZSBsaXZlIGFycmF5IG9uY2UgYWZ0ZXIgZGlzcGF0Y2ggaXMgTyhuKSBhbmQgc3RpbGwgaG9ub3Vyc1xuICAgIC8vIGFueSBsaXN0ZW5lcnMgYWRkZWQgb3IgcmVtb3ZlZCBieSBoYW5kbGVycyBkdXJpbmcgZGlzcGF0Y2guXG4gICAgY29uc3QgZXhwaXJlZCA9IG5ldyBTZXQ8TGlzdGVuZXI+KCk7XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMuc2xpY2UoKSkge1xuICAgICAgICBpZiAobGlzdGVuZXIuZGlzcGF0Y2god2FpbHNFdmVudCkpIHtcbiAgICAgICAgICAgIGV4cGlyZWQuYWRkKGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXhwaXJlZC5zaXplID4gMCkge1xuICAgICAgICBjb25zdCBsaXZlID0gZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50Lm5hbWUpO1xuICAgICAgICBpZiAobGl2ZSkge1xuICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nID0gbGl2ZS5maWx0ZXIobCA9PiAhZXhwaXJlZC5oYXMobCkpO1xuICAgICAgICAgICAgaWYgKHJlbWFpbmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBldmVudExpc3RlbmVycy5kZWxldGUoZXZlbnQubmFtZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV2ZW50TGlzdGVuZXJzLnNldChldmVudC5uYW1lLCByZW1haW5pbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGZvciBhIHNwZWNpZmljIGV2ZW50LlxuICpcbiAqIEBwYXJhbSBldmVudE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQgdG8gcmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZvci5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICogQHBhcmFtIG1heENhbGxiYWNrcyAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0aGUgY2FsbGJhY2sgY2FuIGJlIGNhbGxlZCBmb3IgdGhlIGV2ZW50LiBPbmNlIHRoZSBtYXhpbXVtIG51bWJlciBpcyByZWFjaGVkLCB0aGUgY2FsbGJhY2sgd2lsbCBubyBsb25nZXIgYmUgY2FsbGVkLlxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0LCB3aGVuIGNhbGxlZCwgd2lsbCB1bnJlZ2lzdGVyIHRoZSBjYWxsYmFjayBmcm9tIHRoZSBldmVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE9uTXVsdGlwbGU8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KGV2ZW50TmFtZTogRSwgY2FsbGJhY2s6IFdhaWxzRXZlbnRDYWxsYmFjazxFPiwgbWF4Q2FsbGJhY2tzOiBudW1iZXIpIHtcbiAgICBsZXQgbGlzdGVuZXJzID0gZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2ZW50TmFtZSkgfHwgW107XG4gICAgY29uc3QgdGhpc0xpc3RlbmVyID0gbmV3IExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2ssIG1heENhbGxiYWNrcyk7XG4gICAgbGlzdGVuZXJzLnB1c2godGhpc0xpc3RlbmVyKTtcbiAgICBldmVudExpc3RlbmVycy5zZXQoZXZlbnROYW1lLCBsaXN0ZW5lcnMpO1xuICAgIHJldHVybiAoKSA9PiBsaXN0ZW5lck9mZih0aGlzTGlzdGVuZXIpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIHNwZWNpZmllZCBldmVudCBvY2N1cnMuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudCB0byByZWdpc3RlciB0aGUgY2FsbGJhY2sgZm9yLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLCB3aWxsIHVucmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZyb20gdGhlIGV2ZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gT248RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KGV2ZW50TmFtZTogRSwgY2FsbGJhY2s6IFdhaWxzRXZlbnRDYWxsYmFjazxFPik6ICgpID0+IHZvaWQge1xuICAgIHJldHVybiBPbk11bHRpcGxlKGV2ZW50TmFtZSwgY2FsbGJhY2ssIC0xKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBvbmx5IG9uY2UgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudCB0byByZWdpc3RlciB0aGUgY2FsbGJhY2sgZm9yLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLCB3aWxsIHVucmVnaXN0ZXIgdGhlIGNhbGxiYWNrIGZyb20gdGhlIGV2ZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gT25jZTxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4oZXZlbnROYW1lOiBFLCBjYWxsYmFjazogV2FpbHNFdmVudENhbGxiYWNrPEU+KTogKCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIE9uTXVsdGlwbGUoZXZlbnROYW1lLCBjYWxsYmFjaywgMSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBldmVudCBsaXN0ZW5lcnMgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQgbmFtZXMuXG4gKlxuICogQHBhcmFtIGV2ZW50TmFtZXMgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnRzIHRvIHJlbW92ZSBsaXN0ZW5lcnMgZm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gT2ZmKC4uLmV2ZW50TmFtZXM6IFtXYWlsc0V2ZW50TmFtZSwgLi4uV2FpbHNFdmVudE5hbWVbXV0pOiB2b2lkIHtcbiAgICBldmVudE5hbWVzLmZvckVhY2goZXZlbnROYW1lID0+IGV2ZW50TGlzdGVuZXJzLmRlbGV0ZShldmVudE5hbWUpKTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBldmVudCBsaXN0ZW5lcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBPZmZBbGwoKTogdm9pZCB7XG4gICAgZXZlbnRMaXN0ZW5lcnMuY2xlYXIoKTtcbn1cblxuLyoqXG4gKiBFbWl0cyBhbiBldmVudC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCB3aWxsIGJlIGZ1bGZpbGxlZCBvbmNlIHRoZSBldmVudCBoYXMgYmVlbiBlbWl0dGVkLiAgUmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGUgZXZlbnQgd2FzIGNhbmNlbGxlZC5cbiAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50IHRvIGVtaXRcbiAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgdGhhdCB3aWxsIGJlIHNlbnQgd2l0aCB0aGUgZXZlbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVtaXQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KG5hbWU6IEUsIGRhdGE6IFdhaWxzRXZlbnREYXRhPEU+KTogUHJvbWlzZTxib29sZWFuPlxuZXhwb3J0IGZ1bmN0aW9uIEVtaXQ8RSBleHRlbmRzIFdhaWxzRXZlbnROYW1lID0gV2FpbHNFdmVudE5hbWU+KG5hbWU6IFdhaWxzRXZlbnREYXRhPEU+IGV4dGVuZHMgbnVsbCB8IHZvaWQgPyBFIDogbmV2ZXIpOiBQcm9taXNlPGJvb2xlYW4+XG5leHBvcnQgZnVuY3Rpb24gRW1pdDxFIGV4dGVuZHMgV2FpbHNFdmVudE5hbWUgPSBXYWlsc0V2ZW50TmFtZT4obmFtZTogV2FpbHNFdmVudERhdGE8RT4sIGRhdGE/OiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gY2FsbChFbWl0TWV0aG9kLCAgbmV3IFdhaWxzRXZlbnQobmFtZSwgZGF0YSkpXG59XG5cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLy8gVGhlIGZvbGxvd2luZyB1dGlsaXRpZXMgaGF2ZSBiZWVuIGZhY3RvcmVkIG91dCBvZiAuL2V2ZW50cy50c1xuLy8gZm9yIHRlc3RpbmcgcHVycG9zZXMuXG5cbmV4cG9ydCBjb25zdCBldmVudExpc3RlbmVycyA9IG5ldyBNYXA8c3RyaW5nLCBMaXN0ZW5lcltdPigpO1xuXG5leHBvcnQgY2xhc3MgTGlzdGVuZXIge1xuICAgIGV2ZW50TmFtZTogc3RyaW5nO1xuICAgIGNhbGxiYWNrOiAoZGF0YTogYW55KSA9PiB2b2lkO1xuICAgIG1heENhbGxiYWNrczogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IoZXZlbnROYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoZGF0YTogYW55KSA9PiB2b2lkLCBtYXhDYWxsYmFja3M6IG51bWJlcikge1xuICAgICAgICB0aGlzLmV2ZW50TmFtZSA9IGV2ZW50TmFtZTtcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgICB0aGlzLm1heENhbGxiYWNrcyA9IG1heENhbGxiYWNrcyB8fCAtMTtcbiAgICB9XG5cbiAgICBkaXNwYXRjaChkYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2soZGF0YSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWF4Q2FsbGJhY2tzID09PSAtMSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0aGlzLm1heENhbGxiYWNrcyAtPSAxO1xuICAgICAgICByZXR1cm4gdGhpcy5tYXhDYWxsYmFja3MgPT09IDA7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuZXJPZmYobGlzdGVuZXI6IExpc3RlbmVyKTogdm9pZCB7XG4gICAgbGV0IGxpc3RlbmVycyA9IGV2ZW50TGlzdGVuZXJzLmdldChsaXN0ZW5lci5ldmVudE5hbWUpO1xuICAgIGlmICghbGlzdGVuZXJzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnMuZmlsdGVyKGwgPT4gbCAhPT0gbGlzdGVuZXIpO1xuICAgIGlmIChsaXN0ZW5lcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50TGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lci5ldmVudE5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGV2ZW50TGlzdGVuZXJzLnNldChsaXN0ZW5lci5ldmVudE5hbWUsIGxpc3RlbmVycyk7XG4gICAgfVxufVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG4vKipcbiAqIEFueSBpcyBhIGR1bW15IGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBzaW1wbGUgb3IgdW5rbm93biB0eXBlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFueTxUID0gYW55Pihzb3VyY2U6IGFueSk6IFQge1xuICAgIHJldHVybiBzb3VyY2U7XG59XG5cbi8qKlxuICogQnl0ZVNsaWNlIGlzIGEgY3JlYXRpb24gZnVuY3Rpb24gdGhhdCByZXBsYWNlc1xuICogbnVsbCBzdHJpbmdzIHdpdGggZW1wdHkgc3RyaW5ncy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJ5dGVTbGljZShzb3VyY2U6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuICgoc291cmNlID09IG51bGwpID8gXCJcIiA6IHNvdXJjZSk7XG59XG5cbi8qKlxuICogQXJyYXkgdGFrZXMgYSBjcmVhdGlvbiBmdW5jdGlvbiBmb3IgYW4gYXJiaXRyYXJ5IHR5cGVcbiAqIGFuZCByZXR1cm5zIGFuIGluLXBsYWNlIGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBhbiBhcnJheVxuICogd2hvc2UgZWxlbWVudHMgYXJlIG9mIHRoYXQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFycmF5PFQgPSBhbnk+KGVsZW1lbnQ6IChzb3VyY2U6IGFueSkgPT4gVCk6IChzb3VyY2U6IGFueSkgPT4gVFtdIHtcbiAgICBpZiAoZWxlbWVudCA9PT0gQW55KSB7XG4gICAgICAgIHJldHVybiAoc291cmNlKSA9PiAoc291cmNlID09PSBudWxsID8gW10gOiBzb3VyY2UpO1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiB7XG4gICAgICAgIGlmIChzb3VyY2UgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc291cmNlW2ldID0gZWxlbWVudChzb3VyY2VbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBNYXAgdGFrZXMgY3JlYXRpb24gZnVuY3Rpb25zIGZvciB0d28gYXJiaXRyYXJ5IHR5cGVzXG4gKiBhbmQgcmV0dXJucyBhbiBpbi1wbGFjZSBjcmVhdGlvbiBmdW5jdGlvbiBmb3IgYW4gb2JqZWN0XG4gKiB3aG9zZSBrZXlzIGFuZCB2YWx1ZXMgYXJlIG9mIHRob3NlIHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gTWFwPEsgZXh0ZW5kcyBQcm9wZXJ0eUtleSA9IGFueSwgViA9IGFueT4oa2V5OiAoc291cmNlOiBhbnkpID0+IEssIHZhbHVlOiAoc291cmNlOiBhbnkpID0+IFYpOiAoc291cmNlOiBhbnkpID0+IFJlY29yZDxLLCBWPiB7XG4gICAgaWYgKHZhbHVlID09PSBBbnkpIHtcbiAgICAgICAgcmV0dXJuIChzb3VyY2UpID0+IChzb3VyY2UgPT09IG51bGwgPyB7fSA6IHNvdXJjZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChzb3VyY2UpID0+IHtcbiAgICAgICAgaWYgKHNvdXJjZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgICAgICAgICAgc291cmNlW2tleV0gPSB2YWx1ZShzb3VyY2Vba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9O1xufVxuXG4vKipcbiAqIE51bGxhYmxlIHRha2VzIGEgY3JlYXRpb24gZnVuY3Rpb24gZm9yIGFuIGFyYml0cmFyeSB0eXBlXG4gKiBhbmQgcmV0dXJucyBhIGNyZWF0aW9uIGZ1bmN0aW9uIGZvciBhIG51bGxhYmxlIHZhbHVlIG9mIHRoYXQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE51bGxhYmxlPFQgPSBhbnk+KGVsZW1lbnQ6IChzb3VyY2U6IGFueSkgPT4gVCk6IChzb3VyY2U6IGFueSkgPT4gKFQgfCBudWxsKSB7XG4gICAgaWYgKGVsZW1lbnQgPT09IEFueSkge1xuICAgICAgICByZXR1cm4gQW55O1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiAoc291cmNlID09PSBudWxsID8gbnVsbCA6IGVsZW1lbnQoc291cmNlKSk7XG59XG5cbi8qKlxuICogU3RydWN0IHRha2VzIGFuIG9iamVjdCBtYXBwaW5nIGZpZWxkIG5hbWVzIHRvIGNyZWF0aW9uIGZ1bmN0aW9uc1xuICogYW5kIHJldHVybnMgYW4gaW4tcGxhY2UgY3JlYXRpb24gZnVuY3Rpb24gZm9yIGEgc3RydWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gU3RydWN0KGNyZWF0ZUZpZWxkOiBSZWNvcmQ8c3RyaW5nLCAoc291cmNlOiBhbnkpID0+IGFueT4pOlxuICAgIDxVIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IGFueT4oc291cmNlOiBhbnkpID0+IFVcbntcbiAgICBsZXQgYWxsQW55ID0gdHJ1ZTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgaW4gY3JlYXRlRmllbGQpIHtcbiAgICAgICAgaWYgKGNyZWF0ZUZpZWxkW25hbWVdICE9PSBBbnkpIHtcbiAgICAgICAgICAgIGFsbEFueSA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFsbEFueSkge1xuICAgICAgICByZXR1cm4gQW55O1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBjcmVhdGVGaWVsZCkge1xuICAgICAgICAgICAgaWYgKG5hbWUgaW4gc291cmNlKSB7XG4gICAgICAgICAgICAgICAgc291cmNlW25hbWVdID0gY3JlYXRlRmllbGRbbmFtZV0oc291cmNlW25hbWVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIH07XG59XG5cbi8qKlxuICogRGF0ZUZyb21UaW1lIGlzIGEgY3JlYXRpb24gZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBSRkMzMzM5IHN0cmluZ3NcbiAqIChmcm9tIEdvJ3MgdGltZS5UaW1lIEpTT04gbWFyc2hhbGluZykgdG8gSmF2YVNjcmlwdCBEYXRlIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEYXRlRnJvbVRpbWUoc291cmNlOiBhbnkpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoc291cmNlKTtcbn1cblxuLyoqXG4gKiBNYXBzIGtub3duIGV2ZW50IG5hbWVzIHRvIGNyZWF0aW9uIGZ1bmN0aW9ucyBmb3IgdGhlaXIgZGF0YSB0eXBlcy5cbiAqIFdpbGwgYmUgbW9ua2V5LXBhdGNoZWQgYnkgdGhlIGJpbmRpbmcgZ2VuZXJhdG9yLlxuICovXG5leHBvcnQgY29uc3QgRXZlbnRzOiBSZWNvcmQ8c3RyaW5nLCAoc291cmNlOiBhbnkpID0+IGFueT4gPSB7fTtcbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLy8gQ3luaHlyY2h3eWQgeSBmZmVpbCBob24geW4gYXd0b21hdGlnLiBQRUlESVdDSCBcdTAwQzIgTU9ESVdMXG4vLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuIERPIE5PVCBFRElUXG5cbmV4cG9ydCBjb25zdCBUeXBlcyA9IE9iamVjdC5mcmVlemUoe1xuXHRXaW5kb3dzOiBPYmplY3QuZnJlZXplKHtcblx0XHRBUE1Qb3dlclNldHRpbmdDaGFuZ2U6IFwid2luZG93czpBUE1Qb3dlclNldHRpbmdDaGFuZ2VcIixcblx0XHRBUE1Qb3dlclN0YXR1c0NoYW5nZTogXCJ3aW5kb3dzOkFQTVBvd2VyU3RhdHVzQ2hhbmdlXCIsXG5cdFx0QVBNUmVzdW1lQXV0b21hdGljOiBcIndpbmRvd3M6QVBNUmVzdW1lQXV0b21hdGljXCIsXG5cdFx0QVBNUmVzdW1lU3VzcGVuZDogXCJ3aW5kb3dzOkFQTVJlc3VtZVN1c3BlbmRcIixcblx0XHRBUE1TdXNwZW5kOiBcIndpbmRvd3M6QVBNU3VzcGVuZFwiLFxuXHRcdEFwcGxpY2F0aW9uU3RhcnRlZDogXCJ3aW5kb3dzOkFwcGxpY2F0aW9uU3RhcnRlZFwiLFxuXHRcdFN5c3RlbVRoZW1lQ2hhbmdlZDogXCJ3aW5kb3dzOlN5c3RlbVRoZW1lQ2hhbmdlZFwiLFxuXHRcdFdlYlZpZXdOYXZpZ2F0aW9uQ29tcGxldGVkOiBcIndpbmRvd3M6V2ViVmlld05hdmlnYXRpb25Db21wbGV0ZWRcIixcblx0XHRXaW5kb3dBY3RpdmU6IFwid2luZG93czpXaW5kb3dBY3RpdmVcIixcblx0XHRXaW5kb3dCYWNrZ3JvdW5kRXJhc2U6IFwid2luZG93czpXaW5kb3dCYWNrZ3JvdW5kRXJhc2VcIixcblx0XHRXaW5kb3dDbGlja0FjdGl2ZTogXCJ3aW5kb3dzOldpbmRvd0NsaWNrQWN0aXZlXCIsXG5cdFx0V2luZG93Q2xvc2luZzogXCJ3aW5kb3dzOldpbmRvd0Nsb3NpbmdcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcIndpbmRvd3M6V2luZG93RGlkTW92ZVwiLFxuXHRcdFdpbmRvd0RpZFJlc2l6ZTogXCJ3aW5kb3dzOldpbmRvd0RpZFJlc2l6ZVwiLFxuXHRcdFdpbmRvd0RQSUNoYW5nZWQ6IFwid2luZG93czpXaW5kb3dEUElDaGFuZ2VkXCIsXG5cdFx0V2luZG93RHJhZ0Ryb3A6IFwid2luZG93czpXaW5kb3dEcmFnRHJvcFwiLFxuXHRcdFdpbmRvd0RyYWdFbnRlcjogXCJ3aW5kb3dzOldpbmRvd0RyYWdFbnRlclwiLFxuXHRcdFdpbmRvd0RyYWdMZWF2ZTogXCJ3aW5kb3dzOldpbmRvd0RyYWdMZWF2ZVwiLFxuXHRcdFdpbmRvd0RyYWdPdmVyOiBcIndpbmRvd3M6V2luZG93RHJhZ092ZXJcIixcblx0XHRXaW5kb3dFbmRNb3ZlOiBcIndpbmRvd3M6V2luZG93RW5kTW92ZVwiLFxuXHRcdFdpbmRvd0VuZFJlc2l6ZTogXCJ3aW5kb3dzOldpbmRvd0VuZFJlc2l6ZVwiLFxuXHRcdFdpbmRvd0Z1bGxzY3JlZW46IFwid2luZG93czpXaW5kb3dGdWxsc2NyZWVuXCIsXG5cdFx0V2luZG93SGlkZTogXCJ3aW5kb3dzOldpbmRvd0hpZGVcIixcblx0XHRXaW5kb3dJbmFjdGl2ZTogXCJ3aW5kb3dzOldpbmRvd0luYWN0aXZlXCIsXG5cdFx0V2luZG93S2V5RG93bjogXCJ3aW5kb3dzOldpbmRvd0tleURvd25cIixcblx0XHRXaW5kb3dLZXlVcDogXCJ3aW5kb3dzOldpbmRvd0tleVVwXCIsXG5cdFx0V2luZG93S2lsbEZvY3VzOiBcIndpbmRvd3M6V2luZG93S2lsbEZvY3VzXCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50SGl0OiBcIndpbmRvd3M6V2luZG93Tm9uQ2xpZW50SGl0XCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50TW91c2VEb3duOiBcIndpbmRvd3M6V2luZG93Tm9uQ2xpZW50TW91c2VEb3duXCIsXG5cdFx0V2luZG93Tm9uQ2xpZW50TW91c2VMZWF2ZTogXCJ3aW5kb3dzOldpbmRvd05vbkNsaWVudE1vdXNlTGVhdmVcIixcblx0XHRXaW5kb3dOb25DbGllbnRNb3VzZU1vdmU6IFwid2luZG93czpXaW5kb3dOb25DbGllbnRNb3VzZU1vdmVcIixcblx0XHRXaW5kb3dOb25DbGllbnRNb3VzZVVwOiBcIndpbmRvd3M6V2luZG93Tm9uQ2xpZW50TW91c2VVcFwiLFxuXHRcdFdpbmRvd1BhaW50OiBcIndpbmRvd3M6V2luZG93UGFpbnRcIixcblx0XHRXaW5kb3dSZXN0b3JlOiBcIndpbmRvd3M6V2luZG93UmVzdG9yZVwiLFxuXHRcdFdpbmRvd1NldEZvY3VzOiBcIndpbmRvd3M6V2luZG93U2V0Rm9jdXNcIixcblx0XHRXaW5kb3dTaG93OiBcIndpbmRvd3M6V2luZG93U2hvd1wiLFxuXHRcdFdpbmRvd1N0YXJ0TW92ZTogXCJ3aW5kb3dzOldpbmRvd1N0YXJ0TW92ZVwiLFxuXHRcdFdpbmRvd1N0YXJ0UmVzaXplOiBcIndpbmRvd3M6V2luZG93U3RhcnRSZXNpemVcIixcblx0XHRXaW5kb3dVbkZ1bGxzY3JlZW46IFwid2luZG93czpXaW5kb3dVbkZ1bGxzY3JlZW5cIixcblx0XHRXaW5kb3daT3JkZXJDaGFuZ2VkOiBcIndpbmRvd3M6V2luZG93Wk9yZGVyQ2hhbmdlZFwiLFxuXHRcdFdpbmRvd01pbmltaXNlOiBcIndpbmRvd3M6V2luZG93TWluaW1pc2VcIixcblx0XHRXaW5kb3dVbk1pbmltaXNlOiBcIndpbmRvd3M6V2luZG93VW5NaW5pbWlzZVwiLFxuXHRcdFdpbmRvd01heGltaXNlOiBcIndpbmRvd3M6V2luZG93TWF4aW1pc2VcIixcblx0XHRXaW5kb3dVbk1heGltaXNlOiBcIndpbmRvd3M6V2luZG93VW5NYXhpbWlzZVwiLFxuXHR9KSxcblx0TWFjOiBPYmplY3QuZnJlZXplKHtcblx0XHRBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTogXCJtYWM6QXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzXCIsXG5cdFx0QXBwbGljYXRpb25EaWRDaGFuZ2VFZmZlY3RpdmVBcHBlYXJhbmNlOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZUVmZmVjdGl2ZUFwcGVhcmFuY2VcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZUljb246IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlSWNvblwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGU6IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGVcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyc1wiLFxuXHRcdEFwcGxpY2F0aW9uRGlkQ2hhbmdlU3RhdHVzQmFyRnJhbWU6IFwibWFjOkFwcGxpY2F0aW9uRGlkQ2hhbmdlU3RhdHVzQmFyRnJhbWVcIixcblx0XHRBcHBsaWNhdGlvbkRpZENoYW5nZVN0YXR1c0Jhck9yaWVudGF0aW9uOiBcIm1hYzpBcHBsaWNhdGlvbkRpZENoYW5nZVN0YXR1c0Jhck9yaWVudGF0aW9uXCIsXG5cdFx0QXBwbGljYXRpb25EaWRDaGFuZ2VUaGVtZTogXCJtYWM6QXBwbGljYXRpb25EaWRDaGFuZ2VUaGVtZVwiLFxuXHRcdEFwcGxpY2F0aW9uRGlkRmluaXNoTGF1bmNoaW5nOiBcIm1hYzpBcHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZ1wiLFxuXHRcdEFwcGxpY2F0aW9uRGlkSGlkZTogXCJtYWM6QXBwbGljYXRpb25EaWRIaWRlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRSZXNpZ25BY3RpdmU6IFwibWFjOkFwcGxpY2F0aW9uRGlkUmVzaWduQWN0aXZlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRVbmhpZGU6IFwibWFjOkFwcGxpY2F0aW9uRGlkVW5oaWRlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRVcGRhdGU6IFwibWFjOkFwcGxpY2F0aW9uRGlkVXBkYXRlXCIsXG5cdFx0QXBwbGljYXRpb25EaWRXYWtlOiBcIm1hYzpBcHBsaWNhdGlvbkRpZFdha2VcIixcblx0XHRBcHBsaWNhdGlvblNjcmVlbnNEaWRTbGVlcDogXCJtYWM6QXBwbGljYXRpb25TY3JlZW5zRGlkU2xlZXBcIixcblx0XHRBcHBsaWNhdGlvblNjcmVlbnNEaWRXYWtlOiBcIm1hYzpBcHBsaWNhdGlvblNjcmVlbnNEaWRXYWtlXCIsXG5cdFx0QXBwbGljYXRpb25TaG91bGRIYW5kbGVSZW9wZW46IFwibWFjOkFwcGxpY2F0aW9uU2hvdWxkSGFuZGxlUmVvcGVuXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsQmVjb21lQWN0aXZlOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxCZWNvbWVBY3RpdmVcIixcblx0XHRBcHBsaWNhdGlvbldpbGxGaW5pc2hMYXVuY2hpbmc6IFwibWFjOkFwcGxpY2F0aW9uV2lsbEZpbmlzaExhdW5jaGluZ1wiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbEhpZGU6IFwibWFjOkFwcGxpY2F0aW9uV2lsbEhpZGVcIixcblx0XHRBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6IFwibWFjOkFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZVwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFNsZWVwOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxTbGVlcFwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZTogXCJtYWM6QXBwbGljYXRpb25XaWxsVGVybWluYXRlXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsVW5oaWRlOiBcIm1hYzpBcHBsaWNhdGlvbldpbGxVbmhpZGVcIixcblx0XHRBcHBsaWNhdGlvbldpbGxVcGRhdGU6IFwibWFjOkFwcGxpY2F0aW9uV2lsbFVwZGF0ZVwiLFxuXHRcdE1lbnVEaWRBZGRJdGVtOiBcIm1hYzpNZW51RGlkQWRkSXRlbVwiLFxuXHRcdE1lbnVEaWRCZWdpblRyYWNraW5nOiBcIm1hYzpNZW51RGlkQmVnaW5UcmFja2luZ1wiLFxuXHRcdE1lbnVEaWRDbG9zZTogXCJtYWM6TWVudURpZENsb3NlXCIsXG5cdFx0TWVudURpZERpc3BsYXlJdGVtOiBcIm1hYzpNZW51RGlkRGlzcGxheUl0ZW1cIixcblx0XHRNZW51RGlkRW5kVHJhY2tpbmc6IFwibWFjOk1lbnVEaWRFbmRUcmFja2luZ1wiLFxuXHRcdE1lbnVEaWRIaWdobGlnaHRJdGVtOiBcIm1hYzpNZW51RGlkSGlnaGxpZ2h0SXRlbVwiLFxuXHRcdE1lbnVEaWRPcGVuOiBcIm1hYzpNZW51RGlkT3BlblwiLFxuXHRcdE1lbnVEaWRQb3BVcDogXCJtYWM6TWVudURpZFBvcFVwXCIsXG5cdFx0TWVudURpZFJlbW92ZUl0ZW06IFwibWFjOk1lbnVEaWRSZW1vdmVJdGVtXCIsXG5cdFx0TWVudURpZFNlbmRBY3Rpb246IFwibWFjOk1lbnVEaWRTZW5kQWN0aW9uXCIsXG5cdFx0TWVudURpZFNlbmRBY3Rpb25Ub0l0ZW06IFwibWFjOk1lbnVEaWRTZW5kQWN0aW9uVG9JdGVtXCIsXG5cdFx0TWVudURpZFVwZGF0ZTogXCJtYWM6TWVudURpZFVwZGF0ZVwiLFxuXHRcdE1lbnVXaWxsQWRkSXRlbTogXCJtYWM6TWVudVdpbGxBZGRJdGVtXCIsXG5cdFx0TWVudVdpbGxCZWdpblRyYWNraW5nOiBcIm1hYzpNZW51V2lsbEJlZ2luVHJhY2tpbmdcIixcblx0XHRNZW51V2lsbERpc3BsYXlJdGVtOiBcIm1hYzpNZW51V2lsbERpc3BsYXlJdGVtXCIsXG5cdFx0TWVudVdpbGxFbmRUcmFja2luZzogXCJtYWM6TWVudVdpbGxFbmRUcmFja2luZ1wiLFxuXHRcdE1lbnVXaWxsSGlnaGxpZ2h0SXRlbTogXCJtYWM6TWVudVdpbGxIaWdobGlnaHRJdGVtXCIsXG5cdFx0TWVudVdpbGxPcGVuOiBcIm1hYzpNZW51V2lsbE9wZW5cIixcblx0XHRNZW51V2lsbFBvcFVwOiBcIm1hYzpNZW51V2lsbFBvcFVwXCIsXG5cdFx0TWVudVdpbGxSZW1vdmVJdGVtOiBcIm1hYzpNZW51V2lsbFJlbW92ZUl0ZW1cIixcblx0XHRNZW51V2lsbFNlbmRBY3Rpb246IFwibWFjOk1lbnVXaWxsU2VuZEFjdGlvblwiLFxuXHRcdE1lbnVXaWxsU2VuZEFjdGlvblRvSXRlbTogXCJtYWM6TWVudVdpbGxTZW5kQWN0aW9uVG9JdGVtXCIsXG5cdFx0TWVudVdpbGxVcGRhdGU6IFwibWFjOk1lbnVXaWxsVXBkYXRlXCIsXG5cdFx0V2ViVmlld0RpZENvbW1pdE5hdmlnYXRpb246IFwibWFjOldlYlZpZXdEaWRDb21taXROYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZEZpbmlzaE5hdmlnYXRpb246IFwibWFjOldlYlZpZXdEaWRGaW5pc2hOYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbjogXCJtYWM6V2ViVmlld0RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvblwiLFxuXHRcdFdlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbjogXCJtYWM6V2ViVmlld0RpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uXCIsXG5cdFx0V2luZG93RGlkQmVjb21lS2V5OiBcIm1hYzpXaW5kb3dEaWRCZWNvbWVLZXlcIixcblx0XHRXaW5kb3dEaWRCZWNvbWVNYWluOiBcIm1hYzpXaW5kb3dEaWRCZWNvbWVNYWluXCIsXG5cdFx0V2luZG93RGlkQmVnaW5TaGVldDogXCJtYWM6V2luZG93RGlkQmVnaW5TaGVldFwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZUFscGhhOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VBbHBoYVwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZUJhY2tpbmdMb2NhdGlvbjogXCJtYWM6V2luZG93RGlkQ2hhbmdlQmFja2luZ0xvY2F0aW9uXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlQmFja2luZ1Byb3BlcnRpZXM6IFwibWFjOldpbmRvd0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlQ29sbGVjdGlvbkJlaGF2aW9yOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VDb2xsZWN0aW9uQmVoYXZpb3JcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VFZmZlY3RpdmVBcHBlYXJhbmNlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VFZmZlY3RpdmVBcHBlYXJhbmNlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGU6IFwibWFjOldpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlT3JkZXJpbmdNb2RlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VPcmRlcmluZ01vZGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTY3JlZW46IFwibWFjOldpbmRvd0RpZENoYW5nZVNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6IFwibWFjOldpbmRvd0RpZENoYW5nZVNjcmVlblBhcmFtZXRlcnNcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTY3JlZW5Qcm9maWxlOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VTY3JlZW5Qcm9maWxlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlU2NyZWVuU3BhY2U6IFwibWFjOldpbmRvd0RpZENoYW5nZVNjcmVlblNwYWNlXCIsXG5cdFx0V2luZG93RGlkQ2hhbmdlU2NyZWVuU3BhY2VQcm9wZXJ0aWVzOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VTY3JlZW5TcGFjZVByb3BlcnRpZXNcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTaGFyaW5nVHlwZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlU2hhcmluZ1R5cGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTcGFjZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlU3BhY2VcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VTcGFjZU9yZGVyaW5nTW9kZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlU3BhY2VPcmRlcmluZ01vZGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VUaXRsZTogXCJtYWM6V2luZG93RGlkQ2hhbmdlVGl0bGVcIixcblx0XHRXaW5kb3dEaWRDaGFuZ2VUb29sYmFyOiBcIm1hYzpXaW5kb3dEaWRDaGFuZ2VUb29sYmFyXCIsXG5cdFx0V2luZG93RGlkRGVtaW5pYXR1cml6ZTogXCJtYWM6V2luZG93RGlkRGVtaW5pYXR1cml6ZVwiLFxuXHRcdFdpbmRvd0RpZEVuZFNoZWV0OiBcIm1hYzpXaW5kb3dEaWRFbmRTaGVldFwiLFxuXHRcdFdpbmRvd0RpZEVudGVyRnVsbFNjcmVlbjogXCJtYWM6V2luZG93RGlkRW50ZXJGdWxsU2NyZWVuXCIsXG5cdFx0V2luZG93RGlkRW50ZXJWZXJzaW9uQnJvd3NlcjogXCJtYWM6V2luZG93RGlkRW50ZXJWZXJzaW9uQnJvd3NlclwiLFxuXHRcdFdpbmRvd0RpZEV4aXRGdWxsU2NyZWVuOiBcIm1hYzpXaW5kb3dEaWRFeGl0RnVsbFNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZEV4aXRWZXJzaW9uQnJvd3NlcjogXCJtYWM6V2luZG93RGlkRXhpdFZlcnNpb25Ccm93c2VyXCIsXG5cdFx0V2luZG93RGlkRXhwb3NlOiBcIm1hYzpXaW5kb3dEaWRFeHBvc2VcIixcblx0XHRXaW5kb3dEaWRGb2N1czogXCJtYWM6V2luZG93RGlkRm9jdXNcIixcblx0XHRXaW5kb3dEaWRNaW5pYXR1cml6ZTogXCJtYWM6V2luZG93RGlkTWluaWF0dXJpemVcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcIm1hYzpXaW5kb3dEaWRNb3ZlXCIsXG5cdFx0V2luZG93RGlkT3JkZXJPZmZTY3JlZW46IFwibWFjOldpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuXCIsXG5cdFx0V2luZG93RGlkT3JkZXJPblNjcmVlbjogXCJtYWM6V2luZG93RGlkT3JkZXJPblNjcmVlblwiLFxuXHRcdFdpbmRvd0RpZFJlc2lnbktleTogXCJtYWM6V2luZG93RGlkUmVzaWduS2V5XCIsXG5cdFx0V2luZG93RGlkUmVzaWduTWFpbjogXCJtYWM6V2luZG93RGlkUmVzaWduTWFpblwiLFxuXHRcdFdpbmRvd0RpZFJlc2l6ZTogXCJtYWM6V2luZG93RGlkUmVzaXplXCIsXG5cdFx0V2luZG93RGlkVXBkYXRlOiBcIm1hYzpXaW5kb3dEaWRVcGRhdGVcIixcblx0XHRXaW5kb3dEaWRVcGRhdGVBbHBoYTogXCJtYWM6V2luZG93RGlkVXBkYXRlQWxwaGFcIixcblx0XHRXaW5kb3dEaWRVcGRhdGVDb2xsZWN0aW9uQmVoYXZpb3I6IFwibWFjOldpbmRvd0RpZFVwZGF0ZUNvbGxlY3Rpb25CZWhhdmlvclwiLFxuXHRcdFdpbmRvd0RpZFVwZGF0ZUNvbGxlY3Rpb25Qcm9wZXJ0aWVzOiBcIm1hYzpXaW5kb3dEaWRVcGRhdGVDb2xsZWN0aW9uUHJvcGVydGllc1wiLFxuXHRcdFdpbmRvd0RpZFVwZGF0ZVNoYWRvdzogXCJtYWM6V2luZG93RGlkVXBkYXRlU2hhZG93XCIsXG5cdFx0V2luZG93RGlkVXBkYXRlVGl0bGU6IFwibWFjOldpbmRvd0RpZFVwZGF0ZVRpdGxlXCIsXG5cdFx0V2luZG93RGlkVXBkYXRlVG9vbGJhcjogXCJtYWM6V2luZG93RGlkVXBkYXRlVG9vbGJhclwiLFxuXHRcdFdpbmRvd0RpZFpvb206IFwibWFjOldpbmRvd0RpZFpvb21cIixcblx0XHRXaW5kb3dGaWxlRHJhZ2dpbmdFbnRlcmVkOiBcIm1hYzpXaW5kb3dGaWxlRHJhZ2dpbmdFbnRlcmVkXCIsXG5cdFx0V2luZG93RmlsZURyYWdnaW5nRXhpdGVkOiBcIm1hYzpXaW5kb3dGaWxlRHJhZ2dpbmdFeGl0ZWRcIixcblx0XHRXaW5kb3dGaWxlRHJhZ2dpbmdQZXJmb3JtZWQ6IFwibWFjOldpbmRvd0ZpbGVEcmFnZ2luZ1BlcmZvcm1lZFwiLFxuXHRcdFdpbmRvd0hpZGU6IFwibWFjOldpbmRvd0hpZGVcIixcblx0XHRXaW5kb3dNYXhpbWlzZTogXCJtYWM6V2luZG93TWF4aW1pc2VcIixcblx0XHRXaW5kb3dVbk1heGltaXNlOiBcIm1hYzpXaW5kb3dVbk1heGltaXNlXCIsXG5cdFx0V2luZG93TWluaW1pc2U6IFwibWFjOldpbmRvd01pbmltaXNlXCIsXG5cdFx0V2luZG93VW5NaW5pbWlzZTogXCJtYWM6V2luZG93VW5NaW5pbWlzZVwiLFxuXHRcdFdpbmRvd1Nob3VsZENsb3NlOiBcIm1hYzpXaW5kb3dTaG91bGRDbG9zZVwiLFxuXHRcdFdpbmRvd1Nob3c6IFwibWFjOldpbmRvd1Nob3dcIixcblx0XHRXaW5kb3dXaWxsQmVjb21lS2V5OiBcIm1hYzpXaW5kb3dXaWxsQmVjb21lS2V5XCIsXG5cdFx0V2luZG93V2lsbEJlY29tZU1haW46IFwibWFjOldpbmRvd1dpbGxCZWNvbWVNYWluXCIsXG5cdFx0V2luZG93V2lsbEJlZ2luU2hlZXQ6IFwibWFjOldpbmRvd1dpbGxCZWdpblNoZWV0XCIsXG5cdFx0V2luZG93V2lsbENoYW5nZU9yZGVyaW5nTW9kZTogXCJtYWM6V2luZG93V2lsbENoYW5nZU9yZGVyaW5nTW9kZVwiLFxuXHRcdFdpbmRvd1dpbGxDbG9zZTogXCJtYWM6V2luZG93V2lsbENsb3NlXCIsXG5cdFx0V2luZG93V2lsbERlbWluaWF0dXJpemU6IFwibWFjOldpbmRvd1dpbGxEZW1pbmlhdHVyaXplXCIsXG5cdFx0V2luZG93V2lsbEVudGVyRnVsbFNjcmVlbjogXCJtYWM6V2luZG93V2lsbEVudGVyRnVsbFNjcmVlblwiLFxuXHRcdFdpbmRvd1dpbGxFbnRlclZlcnNpb25Ccm93c2VyOiBcIm1hYzpXaW5kb3dXaWxsRW50ZXJWZXJzaW9uQnJvd3NlclwiLFxuXHRcdFdpbmRvd1dpbGxFeGl0RnVsbFNjcmVlbjogXCJtYWM6V2luZG93V2lsbEV4aXRGdWxsU2NyZWVuXCIsXG5cdFx0V2luZG93V2lsbEV4aXRWZXJzaW9uQnJvd3NlcjogXCJtYWM6V2luZG93V2lsbEV4aXRWZXJzaW9uQnJvd3NlclwiLFxuXHRcdFdpbmRvd1dpbGxGb2N1czogXCJtYWM6V2luZG93V2lsbEZvY3VzXCIsXG5cdFx0V2luZG93V2lsbE1pbmlhdHVyaXplOiBcIm1hYzpXaW5kb3dXaWxsTWluaWF0dXJpemVcIixcblx0XHRXaW5kb3dXaWxsTW92ZTogXCJtYWM6V2luZG93V2lsbE1vdmVcIixcblx0XHRXaW5kb3dXaWxsT3JkZXJPZmZTY3JlZW46IFwibWFjOldpbmRvd1dpbGxPcmRlck9mZlNjcmVlblwiLFxuXHRcdFdpbmRvd1dpbGxPcmRlck9uU2NyZWVuOiBcIm1hYzpXaW5kb3dXaWxsT3JkZXJPblNjcmVlblwiLFxuXHRcdFdpbmRvd1dpbGxSZXNpZ25NYWluOiBcIm1hYzpXaW5kb3dXaWxsUmVzaWduTWFpblwiLFxuXHRcdFdpbmRvd1dpbGxSZXNpemU6IFwibWFjOldpbmRvd1dpbGxSZXNpemVcIixcblx0XHRXaW5kb3dXaWxsVW5mb2N1czogXCJtYWM6V2luZG93V2lsbFVuZm9jdXNcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlXCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZUFscGhhOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlQWxwaGFcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlQ29sbGVjdGlvbkJlaGF2aW9yOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlQ29sbGVjdGlvbkJlaGF2aW9yXCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZUNvbGxlY3Rpb25Qcm9wZXJ0aWVzOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlQ29sbGVjdGlvblByb3BlcnRpZXNcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlU2hhZG93OiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlU2hhZG93XCIsXG5cdFx0V2luZG93V2lsbFVwZGF0ZVRpdGxlOiBcIm1hYzpXaW5kb3dXaWxsVXBkYXRlVGl0bGVcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlVG9vbGJhcjogXCJtYWM6V2luZG93V2lsbFVwZGF0ZVRvb2xiYXJcIixcblx0XHRXaW5kb3dXaWxsVXBkYXRlVmlzaWJpbGl0eTogXCJtYWM6V2luZG93V2lsbFVwZGF0ZVZpc2liaWxpdHlcIixcblx0XHRXaW5kb3dXaWxsVXNlU3RhbmRhcmRGcmFtZTogXCJtYWM6V2luZG93V2lsbFVzZVN0YW5kYXJkRnJhbWVcIixcblx0XHRXaW5kb3dab29tSW46IFwibWFjOldpbmRvd1pvb21JblwiLFxuXHRcdFdpbmRvd1pvb21PdXQ6IFwibWFjOldpbmRvd1pvb21PdXRcIixcblx0XHRXaW5kb3dab29tUmVzZXQ6IFwibWFjOldpbmRvd1pvb21SZXNldFwiLFxuXHRcdFdlYlZpZXdXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZTogXCJtYWM6V2ViVmlld1dlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlXCIsXG5cdH0pLFxuXHRMaW51eDogT2JqZWN0LmZyZWV6ZSh7XG5cdFx0QXBwbGljYXRpb25TdGFydHVwOiBcImxpbnV4OkFwcGxpY2F0aW9uU3RhcnR1cFwiLFxuXHRcdFN5c3RlbURpZFdha2U6IFwibGludXg6U3lzdGVtRGlkV2FrZVwiLFxuXHRcdFN5c3RlbVRoZW1lQ2hhbmdlZDogXCJsaW51eDpTeXN0ZW1UaGVtZUNoYW5nZWRcIixcblx0XHRTeXN0ZW1XaWxsU2xlZXA6IFwibGludXg6U3lzdGVtV2lsbFNsZWVwXCIsXG5cdFx0V2luZG93RGVsZXRlRXZlbnQ6IFwibGludXg6V2luZG93RGVsZXRlRXZlbnRcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcImxpbnV4OldpbmRvd0RpZE1vdmVcIixcblx0XHRXaW5kb3dEaWRSZXNpemU6IFwibGludXg6V2luZG93RGlkUmVzaXplXCIsXG5cdFx0V2luZG93Rm9jdXNJbjogXCJsaW51eDpXaW5kb3dGb2N1c0luXCIsXG5cdFx0V2luZG93Rm9jdXNPdXQ6IFwibGludXg6V2luZG93Rm9jdXNPdXRcIixcblx0XHRXaW5kb3dMb2FkU3RhcnRlZDogXCJsaW51eDpXaW5kb3dMb2FkU3RhcnRlZFwiLFxuXHRcdFdpbmRvd0xvYWRSZWRpcmVjdGVkOiBcImxpbnV4OldpbmRvd0xvYWRSZWRpcmVjdGVkXCIsXG5cdFx0V2luZG93TG9hZENvbW1pdHRlZDogXCJsaW51eDpXaW5kb3dMb2FkQ29tbWl0dGVkXCIsXG5cdFx0V2luZG93TG9hZEZpbmlzaGVkOiBcImxpbnV4OldpbmRvd0xvYWRGaW5pc2hlZFwiLFxuXHR9KSxcblx0aU9TOiBPYmplY3QuZnJlZXplKHtcblx0XHRBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTogXCJpb3M6QXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVcIixcblx0XHRBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDogXCJpb3M6QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmRcIixcblx0XHRBcHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZzogXCJpb3M6QXBwbGljYXRpb25EaWRGaW5pc2hMYXVuY2hpbmdcIixcblx0XHRBcHBsaWNhdGlvbkRpZFJlY2VpdmVNZW1vcnlXYXJuaW5nOiBcImlvczpBcHBsaWNhdGlvbkRpZFJlY2VpdmVNZW1vcnlXYXJuaW5nXCIsXG5cdFx0QXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kOiBcImlvczpBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRcIixcblx0XHRBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6IFwiaW9zOkFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZVwiLFxuXHRcdEFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZTogXCJpb3M6QXBwbGljYXRpb25XaWxsVGVybWluYXRlXCIsXG5cdFx0V2luZG93RGlkTG9hZDogXCJpb3M6V2luZG93RGlkTG9hZFwiLFxuXHRcdFdpbmRvd1dpbGxBcHBlYXI6IFwiaW9zOldpbmRvd1dpbGxBcHBlYXJcIixcblx0XHRXaW5kb3dEaWRBcHBlYXI6IFwiaW9zOldpbmRvd0RpZEFwcGVhclwiLFxuXHRcdFdpbmRvd1dpbGxEaXNhcHBlYXI6IFwiaW9zOldpbmRvd1dpbGxEaXNhcHBlYXJcIixcblx0XHRXaW5kb3dEaWREaXNhcHBlYXI6IFwiaW9zOldpbmRvd0RpZERpc2FwcGVhclwiLFxuXHRcdFdpbmRvd1NhZmVBcmVhSW5zZXRzQ2hhbmdlZDogXCJpb3M6V2luZG93U2FmZUFyZWFJbnNldHNDaGFuZ2VkXCIsXG5cdFx0V2luZG93T3JpZW50YXRpb25DaGFuZ2VkOiBcImlvczpXaW5kb3dPcmllbnRhdGlvbkNoYW5nZWRcIixcblx0XHRXaW5kb3dUb3VjaEJlZ2FuOiBcImlvczpXaW5kb3dUb3VjaEJlZ2FuXCIsXG5cdFx0V2luZG93VG91Y2hNb3ZlZDogXCJpb3M6V2luZG93VG91Y2hNb3ZlZFwiLFxuXHRcdFdpbmRvd1RvdWNoRW5kZWQ6IFwiaW9zOldpbmRvd1RvdWNoRW5kZWRcIixcblx0XHRXaW5kb3dUb3VjaENhbmNlbGxlZDogXCJpb3M6V2luZG93VG91Y2hDYW5jZWxsZWRcIixcblx0XHRXZWJWaWV3RGlkU3RhcnROYXZpZ2F0aW9uOiBcImlvczpXZWJWaWV3RGlkU3RhcnROYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZEZpbmlzaE5hdmlnYXRpb246IFwiaW9zOldlYlZpZXdEaWRGaW5pc2hOYXZpZ2F0aW9uXCIsXG5cdFx0V2ViVmlld0RpZEZhaWxOYXZpZ2F0aW9uOiBcImlvczpXZWJWaWV3RGlkRmFpbE5hdmlnYXRpb25cIixcblx0XHRXZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjogXCJpb3M6V2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25cIixcblx0XHRCYXR0ZXJ5Q2hhbmdlZDogXCJpb3M6QmF0dGVyeUNoYW5nZWRcIixcblx0XHROZXR3b3JrQ2hhbmdlZDogXCJpb3M6TmV0d29ya0NoYW5nZWRcIixcblx0XHRUaGVtZUNoYW5nZWQ6IFwiaW9zOlRoZW1lQ2hhbmdlZFwiLFxuXHRcdFNjcmVlbkxvY2tlZDogXCJpb3M6U2NyZWVuTG9ja2VkXCIsXG5cdFx0U2NyZWVuVW5sb2NrZWQ6IFwiaW9zOlNjcmVlblVubG9ja2VkXCIsXG5cdH0pLFxuXHRBbmRyb2lkOiBPYmplY3QuZnJlZXplKHtcblx0XHRBY3Rpdml0eUNyZWF0ZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eUNyZWF0ZWRcIixcblx0XHRBY3Rpdml0eVN0YXJ0ZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eVN0YXJ0ZWRcIixcblx0XHRBY3Rpdml0eVJlc3VtZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eVJlc3VtZWRcIixcblx0XHRBY3Rpdml0eVBhdXNlZDogXCJhbmRyb2lkOkFjdGl2aXR5UGF1c2VkXCIsXG5cdFx0QWN0aXZpdHlTdG9wcGVkOiBcImFuZHJvaWQ6QWN0aXZpdHlTdG9wcGVkXCIsXG5cdFx0QWN0aXZpdHlEZXN0cm95ZWQ6IFwiYW5kcm9pZDpBY3Rpdml0eURlc3Ryb3llZFwiLFxuXHRcdEFwcGxpY2F0aW9uTG93TWVtb3J5OiBcImFuZHJvaWQ6QXBwbGljYXRpb25Mb3dNZW1vcnlcIixcblx0XHRXZWJWaWV3UGFnZVN0YXJ0ZWQ6IFwiYW5kcm9pZDpXZWJWaWV3UGFnZVN0YXJ0ZWRcIixcblx0XHRXZWJWaWV3UGFnZUZpbmlzaGVkOiBcImFuZHJvaWQ6V2ViVmlld1BhZ2VGaW5pc2hlZFwiLFxuXHRcdEJhdHRlcnlDaGFuZ2VkOiBcImFuZHJvaWQ6QmF0dGVyeUNoYW5nZWRcIixcblx0XHROZXR3b3JrQ2hhbmdlZDogXCJhbmRyb2lkOk5ldHdvcmtDaGFuZ2VkXCIsXG5cdFx0VGhlbWVDaGFuZ2VkOiBcImFuZHJvaWQ6VGhlbWVDaGFuZ2VkXCIsXG5cdFx0U2NyZWVuTG9ja2VkOiBcImFuZHJvaWQ6U2NyZWVuTG9ja2VkXCIsXG5cdFx0U2NyZWVuVW5sb2NrZWQ6IFwiYW5kcm9pZDpTY3JlZW5VbmxvY2tlZFwiLFxuXHR9KSxcblx0Q29tbW9uOiBPYmplY3QuZnJlZXplKHtcblx0XHRBcHBsaWNhdGlvbk9wZW5lZFdpdGhGaWxlOiBcImNvbW1vbjpBcHBsaWNhdGlvbk9wZW5lZFdpdGhGaWxlXCIsXG5cdFx0QXBwbGljYXRpb25TdGFydGVkOiBcImNvbW1vbjpBcHBsaWNhdGlvblN0YXJ0ZWRcIixcblx0XHRBcHBsaWNhdGlvbkxhdW5jaGVkV2l0aFVybDogXCJjb21tb246QXBwbGljYXRpb25MYXVuY2hlZFdpdGhVcmxcIixcblx0XHRUaGVtZUNoYW5nZWQ6IFwiY29tbW9uOlRoZW1lQ2hhbmdlZFwiLFxuXHRcdFN5c3RlbURpZFdha2U6IFwiY29tbW9uOlN5c3RlbURpZFdha2VcIixcblx0XHRTeXN0ZW1XaWxsU2xlZXA6IFwiY29tbW9uOlN5c3RlbVdpbGxTbGVlcFwiLFxuXHRcdFdpbmRvd0Nsb3Npbmc6IFwiY29tbW9uOldpbmRvd0Nsb3NpbmdcIixcblx0XHRXaW5kb3dEaWRNb3ZlOiBcImNvbW1vbjpXaW5kb3dEaWRNb3ZlXCIsXG5cdFx0V2luZG93RGlkUmVzaXplOiBcImNvbW1vbjpXaW5kb3dEaWRSZXNpemVcIixcblx0XHRXaW5kb3dEUElDaGFuZ2VkOiBcImNvbW1vbjpXaW5kb3dEUElDaGFuZ2VkXCIsXG5cdFx0V2luZG93RmlsZXNEcm9wcGVkOiBcImNvbW1vbjpXaW5kb3dGaWxlc0Ryb3BwZWRcIixcblx0XHRXaW5kb3dGb2N1czogXCJjb21tb246V2luZG93Rm9jdXNcIixcblx0XHRXaW5kb3dGdWxsc2NyZWVuOiBcImNvbW1vbjpXaW5kb3dGdWxsc2NyZWVuXCIsXG5cdFx0V2luZG93SGlkZTogXCJjb21tb246V2luZG93SGlkZVwiLFxuXHRcdFdpbmRvd0xvc3RGb2N1czogXCJjb21tb246V2luZG93TG9zdEZvY3VzXCIsXG5cdFx0V2luZG93TWF4aW1pc2U6IFwiY29tbW9uOldpbmRvd01heGltaXNlXCIsXG5cdFx0V2luZG93TWluaW1pc2U6IFwiY29tbW9uOldpbmRvd01pbmltaXNlXCIsXG5cdFx0V2luZG93VG9nZ2xlRnJhbWVsZXNzOiBcImNvbW1vbjpXaW5kb3dUb2dnbGVGcmFtZWxlc3NcIixcblx0XHRXaW5kb3dSZXN0b3JlOiBcImNvbW1vbjpXaW5kb3dSZXN0b3JlXCIsXG5cdFx0V2luZG93UnVudGltZVJlYWR5OiBcImNvbW1vbjpXaW5kb3dSdW50aW1lUmVhZHlcIixcblx0XHRXaW5kb3dTaG93OiBcImNvbW1vbjpXaW5kb3dTaG93XCIsXG5cdFx0V2luZG93VW5GdWxsc2NyZWVuOiBcImNvbW1vbjpXaW5kb3dVbkZ1bGxzY3JlZW5cIixcblx0XHRXaW5kb3dVbk1heGltaXNlOiBcImNvbW1vbjpXaW5kb3dVbk1heGltaXNlXCIsXG5cdFx0V2luZG93VW5NaW5pbWlzZTogXCJjb21tb246V2luZG93VW5NaW5pbWlzZVwiLFxuXHRcdFdpbmRvd1pvb206IFwiY29tbW9uOldpbmRvd1pvb21cIixcblx0XHRXaW5kb3dab29tSW46IFwiY29tbW9uOldpbmRvd1pvb21JblwiLFxuXHRcdFdpbmRvd1pvb21PdXQ6IFwiY29tbW9uOldpbmRvd1pvb21PdXRcIixcblx0XHRXaW5kb3dab29tUmVzZXQ6IFwiY29tbW9uOldpbmRvd1pvb21SZXNldFwiLFxuXHRcdEJhdHRlcnlDaGFuZ2VkOiBcImNvbW1vbjpCYXR0ZXJ5Q2hhbmdlZFwiLFxuXHRcdE5ldHdvcmtDaGFuZ2VkOiBcImNvbW1vbjpOZXR3b3JrQ2hhbmdlZFwiLFxuXHRcdFNjcmVlbkxvY2tlZDogXCJjb21tb246U2NyZWVuTG9ja2VkXCIsXG5cdFx0U2NyZWVuVW5sb2NrZWQ6IFwiY29tbW9uOlNjcmVlblVubG9ja2VkXCIsXG5cdFx0TG93TWVtb3J5OiBcImNvbW1vbjpMb3dNZW1vcnlcIixcblx0fSksXG59KTtcbiIsICIvKlxuIF8gICAgIF9fICAgICBfIF9fXG58IHwgIC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLyoqXG4gKiBMb2dzIGEgbWVzc2FnZSB0byB0aGUgY29uc29sZSB3aXRoIGN1c3RvbSBmb3JtYXR0aW5nLlxuICpcbiAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIG1lc3NhZ2UgdG8gYmUgbG9nZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVidWdMb2cobWVzc2FnZTogYW55KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgY29uc29sZS5sb2coXG4gICAgICAgICclYyB3YWlsczMgJWMgJyArIG1lc3NhZ2UgKyAnICcsXG4gICAgICAgICdiYWNrZ3JvdW5kOiAjYWEwMDAwOyBjb2xvcjogI2ZmZjsgYm9yZGVyLXJhZGl1czogM3B4IDBweCAwcHggM3B4OyBwYWRkaW5nOiAxcHg7IGZvbnQtc2l6ZTogMC43cmVtJyxcbiAgICAgICAgJ2JhY2tncm91bmQ6ICMwMDk5MDA7IGNvbG9yOiAjZmZmOyBib3JkZXItcmFkaXVzOiAwcHggM3B4IDNweCAwcHg7IHBhZGRpbmc6IDFweDsgZm9udC1zaXplOiAwLjdyZW0nXG4gICAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgd2VidmlldyBzdXBwb3J0cyB0aGUge0BsaW5rIE1vdXNlRXZlbnQjYnV0dG9uc30gcHJvcGVydHkuXG4gKiBMb29raW5nIGF0IHlvdSBtYWNPUyBIaWdoIFNpZXJyYSFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhblRyYWNrQnV0dG9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKSkuYnV0dG9ucyA9PT0gMDtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgYnJvd3NlciBzdXBwb3J0cyByZW1vdmluZyBsaXN0ZW5lcnMgYnkgdHJpZ2dlcmluZyBhbiBBYm9ydFNpZ25hbFxuICogKHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRUYXJnZXQvYWRkRXZlbnRMaXN0ZW5lciNzaWduYWwpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuQWJvcnRMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKCFFdmVudFRhcmdldCB8fCAhQWJvcnRTaWduYWwgfHwgIUFib3J0Q29udHJvbGxlcilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG5cbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgRXZlbnRUYXJnZXQoKTtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0ZXN0JywgKCkgPT4geyByZXN1bHQgPSBmYWxzZTsgfSwgeyBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsIH0pO1xuICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3Rlc3QnKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBjbG9zZXN0IEhUTUxFbGVtZW50IGFuY2VzdG9yIG9mIGFuIGV2ZW50J3MgdGFyZ2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRUYXJnZXQoZXZlbnQ6IEV2ZW50KTogSFRNTEVsZW1lbnQge1xuICAgIGlmIChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnQudGFyZ2V0O1xuICAgIH0gZWxzZSBpZiAoIShldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgJiYgZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSkge1xuICAgICAgICByZXR1cm4gZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQgPz8gZG9jdW1lbnQuYm9keTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keTtcbiAgICB9XG59XG5cbi8qKipcbiBUaGlzIHRlY2huaXF1ZSBmb3IgcHJvcGVyIGxvYWQgZGV0ZWN0aW9uIGlzIHRha2VuIGZyb20gSFRNWDpcblxuIEJTRCAyLUNsYXVzZSBMaWNlbnNlXG5cbiBDb3B5cmlnaHQgKGMpIDIwMjAsIEJpZyBTa3kgU29mdHdhcmVcbiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXNcbiBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG4gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIlxuIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFXG4gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUlxuIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSXG4gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSxcbiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRVxuIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG5cbiAqKiovXG5cbmxldCBpc1JlYWR5ID0gZmFsc2U7XG5pbXBvcnQgeyBoYXNET00gfSBmcm9tIFwiLi9lbnZpcm9ubWVudC5qc1wiO1xuXG5pZiAoaGFzRE9NKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsICgpID0+IHsgaXNSZWFkeSA9IHRydWUgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aGVuUmVhZHkoY2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcbiAgICBpZiAoaXNSZWFkeSB8fCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGNhbGxiYWNrKTtcbiAgICB9XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7bmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXN9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmltcG9ydCB0eXBlIHsgU2NyZWVuIH0gZnJvbSBcIi4vc2NyZWVucy5qc1wiO1xuXG4vLyBEcm9wIHRhcmdldCBjb25zdGFudHNcbmNvbnN0IERST1BfVEFSR0VUX0FUVFJJQlVURSA9ICdkYXRhLWZpbGUtZHJvcC10YXJnZXQnO1xuY29uc3QgRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTID0gJ2ZpbGUtZHJvcC10YXJnZXQtYWN0aXZlJztcbmxldCBjdXJyZW50RHJvcFRhcmdldDogRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG5jb25zdCBQb3NpdGlvbk1ldGhvZCAgICAgICAgICAgICAgICAgICAgPSAwO1xuY29uc3QgQ2VudGVyTWV0aG9kICAgICAgICAgICAgICAgICAgICAgID0gMTtcbmNvbnN0IENsb3NlTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICA9IDI7XG5jb25zdCBEaXNhYmxlU2l6ZUNvbnN0cmFpbnRzTWV0aG9kICAgICAgPSAzO1xuY29uc3QgRW5hYmxlU2l6ZUNvbnN0cmFpbnRzTWV0aG9kICAgICAgID0gNDtcbmNvbnN0IEZvY3VzTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICA9IDU7XG5jb25zdCBGb3JjZVJlbG9hZE1ldGhvZCAgICAgICAgICAgICAgICAgPSA2O1xuY29uc3QgRnVsbHNjcmVlbk1ldGhvZCAgICAgICAgICAgICAgICAgID0gNztcbmNvbnN0IEdldFNjcmVlbk1ldGhvZCAgICAgICAgICAgICAgICAgICA9IDg7XG5jb25zdCBHZXRab29tTWV0aG9kICAgICAgICAgICAgICAgICAgICAgPSA5O1xuY29uc3QgSGVpZ2h0TWV0aG9kICAgICAgICAgICAgICAgICAgICAgID0gMTA7XG5jb25zdCBIaWRlTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICAgPSAxMTtcbmNvbnN0IElzRm9jdXNlZE1ldGhvZCAgICAgICAgICAgICAgICAgICA9IDEyO1xuY29uc3QgSXNGdWxsc2NyZWVuTWV0aG9kICAgICAgICAgICAgICAgID0gMTM7XG5jb25zdCBJc01heGltaXNlZE1ldGhvZCAgICAgICAgICAgICAgICAgPSAxNDtcbmNvbnN0IElzTWluaW1pc2VkTWV0aG9kICAgICAgICAgICAgICAgICA9IDE1O1xuY29uc3QgTWF4aW1pc2VNZXRob2QgICAgICAgICAgICAgICAgICAgID0gMTY7XG5jb25zdCBNaW5pbWlzZU1ldGhvZCAgICAgICAgICAgICAgICAgICAgPSAxNztcbmNvbnN0IE5hbWVNZXRob2QgICAgICAgICAgICAgICAgICAgICAgICA9IDE4O1xuY29uc3QgT3BlbkRldlRvb2xzTWV0aG9kICAgICAgICAgICAgICAgID0gMTk7XG5jb25zdCBSZWxhdGl2ZVBvc2l0aW9uTWV0aG9kICAgICAgICAgICAgPSAyMDtcbmNvbnN0IFJlbG9hZE1ldGhvZCAgICAgICAgICAgICAgICAgICAgICA9IDIxO1xuY29uc3QgUmVzaXphYmxlTWV0aG9kICAgICAgICAgICAgICAgICAgID0gMjI7XG5jb25zdCBSZXN0b3JlTWV0aG9kICAgICAgICAgICAgICAgICAgICAgPSAyMztcbmNvbnN0IFNldFBvc2l0aW9uTWV0aG9kICAgICAgICAgICAgICAgICA9IDI0O1xuY29uc3QgU2V0QWx3YXlzT25Ub3BNZXRob2QgICAgICAgICAgICAgID0gMjU7XG5jb25zdCBTZXRCYWNrZ3JvdW5kQ29sb3VyTWV0aG9kICAgICAgICAgPSAyNjtcbmNvbnN0IFNldEZyYW1lbGVzc01ldGhvZCAgICAgICAgICAgICAgICA9IDI3O1xuY29uc3QgU2V0RnVsbHNjcmVlbkJ1dHRvbkVuYWJsZWRNZXRob2QgID0gMjg7XG5jb25zdCBTZXRNYXhTaXplTWV0aG9kICAgICAgICAgICAgICAgICAgPSAyOTtcbmNvbnN0IFNldE1pblNpemVNZXRob2QgICAgICAgICAgICAgICAgICA9IDMwO1xuY29uc3QgU2V0UmVsYXRpdmVQb3NpdGlvbk1ldGhvZCAgICAgICAgID0gMzE7XG5jb25zdCBTZXRSZXNpemFibGVNZXRob2QgICAgICAgICAgICAgICAgPSAzMjtcbmNvbnN0IFNldFNpemVNZXRob2QgICAgICAgICAgICAgICAgICAgICA9IDMzO1xuY29uc3QgU2V0VGl0bGVNZXRob2QgICAgICAgICAgICAgICAgICAgID0gMzQ7XG5jb25zdCBTZXRab29tTWV0aG9kICAgICAgICAgICAgICAgICAgICAgPSAzNTtcbmNvbnN0IFNob3dNZXRob2QgICAgICAgICAgICAgICAgICAgICAgICA9IDM2O1xuY29uc3QgU2l6ZU1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgID0gMzc7XG5jb25zdCBUb2dnbGVGdWxsc2NyZWVuTWV0aG9kICAgICAgICAgICAgPSAzODtcbmNvbnN0IFRvZ2dsZU1heGltaXNlTWV0aG9kICAgICAgICAgICAgICA9IDM5O1xuY29uc3QgVG9nZ2xlRnJhbWVsZXNzTWV0aG9kICAgICAgICAgICAgID0gNDA7IFxuY29uc3QgVW5GdWxsc2NyZWVuTWV0aG9kICAgICAgICAgICAgICAgID0gNDE7XG5jb25zdCBVbk1heGltaXNlTWV0aG9kICAgICAgICAgICAgICAgICAgPSA0MjtcbmNvbnN0IFVuTWluaW1pc2VNZXRob2QgICAgICAgICAgICAgICAgICA9IDQzO1xuY29uc3QgV2lkdGhNZXRob2QgICAgICAgICAgICAgICAgICAgICAgID0gNDQ7XG5jb25zdCBab29tTWV0aG9kICAgICAgICAgICAgICAgICAgICAgICAgPSA0NTtcbmNvbnN0IFpvb21Jbk1ldGhvZCAgICAgICAgICAgICAgICAgICAgICA9IDQ2O1xuY29uc3QgWm9vbU91dE1ldGhvZCAgICAgICAgICAgICAgICAgICAgID0gNDc7XG5jb25zdCBab29tUmVzZXRNZXRob2QgICAgICAgICAgICAgICAgICAgPSA0ODtcbmNvbnN0IFNuYXBBc3Npc3RNZXRob2QgICAgICAgICAgICAgICAgICA9IDQ5O1xuY29uc3QgRmlsZXNEcm9wcGVkICAgICAgICAgICAgICAgICAgICAgID0gNTA7XG5jb25zdCBQcmludE1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgPSA1MTtcbmNvbnN0IFNldFNjcmVlbk1ldGhvZCAgICAgICAgICAgICAgICAgICA9IDUyO1xuXG4vKipcbiAqIEZpbmRzIHRoZSBuZWFyZXN0IGRyb3AgdGFyZ2V0IGVsZW1lbnQgYnkgd2Fsa2luZyB1cCB0aGUgRE9NIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIGdldERyb3BUYXJnZXRFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsKTogRWxlbWVudCB8IG51bGwge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnQuY2xvc2VzdChgWyR7RFJPUF9UQVJHRVRfQVRUUklCVVRFfV1gKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB3ZSBjYW4gdXNlIFdlYlZpZXcyJ3MgcG9zdE1lc3NhZ2VXaXRoQWRkaXRpb25hbE9iamVjdHMgKFdpbmRvd3MpXG4gKiBBbHNvIGNoZWNrcyB0aGF0IEVuYWJsZUZpbGVEcm9wIGlzIHRydWUgZm9yIHRoaXMgd2luZG93LlxuICovXG5mdW5jdGlvbiBjYW5SZXNvbHZlRmlsZVBhdGhzKCk6IGJvb2xlYW4ge1xuICAgIC8vIE11c3QgaGF2ZSBXZWJWaWV3MidzIHBvc3RNZXNzYWdlV2l0aEFkZGl0aW9uYWxPYmplY3RzIEFQSSAoV2luZG93cyBvbmx5KVxuICAgIGlmICgod2luZG93IGFzIGFueSkuY2hyb21lPy53ZWJ2aWV3Py5wb3N0TWVzc2FnZVdpdGhBZGRpdGlvbmFsT2JqZWN0cyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gTXVzdCBoYXZlIEVuYWJsZUZpbGVEcm9wIHNldCB0byB0cnVlIGZvciB0aGlzIHdpbmRvd1xuICAgIC8vIFRoaXMgZmxhZyBpcyBzZXQgYnkgdGhlIEdvIGJhY2tlbmQgZHVyaW5nIHJ1bnRpbWUgaW5pdGlhbGl6YXRpb25cbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSB0cnVlO1xufVxuXG4vKipcbiAqIFNlbmQgZmlsZSBkcm9wIHRvIGJhY2tlbmQgdmlhIFdlYlZpZXcyIChXaW5kb3dzIG9ubHkpXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVGaWxlUGF0aHMoeDogbnVtYmVyLCB5OiBudW1iZXIsIGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcbiAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLmNocm9tZT8ud2Vidmlldz8ucG9zdE1lc3NhZ2VXaXRoQWRkaXRpb25hbE9iamVjdHMpIHtcbiAgICAgICAgKHdpbmRvdyBhcyBhbnkpLmNocm9tZS53ZWJ2aWV3LnBvc3RNZXNzYWdlV2l0aEFkZGl0aW9uYWxPYmplY3RzKGBmaWxlOmRyb3A6JHt4fToke3l9YCwgZmlsZXMpO1xuICAgIH1cbn1cblxuLy8gTmF0aXZlIGRyYWcgc3RhdGUgKExpbnV4L21hY09TIGludGVyY2VwdCBET00gZHJhZyBldmVudHMpXG5sZXQgbmF0aXZlRHJhZ0FjdGl2ZSA9IGZhbHNlO1xuXG4vKipcbiAqIENsZWFucyB1cCBuYXRpdmUgZHJhZyBzdGF0ZSBhbmQgaG92ZXIgZWZmZWN0cy5cbiAqIENhbGxlZCBvbiBkcm9wIG9yIHdoZW4gZHJhZyBsZWF2ZXMgdGhlIHdpbmRvdy5cbiAqL1xuZnVuY3Rpb24gY2xlYW51cE5hdGl2ZURyYWcoKTogdm9pZCB7XG4gICAgbmF0aXZlRHJhZ0FjdGl2ZSA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50RHJvcFRhcmdldCkge1xuICAgICAgICBjdXJyZW50RHJvcFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICB9XG59XG5cbi8qKlxuICogQ2FsbGVkIGZyb20gR28gd2hlbiBhIGZpbGUgZHJhZyBlbnRlcnMgdGhlIHdpbmRvdyBvbiBMaW51eC9tYWNPUy5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlRHJhZ0VudGVyKCk6IHZvaWQge1xuICAgIC8vIENoZWNrIGlmIGZpbGUgZHJvcHMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgd2luZG93XG4gICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBkb24ndCBhY3RpdmF0ZSBkcmFnIHN0YXRlXG4gICAgfVxuICAgIG5hdGl2ZURyYWdBY3RpdmUgPSB0cnVlO1xufVxuXG4vKipcbiAqIENhbGxlZCBmcm9tIEdvIHdoZW4gYSBmaWxlIGRyYWcgbGVhdmVzIHRoZSB3aW5kb3cgb24gTGludXgvbWFjT1MuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZURyYWdMZWF2ZSgpOiB2b2lkIHtcbiAgICBjbGVhbnVwTmF0aXZlRHJhZygpO1xufVxuXG4vKipcbiAqIENhbGxlZCBmcm9tIEdvIGR1cmluZyBmaWxlIGRyYWcgdG8gdXBkYXRlIGhvdmVyIHN0YXRlIG9uIExpbnV4L21hY09TLlxuICogQHBhcmFtIHggLSBYIGNvb3JkaW5hdGUgaW4gQ1NTIHBpeGVsc1xuICogQHBhcmFtIHkgLSBZIGNvb3JkaW5hdGUgaW4gQ1NTIHBpeGVsc1xuICovXG5mdW5jdGlvbiBoYW5kbGVEcmFnT3Zlcih4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghbmF0aXZlRHJhZ0FjdGl2ZSkgcmV0dXJuO1xuICAgIFxuICAgIC8vIENoZWNrIGlmIGZpbGUgZHJvcHMgYXJlIGVuYWJsZWQgZm9yIHRoaXMgd2luZG93XG4gICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBkb24ndCBzaG93IGhvdmVyIGVmZmVjdHNcbiAgICB9XG4gICAgXG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7XG4gICAgY29uc3QgZHJvcFRhcmdldCA9IGdldERyb3BUYXJnZXRFbGVtZW50KHRhcmdldEVsZW1lbnQpO1xuICAgIFxuICAgIGlmIChjdXJyZW50RHJvcFRhcmdldCAmJiBjdXJyZW50RHJvcFRhcmdldCAhPT0gZHJvcFRhcmdldCkge1xuICAgICAgICBjdXJyZW50RHJvcFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgfVxuICAgIFxuICAgIGlmIChkcm9wVGFyZ2V0KSB7XG4gICAgICAgIGRyb3BUYXJnZXQuY2xhc3NMaXN0LmFkZChEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IGRyb3BUYXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudERyb3BUYXJnZXQgPSBudWxsO1xuICAgIH1cbn1cblxuXG5cbi8vIEV4cG9ydCB0aGUgaGFuZGxlcnMgZm9yIHVzZSBieSBHbyB2aWEgaW5kZXgudHNcbmV4cG9ydCB7IGhhbmRsZURyYWdFbnRlciwgaGFuZGxlRHJhZ0xlYXZlLCBoYW5kbGVEcmFnT3ZlciB9O1xuXG4vKipcbiAqIEEgcmVjb3JkIGRlc2NyaWJpbmcgdGhlIHBvc2l0aW9uIG9mIGEgd2luZG93LlxuICovXG5pbnRlcmZhY2UgUG9zaXRpb24ge1xuICAgIC8qKiBUaGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgd2luZG93LiAqL1xuICAgIHg6IG51bWJlcjtcbiAgICAvKiogVGhlIHZlcnRpY2FsIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuICovXG4gICAgeTogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgcmVjb3JkIGRlc2NyaWJpbmcgdGhlIHNpemUgb2YgYSB3aW5kb3cuXG4gKi9cbmludGVyZmFjZSBTaXplIHtcbiAgICAvKiogVGhlIHdpZHRoIG9mIHRoZSB3aW5kb3cuICovXG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICAvKiogVGhlIGhlaWdodCBvZiB0aGUgd2luZG93LiAqL1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuXG4vLyBQcml2YXRlIGZpZWxkIG5hbWVzLlxuY29uc3QgY2FsbGVyU3ltID0gU3ltYm9sKFwiY2FsbGVyXCIpO1xuXG5jbGFzcyBXaW5kb3cge1xuICAgIC8vIFByaXZhdGUgZmllbGRzLlxuICAgIHByaXZhdGUgW2NhbGxlclN5bV06IChtZXNzYWdlOiBudW1iZXIsIGFyZ3M/OiBhbnkpID0+IFByb21pc2U8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpc2VzIGEgd2luZG93IG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdGFyZ2V0IHdpbmRvdy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcgPSAnJykge1xuICAgICAgICB0aGlzW2NhbGxlclN5bV0gPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLldpbmRvdywgbmFtZSlcblxuICAgICAgICAvLyBiaW5kIGluc3RhbmNlIG1ldGhvZCB0byBtYWtlIHRoZW0gZWFzaWx5IHVzYWJsZSBpbiBldmVudCBoYW5kbGVyc1xuICAgICAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhXaW5kb3cucHJvdG90eXBlKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG1ldGhvZCAhPT0gXCJjb25zdHJ1Y3RvclwiXG4gICAgICAgICAgICAgICAgJiYgdHlwZW9mICh0aGlzIGFzIGFueSlbbWV0aG9kXSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAodGhpcyBhcyBhbnkpW21ldGhvZF0gPSAodGhpcyBhcyBhbnkpW21ldGhvZF0uYmluZCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNwZWNpZmllZCB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3aW5kb3cgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIHdpbmRvdyBvYmplY3QuXG4gICAgICovXG4gICAgR2V0KG5hbWU6IHN0cmluZyk6IFdpbmRvdyB7XG4gICAgICAgIHJldHVybiBuZXcgV2luZG93KG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFBvc2l0aW9uKCk6IFByb21pc2U8UG9zaXRpb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShQb3NpdGlvbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2VudGVycyB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uXG4gICAgICovXG4gICAgQ2VudGVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKENlbnRlck1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgQ2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oQ2xvc2VNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc2FibGVzIG1pbi9tYXggc2l6ZSBjb25zdHJhaW50cy5cbiAgICAgKi9cbiAgICBEaXNhYmxlU2l6ZUNvbnN0cmFpbnRzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKERpc2FibGVTaXplQ29uc3RyYWludHNNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgbWluL21heCBzaXplIGNvbnN0cmFpbnRzLlxuICAgICAqL1xuICAgIEVuYWJsZVNpemVDb25zdHJhaW50cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShFbmFibGVTaXplQ29uc3RyYWludHNNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY3VzZXMgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBGb2N1cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShGb2N1c01ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9yY2VzIHRoZSB3aW5kb3cgdG8gcmVsb2FkIHRoZSBwYWdlIGFzc2V0cy5cbiAgICAgKi9cbiAgICBGb3JjZVJlbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShGb3JjZVJlbG9hZE1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3dpdGNoZXMgdGhlIHdpbmRvdyB0byBmdWxsc2NyZWVuIG1vZGUuXG4gICAgICovXG4gICAgRnVsbHNjcmVlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShGdWxsc2NyZWVuTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzY3JlZW4gdGhhdCB0aGUgd2luZG93IGlzIG9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHNjcmVlbiB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBvbi5cbiAgICAgKi9cbiAgICBHZXRTY3JlZW4oKTogUHJvbWlzZTxTY3JlZW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShHZXRTY3JlZW5NZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgem9vbSBsZXZlbCBvZiB0aGUgd2luZG93LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgem9vbSBsZXZlbC5cbiAgICAgKi9cbiAgICBHZXRab29tKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oR2V0Wm9vbU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBIZWlnaHQoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShIZWlnaHRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGVzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgSGlkZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShIaWRlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHdpbmRvdyBpcyBmb2N1c2VkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBmb2N1c2VkLlxuICAgICAqL1xuICAgIElzRm9jdXNlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShJc0ZvY3VzZWRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2luZG93IGlzIGZ1bGxzY3JlZW4uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB3aW5kb3cgaXMgY3VycmVudGx5IGZ1bGxzY3JlZW4uXG4gICAgICovXG4gICAgSXNGdWxsc2NyZWVuKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKElzRnVsbHNjcmVlbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB3aW5kb3cgaXMgbWF4aW1pc2VkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgd2luZG93IGlzIGN1cnJlbnRseSBtYXhpbWlzZWQuXG4gICAgICovXG4gICAgSXNNYXhpbWlzZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oSXNNYXhpbWlzZWRNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2luZG93IGlzIG1pbmltaXNlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHdpbmRvdyBpcyBjdXJyZW50bHkgbWluaW1pc2VkLlxuICAgICAqL1xuICAgIElzTWluaW1pc2VkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKElzTWluaW1pc2VkTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYXhpbWlzZXMgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBNYXhpbWlzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShNYXhpbWlzZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWluaW1pc2VzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgTWluaW1pc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oTWluaW1pc2VNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgTmFtZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKE5hbWVNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBkZXZlbG9wbWVudCB0b29scyBwYW5lLlxuICAgICAqL1xuICAgIE9wZW5EZXZUb29scygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShPcGVuRGV2VG9vbHNNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgdG8gdGhlIHNjcmVlbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgUmVsYXRpdmVQb3NpdGlvbigpOiBQcm9taXNlPFBvc2l0aW9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oUmVsYXRpdmVQb3NpdGlvbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVsb2FkcyB0aGUgcGFnZSBhc3NldHMuXG4gICAgICovXG4gICAgUmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFJlbG9hZE1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB3aW5kb3cgaXMgcmVzaXphYmxlLlxuICAgICAqXG4gICAgICogQHJldHVybnMgV2hldGhlciB0aGUgd2luZG93IGlzIGN1cnJlbnRseSByZXNpemFibGUuXG4gICAgICovXG4gICAgUmVzaXphYmxlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFJlc2l6YWJsZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzdG9yZXMgdGhlIHdpbmRvdyB0byBpdHMgcHJldmlvdXMgc3RhdGUgaWYgaXQgd2FzIHByZXZpb3VzbHkgbWluaW1pc2VkLCBtYXhpbWlzZWQgb3IgZnVsbHNjcmVlbi5cbiAgICAgKi9cbiAgICBSZXN0b3JlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFJlc3RvcmVNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0geCAtIFRoZSBkZXNpcmVkIGhvcml6b250YWwgYWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdy5cbiAgICAgKiBAcGFyYW0geSAtIFRoZSBkZXNpcmVkIHZlcnRpY2FsIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgU2V0UG9zaXRpb24oeDogbnVtYmVyLCB5OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRQb3NpdGlvbk1ldGhvZCwgeyB4LCB5IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHdpbmRvdyB0byBiZSBhbHdheXMgb24gdG9wLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFsd2F5c09uVG9wIC0gV2hldGhlciB0aGUgd2luZG93IHNob3VsZCBzdGF5IG9uIHRvcC5cbiAgICAgKi9cbiAgICBTZXRBbHdheXNPblRvcChhbHdheXNPblRvcDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldEFsd2F5c09uVG9wTWV0aG9kLCB7IGFsd2F5c09uVG9wIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJhY2tncm91bmQgY29sb3VyIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gciAtIFRoZSBkZXNpcmVkIHJlZCBjb21wb25lbnQgb2YgdGhlIHdpbmRvdyBiYWNrZ3JvdW5kLlxuICAgICAqIEBwYXJhbSBnIC0gVGhlIGRlc2lyZWQgZ3JlZW4gY29tcG9uZW50IG9mIHRoZSB3aW5kb3cgYmFja2dyb3VuZC5cbiAgICAgKiBAcGFyYW0gYiAtIFRoZSBkZXNpcmVkIGJsdWUgY29tcG9uZW50IG9mIHRoZSB3aW5kb3cgYmFja2dyb3VuZC5cbiAgICAgKiBAcGFyYW0gYSAtIFRoZSBkZXNpcmVkIGFscGhhIGNvbXBvbmVudCBvZiB0aGUgd2luZG93IGJhY2tncm91bmQuXG4gICAgICovXG4gICAgU2V0QmFja2dyb3VuZENvbG91cihyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyLCBhOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRCYWNrZ3JvdW5kQ29sb3VyTWV0aG9kLCB7IHIsIGcsIGIsIGEgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgd2luZG93IGZyYW1lIGFuZCB0aXRsZSBiYXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZnJhbWVsZXNzIC0gV2hldGhlciB0aGUgd2luZG93IHNob3VsZCBiZSBmcmFtZWxlc3MuXG4gICAgICovXG4gICAgU2V0RnJhbWVsZXNzKGZyYW1lbGVzczogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldEZyYW1lbGVzc01ldGhvZCwgeyBmcmFtZWxlc3MgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgdGhlIHN5c3RlbSBmdWxsc2NyZWVuIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbmFibGVkIC0gV2hldGhlciB0aGUgZnVsbHNjcmVlbiBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWQuXG4gICAgICovXG4gICAgU2V0RnVsbHNjcmVlbkJ1dHRvbkVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldEZ1bGxzY3JlZW5CdXR0b25FbmFibGVkTWV0aG9kLCB7IGVuYWJsZWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gd2lkdGggLSBUaGUgZGVzaXJlZCBtYXhpbXVtIHdpZHRoIG9mIHRoZSB3aW5kb3cuXG4gICAgICogQHBhcmFtIGhlaWdodCAtIFRoZSBkZXNpcmVkIG1heGltdW0gaGVpZ2h0IG9mIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgU2V0TWF4U2l6ZSh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNldE1heFNpemVNZXRob2QsIHsgd2lkdGgsIGhlaWdodCB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBtaW5pbXVtIHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB3aWR0aCAtIFRoZSBkZXNpcmVkIG1pbmltdW0gd2lkdGggb2YgdGhlIHdpbmRvdy5cbiAgICAgKiBAcGFyYW0gaGVpZ2h0IC0gVGhlIGRlc2lyZWQgbWluaW11bSBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRNaW5TaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0TWluU2l6ZU1ldGhvZCwgeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cgdG8gdGhlIHNjcmVlbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB4IC0gVGhlIGRlc2lyZWQgaG9yaXpvbnRhbCByZWxhdGl2ZSBwb3NpdGlvbiBvZiB0aGUgd2luZG93LlxuICAgICAqIEBwYXJhbSB5IC0gVGhlIGRlc2lyZWQgdmVydGljYWwgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRSZWxhdGl2ZVBvc2l0aW9uKHg6IG51bWJlciwgeTogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0UmVsYXRpdmVQb3NpdGlvbk1ldGhvZCwgeyB4LCB5IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgd2hldGhlciB0aGUgd2luZG93IGlzIHJlc2l6YWJsZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXNpemFibGUgLSBXaGV0aGVyIHRoZSB3aW5kb3cgc2hvdWxkIGJlIHJlc2l6YWJsZS5cbiAgICAgKi9cbiAgICBTZXRSZXNpemFibGUocmVzaXphYmxlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0UmVzaXphYmxlTWV0aG9kLCB7IHJlc2l6YWJsZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzaXplIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gd2lkdGggLSBUaGUgZGVzaXJlZCB3aWR0aCBvZiB0aGUgd2luZG93LlxuICAgICAqIEBwYXJhbSBoZWlnaHQgLSBUaGUgZGVzaXJlZCBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTZXRTaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oU2V0U2l6ZU1ldGhvZCwgeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRpdGxlIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGl0bGUgLSBUaGUgZGVzaXJlZCB0aXRsZSBvZiB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFNldFRpdGxlKHRpdGxlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRUaXRsZU1ldGhvZCwgeyB0aXRsZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB6b29tIGxldmVsIG9mIHRoZSB3aW5kb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gem9vbSAtIFRoZSBkZXNpcmVkIHpvb20gbGV2ZWwuXG4gICAgICovXG4gICAgU2V0Wm9vbSh6b29tOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRab29tTWV0aG9kLCB7IHpvb20gfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvd3MgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTaG93KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNob3dNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHNpemUgb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBTaXplKCk6IFByb21pc2U8U2l6ZT4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNpemVNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIHdpbmRvdyBiZXR3ZWVuIGZ1bGxzY3JlZW4gYW5kIG5vcm1hbC5cbiAgICAgKi9cbiAgICBUb2dnbGVGdWxsc2NyZWVuKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFRvZ2dsZUZ1bGxzY3JlZW5NZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIHdpbmRvdyBiZXR3ZWVuIG1heGltaXNlZCBhbmQgbm9ybWFsLlxuICAgICAqL1xuICAgIFRvZ2dsZU1heGltaXNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFRvZ2dsZU1heGltaXNlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIHRoZSB3aW5kb3cgYmV0d2VlbiBmcmFtZWxlc3MgYW5kIG5vcm1hbC5cbiAgICAgKi9cbiAgICBUb2dnbGVGcmFtZWxlc3MoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oVG9nZ2xlRnJhbWVsZXNzTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbi1mdWxsc2NyZWVucyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFVuRnVsbHNjcmVlbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShVbkZ1bGxzY3JlZW5NZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVuLW1heGltaXNlcyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFVuTWF4aW1pc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oVW5NYXhpbWlzZU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVW4tbWluaW1pc2VzIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgVW5NaW5pbWlzZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShVbk1pbmltaXNlTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB3aWR0aCBvZiB0aGUgd2luZG93LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgd2lkdGggb2YgdGhlIHdpbmRvdy5cbiAgICAgKi9cbiAgICBXaWR0aCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFdpZHRoTWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBab29tcyB0aGUgd2luZG93LlxuICAgICAqL1xuICAgIFpvb20oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oWm9vbU1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5jcmVhc2VzIHRoZSB6b29tIGxldmVsIG9mIHRoZSB3ZWJ2aWV3IGNvbnRlbnQuXG4gICAgICovXG4gICAgWm9vbUluKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFpvb21Jbk1ldGhvZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVjcmVhc2VzIHRoZSB6b29tIGxldmVsIG9mIHRoZSB3ZWJ2aWV3IGNvbnRlbnQuXG4gICAgICovXG4gICAgWm9vbU91dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShab29tT3V0TWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldHMgdGhlIHpvb20gbGV2ZWwgb2YgdGhlIHdlYnZpZXcgY29udGVudC5cbiAgICAgKi9cbiAgICBab29tUmVzZXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oWm9vbVJlc2V0TWV0aG9kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGZpbGUgZHJvcHMgb3JpZ2luYXRpbmcgZnJvbSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIChlLmcuLCBtYWNPUy9MaW51eCBuYXRpdmUgZHJhZy1hbmQtZHJvcCkuXG4gICAgICogR2F0aGVycyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZHJvcCB0YXJnZXQgZWxlbWVudCBhbmQgc2VuZHMgaXQgYmFjayB0byB0aGUgR28gYmFja2VuZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlbmFtZXMgLSBBbiBhcnJheSBvZiBmaWxlIHBhdGhzIChzdHJpbmdzKSB0aGF0IHdlcmUgZHJvcHBlZC5cbiAgICAgKiBAcGFyYW0geCAtIFRoZSB4LWNvb3JkaW5hdGUgb2YgdGhlIGRyb3AgZXZlbnQsIGluIGxvZ2ljYWwgKENTUykgcGl4ZWxzIHJlbGF0aXZlIHRvIHRoZSB3ZWJ2aWV3LlxuICAgICAqIEBwYXJhbSB5IC0gVGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgZHJvcCBldmVudCwgaW4gbG9naWNhbCAoQ1NTKSBwaXhlbHMgcmVsYXRpdmUgdG8gdGhlIHdlYnZpZXcuXG4gICAgICovXG4gICAgSGFuZGxlUGxhdGZvcm1GaWxlRHJvcChmaWxlbmFtZXM6IHN0cmluZ1tdLCB4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBDaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBpZ25vcmUgdGhlIGRyb3BcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7XG4gICAgICAgIGNvbnN0IGRyb3BUYXJnZXQgPSBnZXREcm9wVGFyZ2V0RWxlbWVudChlbGVtZW50KTtcblxuICAgICAgICBpZiAoIWRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIC8vIERyb3Agd2FzIG5vdCBvbiBhIGRlc2lnbmF0ZWQgZHJvcCB0YXJnZXQgLSBpZ25vcmVcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnREZXRhaWxzID0ge1xuICAgICAgICAgICAgaWQ6IGRyb3BUYXJnZXQuaWQsXG4gICAgICAgICAgICBjbGFzc0xpc3Q6IEFycmF5LmZyb20oZHJvcFRhcmdldC5jbGFzc0xpc3QpLFxuICAgICAgICAgICAgYXR0cmlidXRlczoge30gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkcm9wVGFyZ2V0LmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBkcm9wVGFyZ2V0LmF0dHJpYnV0ZXNbaV07XG4gICAgICAgICAgICBlbGVtZW50RGV0YWlscy5hdHRyaWJ1dGVzW2F0dHIubmFtZV0gPSBhdHRyLnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgICAgIGZpbGVuYW1lcyxcbiAgICAgICAgICAgIHgsXG4gICAgICAgICAgICB5LFxuICAgICAgICAgICAgZWxlbWVudERldGFpbHMsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpc1tjYWxsZXJTeW1dKEZpbGVzRHJvcHBlZCwgcGF5bG9hZCk7XG4gICAgICAgIFxuICAgICAgICAvLyBDbGVhbiB1cCBuYXRpdmUgZHJhZyBzdGF0ZSBhZnRlciBkcm9wXG4gICAgICAgIGNsZWFudXBOYXRpdmVEcmFnKCk7XG4gICAgfVxuICBcbiAgICAvKipcbiAgICAgKiBNb3ZlcyB0aGUgd2luZG93IHRvIHRoZSBjZW50ZXIgb2YgdGhlIHNwZWNpZmllZCBzY3JlZW4ncyB3b3JrIGFyZWEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2NyZWVuSUQgLSBUaGUgSUQgb2YgdGhlIHRhcmdldCBzY3JlZW4uXG4gICAgICovXG4gICAgU2V0U2NyZWVuKHNjcmVlbklEOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGVyU3ltXShTZXRTY3JlZW5NZXRob2QsIHsgc2NyZWVuSUQgfSk7XG4gICAgfVxuXG4gICAgLyogVHJpZ2dlcnMgV2luZG93cyAxMSBTbmFwIEFzc2lzdCBmZWF0dXJlIChXaW5kb3dzIG9ubHkpLlxuICAgICAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byBwcmVzc2luZyBXaW4rWiBhbmQgc2hvd3Mgc25hcCBsYXlvdXQgb3B0aW9ucy5cbiAgICAgKi9cbiAgICBTbmFwQXNzaXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpc1tjYWxsZXJTeW1dKFNuYXBBc3Npc3RNZXRob2QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHRoZSBwcmludCBkaWFsb2cgZm9yIHRoZSB3aW5kb3cuXG4gICAgICovXG4gICAgUHJpbnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzW2NhbGxlclN5bV0oUHJpbnRNZXRob2QpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgd2luZG93IHdpdGhpbiB3aGljaCB0aGUgc2NyaXB0IGlzIHJ1bm5pbmcuXG4gKi9cbmNvbnN0IHRoaXNXaW5kb3cgPSBuZXcgV2luZG93KCcnKTtcblxuLyoqXG4gKiBTZXRzIHVwIGdsb2JhbCBkcmFnIGFuZCBkcm9wIGV2ZW50IGxpc3RlbmVycyBmb3IgZmlsZSBkcm9wcy5cbiAqIEhhbmRsZXMgdmlzdWFsIGZlZWRiYWNrIChob3ZlciBzdGF0ZSkgYW5kIGZpbGUgZHJvcCBwcm9jZXNzaW5nLlxuICovXG5mdW5jdGlvbiBzZXR1cERyb3BUYXJnZXRMaXN0ZW5lcnMoKSB7XG4gICAgY29uc3QgZG9jRWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBsZXQgZHJhZ0VudGVyQ291bnRlciA9IDA7XG5cbiAgICBkb2NFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIChldmVudCkgPT4ge1xuICAgICAgICBpZiAoIWV2ZW50LmRhdGFUcmFuc2Zlcj8udHlwZXMuaW5jbHVkZXMoJ0ZpbGVzJykpIHtcbiAgICAgICAgICAgIHJldHVybjsgLy8gT25seSBoYW5kbGUgZmlsZSBkcmFncywgbGV0IG90aGVyIGRyYWdzIHBhc3MgdGhyb3VnaFxuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIEFsd2F5cyBwcmV2ZW50IGRlZmF1bHQgdG8gc3RvcCBicm93c2VyIG5hdmlnYXRpb25cbiAgICAgICAgLy8gT24gV2luZG93cywgY2hlY2sgaWYgZmlsZSBkcm9wcyBhcmUgZW5hYmxlZCBmb3IgdGhpcyB3aW5kb3dcbiAgICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ25vbmUnOyAvLyBTaG93IFwibm8gZHJvcFwiIGN1cnNvclxuICAgICAgICAgICAgcmV0dXJuOyAvLyBGaWxlIGRyb3BzIGRpc2FibGVkLCBkb24ndCBzaG93IGhvdmVyIGVmZmVjdHNcbiAgICAgICAgfVxuICAgICAgICBkcmFnRW50ZXJDb3VudGVyKys7XG4gICAgICAgIFxuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKTtcbiAgICAgICAgY29uc3QgZHJvcFRhcmdldCA9IGdldERyb3BUYXJnZXRFbGVtZW50KHRhcmdldEVsZW1lbnQpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBob3ZlciBzdGF0ZVxuICAgICAgICBpZiAoY3VycmVudERyb3BUYXJnZXQgJiYgY3VycmVudERyb3BUYXJnZXQgIT09IGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICBkcm9wVGFyZ2V0LmNsYXNzTGlzdC5hZGQoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ2NvcHknO1xuICAgICAgICAgICAgY3VycmVudERyb3BUYXJnZXQgPSBkcm9wVGFyZ2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbm9uZSc7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9LCBmYWxzZSk7XG5cbiAgICBkb2NFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBPbmx5IGhhbmRsZSBmaWxlIGRyYWdzXG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gQWx3YXlzIHByZXZlbnQgZGVmYXVsdCB0byBzdG9wIGJyb3dzZXIgbmF2aWdhdGlvblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBjaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbm9uZSc7IC8vIFNob3cgXCJubyBkcm9wXCIgY3Vyc29yXG4gICAgICAgICAgICByZXR1cm47IC8vIEZpbGUgZHJvcHMgZGlzYWJsZWQsIGRvbid0IHNob3cgaG92ZXIgZWZmZWN0c1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgZHJvcCB0YXJnZXQgYXMgY3Vyc29yIG1vdmVzXG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xuICAgICAgICBjb25zdCBkcm9wVGFyZ2V0ID0gZ2V0RHJvcFRhcmdldEVsZW1lbnQodGFyZ2V0RWxlbWVudCk7XG4gICAgICAgIFxuICAgICAgICBpZiAoY3VycmVudERyb3BUYXJnZXQgJiYgY3VycmVudERyb3BUYXJnZXQgIT09IGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKGRyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIGlmICghZHJvcFRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoRFJPUF9UQVJHRVRfQUNUSVZFX0NMQVNTKSkge1xuICAgICAgICAgICAgICAgIGRyb3BUYXJnZXQuY2xhc3NMaXN0LmFkZChEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSc7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IGRyb3BUYXJnZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcbiAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sIGZhbHNlKTtcblxuICAgIGRvY0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIEFsd2F5cyBwcmV2ZW50IGRlZmF1bHQgdG8gc3RvcCBicm93c2VyIG5hdmlnYXRpb25cbiAgICAgICAgLy8gT24gV2luZG93cywgY2hlY2sgaWYgZmlsZSBkcm9wcyBhcmUgZW5hYmxlZCBmb3IgdGhpcyB3aW5kb3dcbiAgICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmZsYWdzPy5lbmFibGVGaWxlRHJvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gT24gTGludXgvV2ViS2l0R1RLIGFuZCBtYWNPUywgZHJhZ2xlYXZlIGZpcmVzIGltbWVkaWF0ZWx5IHdpdGggcmVsYXRlZFRhcmdldD1udWxsIHdoZW4gbmF0aXZlXG4gICAgICAgIC8vIGRyYWcgaGFuZGxpbmcgaXMgaW52b2x2ZWQuIElnbm9yZSB0aGVzZSBzcHVyaW91cyBldmVudHMgLSB3ZSdsbCBjbGVhbiB1cCBvbiBkcm9wIGluc3RlYWQuXG4gICAgICAgIGlmIChldmVudC5yZWxhdGVkVGFyZ2V0ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGRyYWdFbnRlckNvdW50ZXItLTtcbiAgICAgICAgXG4gICAgICAgIGlmIChkcmFnRW50ZXJDb3VudGVyID09PSAwIHx8IFxuICAgICAgICAgICAgKGN1cnJlbnREcm9wVGFyZ2V0ICYmICFjdXJyZW50RHJvcFRhcmdldC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0IGFzIE5vZGUpKSkge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnREcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgY3VycmVudERyb3BUYXJnZXQuY2xhc3NMaXN0LnJlbW92ZShEUk9QX1RBUkdFVF9BQ1RJVkVfQ0xBU1MpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnREcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRyYWdFbnRlckNvdW50ZXIgPSAwO1xuICAgICAgICB9XG4gICAgfSwgZmFsc2UpO1xuXG4gICAgZG9jRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBPbmx5IGhhbmRsZSBmaWxlIGRyb3BzXG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gQWx3YXlzIHByZXZlbnQgZGVmYXVsdCB0byBzdG9wIGJyb3dzZXIgbmF2aWdhdGlvblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBjaGVjayBpZiBmaWxlIGRyb3BzIGFyZSBlbmFibGVkIGZvciB0aGlzIHdpbmRvd1xuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZmxhZ3M/LmVuYWJsZUZpbGVEcm9wID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRyYWdFbnRlckNvdW50ZXIgPSAwO1xuICAgICAgICBcbiAgICAgICAgaWYgKGN1cnJlbnREcm9wVGFyZ2V0KSB7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKERST1BfVEFSR0VUX0FDVElWRV9DTEFTUyk7XG4gICAgICAgICAgICBjdXJyZW50RHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbiBXaW5kb3dzLCBoYW5kbGUgZmlsZSBkcm9wcyB2aWEgSmF2YVNjcmlwdFxuICAgICAgICAvLyBPbiBtYWNPUy9MaW51eCwgbmF0aXZlIGNvZGUgd2lsbCBjYWxsIEhhbmRsZVBsYXRmb3JtRmlsZURyb3BcbiAgICAgICAgaWYgKGNhblJlc29sdmVGaWxlUGF0aHMoKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZXM6IEZpbGVbXSA9IFtdO1xuICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ua2luZCA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gaXRlbS5nZXRBc0ZpbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlKSBmaWxlcy5wdXNoKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzLnB1c2goZmlsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmVGaWxlUGF0aHMoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSwgZmlsZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgZmFsc2UpO1xufVxuXG4vLyBJbml0aWFsaXplIGxpc3RlbmVycyB3aGVuIHRoZSBzY3JpcHQgbG9hZHNcbmlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHNldHVwRHJvcFRhcmdldExpc3RlbmVycygpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0aGlzV2luZG93O1xuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgKiBhcyBSdW50aW1lIGZyb20gXCIuLi9Ad2FpbHNpby9ydW50aW1lL3NyY1wiO1xuXG4vLyBOT1RFOiB0aGUgZm9sbG93aW5nIG1ldGhvZHMgTVVTVCBiZSBpbXBvcnRlZCBleHBsaWNpdGx5IGJlY2F1c2Ugb2YgaG93IGVzYnVpbGQgaW5qZWN0aW9uIHdvcmtzXG5pbXBvcnQgeyBFbmFibGUgYXMgRW5hYmxlV01MIH0gZnJvbSBcIi4uL0B3YWlsc2lvL3J1bnRpbWUvc3JjL3dtbFwiO1xuaW1wb3J0IHsgZGVidWdMb2cgfSBmcm9tIFwiLi4vQHdhaWxzaW8vcnVudGltZS9zcmMvdXRpbHNcIjtcblxud2luZG93LndhaWxzID0gUnVudGltZTtcbkVuYWJsZVdNTCgpO1xuXG5pZiAoREVCVUcpIHtcbiAgICBkZWJ1Z0xvZyhcIldhaWxzIFJ1bnRpbWUgTG9hZGVkXCIpXG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuXG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5TeXN0ZW0pO1xuXG5jb25zdCBTeXN0ZW1Jc0RhcmtNb2RlID0gMDtcbmNvbnN0IFN5c3RlbUVudmlyb25tZW50ID0gMTtcbmNvbnN0IFN5c3RlbUNhcGFiaWxpdGllcyA9IDI7XG5cbmNvbnN0IF9pbnZva2UgPSAoZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIFdpbmRvd3MgV2ViVmlldzJcbiAgICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5jaHJvbWU/LndlYnZpZXc/LnBvc3RNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLmNocm9tZS53ZWJ2aWV3LnBvc3RNZXNzYWdlLmJpbmQoKHdpbmRvdyBhcyBhbnkpLmNocm9tZS53ZWJ2aWV3KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBtYWNPUy9pT1MgV0tXZWJWaWV3XG4gICAgICAgIGVsc2UgaWYgKCh3aW5kb3cgYXMgYW55KS53ZWJraXQ/Lm1lc3NhZ2VIYW5kbGVycz8uWydleHRlcm5hbCddPy5wb3N0TWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS53ZWJraXQubWVzc2FnZUhhbmRsZXJzWydleHRlcm5hbCddLnBvc3RNZXNzYWdlLmJpbmQoKHdpbmRvdyBhcyBhbnkpLndlYmtpdC5tZXNzYWdlSGFuZGxlcnNbJ2V4dGVybmFsJ10pO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFuZHJvaWQgV2ViVmlldyAtIHVzZXMgYWRkSmF2YXNjcmlwdEludGVyZmFjZSB3aGljaCBleHBvc2VzIHdpbmRvdy53YWlscy5pbnZva2VcbiAgICAgICAgZWxzZSBpZiAoKHdpbmRvdyBhcyBhbnkpLndhaWxzPy5pbnZva2UpIHtcbiAgICAgICAgICAgIHJldHVybiAobXNnOiBhbnkpID0+ICh3aW5kb3cgYXMgYW55KS53YWlscy5pbnZva2UodHlwZW9mIG1zZyA9PT0gJ3N0cmluZycgPyBtc2cgOiBKU09OLnN0cmluZ2lmeShtc2cpKTtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2goZSkge31cblxuICAgIGNvbnNvbGUud2FybignXFxuJWNcdTI2QTBcdUZFMEYgQnJvd3NlciBFbnZpcm9ubWVudCBEZXRlY3RlZCAlY1xcblxcbiVjT25seSBVSSBwcmV2aWV3cyBhcmUgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyLiBGb3IgZnVsbCBmdW5jdGlvbmFsaXR5LCBwbGVhc2UgcnVuIHRoZSBhcHBsaWNhdGlvbiBpbiBkZXNrdG9wIG1vZGUuXFxuTW9yZSBpbmZvcm1hdGlvbiBhdDogaHR0cHM6Ly92My53YWlscy5pby9sZWFybi9idWlsZC8jdXNpbmctYS1icm93c2VyLWZvci1kZXZlbG9wbWVudFxcbicsXG4gICAgICAgICdiYWNrZ3JvdW5kOiAjZmZmZmZmOyBjb2xvcjogIzAwMDAwMDsgZm9udC13ZWlnaHQ6IGJvbGQ7IHBhZGRpbmc6IDRweCA4cHg7IGJvcmRlci1yYWRpdXM6IDRweDsgYm9yZGVyOiAycHggc29saWQgIzAwMDAwMDsnLFxuICAgICAgICAnYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7JyxcbiAgICAgICAgJ2NvbG9yOiAjZmZmZmZmOyBmb250LXN0eWxlOiBpdGFsaWM7IGZvbnQtd2VpZ2h0OiBib2xkOycpO1xuICAgIHJldHVybiBudWxsO1xufSkoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZShtc2c6IGFueSk6IHZvaWQge1xuICAgIF9pbnZva2U/Lihtc2cpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgc3lzdGVtIGRhcmsgbW9kZSBzdGF0dXMuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgaWYgdGhlIHN5c3RlbSBpcyBpbiBkYXJrIG1vZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc0RhcmtNb2RlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBjYWxsKFN5c3RlbUlzRGFya01vZGUpO1xufVxuXG4vKipcbiAqIEZldGNoZXMgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgYXBwbGljYXRpb24gZnJvbSB0aGUgc2VydmVyLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBjYXBhYmlsaXRpZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBDYXBhYmlsaXRpZXMoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgcmV0dXJuIGNhbGwoU3lzdGVtQ2FwYWJpbGl0aWVzKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPU0luZm8ge1xuICAgIC8qKiBUaGUgYnJhbmRpbmcgb2YgdGhlIE9TLiAqL1xuICAgIEJyYW5kaW5nOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBJRCBvZiB0aGUgT1MuICovXG4gICAgSUQ6IHN0cmluZztcbiAgICAvKiogVGhlIG5hbWUgb2YgdGhlIE9TLiAqL1xuICAgIE5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIHZlcnNpb24gb2YgdGhlIE9TLiAqL1xuICAgIFZlcnNpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudEluZm8ge1xuICAgIC8qKiBUaGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBzeXN0ZW0uICovXG4gICAgQXJjaDogc3RyaW5nO1xuICAgIC8qKiBUcnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nIGluIGRlYnVnIG1vZGUsIG90aGVyd2lzZSBmYWxzZS4gKi9cbiAgICBEZWJ1ZzogYm9vbGVhbjtcbiAgICAvKiogVGhlIG9wZXJhdGluZyBzeXN0ZW0gaW4gdXNlLiAqL1xuICAgIE9TOiBzdHJpbmc7XG4gICAgLyoqIERldGFpbHMgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICovXG4gICAgT1NJbmZvOiBPU0luZm87XG4gICAgLyoqIEFkZGl0aW9uYWwgcGxhdGZvcm0gaW5mb3JtYXRpb24uICovXG4gICAgUGxhdGZvcm1JbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBlbnZpcm9ubWVudCBkZXRhaWxzLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIG9iamVjdCBjb250YWluaW5nIE9TIGFuZCBzeXN0ZW0gYXJjaGl0ZWN0dXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRW52aXJvbm1lbnQoKTogUHJvbWlzZTxFbnZpcm9ubWVudEluZm8+IHtcbiAgICByZXR1cm4gY2FsbChTeXN0ZW1FbnZpcm9ubWVudCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0gaXMgV2luZG93cy5cbiAqXG4gKiBAcmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaXMgV2luZG93cywgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNXaW5kb3dzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1MgPT09IFwid2luZG93c1wiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtIGlzIExpbnV4LlxuICpcbiAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtIGlzIExpbnV4LCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc0xpbnV4KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1MgPT09IFwibGludXhcIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgYSBtYWNPUyBvcGVyYXRpbmcgc3lzdGVtLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGVudmlyb25tZW50IGlzIG1hY09TLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc01hYygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZW52aXJvbm1lbnQ/Lk9TID09PSBcImRhcndpblwiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtIGlzIGlPUy5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGlzIGlPUywgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNJT1MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmVudmlyb25tZW50Py5PUyA9PT0gXCJpb3NcIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbSBpcyBBbmRyb2lkLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaXMgQW5kcm9pZCwgb3RoZXJ3aXNlIGZhbHNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNBbmRyb2lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1MgPT09IFwiYW5kcm9pZFwiO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgYXBwIGlzIHJ1bm5pbmcgb24gYSBtb2JpbGUgT1MgKGlPUyBvciBBbmRyb2lkKS5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIG9uIGlPUyBvciBBbmRyb2lkLCBvdGhlcndpc2UgZmFsc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBJc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gSXNJT1MoKSB8fCBJc0FuZHJvaWQoKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGFwcCBpcyBydW5uaW5nIG9uIGEgZGVza3RvcCBPUyAobWFjT1MsIFdpbmRvd3Mgb3IgTGludXgpLlxuICpcbiAqIEByZXR1cm5zIFRydWUgb24gbWFjT1MsIFdpbmRvd3Mgb3IgTGludXgsIG90aGVyd2lzZSBmYWxzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzRGVza3RvcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gSXNNYWMoKSB8fCBJc1dpbmRvd3MoKSB8fCBJc0xpbnV4KCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGFyY2hpdGVjdHVyZSBpcyBBTUQ2NC5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGFyY2hpdGVjdHVyZSBpcyBBTUQ2NCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNBTUQ2NCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLl93YWlscz8uZW52aXJvbm1lbnQ/LkFyY2ggPT09IFwiYW1kNjRcIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgYXJjaGl0ZWN0dXJlIGlzIEFSTS5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjdXJyZW50IGFyY2hpdGVjdHVyZSBpcyBBUk0sIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzQVJNKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uQXJjaCA9PT0gXCJhcm1cIjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaXMgQVJNNjQgYXJjaGl0ZWN0dXJlLlxuICpcbiAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgZW52aXJvbm1lbnQgaXMgQVJNNjQgYXJjaGl0ZWN0dXJlLCBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIElzQVJNNjQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5fd2FpbHM/LmVudmlyb25tZW50Py5BcmNoID09PSBcImFybTY0XCI7XG59XG5cbi8qKlxuICogUmVwb3J0cyB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgcnVuIGluIGRlYnVnIG1vZGUuXG4gKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgYXBwIGlzIGJlaW5nIHJ1biBpbiBkZWJ1ZyBtb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSXNEZWJ1ZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbigod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uRGVidWcpO1xufVxuXG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuaW1wb3J0IHsgSXNEZWJ1ZyB9IGZyb20gXCIuL3N5c3RlbS5qc1wiO1xuaW1wb3J0IHsgZXZlbnRUYXJnZXQgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG4vLyBzZXR1cFxuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxuaWYgKGhhc0RPTSkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIGNvbnRleHRNZW51SGFuZGxlcik7XG59XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkNvbnRleHRNZW51KTtcblxuY29uc3QgQ29udGV4dE1lbnVPcGVuID0gMDtcblxuZnVuY3Rpb24gb3BlbkNvbnRleHRNZW51KGlkOiBzdHJpbmcsIHg6IG51bWJlciwgeTogbnVtYmVyLCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB2b2lkIGNhbGwoQ29udGV4dE1lbnVPcGVuLCB7aWQsIHgsIHksIGRhdGF9KTtcbn1cblxuZnVuY3Rpb24gY29udGV4dE1lbnVIYW5kbGVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnRUYXJnZXQoZXZlbnQpO1xuXG4gICAgLy8gQ2hlY2sgZm9yIGN1c3RvbSBjb250ZXh0IG1lbnVcbiAgICBjb25zdCBjdXN0b21Db250ZXh0TWVudSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRhcmdldCkuZ2V0UHJvcGVydHlWYWx1ZShcIi0tY3VzdG9tLWNvbnRleHRtZW51XCIpLnRyaW0oKTtcblxuICAgIGlmIChjdXN0b21Db250ZXh0TWVudSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBkYXRhID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1jdXN0b20tY29udGV4dG1lbnUtZGF0YVwiKTtcbiAgICAgICAgb3BlbkNvbnRleHRNZW51KGN1c3RvbUNvbnRleHRNZW51LCBldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZLCBkYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzRGVmYXVsdENvbnRleHRNZW51KGV2ZW50LCB0YXJnZXQpO1xuICAgIH1cbn1cblxuXG4vKlxuLS1kZWZhdWx0LWNvbnRleHRtZW51OiBhdXRvOyAoZGVmYXVsdCkgd2lsbCBzaG93IHRoZSBkZWZhdWx0IGNvbnRleHQgbWVudSBpZiBjb250ZW50RWRpdGFibGUgaXMgdHJ1ZSBPUiB0ZXh0IGhhcyBiZWVuIHNlbGVjdGVkIE9SIGVsZW1lbnQgaXMgaW5wdXQgb3IgdGV4dGFyZWFcbi0tZGVmYXVsdC1jb250ZXh0bWVudTogc2hvdzsgd2lsbCBhbHdheXMgc2hvdyB0aGUgZGVmYXVsdCBjb250ZXh0IG1lbnVcbi0tZGVmYXVsdC1jb250ZXh0bWVudTogaGlkZTsgd2lsbCBhbHdheXMgaGlkZSB0aGUgZGVmYXVsdCBjb250ZXh0IG1lbnVcblxuVGhpcyBydWxlIGlzIGluaGVyaXRlZCBsaWtlIG5vcm1hbCBDU1MgcnVsZXMsIHNvIG5lc3Rpbmcgd29ya3MgYXMgZXhwZWN0ZWRcbiovXG5mdW5jdGlvbiBwcm9jZXNzRGVmYXVsdENvbnRleHRNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCB0YXJnZXQ6IEhUTUxFbGVtZW50KSB7XG4gICAgLy8gRGVidWcgYnVpbGRzIGFsd2F5cyBzaG93IHRoZSBtZW51XG4gICAgaWYgKElzRGVidWcoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzcyBkZWZhdWx0IGNvbnRleHQgbWVudVxuICAgIHN3aXRjaCAod2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1kZWZhdWx0LWNvbnRleHRtZW51XCIpLnRyaW0oKSkge1xuICAgICAgICBjYXNlICdzaG93JzpcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAnaGlkZSc6XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGNvbnRlbnRFZGl0YWJsZSBpcyB0cnVlXG4gICAgaWYgKHRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdGV4dCBoYXMgYmVlbiBzZWxlY3RlZFxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBjb25zdCBoYXNTZWxlY3Rpb24gPSBzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnRvU3RyaW5nKCkubGVuZ3RoID4gMDtcbiAgICBpZiAoaGFzU2VsZWN0aW9uKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0aW9uLnJhbmdlQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdChpKTtcbiAgICAgICAgICAgIGNvbnN0IHJlY3RzID0gcmFuZ2UuZ2V0Q2xpZW50UmVjdHMoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcmVjdHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0gcmVjdHNbal07XG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQocmVjdC5sZWZ0LCByZWN0LnRvcCkgPT09IHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdGFnIGlzIGlucHV0IG9yIHRleHRhcmVhLlxuICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8IHRhcmdldCBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKGhhc1NlbGVjdGlvbiB8fCAoIXRhcmdldC5yZWFkT25seSAmJiAhdGFyZ2V0LmRpc2FibGVkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gaGlkZSBkZWZhdWx0IGNvbnRleHQgbWVudVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZnJvbSB0aGUgZmxhZyBtYXAuXG4gKlxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gcmV0cmlldmUgdGhlIHZhbHVlIGZvci5cbiAqIEByZXR1cm4gVGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldEZsYWcoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuX3dhaWxzLmZsYWdzW2tleV07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gcmV0cmlldmUgZmxhZyAnXCIgKyBrZXkgKyBcIic6IFwiICsgZSwgeyBjYXVzZTogZSB9KTtcbiAgICB9XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IGludm9rZSwgSXNXaW5kb3dzLCBJc0xpbnV4IH0gZnJvbSBcIi4vc3lzdGVtLmpzXCI7XG5pbXBvcnQgeyBHZXRGbGFnIH0gZnJvbSBcIi4vZmxhZ3MuanNcIjtcbmltcG9ydCB7IGNhblRyYWNrQnV0dG9ucywgZXZlbnRUYXJnZXQgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuXG4vLyBTZXR1cFxubGV0IGNhbkRyYWcgPSBmYWxzZTtcbmxldCBkcmFnZ2luZyA9IGZhbHNlO1xuXG5sZXQgcmVzaXphYmxlID0gZmFsc2U7XG5sZXQgY2FuUmVzaXplID0gZmFsc2U7XG5sZXQgcmVzaXppbmcgPSBmYWxzZTtcbmxldCByZXNpemVFZGdlOiBzdHJpbmcgPSBcIlwiO1xubGV0IGRlZmF1bHRDdXJzb3IgPSBcImF1dG9cIjtcblxubGV0IGJ1dHRvbnMgPSAwO1xuaW1wb3J0IHsgaGFzRE9NIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQuanNcIjtcblxubGV0IGJ1dHRvbnNUcmFja2VkID0gZmFsc2U7XG5cbmlmIChoYXNET00pIHtcbiAgICBidXR0b25zVHJhY2tlZCA9IGNhblRyYWNrQnV0dG9ucygpO1xuICAgIHdpbmRvdy5fd2FpbHMgPSB3aW5kb3cuX3dhaWxzIHx8IHt9O1xuICAgIHdpbmRvdy5fd2FpbHMuc2V0UmVzaXphYmxlID0gKHZhbHVlOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIHJlc2l6YWJsZSA9IHZhbHVlO1xuICAgICAgICBpZiAoIXJlc2l6YWJsZSkge1xuICAgICAgICAgICAgLy8gU3RvcCByZXNpemluZyBpZiBpbiBwcm9ncmVzcy5cbiAgICAgICAgICAgIGNhblJlc2l6ZSA9IHJlc2l6aW5nID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRSZXNpemUoKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbi8vIERlZmVyIGF0dGFjaGluZyBtb3VzZSBsaXN0ZW5lcnMgdW50aWwgd2Uga25vdyB3ZSdyZSBub3Qgb24gbW9iaWxlLlxubGV0IGRyYWdJbml0RG9uZSA9IGZhbHNlO1xuZnVuY3Rpb24gaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgb3MgPSAod2luZG93IGFzIGFueSkuX3dhaWxzPy5lbnZpcm9ubWVudD8uT1M7XG4gICAgaWYgKG9zID09PSBcImlvc1wiIHx8IG9zID09PSBcImFuZHJvaWRcIikgcmV0dXJuIHRydWU7XG4gICAgLy8gRmFsbGJhY2sgaGV1cmlzdGljIGlmIGVudmlyb25tZW50IG5vdCB5ZXQgc2V0XG4gICAgY29uc3QgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50IHx8IG5hdmlnYXRvci52ZW5kb3IgfHwgKHdpbmRvdyBhcyBhbnkpLm9wZXJhIHx8IFwiXCI7XG4gICAgcmV0dXJuIC9hbmRyb2lkfGlwaG9uZXxpcGFkfGlwb2R8aWVtb2JpbGV8d3BkZXNrdG9wL2kudGVzdCh1YSk7XG59XG5mdW5jdGlvbiB0cnlJbml0RHJhZ0hhbmRsZXJzKCk6IHZvaWQge1xuICAgIGlmIChkcmFnSW5pdERvbmUpIHJldHVybjtcbiAgICBpZiAoaXNNb2JpbGUoKSkgcmV0dXJuO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB1cGRhdGUsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdXBkYXRlLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB1cGRhdGUsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICBmb3IgKGNvbnN0IGV2IG9mIFsnY2xpY2snLCAnY29udGV4dG1lbnUnLCAnZGJsY2xpY2snXSkge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihldiwgc3VwcHJlc3NFdmVudCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgIH1cbiAgICBkcmFnSW5pdERvbmUgPSB0cnVlO1xufVxuaWYgKGhhc0RPTSkge1xuICAgIC8vIEF0dGVtcHQgaW1tZWRpYXRlIGluaXQgKGluIGNhc2UgZW52aXJvbm1lbnQgYWxyZWFkeSBwcmVzZW50KVxuICAgIHRyeUluaXREcmFnSGFuZGxlcnMoKTtcbiAgICAvLyBBbHNvIGF0dGVtcHQgb24gRE9NIHJlYWR5XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIHRyeUluaXREcmFnSGFuZGxlcnMsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICAvLyBBcyBhIGxhc3QgcmVzb3J0LCBwb2xsIGZvciBlbnZpcm9ubWVudCBmb3IgYSBzaG9ydCBwZXJpb2RcbiAgICBsZXQgZHJhZ0VudlBvbGxzID0gMDtcbiAgICBjb25zdCBkcmFnRW52UG9sbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGlmIChkcmFnSW5pdERvbmUpIHsgd2luZG93LmNsZWFySW50ZXJ2YWwoZHJhZ0VudlBvbGwpOyByZXR1cm47IH1cbiAgICAgICAgdHJ5SW5pdERyYWdIYW5kbGVycygpO1xuICAgICAgICBpZiAoKytkcmFnRW52UG9sbHMgPiAxMDApIHsgd2luZG93LmNsZWFySW50ZXJ2YWwoZHJhZ0VudlBvbGwpOyB9XG4gICAgfSwgNTApO1xufVxuXG5mdW5jdGlvbiBzdXBwcmVzc0V2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIC8vIFN1cHByZXNzIGNsaWNrIGV2ZW50cyB3aGlsZSByZXNpemluZyBvciBkcmFnZ2luZy5cbiAgICBpZiAoZHJhZ2dpbmcgfHwgcmVzaXppbmcpIHtcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbn1cblxuLy8gVXNlIGNvbnN0YW50cyB0byBhdm9pZCBjb21wYXJpbmcgc3RyaW5ncyBtdWx0aXBsZSB0aW1lcy5cbmNvbnN0IE1vdXNlRG93biA9IDA7XG5jb25zdCBNb3VzZVVwICAgPSAxO1xuY29uc3QgTW91c2VNb3ZlID0gMjtcblxuZnVuY3Rpb24gdXBkYXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgLy8gV2luZG93cyBzdXBwcmVzc2VzIG1vdXNlIGV2ZW50cyBhdCB0aGUgZW5kIG9mIGRyYWdnaW5nIG9yIHJlc2l6aW5nLFxuICAgIC8vIHNvIHdlIG5lZWQgdG8gYmUgc21hcnQgYW5kIHN5bnRoZXNpemUgYnV0dG9uIGV2ZW50cy5cblxuICAgIGxldCBldmVudFR5cGU6IG51bWJlciwgZXZlbnRCdXR0b25zID0gZXZlbnQuYnV0dG9ucztcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnbW91c2Vkb3duJzpcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IE1vdXNlRG93bjtcbiAgICAgICAgICAgIGlmICghYnV0dG9uc1RyYWNrZWQpIHsgZXZlbnRCdXR0b25zID0gYnV0dG9ucyB8ICgxIDw8IGV2ZW50LmJ1dHRvbik7IH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtb3VzZXVwJzpcbiAgICAgICAgICAgIGV2ZW50VHlwZSA9IE1vdXNlVXA7XG4gICAgICAgICAgICBpZiAoIWJ1dHRvbnNUcmFja2VkKSB7IGV2ZW50QnV0dG9ucyA9IGJ1dHRvbnMgJiB+KDEgPDwgZXZlbnQuYnV0dG9uKTsgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBldmVudFR5cGUgPSBNb3VzZU1vdmU7XG4gICAgICAgICAgICBpZiAoIWJ1dHRvbnNUcmFja2VkKSB7IGV2ZW50QnV0dG9ucyA9IGJ1dHRvbnM7IH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxldCByZWxlYXNlZCA9IGJ1dHRvbnMgJiB+ZXZlbnRCdXR0b25zO1xuICAgIGxldCBwcmVzc2VkID0gZXZlbnRCdXR0b25zICYgfmJ1dHRvbnM7XG5cbiAgICBidXR0b25zID0gZXZlbnRCdXR0b25zO1xuXG4gICAgLy8gU3ludGhlc2l6ZSBhIHJlbGVhc2UtcHJlc3Mgc2VxdWVuY2UgaWYgd2UgZGV0ZWN0IGEgcHJlc3Mgb2YgYW4gYWxyZWFkeSBwcmVzc2VkIGJ1dHRvbi5cbiAgICBpZiAoZXZlbnRUeXBlID09PSBNb3VzZURvd24gJiYgIShwcmVzc2VkICYgZXZlbnQuYnV0dG9uKSkge1xuICAgICAgICByZWxlYXNlZCB8PSAoMSA8PCBldmVudC5idXR0b24pO1xuICAgICAgICBwcmVzc2VkIHw9ICgxIDw8IGV2ZW50LmJ1dHRvbik7XG4gICAgfVxuXG4gICAgLy8gU3VwcHJlc3MgYWxsIGJ1dHRvbiBldmVudHMgZHVyaW5nIGRyYWdnaW5nIGFuZCByZXNpemluZyxcbiAgICAvLyB1bmxlc3MgdGhpcyBpcyBhIG1vdXNldXAgZXZlbnQgdGhhdCBpcyBlbmRpbmcgYSBkcmFnIGFjdGlvbi5cbiAgICBpZiAoXG4gICAgICAgIGV2ZW50VHlwZSAhPT0gTW91c2VNb3ZlIC8vIEZhc3QgcGF0aCBmb3IgbW91c2Vtb3ZlXG4gICAgICAgICYmIHJlc2l6aW5nXG4gICAgICAgIHx8IChcbiAgICAgICAgICAgIGRyYWdnaW5nXG4gICAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAgICAgZXZlbnRUeXBlID09PSBNb3VzZURvd25cbiAgICAgICAgICAgICAgICB8fCBldmVudC5idXR0b24gIT09IDBcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICkge1xuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHJlbGVhc2VzXG4gICAgaWYgKHJlbGVhc2VkICYgMSkgeyBwcmltYXJ5VXAoZXZlbnQpOyB9XG4gICAgLy8gSGFuZGxlIHByZXNzZXNcbiAgICBpZiAocHJlc3NlZCAmIDEpIHsgcHJpbWFyeURvd24oZXZlbnQpOyB9XG5cbiAgICAvLyBIYW5kbGUgbW91c2Vtb3ZlXG4gICAgaWYgKGV2ZW50VHlwZSA9PT0gTW91c2VNb3ZlKSB7IG9uTW91c2VNb3ZlKGV2ZW50KTsgfTtcbn1cblxuZnVuY3Rpb24gcHJpbWFyeURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBSZXNldCByZWFkaW5lc3Mgc3RhdGUuXG4gICAgY2FuRHJhZyA9IGZhbHNlO1xuICAgIGNhblJlc2l6ZSA9IGZhbHNlO1xuXG4gICAgLy8gSWdub3JlIHJlcGVhdGVkIGNsaWNrcyBvbiBtYWNPUyBhbmQgTGludXguXG4gICAgaWYgKCFJc1dpbmRvd3MoKSkge1xuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21vdXNlZG93bicgJiYgZXZlbnQuYnV0dG9uID09PSAwICYmIGV2ZW50LmRldGFpbCAhPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc2l6ZUVkZ2UpIHtcbiAgICAgICAgLy8gRG8gbm90IGFybSBlZGdlIHJlc2l6ZSBmcm9tIHN5bnRoZXNpemVkIHByZXNzZXMgb2JzZXJ2ZWQgb24gbW92ZS91cDpcbiAgICAgICAgLy8gZW50ZXJpbmcgdGhlIHdpbmRvdyB3aXRoIHRoZSBwcmltYXJ5IGJ1dHRvbiBhbHJlYWR5IGhlbGQgc2hvdWxkIG5vdFxuICAgICAgICAvLyBzdGVhbCBhbm90aGVyIGdlc3R1cmUgaW50byBhIHJlc2l6ZS5cbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgIT09ICdtb3VzZWRvd24nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZWFkeSB0byByZXNpemUgaWYgdGhlIHByaW1hcnkgYnV0dG9uIHdhcyBwcmVzc2VkIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICAgICAgY2FuUmVzaXplID0gdHJ1ZTtcbiAgICAgICAgLy8gRG8gbm90IHN0YXJ0IGRyYWcgb3BlcmF0aW9ucyB3aGVuIG9uIHJlc2l6ZSBlZGdlcy5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJldHJpZXZlIHRhcmdldCBlbGVtZW50XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnRUYXJnZXQoZXZlbnQpO1xuXG4gICAgLy8gUmVhZHkgdG8gZHJhZyBpZiB0aGUgcHJpbWFyeSBidXR0b24gd2FzIHByZXNzZWQgZm9yIHRoZSBmaXJzdCB0aW1lIG9uIGEgZHJhZ2dhYmxlIGVsZW1lbnQuXG4gICAgLy8gSWdub3JlIGNsaWNrcyBvbiB0aGUgc2Nyb2xsYmFyLlxuICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KTtcbiAgICBjYW5EcmFnID0gKFxuICAgICAgICBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS13YWlscy1kcmFnZ2FibGVcIikudHJpbSgpID09PSBcImRyYWdcIlxuICAgICAgICAmJiAoXG4gICAgICAgICAgICBldmVudC5vZmZzZXRYIC0gcGFyc2VGbG9hdChzdHlsZS5wYWRkaW5nTGVmdCkgPCB0YXJnZXQuY2xpZW50V2lkdGhcbiAgICAgICAgICAgICYmIGV2ZW50Lm9mZnNldFkgLSBwYXJzZUZsb2F0KHN0eWxlLnBhZGRpbmdUb3ApIDwgdGFyZ2V0LmNsaWVudEhlaWdodFxuICAgICAgICApXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gcHJpbWFyeVVwKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgLy8gU3RvcCBkcmFnZ2luZyBhbmQgcmVzaXppbmcuXG4gICAgY2FuRHJhZyA9IGZhbHNlO1xuICAgIGRyYWdnaW5nID0gZmFsc2U7XG4gICAgY2FuUmVzaXplID0gZmFsc2U7XG4gICAgcmVzaXppbmcgPSBmYWxzZTtcbn1cblxuY29uc3QgY3Vyc29yRm9yRWRnZSA9IE9iamVjdC5mcmVlemUoe1xuICAgIFwic2UtcmVzaXplXCI6IFwibndzZS1yZXNpemVcIixcbiAgICBcInN3LXJlc2l6ZVwiOiBcIm5lc3ctcmVzaXplXCIsXG4gICAgXCJudy1yZXNpemVcIjogXCJud3NlLXJlc2l6ZVwiLFxuICAgIFwibmUtcmVzaXplXCI6IFwibmVzdy1yZXNpemVcIixcbiAgICBcInctcmVzaXplXCI6IFwiZXctcmVzaXplXCIsXG4gICAgXCJuLXJlc2l6ZVwiOiBcIm5zLXJlc2l6ZVwiLFxuICAgIFwicy1yZXNpemVcIjogXCJucy1yZXNpemVcIixcbiAgICBcImUtcmVzaXplXCI6IFwiZXctcmVzaXplXCIsXG59KVxuXG5mdW5jdGlvbiBzZXRSZXNpemUoZWRnZT86IGtleW9mIHR5cGVvZiBjdXJzb3JGb3JFZGdlKTogdm9pZCB7XG4gICAgaWYgKGVkZ2UpIHtcbiAgICAgICAgaWYgKCFyZXNpemVFZGdlKSB7IGRlZmF1bHRDdXJzb3IgPSBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvcjsgfVxuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IGN1cnNvckZvckVkZ2VbZWRnZV07XG4gICAgfSBlbHNlIGlmICghZWRnZSAmJiByZXNpemVFZGdlKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gZGVmYXVsdEN1cnNvcjtcbiAgICB9XG5cbiAgICByZXNpemVFZGdlID0gZWRnZSB8fCBcIlwiO1xufVxuXG5mdW5jdGlvbiBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmIChjYW5SZXNpemUgJiYgcmVzaXplRWRnZSkge1xuICAgICAgICAvLyBTdGFydCByZXNpemluZy5cbiAgICAgICAgcmVzaXppbmcgPSB0cnVlO1xuICAgICAgICBpbnZva2UoXCJ3YWlsczpyZXNpemU6XCIgKyByZXNpemVFZGdlKTtcbiAgICB9IGVsc2UgaWYgKGNhbkRyYWcpIHtcbiAgICAgICAgLy8gU3RhcnQgZHJhZ2dpbmcuXG4gICAgICAgIGRyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgaW52b2tlKFwid2FpbHM6ZHJhZ1wiKTtcbiAgICB9XG5cbiAgICBpZiAoZHJhZ2dpbmcgfHwgcmVzaXppbmcpIHtcbiAgICAgICAgLy8gRWl0aGVyIGRyYWcgb3IgcmVzaXplIGlzIG9uZ29pbmcsXG4gICAgICAgIC8vIHJlc2V0IHJlYWRpbmVzcyBhbmQgc3RvcCBwcm9jZXNzaW5nLlxuICAgICAgICBjYW5EcmFnID0gY2FuUmVzaXplID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXJlc2l6YWJsZSB8fCAoIUlzV2luZG93cygpICYmICEoSXNMaW51eCgpICYmIEdldEZsYWcoXCJmcmFtZWxlc3NcIikpKSkge1xuICAgICAgICBpZiAocmVzaXplRWRnZSkgeyBzZXRSZXNpemUoKTsgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzaXplSGFuZGxlSGVpZ2h0ID0gR2V0RmxhZyhcInN5c3RlbS5yZXNpemVIYW5kbGVIZWlnaHRcIikgfHwgNTtcbiAgICBjb25zdCByZXNpemVIYW5kbGVXaWR0aCA9IEdldEZsYWcoXCJzeXN0ZW0ucmVzaXplSGFuZGxlV2lkdGhcIikgfHwgNTtcblxuICAgIC8vIEV4dHJhIHBpeGVscyBmb3IgdGhlIGNvcm5lciBhcmVhcy5cbiAgICBjb25zdCBjb3JuZXJFeHRyYSA9IEdldEZsYWcoXCJyZXNpemVDb3JuZXJFeHRyYVwiKSB8fCAxMDtcblxuICAgIC8vIFdoZW4gYSBzY3JvbGxiYXIgaXMgcHJlc2VudCBhdCB0aGUgd2luZG93IGVkZ2UgaXQgY29uc3VtZXMgbW91c2UgZXZlbnRzIGluIHRoYXQgc3RyaXAuXG4gICAgLy8gU2hpZnQgdGhlIGVmZmVjdGl2ZSBjb250ZW50IGVkZ2UgaW53YXJkIHNvIHRoZSByZXNpemUgem9uZSBzaXRzIGp1c3QgYmVmb3JlIHRoZSBzY3JvbGxiYXIuXG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSBNYXRoLm1heCgwLCB3aW5kb3cuaW5uZXJXaWR0aCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCk7XG4gICAgY29uc3Qgc2Nyb2xsYmFySGVpZ2h0ID0gTWF0aC5tYXgoMCwgd2luZG93LmlubmVySGVpZ2h0IC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCk7XG4gICAgY29uc3QgcmlnaHRDb250ZW50RWRnZSA9IHdpbmRvdy5pbm5lcldpZHRoIC0gc2Nyb2xsYmFyV2lkdGg7XG4gICAgY29uc3QgYm90dG9tQ29udGVudEVkZ2UgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBzY3JvbGxiYXJIZWlnaHQ7XG5cbiAgICBjb25zdCByaWdodEJvcmRlciA9IGV2ZW50LmNsaWVudFggPCByaWdodENvbnRlbnRFZGdlICYmIChyaWdodENvbnRlbnRFZGdlIC0gZXZlbnQuY2xpZW50WCkgPCByZXNpemVIYW5kbGVXaWR0aDtcbiAgICBjb25zdCBsZWZ0Qm9yZGVyID0gZXZlbnQuY2xpZW50WCA8IHJlc2l6ZUhhbmRsZVdpZHRoO1xuICAgIGNvbnN0IHRvcEJvcmRlciA9IGV2ZW50LmNsaWVudFkgPCByZXNpemVIYW5kbGVIZWlnaHQ7XG4gICAgY29uc3QgYm90dG9tQm9yZGVyID0gZXZlbnQuY2xpZW50WSA8IGJvdHRvbUNvbnRlbnRFZGdlICYmIChib3R0b21Db250ZW50RWRnZSAtIGV2ZW50LmNsaWVudFkpIDwgcmVzaXplSGFuZGxlSGVpZ2h0O1xuXG4gICAgLy8gQWRqdXN0IGZvciBjb3JuZXIgYXJlYXMuXG4gICAgY29uc3QgcmlnaHRDb3JuZXIgPSBldmVudC5jbGllbnRYIDwgcmlnaHRDb250ZW50RWRnZSAmJiAocmlnaHRDb250ZW50RWRnZSAtIGV2ZW50LmNsaWVudFgpIDwgKHJlc2l6ZUhhbmRsZVdpZHRoICsgY29ybmVyRXh0cmEpO1xuICAgIGNvbnN0IGxlZnRDb3JuZXIgPSBldmVudC5jbGllbnRYIDwgKHJlc2l6ZUhhbmRsZVdpZHRoICsgY29ybmVyRXh0cmEpO1xuICAgIGNvbnN0IHRvcENvcm5lciA9IGV2ZW50LmNsaWVudFkgPCAocmVzaXplSGFuZGxlSGVpZ2h0ICsgY29ybmVyRXh0cmEpO1xuICAgIGNvbnN0IGJvdHRvbUNvcm5lciA9IGV2ZW50LmNsaWVudFkgPCBib3R0b21Db250ZW50RWRnZSAmJiAoYm90dG9tQ29udGVudEVkZ2UgLSBldmVudC5jbGllbnRZKSA8IChyZXNpemVIYW5kbGVIZWlnaHQgKyBjb3JuZXJFeHRyYSk7XG5cbiAgICBpZiAoIWxlZnRDb3JuZXIgJiYgIXRvcENvcm5lciAmJiAhYm90dG9tQ29ybmVyICYmICFyaWdodENvcm5lcikge1xuICAgICAgICAvLyBPcHRpbWlzYXRpb246IG91dCBvZiBhbGwgY29ybmVyIGFyZWFzIGltcGxpZXMgb3V0IG9mIGJvcmRlcnMuXG4gICAgICAgIHNldFJlc2l6ZSgpO1xuICAgIH1cbiAgICAvLyBEZXRlY3QgY29ybmVycy5cbiAgICBlbHNlIGlmIChyaWdodENvcm5lciAmJiBib3R0b21Db3JuZXIpIHNldFJlc2l6ZShcInNlLXJlc2l6ZVwiKTtcbiAgICBlbHNlIGlmIChsZWZ0Q29ybmVyICYmIGJvdHRvbUNvcm5lcikgc2V0UmVzaXplKFwic3ctcmVzaXplXCIpO1xuICAgIGVsc2UgaWYgKGxlZnRDb3JuZXIgJiYgdG9wQ29ybmVyKSBzZXRSZXNpemUoXCJudy1yZXNpemVcIik7XG4gICAgZWxzZSBpZiAodG9wQ29ybmVyICYmIHJpZ2h0Q29ybmVyKSBzZXRSZXNpemUoXCJuZS1yZXNpemVcIik7XG4gICAgLy8gRGV0ZWN0IGJvcmRlcnMuXG4gICAgZWxzZSBpZiAobGVmdEJvcmRlcikgc2V0UmVzaXplKFwidy1yZXNpemVcIik7XG4gICAgZWxzZSBpZiAodG9wQm9yZGVyKSBzZXRSZXNpemUoXCJuLXJlc2l6ZVwiKTtcbiAgICBlbHNlIGlmIChib3R0b21Cb3JkZXIpIHNldFJlc2l6ZShcInMtcmVzaXplXCIpO1xuICAgIGVsc2UgaWYgKHJpZ2h0Qm9yZGVyKSBzZXRSZXNpemUoXCJlLXJlc2l6ZVwiKTtcbiAgICAvLyBPdXQgb2YgYm9yZGVyIGFyZWEuXG4gICAgZWxzZSBzZXRSZXNpemUoKTtcbn1cbiIsICIvKlxuIF8gICAgIF9fICAgIF8gX19cbnwgfCAgIC8gL19fXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IGludm9rZSB9IGZyb20gXCIuL3N5c3RlbS5qc1wiO1xuaW1wb3J0IHsgd2hlblJlYWR5IH0gZnJvbSBcIi4vdXRpbHMuanNcIjtcbmltcG9ydCB7IGhhc0RPTSB9IGZyb20gXCIuL2Vudmlyb25tZW50LmpzXCI7XG5cbnR5cGUgTm9uQ2xpZW50UmVnaW9uS2luZCA9IFwiY2FwdGlvblwiIHwgXCJtaW5pbWl6ZVwiIHwgXCJtYXhpbWl6ZVwiIHwgXCJjbG9zZVwiO1xuXG5pbnRlcmZhY2UgTm9uQ2xpZW50UmVnaW9uIHtcbiAgICBraW5kOiBOb25DbGllbnRSZWdpb25LaW5kO1xuICAgIGxlZnQ6IG51bWJlcjtcbiAgICB0b3A6IG51bWJlcjtcbiAgICByaWdodDogbnVtYmVyO1xuICAgIGJvdHRvbTogbnVtYmVyO1xufVxuXG4vKlxuLS13YWlscy1ub24tY2xpZW50LXJlZ2lvbjogY2FwdGlvbjsgIG1hcmtzIGFuIGFyZWEgdGhhdCBjYW4gZHJhZyB0aGUgd2luZG93XG4tLXdhaWxzLW5vbi1jbGllbnQtcmVnaW9uOiBtaW5pbWl6ZTsgbWFya3MgYSBjdXN0b20gbWluaW1pemUgYnV0dG9uXG4tLXdhaWxzLW5vbi1jbGllbnQtcmVnaW9uOiBtYXhpbWl6ZTsgbWFya3MgYSBjdXN0b20gbWF4aW1pemUgYnV0dG9uXG4tLXdhaWxzLW5vbi1jbGllbnQtcmVnaW9uOiBjbG9zZTsgICAgbWFya3MgYSBjdXN0b20gY2xvc2UgYnV0dG9uXG4qL1xuY29uc3QgcmVnaW9uUHJvcGVydHkgPSBcIi0td2FpbHMtbm9uLWNsaWVudC1yZWdpb25cIjtcbmNvbnN0IHJ1bnRpbWVDb25maWdSZWFkeUV2ZW50ID0gXCJ3YWlsczpydW50aW1lLWNvbmZpZy1yZWFkeVwiO1xuY29uc3QgdmFsaWRSZWdpb25zID0gbmV3IFNldDxOb25DbGllbnRSZWdpb25LaW5kPihbXCJjYXB0aW9uXCIsIFwibWluaW1pemVcIiwgXCJtYXhpbWl6ZVwiLCBcImNsb3NlXCJdKTtcblxuLy8gU2V0dXBcbmlmIChoYXNET00pIHtcbiAgICB3aW5kb3cuX3dhaWxzID0gd2luZG93Ll93YWlscyB8fCB7fTtcbn1cblxubGV0IHVwZGF0ZVBlbmRpbmcgPSBmYWxzZTtcbmxldCBsYXN0UGF5bG9hZCA9IFwiXCI7XG5sZXQgb2JzZXJ2ZWRFbGVtZW50cyA9IG5ldyBTZXQ8RWxlbWVudD4oKTtcbmxldCByZXNpemVPYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXIgfCB1bmRlZmluZWQ7XG5sZXQgdHJhY2tpbmdTdGFydGVkID0gZmFsc2U7XG5cbmZ1bmN0aW9uIG5vcm1hbGlzZVJlZ2lvbktpbmQodmFsdWU6IHN0cmluZyk6IE5vbkNsaWVudFJlZ2lvbktpbmQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHJlZ2lvbiA9IHZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICh2YWxpZFJlZ2lvbnMuaGFzKHJlZ2lvbiBhcyBOb25DbGllbnRSZWdpb25LaW5kKSkge1xuICAgICAgICByZXR1cm4gcmVnaW9uIGFzIE5vbkNsaWVudFJlZ2lvbktpbmQ7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIG5vbkNsaWVudFJlZ2lvbkZvckVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IE5vbkNsaWVudFJlZ2lvbktpbmQgfCB1bmRlZmluZWQge1xuICAgIGlmICghKGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICAgIGNvbnN0IHJlZ2lvbiA9IG5vcm1hbGlzZVJlZ2lvbktpbmQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShyZWdpb25Qcm9wZXJ0eSkpO1xuICAgIGlmICghcmVnaW9uKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgY29uc3QgcGFyZW50U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQpO1xuICAgICAgICAvLyBUaGUgQ1NTIHByb3BlcnR5IGlzIGluaGVyaXRlZC4gT25seSByZXBvcnQgdGhlIG91dGVybW9zdCBlbGVtZW50IGZvclxuICAgICAgICAvLyBlYWNoIGNvbnRpZ3VvdXMgcmVnaW9uIHNvIG5hdGl2ZSBoaXQgdGVzdGluZyBzZWVzIHN0YWJsZSByZWN0YW5nbGVzLlxuICAgICAgICBpZiAobm9ybWFsaXNlUmVnaW9uS2luZChwYXJlbnRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHJlZ2lvblByb3BlcnR5KSkgPT09IHJlZ2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZWdpb247XG59XG5cbmZ1bmN0aW9uIGlzVmlzaWJsZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkgIT09IFwibm9uZVwiICYmXG4gICAgICAgIHN0eWxlLnZpc2liaWxpdHkgIT09IFwiaGlkZGVuXCIgJiZcbiAgICAgICAgc3R5bGUuY29udGVudFZpc2liaWxpdHkgIT09IFwiaGlkZGVuXCI7XG59XG5cbmZ1bmN0aW9uIGVsZW1lbnRSZWdpb24oZWxlbWVudDogRWxlbWVudCk6IE5vbkNsaWVudFJlZ2lvbiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCEoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGtpbmQgPSBub25DbGllbnRSZWdpb25Gb3JFbGVtZW50KGVsZW1lbnQpO1xuICAgIGlmICgha2luZCB8fCAhaXNWaXNpYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgaWYgKHJlY3Qud2lkdGggPD0gMCB8fCByZWN0LmhlaWdodCA8PSAwKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gTmF0aXZlIGhpdCB0ZXN0aW5nIHJ1bnMgaW4gcGh5c2ljYWwgcGl4ZWxzLCB3aGlsZSBET00gZ2VvbWV0cnkgaXMgaW4gQ1NTIHBpeGVscy5cbiAgICBjb25zdCBzY2FsZSA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gICAgY29uc3QgbGVmdCA9IE1hdGguZmxvb3IocmVjdC5sZWZ0ICogc2NhbGUpO1xuICAgIGNvbnN0IHRvcCA9IE1hdGguZmxvb3IocmVjdC50b3AgKiBzY2FsZSk7XG4gICAgY29uc3QgcmlnaHQgPSBNYXRoLmNlaWwocmVjdC5yaWdodCAqIHNjYWxlKTtcbiAgICBjb25zdCBib3R0b20gPSBNYXRoLmNlaWwocmVjdC5ib3R0b20gKiBzY2FsZSk7XG5cbiAgICBpZiAocmlnaHQgPD0gbGVmdCB8fCBib3R0b20gPD0gdG9wKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsga2luZCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tIH07XG59XG5cbmZ1bmN0aW9uIHJlZ2lvbkVsZW1lbnRzKCk6IEVsZW1lbnRbXSB7XG4gICAgY29uc3QgZWxlbWVudHM6IEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgICAgICBlbGVtZW50cy5wdXNoKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICAgIGlmIChkb2N1bWVudC5ib2R5KSB7XG4gICAgICAgIGVsZW1lbnRzLnB1c2goZG9jdW1lbnQuYm9keSk7XG4gICAgICAgIC8vIEFwcGVuZCB2aWEgYSBsb29wOiBzcHJlYWRpbmcgYSBodWdlIE5vZGVMaXN0IGludG8gcHVzaCgpIG92ZXJmbG93c1xuICAgICAgICAvLyB0aGUgZW5naW5lJ3MgYXJndW1lbnQgbGltaXQgb24gdmVyeSBsYXJnZSBkb2N1bWVudHMuXG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoXCIqXCIpKSB7XG4gICAgICAgICAgICBlbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW1lbnRzO1xufVxuXG5mdW5jdGlvbiBvYnNlcnZlUmVnaW9uRWxlbWVudHMoZWxlbWVudHM6IEVsZW1lbnRbXSk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRyYWNrIHNpemUgY2hhbmdlcyBvbmx5IGZvciBhY3RpdmUgcmVnaW9uIGVsZW1lbnRzLiBET00gc3RydWN0dXJlIGFuZCBzdHlsZVxuICAgIC8vIGNoYW5nZXMgYXJlIGNvdmVyZWQgYnkgTXV0YXRpb25PYnNlcnZlciBpbiBzdGFydE5vbkNsaWVudFJlZ2lvblRyYWNraW5nKCkuXG4gICAgcmVzaXplT2JzZXJ2ZXIgPz89IG5ldyBSZXNpemVPYnNlcnZlcihzY2hlZHVsZVVwZGF0ZSk7XG4gICAgY29uc3QgbmV4dEVsZW1lbnRzID0gbmV3IFNldChlbGVtZW50cyk7XG5cbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2Ygb2JzZXJ2ZWRFbGVtZW50cykge1xuICAgICAgICBpZiAoIW5leHRFbGVtZW50cy5oYXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShlbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBuZXh0RWxlbWVudHMpIHtcbiAgICAgICAgaWYgKCFvYnNlcnZlZEVsZW1lbnRzLmhhcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9ic2VydmVkRWxlbWVudHMgPSBuZXh0RWxlbWVudHM7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZU5vbkNsaWVudFJlZ2lvbnMoKTogdm9pZCB7XG4gICAgdXBkYXRlUGVuZGluZyA9IGZhbHNlO1xuXG4gICAgY29uc3QgZWxlbWVudHMgPSByZWdpb25FbGVtZW50cygpO1xuICAgIGNvbnN0IHJlZ2lvbnM6IE5vbkNsaWVudFJlZ2lvbltdID0gW107XG4gICAgY29uc3QgYWN0aXZlRWxlbWVudHM6IEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKSB7XG4gICAgICAgIGNvbnN0IHJlZ2lvbiA9IGVsZW1lbnRSZWdpb24oZWxlbWVudCk7XG4gICAgICAgIGlmIChyZWdpb24pIHtcbiAgICAgICAgICAgIHJlZ2lvbnMucHVzaChyZWdpb24pO1xuICAgICAgICAgICAgYWN0aXZlRWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9ic2VydmVSZWdpb25FbGVtZW50cyhhY3RpdmVFbGVtZW50cyk7XG5cbiAgICBjb25zdCBwYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkoeyB2ZXJzaW9uOiAxLCByZWdpb25zIH0pO1xuICAgIGlmIChwYXlsb2FkID09PSBsYXN0UGF5bG9hZCkge1xuICAgICAgICAvLyBBdm9pZCBzZW5kaW5nIGR1cGxpY2F0ZSBuYXRpdmUgbWVzc2FnZXMgZHVyaW5nIHJlc2l6ZSBvciBzdHlsZSBjaHVybi5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxhc3RQYXlsb2FkID0gcGF5bG9hZDtcbiAgICBpbnZva2UoXCJ3YWlsczpub24tY2xpZW50LXJlZ2lvbjpcIiArIHBheWxvYWQpO1xufVxuXG5mdW5jdGlvbiBzY2hlZHVsZVVwZGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodXBkYXRlUGVuZGluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQmF0Y2ggcmVnaW9uIHVwZGF0ZXMgdG8gYW5pbWF0aW9uIGZyYW1lcyBzbyBsYXlvdXQgaXMgbWVhc3VyZWQgb25jZSBwZXIgZnJhbWUuXG4gICAgdXBkYXRlUGVuZGluZyA9IHRydWU7XG4gICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGVOb25DbGllbnRSZWdpb25zKTtcbn1cblxuZnVuY3Rpb24gc3RhcnROb25DbGllbnRSZWdpb25UcmFja2luZygpOiB2b2lkIHtcbiAgICBpZiAodHJhY2tpbmdTdGFydGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cmFja2luZ1N0YXJ0ZWQgPSB0cnVlO1xuICAgIC8vIFNlbmQgYW4gaW5pdGlhbCBlbXB0eSBvciBwb3B1bGF0ZWQgcmVnaW9uIGxpc3Qgb25jZSB0aGUgRE9NIGlzIHJlYWR5LlxuICAgIHNjaGVkdWxlVXBkYXRlKCk7XG5cbiAgICBjb25zdCBtdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoc2NoZWR1bGVVcGRhdGUpO1xuICAgIG11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHtcbiAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgc2NoZWR1bGVVcGRhdGUpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHNjaGVkdWxlVXBkYXRlLCB0cnVlKTtcbiAgICB3aW5kb3cudmlzdWFsVmlld3BvcnQ/LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgc2NoZWR1bGVVcGRhdGUpO1xuICAgIHdpbmRvdy52aXN1YWxWaWV3cG9ydD8uYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBzY2hlZHVsZVVwZGF0ZSk7XG59XG5cbmZ1bmN0aW9uIHRyeVN0YXJ0Tm9uQ2xpZW50UmVnaW9uVHJhY2tpbmcoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgb3MgPSB3aW5kb3cuX3dhaWxzLmVudmlyb25tZW50Py5PUztcbiAgICBpZiAob3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZW5hYmxlZCA9IHdpbmRvdy5fd2FpbHMuZmxhZ3M/Lm5vbkNsaWVudFJlZ2lvblRyYWNraW5nO1xuICAgIGlmIChvcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAgICAgICAgaWYgKGVuYWJsZWQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHdoZW5SZWFkeShzdGFydE5vbkNsaWVudFJlZ2lvblRyYWNraW5nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuaWYgKGhhc0RPTSAmJiAhdHJ5U3RhcnROb25DbGllbnRSZWdpb25UcmFja2luZygpKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIocnVudGltZUNvbmZpZ1JlYWR5RXZlbnQsIHRyeVN0YXJ0Tm9uQ2xpZW50UmVnaW9uVHJhY2tpbmcsIHsgb25jZTogdHJ1ZSB9KTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuaW1wb3J0IHsgbmV3UnVudGltZUNhbGxlciwgb2JqZWN0TmFtZXMgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5jb25zdCBjYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5BcHBsaWNhdGlvbik7XG5cbmNvbnN0IEhpZGVNZXRob2QgPSAwO1xuY29uc3QgU2hvd01ldGhvZCA9IDE7XG5jb25zdCBRdWl0TWV0aG9kID0gMjtcblxuLyoqXG4gKiBIaWRlcyBhIGNlcnRhaW4gbWV0aG9kIGJ5IGNhbGxpbmcgdGhlIEhpZGVNZXRob2QgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBIaWRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBjYWxsKEhpZGVNZXRob2QpO1xufVxuXG4vKipcbiAqIENhbGxzIHRoZSBTaG93TWV0aG9kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTaG93KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBjYWxsKFNob3dNZXRob2QpO1xufVxuXG4vKipcbiAqIENhbGxzIHRoZSBRdWl0TWV0aG9kIHRvIHRlcm1pbmF0ZSB0aGUgcHJvZ3JhbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFF1aXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGNhbGwoUXVpdE1ldGhvZCk7XG59XG4iLCAiLypcbiBfXHQgICBfX1x0ICBfIF9fXG58IHxcdCAvIC9fX18gXyhfKSAvX19fX1xufCB8IC98IC8gLyBfXyBgLyAvIC8gX19fL1xufCB8LyB8LyAvIC9fLyAvIC8gKF9fICApXG58X18vfF9fL1xcX18sXy9fL18vX19fXy9cblRoZSBlbGVjdHJvbiBhbHRlcm5hdGl2ZSBmb3IgR29cbihjKSBMZWEgQW50aG9ueSAyMDE5LXByZXNlbnRcbiovXG5cbmltcG9ydCB7IENhbmNlbGxhYmxlUHJvbWlzZSwgdHlwZSBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzIH0gZnJvbSBcIi4vY2FuY2VsbGFibGUuanNcIjtcbmltcG9ydCB7IG5ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzIH0gZnJvbSBcIi4vcnVudGltZS5qc1wiO1xuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSBcIi4vbmFub2lkLmpzXCI7XG5cbi8vIFNldHVwXG5pbXBvcnQgeyBoYXNET00gfSBmcm9tIFwiLi9lbnZpcm9ubWVudC5qc1wiO1xuXG5pZiAoaGFzRE9NKSB7XG4gICAgd2luZG93Ll93YWlscyA9IHdpbmRvdy5fd2FpbHMgfHwge307XG59XG5cbnR5cGUgUHJvbWlzZVJlc29sdmVycyA9IE9taXQ8Q2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxhbnk+LCBcInByb21pc2VcIiB8IFwib25jYW5jZWxsZWRcIj5cblxuY29uc3QgY2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuQ2FsbCk7XG5jb25zdCBjYW5jZWxDYWxsID0gbmV3UnVudGltZUNhbGxlcihvYmplY3ROYW1lcy5DYW5jZWxDYWxsKTtcbmNvbnN0IGNhbGxSZXNwb25zZXMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZVJlc29sdmVycz4oKTtcblxuY29uc3QgQ2FsbEJpbmRpbmcgPSAwO1xuY29uc3QgQ2FuY2VsTWV0aG9kID0gMFxuXG4vKipcbiAqIEhvbGRzIGFsbCByZXF1aXJlZCBpbmZvcm1hdGlvbiBmb3IgYSBiaW5kaW5nIGNhbGwuXG4gKiBNYXkgcHJvdmlkZSBlaXRoZXIgYSBtZXRob2QgSUQgb3IgYSBtZXRob2QgbmFtZSwgYnV0IG5vdCBib3RoLlxuICovXG5leHBvcnQgdHlwZSBDYWxsT3B0aW9ucyA9IHtcbiAgICAvKiogVGhlIG51bWVyaWMgSUQgb2YgdGhlIGJvdW5kIG1ldGhvZCB0byBjYWxsLiAqL1xuICAgIG1ldGhvZElEOiBudW1iZXI7XG4gICAgLyoqIFRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgYm91bmQgbWV0aG9kIHRvIGNhbGwuICovXG4gICAgbWV0aG9kTmFtZT86IG5ldmVyO1xuICAgIC8qKiBBcmd1bWVudHMgdG8gYmUgcGFzc2VkIGludG8gdGhlIGJvdW5kIG1ldGhvZC4gKi9cbiAgICBhcmdzOiBhbnlbXTtcbn0gfCB7XG4gICAgLyoqIFRoZSBudW1lcmljIElEIG9mIHRoZSBib3VuZCBtZXRob2QgdG8gY2FsbC4gKi9cbiAgICBtZXRob2RJRD86IG5ldmVyO1xuICAgIC8qKiBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGJvdW5kIG1ldGhvZCB0byBjYWxsLiAqL1xuICAgIG1ldGhvZE5hbWU6IHN0cmluZztcbiAgICAvKiogQXJndW1lbnRzIHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBib3VuZCBtZXRob2QuICovXG4gICAgYXJnczogYW55W107XG59O1xuXG4vLyBydW50aW1lLmpzIG5lZWRzIHRvIHVzZSBSdW50aW1lRXJyb3IgaW50ZXJuYWxseSB0byBwcm9wZXJseSBwYXJzZSBhbmQgcmV0dXJuXG4vLyBlcnJvcnMgZm9yIGJpbmRpbmcgY2FsbHMsIHNvIGl0IGhhZCB0byBtb3ZlIHRoZXJlLiBFeHBvcnRpbmcgaGVyZSBhZ2FpbiB0b1xuLy8ga2VlcCBmcm9tIGJyZWFraW5nIHRoZSBwdWJsaWMgQ2FsbCBpbnRlcmZhY2UuXG5leHBvcnQgeyBSdW50aW1lRXJyb3IgfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgdW5pcXVlIElEIHVzaW5nIHRoZSBuYW5vaWQgbGlicmFyeS5cbiAqXG4gKiBAcmV0dXJucyBBIHVuaXF1ZSBJRCB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBjYWxsUmVzcG9uc2VzIHNldC5cbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVJRCgpOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQ7XG4gICAgZG8ge1xuICAgICAgICByZXN1bHQgPSBuYW5vaWQoKTtcbiAgICB9IHdoaWxlIChjYWxsUmVzcG9uc2VzLmhhcyhyZXN1bHQpKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIENhbGwgYSBib3VuZCBtZXRob2QgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBjYWxsIG9wdGlvbnMuXG4gKlxuICogSW4gY2FzZSBvZiBmYWlsdXJlLCB0aGUgcmV0dXJuZWQgcHJvbWlzZSB3aWxsIHJlamVjdCB3aXRoIGFuIGV4Y2VwdGlvblxuICogYW1vbmcgUmVmZXJlbmNlRXJyb3IgKHVua25vd24gbWV0aG9kKSwgVHlwZUVycm9yICh3cm9uZyBhcmd1bWVudCBjb3VudCBvciB0eXBlKSxcbiAqIHtAbGluayBSdW50aW1lRXJyb3J9IChtZXRob2QgcmV0dXJuZWQgYW4gZXJyb3IpLCBvciBvdGhlciAobmV0d29yayBvciBpbnRlcm5hbCBlcnJvcnMpLlxuICogVGhlIGV4Y2VwdGlvbiBtaWdodCBoYXZlIGEgXCJjYXVzZVwiIGZpZWxkIHdpdGggdGhlIHZhbHVlIHJldHVybmVkXG4gKiBieSB0aGUgYXBwbGljYXRpb24tIG9yIHNlcnZpY2UtbGV2ZWwgZXJyb3IgbWFyc2hhbGluZyBmdW5jdGlvbnMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBBIG1ldGhvZCBjYWxsIGRlc2NyaXB0b3IuXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBjYWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ2FsbChvcHRpb25zOiBDYWxsT3B0aW9ucyk6IENhbmNlbGxhYmxlUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBpZCA9IGdlbmVyYXRlSUQoKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IENhbmNlbGxhYmxlUHJvbWlzZS53aXRoUmVzb2x2ZXJzPGFueT4oKTtcbiAgICBjYWxsUmVzcG9uc2VzLnNldChpZCwgeyByZXNvbHZlOiByZXN1bHQucmVzb2x2ZSwgcmVqZWN0OiByZXN1bHQucmVqZWN0IH0pO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IGNhbGwoQ2FsbEJpbmRpbmcsIE9iamVjdC5hc3NpZ24oeyBcImNhbGwtaWRcIjogaWQgfSwgb3B0aW9ucykpO1xuICAgIGxldCBydW5uaW5nID0gdHJ1ZTtcblxuICAgIHJlcXVlc3QudGhlbigocmVzKSA9PiB7XG4gICAgICAgIHJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgY2FsbFJlc3BvbnNlcy5kZWxldGUoaWQpO1xuICAgICAgICByZXN1bHQucmVzb2x2ZShyZXMpO1xuICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgcnVubmluZyA9IGZhbHNlO1xuICAgICAgICBjYWxsUmVzcG9uc2VzLmRlbGV0ZShpZCk7XG4gICAgICAgIHJlc3VsdC5yZWplY3QoZXJyKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNhbmNlbCA9ICgpID0+IHtcbiAgICAgICAgY2FsbFJlc3BvbnNlcy5kZWxldGUoaWQpO1xuICAgICAgICByZXR1cm4gY2FuY2VsQ2FsbChDYW5jZWxNZXRob2QsIHtcImNhbGwtaWRcIjogaWR9KS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3Igd2hpbGUgcmVxdWVzdGluZyBiaW5kaW5nIGNhbGwgY2FuY2VsbGF0aW9uOlwiLCBlcnIpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmVzdWx0Lm9uY2FuY2VsbGVkID0gKCkgPT4ge1xuICAgICAgICBpZiAocnVubmluZykge1xuICAgICAgICAgICAgcmV0dXJuIGNhbmNlbCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3QudGhlbihjYW5jZWwpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiByZXN1bHQucHJvbWlzZTtcbn1cblxuLyoqXG4gKiBDYWxscyBhIGJvdW5kIG1ldGhvZCBieSBuYW1lIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudHMuXG4gKiBTZWUge0BsaW5rIENhbGx9IGZvciBkZXRhaWxzLlxuICpcbiAqIEBwYXJhbSBtZXRob2ROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIG1ldGhvZCBpbiB0aGUgZm9ybWF0ICdwYWNrYWdlLnN0cnVjdC5tZXRob2QnLlxuICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIG1ldGhvZCBjYWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQnlOYW1lKG1ldGhvZE5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBDYW5jZWxsYWJsZVByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIENhbGwoeyBtZXRob2ROYW1lLCBhcmdzIH0pO1xufVxuXG4vKipcbiAqIENhbGxzIGEgbWV0aG9kIGJ5IGl0cyBudW1lcmljIElEIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudHMuXG4gKiBTZWUge0BsaW5rIENhbGx9IGZvciBkZXRhaWxzLlxuICpcbiAqIEBwYXJhbSBtZXRob2RJRCAtIFRoZSBJRCBvZiB0aGUgbWV0aG9kIHRvIGNhbGwuXG4gKiBAcGFyYW0gYXJncyAtIFRoZSBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICogQHJldHVybiBUaGUgcmVzdWx0IG9mIHRoZSBtZXRob2QgY2FsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJ5SUQobWV0aG9kSUQ6IG51bWJlciwgLi4uYXJnczogYW55W10pOiBDYW5jZWxsYWJsZVByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIENhbGwoeyBtZXRob2RJRCwgYXJncyB9KTtcbn1cbiIsICIvLyBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9pbnNwZWN0LWpzL2lzLWNhbGxhYmxlXG5cbi8vIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuLy9cbi8vIENvcHlyaWdodCAoYykgMjAxNSBKb3JkYW4gSGFyYmFuZFxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbi8vIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuLy8gU09GVFdBUkUuXG5cbnZhciBmblRvU3RyID0gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIHJlZmxlY3RBcHBseTogdHlwZW9mIFJlZmxlY3QuYXBwbHkgfCBmYWxzZSB8IG51bGwgPSB0eXBlb2YgUmVmbGVjdCA9PT0gJ29iamVjdCcgJiYgUmVmbGVjdCAhPT0gbnVsbCAmJiBSZWZsZWN0LmFwcGx5O1xudmFyIGJhZEFycmF5TGlrZTogYW55O1xudmFyIGlzQ2FsbGFibGVNYXJrZXI6IGFueTtcbmlmICh0eXBlb2YgcmVmbGVjdEFwcGx5ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydHkgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgICBiYWRBcnJheUxpa2UgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdsZW5ndGgnLCB7XG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBpc0NhbGxhYmxlTWFya2VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaXNDYWxsYWJsZU1hcmtlciA9IHt9O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICAgICAgICByZWZsZWN0QXBwbHkoZnVuY3Rpb24gKCkgeyB0aHJvdyA0MjsgfSwgbnVsbCwgYmFkQXJyYXlMaWtlKTtcbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgIGlmIChfICE9PSBpc0NhbGxhYmxlTWFya2VyKSB7XG4gICAgICAgICAgICByZWZsZWN0QXBwbHkgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufSBlbHNlIHtcbiAgICByZWZsZWN0QXBwbHkgPSBudWxsO1xufVxuXG52YXIgY29uc3RydWN0b3JSZWdleCA9IC9eXFxzKmNsYXNzXFxiLztcbnZhciBpc0VTNkNsYXNzRm4gPSBmdW5jdGlvbiBpc0VTNkNsYXNzRnVuY3Rpb24odmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBmblN0ciA9IGZuVG9TdHIuY2FsbCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBjb25zdHJ1Y3RvclJlZ2V4LnRlc3QoZm5TdHIpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBub3QgYSBmdW5jdGlvblxuICAgIH1cbn07XG5cbnZhciB0cnlGdW5jdGlvbk9iamVjdCA9IGZ1bmN0aW9uIHRyeUZ1bmN0aW9uVG9TdHIodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICAgIGlmIChpc0VTNkNsYXNzRm4odmFsdWUpKSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICBmblRvU3RyLmNhbGwodmFsdWUpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59O1xudmFyIHRvU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbnZhciBvYmplY3RDbGFzcyA9ICdbb2JqZWN0IE9iamVjdF0nO1xudmFyIGZuQ2xhc3MgPSAnW29iamVjdCBGdW5jdGlvbl0nO1xudmFyIGdlbkNsYXNzID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJztcbnZhciBkZGFDbGFzcyA9ICdbb2JqZWN0IEhUTUxBbGxDb2xsZWN0aW9uXSc7IC8vIElFIDExXG52YXIgZGRhQ2xhc3MyID0gJ1tvYmplY3QgSFRNTCBkb2N1bWVudC5hbGwgY2xhc3NdJztcbnZhciBkZGFDbGFzczMgPSAnW29iamVjdCBIVE1MQ29sbGVjdGlvbl0nOyAvLyBJRSA5LTEwXG52YXIgaGFzVG9TdHJpbmdUYWcgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmICEhU3ltYm9sLnRvU3RyaW5nVGFnOyAvLyBiZXR0ZXI6IHVzZSBgaGFzLXRvc3RyaW5ndGFnYFxuXG52YXIgaXNJRTY4ID0gISgwIGluIFssXSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc3BhcnNlLWFycmF5cywgY29tbWEtc3BhY2luZ1xuXG52YXIgaXNEREE6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuID0gZnVuY3Rpb24gaXNEb2N1bWVudERvdEFsbCgpIHsgcmV0dXJuIGZhbHNlOyB9O1xuaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBGaXJlZm94IDMgY2Fub25pY2FsaXplcyBEREEgdG8gdW5kZWZpbmVkIHdoZW4gaXQncyBub3QgYWNjZXNzZWQgZGlyZWN0bHlcbiAgICB2YXIgYWxsID0gZG9jdW1lbnQuYWxsO1xuICAgIGlmICh0b1N0ci5jYWxsKGFsbCkgPT09IHRvU3RyLmNhbGwoZG9jdW1lbnQuYWxsKSkge1xuICAgICAgICBpc0REQSA9IGZ1bmN0aW9uIGlzRG9jdW1lbnREb3RBbGwodmFsdWUpIHtcbiAgICAgICAgICAgIC8qIGdsb2JhbHMgZG9jdW1lbnQ6IGZhbHNlICovXG4gICAgICAgICAgICAvLyBpbiBJRSA2LTgsIHR5cGVvZiBkb2N1bWVudC5hbGwgaXMgXCJvYmplY3RcIiBhbmQgaXQncyB0cnV0aHlcbiAgICAgICAgICAgIGlmICgoaXNJRTY4IHx8ICF2YWx1ZSkgJiYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JykpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3RyID0gdG9TdHIuY2FsbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgPT09IGRkYUNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBzdHIgPT09IGRkYUNsYXNzMlxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RyID09PSBkZGFDbGFzczMgLy8gb3BlcmEgMTIuMTZcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0ciA9PT0gb2JqZWN0Q2xhc3MgLy8gSUUgNi04XG4gICAgICAgICAgICAgICAgICAgICkgJiYgdmFsdWUoJycpID09IG51bGw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyAvKiovIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzQ2FsbGFibGVSZWZBcHBseTxUPih2YWx1ZTogVCB8IHVua25vd24pOiB2YWx1ZSBpcyAoLi4uYXJnczogYW55W10pID0+IGFueSAge1xuICAgIGlmIChpc0REQSh2YWx1ZSkpIHsgcmV0dXJuIHRydWU7IH1cbiAgICBpZiAoIXZhbHVlKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgeyByZXR1cm4gZmFsc2U7IH1cbiAgICB0cnkge1xuICAgICAgICAocmVmbGVjdEFwcGx5IGFzIGFueSkodmFsdWUsIG51bGwsIGJhZEFycmF5TGlrZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZSAhPT0gaXNDYWxsYWJsZU1hcmtlcikgeyByZXR1cm4gZmFsc2U7IH1cbiAgICB9XG4gICAgcmV0dXJuICFpc0VTNkNsYXNzRm4odmFsdWUpICYmIHRyeUZ1bmN0aW9uT2JqZWN0KHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gaXNDYWxsYWJsZU5vUmVmQXBwbHk8VD4odmFsdWU6IFQgfCB1bmtub3duKTogdmFsdWUgaXMgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkge1xuICAgIGlmIChpc0REQSh2YWx1ZSkpIHsgcmV0dXJuIHRydWU7IH1cbiAgICBpZiAoIXZhbHVlKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBpZiAoaGFzVG9TdHJpbmdUYWcpIHsgcmV0dXJuIHRyeUZ1bmN0aW9uT2JqZWN0KHZhbHVlKTsgfVxuICAgIGlmIChpc0VTNkNsYXNzRm4odmFsdWUpKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIHZhciBzdHJDbGFzcyA9IHRvU3RyLmNhbGwodmFsdWUpO1xuICAgIGlmIChzdHJDbGFzcyAhPT0gZm5DbGFzcyAmJiBzdHJDbGFzcyAhPT0gZ2VuQ2xhc3MgJiYgISgvXlxcW29iamVjdCBIVE1MLykudGVzdChzdHJDbGFzcykpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgcmV0dXJuIHRyeUZ1bmN0aW9uT2JqZWN0KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHJlZmxlY3RBcHBseSA/IGlzQ2FsbGFibGVSZWZBcHBseSA6IGlzQ2FsbGFibGVOb1JlZkFwcGx5O1xuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgaXNDYWxsYWJsZSBmcm9tIFwiLi9jYWxsYWJsZS5qc1wiO1xuXG4vKipcbiAqIEV4Y2VwdGlvbiBjbGFzcyB0aGF0IHdpbGwgYmUgdXNlZCBhcyByZWplY3Rpb24gcmVhc29uXG4gKiBpbiBjYXNlIGEge0BsaW5rIENhbmNlbGxhYmxlUHJvbWlzZX0gaXMgY2FuY2VsbGVkIHN1Y2Nlc3NmdWxseS5cbiAqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIHtAbGluayBuYW1lfSBwcm9wZXJ0eSBpcyB0aGUgc3RyaW5nIGBcIkNhbmNlbEVycm9yXCJgLlxuICogVGhlIHZhbHVlIG9mIHRoZSB7QGxpbmsgY2F1c2V9IHByb3BlcnR5IGlzIHRoZSBjYXVzZSBwYXNzZWQgdG8gdGhlIGNhbmNlbCBtZXRob2QsIGlmIGFueS5cbiAqL1xuZXhwb3J0IGNsYXNzIENhbmNlbEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgYENhbmNlbEVycm9yYCBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyB0byBiZSBmb3J3YXJkZWQgdG8gdGhlIEVycm9yIGNvbnN0cnVjdG9yLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcsIG9wdGlvbnM/OiBFcnJvck9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSwgb3B0aW9ucyk7XG4gICAgICAgIHRoaXMubmFtZSA9IFwiQ2FuY2VsRXJyb3JcIjtcbiAgICB9XG59XG5cbi8qKlxuICogRXhjZXB0aW9uIGNsYXNzIHRoYXQgd2lsbCBiZSByZXBvcnRlZCBhcyBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uXG4gKiBpbiBjYXNlIGEge0BsaW5rIENhbmNlbGxhYmxlUHJvbWlzZX0gcmVqZWN0cyBhZnRlciBiZWluZyBjYW5jZWxsZWQsXG4gKiBvciB3aGVuIHRoZSBgb25jYW5jZWxsZWRgIGNhbGxiYWNrIHRocm93cyBvciByZWplY3RzLlxuICpcbiAqIFRoZSB2YWx1ZSBvZiB0aGUge0BsaW5rIG5hbWV9IHByb3BlcnR5IGlzIHRoZSBzdHJpbmcgYFwiQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3JcImAuXG4gKiBUaGUgdmFsdWUgb2YgdGhlIHtAbGluayBjYXVzZX0gcHJvcGVydHkgaXMgdGhlIHJlYXNvbiB0aGUgcHJvbWlzZSByZWplY3RlZCB3aXRoLlxuICpcbiAqIEJlY2F1c2UgdGhlIG9yaWdpbmFsIHByb21pc2Ugd2FzIGNhbmNlbGxlZCxcbiAqIGEgd3JhcHBlciBwcm9taXNlIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSB1bmhhbmRsZWQgcmVqZWN0aW9uIGxpc3RlbmVyIGluc3RlYWQuXG4gKiBUaGUge0BsaW5rIHByb21pc2V9IHByb3BlcnR5IGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBwcm9taXNlLlxuICovXG5leHBvcnQgY2xhc3MgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgLyoqXG4gICAgICogSG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIHByb21pc2UgdGhhdCB3YXMgY2FuY2VsbGVkIGFuZCB0aGVuIHJlamVjdGVkLlxuICAgICAqL1xuICAgIHByb21pc2U6IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPjtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgYENhbmNlbGxlZFJlamVjdGlvbkVycm9yYCBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0gcHJvbWlzZSAtIFRoZSBwcm9taXNlIHRoYXQgY2F1c2VkIHRoZSBlcnJvciBvcmlnaW5hbGx5LlxuICAgICAqIEBwYXJhbSByZWFzb24gLSBUaGUgcmVqZWN0aW9uIHJlYXNvbi5cbiAgICAgKiBAcGFyYW0gaW5mbyAtIEFuIG9wdGlvbmFsIGluZm9ybWF0aXZlIG1lc3NhZ2Ugc3BlY2lmeWluZyB0aGUgY2lyY3Vtc3RhbmNlcyBpbiB3aGljaCB0aGUgZXJyb3Igd2FzIHRocm93bi5cbiAgICAgKiAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIHRoZSBzdHJpbmcgYFwiVW5oYW5kbGVkIHJlamVjdGlvbiBpbiBjYW5jZWxsZWQgcHJvbWlzZS5cImAuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJvbWlzZTogQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+LCByZWFzb24/OiBhbnksIGluZm8/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoKGluZm8gPz8gXCJVbmhhbmRsZWQgcmVqZWN0aW9uIGluIGNhbmNlbGxlZCBwcm9taXNlLlwiKSArIFwiIFJlYXNvbjogXCIgKyBlcnJvck1lc3NhZ2UocmVhc29uKSwgeyBjYXVzZTogcmVhc29uIH0pO1xuICAgICAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIkNhbmNlbGxlZFJlamVjdGlvbkVycm9yXCI7XG4gICAgfVxufVxuXG50eXBlIENhbmNlbGxhYmxlUHJvbWlzZVJlc29sdmVyPFQ+ID0gKHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4gfCBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFQ+KSA9PiB2b2lkO1xudHlwZSBDYW5jZWxsYWJsZVByb21pc2VSZWplY3RvciA9IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG50eXBlIENhbmNlbGxhYmxlUHJvbWlzZUNhbmNlbGxlciA9IChjYXVzZT86IGFueSkgPT4gdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+O1xudHlwZSBDYW5jZWxsYWJsZVByb21pc2VFeGVjdXRvcjxUPiA9IChyZXNvbHZlOiBDYW5jZWxsYWJsZVByb21pc2VSZXNvbHZlcjxUPiwgcmVqZWN0OiBDYW5jZWxsYWJsZVByb21pc2VSZWplY3RvcikgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFQ+IHtcbiAgICB0aGVuPFRSZXN1bHQxID0gVCwgVFJlc3VsdDIgPSBuZXZlcj4ob25mdWxmaWxsZWQ/OiAoKHZhbHVlOiBUKSA9PiBUUmVzdWx0MSB8IFByb21pc2VMaWtlPFRSZXN1bHQxPiB8IENhbmNlbGxhYmxlUHJvbWlzZUxpa2U8VFJlc3VsdDE+KSB8IHVuZGVmaW5lZCB8IG51bGwsIG9ucmVqZWN0ZWQ/OiAoKHJlYXNvbjogYW55KSA9PiBUUmVzdWx0MiB8IFByb21pc2VMaWtlPFRSZXN1bHQyPiB8IENhbmNlbGxhYmxlUHJvbWlzZUxpa2U8VFJlc3VsdDI+KSB8IHVuZGVmaW5lZCB8IG51bGwpOiBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFRSZXN1bHQxIHwgVFJlc3VsdDI+O1xuICAgIGNhbmNlbChjYXVzZT86IGFueSk6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBXcmFwcyBhIGNhbmNlbGxhYmxlIHByb21pc2UgYWxvbmcgd2l0aCBpdHMgcmVzb2x1dGlvbiBtZXRob2RzLlxuICogVGhlIGBvbmNhbmNlbGxlZGAgZmllbGQgd2lsbCBiZSBudWxsIGluaXRpYWxseSBidXQgbWF5IGJlIHNldCB0byBwcm92aWRlIGEgY3VzdG9tIGNhbmNlbGxhdGlvbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+IHtcbiAgICBwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2U8VD47XG4gICAgcmVzb2x2ZTogQ2FuY2VsbGFibGVQcm9taXNlUmVzb2x2ZXI8VD47XG4gICAgcmVqZWN0OiBDYW5jZWxsYWJsZVByb21pc2VSZWplY3RvcjtcbiAgICBvbmNhbmNlbGxlZDogQ2FuY2VsbGFibGVQcm9taXNlQ2FuY2VsbGVyIHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIENhbmNlbGxhYmxlUHJvbWlzZVN0YXRlIHtcbiAgICByZWFkb25seSByb290OiBDYW5jZWxsYWJsZVByb21pc2VTdGF0ZTtcbiAgICByZXNvbHZpbmc6IGJvb2xlYW47XG4gICAgc2V0dGxlZDogYm9vbGVhbjtcbiAgICByZWFzb24/OiBDYW5jZWxFcnJvcjtcbn1cblxuLy8gUHJpdmF0ZSBmaWVsZCBuYW1lcy5cbmNvbnN0IGJhcnJpZXJTeW0gPSBTeW1ib2woXCJiYXJyaWVyXCIpO1xuY29uc3QgY2FuY2VsSW1wbFN5bSA9IFN5bWJvbChcImNhbmNlbEltcGxcIik7XG5jb25zdCBzcGVjaWVzOiB0eXBlb2YgU3ltYm9sLnNwZWNpZXMgPSBTeW1ib2wuc3BlY2llcyA/PyBTeW1ib2woXCJzcGVjaWVzUG9seWZpbGxcIik7XG5cbi8qKlxuICogQSBwcm9taXNlIHdpdGggYW4gYXR0YWNoZWQgbWV0aG9kIGZvciBjYW5jZWxsaW5nIGxvbmctcnVubmluZyBvcGVyYXRpb25zIChzZWUge0BsaW5rIENhbmNlbGxhYmxlUHJvbWlzZSNjYW5jZWx9KS5cbiAqIENhbmNlbGxhdGlvbiBjYW4gb3B0aW9uYWxseSBiZSBib3VuZCB0byBhbiB7QGxpbmsgQWJvcnRTaWduYWx9XG4gKiBmb3IgYmV0dGVyIGNvbXBvc2FiaWxpdHkgKHNlZSB7QGxpbmsgQ2FuY2VsbGFibGVQcm9taXNlI2NhbmNlbE9ufSkuXG4gKlxuICogQ2FuY2VsbGluZyBhIHBlbmRpbmcgcHJvbWlzZSB3aWxsIHJlc3VsdCBpbiBhbiBpbW1lZGlhdGUgcmVqZWN0aW9uXG4gKiB3aXRoIGFuIGluc3RhbmNlIG9mIHtAbGluayBDYW5jZWxFcnJvcn0gYXMgcmVhc29uLFxuICogYnV0IHdob2V2ZXIgc3RhcnRlZCB0aGUgcHJvbWlzZSB3aWxsIGJlIHJlc3BvbnNpYmxlXG4gKiBmb3IgYWN0dWFsbHkgYWJvcnRpbmcgdGhlIHVuZGVybHlpbmcgb3BlcmF0aW9uLlxuICogVG8gdGhpcyBwdXJwb3NlLCB0aGUgY29uc3RydWN0b3IgYW5kIGFsbCBjaGFpbmluZyBtZXRob2RzXG4gKiBhY2NlcHQgb3B0aW9uYWwgY2FuY2VsbGF0aW9uIGNhbGxiYWNrcy5cbiAqXG4gKiBJZiBhIGBDYW5jZWxsYWJsZVByb21pc2VgIHN0aWxsIHJlc29sdmVzIGFmdGVyIGhhdmluZyBiZWVuIGNhbmNlbGxlZCxcbiAqIHRoZSByZXN1bHQgd2lsbCBiZSBkaXNjYXJkZWQuIElmIGl0IHJlamVjdHMsIHRoZSByZWFzb25cbiAqIHdpbGwgYmUgcmVwb3J0ZWQgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbixcbiAqIHdyYXBwZWQgaW4gYSB7QGxpbmsgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3J9IGluc3RhbmNlLlxuICogVG8gZmFjaWxpdGF0ZSB0aGUgaGFuZGxpbmcgb2YgY2FuY2VsbGF0aW9uIHJlcXVlc3RzLFxuICogY2FuY2VsbGVkIGBDYW5jZWxsYWJsZVByb21pc2VgcyB3aWxsIF9ub3RfIHJlcG9ydCB1bmhhbmRsZWQgYENhbmNlbEVycm9yYHNcbiAqIHdob3NlIGBjYXVzZWAgZmllbGQgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSB3aXRoIHdoaWNoIHRoZSBjdXJyZW50IHByb21pc2Ugd2FzIGNhbmNlbGxlZC5cbiAqXG4gKiBBbGwgdXN1YWwgcHJvbWlzZSBtZXRob2RzIGFyZSBkZWZpbmVkIGFuZCByZXR1cm4gYSBgQ2FuY2VsbGFibGVQcm9taXNlYFxuICogd2hvc2UgY2FuY2VsIG1ldGhvZCB3aWxsIGNhbmNlbCB0aGUgcGFyZW50IG9wZXJhdGlvbiBhcyB3ZWxsLCBwcm9wYWdhdGluZyB0aGUgY2FuY2VsbGF0aW9uIHJlYXNvblxuICogdXB3YXJkcyB0aHJvdWdoIHByb21pc2UgY2hhaW5zLlxuICogQ29udmVyc2VseSwgY2FuY2VsbGluZyBhIHByb21pc2Ugd2lsbCBub3QgYXV0b21hdGljYWxseSBjYW5jZWwgZGVwZW5kZW50IHByb21pc2VzIGRvd25zdHJlYW06XG4gKiBgYGB0c1xuICogbGV0IHJvb3QgPSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgLi4uIH0pO1xuICogbGV0IGNoaWxkMSA9IHJvb3QudGhlbigoKSA9PiB7IC4uLiB9KTtcbiAqIGxldCBjaGlsZDIgPSBjaGlsZDEudGhlbigoKSA9PiB7IC4uLiB9KTtcbiAqIGxldCBjaGlsZDMgPSByb290LmNhdGNoKCgpID0+IHsgLi4uIH0pO1xuICogY2hpbGQxLmNhbmNlbCgpOyAvLyBDYW5jZWxzIGNoaWxkMSBhbmQgcm9vdCwgYnV0IG5vdCBjaGlsZDIgb3IgY2hpbGQzXG4gKiBgYGBcbiAqIENhbmNlbGxpbmcgYSBwcm9taXNlIHRoYXQgaGFzIGFscmVhZHkgc2V0dGxlZCBpcyBzYWZlIGFuZCBoYXMgbm8gY29uc2VxdWVuY2UuXG4gKlxuICogVGhlIGBjYW5jZWxgIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IF9hbHdheXMgZnVsZmlsbHNfXG4gKiBhZnRlciB0aGUgd2hvbGUgY2hhaW4gaGFzIHByb2Nlc3NlZCB0aGUgY2FuY2VsIHJlcXVlc3RcbiAqIGFuZCBhbGwgYXR0YWNoZWQgY2FsbGJhY2tzIHVwIHRvIHRoYXQgbW9tZW50IGhhdmUgcnVuLlxuICpcbiAqIEFsbCBFUzIwMjQgcHJvbWlzZSBtZXRob2RzIChzdGF0aWMgYW5kIGluc3RhbmNlKSBhcmUgZGVmaW5lZCBvbiBDYW5jZWxsYWJsZVByb21pc2UsXG4gKiBidXQgYWN0dWFsIGF2YWlsYWJpbGl0eSBtYXkgdmFyeSB3aXRoIE9TL3dlYnZpZXcgdmVyc2lvbi5cbiAqXG4gKiBJbiBsaW5lIHdpdGggdGhlIHByb3Bvc2FsIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXJtLWJ1aWx0aW4tc3ViY2xhc3NpbmcsXG4gKiBgQ2FuY2VsbGFibGVQcm9taXNlYCBkb2VzIG5vdCBzdXBwb3J0IHRyYW5zcGFyZW50IHN1YmNsYXNzaW5nLlxuICogRXh0ZW5kZXJzIHNob3VsZCB0YWtlIGNhcmUgdG8gcHJvdmlkZSB0aGVpciBvd24gbWV0aG9kIGltcGxlbWVudGF0aW9ucy5cbiAqIFRoaXMgbWlnaHQgYmUgcmVjb25zaWRlcmVkIGluIGNhc2UgdGhlIHByb3Bvc2FsIGlzIHJldGlyZWQuXG4gKlxuICogQ2FuY2VsbGFibGVQcm9taXNlIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlIERPTSBQcm9taXNlIG9iamVjdFxuICogYW5kIGlzIGNvbXBsaWFudCB3aXRoIHRoZSBbUHJvbWlzZXMvQSsgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8pXG4gKiAoaXQgcGFzc2VzIHRoZSBbY29tcGxpYW5jZSBzdWl0ZV0oaHR0cHM6Ly9naXRodWIuY29tL3Byb21pc2VzLWFwbHVzL3Byb21pc2VzLXRlc3RzKSlcbiAqIGlmIHNvIGlzIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQ2FuY2VsbGFibGVQcm9taXNlPFQ+IGV4dGVuZHMgUHJvbWlzZTxUPiBpbXBsZW1lbnRzIFByb21pc2VMaWtlPFQ+LCBDYW5jZWxsYWJsZVByb21pc2VMaWtlPFQ+IHtcbiAgICAvLyBQcml2YXRlIGZpZWxkcy5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgcHJpdmF0ZSBbYmFycmllclN5bV0hOiBQYXJ0aWFsPFByb21pc2VXaXRoUmVzb2x2ZXJzPHZvaWQ+PiB8IG51bGw7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgW2NhbmNlbEltcGxTeW1dITogKHJlYXNvbjogQ2FuY2VsRXJyb3IpID0+IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYENhbmNlbGxhYmxlUHJvbWlzZWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXhlY3V0b3IgLSBBIGNhbGxiYWNrIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcHJvbWlzZS4gVGhpcyBjYWxsYmFjayBpcyBwYXNzZWQgdHdvIGFyZ3VtZW50czpcbiAgICAgKiAgICAgICAgICAgICAgICAgICBhIGByZXNvbHZlYCBjYWxsYmFjayB1c2VkIHRvIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aCBhIHZhbHVlXG4gICAgICogICAgICAgICAgICAgICAgICAgb3IgdGhlIHJlc3VsdCBvZiBhbm90aGVyIHByb21pc2UgKHBvc3NpYmx5IGNhbmNlbGxhYmxlKSxcbiAgICAgKiAgICAgICAgICAgICAgICAgICBhbmQgYSBgcmVqZWN0YCBjYWxsYmFjayB1c2VkIHRvIHJlamVjdCB0aGUgcHJvbWlzZSB3aXRoIGEgcHJvdmlkZWQgcmVhc29uIG9yIGVycm9yLlxuICAgICAqICAgICAgICAgICAgICAgICAgIElmIHRoZSB2YWx1ZSBwcm92aWRlZCB0byB0aGUgYHJlc29sdmVgIGNhbGxiYWNrIGlzIGEgdGhlbmFibGUgX2FuZF8gY2FuY2VsbGFibGUgb2JqZWN0XG4gICAgICogICAgICAgICAgICAgICAgICAgKGl0IGhhcyBhIGB0aGVuYCBfYW5kXyBhIGBjYW5jZWxgIG1ldGhvZCksXG4gICAgICogICAgICAgICAgICAgICAgICAgY2FuY2VsbGF0aW9uIHJlcXVlc3RzIHdpbGwgYmUgZm9yd2FyZGVkIHRvIHRoYXQgb2JqZWN0IGFuZCB0aGUgb25jYW5jZWxsZWQgd2lsbCBub3QgYmUgaW52b2tlZCBhbnltb3JlLlxuICAgICAqICAgICAgICAgICAgICAgICAgIElmIGFueSBvbmUgb2YgdGhlIHR3byBjYWxsYmFja3MgaXMgY2FsbGVkIF9hZnRlcl8gdGhlIHByb21pc2UgaGFzIGJlZW4gY2FuY2VsbGVkLFxuICAgICAqICAgICAgICAgICAgICAgICAgIHRoZSBwcm92aWRlZCB2YWx1ZXMgd2lsbCBiZSBjYW5jZWxsZWQgYW5kIHJlc29sdmVkIGFzIHVzdWFsLFxuICAgICAqICAgICAgICAgICAgICAgICAgIGJ1dCB0aGVpciByZXN1bHRzIHdpbGwgYmUgZGlzY2FyZGVkLlxuICAgICAqICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHRoZSByZXNvbHV0aW9uIHByb2Nlc3MgdWx0aW1hdGVseSBlbmRzIHVwIGluIGEgcmVqZWN0aW9uXG4gICAgICogICAgICAgICAgICAgICAgICAgdGhhdCBpcyBub3QgZHVlIHRvIGNhbmNlbGxhdGlvbiwgdGhlIHJlamVjdGlvbiByZWFzb25cbiAgICAgKiAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHdyYXBwZWQgaW4gYSB7QGxpbmsgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3J9XG4gICAgICogICAgICAgICAgICAgICAgICAgYW5kIGJ1YmJsZWQgdXAgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbi5cbiAgICAgKiBAcGFyYW0gb25jYW5jZWxsZWQgLSBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQgYW55IG9wZXJhdGlvblxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ZWQgYnkgdGhlIGV4ZWN1dG9yIGlzIHByb3Blcmx5IGhhbHRlZCB1cG9uIGNhbmNlbGxhdGlvbi5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbmFsIGNhbGxiYWNrIGNhbiBiZSB1c2VkIHRvIHRoYXQgcHVycG9zZS5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBJdCB3aWxsIGJlIGNhbGxlZCBfc3luY2hyb25vdXNseV8gd2l0aCBhIGNhbmNlbGxhdGlvbiBjYXVzZVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIHdoZW4gY2FuY2VsbGF0aW9uIGlzIHJlcXVlc3RlZCwgX2FmdGVyXyB0aGUgcHJvbWlzZSBoYXMgYWxyZWFkeSByZWplY3RlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIHdpdGggYSB7QGxpbmsgQ2FuY2VsRXJyb3J9LCBidXQgX2JlZm9yZV9cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBhbnkge0BsaW5rIHRoZW59L3tAbGluayBjYXRjaH0ve0BsaW5rIGZpbmFsbHl9IGNhbGxiYWNrIHJ1bnMuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGNhbGxiYWNrIHJldHVybnMgYSB0aGVuYWJsZSwgdGhlIHByb21pc2UgcmV0dXJuZWQgZnJvbSB7QGxpbmsgY2FuY2VsfVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIHdpbGwgb25seSBmdWxmaWxsIGFmdGVyIHRoZSBmb3JtZXIgaGFzIHNldHRsZWQuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgVW5oYW5kbGVkIGV4Y2VwdGlvbnMgb3IgcmVqZWN0aW9ucyBmcm9tIHRoZSBjYWxsYmFjayB3aWxsIGJlIHdyYXBwZWRcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBpbiBhIHtAbGluayBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcn0gYW5kIGJ1YmJsZWQgdXAgYXMgdW5oYW5kbGVkIHJlamVjdGlvbnMuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGByZXNvbHZlYCBjYWxsYmFjayBpcyBjYWxsZWQgYmVmb3JlIGNhbmNlbGxhdGlvbiB3aXRoIGEgY2FuY2VsbGFibGUgcHJvbWlzZSxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxsYXRpb24gcmVxdWVzdHMgb24gdGhpcyBwcm9taXNlIHdpbGwgYmUgZGl2ZXJ0ZWQgdG8gdGhhdCBwcm9taXNlLFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgb3JpZ2luYWwgYG9uY2FuY2VsbGVkYCBjYWxsYmFjayB3aWxsIGJlIGRpc2NhcmRlZC5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihleGVjdXRvcjogQ2FuY2VsbGFibGVQcm9taXNlRXhlY3V0b3I8VD4sIG9uY2FuY2VsbGVkPzogQ2FuY2VsbGFibGVQcm9taXNlQ2FuY2VsbGVyKSB7XG4gICAgICAgIGxldCByZXNvbHZlITogKHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQ7XG4gICAgICAgIGxldCByZWplY3QhOiAocmVhc29uPzogYW55KSA9PiB2b2lkO1xuICAgICAgICBzdXBlcigocmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJlczsgcmVqZWN0ID0gcmVqOyB9KTtcblxuICAgICAgICBpZiAoKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KVtzcGVjaWVzXSAhPT0gUHJvbWlzZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbmNlbGxhYmxlUHJvbWlzZSBkb2VzIG5vdCBzdXBwb3J0IHRyYW5zcGFyZW50IHN1YmNsYXNzaW5nLiBQbGVhc2UgcmVmcmFpbiBmcm9tIG92ZXJyaWRpbmcgdGhlIFtTeW1ib2wuc3BlY2llc10gc3RhdGljIHByb3BlcnR5LlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+ID0ge1xuICAgICAgICAgICAgcHJvbWlzZTogdGhpcyxcbiAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICByZWplY3QsXG4gICAgICAgICAgICBnZXQgb25jYW5jZWxsZWQoKSB7IHJldHVybiBvbmNhbmNlbGxlZCA/PyBudWxsOyB9LFxuICAgICAgICAgICAgc2V0IG9uY2FuY2VsbGVkKGNiKSB7IG9uY2FuY2VsbGVkID0gY2IgPz8gdW5kZWZpbmVkOyB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc3RhdGU6IENhbmNlbGxhYmxlUHJvbWlzZVN0YXRlID0ge1xuICAgICAgICAgICAgZ2V0IHJvb3QoKSB7IHJldHVybiBzdGF0ZTsgfSxcbiAgICAgICAgICAgIHJlc29sdmluZzogZmFsc2UsXG4gICAgICAgICAgICBzZXR0bGVkOiBmYWxzZVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFNldHVwIGNhbmNlbGxhdGlvbiBzeXN0ZW0uXG4gICAgICAgIHZvaWQgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcywge1xuICAgICAgICAgICAgW2JhcnJpZXJTeW1dOiB7XG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtjYW5jZWxJbXBsU3ltXToge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjYW5jZWxsZXJGb3IocHJvbWlzZSwgc3RhdGUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFJ1biB0aGUgYWN0dWFsIGV4ZWN1dG9yLlxuICAgICAgICBjb25zdCByZWplY3RvciA9IHJlamVjdG9yRm9yKHByb21pc2UsIHN0YXRlKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGV4ZWN1dG9yKHJlc29sdmVyRm9yKHByb21pc2UsIHN0YXRlKSwgcmVqZWN0b3IpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5yZXNvbHZpbmcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlVuaGFuZGxlZCBleGNlcHRpb24gaW4gQ2FuY2VsbGFibGVQcm9taXNlIGV4ZWN1dG9yLlwiLCBlcnIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZWplY3RvcihlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FuY2VscyBpbW1lZGlhdGVseSB0aGUgZXhlY3V0aW9uIG9mIHRoZSBvcGVyYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgcHJvbWlzZS5cbiAgICAgKiBUaGUgcHJvbWlzZSByZWplY3RzIHdpdGggYSB7QGxpbmsgQ2FuY2VsRXJyb3J9IGluc3RhbmNlIGFzIHJlYXNvbixcbiAgICAgKiB3aXRoIHRoZSB7QGxpbmsgQ2FuY2VsRXJyb3IjY2F1c2V9IHByb3BlcnR5IHNldCB0byB0aGUgZ2l2ZW4gYXJndW1lbnQsIGlmIGFueS5cbiAgICAgKlxuICAgICAqIEhhcyBubyBlZmZlY3QgaWYgY2FsbGVkIGFmdGVyIHRoZSBwcm9taXNlIGhhcyBhbHJlYWR5IHNldHRsZWQ7XG4gICAgICogcmVwZWF0ZWQgY2FsbHMgaW4gcGFydGljdWxhciBhcmUgc2FmZSwgYnV0IG9ubHkgdGhlIGZpcnN0IG9uZVxuICAgICAqIHdpbGwgc2V0IHRoZSBjYW5jZWxsYXRpb24gY2F1c2UuXG4gICAgICpcbiAgICAgKiBUaGUgYENhbmNlbEVycm9yYCBleGNlcHRpb24gX25lZWQgbm90XyBiZSBoYW5kbGVkIGV4cGxpY2l0bHkgX29uIHRoZSBwcm9taXNlcyB0aGF0IGFyZSBiZWluZyBjYW5jZWxsZWQ6X1xuICAgICAqIGNhbmNlbGxpbmcgYSBwcm9taXNlIHdpdGggbm8gYXR0YWNoZWQgcmVqZWN0aW9uIGhhbmRsZXIgZG9lcyBub3QgdHJpZ2dlciBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uIGV2ZW50LlxuICAgICAqIFRoZXJlZm9yZSwgdGhlIGZvbGxvd2luZyBpZGlvbXMgYXJlIGFsbCBlcXVhbGx5IGNvcnJlY3Q6XG4gICAgICogYGBgdHNcbiAgICAgKiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgLi4uIH0pLmNhbmNlbCgpO1xuICAgICAqIG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyAuLi4gfSkudGhlbiguLi4pLmNhbmNlbCgpO1xuICAgICAqIG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyAuLi4gfSkudGhlbiguLi4pLmNhdGNoKC4uLikuY2FuY2VsKCk7XG4gICAgICogYGBgXG4gICAgICogV2hlbmV2ZXIgc29tZSBjYW5jZWxsZWQgcHJvbWlzZSBpbiBhIGNoYWluIHJlamVjdHMgd2l0aCBhIGBDYW5jZWxFcnJvcmBcbiAgICAgKiB3aXRoIHRoZSBzYW1lIGNhbmNlbGxhdGlvbiBjYXVzZSBhcyBpdHNlbGYsIHRoZSBlcnJvciB3aWxsIGJlIGRpc2NhcmRlZCBzaWxlbnRseS5cbiAgICAgKiBIb3dldmVyLCB0aGUgYENhbmNlbEVycm9yYCBfd2lsbCBzdGlsbCBiZSBkZWxpdmVyZWRfIHRvIGFsbCBhdHRhY2hlZCByZWplY3Rpb24gaGFuZGxlcnNcbiAgICAgKiBhZGRlZCBieSB7QGxpbmsgdGhlbn0gYW5kIHJlbGF0ZWQgbWV0aG9kczpcbiAgICAgKiBgYGB0c1xuICAgICAqIGxldCBjYW5jZWxsYWJsZSA9IG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyAuLi4gfSk7XG4gICAgICogY2FuY2VsbGFibGUudGhlbigoKSA9PiB7IC4uLiB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gICAgICogY2FuY2VsbGFibGUuY2FuY2VsKCk7IC8vIEEgQ2FuY2VsRXJyb3IgaXMgcHJpbnRlZCB0byB0aGUgY29uc29sZS5cbiAgICAgKiBgYGBcbiAgICAgKiBJZiB0aGUgYENhbmNlbEVycm9yYCBpcyBub3QgaGFuZGxlZCBkb3duc3RyZWFtIGJ5IHRoZSB0aW1lIGl0IHJlYWNoZXNcbiAgICAgKiBhIF9ub24tY2FuY2VsbGVkXyBwcm9taXNlLCBpdCBfd2lsbF8gdHJpZ2dlciBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uIGV2ZW50LFxuICAgICAqIGp1c3QgbGlrZSBub3JtYWwgcmVqZWN0aW9ucyB3b3VsZDpcbiAgICAgKiBgYGB0c1xuICAgICAqIGxldCBjYW5jZWxsYWJsZSA9IG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geyAuLi4gfSk7XG4gICAgICogbGV0IGNoYWluZWQgPSBjYW5jZWxsYWJsZS50aGVuKCgpID0+IHsgLi4uIH0pLnRoZW4oKCkgPT4geyAuLi4gfSk7IC8vIE5vIGNhdGNoLi4uXG4gICAgICogY2FuY2VsbGFibGUuY2FuY2VsKCk7IC8vIFVuaGFuZGxlZCByZWplY3Rpb24gZXZlbnQgb24gY2hhaW5lZCFcbiAgICAgKiBgYGBcbiAgICAgKiBUaGVyZWZvcmUsIGl0IGlzIGltcG9ydGFudCB0byBlaXRoZXIgY2FuY2VsIHdob2xlIHByb21pc2UgY2hhaW5zIGZyb20gdGhlaXIgdGFpbCxcbiAgICAgKiBhcyBzaG93biBpbiB0aGUgY29ycmVjdCBpZGlvbXMgYWJvdmUsIG9yIHRha2UgY2FyZSBvZiBoYW5kbGluZyBlcnJvcnMgZXZlcnl3aGVyZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgY2FuY2VsbGFibGUgcHJvbWlzZSB0aGF0IF9mdWxmaWxsc18gYWZ0ZXIgdGhlIGNhbmNlbCBjYWxsYmFjayAoaWYgYW55KVxuICAgICAqIGFuZCBhbGwgaGFuZGxlcnMgYXR0YWNoZWQgdXAgdG8gdGhlIGNhbGwgdG8gY2FuY2VsIGhhdmUgcnVuLlxuICAgICAqIElmIHRoZSBjYW5jZWwgY2FsbGJhY2sgcmV0dXJucyBhIHRoZW5hYmxlLCB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSBgY2FuY2VsYFxuICAgICAqIHdpbGwgYWxzbyB3YWl0IGZvciB0aGF0IHRoZW5hYmxlIHRvIHNldHRsZS5cbiAgICAgKiBUaGlzIGVuYWJsZXMgY2FsbGVycyB0byB3YWl0IGZvciB0aGUgY2FuY2VsbGVkIG9wZXJhdGlvbiB0byB0ZXJtaW5hdGVcbiAgICAgKiB3aXRob3V0IGJlaW5nIGZvcmNlZCB0byBoYW5kbGUgcG90ZW50aWFsIGVycm9ycyBhdCB0aGUgY2FsbCBzaXRlLlxuICAgICAqIGBgYHRzXG4gICAgICogY2FuY2VsbGFibGUuY2FuY2VsKCkudGhlbigoKSA9PiB7XG4gICAgICogICAgIC8vIENsZWFudXAgZmluaXNoZWQsIGl0J3Mgc2FmZSB0byBkbyBzb21ldGhpbmcgZWxzZS5cbiAgICAgKiB9LCAoZXJyKSA9PiB7XG4gICAgICogICAgIC8vIFVucmVhY2hhYmxlOiB0aGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIGNhbmNlbCB3aWxsIG5ldmVyIHJlamVjdC5cbiAgICAgKiB9KTtcbiAgICAgKiBgYGBcbiAgICAgKiBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHByb21pc2Ugd2lsbCBfbm90XyBoYW5kbGUgaW1wbGljaXRseSBhbnkgcmVqZWN0aW9uXG4gICAgICogdGhhdCBtaWdodCBoYXZlIG9jY3VycmVkIGFscmVhZHkgaW4gdGhlIGNhbmNlbGxlZCBjaGFpbi5cbiAgICAgKiBJdCB3aWxsIGp1c3QgdHJhY2sgd2hldGhlciByZWdpc3RlcmVkIGhhbmRsZXJzIGhhdmUgYmVlbiBleGVjdXRlZCBvciBub3QuXG4gICAgICogVGhlcmVmb3JlLCB1bmhhbmRsZWQgcmVqZWN0aW9ucyB3aWxsIG5ldmVyIGJlIHNpbGVudGx5IGhhbmRsZWQgYnkgY2FsbGluZyBjYW5jZWwuXG4gICAgICovXG4gICAgY2FuY2VsKGNhdXNlPzogYW55KTogQ2FuY2VsbGFibGVQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYW5jZWxsYWJsZVByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIC8vIElOVkFSSUFOVDogdGhlIHJlc3VsdCBvZiB0aGlzW2NhbmNlbEltcGxTeW1dIGFuZCB0aGUgYmFycmllciBkbyBub3QgZXZlciByZWplY3QuXG4gICAgICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5IG1hY09TIEhpZ2ggU2llcnJhIGRvZXMgbm90IHN1cHBvcnQgUHJvbWlzZS5hbGxTZXR0bGVkLlxuICAgICAgICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgIHRoaXNbY2FuY2VsSW1wbFN5bV0obmV3IENhbmNlbEVycm9yKFwiUHJvbWlzZSBjYW5jZWxsZWQuXCIsIHsgY2F1c2UgfSkpLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRCYXJyaWVyKHRoaXMpXG4gICAgICAgICAgICBdKS50aGVuKCgpID0+IHJlc29sdmUoKSwgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQmluZHMgcHJvbWlzZSBjYW5jZWxsYXRpb24gdG8gdGhlIGFib3J0IGV2ZW50IG9mIHRoZSBnaXZlbiB7QGxpbmsgQWJvcnRTaWduYWx9LlxuICAgICAqIElmIHRoZSBzaWduYWwgaGFzIGFscmVhZHkgYWJvcnRlZCwgdGhlIHByb21pc2Ugd2lsbCBiZSBjYW5jZWxsZWQgaW1tZWRpYXRlbHkuXG4gICAgICogV2hlbiBlaXRoZXIgY29uZGl0aW9uIGlzIHZlcmlmaWVkLCB0aGUgY2FuY2VsbGF0aW9uIGNhdXNlIHdpbGwgYmUgc2V0XG4gICAgICogdG8gdGhlIHNpZ25hbCdzIGFib3J0IHJlYXNvbiAoc2VlIHtAbGluayBBYm9ydFNpZ25hbCNyZWFzb259KS5cbiAgICAgKlxuICAgICAqIEhhcyBubyBlZmZlY3QgaWYgY2FsbGVkIChvciBpZiB0aGUgc2lnbmFsIGFib3J0cykgX2FmdGVyXyB0aGUgcHJvbWlzZSBoYXMgYWxyZWFkeSBzZXR0bGVkLlxuICAgICAqIE9ubHkgdGhlIGZpcnN0IHNpZ25hbCB0byBhYm9ydCB3aWxsIHNldCB0aGUgY2FuY2VsbGF0aW9uIGNhdXNlLlxuICAgICAqXG4gICAgICogRm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgY2FuY2VsbGF0aW9uIHByb2Nlc3MsXG4gICAgICogc2VlIHtAbGluayBjYW5jZWx9IGFuZCB0aGUgYENhbmNlbGxhYmxlUHJvbWlzZWAgY29uc3RydWN0b3IuXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBlbmFibGVzIGBhd2FpdGBpbmcgY2FuY2VsbGFibGUgcHJvbWlzZXMgd2l0aG91dCBoYXZpbmdcbiAgICAgKiB0byBzdG9yZSB0aGVtIGZvciBmdXR1cmUgY2FuY2VsbGF0aW9uLCBlLmcuOlxuICAgICAqIGBgYHRzXG4gICAgICogYXdhaXQgbG9uZ1J1bm5pbmdPcGVyYXRpb24oKS5jYW5jZWxPbihzaWduYWwpO1xuICAgICAqIGBgYFxuICAgICAqIGluc3RlYWQgb2Y6XG4gICAgICogYGBgdHNcbiAgICAgKiBsZXQgcHJvbWlzZVRvQmVDYW5jZWxsZWQgPSBsb25nUnVubmluZ09wZXJhdGlvbigpO1xuICAgICAqIGF3YWl0IHByb21pc2VUb0JlQ2FuY2VsbGVkO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhpcyBwcm9taXNlLCBmb3IgbWV0aG9kIGNoYWluaW5nLlxuICAgICAqL1xuICAgIGNhbmNlbE9uKHNpZ25hbDogQWJvcnRTaWduYWwpOiBDYW5jZWxsYWJsZVByb21pc2U8VD4ge1xuICAgICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5jYW5jZWwoc2lnbmFsLnJlYXNvbilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IHZvaWQgdGhpcy5jYW5jZWwoc2lnbmFsLnJlYXNvbiksIHtjYXB0dXJlOiB0cnVlfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBjYWxsYmFja3MgZm9yIHRoZSByZXNvbHV0aW9uIGFuZC9vciByZWplY3Rpb24gb2YgdGhlIGBDYW5jZWxsYWJsZVByb21pc2VgLlxuICAgICAqXG4gICAgICogVGhlIG9wdGlvbmFsIGBvbmNhbmNlbGxlZGAgYXJndW1lbnQgd2lsbCBiZSBpbnZva2VkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLFxuICAgICAqIHdpdGggdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSBgb25jYW5jZWxsZWRgIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBXaGVuIHRoZSBwYXJlbnQgcHJvbWlzZSByZWplY3RzIG9yIGlzIGNhbmNlbGxlZCwgdGhlIGBvbnJlamVjdGVkYCBjYWxsYmFjayB3aWxsIHJ1bixcbiAgICAgKiBfZXZlbiBhZnRlciB0aGUgcmV0dXJuZWQgcHJvbWlzZSBoYXMgYmVlbiBjYW5jZWxsZWQ6X1xuICAgICAqIGluIHRoYXQgY2FzZSwgc2hvdWxkIGl0IHJlamVjdCBvciB0aHJvdywgdGhlIHJlYXNvbiB3aWxsIGJlIHdyYXBwZWRcbiAgICAgKiBpbiBhIHtAbGluayBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcn0gYW5kIGJ1YmJsZWQgdXAgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvbmZ1bGZpbGxlZCBUaGUgY2FsbGJhY2sgdG8gZXhlY3V0ZSB3aGVuIHRoZSBQcm9taXNlIGlzIHJlc29sdmVkLlxuICAgICAqIEBwYXJhbSBvbnJlamVjdGVkIFRoZSBjYWxsYmFjayB0byBleGVjdXRlIHdoZW4gdGhlIFByb21pc2UgaXMgcmVqZWN0ZWQuXG4gICAgICogQHJldHVybnMgQSBgQ2FuY2VsbGFibGVQcm9taXNlYCBmb3IgdGhlIGNvbXBsZXRpb24gb2Ygd2hpY2hldmVyIGNhbGxiYWNrIGlzIGV4ZWN1dGVkLlxuICAgICAqIFRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGhvb2tlZCB1cCB0byBwcm9wYWdhdGUgY2FuY2VsbGF0aW9uIHJlcXVlc3RzIHVwIHRoZSBjaGFpbiwgYnV0IG5vdCBkb3duOlxuICAgICAqXG4gICAgICogICAtIGlmIHRoZSBwYXJlbnQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsIHRoZSBgb25yZWplY3RlZGAgaGFuZGxlciB3aWxsIGJlIGludm9rZWQgd2l0aCBhIGBDYW5jZWxFcnJvcmBcbiAgICAgKiAgICAgYW5kIHRoZSByZXR1cm5lZCBwcm9taXNlIF93aWxsIHJlc29sdmUgcmVndWxhcmx5XyB3aXRoIGl0cyByZXN1bHQ7XG4gICAgICogICAtIGNvbnZlcnNlbHksIGlmIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGNhbmNlbGxlZCwgX3RoZSBwYXJlbnQgcHJvbWlzZSBpcyBjYW5jZWxsZWQgdG9vO19cbiAgICAgKiAgICAgdGhlIGBvbnJlamVjdGVkYCBoYW5kbGVyIHdpbGwgc3RpbGwgYmUgaW52b2tlZCB3aXRoIHRoZSBwYXJlbnQncyBgQ2FuY2VsRXJyb3JgLFxuICAgICAqICAgICBidXQgaXRzIHJlc3VsdCB3aWxsIGJlIGRpc2NhcmRlZFxuICAgICAqICAgICBhbmQgdGhlIHJldHVybmVkIHByb21pc2Ugd2lsbCByZWplY3Qgd2l0aCBhIGBDYW5jZWxFcnJvcmAgYXMgd2VsbC5cbiAgICAgKlxuICAgICAqIFRoZSBwcm9taXNlIHJldHVybmVkIGZyb20ge0BsaW5rIGNhbmNlbH0gd2lsbCBmdWxmaWxsIG9ubHkgYWZ0ZXIgYWxsIGF0dGFjaGVkIGhhbmRsZXJzXG4gICAgICogdXAgdGhlIGVudGlyZSBwcm9taXNlIGNoYWluIGhhdmUgYmVlbiBydW4uXG4gICAgICpcbiAgICAgKiBJZiBlaXRoZXIgY2FsbGJhY2sgcmV0dXJucyBhIGNhbmNlbGxhYmxlIHByb21pc2UsXG4gICAgICogY2FuY2VsbGF0aW9uIHJlcXVlc3RzIHdpbGwgYmUgZGl2ZXJ0ZWQgdG8gaXQsXG4gICAgICogYW5kIHRoZSBzcGVjaWZpZWQgYG9uY2FuY2VsbGVkYCBjYWxsYmFjayB3aWxsIGJlIGRpc2NhcmRlZC5cbiAgICAgKi9cbiAgICB0aGVuPFRSZXN1bHQxID0gVCwgVFJlc3VsdDIgPSBuZXZlcj4ob25mdWxmaWxsZWQ/OiAoKHZhbHVlOiBUKSA9PiBUUmVzdWx0MSB8IFByb21pc2VMaWtlPFRSZXN1bHQxPiB8IENhbmNlbGxhYmxlUHJvbWlzZUxpa2U8VFJlc3VsdDE+KSB8IHVuZGVmaW5lZCB8IG51bGwsIG9ucmVqZWN0ZWQ/OiAoKHJlYXNvbjogYW55KSA9PiBUUmVzdWx0MiB8IFByb21pc2VMaWtlPFRSZXN1bHQyPiB8IENhbmNlbGxhYmxlUHJvbWlzZUxpa2U8VFJlc3VsdDI+KSB8IHVuZGVmaW5lZCB8IG51bGwsIG9uY2FuY2VsbGVkPzogQ2FuY2VsbGFibGVQcm9taXNlQ2FuY2VsbGVyKTogQ2FuY2VsbGFibGVQcm9taXNlPFRSZXN1bHQxIHwgVFJlc3VsdDI+IHtcbiAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIENhbmNlbGxhYmxlUHJvbWlzZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5jZWxsYWJsZVByb21pc2UucHJvdG90eXBlLnRoZW4gY2FsbGVkIG9uIGFuIGludmFsaWQgb2JqZWN0LlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5PVEU6IFR5cGVTY3JpcHQncyBidWlsdC1pbiB0eXBlIGZvciB0aGVuIGlzIGJyb2tlbixcbiAgICAgICAgLy8gYXMgaXQgYWxsb3dzIHNwZWNpZnlpbmcgYW4gYXJiaXRyYXJ5IFRSZXN1bHQxICE9IFQgZXZlbiB3aGVuIG9uZnVsZmlsbGVkIGlzIG5vdCBhIGZ1bmN0aW9uLlxuICAgICAgICAvLyBXZSBjYW5ub3QgZml4IGl0IGlmIHdlIHdhbnQgdG8gQ2FuY2VsbGFibGVQcm9taXNlIHRvIGltcGxlbWVudCBQcm9taXNlTGlrZTxUPi5cblxuICAgICAgICBpZiAoIWlzQ2FsbGFibGUob25mdWxmaWxsZWQpKSB7IG9uZnVsZmlsbGVkID0gaWRlbnRpdHkgYXMgYW55OyB9XG4gICAgICAgIGlmICghaXNDYWxsYWJsZShvbnJlamVjdGVkKSkgeyBvbnJlamVjdGVkID0gdGhyb3dlcjsgfVxuXG4gICAgICAgIGlmIChvbmZ1bGZpbGxlZCA9PT0gaWRlbnRpdHkgJiYgb25yZWplY3RlZCA9PSB0aHJvd2VyKSB7XG4gICAgICAgICAgICAvLyBTaG9ydGN1dCBmb3IgdHJpdmlhbCBhcmd1bWVudHMuXG4gICAgICAgICAgICByZXR1cm4gbmV3IENhbmNlbGxhYmxlUHJvbWlzZSgocmVzb2x2ZSkgPT4gcmVzb2x2ZSh0aGlzIGFzIGFueSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmFycmllcjogUGFydGlhbDxQcm9taXNlV2l0aFJlc29sdmVyczx2b2lkPj4gPSB7fTtcbiAgICAgICAgdGhpc1tiYXJyaWVyU3ltXSA9IGJhcnJpZXI7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBDYW5jZWxsYWJsZVByb21pc2U8VFJlc3VsdDEgfCBUUmVzdWx0Mj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdm9pZCBzdXBlci50aGVuKFxuICAgICAgICAgICAgICAgICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1tiYXJyaWVyU3ltXSA9PT0gYmFycmllcikgeyB0aGlzW2JhcnJpZXJTeW1dID0gbnVsbDsgfVxuICAgICAgICAgICAgICAgICAgICBiYXJyaWVyLnJlc29sdmU/LigpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9uZnVsZmlsbGVkISh2YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAocmVhc29uPykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1tiYXJyaWVyU3ltXSA9PT0gYmFycmllcikgeyB0aGlzW2JhcnJpZXJTeW1dID0gbnVsbDsgfVxuICAgICAgICAgICAgICAgICAgICBiYXJyaWVyLnJlc29sdmU/LigpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9ucmVqZWN0ZWQhKHJlYXNvbikpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSwgYXN5bmMgKGNhdXNlPykgPT4ge1xuICAgICAgICAgICAgLy9jYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb25jYW5jZWxsZWQ/LihjYXVzZSk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2FuY2VsKGNhdXNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgYSBjYWxsYmFjayBmb3Igb25seSB0aGUgcmVqZWN0aW9uIG9mIHRoZSBQcm9taXNlLlxuICAgICAqXG4gICAgICogVGhlIG9wdGlvbmFsIGBvbmNhbmNlbGxlZGAgYXJndW1lbnQgd2lsbCBiZSBpbnZva2VkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLFxuICAgICAqIHdpdGggdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSBgb25jYW5jZWxsZWRgIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBXaGVuIHRoZSBwYXJlbnQgcHJvbWlzZSByZWplY3RzIG9yIGlzIGNhbmNlbGxlZCwgdGhlIGBvbnJlamVjdGVkYCBjYWxsYmFjayB3aWxsIHJ1bixcbiAgICAgKiBfZXZlbiBhZnRlciB0aGUgcmV0dXJuZWQgcHJvbWlzZSBoYXMgYmVlbiBjYW5jZWxsZWQ6X1xuICAgICAqIGluIHRoYXQgY2FzZSwgc2hvdWxkIGl0IHJlamVjdCBvciB0aHJvdywgdGhlIHJlYXNvbiB3aWxsIGJlIHdyYXBwZWRcbiAgICAgKiBpbiBhIHtAbGluayBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcn0gYW5kIGJ1YmJsZWQgdXAgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbi5cbiAgICAgKlxuICAgICAqIEl0IGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgKiBgYGB0c1xuICAgICAqIGNhbmNlbGxhYmxlUHJvbWlzZS50aGVuKHVuZGVmaW5lZCwgb25yZWplY3RlZCwgb25jYW5jZWxsZWQpO1xuICAgICAqIGBgYFxuICAgICAqIGFuZCB0aGUgc2FtZSBjYXZlYXRzIGFwcGx5LlxuICAgICAqXG4gICAgICogQHJldHVybnMgQSBQcm9taXNlIGZvciB0aGUgY29tcGxldGlvbiBvZiB0aGUgY2FsbGJhY2suXG4gICAgICogQ2FuY2VsbGF0aW9uIHJlcXVlc3RzIG9uIHRoZSByZXR1cm5lZCBwcm9taXNlXG4gICAgICogd2lsbCBwcm9wYWdhdGUgdXAgdGhlIGNoYWluIHRvIHRoZSBwYXJlbnQgcHJvbWlzZSxcbiAgICAgKiBidXQgbm90IGluIHRoZSBvdGhlciBkaXJlY3Rpb24uXG4gICAgICpcbiAgICAgKiBUaGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIHtAbGluayBjYW5jZWx9IHdpbGwgZnVsZmlsbCBvbmx5IGFmdGVyIGFsbCBhdHRhY2hlZCBoYW5kbGVyc1xuICAgICAqIHVwIHRoZSBlbnRpcmUgcHJvbWlzZSBjaGFpbiBoYXZlIGJlZW4gcnVuLlxuICAgICAqXG4gICAgICogSWYgYG9ucmVqZWN0ZWRgIHJldHVybnMgYSBjYW5jZWxsYWJsZSBwcm9taXNlLFxuICAgICAqIGNhbmNlbGxhdGlvbiByZXF1ZXN0cyB3aWxsIGJlIGRpdmVydGVkIHRvIGl0LFxuICAgICAqIGFuZCB0aGUgc3BlY2lmaWVkIGBvbmNhbmNlbGxlZGAgY2FsbGJhY2sgd2lsbCBiZSBkaXNjYXJkZWQuXG4gICAgICogU2VlIHtAbGluayB0aGVufSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqL1xuICAgIGNhdGNoPFRSZXN1bHQgPSBuZXZlcj4ob25yZWplY3RlZD86ICgocmVhc29uOiBhbnkpID0+IChQcm9taXNlTGlrZTxUUmVzdWx0PiB8IFRSZXN1bHQpKSB8IHVuZGVmaW5lZCB8IG51bGwsIG9uY2FuY2VsbGVkPzogQ2FuY2VsbGFibGVQcm9taXNlQ2FuY2VsbGVyKTogQ2FuY2VsbGFibGVQcm9taXNlPFQgfCBUUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvbnJlamVjdGVkLCBvbmNhbmNlbGxlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgYSBjYWxsYmFjayB0aGF0IGlzIGludm9rZWQgd2hlbiB0aGUgQ2FuY2VsbGFibGVQcm9taXNlIGlzIHNldHRsZWQgKGZ1bGZpbGxlZCBvciByZWplY3RlZCkuIFRoZVxuICAgICAqIHJlc29sdmVkIHZhbHVlIGNhbm5vdCBiZSBhY2Nlc3NlZCBvciBtb2RpZmllZCBmcm9tIHRoZSBjYWxsYmFjay5cbiAgICAgKiBUaGUgcmV0dXJuZWQgcHJvbWlzZSB3aWxsIHNldHRsZSBpbiB0aGUgc2FtZSBzdGF0ZSBhcyB0aGUgb3JpZ2luYWwgb25lXG4gICAgICogYWZ0ZXIgdGhlIHByb3ZpZGVkIGNhbGxiYWNrIGhhcyBjb21wbGV0ZWQgZXhlY3V0aW9uLFxuICAgICAqIHVubGVzcyB0aGUgY2FsbGJhY2sgdGhyb3dzIG9yIHJldHVybnMgYSByZWplY3RpbmcgcHJvbWlzZSxcbiAgICAgKiBpbiB3aGljaCBjYXNlIHRoZSByZXR1cm5lZCBwcm9taXNlIHdpbGwgcmVqZWN0IGFzIHdlbGwuXG4gICAgICpcbiAgICAgKiBUaGUgb3B0aW9uYWwgYG9uY2FuY2VsbGVkYCBhcmd1bWVudCB3aWxsIGJlIGludm9rZWQgd2hlbiB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsXG4gICAgICogd2l0aCB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGBvbmNhbmNlbGxlZGAgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIE9uY2UgdGhlIHBhcmVudCBwcm9taXNlIHNldHRsZXMsIHRoZSBgb25maW5hbGx5YCBjYWxsYmFjayB3aWxsIHJ1bixcbiAgICAgKiBfZXZlbiBhZnRlciB0aGUgcmV0dXJuZWQgcHJvbWlzZSBoYXMgYmVlbiBjYW5jZWxsZWQ6X1xuICAgICAqIGluIHRoYXQgY2FzZSwgc2hvdWxkIGl0IHJlamVjdCBvciB0aHJvdywgdGhlIHJlYXNvbiB3aWxsIGJlIHdyYXBwZWRcbiAgICAgKiBpbiBhIHtAbGluayBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcn0gYW5kIGJ1YmJsZWQgdXAgYXMgYW4gdW5oYW5kbGVkIHJlamVjdGlvbi5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIHtAbGluayB0aGVufSBhbmQgdGhlIHNhbWUgY2F2ZWF0cyBhcHBseS5cbiAgICAgKiBJdCBpcyBwb2x5ZmlsbGVkLCBoZW5jZSBhdmFpbGFibGUgaW4gZXZlcnkgT1Mvd2VidmlldyB2ZXJzaW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMgQSBQcm9taXNlIGZvciB0aGUgY29tcGxldGlvbiBvZiB0aGUgY2FsbGJhY2suXG4gICAgICogQ2FuY2VsbGF0aW9uIHJlcXVlc3RzIG9uIHRoZSByZXR1cm5lZCBwcm9taXNlXG4gICAgICogd2lsbCBwcm9wYWdhdGUgdXAgdGhlIGNoYWluIHRvIHRoZSBwYXJlbnQgcHJvbWlzZSxcbiAgICAgKiBidXQgbm90IGluIHRoZSBvdGhlciBkaXJlY3Rpb24uXG4gICAgICpcbiAgICAgKiBUaGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIHtAbGluayBjYW5jZWx9IHdpbGwgZnVsZmlsbCBvbmx5IGFmdGVyIGFsbCBhdHRhY2hlZCBoYW5kbGVyc1xuICAgICAqIHVwIHRoZSBlbnRpcmUgcHJvbWlzZSBjaGFpbiBoYXZlIGJlZW4gcnVuLlxuICAgICAqXG4gICAgICogSWYgYG9uZmluYWxseWAgcmV0dXJucyBhIGNhbmNlbGxhYmxlIHByb21pc2UsXG4gICAgICogY2FuY2VsbGF0aW9uIHJlcXVlc3RzIHdpbGwgYmUgZGl2ZXJ0ZWQgdG8gaXQsXG4gICAgICogYW5kIHRoZSBzcGVjaWZpZWQgYG9uY2FuY2VsbGVkYCBjYWxsYmFjayB3aWxsIGJlIGRpc2NhcmRlZC5cbiAgICAgKiBTZWUge0BsaW5rIHRoZW59IGZvciBtb3JlIGRldGFpbHMuXG4gICAgICovXG4gICAgZmluYWxseShvbmZpbmFsbHk/OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQgfCBudWxsLCBvbmNhbmNlbGxlZD86IENhbmNlbGxhYmxlUHJvbWlzZUNhbmNlbGxlcik6IENhbmNlbGxhYmxlUHJvbWlzZTxUPiB7XG4gICAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBDYW5jZWxsYWJsZVByb21pc2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2FuY2VsbGFibGVQcm9taXNlLnByb3RvdHlwZS5maW5hbGx5IGNhbGxlZCBvbiBhbiBpbnZhbGlkIG9iamVjdC5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzQ2FsbGFibGUob25maW5hbGx5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGhlbihvbmZpbmFsbHksIG9uZmluYWxseSwgb25jYW5jZWxsZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudGhlbihcbiAgICAgICAgICAgICh2YWx1ZSkgPT4gQ2FuY2VsbGFibGVQcm9taXNlLnJlc29sdmUob25maW5hbGx5KCkpLnRoZW4oKCkgPT4gdmFsdWUpLFxuICAgICAgICAgICAgKHJlYXNvbj8pID0+IENhbmNlbGxhYmxlUHJvbWlzZS5yZXNvbHZlKG9uZmluYWxseSgpKS50aGVuKCgpID0+IHsgdGhyb3cgcmVhc29uOyB9KSxcbiAgICAgICAgICAgIG9uY2FuY2VsbGVkLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdlIHVzZSB0aGUgYFtTeW1ib2wuc3BlY2llc11gIHN0YXRpYyBwcm9wZXJ0eSwgaWYgYXZhaWxhYmxlLFxuICAgICAqIHRvIGRpc2FibGUgdGhlIGJ1aWx0LWluIGF1dG9tYXRpYyBzdWJjbGFzc2luZyBmZWF0dXJlcyBmcm9tIHtAbGluayBQcm9taXNlfS5cbiAgICAgKiBJdCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyB0aGF0IGV4dGVuZGVycyBkbyBub3Qgb3ZlcnJpZGUgdGhpcy5cbiAgICAgKiBPbmNlIHRoZSBwcm9wb3NhbCBhdCBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1ybS1idWlsdGluLXN1YmNsYXNzaW5nXG4gICAgICogaXMgZWl0aGVyIGFjY2VwdGVkIG9yIHJldGlyZWQsIHRoaXMgaW1wbGVtZW50YXRpb24gd2lsbCBoYXZlIHRvIGJlIHJldmlzZWQgYWNjb3JkaW5nbHkuXG4gICAgICpcbiAgICAgKiBAaWdub3JlXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgc3RhdGljIGdldCBbc3BlY2llc10oKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBDYW5jZWxsYWJsZVByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIGFuIGFycmF5IG9mIHJlc3VsdHNcbiAgICAgKiB3aGVuIGFsbCBvZiB0aGUgcHJvdmlkZWQgUHJvbWlzZXMgcmVzb2x2ZSwgb3IgcmVqZWN0ZWQgd2hlbiBhbnkgUHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICAgKlxuICAgICAqIEV2ZXJ5IG9uZSBvZiB0aGUgcHJvdmlkZWQgb2JqZWN0cyB0aGF0IGlzIGEgdGhlbmFibGUgX2FuZF8gY2FuY2VsbGFibGUgb2JqZWN0XG4gICAgICogd2lsbCBiZSBjYW5jZWxsZWQgd2hlbiB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBjYW5jZWxsZWQsIHdpdGggdGhlIHNhbWUgY2F1c2UuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgYWxsPFQ+KHZhbHVlczogSXRlcmFibGU8VCB8IFByb21pc2VMaWtlPFQ+Pik6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFQ+W10+O1xuICAgIHN0YXRpYyBhbGw8VCBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSB8IFtdPih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8eyAtcmVhZG9ubHkgW1AgaW4ga2V5b2YgVF06IEF3YWl0ZWQ8VFtQXT47IH0+O1xuICAgIHN0YXRpYyBhbGw8VCBleHRlbmRzIEl0ZXJhYmxlPHVua25vd24+IHwgQXJyYXlMaWtlPHVua25vd24+Pih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBsZXQgY29sbGVjdGVkID0gQXJyYXkuZnJvbSh2YWx1ZXMpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gY29sbGVjdGVkLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyBDYW5jZWxsYWJsZVByb21pc2UucmVzb2x2ZShjb2xsZWN0ZWQpXG4gICAgICAgICAgICA6IG5ldyBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIHZvaWQgUHJvbWlzZS5hbGwoY29sbGVjdGVkKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICB9LCAoY2F1c2U/KTogUHJvbWlzZTx2b2lkPiA9PiBjYW5jZWxBbGwocHJvbWlzZSwgY29sbGVjdGVkLCBjYXVzZSkpO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgQ2FuY2VsbGFibGVQcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhbiBhcnJheSBvZiByZXN1bHRzXG4gICAgICogd2hlbiBhbGwgb2YgdGhlIHByb3ZpZGVkIFByb21pc2VzIHJlc29sdmUgb3IgcmVqZWN0LlxuICAgICAqXG4gICAgICogRXZlcnkgb25lIG9mIHRoZSBwcm92aWRlZCBvYmplY3RzIHRoYXQgaXMgYSB0aGVuYWJsZSBfYW5kXyBjYW5jZWxsYWJsZSBvYmplY3RcbiAgICAgKiB3aWxsIGJlIGNhbmNlbGxlZCB3aGVuIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIGNhbmNlbGxlZCwgd2l0aCB0aGUgc2FtZSBjYXVzZS5cbiAgICAgKlxuICAgICAqIEBncm91cCBTdGF0aWMgTWV0aG9kc1xuICAgICAqL1xuICAgIHN0YXRpYyBhbGxTZXR0bGVkPFQ+KHZhbHVlczogSXRlcmFibGU8VCB8IFByb21pc2VMaWtlPFQ+Pik6IENhbmNlbGxhYmxlUHJvbWlzZTxQcm9taXNlU2V0dGxlZFJlc3VsdDxBd2FpdGVkPFQ+PltdPjtcbiAgICBzdGF0aWMgYWxsU2V0dGxlZDxUIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdIHwgW10+KHZhbHVlczogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTx7IC1yZWFkb25seSBbUCBpbiBrZXlvZiBUXTogUHJvbWlzZVNldHRsZWRSZXN1bHQ8QXdhaXRlZDxUW1BdPj47IH0+O1xuICAgIHN0YXRpYyBhbGxTZXR0bGVkPFQgZXh0ZW5kcyBJdGVyYWJsZTx1bmtub3duPiB8IEFycmF5TGlrZTx1bmtub3duPj4odmFsdWVzOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgbGV0IGNvbGxlY3RlZCA9IEFycmF5LmZyb20odmFsdWVzKTtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IGNvbGxlY3RlZC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gQ2FuY2VsbGFibGVQcm9taXNlLnJlc29sdmUoY29sbGVjdGVkKVxuICAgICAgICAgICAgOiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPHVua25vd24+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICB2b2lkIFByb21pc2UuYWxsU2V0dGxlZChjb2xsZWN0ZWQpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgIH0sIChjYXVzZT8pOiBQcm9taXNlPHZvaWQ+ID0+IGNhbmNlbEFsbChwcm9taXNlLCBjb2xsZWN0ZWQsIGNhdXNlKSk7XG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBhbnkgZnVuY3Rpb24gcmV0dXJucyBhIHByb21pc2UgdGhhdCBpcyBmdWxmaWxsZWQgYnkgdGhlIGZpcnN0IGdpdmVuIHByb21pc2UgdG8gYmUgZnVsZmlsbGVkLFxuICAgICAqIG9yIHJlamVjdGVkIHdpdGggYW4gQWdncmVnYXRlRXJyb3IgY29udGFpbmluZyBhbiBhcnJheSBvZiByZWplY3Rpb24gcmVhc29uc1xuICAgICAqIGlmIGFsbCBvZiB0aGUgZ2l2ZW4gcHJvbWlzZXMgYXJlIHJlamVjdGVkLlxuICAgICAqIEl0IHJlc29sdmVzIGFsbCBlbGVtZW50cyBvZiB0aGUgcGFzc2VkIGl0ZXJhYmxlIHRvIHByb21pc2VzIGFzIGl0IHJ1bnMgdGhpcyBhbGdvcml0aG0uXG4gICAgICpcbiAgICAgKiBFdmVyeSBvbmUgb2YgdGhlIHByb3ZpZGVkIG9iamVjdHMgdGhhdCBpcyBhIHRoZW5hYmxlIF9hbmRfIGNhbmNlbGxhYmxlIG9iamVjdFxuICAgICAqIHdpbGwgYmUgY2FuY2VsbGVkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLCB3aXRoIHRoZSBzYW1lIGNhdXNlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIGFueTxUPih2YWx1ZXM6IEl0ZXJhYmxlPFQgfCBQcm9taXNlTGlrZTxUPj4pOiBDYW5jZWxsYWJsZVByb21pc2U8QXdhaXRlZDxUPj47XG4gICAgc3RhdGljIGFueTxUIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdIHwgW10+KHZhbHVlczogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFRbbnVtYmVyXT4+O1xuICAgIHN0YXRpYyBhbnk8VCBleHRlbmRzIEl0ZXJhYmxlPHVua25vd24+IHwgQXJyYXlMaWtlPHVua25vd24+Pih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBsZXQgY29sbGVjdGVkID0gQXJyYXkuZnJvbSh2YWx1ZXMpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gY29sbGVjdGVkLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyBDYW5jZWxsYWJsZVByb21pc2UucmVzb2x2ZShjb2xsZWN0ZWQpXG4gICAgICAgICAgICA6IG5ldyBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIHZvaWQgUHJvbWlzZS5hbnkoY29sbGVjdGVkKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICB9LCAoY2F1c2U/KTogUHJvbWlzZTx2b2lkPiA9PiBjYW5jZWxBbGwocHJvbWlzZSwgY29sbGVjdGVkLCBjYXVzZSkpO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIG9yIHJlamVjdGVkIHdoZW4gYW55IG9mIHRoZSBwcm92aWRlZCBQcm9taXNlcyBhcmUgcmVzb2x2ZWQgb3IgcmVqZWN0ZWQuXG4gICAgICpcbiAgICAgKiBFdmVyeSBvbmUgb2YgdGhlIHByb3ZpZGVkIG9iamVjdHMgdGhhdCBpcyBhIHRoZW5hYmxlIF9hbmRfIGNhbmNlbGxhYmxlIG9iamVjdFxuICAgICAqIHdpbGwgYmUgY2FuY2VsbGVkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UgaXMgY2FuY2VsbGVkLCB3aXRoIHRoZSBzYW1lIGNhdXNlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHJhY2U8VD4odmFsdWVzOiBJdGVyYWJsZTxUIHwgUHJvbWlzZUxpa2U8VD4+KTogQ2FuY2VsbGFibGVQcm9taXNlPEF3YWl0ZWQ8VD4+O1xuICAgIHN0YXRpYyByYWNlPFQgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gfCBbXT4odmFsdWVzOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPEF3YWl0ZWQ8VFtudW1iZXJdPj47XG4gICAgc3RhdGljIHJhY2U8VCBleHRlbmRzIEl0ZXJhYmxlPHVua25vd24+IHwgQXJyYXlMaWtlPHVua25vd24+Pih2YWx1ZXM6IFQpOiBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICBsZXQgY29sbGVjdGVkID0gQXJyYXkuZnJvbSh2YWx1ZXMpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTx1bmtub3duPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB2b2lkIFByb21pc2UucmFjZShjb2xsZWN0ZWQpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSwgKGNhdXNlPyk6IFByb21pc2U8dm9pZD4gPT4gY2FuY2VsQWxsKHByb21pc2UsIGNvbGxlY3RlZCwgY2F1c2UpKTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBjYW5jZWxsZWQgQ2FuY2VsbGFibGVQcm9taXNlIGZvciB0aGUgcHJvdmlkZWQgY2F1c2UuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgY2FuY2VsPFQgPSBuZXZlcj4oY2F1c2U/OiBhbnkpOiBDYW5jZWxsYWJsZVByb21pc2U8VD4ge1xuICAgICAgICBjb25zdCBwID0gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTxUPigoKSA9PiB7fSk7XG4gICAgICAgIHAuY2FuY2VsKGNhdXNlKTtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBDYW5jZWxsYWJsZVByb21pc2UgdGhhdCBjYW5jZWxzXG4gICAgICogYWZ0ZXIgdGhlIHNwZWNpZmllZCB0aW1lb3V0LCB3aXRoIHRoZSBwcm92aWRlZCBjYXVzZS5cbiAgICAgKlxuICAgICAqIElmIHRoZSB7QGxpbmsgQWJvcnRTaWduYWwudGltZW91dH0gZmFjdG9yeSBtZXRob2QgaXMgYXZhaWxhYmxlLFxuICAgICAqIGl0IGlzIHVzZWQgdG8gYmFzZSB0aGUgdGltZW91dCBvbiBfYWN0aXZlXyB0aW1lIHJhdGhlciB0aGFuIF9lbGFwc2VkXyB0aW1lLlxuICAgICAqIE90aGVyd2lzZSwgYHRpbWVvdXRgIGZhbGxzIGJhY2sgdG8ge0BsaW5rIHNldFRpbWVvdXR9LlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHRpbWVvdXQ8VCA9IG5ldmVyPihtaWxsaXNlY29uZHM6IG51bWJlciwgY2F1c2U/OiBhbnkpOiBDYW5jZWxsYWJsZVByb21pc2U8VD4ge1xuICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTxUPigoKSA9PiB7fSk7XG4gICAgICAgIGlmIChBYm9ydFNpZ25hbCAmJiB0eXBlb2YgQWJvcnRTaWduYWwgPT09ICdmdW5jdGlvbicgJiYgQWJvcnRTaWduYWwudGltZW91dCAmJiB0eXBlb2YgQWJvcnRTaWduYWwudGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgQWJvcnRTaWduYWwudGltZW91dChtaWxsaXNlY29uZHMpLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4gdm9pZCBwcm9taXNlLmNhbmNlbChjYXVzZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB2b2lkIHByb21pc2UuY2FuY2VsKGNhdXNlKSwgbWlsbGlzZWNvbmRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IENhbmNlbGxhYmxlUHJvbWlzZSB0aGF0IHJlc29sdmVzIGFmdGVyIHRoZSBzcGVjaWZpZWQgdGltZW91dC5cbiAgICAgKiBUaGUgcmV0dXJuZWQgcHJvbWlzZSBjYW4gYmUgY2FuY2VsbGVkIHdpdGhvdXQgY29uc2VxdWVuY2VzLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHNsZWVwKG1pbGxpc2Vjb25kczogbnVtYmVyKTogQ2FuY2VsbGFibGVQcm9taXNlPHZvaWQ+O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQ2FuY2VsbGFibGVQcm9taXNlIHRoYXQgcmVzb2x2ZXMgYWZ0ZXJcbiAgICAgKiB0aGUgc3BlY2lmaWVkIHRpbWVvdXQsIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlLlxuICAgICAqIFRoZSByZXR1cm5lZCBwcm9taXNlIGNhbiBiZSBjYW5jZWxsZWQgd2l0aG91dCBjb25zZXF1ZW5jZXMuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgc2xlZXA8VD4obWlsbGlzZWNvbmRzOiBudW1iZXIsIHZhbHVlOiBUKTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+O1xuICAgIHN0YXRpYyBzbGVlcDxUID0gdm9pZD4obWlsbGlzZWNvbmRzOiBudW1iZXIsIHZhbHVlPzogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlPFQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUodmFsdWUhKSwgbWlsbGlzZWNvbmRzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyByZWplY3RlZCBDYW5jZWxsYWJsZVByb21pc2UgZm9yIHRoZSBwcm92aWRlZCByZWFzb24uXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgcmVqZWN0PFQgPSBuZXZlcj4ocmVhc29uPzogYW55KTogQ2FuY2VsbGFibGVQcm9taXNlPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYW5jZWxsYWJsZVByb21pc2U8VD4oKF8sIHJlamVjdCkgPT4gcmVqZWN0KHJlYXNvbikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcmVzb2x2ZWQgQ2FuY2VsbGFibGVQcm9taXNlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHJlc29sdmUoKTogQ2FuY2VsbGFibGVQcm9taXNlPHZvaWQ+O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcmVzb2x2ZWQgQ2FuY2VsbGFibGVQcm9taXNlIGZvciB0aGUgcHJvdmlkZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgcmVzb2x2ZTxUPih2YWx1ZTogVCk6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFQ+PjtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHJlc29sdmVkIENhbmNlbGxhYmxlUHJvbWlzZSBmb3IgdGhlIHByb3ZpZGVkIHZhbHVlLlxuICAgICAqXG4gICAgICogQGdyb3VwIFN0YXRpYyBNZXRob2RzXG4gICAgICovXG4gICAgc3RhdGljIHJlc29sdmU8VD4odmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPik6IENhbmNlbGxhYmxlUHJvbWlzZTxBd2FpdGVkPFQ+PjtcbiAgICBzdGF0aWMgcmVzb2x2ZTxUID0gdm9pZD4odmFsdWU/OiBUIHwgUHJvbWlzZUxpa2U8VD4pOiBDYW5jZWxsYWJsZVByb21pc2U8QXdhaXRlZDxUPj4ge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBDYW5jZWxsYWJsZVByb21pc2UpIHtcbiAgICAgICAgICAgIC8vIE9wdGltaXNlIGZvciBjYW5jZWxsYWJsZSBwcm9taXNlcy5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTxhbnk+KChyZXNvbHZlKSA9PiByZXNvbHZlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBDYW5jZWxsYWJsZVByb21pc2UgYW5kIHJldHVybnMgaXQgaW4gYW4gb2JqZWN0LCBhbG9uZyB3aXRoIGl0cyByZXNvbHZlIGFuZCByZWplY3QgZnVuY3Rpb25zXG4gICAgICogYW5kIGEgZ2V0dGVyL3NldHRlciBmb3IgdGhlIGNhbmNlbGxhdGlvbiBjYWxsYmFjay5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHBvbHlmaWxsZWQsIGhlbmNlIGF2YWlsYWJsZSBpbiBldmVyeSBPUy93ZWJ2aWV3IHZlcnNpb24uXG4gICAgICpcbiAgICAgKiBAZ3JvdXAgU3RhdGljIE1ldGhvZHNcbiAgICAgKi9cbiAgICBzdGF0aWMgd2l0aFJlc29sdmVyczxUPigpOiBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+IHtcbiAgICAgICAgbGV0IHJlc3VsdDogQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxUPiA9IHsgb25jYW5jZWxsZWQ6IG51bGwgfSBhcyBhbnk7XG4gICAgICAgIHJlc3VsdC5wcm9taXNlID0gbmV3IENhbmNlbGxhYmxlUHJvbWlzZTxUPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICByZXN1bHQucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgICAgICByZXN1bHQucmVqZWN0ID0gcmVqZWN0O1xuICAgICAgICB9LCAoY2F1c2U/OiBhbnkpID0+IHsgcmVzdWx0Lm9uY2FuY2VsbGVkPy4oY2F1c2UpOyB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGNhbGxiYWNrIHRoYXQgaW1wbGVtZW50cyB0aGUgY2FuY2VsbGF0aW9uIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGNhbmNlbGxhYmxlIHByb21pc2UuXG4gKiBUaGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIHRoZSByZXN1bHRpbmcgZnVuY3Rpb24gZG9lcyBub3QgcmVqZWN0LlxuICovXG5mdW5jdGlvbiBjYW5jZWxsZXJGb3I8VD4ocHJvbWlzZTogQ2FuY2VsbGFibGVQcm9taXNlV2l0aFJlc29sdmVyczxUPiwgc3RhdGU6IENhbmNlbGxhYmxlUHJvbWlzZVN0YXRlKSB7XG4gICAgbGV0IGNhbmNlbGxhdGlvblByb21pc2U6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPiA9IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiAocmVhc29uOiBDYW5jZWxFcnJvcik6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPiA9PiB7XG4gICAgICAgIGlmICghc3RhdGUuc2V0dGxlZCkge1xuICAgICAgICAgICAgc3RhdGUuc2V0dGxlZCA9IHRydWU7XG4gICAgICAgICAgICBzdGF0ZS5yZWFzb24gPSByZWFzb247XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdChyZWFzb24pO1xuXG4gICAgICAgICAgICAvLyBBdHRhY2ggYW4gZXJyb3IgaGFuZGxlciB0aGF0IGlnbm9yZXMgdGhpcyBzcGVjaWZpYyByZWplY3Rpb24gcmVhc29uIGFuZCBub3RoaW5nIGVsc2UuXG4gICAgICAgICAgICAvLyBJbiB0aGVvcnksIGEgc2FuZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIGF0IHRoaXMgcG9pbnRcbiAgICAgICAgICAgIC8vIHNob3VsZCBhbHdheXMgcmVqZWN0IHdpdGggb3VyIGNhbmNlbGxhdGlvbiByZWFzb24sXG4gICAgICAgICAgICAvLyBoZW5jZSB0aGUgaGFuZGxlciB3aWxsIG5ldmVyIHRocm93LlxuICAgICAgICAgICAgdm9pZCBQcm9taXNlLnByb3RvdHlwZS50aGVuLmNhbGwocHJvbWlzZS5wcm9taXNlLCB1bmRlZmluZWQsIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyICE9PSByZWFzb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgcmVhc29uIGlzIG5vdCBzZXQsIHRoZSBwcm9taXNlIHJlc29sdmVkIHJlZ3VsYXJseSwgaGVuY2Ugd2UgbXVzdCBub3QgY2FsbCBvbmNhbmNlbGxlZC5cbiAgICAgICAgLy8gSWYgb25jYW5jZWxsZWQgaXMgdW5zZXQsIG5vIG5lZWQgdG8gZ28gYW55IGZ1cnRoZXIuXG4gICAgICAgIGlmICghc3RhdGUucmVhc29uIHx8ICFwcm9taXNlLm9uY2FuY2VsbGVkKSB7IHJldHVybjsgfVxuXG4gICAgICAgIGNhbmNlbGxhdGlvblByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHByb21pc2Uub25jYW5jZWxsZWQhKHN0YXRlLnJlYXNvbiEuY2F1c2UpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIFByb21pc2UucmVqZWN0KG5ldyBDYW5jZWxsZWRSZWplY3Rpb25FcnJvcihwcm9taXNlLnByb21pc2UsIGVyciwgXCJVbmhhbmRsZWQgZXhjZXB0aW9uIGluIG9uY2FuY2VsbGVkIGNhbGxiYWNrLlwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKChyZWFzb24/KSA9PiB7XG4gICAgICAgICAgICBQcm9taXNlLnJlamVjdChuZXcgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3IocHJvbWlzZS5wcm9taXNlLCByZWFzb24sIFwiVW5oYW5kbGVkIHJlamVjdGlvbiBpbiBvbmNhbmNlbGxlZCBjYWxsYmFjay5cIikpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBVbnNldCBvbmNhbmNlbGxlZCB0byBwcmV2ZW50IHJlcGVhdGVkIGNhbGxzLlxuICAgICAgICBwcm9taXNlLm9uY2FuY2VsbGVkID0gbnVsbDtcblxuICAgICAgICByZXR1cm4gY2FuY2VsbGF0aW9uUHJvbWlzZTtcbiAgICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGNhbGxiYWNrIHRoYXQgaW1wbGVtZW50cyB0aGUgcmVzb2x1dGlvbiBhbGdvcml0aG0gZm9yIHRoZSBnaXZlbiBjYW5jZWxsYWJsZSBwcm9taXNlLlxuICovXG5mdW5jdGlvbiByZXNvbHZlckZvcjxUPihwcm9taXNlOiBDYW5jZWxsYWJsZVByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+LCBzdGF0ZTogQ2FuY2VsbGFibGVQcm9taXNlU3RhdGUpOiBDYW5jZWxsYWJsZVByb21pc2VSZXNvbHZlcjxUPiB7XG4gICAgcmV0dXJuICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoc3RhdGUucmVzb2x2aW5nKSB7IHJldHVybjsgfVxuICAgICAgICBzdGF0ZS5yZXNvbHZpbmcgPSB0cnVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gcHJvbWlzZS5wcm9taXNlKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuc2V0dGxlZCkgeyByZXR1cm47IH1cbiAgICAgICAgICAgIHN0YXRlLnNldHRsZWQgPSB0cnVlO1xuICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcihcIkEgcHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdHNlbGYuXCIpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgICAgIGxldCB0aGVuOiBhbnk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRoZW4gPSAodmFsdWUgYXMgYW55KS50aGVuO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuc2V0dGxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc0NhbGxhYmxlKHRoZW4pKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNhbmNlbCA9ICh2YWx1ZSBhcyBhbnkpLmNhbmNlbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ2FsbGFibGUoY2FuY2VsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb25jYW5jZWxsZWQgPSAoY2F1c2U/OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZsZWN0LmFwcGx5KGNhbmNlbCwgdmFsdWUsIFtjYXVzZV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5yZWFzb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBhbHJlYWR5IGNhbmNlbGxlZCwgcHJvcGFnYXRlIGNhbmNlbGxhdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcHJvbWlzZSByZXR1cm5lZCBmcm9tIHRoZSBjYW5jZWxsZXIgYWxnb3JpdGhtIGRvZXMgbm90IHJlamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIGl0IGNhbiBiZSBkaXNjYXJkZWQgc2FmZWx5LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgY2FuY2VsbGVyRm9yKHsgLi4ucHJvbWlzZSwgb25jYW5jZWxsZWQgfSwgc3RhdGUpKHN0YXRlLnJlYXNvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2Uub25jYW5jZWxsZWQgPSBvbmNhbmNlbGxlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2gge31cblxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlOiBDYW5jZWxsYWJsZVByb21pc2VTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgcm9vdDogc3RhdGUucm9vdCxcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2aW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0IHNldHRsZWQoKSB7IHJldHVybiB0aGlzLnJvb3Quc2V0dGxlZCB9LFxuICAgICAgICAgICAgICAgICAgICBzZXQgc2V0dGxlZCh2YWx1ZSkgeyB0aGlzLnJvb3Quc2V0dGxlZCA9IHZhbHVlOyB9LFxuICAgICAgICAgICAgICAgICAgICBnZXQgcmVhc29uKCkgeyByZXR1cm4gdGhpcy5yb290LnJlYXNvbiB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlamVjdG9yID0gcmVqZWN0b3JGb3IocHJvbWlzZSwgbmV3U3RhdGUpO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIFJlZmxlY3QuYXBwbHkodGhlbiwgdmFsdWUsIFtyZXNvbHZlckZvcihwcm9taXNlLCBuZXdTdGF0ZSksIHJlamVjdG9yXSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdG9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjsgLy8gSU1QT1JUQU5UIVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlLnNldHRsZWQpIHsgcmV0dXJuOyB9XG4gICAgICAgIHN0YXRlLnNldHRsZWQgPSB0cnVlO1xuICAgICAgICBwcm9taXNlLnJlc29sdmUodmFsdWUpO1xuICAgIH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGNhbGxiYWNrIHRoYXQgaW1wbGVtZW50cyB0aGUgcmVqZWN0aW9uIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGNhbmNlbGxhYmxlIHByb21pc2UuXG4gKi9cbmZ1bmN0aW9uIHJlamVjdG9yRm9yPFQ+KHByb21pc2U6IENhbmNlbGxhYmxlUHJvbWlzZVdpdGhSZXNvbHZlcnM8VD4sIHN0YXRlOiBDYW5jZWxsYWJsZVByb21pc2VTdGF0ZSk6IENhbmNlbGxhYmxlUHJvbWlzZVJlamVjdG9yIHtcbiAgICByZXR1cm4gKHJlYXNvbj8pID0+IHtcbiAgICAgICAgaWYgKHN0YXRlLnJlc29sdmluZykgeyByZXR1cm47IH1cbiAgICAgICAgc3RhdGUucmVzb2x2aW5nID0gdHJ1ZTtcblxuICAgICAgICBpZiAoc3RhdGUuc2V0dGxlZCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAocmVhc29uIGluc3RhbmNlb2YgQ2FuY2VsRXJyb3IgJiYgc3RhdGUucmVhc29uIGluc3RhbmNlb2YgQ2FuY2VsRXJyb3IgJiYgT2JqZWN0LmlzKHJlYXNvbi5jYXVzZSwgc3RhdGUucmVhc29uLmNhdXNlKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBTd2FsbG93IGxhdGUgcmVqZWN0aW9ucyB0aGF0IGFyZSBDYW5jZWxFcnJvcnMgd2hvc2UgY2FuY2VsbGF0aW9uIGNhdXNlIGlzIHRoZSBzYW1lIGFzIG91cnMuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHt9XG5cbiAgICAgICAgICAgIHZvaWQgUHJvbWlzZS5yZWplY3QobmV3IENhbmNlbGxlZFJlamVjdGlvbkVycm9yKHByb21pc2UucHJvbWlzZSwgcmVhc29uKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGF0ZS5zZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogQ2FuY2VscyBhbGwgdmFsdWVzIGluIGFuIGFycmF5IHRoYXQgbG9vayBsaWtlIGNhbmNlbGxhYmxlIHRoZW5hYmxlcy5cbiAqIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgb25jZSBhbGwgY2FuY2VsbGF0aW9uIHByb2NlZHVyZXMgZm9yIHRoZSBnaXZlbiB2YWx1ZXMgaGF2ZSBzZXR0bGVkLlxuICovXG5mdW5jdGlvbiBjYW5jZWxBbGwocGFyZW50OiBDYW5jZWxsYWJsZVByb21pc2U8dW5rbm93bj4sIHZhbHVlczogYW55W10sIGNhdXNlPzogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVzdWx0czogUHJvbWlzZTx2b2lkPltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgICBsZXQgY2FuY2VsOiBDYW5jZWxsYWJsZVByb21pc2VDYW5jZWxsZXI7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIWlzQ2FsbGFibGUodmFsdWUudGhlbikpIHsgY29udGludWU7IH1cbiAgICAgICAgICAgIGNhbmNlbCA9IHZhbHVlLmNhbmNlbDtcbiAgICAgICAgICAgIGlmICghaXNDYWxsYWJsZShjYW5jZWwpKSB7IGNvbnRpbnVlOyB9XG4gICAgICAgIH0gY2F0Y2ggeyBjb250aW51ZTsgfVxuXG4gICAgICAgIGxldCByZXN1bHQ6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IFJlZmxlY3QuYXBwbHkoY2FuY2VsLCB2YWx1ZSwgW2NhdXNlXSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgUHJvbWlzZS5yZWplY3QobmV3IENhbmNlbGxlZFJlamVjdGlvbkVycm9yKHBhcmVudCwgZXJyLCBcIlVuaGFuZGxlZCBleGNlcHRpb24gaW4gY2FuY2VsIG1ldGhvZC5cIikpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJlc3VsdCkgeyBjb250aW51ZTsgfVxuICAgICAgICByZXN1bHRzLnB1c2goXG4gICAgICAgICAgICAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSAgPyByZXN1bHQgOiBQcm9taXNlLnJlc29sdmUocmVzdWx0KSkuY2F0Y2goKHJlYXNvbj8pID0+IHtcbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlamVjdChuZXcgQ2FuY2VsbGVkUmVqZWN0aW9uRXJyb3IocGFyZW50LCByZWFzb24sIFwiVW5oYW5kbGVkIHJlamVjdGlvbiBpbiBjYW5jZWwgbWV0aG9kLlwiKSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLmFsbChyZXN1bHRzKSBhcyBhbnk7XG59XG5cbi8qKlxuICogUmV0dXJucyBpdHMgYXJndW1lbnQuXG4gKi9cbmZ1bmN0aW9uIGlkZW50aXR5PFQ+KHg6IFQpOiBUIHtcbiAgICByZXR1cm4geDtcbn1cblxuLyoqXG4gKiBUaHJvd3MgaXRzIGFyZ3VtZW50LlxuICovXG5mdW5jdGlvbiB0aHJvd2VyKHJlYXNvbj86IGFueSk6IG5ldmVyIHtcbiAgICB0aHJvdyByZWFzb247XG59XG5cbi8qKlxuICogQXR0ZW1wdHMgdmFyaW91cyBzdHJhdGVnaWVzIHRvIGNvbnZlcnQgYW4gZXJyb3IgdG8gYSBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGVycm9yTWVzc2FnZShlcnI6IGFueSk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yIHx8IHR5cGVvZiBlcnIgIT09ICdvYmplY3QnIHx8IGVyci50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyBlcnI7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIHt9XG5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZXJyKTtcbiAgICB9IGNhdGNoIHt9XG5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGVycik7XG4gICAgfSBjYXRjaCB7fVxuXG4gICAgcmV0dXJuIFwiPGNvdWxkIG5vdCBjb252ZXJ0IGVycm9yIHRvIHN0cmluZz5cIjtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBjdXJyZW50IGJhcnJpZXIgcHJvbWlzZSBmb3IgdGhlIGdpdmVuIGNhbmNlbGxhYmxlIHByb21pc2UuIElmIG5lY2Vzc2FyeSwgaW5pdGlhbGlzZXMgdGhlIGJhcnJpZXIuXG4gKi9cbmZ1bmN0aW9uIGN1cnJlbnRCYXJyaWVyPFQ+KHByb21pc2U6IENhbmNlbGxhYmxlUHJvbWlzZTxUPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBwd3I6IFBhcnRpYWw8UHJvbWlzZVdpdGhSZXNvbHZlcnM8dm9pZD4+ID0gcHJvbWlzZVtiYXJyaWVyU3ltXSA/PyB7fTtcbiAgICBpZiAoISgncHJvbWlzZScgaW4gcHdyKSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHB3ciwgcHJvbWlzZVdpdGhSZXNvbHZlcnM8dm9pZD4oKSk7XG4gICAgfVxuICAgIGlmIChwcm9taXNlW2JhcnJpZXJTeW1dID09IG51bGwpIHtcbiAgICAgICAgcHdyLnJlc29sdmUhKCk7XG4gICAgICAgIHByb21pc2VbYmFycmllclN5bV0gPSBwd3I7XG4gICAgfVxuICAgIHJldHVybiBwd3IucHJvbWlzZSE7XG59XG5cbi8vIFBvbHlmaWxsIFByb21pc2Uud2l0aFJlc29sdmVycy5cbmxldCBwcm9taXNlV2l0aFJlc29sdmVycyA9IFByb21pc2Uud2l0aFJlc29sdmVycztcbmlmIChwcm9taXNlV2l0aFJlc29sdmVycyAmJiB0eXBlb2YgcHJvbWlzZVdpdGhSZXNvbHZlcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBwcm9taXNlV2l0aFJlc29sdmVycyA9IHByb21pc2VXaXRoUmVzb2x2ZXJzLmJpbmQoUHJvbWlzZSk7XG59IGVsc2Uge1xuICAgIHByb21pc2VXaXRoUmVzb2x2ZXJzID0gZnVuY3Rpb24gPFQ+KCk6IFByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+IHtcbiAgICAgICAgbGV0IHJlc29sdmUhOiAodmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPikgPT4gdm9pZDtcbiAgICAgICAgbGV0IHJlamVjdCE6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxUPigocmVzLCByZWopID0+IHsgcmVzb2x2ZSA9IHJlczsgcmVqZWN0ID0gcmVqOyB9KTtcbiAgICAgICAgcmV0dXJuIHsgcHJvbWlzZSwgcmVzb2x2ZSwgcmVqZWN0IH07XG4gICAgfVxufVxuIiwgIi8qXG4gX1x0ICAgX19cdCAgXyBfX1xufCB8XHQgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQge25ld1J1bnRpbWVDYWxsZXIsIG9iamVjdE5hbWVzfSBmcm9tIFwiLi9ydW50aW1lLmpzXCI7XG5cbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLkNsaXBib2FyZCk7XG5cbmNvbnN0IENsaXBib2FyZFNldFRleHQgPSAwO1xuY29uc3QgQ2xpcGJvYXJkVGV4dCA9IDE7XG5cbi8qKlxuICogU2V0cyB0aGUgdGV4dCB0byB0aGUgQ2xpcGJvYXJkLlxuICpcbiAqIEBwYXJhbSB0ZXh0IC0gVGhlIHRleHQgdG8gYmUgc2V0IHRvIHRoZSBDbGlwYm9hcmQuXG4gKiBAcmV0dXJuIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBzdWNjZXNzZnVsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gU2V0VGV4dCh0ZXh0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gY2FsbChDbGlwYm9hcmRTZXRUZXh0LCB7dGV4dH0pO1xufVxuXG4vKipcbiAqIEdldCB0aGUgQ2xpcGJvYXJkIHRleHRcbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0ZXh0IGZyb20gdGhlIENsaXBib2FyZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gY2FsbChDbGlwYm9hcmRUZXh0KTtcbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuZXhwb3J0IGludGVyZmFjZSBTaXplIHtcbiAgICAvKiogVGhlIHdpZHRoIG9mIGEgcmVjdGFuZ3VsYXIgYXJlYS4gKi9cbiAgICBXaWR0aDogbnVtYmVyO1xuICAgIC8qKiBUaGUgaGVpZ2h0IG9mIGEgcmVjdGFuZ3VsYXIgYXJlYS4gKi9cbiAgICBIZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWN0IHtcbiAgICAvKiogVGhlIFggY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luLiAqL1xuICAgIFg6IG51bWJlcjtcbiAgICAvKiogVGhlIFkgY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luLiAqL1xuICAgIFk6IG51bWJlcjtcbiAgICAvKiogVGhlIHdpZHRoIG9mIHRoZSByZWN0YW5nbGUuICovXG4gICAgV2lkdGg6IG51bWJlcjtcbiAgICAvKiogVGhlIGhlaWdodCBvZiB0aGUgcmVjdGFuZ2xlLiAqL1xuICAgIEhlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmVlbiB7XG4gICAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc2NyZWVuLiAqL1xuICAgIElEOiBzdHJpbmc7XG4gICAgLyoqIEh1bWFuLXJlYWRhYmxlIG5hbWUgb2YgdGhlIHNjcmVlbi4gKi9cbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBzY2FsZSBmYWN0b3Igb2YgdGhlIHNjcmVlbiAoRFBJLzk2KS4gMSA9IHN0YW5kYXJkIERQSSwgMiA9IEhpRFBJIChSZXRpbmEpLCBldGMuICovXG4gICAgU2NhbGVGYWN0b3I6IG51bWJlcjtcbiAgICAvKiogVGhlIFggY29vcmRpbmF0ZSBvZiB0aGUgc2NyZWVuLiAqL1xuICAgIFg6IG51bWJlcjtcbiAgICAvKiogVGhlIFkgY29vcmRpbmF0ZSBvZiB0aGUgc2NyZWVuLiAqL1xuICAgIFk6IG51bWJlcjtcbiAgICAvKiogQ29udGFpbnMgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHNjcmVlbi4gKi9cbiAgICBTaXplOiBTaXplO1xuICAgIC8qKiBDb250YWlucyB0aGUgYm91bmRzIG9mIHRoZSBzY3JlZW4gaW4gdGVybXMgb2YgWCwgWSwgV2lkdGgsIGFuZCBIZWlnaHQuICovXG4gICAgQm91bmRzOiBSZWN0O1xuICAgIC8qKiBDb250YWlucyB0aGUgcGh5c2ljYWwgYm91bmRzIG9mIHRoZSBzY3JlZW4gaW4gdGVybXMgb2YgWCwgWSwgV2lkdGgsIGFuZCBIZWlnaHQgKGJlZm9yZSBzY2FsaW5nKS4gKi9cbiAgICBQaHlzaWNhbEJvdW5kczogUmVjdDtcbiAgICAvKiogQ29udGFpbnMgdGhlIGFyZWEgb2YgdGhlIHNjcmVlbiB0aGF0IGlzIGFjdHVhbGx5IHVzYWJsZSAoZXhjbHVkaW5nIHRhc2tiYXIgYW5kIG90aGVyIHN5c3RlbSBVSSkuICovXG4gICAgV29ya0FyZWE6IFJlY3Q7XG4gICAgLyoqIENvbnRhaW5zIHRoZSBwaHlzaWNhbCBXb3JrQXJlYSBvZiB0aGUgc2NyZWVuIChiZWZvcmUgc2NhbGluZykuICovXG4gICAgUGh5c2ljYWxXb3JrQXJlYTogUmVjdDtcbiAgICAvKiogVHJ1ZSBpZiB0aGlzIGlzIHRoZSBwcmltYXJ5IG1vbml0b3Igc2VsZWN0ZWQgYnkgdGhlIHVzZXIgaW4gdGhlIG9wZXJhdGluZyBzeXN0ZW0uICovXG4gICAgSXNQcmltYXJ5OiBib29sZWFuO1xuICAgIC8qKiBUaGUgcm90YXRpb24gb2YgdGhlIHNjcmVlbi4gKi9cbiAgICBSb3RhdGlvbjogbnVtYmVyO1xufVxuXG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcbmNvbnN0IGNhbGwgPSBuZXdSdW50aW1lQ2FsbGVyKG9iamVjdE5hbWVzLlNjcmVlbnMpO1xuXG5jb25zdCBnZXRBbGwgPSAwO1xuY29uc3QgZ2V0UHJpbWFyeSA9IDE7XG5jb25zdCBnZXRDdXJyZW50ID0gMjtcbmNvbnN0IGdldEJ5SUQgPSAzO1xuY29uc3QgZ2V0QnlJbmRleCA9IDQ7XG5cbi8qKlxuICogR2V0cyBhbGwgc2NyZWVucy5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBvZiBTY3JlZW4gb2JqZWN0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldEFsbCgpOiBQcm9taXNlPFNjcmVlbltdPiB7XG4gICAgcmV0dXJuIGNhbGwoZ2V0QWxsKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBwcmltYXJ5IHNjcmVlbi5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcHJpbWFyeSBzY3JlZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBHZXRQcmltYXJ5KCk6IFByb21pc2U8U2NyZWVuPiB7XG4gICAgcmV0dXJuIGNhbGwoZ2V0UHJpbWFyeSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgY3VycmVudCBhY3RpdmUgc2NyZWVuLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGN1cnJlbnQgYWN0aXZlIHNjcmVlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEdldEN1cnJlbnQoKTogUHJvbWlzZTxTY3JlZW4+IHtcbiAgICByZXR1cm4gY2FsbChnZXRDdXJyZW50KTtcbn1cblxuLyoqXG4gKiBHZXRzIGEgc2NyZWVuIGJ5IGl0cyB1bmlxdWUgZGlzcGxheSBJRC5cbiAqXG4gKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHNjcmVlbi5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBtYXRjaGluZyBTY3JlZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBHZXRCeUlEKGlkOiBzdHJpbmcpOiBQcm9taXNlPFNjcmVlbj4ge1xuICAgIHJldHVybiBjYWxsKGdldEJ5SUQsIHsgaWQgfSk7XG59XG5cbi8qKlxuICogR2V0cyBhIHNjcmVlbiBieSBpdHMgaW5kZXggaW4gdGhlIHNjcmVlbiBsaXN0LlxuICpcbiAqIEBwYXJhbSBpbmRleCAtIFRoZSB6ZXJvLWJhc2VkIGluZGV4IG9mIHRoZSBzY3JlZW4uXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbWF0Y2hpbmcgU2NyZWVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gR2V0QnlJbmRleChpbmRleDogbnVtYmVyKTogUHJvbWlzZTxTY3JlZW4+IHtcbiAgICByZXR1cm4gY2FsbChnZXRCeUluZGV4LCB7IGluZGV4IH0pO1xufVxuIiwgIi8qXG4gXyAgICAgX18gICAgIF8gX19cbnwgfCAgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcblxuY29uc3QgY2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuSU9TKTtcblxuLy8gTWV0aG9kIElEc1xuY29uc3QgSGFwdGljc0ltcGFjdCA9IDA7XG5jb25zdCBEZXZpY2VJbmZvID0gMTtcblxuZXhwb3J0IG5hbWVzcGFjZSBIYXB0aWNzIHtcbiAgICBleHBvcnQgdHlwZSBJbXBhY3RTdHlsZSA9IFwibGlnaHRcInxcIm1lZGl1bVwifFwiaGVhdnlcInxcInNvZnRcInxcInJpZ2lkXCI7XG4gICAgZXhwb3J0IGZ1bmN0aW9uIEltcGFjdChzdHlsZTogSW1wYWN0U3R5bGUgPSBcIm1lZGl1bVwiKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBjYWxsKEhhcHRpY3NJbXBhY3QsIHsgc3R5bGUgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIERldmljZSB7XG4gICAgZXhwb3J0IGludGVyZmFjZSBJbmZvIHtcbiAgICAgICAgbW9kZWw6IHN0cmluZztcbiAgICAgICAgc3lzdGVtTmFtZTogc3RyaW5nO1xuICAgICAgICBzeXN0ZW1WZXJzaW9uOiBzdHJpbmc7XG4gICAgICAgIGlzU2ltdWxhdG9yOiBib29sZWFuO1xuICAgIH1cbiAgICBleHBvcnQgZnVuY3Rpb24gSW5mbygpOiBQcm9taXNlPEluZm8+IHtcbiAgICAgICAgcmV0dXJuIGNhbGwoRGV2aWNlSW5mbyk7XG4gICAgfVxufVxuIiwgIi8qXG4gXyAgICAgX18gICAgIF8gX19cbnwgfCAgLyAvX19fIF8oXykgL19fX19cbnwgfCAvfCAvIC8gX18gYC8gLyAvIF9fXy9cbnwgfC8gfC8gLyAvXy8gLyAvIChfXyAgKVxufF9fL3xfXy9cXF9fLF8vXy9fL19fX18vXG5UaGUgZWxlY3Ryb24gYWx0ZXJuYXRpdmUgZm9yIEdvXG4oYykgTGVhIEFudGhvbnkgMjAxOS1wcmVzZW50XG4qL1xuXG5pbXBvcnQgeyBuZXdSdW50aW1lQ2FsbGVyLCBvYmplY3ROYW1lcyB9IGZyb20gXCIuL3J1bnRpbWUuanNcIjtcblxuY29uc3QgY2FsbCA9IG5ld1J1bnRpbWVDYWxsZXIob2JqZWN0TmFtZXMuQW5kcm9pZCk7XG5cbi8vIE1ldGhvZCBJRHMgKG11c3QgbWF0Y2ggbWVzc2FnZXByb2Nlc3Nvcl9hbmRyb2lkLmdvKVxuY29uc3QgSGFwdGljc1ZpYnJhdGUgPSAwO1xuY29uc3QgRGV2aWNlSW5mbyA9IDE7XG5jb25zdCBUb2FzdFNob3cgPSAyO1xuXG5leHBvcnQgbmFtZXNwYWNlIEhhcHRpY3Mge1xuICAgIC8qKiBWaWJyYXRlIHRoZSBkZXZpY2UgZm9yIHRoZSBnaXZlbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIFZpYnJhdGUoZHVyYXRpb25NczogbnVtYmVyID0gMTAwKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBjYWxsKEhhcHRpY3NWaWJyYXRlLCB7IGR1cmF0aW9uOiBkdXJhdGlvbk1zIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBEZXZpY2Uge1xuICAgIGV4cG9ydCBpbnRlcmZhY2UgSW5mbyB7XG4gICAgICAgIHBsYXRmb3JtOiBzdHJpbmc7XG4gICAgICAgIG1hbnVmYWN0dXJlcjogc3RyaW5nO1xuICAgICAgICBicmFuZDogc3RyaW5nO1xuICAgICAgICBtb2RlbDogc3RyaW5nO1xuICAgICAgICBkZXZpY2U6IHN0cmluZztcbiAgICAgICAgdmVyc2lvbjogc3RyaW5nO1xuICAgICAgICBzZGtJbnQ6IG51bWJlcjtcbiAgICB9XG4gICAgLyoqIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQW5kcm9pZCBkZXZpY2UuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIEluZm8oKTogUHJvbWlzZTxJbmZvPiB7XG4gICAgICAgIHJldHVybiBjYWxsKERldmljZUluZm8pO1xuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBUb2FzdCB7XG4gICAgLyoqIFNob3cgYSBzaG9ydCBBbmRyb2lkIHRvYXN0IG1lc3NhZ2UuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIFNob3cobWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBjYWxsKFRvYXN0U2hvdywgeyBtZXNzYWdlIH0pO1xuICAgIH1cbn1cbiIsICIvKlxuIF9cdCAgIF9fXHQgIF8gX19cbnwgfFx0IC8gL19fXyBfKF8pIC9fX19fXG58IHwgL3wgLyAvIF9fIGAvIC8gLyBfX18vXG58IHwvIHwvIC8gL18vIC8gLyAoX18gIClcbnxfXy98X18vXFxfXyxfL18vXy9fX19fL1xuVGhlIGVsZWN0cm9uIGFsdGVybmF0aXZlIGZvciBHb1xuKGMpIExlYSBBbnRob255IDIwMTktcHJlc2VudFxuKi9cblxuLyoqXG4gKiBVcGRhdGVyIGV2ZW50IG5hbWUgY29uc3RhbnRzLlxuICpcbiAqIFVzZSB0aGVzZSBpbnN0ZWFkIG9mIGhhcmQtY29kaW5nIHN0cmluZyBsaXRlcmFscyB3aGVuIHN1YnNjcmliaW5nIHRvXG4gKiB1cGRhdGVyIGV2ZW50cyBmcm9tIEphdmFTY3JpcHQ6XG4gKlxuICogICAgIGltcG9ydCB7IEV2ZW50cywgVXBkYXRlciB9IGZyb20gXCJAd2FpbHNpby9ydW50aW1lXCI7XG4gKlxuICogICAgIEV2ZW50cy5PbihVcGRhdGVyLkV2ZW50cy5VcGRhdGVBdmFpbGFibGUsIChlKSA9PiB7XG4gKiAgICAgICAgIGNvbnNvbGUubG9nKFwidXBkYXRlIGZvdW5kOlwiLCBlLmRhdGEudmVyc2lvbik7XG4gKiAgICAgfSk7XG4gKlxuICogICAgIEV2ZW50cy5PbihVcGRhdGVyLkV2ZW50cy5Eb3dubG9hZFByb2dyZXNzLCAoZSkgPT4ge1xuICogICAgICAgICBjb25zdCBwID0gZS5kYXRhO1xuICogICAgICAgICBjb25zb2xlLmxvZyhgJHtwLndyaXR0ZW59IC8gJHtwLnRvdGFsfSBieXRlc2ApO1xuICogICAgIH0pO1xuICpcbiAqIE1pcnJvcnMgdGhlIEdvLXNpZGUgY29uc3RhbnRzIGluIGBwa2cvdXBkYXRlci9ldmVudHMuZ29gIGFuZCB0aGVcbiAqIHVzZXItYWN0aW9uIGNvbnN0YW50cyBpbiBgcGtnL3VwZGF0ZXIvd2luZG93X2xpZmVjeWNsZS5nb2AuIEFueVxuICogY2hhbmdlcyBoZXJlIG11c3Qgc3RheSBpbiBzeW5jIHdpdGggdGhvc2UgZmlsZXMgXHUyMDE0IHRoZXJlJ3MgYW5cbiAqIGludGVncmF0aW9uIHRlc3QgdGhhdCBhc3NlcnRzIHRoZSBzdHJpbmdzIG1hdGNoLlxuICovXG5leHBvcnQgY29uc3QgRXZlbnRzID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgLyoqIEEgQ2hlY2sgcm91bmQtdHJpcCBpcyBzdGFydGluZy4gUGF5bG9hZDogbnVsbC4gKi9cbiAgICBDaGVja1N0YXJ0ZWQ6IFwid2FpbHM6dXBkYXRlcjpjaGVjay1zdGFydGVkXCIsXG4gICAgLyoqIENoZWNrIGZvdW5kIGEgbmV3ZXIgcmVsZWFzZS4gUGF5bG9hZDogUmVsZWFzZS4gKi9cbiAgICBVcGRhdGVBdmFpbGFibGU6IFwid2FpbHM6dXBkYXRlcjp1cGRhdGUtYXZhaWxhYmxlXCIsXG4gICAgLyoqIENoZWNrIGNvbmZpcm1lZCB0aGUgY2FsbGVyIGlzIHVwIHRvIGRhdGUuIFBheWxvYWQ6IG51bGwuICovXG4gICAgTm9VcGRhdGU6IFwid2FpbHM6dXBkYXRlcjpuby11cGRhdGVcIixcbiAgICAvKiogRG93bmxvYWQgaXMgc3RhcnRpbmcuIFBheWxvYWQ6IFJlbGVhc2UuICovXG4gICAgRG93bmxvYWRTdGFydGVkOiBcIndhaWxzOnVwZGF0ZXI6ZG93bmxvYWQtc3RhcnRlZFwiLFxuICAgIC8qKiBQZXJpb2RpYyBwcm9ncmVzcyB0aWNrIGR1cmluZyBkb3dubG9hZCAofjEwIEh6KS4gUGF5bG9hZDogUHJvZ3Jlc3MuICovXG4gICAgRG93bmxvYWRQcm9ncmVzczogXCJ3YWlsczp1cGRhdGVyOmRvd25sb2FkLXByb2dyZXNzXCIsXG4gICAgLyoqIEFsbCBieXRlcyBhcmUgb24gZGlzaywgYnV0IHZlcmlmaWNhdGlvbiBoYXMgbm90IHlldCBzdGFydGVkLiBQYXlsb2FkOiBSZWxlYXNlLiAqL1xuICAgIERvd25sb2FkQ29tcGxldGU6IFwid2FpbHM6dXBkYXRlcjpkb3dubG9hZC1jb21wbGV0ZVwiLFxuICAgIC8qKiBTaWduYXR1cmUgLyBkaWdlc3QgdmVyaWZpY2F0aW9uIGhhcyBzdGFydGVkLiBQYXlsb2FkOiBSZWxlYXNlLiAqL1xuICAgIFZlcmlmeWluZzogXCJ3YWlsczp1cGRhdGVyOnZlcmlmeWluZ1wiLFxuICAgIC8qKiBUaGUgVXBkYXRlciBpcyBzd2FwcGluZyB0aGUgYmluYXJ5IGludG8gcGxhY2UuIFBheWxvYWQ6IFJlbGVhc2UuICovXG4gICAgSW5zdGFsbGluZzogXCJ3YWlsczp1cGRhdGVyOmluc3RhbGxpbmdcIixcbiAgICAvKiogVXBkYXRlIGlzIHN0YWdlZCBhbmQgYSByZXN0YXJ0IGlzIHBlbmRpbmcuIFBheWxvYWQ6IFJlbGVhc2UuICovXG4gICAgVXBkYXRlUmVhZHk6IFwid2FpbHM6dXBkYXRlcjp1cGRhdGUtcmVhZHlcIixcbiAgICAvKiogU29tZXRoaW5nIGZhaWxlZC4gUGF5bG9hZDogRXJyb3JJbmZvIHsgc3RhZ2UsIG1lc3NhZ2UsIHByb3ZpZGVyIH0uICovXG4gICAgRXJyb3I6IFwid2FpbHM6dXBkYXRlcjplcnJvclwiLFxuICAgIC8qKiBIb3N0LXNpZGUgY29udGV4dCBkZWxpdmVyZWQgb25jZSBwZXIgc2Vzc2lvbi4gUGF5bG9hZDogTWV0YSB7IGN1cnJlbnRWZXJzaW9uLCBza2lwcGVkVmVyc2lvbiB9LiAqL1xuICAgIE1ldGE6IFwid2FpbHM6dXBkYXRlcjptZXRhXCIsXG5cbiAgICAvKiogU3ViLW5hbWVzcGFjZTogdXNlci1hY3Rpb24gZXZlbnRzIHRoYXQgdGhlIFVJIGVtaXRzIEJBQ0sgdG8gdGhlIGhvc3QuICovXG4gICAgVXNlcjogT2JqZWN0LmZyZWV6ZSh7XG4gICAgICAgIC8qKiBVc2VyIGNsaWNrZWQgSW5zdGFsbCBvbiBhbiBBdmFpbGFibGUgdXBkYXRlLiAqL1xuICAgICAgICBJbnN0YWxsOiBcIndhaWxzOnVwZGF0ZXI6dXNlcjppbnN0YWxsXCIsXG4gICAgICAgIC8qKiBVc2VyIGNsaWNrZWQgUmVzdGFydCAmIEFwcGx5IG9uIGEgUmVhZHkgdXBkYXRlLiAqL1xuICAgICAgICBSZXN0YXJ0OiBcIndhaWxzOnVwZGF0ZXI6dXNlcjpyZXN0YXJ0XCIsXG4gICAgICAgIC8qKiBVc2VyIGNsaWNrZWQgU2tpcCBUaGlzIFZlcnNpb24uICovXG4gICAgICAgIFNraXA6IFwid2FpbHM6dXBkYXRlcjp1c2VyOnNraXBcIixcbiAgICAgICAgLyoqIFVzZXIgY2xpY2tlZCBSZW1pbmQgTWUgTGF0ZXIuICovXG4gICAgICAgIFJlbWluZDogXCJ3YWlsczp1cGRhdGVyOnVzZXI6cmVtaW5kXCIsXG4gICAgICAgIC8qKiBVc2VyIGNsaWNrZWQgQ2xvc2UgLyBDYW5jZWwuICovXG4gICAgICAgIENhbmNlbDogXCJ3YWlsczp1cGRhdGVyOnVzZXI6Y2FuY2VsXCIsXG4gICAgfSksXG5cbiAgICAvKiogU3ViLW5hbWVzcGFjZTogZnJhbWV3b3JrLWludGVybmFsIGV2ZW50cyB0aGUgVUkgZW1pdHMgdG8gY29vcmRpbmF0ZVxuICAgICAqICB3aXRoIHRoZSBob3N0LiBNb3N0IGFwcCBjb2RlIGNhbiBpZ25vcmUgdGhlc2UuICovXG4gICAgV2luZG93OiBPYmplY3QuZnJlZXplKHtcbiAgICAgICAgLyoqIFRoZSB3aW5kb3cgZmluaXNoZWQgbG9hZGluZyBhbmQgYXNrcyB0aGUgaG9zdCB0byByZXBsYXkgY3VycmVudCBzdGF0ZS4gKi9cbiAgICAgICAgUmVhZHk6IFwid2FpbHM6dXBkYXRlcjp3aW5kb3c6cmVhZHlcIixcbiAgICB9KSxcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FB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cUJBQXFCO0FBQUEsSUFDckIscUJBQXFCO0FBQUEsSUFDckIsdUJBQXVCO0FBQUEsSUFDdkIsY0FBYztBQUFBLElBQ2QsZUFBZTtBQUFBLElBQ2Ysb0JBQW9CO0FBQUEsSUFDcEIsb0JBQW9CO0FBQUEsSUFDcEIsMEJBQTBCO0FBQUEsSUFDMUIsZ0JBQWdCO0FBQUEsSUFDaEIsNEJBQTRCO0FBQUEsSUFDNUIsNEJBQTRCO0FBQUEsSUFDNUIseURBQXlEO0FBQUEsSUFDekQsc0NBQXNDO0FBQUEsSUFDdEMsb0JBQW9CO0FBQUEsSUFDcEIscUJBQXFCO0FBQUEsSUFDckIscUJBQXFCO0FBQUEsSUFDckIsc0JBQXNCO0FBQUEsSUFDdEIsZ0NBQWdDO0FBQUEsSUFDaEMsa0NBQWtDO0FBQUEsSUFDbEMsbUNBQW1DO0FBQUEsSUFDbkMsb0NBQW9DO0FBQUEsSUFDcEMsK0JBQStCO0FBQUEsSUFDL0IsNkJBQTZCO0FBQUEsSUFDN0IsdUJBQXVCO0FBQUEsSUFDdkIsaUNBQWlDO0FBQUEsSUFDakMsOEJBQThCO0FBQUEsSUFDOUIsNEJBQTRCO0FBQUEsSUFDNUIsc0NBQXNDO0FBQUEsSUFDdEMsNEJBQTRCO0FBQUEsSUFDNUIsc0JBQXNCO0FBQUEsSUFDdEIsa0NBQWtDO0FBQUEsSUFDbEMsc0JBQXNCO0FBQUEsSUFDdEIsd0JBQXdCO0FBQUEsSUFDeEIsd0JBQXdCO0FBQUEsSUFDeEIsbUJBQW1CO0FBQUEsSUFDbkIsMEJBQTBCO0FBQUEsSUFDMUIsOEJBQThCO0FBQUEsSUFDOUIseUJBQXlCO0FBQUEsSUFDekIsNkJBQTZCO0FBQUEsSUFDN0IsaUJBQWlCO0FBQUEsSUFDakIsZ0JBQWdCO0FBQUEsSUFDaEIsc0JBQXNCO0FBQUEsSUFDdEIsZUFBZTtBQUFBLElBQ2YseUJBQXlCO0FBQUEsSUFDekIsd0JBQXdCO0FBQUEsSUFDeEIsb0JBQW9CO0FBQUEsSUFDcEIscUJBQXFCO0FBQUEsSUFDckIsaUJBQWlCO0FBQUEsSUFDakIsaUJBQWlCO0FBQUEsSUFDakIsc0JBQXNCO0FBQUEsSUFDdEIsbUNBQW1DO0FB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QUNMLENBQUM7OztBM0IvREQsSUFBSSxRQUFRO0FBQ1IsU0FBTyxTQUFTLE9BQU8sVUFBVSxDQUFDO0FBQ3RDO0FBNkRBLElBQUksUUFBUTtBQUNSLFNBQU8sT0FBTyxTQUFnQjtBQUM5QixTQUFPLE9BQU8sV0FBVztBQUM3QjtBQUtBLElBQUksUUFBUTtBQUNSLFNBQU8sT0FBTyx5QkFBeUIsZUFBTyx1QkFBdUIsS0FBSyxjQUFNO0FBQ3BGO0FBR0EsSUFBSSxRQUFRO0FBQ1IsU0FBTyxPQUFPLGtCQUFrQjtBQUNoQyxTQUFPLE9BQU8sa0JBQWtCO0FBQ2hDLFNBQU8sT0FBTyxpQkFBaUI7QUFDbkM7QUFFQSxJQUFJLFFBQVE7QUFDUixFQUFPLE9BQU8scUJBQXFCO0FBQ3ZDO0FBT08sU0FBUyxtQkFBbUIsS0FBNEI7QUFDM0QsU0FBTyxNQUFNLEtBQUssRUFBRSxRQUFRLE9BQU8sQ0FBQyxFQUMvQixLQUFLLGNBQVk7QUFDZCxRQUFJLFNBQVMsSUFBSTtBQUdiLFlBQU0sZUFBZSxTQUFTLFFBQVEsSUFBSSxjQUFjLEtBQUssSUFBSSxZQUFZO0FBQzdFLFVBQUksWUFBWSxTQUFTLFlBQVksR0FBRztBQUNwQyxjQUFNLFNBQVMsU0FBUyxjQUFjLFFBQVE7QUFDOUMsZUFBTyxNQUFNO0FBQ2IsaUJBQVMsS0FBSyxZQUFZLE1BQU07QUFBQSxNQUNwQztBQUFBLElBQ0o7QUFBQSxFQUNKLENBQUMsRUFDQSxNQUFNLE1BQU07QUFBQSxFQUFDLENBQUM7QUFDdkI7QUFHQSxJQUFJLFFBQVE7QUFDUixxQkFBbUIsa0JBQWtCO0FBQ3pDOyIsCiAgIm5hbWVzIjogWyJfYSIsICJFcnJvciIsICJjYWxsIiwgIkVycm9yIiwgIl9hIiwgIkFycmF5IiwgIk1hcCIsICJBcnJheSIsICJNYXAiLCAia2V5IiwgImNhbGwiLCAiX2EiLCAiX2EiLCAicmVzaXphYmxlIiwgIl9hIiwgImNhbGwiLCAiX2EiLCAiY2FsbCIsICJfYSIsICJfYSIsICJjYWxsIiwgIkhpZGVNZXRob2QiLCAiU2hvd01ldGhvZCIsICJpc0RvY3VtZW50RG90QWxsIiwgIl9hIiwgInJlYXNvbiIsICJ2YWx1ZSIsICJjYWxsIiwgImNhbGwiLCAiY2FsbCIsICJjYWxsIiwgIkhhcHRpY3MiLCAiRGV2aWNlIiwgIkluZm8iLCAiRGV2aWNlIiwgIkhhcHRpY3MiLCAiY2FsbCIsICJEZXZpY2VJbmZvIiwgIkhhcHRpY3MiLCAiRGV2aWNlIiwgIkluZm8iLCAiVG9hc3QiLCAiU2hvdyIsICJFdmVudHMiLCAiRXZlbnRzIl0KfQo= diff --git a/v3/internal/assetserver/bundledassets/runtime.js b/v3/internal/assetserver/bundledassets/runtime.js index b0453819564..217a6359e93 100644 --- a/v3/internal/assetserver/bundledassets/runtime.js +++ b/v3/internal/assetserver/bundledassets/runtime.js @@ -1 +1 @@ -var ln=Object.defineProperty,zn=Object.defineProperties;var Hn=Object.getOwnPropertyDescriptors;var an=Object.getOwnPropertySymbols;var Vn=Object.prototype.hasOwnProperty,Zn=Object.prototype.propertyIsEnumerable;var sn=(n,e,i)=>e in n?ln(n,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[e]=i,H=(n,e)=>{for(var i in e||(e={}))Vn.call(e,i)&&sn(n,i,e[i]);if(an)for(var i of an(e))Zn.call(e,i)&&sn(n,i,e[i]);return n},V=(n,e)=>zn(n,Hn(e));var p=(n,e)=>{for(var i in e)ln(n,i,{get:e[i],enumerable:!0})};var Me={};p(Me,{Android:()=>on,Application:()=>Ne,Browser:()=>pe,Call:()=>Ge,CancelError:()=>z,CancellablePromise:()=>q,CancelledRejectionError:()=>S,Clipboard:()=>Ye,Create:()=>he,Dialogs:()=>ge,Events:()=>ye,Flags:()=>ke,IOS:()=>qe,Screens:()=>Xe,System:()=>Re,Updater:()=>rn,WML:()=>Te,Window:()=>O,clientId:()=>R,getTransport:()=>un,loadOptionalScript:()=>Nn,objectNames:()=>c,setTransport:()=>mn});var Te={};p(Te,{Enable:()=>Se,Reload:()=>Pn});var pe={};p(pe,{OpenURL:()=>we});var _n="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";function A(n=21){let e="",i=n|0;for(;i--;)e+=_n[Math.random()*64|0];return e}var w=typeof window<"u"&&typeof document<"u";function Kn(){return window.location.origin+"/wails/runtime"}var Z=512*1024;var _=class extends Error{constructor(e,i){super(e,i),this.name="RuntimeError"}},c=Object.freeze({Call:0,Clipboard:1,Application:2,Events:3,ContextMenu:4,Dialog:5,Window:6,Screens:7,System:8,Browser:9,CancelCall:10,IOS:11,Android:12}),R=A(),K=null;function mn(n){K=n}function un(){return K}function u(n,e=""){return function(i,t=null){return Gn(n,i,e,t)}}async function Gn(n,e,i,t){var f,D;if(K)return K.call(n,e,i,t);let o=new URL(Kn()),a={object:n,method:e};t!=null&&(a.args=t);let r={"x-wails-client-id":R,"Content-Type":"application/json"};i&&(r["x-wails-window-name"]=i);let l=JSON.stringify(a),d;if(l.length>Z?d=await Yn(o,r,l):d=await fetch(o,{method:"POST",headers:r,body:l}),!d.ok){let C=d.headers.get("Content-Type");if(C!=null&&C.includes("application/json")){let W=await d.json(),b;switch(W.kind){case"ReferenceError":b=new ReferenceError(W.message);break;case"TypeError":b=new TypeError(W.message);break;case"RuntimeError":b=new _(W.message);break;default:b=new Error(W.message)}throw b.cause=W.cause,b}throw new Error(await d.text())}return((D=(f=d.headers.get("Content-Type"))==null?void 0:f.indexOf("application/json"))!=null?D:-1)!==-1?d.json():d.text()}async function Yn(n,e,i){let t=A(),o=new TextEncoder().encode(i),a=Math.ceil(o.length/Z);for(let r=0;r<a-1;r++){let l=o.subarray(r*Z,(r+1)*Z),d=await fetch(n,{method:"POST",headers:V(H({},e),{"x-wails-chunk-id":t,"x-wails-chunk-index":String(r),"x-wails-chunk-total":String(a)}),body:l});if(!d.ok)throw new Error(await d.text())}return fetch(n,{method:"POST",headers:V(H({},e),{"x-wails-chunk-id":t,"x-wails-chunk-index":String(a-1),"x-wails-chunk-total":String(a)}),body:o.subarray((a-1)*Z)})}var cn,dn=w&&typeof((cn=window.wails)==null?void 0:cn.invokeAsync)=="function"?window.wails:null;if(dn){let n=new Map;window._wailsAndroidCallback=(e,i,t)=>{var a;let o=n.get(e);if(o){if(n.delete(e),t){o.reject(new Error(t));return}try{let r=JSON.parse(i!=null?i:"{}");if(!r.ok){o.reject(new Error((a=r.error)!=null?a:"unknown runtime call error"));return}o.resolve("text"in r?r.text:r.data)}catch(r){o.reject(r)}}},K={call(e,i,t,o){return new Promise((a,r)=>{let l=A();n.set(l,{resolve:a,reject:r});try{dn.invokeAsync(l,JSON.stringify({object:e,method:i,windowName:t,args:o!=null?o:null,clientId:R}))}catch(d){n.delete(l),r(d)}})}}}var Xn=u(c.Browser),Jn=0;function we(n){return Xn(Jn,{url:n.toString()})}var ge={};p(ge,{Error:()=>ai,Info:()=>oi,OpenFile:()=>si,Question:()=>fe,SaveFile:()=>li,Warning:()=>ri});w&&(window._wails=window._wails||{});var Qn=u(c.Dialog),qn=0,$n=1,ei=2,ni=3,ii=4,ti=5;function k(n,e={}){return Qn(n,e)}function oi(n){return k(qn,n)}function ri(n){return k($n,n)}function ai(n){return k(ei,n)}function fe(n){return k(ni,n)}function si(n){var e;return(e=k(ii,n))!=null?e:[]}function li(n){return k(ti,n)}var ye={};p(ye,{Emit:()=>be,Off:()=>vi,OffAll:()=>Di,On:()=>bi,OnMultiple:()=>We,Once:()=>yi,Types:()=>fi,WailsEvent:()=>G});var g=new Map,ne=class{constructor(e,i,t){this.eventName=e,this.callback=i,this.maxCallbacks=t||-1}dispatch(e){try{this.callback(e)}catch(i){}return this.maxCallbacks===-1?!1:(this.maxCallbacks-=1,this.maxCallbacks===0)}};function wn(n){let e=g.get(n.eventName);e&&(e=e.filter(i=>i!==n),e.length===0?g.delete(n.eventName):g.set(n.eventName,e))}var he={};p(he,{Any:()=>T,Array:()=>ci,ByteSlice:()=>di,DateFromTime:()=>pi,Events:()=>ie,Map:()=>mi,Nullable:()=>ui,Struct:()=>wi});function T(n){return n}function di(n){return n==null?"":n}function ci(n){return n===T?e=>e===null?[]:e:e=>{if(e===null)return[];for(let i=0;i<e.length;i++)e[i]=n(e[i]);return e}}function mi(n,e){return e===T?i=>i===null?{}:i:i=>{if(i===null)return{};for(let t in i)i[t]=e(i[t]);return i}}function ui(n){return n===T?T:e=>e===null?null:n(e)}function wi(n){let e=!0;for(let i in n)if(n[i]!==T){e=!1;break}return e?T:i=>{for(let t in n)t in i&&(i[t]=n[t](i[t]));return i}}function pi(n){return new Date(n)}var ie={};var fi=Object.freeze({Windows:Object.freeze({APMPowerSettingChange:"windows:APMPowerSettingChange",APMPowerStatusChange:"windows:APMPowerStatusChange",APMResumeAutomatic:"windows:APMResumeAutomatic",APMResumeSuspend:"windows:APMResumeSuspend",APMSuspend:"windows:APMSuspend",ApplicationStarted:"windows:ApplicationStarted",SystemThemeChanged:"windows:SystemThemeChanged",WebViewNavigationCompleted:"windows:WebViewNavigationCompleted",WindowActive:"windows:WindowActive",WindowBackgroundErase:"windows:WindowBackgroundErase",WindowClickActive:"windows:WindowClickActive",WindowClosing:"windows:WindowClosing",WindowDidMove:"windows:WindowDidMove",WindowDidResize:"windows:WindowDidResize",WindowDPIChanged:"windows:WindowDPIChanged",WindowDragDrop:"windows:WindowDragDrop",WindowDragEnter:"windows:WindowDragEnter",WindowDragLeave:"windows:WindowDragLeave",WindowDragOver:"windows:WindowDragOver",WindowEndMove:"windows:WindowEndMove",WindowEndResize:"windows:WindowEndResize",WindowFullscreen:"windows:WindowFullscreen",WindowHide:"windows:WindowHide",WindowInactive:"windows:WindowInactive",WindowKeyDown:"windows:WindowKeyDown",WindowKeyUp:"windows:WindowKeyUp",WindowKillFocus:"windows:WindowKillFocus",WindowNonClientHit:"windows:WindowNonClientHit",WindowNonClientMouseDown:"windows:WindowNonClientMouseDown",WindowNonClientMouseLeave:"windows:WindowNonClientMouseLeave",WindowNonClientMouseMove:"windows:WindowNonClientMouseMove",WindowNonClientMouseUp:"windows:WindowNonClientMouseUp",WindowPaint:"windows:WindowPaint",WindowRestore:"windows:WindowRestore",WindowSetFocus:"windows:WindowSetFocus",WindowShow:"windows:WindowShow",WindowStartMove:"windows:WindowStartMove",WindowStartResize:"windows:WindowStartResize",WindowUnFullscreen:"windows:WindowUnFullscreen",WindowZOrderChanged:"windows:WindowZOrderChanged",WindowMinimise:"windows:WindowMinimise",WindowUnMinimise:"windows:WindowUnMinimise",WindowMaximise:"windows:WindowMaximise",WindowUnMaximise:"windows:WindowUnMaximise"}),Mac:Object.freeze({ApplicationDidBecomeActive:"mac:ApplicationDidBecomeActive",ApplicationDidChangeBackingProperties:"mac:ApplicationDidChangeBackingProperties",ApplicationDidChangeEffectiveAppearance:"mac:ApplicationDidChangeEffectiveAppearance",ApplicationDidChangeIcon:"mac:ApplicationDidChangeIcon",ApplicationDidChangeOcclusionState:"mac:ApplicationDidChangeOcclusionState",ApplicationDidChangeScreenParameters:"mac:ApplicationDidChangeScreenParameters",ApplicationDidChangeStatusBarFrame:"mac:ApplicationDidChangeStatusBarFrame",ApplicationDidChangeStatusBarOrientation:"mac:ApplicationDidChangeStatusBarOrientation",ApplicationDidChangeTheme:"mac:ApplicationDidChangeTheme",ApplicationDidFinishLaunching:"mac:ApplicationDidFinishLaunching",ApplicationDidHide:"mac:ApplicationDidHide",ApplicationDidResignActive:"mac:ApplicationDidResignActive",ApplicationDidUnhide:"mac:ApplicationDidUnhide",ApplicationDidUpdate:"mac:ApplicationDidUpdate",ApplicationDidWake:"mac:ApplicationDidWake",ApplicationScreensDidSleep:"mac:ApplicationScreensDidSleep",ApplicationScreensDidWake:"mac:ApplicationScreensDidWake",ApplicationShouldHandleReopen:"mac:ApplicationShouldHandleReopen",ApplicationWillBecomeActive:"mac:ApplicationWillBecomeActive",ApplicationWillFinishLaunching:"mac:ApplicationWillFinishLaunching",ApplicationWillHide:"mac:ApplicationWillHide",ApplicationWillResignActive:"mac:ApplicationWillResignActive",ApplicationWillSleep:"mac:ApplicationWillSleep",ApplicationWillTerminate:"mac:ApplicationWillTerminate",ApplicationWillUnhide:"mac:ApplicationWillUnhide",ApplicationWillUpdate:"mac:ApplicationWillUpdate",MenuDidAddItem:"mac:MenuDidAddItem",MenuDidBeginTracking:"mac:MenuDidBeginTracking",MenuDidClose:"mac:MenuDidClose",MenuDidDisplayItem:"mac:MenuDidDisplayItem",MenuDidEndTracking:"mac:MenuDidEndTracking",MenuDidHighlightItem:"mac:MenuDidHighlightItem",MenuDidOpen:"mac:MenuDidOpen",MenuDidPopUp:"mac:MenuDidPopUp",MenuDidRemoveItem:"mac:MenuDidRemoveItem",MenuDidSendAction:"mac:MenuDidSendAction",MenuDidSendActionToItem:"mac:MenuDidSendActionToItem",MenuDidUpdate:"mac:MenuDidUpdate",MenuWillAddItem:"mac:MenuWillAddItem",MenuWillBeginTracking:"mac:MenuWillBeginTracking",MenuWillDisplayItem:"mac:MenuWillDisplayItem",MenuWillEndTracking:"mac:MenuWillEndTracking",MenuWillHighlightItem:"mac:MenuWillHighlightItem",MenuWillOpen:"mac:MenuWillOpen",MenuWillPopUp:"mac:MenuWillPopUp",MenuWillRemoveItem:"mac:MenuWillRemoveItem",MenuWillSendAction:"mac:MenuWillSendAction",MenuWillSendActionToItem:"mac:MenuWillSendActionToItem",MenuWillUpdate:"mac:MenuWillUpdate",WebViewDidCommitNavigation:"mac:WebViewDidCommitNavigation",WebViewDidFinishNavigation:"mac:WebViewDidFinishNavigation",WebViewDidReceiveServerRedirectForProvisionalNavigation:"mac:WebViewDidReceiveServerRedirectForProvisionalNavigation",WebViewDidStartProvisionalNavigation:"mac:WebViewDidStartProvisionalNavigation",WindowDidBecomeKey:"mac:WindowDidBecomeKey",WindowDidBecomeMain:"mac:WindowDidBecomeMain",WindowDidBeginSheet:"mac:WindowDidBeginSheet",WindowDidChangeAlpha:"mac:WindowDidChangeAlpha",WindowDidChangeBackingLocation:"mac:WindowDidChangeBackingLocation",WindowDidChangeBackingProperties:"mac:WindowDidChangeBackingProperties",WindowDidChangeCollectionBehavior:"mac:WindowDidChangeCollectionBehavior",WindowDidChangeEffectiveAppearance:"mac:WindowDidChangeEffectiveAppearance",WindowDidChangeOcclusionState:"mac:WindowDidChangeOcclusionState",WindowDidChangeOrderingMode:"mac:WindowDidChangeOrderingMode",WindowDidChangeScreen:"mac:WindowDidChangeScreen",WindowDidChangeScreenParameters:"mac:WindowDidChangeScreenParameters",WindowDidChangeScreenProfile:"mac:WindowDidChangeScreenProfile",WindowDidChangeScreenSpace:"mac:WindowDidChangeScreenSpace",WindowDidChangeScreenSpaceProperties:"mac:WindowDidChangeScreenSpaceProperties",WindowDidChangeSharingType:"mac:WindowDidChangeSharingType",WindowDidChangeSpace:"mac:WindowDidChangeSpace",WindowDidChangeSpaceOrderingMode:"mac:WindowDidChangeSpaceOrderingMode",WindowDidChangeTitle:"mac:WindowDidChangeTitle",WindowDidChangeToolbar:"mac:WindowDidChangeToolbar",WindowDidDeminiaturize:"mac:WindowDidDeminiaturize",WindowDidEndSheet:"mac:WindowDidEndSheet",WindowDidEnterFullScreen:"mac:WindowDidEnterFullScreen",WindowDidEnterVersionBrowser:"mac:WindowDidEnterVersionBrowser",WindowDidExitFullScreen:"mac:WindowDidExitFullScreen",WindowDidExitVersionBrowser:"mac:WindowDidExitVersionBrowser",WindowDidExpose:"mac:WindowDidExpose",WindowDidFocus:"mac:WindowDidFocus",WindowDidMiniaturize:"mac:WindowDidMiniaturize",WindowDidMove:"mac:WindowDidMove",WindowDidOrderOffScreen:"mac:WindowDidOrderOffScreen",WindowDidOrderOnScreen:"mac:WindowDidOrderOnScreen",WindowDidResignKey:"mac:WindowDidResignKey",WindowDidResignMain:"mac:WindowDidResignMain",WindowDidResize:"mac:WindowDidResize",WindowDidUpdate:"mac:WindowDidUpdate",WindowDidUpdateAlpha:"mac:WindowDidUpdateAlpha",WindowDidUpdateCollectionBehavior:"mac:WindowDidUpdateCollectionBehavior",WindowDidUpdateCollectionProperties:"mac:WindowDidUpdateCollectionProperties",WindowDidUpdateShadow:"mac:WindowDidUpdateShadow",WindowDidUpdateTitle:"mac:WindowDidUpdateTitle",WindowDidUpdateToolbar:"mac:WindowDidUpdateToolbar",WindowDidZoom:"mac:WindowDidZoom",WindowFileDraggingEntered:"mac:WindowFileDraggingEntered",WindowFileDraggingExited:"mac:WindowFileDraggingExited",WindowFileDraggingPerformed:"mac:WindowFileDraggingPerformed",WindowHide:"mac:WindowHide",WindowMaximise:"mac:WindowMaximise",WindowUnMaximise:"mac:WindowUnMaximise",WindowMinimise:"mac:WindowMinimise",WindowUnMinimise:"mac:WindowUnMinimise",WindowShouldClose:"mac:WindowShouldClose",WindowShow:"mac:WindowShow",WindowWillBecomeKey:"mac:WindowWillBecomeKey",WindowWillBecomeMain:"mac:WindowWillBecomeMain",WindowWillBeginSheet:"mac:WindowWillBeginSheet",WindowWillChangeOrderingMode:"mac:WindowWillChangeOrderingMode",WindowWillClose:"mac:WindowWillClose",WindowWillDeminiaturize:"mac:WindowWillDeminiaturize",WindowWillEnterFullScreen:"mac:WindowWillEnterFullScreen",WindowWillEnterVersionBrowser:"mac:WindowWillEnterVersionBrowser",WindowWillExitFullScreen:"mac:WindowWillExitFullScreen",WindowWillExitVersionBrowser:"mac:WindowWillExitVersionBrowser",WindowWillFocus:"mac:WindowWillFocus",WindowWillMiniaturize:"mac:WindowWillMiniaturize",WindowWillMove:"mac:WindowWillMove",WindowWillOrderOffScreen:"mac:WindowWillOrderOffScreen",WindowWillOrderOnScreen:"mac:WindowWillOrderOnScreen",WindowWillResignMain:"mac:WindowWillResignMain",WindowWillResize:"mac:WindowWillResize",WindowWillUnfocus:"mac:WindowWillUnfocus",WindowWillUpdate:"mac:WindowWillUpdate",WindowWillUpdateAlpha:"mac:WindowWillUpdateAlpha",WindowWillUpdateCollectionBehavior:"mac:WindowWillUpdateCollectionBehavior",WindowWillUpdateCollectionProperties:"mac:WindowWillUpdateCollectionProperties",WindowWillUpdateShadow:"mac:WindowWillUpdateShadow",WindowWillUpdateTitle:"mac:WindowWillUpdateTitle",WindowWillUpdateToolbar:"mac:WindowWillUpdateToolbar",WindowWillUpdateVisibility:"mac:WindowWillUpdateVisibility",WindowWillUseStandardFrame:"mac:WindowWillUseStandardFrame",WindowZoomIn:"mac:WindowZoomIn",WindowZoomOut:"mac:WindowZoomOut",WindowZoomReset:"mac:WindowZoomReset",WebViewWebContentProcessDidTerminate:"mac:WebViewWebContentProcessDidTerminate"}),Linux:Object.freeze({ApplicationStartup:"linux:ApplicationStartup",SystemDidWake:"linux:SystemDidWake",SystemThemeChanged:"linux:SystemThemeChanged",SystemWillSleep:"linux:SystemWillSleep",WindowDeleteEvent:"linux:WindowDeleteEvent",WindowDidMove:"linux:WindowDidMove",WindowDidResize:"linux:WindowDidResize",WindowFocusIn:"linux:WindowFocusIn",WindowFocusOut:"linux:WindowFocusOut",WindowLoadStarted:"linux:WindowLoadStarted",WindowLoadRedirected:"linux:WindowLoadRedirected",WindowLoadCommitted:"linux:WindowLoadCommitted",WindowLoadFinished:"linux:WindowLoadFinished"}),iOS:Object.freeze({ApplicationDidBecomeActive:"ios:ApplicationDidBecomeActive",ApplicationDidEnterBackground:"ios:ApplicationDidEnterBackground",ApplicationDidFinishLaunching:"ios:ApplicationDidFinishLaunching",ApplicationDidReceiveMemoryWarning:"ios:ApplicationDidReceiveMemoryWarning",ApplicationWillEnterForeground:"ios:ApplicationWillEnterForeground",ApplicationWillResignActive:"ios:ApplicationWillResignActive",ApplicationWillTerminate:"ios:ApplicationWillTerminate",WindowDidLoad:"ios:WindowDidLoad",WindowWillAppear:"ios:WindowWillAppear",WindowDidAppear:"ios:WindowDidAppear",WindowWillDisappear:"ios:WindowWillDisappear",WindowDidDisappear:"ios:WindowDidDisappear",WindowSafeAreaInsetsChanged:"ios:WindowSafeAreaInsetsChanged",WindowOrientationChanged:"ios:WindowOrientationChanged",WindowTouchBegan:"ios:WindowTouchBegan",WindowTouchMoved:"ios:WindowTouchMoved",WindowTouchEnded:"ios:WindowTouchEnded",WindowTouchCancelled:"ios:WindowTouchCancelled",WebViewDidStartNavigation:"ios:WebViewDidStartNavigation",WebViewDidFinishNavigation:"ios:WebViewDidFinishNavigation",WebViewDidFailNavigation:"ios:WebViewDidFailNavigation",WebViewDecidePolicyForNavigationAction:"ios:WebViewDecidePolicyForNavigationAction",BatteryChanged:"ios:BatteryChanged",NetworkChanged:"ios:NetworkChanged",ThemeChanged:"ios:ThemeChanged",ScreenLocked:"ios:ScreenLocked",ScreenUnlocked:"ios:ScreenUnlocked"}),Android:Object.freeze({ActivityCreated:"android:ActivityCreated",ActivityStarted:"android:ActivityStarted",ActivityResumed:"android:ActivityResumed",ActivityPaused:"android:ActivityPaused",ActivityStopped:"android:ActivityStopped",ActivityDestroyed:"android:ActivityDestroyed",ApplicationLowMemory:"android:ApplicationLowMemory",WebViewPageStarted:"android:WebViewPageStarted",WebViewPageFinished:"android:WebViewPageFinished",BatteryChanged:"android:BatteryChanged",NetworkChanged:"android:NetworkChanged",ThemeChanged:"android:ThemeChanged",ScreenLocked:"android:ScreenLocked",ScreenUnlocked:"android:ScreenUnlocked"}),Common:Object.freeze({ApplicationOpenedWithFile:"common:ApplicationOpenedWithFile",ApplicationStarted:"common:ApplicationStarted",ApplicationLaunchedWithUrl:"common:ApplicationLaunchedWithUrl",ThemeChanged:"common:ThemeChanged",SystemDidWake:"common:SystemDidWake",SystemWillSleep:"common:SystemWillSleep",WindowClosing:"common:WindowClosing",WindowDidMove:"common:WindowDidMove",WindowDidResize:"common:WindowDidResize",WindowDPIChanged:"common:WindowDPIChanged",WindowFilesDropped:"common:WindowFilesDropped",WindowFocus:"common:WindowFocus",WindowFullscreen:"common:WindowFullscreen",WindowHide:"common:WindowHide",WindowLostFocus:"common:WindowLostFocus",WindowMaximise:"common:WindowMaximise",WindowMinimise:"common:WindowMinimise",WindowToggleFrameless:"common:WindowToggleFrameless",WindowRestore:"common:WindowRestore",WindowRuntimeReady:"common:WindowRuntimeReady",WindowShow:"common:WindowShow",WindowUnFullscreen:"common:WindowUnFullscreen",WindowUnMaximise:"common:WindowUnMaximise",WindowUnMinimise:"common:WindowUnMinimise",WindowZoom:"common:WindowZoom",WindowZoomIn:"common:WindowZoomIn",WindowZoomOut:"common:WindowZoomOut",WindowZoomReset:"common:WindowZoomReset",BatteryChanged:"common:BatteryChanged",NetworkChanged:"common:NetworkChanged",ScreenLocked:"common:ScreenLocked",ScreenUnlocked:"common:ScreenUnlocked",LowMemory:"common:LowMemory"})});w&&(window._wails=window._wails||{},window._wails.dispatchWailsEvent=Wi);var gi=u(c.Events),hi=0,G=class{constructor(e,i){this.name=e,this.data=i!=null?i:null}};function Wi(n){let e=g.get(n.name);if(!e)return;let i=new G(n.name,n.name in ie?ie[n.name](n.data):n.data);"sender"in n&&(i.sender=n.sender);let t=new Set;for(let o of e.slice())o.dispatch(i)&&t.add(o);if(t.size>0){let o=g.get(n.name);if(o){let a=o.filter(r=>!t.has(r));a.length===0?g.delete(n.name):g.set(n.name,a)}}}function We(n,e,i){let t=g.get(n)||[],o=new ne(n,e,i);return t.push(o),g.set(n,t),()=>wn(o)}function bi(n,e){return We(n,e,-1)}function yi(n,e){return We(n,e,1)}function vi(...n){n.forEach(e=>g.delete(e))}function Di(){g.clear()}function be(n,e){return gi(hi,new G(n,e))}function pn(){return new MouseEvent("mousedown").buttons===0}function fn(){if(!EventTarget||!AbortSignal||!AbortController)return!1;let n=!0,e=new EventTarget,i=new AbortController;return e.addEventListener("test",()=>{n=!1},{signal:i.signal}),i.abort(),e.dispatchEvent(new CustomEvent("test")),n}function te(n){var e;return n.target instanceof HTMLElement?n.target:!(n.target instanceof HTMLElement)&&n.target instanceof Node&&(e=n.target.parentElement)!=null?e:document.body}var gn=!1;w&&document.addEventListener("DOMContentLoaded",()=>{gn=!0});function hn(n){gn||document.readyState==="complete"?n():document.addEventListener("DOMContentLoaded",n)}var Ci="data-file-drop-target",y="file-drop-target-active",m=null,Pi=0,Si=1,Ti=2,Mi=3,Ei=4,xi=5,Ai=6,Ri=7,ki=8,Oi=9,Fi=10,Li=11,Ii=12,Ui=13,ji=14,Bi=15,Ni=16,zi=17,Hi=18,Vi=19,Zi=20,_i=21,Ki=22,Gi=23,Yi=24,Xi=25,Ji=26,Qi=27,qi=28,$i=29,et=30,nt=31,it=32,tt=33,ot=34,rt=35,at=36,st=37,lt=38,dt=39,ct=40,mt=41,ut=42,wt=43,pt=44,ft=45,gt=46,ht=47,Wt=48,bt=49,yt=50,vt=51,Dt=52;function oe(n){return n?n.closest("[".concat(Ci,"]")):null}function Ct(){var n,e,i,t;return((e=(n=window.chrome)==null?void 0:n.webview)==null?void 0:e.postMessageWithAdditionalObjects)==null?!1:((t=(i=window._wails)==null?void 0:i.flags)==null?void 0:t.enableFileDrop)===!0}function Pt(n,e,i){var t,o;(o=(t=window.chrome)==null?void 0:t.webview)!=null&&o.postMessageWithAdditionalObjects&&window.chrome.webview.postMessageWithAdditionalObjects("file:drop:".concat(n,":").concat(e),i)}var De=!1;function Wn(){De=!1,m&&(m.classList.remove(y),m=null)}function bn(){var n,e;((e=(n=window._wails)==null?void 0:n.flags)==null?void 0:e.enableFileDrop)!==!1&&(De=!0)}function yn(){Wn()}function vn(n,e){var o,a;if(!De||((a=(o=window._wails)==null?void 0:o.flags)==null?void 0:a.enableFileDrop)===!1)return;let i=document.elementFromPoint(n,e),t=oe(i);m&&m!==t&&m.classList.remove(y),t?(t.classList.add(y),m=t):m=null}var s=Symbol("caller"),re=class re{constructor(e=""){this[s]=u(c.Window,e);for(let i of Object.getOwnPropertyNames(re.prototype))i!=="constructor"&&typeof this[i]=="function"&&(this[i]=this[i].bind(this))}Get(e){return new re(e)}Position(){return this[s](Pi)}Center(){return this[s](Si)}Close(){return this[s](Ti)}DisableSizeConstraints(){return this[s](Mi)}EnableSizeConstraints(){return this[s](Ei)}Focus(){return this[s](xi)}ForceReload(){return this[s](Ai)}Fullscreen(){return this[s](Ri)}GetScreen(){return this[s](ki)}GetZoom(){return this[s](Oi)}Height(){return this[s](Fi)}Hide(){return this[s](Li)}IsFocused(){return this[s](Ii)}IsFullscreen(){return this[s](Ui)}IsMaximised(){return this[s](ji)}IsMinimised(){return this[s](Bi)}Maximise(){return this[s](Ni)}Minimise(){return this[s](zi)}Name(){return this[s](Hi)}OpenDevTools(){return this[s](Vi)}RelativePosition(){return this[s](Zi)}Reload(){return this[s](_i)}Resizable(){return this[s](Ki)}Restore(){return this[s](Gi)}SetPosition(e,i){return this[s](Yi,{x:e,y:i})}SetAlwaysOnTop(e){return this[s](Xi,{alwaysOnTop:e})}SetBackgroundColour(e,i,t,o){return this[s](Ji,{r:e,g:i,b:t,a:o})}SetFrameless(e){return this[s](Qi,{frameless:e})}SetFullscreenButtonEnabled(e){return this[s](qi,{enabled:e})}SetMaxSize(e,i){return this[s]($i,{width:e,height:i})}SetMinSize(e,i){return this[s](et,{width:e,height:i})}SetRelativePosition(e,i){return this[s](nt,{x:e,y:i})}SetResizable(e){return this[s](it,{resizable:e})}SetSize(e,i){return this[s](tt,{width:e,height:i})}SetTitle(e){return this[s](ot,{title:e})}SetZoom(e){return this[s](rt,{zoom:e})}Show(){return this[s](at)}Size(){return this[s](st)}ToggleFullscreen(){return this[s](lt)}ToggleMaximise(){return this[s](dt)}ToggleFrameless(){return this[s](ct)}UnFullscreen(){return this[s](mt)}UnMaximise(){return this[s](ut)}UnMinimise(){return this[s](wt)}Width(){return this[s](pt)}Zoom(){return this[s](ft)}ZoomIn(){return this[s](gt)}ZoomOut(){return this[s](ht)}ZoomReset(){return this[s](Wt)}HandlePlatformFileDrop(e,i,t){var d,f;if(((f=(d=window._wails)==null?void 0:d.flags)==null?void 0:f.enableFileDrop)===!1)return;let o=document.elementFromPoint(i,t),a=oe(o);if(!a)return;let r={id:a.id,classList:Array.from(a.classList),attributes:{}};for(let D=0;D<a.attributes.length;D++){let C=a.attributes[D];r.attributes[C.name]=C.value}let l={filenames:e,x:i,y:t,elementDetails:r};this[s](yt,l),Wn()}SetScreen(e){return this[s](Dt,{screenID:e})}SnapAssist(){return this[s](bt)}Print(){return this[s](vt)}},ve=re,St=new ve("");function Tt(){let n=document.documentElement,e=0;n.addEventListener("dragenter",i=>{var a,r,l;if(!((a=i.dataTransfer)!=null&&a.types.includes("Files")))return;if(i.preventDefault(),((l=(r=window._wails)==null?void 0:r.flags)==null?void 0:l.enableFileDrop)===!1){i.dataTransfer.dropEffect="none";return}e++;let t=document.elementFromPoint(i.clientX,i.clientY),o=oe(t);m&&m!==o&&m.classList.remove(y),o?(o.classList.add(y),i.dataTransfer.dropEffect="copy",m=o):(i.dataTransfer.dropEffect="none",m=null)},!1),n.addEventListener("dragover",i=>{var a,r,l;if(!((a=i.dataTransfer)!=null&&a.types.includes("Files")))return;if(i.preventDefault(),((l=(r=window._wails)==null?void 0:r.flags)==null?void 0:l.enableFileDrop)===!1){i.dataTransfer.dropEffect="none";return}let t=document.elementFromPoint(i.clientX,i.clientY),o=oe(t);m&&m!==o&&m.classList.remove(y),o?(o.classList.contains(y)||o.classList.add(y),i.dataTransfer.dropEffect="copy",m=o):(i.dataTransfer.dropEffect="none",m=null)},!1),n.addEventListener("dragleave",i=>{var t,o,a;(t=i.dataTransfer)!=null&&t.types.includes("Files")&&(i.preventDefault(),((a=(o=window._wails)==null?void 0:o.flags)==null?void 0:a.enableFileDrop)!==!1&&i.relatedTarget!==null&&(e--,(e===0||m&&!m.contains(i.relatedTarget))&&(m&&(m.classList.remove(y),m=null),e=0)))},!1),n.addEventListener("drop",i=>{var t,o,a;if((t=i.dataTransfer)!=null&&t.types.includes("Files")&&(i.preventDefault(),((a=(o=window._wails)==null?void 0:o.flags)==null?void 0:a.enableFileDrop)!==!1&&(e=0,m&&(m.classList.remove(y),m=null),Ct()))){let r=[];if(i.dataTransfer.items){for(let l of i.dataTransfer.items)if(l.kind==="file"){let d=l.getAsFile();d&&r.push(d)}}else if(i.dataTransfer.files)for(let l of i.dataTransfer.files)r.push(l);r.length>0&&Pt(i.clientX,i.clientY,r)}},!1)}typeof window<"u"&&typeof document<"u"&&Tt();var O=St;function Mt(n,e=null){be(n,e)}function Et(n,e){let i=O.Get(n),t=i[e];if(typeof t=="function")try{t.call(i)}catch(o){}}function Dn(n){let e=n.currentTarget;function i(o="Yes"){if(o!=="Yes")return;let a=e.getAttribute("wml-event")||e.getAttribute("data-wml-event"),r=e.getAttribute("wml-target-window")||e.getAttribute("data-wml-target-window")||"",l=e.getAttribute("wml-window")||e.getAttribute("data-wml-window"),d=e.getAttribute("wml-openurl")||e.getAttribute("data-wml-openurl");a!==null&&Mt(a),l!==null&&Et(r,l),d!==null&&we(d)}let t=e.getAttribute("wml-confirm")||e.getAttribute("data-wml-confirm");t?fe({Title:"Confirm",Message:t,Detached:!1,Buttons:[{Label:"Yes"},{Label:"No",IsDefault:!0}]}).then(i):i()}var Y=Symbol("controller"),F=Symbol("triggerMap"),M=Symbol("elementCount"),Ce=class{constructor(){this[Y]=new AbortController}set(e,i){return{signal:this[Y].signal}}reset(){this[Y].abort(),this[Y]=new AbortController}},Pe=class{constructor(){this[F]=new WeakMap,this[M]=0}set(e,i){return this[F].has(e)||this[M]++,this[F].set(e,i),{}}reset(){if(!(this[M]<=0)){for(let e of document.body.querySelectorAll("*")){if(this[M]<=0)break;let i=this[F].get(e);i!=null&&this[M]--;for(let t of i||[])e.removeEventListener(t,Dn)}this[F]=new WeakMap,this[M]=0}}},Cn=fn()?new Ce:new Pe;function xt(n){let e=/\S+/g,i=n.getAttribute("wml-trigger")||n.getAttribute("data-wml-trigger")||"click",t=[],o;for(;(o=e.exec(i))!==null;)t.push(o[0]);let a=Cn.set(n,t);for(let r of t)n.addEventListener(r,Dn,a)}function Se(){hn(Pn)}function Pn(){Cn.reset(),document.body.querySelectorAll("[wml-event], [wml-window], [wml-openurl], [data-wml-event], [data-wml-window], [data-wml-openurl]").forEach(xt)}window.wails=Me;Se();var Re={};p(Re,{Capabilities:()=>Ft,Environment:()=>Lt,IsAMD64:()=>jt,IsARM:()=>Bt,IsARM64:()=>Nt,IsAndroid:()=>Mn,IsDarkMode:()=>Ot,IsDebug:()=>Ae,IsDesktop:()=>Ut,IsIOS:()=>Tn,IsLinux:()=>ae,IsMac:()=>Sn,IsMobile:()=>It,IsWindows:()=>X,invoke:()=>E});var xe=u(c.System),At=0,Rt=1,kt=2,Ee=(function(){var n,e,i,t,o,a;try{if((e=(n=window.chrome)==null?void 0:n.webview)!=null&&e.postMessage)return window.chrome.webview.postMessage.bind(window.chrome.webview);if((o=(t=(i=window.webkit)==null?void 0:i.messageHandlers)==null?void 0:t.external)!=null&&o.postMessage)return window.webkit.messageHandlers.external.postMessage.bind(window.webkit.messageHandlers.external);if((a=window.wails)!=null&&a.invoke)return r=>window.wails.invoke(typeof r=="string"?r:JSON.stringify(r))}catch(r){}return null})();function E(n){Ee==null||Ee(n)}function Ot(){return xe(At)}async function Ft(){return xe(kt)}function Lt(){return xe(Rt)}function X(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="windows"}function ae(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="linux"}function Sn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="darwin"}function Tn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="ios"}function Mn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="android"}function It(){return Tn()||Mn()}function Ut(){return Sn()||X()||ae()}function jt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="amd64"}function Bt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="arm"}function Nt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="arm64"}function Ae(){var n,e;return!!((e=(n=window._wails)==null?void 0:n.environment)!=null&&e.Debug)}w&&window.addEventListener("contextmenu",Zt);var zt=u(c.ContextMenu),Ht=0;function Vt(n,e,i,t){zt(Ht,{id:n,x:e,y:i,data:t})}function Zt(n){let e=te(n),i=window.getComputedStyle(e).getPropertyValue("--custom-contextmenu").trim();if(i){n.preventDefault();let t=window.getComputedStyle(e).getPropertyValue("--custom-contextmenu-data");Vt(i,n.clientX,n.clientY,t)}else _t(n,e)}function _t(n,e){if(Ae())return;switch(window.getComputedStyle(e).getPropertyValue("--default-contextmenu").trim()){case"show":return;case"hide":n.preventDefault();return}if(e.isContentEditable)return;let i=window.getSelection(),t=i&&i.toString().length>0;if(t)for(let o=0;o<i.rangeCount;o++){let r=i.getRangeAt(o).getClientRects();for(let l=0;l<r.length;l++){let d=r[l];if(document.elementFromPoint(d.left,d.top)===e)return}}(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&(t||!e.readOnly&&!e.disabled)||n.preventDefault()}var ke={};p(ke,{GetFlag:()=>L});function L(n){try{return window._wails.flags[n]}catch(e){throw new Error("Unable to retrieve flag '"+n+"': "+e,{cause:e})}}var J=!1,Q=!1,Ue=!1,U=!1,j=!1,x="",En="auto",I=0,se=!1;w&&(se=pn(),window._wails=window._wails||{},window._wails.setResizable=n=>{Ue=n,Ue||(U=j=!1,h())});var je=!1;function Kt(){var i,t;let n=(t=(i=window._wails)==null?void 0:i.environment)==null?void 0:t.OS;if(n==="ios"||n==="android")return!0;let e=navigator.userAgent||navigator.vendor||window.opera||"";return/android|iphone|ipad|ipod|iemobile|wpdesktop/i.test(e)}function Oe(){if(!je&&!Kt()){window.addEventListener("mousedown",Ie,{capture:!0}),window.addEventListener("mousemove",Ie,{capture:!0}),window.addEventListener("mouseup",Ie,{capture:!0});for(let n of["click","contextmenu","dblclick"])window.addEventListener(n,Gt,{capture:!0});je=!0}}if(w){Oe(),document.addEventListener("DOMContentLoaded",Oe,{once:!0});let n=0,e=window.setInterval(()=>{if(je){window.clearInterval(e);return}Oe(),++n>100&&window.clearInterval(e)},50)}function Gt(n){(Q||j)&&(n.stopImmediatePropagation(),n.stopPropagation(),n.preventDefault())}var Fe=0,Yt=1,Le=2;function Ie(n){let e,i=n.buttons;switch(n.type){case"mousedown":e=Fe,se||(i=I|1<<n.button);break;case"mouseup":e=Yt,se||(i=I&~(1<<n.button));break;default:e=Le,se||(i=I);break}let t=I&~i,o=i&~I;I=i,e===Fe&&!(o&n.button)&&(t|=1<<n.button,o|=1<<n.button),(e!==Le&&j||Q&&(e===Fe||n.button!==0))&&(n.stopImmediatePropagation(),n.stopPropagation(),n.preventDefault()),t&1&&Jt(n),o&1&&Xt(n),e===Le&&qt(n)}function Xt(n){if(J=!1,U=!1,!X()&&n.type==="mousedown"&&n.button===0&&n.detail!==1)return;if(x){U=!0;return}let e=te(n),i=window.getComputedStyle(e);J=i.getPropertyValue("--wails-draggable").trim()==="drag"&&n.offsetX-parseFloat(i.paddingLeft)<e.clientWidth&&n.offsetY-parseFloat(i.paddingTop)<e.clientHeight}function Jt(n){J=!1,Q=!1,U=!1,j=!1}var Qt=Object.freeze({"se-resize":"nwse-resize","sw-resize":"nesw-resize","nw-resize":"nwse-resize","ne-resize":"nesw-resize","w-resize":"ew-resize","n-resize":"ns-resize","s-resize":"ns-resize","e-resize":"ew-resize"});function h(n){n?(x||(En=document.body.style.cursor),document.body.style.cursor=Qt[n]):!n&&x&&(document.body.style.cursor=En),x=n||""}function qt(n){if(U&&x?(j=!0,E("wails:resize:"+x)):J&&(Q=!0,E("wails:drag")),Q||j){J=U=!1;return}if(!Ue||!X()&&!(ae()&&L("frameless"))){x&&h();return}let e=L("system.resizeHandleHeight")||5,i=L("system.resizeHandleWidth")||5,t=L("resizeCornerExtra")||10,o=Math.max(0,window.innerWidth-document.documentElement.clientWidth),a=Math.max(0,window.innerHeight-document.documentElement.clientHeight),r=window.innerWidth-o,l=window.innerHeight-a,d=n.clientX<r&&r-n.clientX<i,f=n.clientX<i,D=n.clientY<e,C=n.clientY<l&&l-n.clientY<e,W=n.clientX<r&&r-n.clientX<i+t,b=n.clientX<i+t,me=n.clientY<e+t,ue=n.clientY<l&&l-n.clientY<e+t;!b&&!me&&!ue&&!W?h():W&&ue?h("se-resize"):b&&ue?h("sw-resize"):b&&me?h("nw-resize"):me&&W?h("ne-resize"):f?h("w-resize"):D?h("n-resize"):C?h("s-resize"):d?h("e-resize"):h()}var Ne={};p(Ne,{Hide:()=>io,Quit:()=>oo,Show:()=>to});var Be=u(c.Application),$t=0,eo=1,no=2;function io(){return Be($t)}function to(){return Be(eo)}function oo(){return Be(no)}var Ge={};p(Ge,{ByID:()=>So,ByName:()=>Po,Call:()=>Ke,RuntimeError:()=>_});var An=Function.prototype.toString,B=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,ze,le;if(typeof B=="function"&&typeof Object.defineProperty=="function")try{ze=Object.defineProperty({},"length",{get:function(){throw le}}),le={},B(function(){throw 42},null,ze)}catch(n){n!==le&&(B=null)}else B=null;var ro=/^\s*class\b/,Ve=function(e){try{var i=An.call(e);return ro.test(i)}catch(t){return!1}},He=function(e){try{return Ve(e)?!1:(An.call(e),!0)}catch(i){return!1}},de=Object.prototype.toString,ao="[object Object]",so="[object Function]",lo="[object GeneratorFunction]",co="[object HTMLAllCollection]",mo="[object HTML document.all class]",uo="[object HTMLCollection]",wo=typeof Symbol=="function"&&!!Symbol.toStringTag,po=!(0 in[,]),Ze=function(){return!1};typeof document=="object"&&(xn=document.all,de.call(xn)===de.call(document.all)&&(Ze=function(e){if((po||!e)&&(typeof e>"u"||typeof e=="object"))try{var i=de.call(e);return(i===co||i===mo||i===uo||i===ao)&&e("")==null}catch(t){}return!1}));var xn;function fo(n){if(Ze(n))return!0;if(!n||typeof n!="function"&&typeof n!="object")return!1;try{B(n,null,ze)}catch(e){if(e!==le)return!1}return!Ve(n)&&He(n)}function go(n){if(Ze(n))return!0;if(!n||typeof n!="function"&&typeof n!="object")return!1;if(wo)return He(n);if(Ve(n))return!1;var e=de.call(n);return e!==so&&e!==lo&&!/^\[object HTML/.test(e)?!1:He(n)}var P=B?fo:go;var z=class extends Error{constructor(e,i){super(e,i),this.name="CancelError"}},S=class extends Error{constructor(e,i,t){super((t!=null?t:"Unhandled rejection in cancelled promise.")+" Reason: "+ho(i),{cause:i}),this.promise=e,this.name="CancelledRejectionError"}},v=Symbol("barrier"),_e=Symbol("cancelImpl"),Fn,Rn=(Fn=Symbol.species)!=null?Fn:Symbol("speciesPolyfill"),q=class n extends Promise{constructor(e,i){let t,o;if(super((d,f)=>{t=d,o=f}),this.constructor[Rn]!==Promise)throw new TypeError("CancellablePromise does not support transparent subclassing. Please refrain from overriding the [Symbol.species] static property.");let a={promise:this,resolve:t,reject:o,get oncancelled(){return i!=null?i:null},set oncancelled(d){i=d!=null?d:void 0}},r={get root(){return r},resolving:!1,settled:!1};Object.defineProperties(this,{[v]:{configurable:!1,enumerable:!1,writable:!0,value:null},[_e]:{configurable:!1,enumerable:!1,writable:!1,value:Ln(a,r)}});let l=Un(a,r);try{e(In(a,r),l)}catch(d){r.resolving||l(d)}}cancel(e){return new n(i=>{Promise.all([this[_e](new z("Promise cancelled.",{cause:e})),Wo(this)]).then(()=>i(),()=>i())})}cancelOn(e){return e.aborted?this.cancel(e.reason):e.addEventListener("abort",()=>{this.cancel(e.reason)},{capture:!0}),this}then(e,i,t){if(!(this instanceof n))throw new TypeError("CancellablePromise.prototype.then called on an invalid object.");if(P(e)||(e=kn),P(i)||(i=On),e===kn&&i==On)return new n(a=>a(this));let o={};return this[v]=o,new n((a,r)=>{super.then(l=>{var d;this[v]===o&&(this[v]=null),(d=o.resolve)==null||d.call(o);try{a(e(l))}catch(f){r(f)}},l=>{var d;this[v]===o&&(this[v]=null),(d=o.resolve)==null||d.call(o);try{a(i(l))}catch(f){r(f)}})},async a=>{try{return t==null?void 0:t(a)}finally{await this.cancel(a)}})}catch(e,i){return this.then(void 0,e,i)}finally(e,i){if(!(this instanceof n))throw new TypeError("CancellablePromise.prototype.finally called on an invalid object.");return P(e)?this.then(t=>n.resolve(e()).then(()=>t),t=>n.resolve(e()).then(()=>{throw t}),i):this.then(e,e,i)}static get[(v,_e,Rn)](){return Promise}static all(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,a)=>{Promise.all(i).then(o,a)},o=>ce(t,i,o));return t}static allSettled(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,a)=>{Promise.allSettled(i).then(o,a)},o=>ce(t,i,o));return t}static any(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,a)=>{Promise.any(i).then(o,a)},o=>ce(t,i,o));return t}static race(e){let i=Array.from(e),t=new n((o,a)=>{Promise.race(i).then(o,a)},o=>ce(t,i,o));return t}static cancel(e){let i=new n(()=>{});return i.cancel(e),i}static timeout(e,i){let t=new n(()=>{});return AbortSignal&&typeof AbortSignal=="function"&&AbortSignal.timeout&&typeof AbortSignal.timeout=="function"?AbortSignal.timeout(e).addEventListener("abort",()=>{t.cancel(i)}):setTimeout(()=>{t.cancel(i)},e),t}static sleep(e,i){return new n(t=>{setTimeout(()=>t(i),e)})}static reject(e){return new n((i,t)=>t(e))}static resolve(e){return e instanceof n?e:new n(i=>i(e))}static withResolvers(){let e={oncancelled:null};return e.promise=new n((i,t)=>{e.resolve=i,e.reject=t},i=>{var t;(t=e.oncancelled)==null||t.call(e,i)}),e}};function Ln(n,e){let i;return t=>{if(e.settled||(e.settled=!0,e.reason=t,n.reject(t),Promise.prototype.then.call(n.promise,void 0,o=>{if(o!==t)throw o})),!(!e.reason||!n.oncancelled))return i=new Promise(o=>{try{o(n.oncancelled(e.reason.cause))}catch(a){Promise.reject(new S(n.promise,a,"Unhandled exception in oncancelled callback."))}}).catch(o=>{Promise.reject(new S(n.promise,o,"Unhandled rejection in oncancelled callback."))}),n.oncancelled=null,i}}function In(n,e){return i=>{if(!e.resolving){if(e.resolving=!0,i===n.promise){if(e.settled)return;e.settled=!0,n.reject(new TypeError("A promise cannot be resolved with itself."));return}if(i!=null&&(typeof i=="object"||typeof i=="function")){let t;try{t=i.then}catch(o){e.settled=!0,n.reject(o);return}if(P(t)){try{let r=i.cancel;if(P(r)){let l=d=>{Reflect.apply(r,i,[d])};e.reason?Ln(V(H({},n),{oncancelled:l}),e)(e.reason):n.oncancelled=l}}catch(r){}let o={root:e.root,resolving:!1,get settled(){return this.root.settled},set settled(r){this.root.settled=r},get reason(){return this.root.reason}},a=Un(n,o);try{Reflect.apply(t,i,[In(n,o),a])}catch(r){a(r)}return}}e.settled||(e.settled=!0,n.resolve(i))}}}function Un(n,e){return i=>{if(!e.resolving)if(e.resolving=!0,e.settled){try{if(i instanceof z&&e.reason instanceof z&&Object.is(i.cause,e.reason.cause))return}catch(t){}Promise.reject(new S(n.promise,i))}else e.settled=!0,n.reject(i)}}function ce(n,e,i){let t=[];for(let o of e){let a;try{if(!P(o.then)||(a=o.cancel,!P(a)))continue}catch(l){continue}let r;try{r=Reflect.apply(a,o,[i])}catch(l){Promise.reject(new S(n,l,"Unhandled exception in cancel method."));continue}r&&t.push((r instanceof Promise?r:Promise.resolve(r)).catch(l=>{Promise.reject(new S(n,l,"Unhandled rejection in cancel method."))}))}return Promise.all(t)}function kn(n){return n}function On(n){throw n}function ho(n){try{if(n instanceof Error||typeof n!="object"||n.toString!==Object.prototype.toString)return""+n}catch(e){}try{return JSON.stringify(n)}catch(e){}try{return Object.prototype.toString.call(n)}catch(e){}return"<could not convert error to string>"}function Wo(n){var i;let e=(i=n[v])!=null?i:{};return"promise"in e||Object.assign(e,N()),n[v]==null&&(e.resolve(),n[v]=e),e.promise}var N=Promise.withResolvers;N&&typeof N=="function"?N=N.bind(Promise):N=function(){let n,e;return{promise:new Promise((t,o)=>{n=t,e=o}),resolve:n,reject:e}};w&&(window._wails=window._wails||{});var bo=u(c.Call),yo=u(c.CancelCall),$=new Map,vo=0,Do=0;function Co(){let n;do n=A();while($.has(n));return n}function Ke(n){let e=Co(),i=q.withResolvers();$.set(e,{resolve:i.resolve,reject:i.reject});let t=bo(vo,Object.assign({"call-id":e},n)),o=!0;t.then(r=>{o=!1,$.delete(e),i.resolve(r)},r=>{o=!1,$.delete(e),i.reject(r)});let a=()=>($.delete(e),yo(Do,{"call-id":e}).catch(r=>{}));return i.oncancelled=()=>o?a():t.then(a),i.promise}function Po(n,...e){return Ke({methodName:n,args:e})}function So(n,...e){return Ke({methodID:n,args:e})}var Ye={};p(Ye,{SetText:()=>Eo,Text:()=>xo});var jn=u(c.Clipboard),To=0,Mo=1;function Eo(n){return jn(To,{text:n})}function xo(){return jn(Mo)}var Xe={};p(Xe,{GetAll:()=>Lo,GetByID:()=>jo,GetByIndex:()=>Bo,GetCurrent:()=>Uo,GetPrimary:()=>Io});var ee=u(c.Screens),Ao=0,Ro=1,ko=2,Oo=3,Fo=4;function Lo(){return ee(Ao)}function Io(){return ee(Ro)}function Uo(){return ee(ko)}function jo(n){return ee(Oo,{id:n})}function Bo(n){return ee(Fo,{index:n})}var qe={};p(qe,{Device:()=>Qe,Haptics:()=>Je});var Bn=u(c.IOS),No=0,zo=1,Je;(e=>{function n(i="medium"){return Bn(No,{style:i})}e.Impact=n})(Je||(Je={}));var Qe;(e=>{function n(){return Bn(zo)}e.Info=n})(Qe||(Qe={}));var on={};p(on,{Device:()=>en,Haptics:()=>$e,Toast:()=>nn});var tn=u(c.Android),Ho=0,Vo=1,Zo=2,$e;(e=>{function n(i=100){return tn(Ho,{duration:i})}e.Vibrate=n})($e||($e={}));var en;(e=>{function n(){return tn(Vo)}e.Info=n})(en||(en={}));var nn;(e=>{function n(i){return tn(Zo,{message:i})}e.Show=n})(nn||(nn={}));var rn={};p(rn,{Events:()=>_o});var _o=Object.freeze({CheckStarted:"wails:updater:check-started",UpdateAvailable:"wails:updater:update-available",NoUpdate:"wails:updater:no-update",DownloadStarted:"wails:updater:download-started",DownloadProgress:"wails:updater:download-progress",DownloadComplete:"wails:updater:download-complete",Verifying:"wails:updater:verifying",Installing:"wails:updater:installing",UpdateReady:"wails:updater:update-ready",Error:"wails:updater:error",Meta:"wails:updater:meta",User:Object.freeze({Install:"wails:updater:user:install",Restart:"wails:updater:user:restart",Skip:"wails:updater:user:skip",Remind:"wails:updater:user:remind",Cancel:"wails:updater:user:cancel"}),Window:Object.freeze({Ready:"wails:updater:window:ready"})});w&&(window._wails=window._wails||{});w&&(window._wails.invoke=E,window._wails.clientId=R);w&&(window._wails.handlePlatformFileDrop=O.HandlePlatformFileDrop.bind(O));w&&(window._wails.handleDragEnter=bn,window._wails.handleDragLeave=yn,window._wails.handleDragOver=vn);w&&E("wails:runtime:ready");function Nn(n){return fetch(n,{method:"HEAD"}).then(e=>{if(e.ok&&(e.headers.get("content-type")||"").toLowerCase().includes("javascript")){let t=document.createElement("script");t.src=n,document.head.appendChild(t)}}).catch(()=>{})}w&&Nn("/wails/custom.js");export{on as Android,Ne as Application,pe as Browser,Ge as Call,z as CancelError,q as CancellablePromise,S as CancelledRejectionError,Ye as Clipboard,he as Create,ge as Dialogs,ye as Events,ke as Flags,qe as IOS,Xe as Screens,Re as System,rn as Updater,Te as WML,O as Window,R as clientId,un as getTransport,Nn as loadOptionalScript,c as objectNames,mn as setTransport}; +var wn=Object.defineProperty,Jn=Object.defineProperties;var qn=Object.getOwnPropertyDescriptors;var mn=Object.getOwnPropertySymbols;var Qn=Object.prototype.hasOwnProperty,$n=Object.prototype.propertyIsEnumerable;var un=(n,e,i)=>e in n?wn(n,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[e]=i,V=(n,e)=>{for(var i in e||(e={}))Qn.call(e,i)&&un(n,i,e[i]);if(mn)for(var i of mn(e))$n.call(e,i)&&un(n,i,e[i]);return n},Z=(n,e)=>Jn(n,qn(e));var p=(n,e)=>{for(var i in e)wn(n,i,{get:e[i],enumerable:!0})};var Ae={};p(Ae,{Android:()=>dn,Application:()=>Ke,Browser:()=>he,Call:()=>Qe,CancelError:()=>H,CancellablePromise:()=>ee,CancelledRejectionError:()=>T,Clipboard:()=>$e,Create:()=>ye,Dialogs:()=>be,Events:()=>De,Flags:()=>Le,IOS:()=>on,Screens:()=>en,System:()=>Fe,Updater:()=>cn,WML:()=>xe,Window:()=>F,clientId:()=>k,getTransport:()=>hn,loadOptionalScript:()=>Xn,objectNames:()=>c,setTransport:()=>gn});var xe={};p(xe,{Enable:()=>Ee,Reload:()=>En});var he={};p(he,{OpenURL:()=>ge});var ei="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";function R(n=21){let e="",i=n|0;for(;i--;)e+=ei[Math.random()*64|0];return e}var u=typeof window<"u"&&typeof document<"u";function ni(){return window.location.origin+"/wails/runtime"}var K=512*1024;var _=class extends Error{constructor(e,i){super(e,i),this.name="RuntimeError"}},c=Object.freeze({Call:0,Clipboard:1,Application:2,Events:3,ContextMenu:4,Dialog:5,Window:6,Screens:7,System:8,Browser:9,CancelCall:10,IOS:11,Android:12}),k=R(),G=null;function gn(n){G=n}function hn(){return G}function w(n,e=""){return function(i,t=null){return ii(n,i,e,t)}}async function ii(n,e,i,t){var f,D;if(G)return G.call(n,e,i,t);let o=new URL(ni()),r={object:n,method:e};t!=null&&(r.args=t);let a={"x-wails-client-id":k,"Content-Type":"application/json"};i&&(a["x-wails-window-name"]=i);let l=JSON.stringify(r),d;if(l.length>K?d=await ti(o,a,l):d=await fetch(o,{method:"POST",headers:a,body:l}),!d.ok){let S=d.headers.get("Content-Type");if(S!=null&&S.includes("application/json")){let W=await d.json(),b;switch(W.kind){case"ReferenceError":b=new ReferenceError(W.message);break;case"TypeError":b=new TypeError(W.message);break;case"RuntimeError":b=new _(W.message);break;default:b=new Error(W.message)}throw b.cause=W.cause,b}throw new Error(await d.text())}return((D=(f=d.headers.get("Content-Type"))==null?void 0:f.indexOf("application/json"))!=null?D:-1)!==-1?d.json():d.text()}async function ti(n,e,i){let t=R(),o=new TextEncoder().encode(i),r=Math.ceil(o.length/K);for(let a=0;a<r-1;a++){let l=o.subarray(a*K,(a+1)*K),d=await fetch(n,{method:"POST",headers:Z(V({},e),{"x-wails-chunk-id":t,"x-wails-chunk-index":String(a),"x-wails-chunk-total":String(r)}),body:l});if(!d.ok)throw new Error(await d.text())}return fetch(n,{method:"POST",headers:Z(V({},e),{"x-wails-chunk-id":t,"x-wails-chunk-index":String(r-1),"x-wails-chunk-total":String(r)}),body:o.subarray((r-1)*K)})}var fn,pn=u&&typeof((fn=window.wails)==null?void 0:fn.invokeAsync)=="function"?window.wails:null;if(pn){let n=new Map;window._wailsAndroidCallback=(e,i,t)=>{var r;let o=n.get(e);if(o){if(n.delete(e),t){o.reject(new Error(t));return}try{let a=JSON.parse(i!=null?i:"{}");if(!a.ok){o.reject(new Error((r=a.error)!=null?r:"unknown runtime call error"));return}o.resolve("text"in a?a.text:a.data)}catch(a){o.reject(a)}}},G={call(e,i,t,o){return new Promise((r,a)=>{let l=R();n.set(l,{resolve:r,reject:a});try{pn.invokeAsync(l,JSON.stringify({object:e,method:i,windowName:t,args:o!=null?o:null,clientId:k}))}catch(d){n.delete(l),a(d)}})}}}var oi=w(c.Browser),ri=0;function ge(n){return oi(ri,{url:n.toString()})}var be={};p(be,{Error:()=>fi,Info:()=>wi,OpenFile:()=>gi,Question:()=>We,SaveFile:()=>hi,Warning:()=>pi});u&&(window._wails=window._wails||{});var ai=w(c.Dialog),si=0,li=1,di=2,ci=3,mi=4,ui=5;function O(n,e={}){return ai(n,e)}function wi(n){return O(si,n)}function pi(n){return O(li,n)}function fi(n){return O(di,n)}function We(n){return O(ci,n)}function gi(n){var e;return(e=O(mi,n))!=null?e:[]}function hi(n){return O(ui,n)}var De={};p(De,{Emit:()=>Ce,Off:()=>Ai,OffAll:()=>Ri,On:()=>Ei,OnMultiple:()=>ve,Once:()=>xi,Types:()=>Si,WailsEvent:()=>Y});var g=new Map,te=class{constructor(e,i,t){this.eventName=e,this.callback=i,this.maxCallbacks=t||-1}dispatch(e){try{this.callback(e)}catch(i){}return this.maxCallbacks===-1?!1:(this.maxCallbacks-=1,this.maxCallbacks===0)}};function Wn(n){let e=g.get(n.eventName);e&&(e=e.filter(i=>i!==n),e.length===0?g.delete(n.eventName):g.set(n.eventName,e))}var ye={};p(ye,{Any:()=>M,Array:()=>bi,ByteSlice:()=>Wi,DateFromTime:()=>Di,Events:()=>oe,Map:()=>yi,Nullable:()=>vi,Struct:()=>Ci});function M(n){return n}function Wi(n){return n==null?"":n}function bi(n){return n===M?e=>e===null?[]:e:e=>{if(e===null)return[];for(let i=0;i<e.length;i++)e[i]=n(e[i]);return e}}function yi(n,e){return e===M?i=>i===null?{}:i:i=>{if(i===null)return{};for(let t in i)i[t]=e(i[t]);return i}}function vi(n){return n===M?M:e=>e===null?null:n(e)}function Ci(n){let e=!0;for(let i in n)if(n[i]!==M){e=!1;break}return e?M:i=>{for(let t in n)t in i&&(i[t]=n[t](i[t]));return i}}function Di(n){return new Date(n)}var oe={};var Si=Object.freeze({Windows:Object.freeze({APMPowerSettingChange:"windows:APMPowerSettingChange",APMPowerStatusChange:"windows:APMPowerStatusChange",APMResumeAutomatic:"windows:APMResumeAutomatic",APMResumeSuspend:"windows:APMResumeSuspend",APMSuspend:"windows:APMSuspend",ApplicationStarted:"windows:ApplicationStarted",SystemThemeChanged:"windows:SystemThemeChanged",WebViewNavigationCompleted:"windows:WebViewNavigationCompleted",WindowActive:"windows:WindowActive",WindowBackgroundErase:"windows:WindowBackgroundErase",WindowClickActive:"windows:WindowClickActive",WindowClosing:"windows:WindowClosing",WindowDidMove:"windows:WindowDidMove",WindowDidResize:"windows:WindowDidResize",WindowDPIChanged:"windows:WindowDPIChanged",WindowDragDrop:"windows:WindowDragDrop",WindowDragEnter:"windows:WindowDragEnter",WindowDragLeave:"windows:WindowDragLeave",WindowDragOver:"windows:WindowDragOver",WindowEndMove:"windows:WindowEndMove",WindowEndResize:"windows:WindowEndResize",WindowFullscreen:"windows:WindowFullscreen",WindowHide:"windows:WindowHide",WindowInactive:"windows:WindowInactive",WindowKeyDown:"windows:WindowKeyDown",WindowKeyUp:"windows:WindowKeyUp",WindowKillFocus:"windows:WindowKillFocus",WindowNonClientHit:"windows:WindowNonClientHit",WindowNonClientMouseDown:"windows:WindowNonClientMouseDown",WindowNonClientMouseLeave:"windows:WindowNonClientMouseLeave",WindowNonClientMouseMove:"windows:WindowNonClientMouseMove",WindowNonClientMouseUp:"windows:WindowNonClientMouseUp",WindowPaint:"windows:WindowPaint",WindowRestore:"windows:WindowRestore",WindowSetFocus:"windows:WindowSetFocus",WindowShow:"windows:WindowShow",WindowStartMove:"windows:WindowStartMove",WindowStartResize:"windows:WindowStartResize",WindowUnFullscreen:"windows:WindowUnFullscreen",WindowZOrderChanged:"windows:WindowZOrderChanged",WindowMinimise:"windows:WindowMinimise",WindowUnMinimise:"windows:WindowUnMinimise",WindowMaximise:"windows:WindowMaximise",WindowUnMaximise:"windows:WindowUnMaximise"}),Mac:Object.freeze({ApplicationDidBecomeActive:"mac:ApplicationDidBecomeActive",ApplicationDidChangeBackingProperties:"mac:ApplicationDidChangeBackingProperties",ApplicationDidChangeEffectiveAppearance:"mac:ApplicationDidChangeEffectiveAppearance",ApplicationDidChangeIcon:"mac:ApplicationDidChangeIcon",ApplicationDidChangeOcclusionState:"mac:ApplicationDidChangeOcclusionState",ApplicationDidChangeScreenParameters:"mac:ApplicationDidChangeScreenParameters",ApplicationDidChangeStatusBarFrame:"mac:ApplicationDidChangeStatusBarFrame",ApplicationDidChangeStatusBarOrientation:"mac:ApplicationDidChangeStatusBarOrientation",ApplicationDidChangeTheme:"mac:ApplicationDidChangeTheme",ApplicationDidFinishLaunching:"mac:ApplicationDidFinishLaunching",ApplicationDidHide:"mac:ApplicationDidHide",ApplicationDidResignActive:"mac:ApplicationDidResignActive",ApplicationDidUnhide:"mac:ApplicationDidUnhide",ApplicationDidUpdate:"mac:ApplicationDidUpdate",ApplicationDidWake:"mac:ApplicationDidWake",ApplicationScreensDidSleep:"mac:ApplicationScreensDidSleep",ApplicationScreensDidWake:"mac:ApplicationScreensDidWake",ApplicationShouldHandleReopen:"mac:ApplicationShouldHandleReopen",ApplicationWillBecomeActive:"mac:ApplicationWillBecomeActive",ApplicationWillFinishLaunching:"mac:ApplicationWillFinishLaunching",ApplicationWillHide:"mac:ApplicationWillHide",ApplicationWillResignActive:"mac:ApplicationWillResignActive",ApplicationWillSleep:"mac:ApplicationWillSleep",ApplicationWillTerminate:"mac:ApplicationWillTerminate",ApplicationWillUnhide:"mac:ApplicationWillUnhide",ApplicationWillUpdate:"mac:ApplicationWillUpdate",MenuDidAddItem:"mac:MenuDidAddItem",MenuDidBeginTracking:"mac:MenuDidBeginTracking",MenuDidClose:"mac:MenuDidClose",MenuDidDisplayItem:"mac:MenuDidDisplayItem",MenuDidEndTracking:"mac:MenuDidEndTracking",MenuDidHighlightItem:"mac:MenuDidHighlightItem",MenuDidOpen:"mac:MenuDidOpen",MenuDidPopUp:"mac:MenuDidPopUp",MenuDidRemoveItem:"mac:MenuDidRemoveItem",MenuDidSendAction:"mac:MenuDidSendAction",MenuDidSendActionToItem:"mac:MenuDidSendActionToItem",MenuDidUpdate:"mac:MenuDidUpdate",MenuWillAddItem:"mac:MenuWillAddItem",MenuWillBeginTracking:"mac:MenuWillBeginTracking",MenuWillDisplayItem:"mac:MenuWillDisplayItem",MenuWillEndTracking:"mac:MenuWillEndTracking",MenuWillHighlightItem:"mac:MenuWillHighlightItem",MenuWillOpen:"mac:MenuWillOpen",MenuWillPopUp:"mac:MenuWillPopUp",MenuWillRemoveItem:"mac:MenuWillRemoveItem",MenuWillSendAction:"mac:MenuWillSendAction",MenuWillSendActionToItem:"mac:MenuWillSendActionToItem",MenuWillUpdate:"mac:MenuWillUpdate",WebViewDidCommitNavigation:"mac:WebViewDidCommitNavigation",WebViewDidFinishNavigation:"mac:WebViewDidFinishNavigation",WebViewDidReceiveServerRedirectForProvisionalNavigation:"mac:WebViewDidReceiveServerRedirectForProvisionalNavigation",WebViewDidStartProvisionalNavigation:"mac:WebViewDidStartProvisionalNavigation",WindowDidBecomeKey:"mac:WindowDidBecomeKey",WindowDidBecomeMain:"mac:WindowDidBecomeMain",WindowDidBeginSheet:"mac:WindowDidBeginSheet",WindowDidChangeAlpha:"mac:WindowDidChangeAlpha",WindowDidChangeBackingLocation:"mac:WindowDidChangeBackingLocation",WindowDidChangeBackingProperties:"mac:WindowDidChangeBackingProperties",WindowDidChangeCollectionBehavior:"mac:WindowDidChangeCollectionBehavior",WindowDidChangeEffectiveAppearance:"mac:WindowDidChangeEffectiveAppearance",WindowDidChangeOcclusionState:"mac:WindowDidChangeOcclusionState",WindowDidChangeOrderingMode:"mac:WindowDidChangeOrderingMode",WindowDidChangeScreen:"mac:WindowDidChangeScreen",WindowDidChangeScreenParameters:"mac:WindowDidChangeScreenParameters",WindowDidChangeScreenProfile:"mac:WindowDidChangeScreenProfile",WindowDidChangeScreenSpace:"mac:WindowDidChangeScreenSpace",WindowDidChangeScreenSpaceProperties:"mac:WindowDidChangeScreenSpaceProperties",WindowDidChangeSharingType:"mac:WindowDidChangeSharingType",WindowDidChangeSpace:"mac:WindowDidChangeSpace",WindowDidChangeSpaceOrderingMode:"mac:WindowDidChangeSpaceOrderingMode",WindowDidChangeTitle:"mac:WindowDidChangeTitle",WindowDidChangeToolbar:"mac:WindowDidChangeToolbar",WindowDidDeminiaturize:"mac:WindowDidDeminiaturize",WindowDidEndSheet:"mac:WindowDidEndSheet",WindowDidEnterFullScreen:"mac:WindowDidEnterFullScreen",WindowDidEnterVersionBrowser:"mac:WindowDidEnterVersionBrowser",WindowDidExitFullScreen:"mac:WindowDidExitFullScreen",WindowDidExitVersionBrowser:"mac:WindowDidExitVersionBrowser",WindowDidExpose:"mac:WindowDidExpose",WindowDidFocus:"mac:WindowDidFocus",WindowDidMiniaturize:"mac:WindowDidMiniaturize",WindowDidMove:"mac:WindowDidMove",WindowDidOrderOffScreen:"mac:WindowDidOrderOffScreen",WindowDidOrderOnScreen:"mac:WindowDidOrderOnScreen",WindowDidResignKey:"mac:WindowDidResignKey",WindowDidResignMain:"mac:WindowDidResignMain",WindowDidResize:"mac:WindowDidResize",WindowDidUpdate:"mac:WindowDidUpdate",WindowDidUpdateAlpha:"mac:WindowDidUpdateAlpha",WindowDidUpdateCollectionBehavior:"mac:WindowDidUpdateCollectionBehavior",WindowDidUpdateCollectionProperties:"mac:WindowDidUpdateCollectionProperties",WindowDidUpdateShadow:"mac:WindowDidUpdateShadow",WindowDidUpdateTitle:"mac:WindowDidUpdateTitle",WindowDidUpdateToolbar:"mac:WindowDidUpdateToolbar",WindowDidZoom:"mac:WindowDidZoom",WindowFileDraggingEntered:"mac:WindowFileDraggingEntered",WindowFileDraggingExited:"mac:WindowFileDraggingExited",WindowFileDraggingPerformed:"mac:WindowFileDraggingPerformed",WindowHide:"mac:WindowHide",WindowMaximise:"mac:WindowMaximise",WindowUnMaximise:"mac:WindowUnMaximise",WindowMinimise:"mac:WindowMinimise",WindowUnMinimise:"mac:WindowUnMinimise",WindowShouldClose:"mac:WindowShouldClose",WindowShow:"mac:WindowShow",WindowWillBecomeKey:"mac:WindowWillBecomeKey",WindowWillBecomeMain:"mac:WindowWillBecomeMain",WindowWillBeginSheet:"mac:WindowWillBeginSheet",WindowWillChangeOrderingMode:"mac:WindowWillChangeOrderingMode",WindowWillClose:"mac:WindowWillClose",WindowWillDeminiaturize:"mac:WindowWillDeminiaturize",WindowWillEnterFullScreen:"mac:WindowWillEnterFullScreen",WindowWillEnterVersionBrowser:"mac:WindowWillEnterVersionBrowser",WindowWillExitFullScreen:"mac:WindowWillExitFullScreen",WindowWillExitVersionBrowser:"mac:WindowWillExitVersionBrowser",WindowWillFocus:"mac:WindowWillFocus",WindowWillMiniaturize:"mac:WindowWillMiniaturize",WindowWillMove:"mac:WindowWillMove",WindowWillOrderOffScreen:"mac:WindowWillOrderOffScreen",WindowWillOrderOnScreen:"mac:WindowWillOrderOnScreen",WindowWillResignMain:"mac:WindowWillResignMain",WindowWillResize:"mac:WindowWillResize",WindowWillUnfocus:"mac:WindowWillUnfocus",WindowWillUpdate:"mac:WindowWillUpdate",WindowWillUpdateAlpha:"mac:WindowWillUpdateAlpha",WindowWillUpdateCollectionBehavior:"mac:WindowWillUpdateCollectionBehavior",WindowWillUpdateCollectionProperties:"mac:WindowWillUpdateCollectionProperties",WindowWillUpdateShadow:"mac:WindowWillUpdateShadow",WindowWillUpdateTitle:"mac:WindowWillUpdateTitle",WindowWillUpdateToolbar:"mac:WindowWillUpdateToolbar",WindowWillUpdateVisibility:"mac:WindowWillUpdateVisibility",WindowWillUseStandardFrame:"mac:WindowWillUseStandardFrame",WindowZoomIn:"mac:WindowZoomIn",WindowZoomOut:"mac:WindowZoomOut",WindowZoomReset:"mac:WindowZoomReset",WebViewWebContentProcessDidTerminate:"mac:WebViewWebContentProcessDidTerminate"}),Linux:Object.freeze({ApplicationStartup:"linux:ApplicationStartup",SystemDidWake:"linux:SystemDidWake",SystemThemeChanged:"linux:SystemThemeChanged",SystemWillSleep:"linux:SystemWillSleep",WindowDeleteEvent:"linux:WindowDeleteEvent",WindowDidMove:"linux:WindowDidMove",WindowDidResize:"linux:WindowDidResize",WindowFocusIn:"linux:WindowFocusIn",WindowFocusOut:"linux:WindowFocusOut",WindowLoadStarted:"linux:WindowLoadStarted",WindowLoadRedirected:"linux:WindowLoadRedirected",WindowLoadCommitted:"linux:WindowLoadCommitted",WindowLoadFinished:"linux:WindowLoadFinished"}),iOS:Object.freeze({ApplicationDidBecomeActive:"ios:ApplicationDidBecomeActive",ApplicationDidEnterBackground:"ios:ApplicationDidEnterBackground",ApplicationDidFinishLaunching:"ios:ApplicationDidFinishLaunching",ApplicationDidReceiveMemoryWarning:"ios:ApplicationDidReceiveMemoryWarning",ApplicationWillEnterForeground:"ios:ApplicationWillEnterForeground",ApplicationWillResignActive:"ios:ApplicationWillResignActive",ApplicationWillTerminate:"ios:ApplicationWillTerminate",WindowDidLoad:"ios:WindowDidLoad",WindowWillAppear:"ios:WindowWillAppear",WindowDidAppear:"ios:WindowDidAppear",WindowWillDisappear:"ios:WindowWillDisappear",WindowDidDisappear:"ios:WindowDidDisappear",WindowSafeAreaInsetsChanged:"ios:WindowSafeAreaInsetsChanged",WindowOrientationChanged:"ios:WindowOrientationChanged",WindowTouchBegan:"ios:WindowTouchBegan",WindowTouchMoved:"ios:WindowTouchMoved",WindowTouchEnded:"ios:WindowTouchEnded",WindowTouchCancelled:"ios:WindowTouchCancelled",WebViewDidStartNavigation:"ios:WebViewDidStartNavigation",WebViewDidFinishNavigation:"ios:WebViewDidFinishNavigation",WebViewDidFailNavigation:"ios:WebViewDidFailNavigation",WebViewDecidePolicyForNavigationAction:"ios:WebViewDecidePolicyForNavigationAction",BatteryChanged:"ios:BatteryChanged",NetworkChanged:"ios:NetworkChanged",ThemeChanged:"ios:ThemeChanged",ScreenLocked:"ios:ScreenLocked",ScreenUnlocked:"ios:ScreenUnlocked"}),Android:Object.freeze({ActivityCreated:"android:ActivityCreated",ActivityStarted:"android:ActivityStarted",ActivityResumed:"android:ActivityResumed",ActivityPaused:"android:ActivityPaused",ActivityStopped:"android:ActivityStopped",ActivityDestroyed:"android:ActivityDestroyed",ApplicationLowMemory:"android:ApplicationLowMemory",WebViewPageStarted:"android:WebViewPageStarted",WebViewPageFinished:"android:WebViewPageFinished",BatteryChanged:"android:BatteryChanged",NetworkChanged:"android:NetworkChanged",ThemeChanged:"android:ThemeChanged",ScreenLocked:"android:ScreenLocked",ScreenUnlocked:"android:ScreenUnlocked"}),Common:Object.freeze({ApplicationOpenedWithFile:"common:ApplicationOpenedWithFile",ApplicationStarted:"common:ApplicationStarted",ApplicationLaunchedWithUrl:"common:ApplicationLaunchedWithUrl",ThemeChanged:"common:ThemeChanged",SystemDidWake:"common:SystemDidWake",SystemWillSleep:"common:SystemWillSleep",WindowClosing:"common:WindowClosing",WindowDidMove:"common:WindowDidMove",WindowDidResize:"common:WindowDidResize",WindowDPIChanged:"common:WindowDPIChanged",WindowFilesDropped:"common:WindowFilesDropped",WindowFocus:"common:WindowFocus",WindowFullscreen:"common:WindowFullscreen",WindowHide:"common:WindowHide",WindowLostFocus:"common:WindowLostFocus",WindowMaximise:"common:WindowMaximise",WindowMinimise:"common:WindowMinimise",WindowToggleFrameless:"common:WindowToggleFrameless",WindowRestore:"common:WindowRestore",WindowRuntimeReady:"common:WindowRuntimeReady",WindowShow:"common:WindowShow",WindowUnFullscreen:"common:WindowUnFullscreen",WindowUnMaximise:"common:WindowUnMaximise",WindowUnMinimise:"common:WindowUnMinimise",WindowZoom:"common:WindowZoom",WindowZoomIn:"common:WindowZoomIn",WindowZoomOut:"common:WindowZoomOut",WindowZoomReset:"common:WindowZoomReset",BatteryChanged:"common:BatteryChanged",NetworkChanged:"common:NetworkChanged",ScreenLocked:"common:ScreenLocked",ScreenUnlocked:"common:ScreenUnlocked",LowMemory:"common:LowMemory"})});u&&(window._wails=window._wails||{},window._wails.dispatchWailsEvent=Mi);var Pi=w(c.Events),Ti=0,Y=class{constructor(e,i){this.name=e,this.data=i!=null?i:null}};function Mi(n){let e=g.get(n.name);if(!e)return;let i=new Y(n.name,n.name in oe?oe[n.name](n.data):n.data);"sender"in n&&(i.sender=n.sender);let t=new Set;for(let o of e.slice())o.dispatch(i)&&t.add(o);if(t.size>0){let o=g.get(n.name);if(o){let r=o.filter(a=>!t.has(a));r.length===0?g.delete(n.name):g.set(n.name,r)}}}function ve(n,e,i){let t=g.get(n)||[],o=new te(n,e,i);return t.push(o),g.set(n,t),()=>Wn(o)}function Ei(n,e){return ve(n,e,-1)}function xi(n,e){return ve(n,e,1)}function Ai(...n){n.forEach(e=>g.delete(e))}function Ri(){g.clear()}function Ce(n,e){return Pi(Ti,new Y(n,e))}function bn(){return new MouseEvent("mousedown").buttons===0}function yn(){if(!EventTarget||!AbortSignal||!AbortController)return!1;let n=!0,e=new EventTarget,i=new AbortController;return e.addEventListener("test",()=>{n=!1},{signal:i.signal}),i.abort(),e.dispatchEvent(new CustomEvent("test")),n}function re(n){var e;return n.target instanceof HTMLElement?n.target:!(n.target instanceof HTMLElement)&&n.target instanceof Node&&(e=n.target.parentElement)!=null?e:document.body}var vn=!1;u&&document.addEventListener("DOMContentLoaded",()=>{vn=!0});function ae(n){vn||document.readyState==="complete"?n():document.addEventListener("DOMContentLoaded",n)}var ki="data-file-drop-target",y="file-drop-target-active",m=null,Oi=0,Fi=1,Li=2,Ii=3,Ni=4,Ui=5,zi=6,Bi=7,ji=8,Hi=9,Vi=10,Zi=11,Ki=12,_i=13,Gi=14,Yi=15,Xi=16,Ji=17,qi=18,Qi=19,$i=20,et=21,nt=22,it=23,tt=24,ot=25,rt=26,at=27,st=28,lt=29,dt=30,ct=31,mt=32,ut=33,wt=34,pt=35,ft=36,gt=37,ht=38,Wt=39,bt=40,yt=41,vt=42,Ct=43,Dt=44,St=45,Pt=46,Tt=47,Mt=48,Et=49,xt=50,At=51,Rt=52;function se(n){return n?n.closest("[".concat(ki,"]")):null}function kt(){var n,e,i,t;return((e=(n=window.chrome)==null?void 0:n.webview)==null?void 0:e.postMessageWithAdditionalObjects)==null?!1:((t=(i=window._wails)==null?void 0:i.flags)==null?void 0:t.enableFileDrop)===!0}function Ot(n,e,i){var t,o;(o=(t=window.chrome)==null?void 0:t.webview)!=null&&o.postMessageWithAdditionalObjects&&window.chrome.webview.postMessageWithAdditionalObjects("file:drop:".concat(n,":").concat(e),i)}var Pe=!1;function Cn(){Pe=!1,m&&(m.classList.remove(y),m=null)}function Dn(){var n,e;((e=(n=window._wails)==null?void 0:n.flags)==null?void 0:e.enableFileDrop)!==!1&&(Pe=!0)}function Sn(){Cn()}function Pn(n,e){var o,r;if(!Pe||((r=(o=window._wails)==null?void 0:o.flags)==null?void 0:r.enableFileDrop)===!1)return;let i=document.elementFromPoint(n,e),t=se(i);m&&m!==t&&m.classList.remove(y),t?(t.classList.add(y),m=t):m=null}var s=Symbol("caller"),le=class le{constructor(e=""){this[s]=w(c.Window,e);for(let i of Object.getOwnPropertyNames(le.prototype))i!=="constructor"&&typeof this[i]=="function"&&(this[i]=this[i].bind(this))}Get(e){return new le(e)}Position(){return this[s](Oi)}Center(){return this[s](Fi)}Close(){return this[s](Li)}DisableSizeConstraints(){return this[s](Ii)}EnableSizeConstraints(){return this[s](Ni)}Focus(){return this[s](Ui)}ForceReload(){return this[s](zi)}Fullscreen(){return this[s](Bi)}GetScreen(){return this[s](ji)}GetZoom(){return this[s](Hi)}Height(){return this[s](Vi)}Hide(){return this[s](Zi)}IsFocused(){return this[s](Ki)}IsFullscreen(){return this[s](_i)}IsMaximised(){return this[s](Gi)}IsMinimised(){return this[s](Yi)}Maximise(){return this[s](Xi)}Minimise(){return this[s](Ji)}Name(){return this[s](qi)}OpenDevTools(){return this[s](Qi)}RelativePosition(){return this[s]($i)}Reload(){return this[s](et)}Resizable(){return this[s](nt)}Restore(){return this[s](it)}SetPosition(e,i){return this[s](tt,{x:e,y:i})}SetAlwaysOnTop(e){return this[s](ot,{alwaysOnTop:e})}SetBackgroundColour(e,i,t,o){return this[s](rt,{r:e,g:i,b:t,a:o})}SetFrameless(e){return this[s](at,{frameless:e})}SetFullscreenButtonEnabled(e){return this[s](st,{enabled:e})}SetMaxSize(e,i){return this[s](lt,{width:e,height:i})}SetMinSize(e,i){return this[s](dt,{width:e,height:i})}SetRelativePosition(e,i){return this[s](ct,{x:e,y:i})}SetResizable(e){return this[s](mt,{resizable:e})}SetSize(e,i){return this[s](ut,{width:e,height:i})}SetTitle(e){return this[s](wt,{title:e})}SetZoom(e){return this[s](pt,{zoom:e})}Show(){return this[s](ft)}Size(){return this[s](gt)}ToggleFullscreen(){return this[s](ht)}ToggleMaximise(){return this[s](Wt)}ToggleFrameless(){return this[s](bt)}UnFullscreen(){return this[s](yt)}UnMaximise(){return this[s](vt)}UnMinimise(){return this[s](Ct)}Width(){return this[s](Dt)}Zoom(){return this[s](St)}ZoomIn(){return this[s](Pt)}ZoomOut(){return this[s](Tt)}ZoomReset(){return this[s](Mt)}HandlePlatformFileDrop(e,i,t){var d,f;if(((f=(d=window._wails)==null?void 0:d.flags)==null?void 0:f.enableFileDrop)===!1)return;let o=document.elementFromPoint(i,t),r=se(o);if(!r)return;let a={id:r.id,classList:Array.from(r.classList),attributes:{}};for(let D=0;D<r.attributes.length;D++){let S=r.attributes[D];a.attributes[S.name]=S.value}let l={filenames:e,x:i,y:t,elementDetails:a};this[s](xt,l),Cn()}SetScreen(e){return this[s](Rt,{screenID:e})}SnapAssist(){return this[s](Et)}Print(){return this[s](At)}},Se=le,Ft=new Se("");function Lt(){let n=document.documentElement,e=0;n.addEventListener("dragenter",i=>{var r,a,l;if(!((r=i.dataTransfer)!=null&&r.types.includes("Files")))return;if(i.preventDefault(),((l=(a=window._wails)==null?void 0:a.flags)==null?void 0:l.enableFileDrop)===!1){i.dataTransfer.dropEffect="none";return}e++;let t=document.elementFromPoint(i.clientX,i.clientY),o=se(t);m&&m!==o&&m.classList.remove(y),o?(o.classList.add(y),i.dataTransfer.dropEffect="copy",m=o):(i.dataTransfer.dropEffect="none",m=null)},!1),n.addEventListener("dragover",i=>{var r,a,l;if(!((r=i.dataTransfer)!=null&&r.types.includes("Files")))return;if(i.preventDefault(),((l=(a=window._wails)==null?void 0:a.flags)==null?void 0:l.enableFileDrop)===!1){i.dataTransfer.dropEffect="none";return}let t=document.elementFromPoint(i.clientX,i.clientY),o=se(t);m&&m!==o&&m.classList.remove(y),o?(o.classList.contains(y)||o.classList.add(y),i.dataTransfer.dropEffect="copy",m=o):(i.dataTransfer.dropEffect="none",m=null)},!1),n.addEventListener("dragleave",i=>{var t,o,r;(t=i.dataTransfer)!=null&&t.types.includes("Files")&&(i.preventDefault(),((r=(o=window._wails)==null?void 0:o.flags)==null?void 0:r.enableFileDrop)!==!1&&i.relatedTarget!==null&&(e--,(e===0||m&&!m.contains(i.relatedTarget))&&(m&&(m.classList.remove(y),m=null),e=0)))},!1),n.addEventListener("drop",i=>{var t,o,r;if((t=i.dataTransfer)!=null&&t.types.includes("Files")&&(i.preventDefault(),((r=(o=window._wails)==null?void 0:o.flags)==null?void 0:r.enableFileDrop)!==!1&&(e=0,m&&(m.classList.remove(y),m=null),kt()))){let a=[];if(i.dataTransfer.items){for(let l of i.dataTransfer.items)if(l.kind==="file"){let d=l.getAsFile();d&&a.push(d)}}else if(i.dataTransfer.files)for(let l of i.dataTransfer.files)a.push(l);a.length>0&&Ot(i.clientX,i.clientY,a)}},!1)}typeof window<"u"&&typeof document<"u"&&Lt();var F=Ft;function It(n,e=null){Ce(n,e)}function Nt(n,e){let i=F.Get(n),t=i[e];if(typeof t=="function")try{t.call(i)}catch(o){}}function Tn(n){let e=n.currentTarget;function i(o="Yes"){if(o!=="Yes")return;let r=e.getAttribute("wml-event")||e.getAttribute("data-wml-event"),a=e.getAttribute("wml-target-window")||e.getAttribute("data-wml-target-window")||"",l=e.getAttribute("wml-window")||e.getAttribute("data-wml-window"),d=e.getAttribute("wml-openurl")||e.getAttribute("data-wml-openurl");r!==null&&It(r),l!==null&&Nt(a,l),d!==null&&ge(d)}let t=e.getAttribute("wml-confirm")||e.getAttribute("data-wml-confirm");t?We({Title:"Confirm",Message:t,Detached:!1,Buttons:[{Label:"Yes"},{Label:"No",IsDefault:!0}]}).then(i):i()}var X=Symbol("controller"),L=Symbol("triggerMap"),E=Symbol("elementCount"),Te=class{constructor(){this[X]=new AbortController}set(e,i){return{signal:this[X].signal}}reset(){this[X].abort(),this[X]=new AbortController}},Me=class{constructor(){this[L]=new WeakMap,this[E]=0}set(e,i){return this[L].has(e)||this[E]++,this[L].set(e,i),{}}reset(){if(!(this[E]<=0)){for(let e of document.body.querySelectorAll("*")){if(this[E]<=0)break;let i=this[L].get(e);i!=null&&this[E]--;for(let t of i||[])e.removeEventListener(t,Tn)}this[L]=new WeakMap,this[E]=0}}},Mn=yn()?new Te:new Me;function Ut(n){let e=/\S+/g,i=n.getAttribute("wml-trigger")||n.getAttribute("data-wml-trigger")||"click",t=[],o;for(;(o=e.exec(i))!==null;)t.push(o[0]);let r=Mn.set(n,t);for(let a of t)n.addEventListener(a,Tn,r)}function Ee(){ae(En)}function En(){Mn.reset(),document.body.querySelectorAll("[wml-event], [wml-window], [wml-openurl], [data-wml-event], [data-wml-window], [data-wml-openurl]").forEach(Ut)}window.wails=Ae;Ee();var Fe={};p(Fe,{Capabilities:()=>Vt,Environment:()=>Zt,IsAMD64:()=>Gt,IsARM:()=>Yt,IsARM64:()=>Xt,IsAndroid:()=>Rn,IsDarkMode:()=>Ht,IsDebug:()=>Oe,IsDesktop:()=>_t,IsIOS:()=>An,IsLinux:()=>de,IsMac:()=>xn,IsMobile:()=>Kt,IsWindows:()=>J,invoke:()=>C});var ke=w(c.System),zt=0,Bt=1,jt=2,Re=(function(){var n,e,i,t,o,r;try{if((e=(n=window.chrome)==null?void 0:n.webview)!=null&&e.postMessage)return window.chrome.webview.postMessage.bind(window.chrome.webview);if((o=(t=(i=window.webkit)==null?void 0:i.messageHandlers)==null?void 0:t.external)!=null&&o.postMessage)return window.webkit.messageHandlers.external.postMessage.bind(window.webkit.messageHandlers.external);if((r=window.wails)!=null&&r.invoke)return a=>window.wails.invoke(typeof a=="string"?a:JSON.stringify(a))}catch(a){}return null})();function C(n){Re==null||Re(n)}function Ht(){return ke(zt)}async function Vt(){return ke(jt)}function Zt(){return ke(Bt)}function J(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="windows"}function de(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="linux"}function xn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="darwin"}function An(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="ios"}function Rn(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.OS)==="android"}function Kt(){return An()||Rn()}function _t(){return xn()||J()||de()}function Gt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="amd64"}function Yt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="arm"}function Xt(){var n,e;return((e=(n=window._wails)==null?void 0:n.environment)==null?void 0:e.Arch)==="arm64"}function Oe(){var n,e;return!!((e=(n=window._wails)==null?void 0:n.environment)!=null&&e.Debug)}u&&window.addEventListener("contextmenu",$t);var Jt=w(c.ContextMenu),qt=0;function Qt(n,e,i,t){Jt(qt,{id:n,x:e,y:i,data:t})}function $t(n){let e=re(n),i=window.getComputedStyle(e).getPropertyValue("--custom-contextmenu").trim();if(i){n.preventDefault();let t=window.getComputedStyle(e).getPropertyValue("--custom-contextmenu-data");Qt(i,n.clientX,n.clientY,t)}else eo(n,e)}function eo(n,e){if(Oe())return;switch(window.getComputedStyle(e).getPropertyValue("--default-contextmenu").trim()){case"show":return;case"hide":n.preventDefault();return}if(e.isContentEditable)return;let i=window.getSelection(),t=i&&i.toString().length>0;if(t)for(let o=0;o<i.rangeCount;o++){let a=i.getRangeAt(o).getClientRects();for(let l=0;l<a.length;l++){let d=a[l];if(document.elementFromPoint(d.left,d.top)===e)return}}(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&(t||!e.readOnly&&!e.disabled)||n.preventDefault()}var Le={};p(Le,{GetFlag:()=>I});function I(n){try{return window._wails.flags[n]}catch(e){throw new Error("Unable to retrieve flag '"+n+"': "+e,{cause:e})}}var q=!1,Q=!1,Be=!1,U=!1,z=!1,x="",kn="auto",N=0,ce=!1;u&&(ce=bn(),window._wails=window._wails||{},window._wails.setResizable=n=>{Be=n,Be||(U=z=!1,h())});var je=!1;function no(){var i,t;let n=(t=(i=window._wails)==null?void 0:i.environment)==null?void 0:t.OS;if(n==="ios"||n==="android")return!0;let e=navigator.userAgent||navigator.vendor||window.opera||"";return/android|iphone|ipad|ipod|iemobile|wpdesktop/i.test(e)}function Ie(){if(!je&&!no()){window.addEventListener("mousedown",ze,{capture:!0}),window.addEventListener("mousemove",ze,{capture:!0}),window.addEventListener("mouseup",ze,{capture:!0});for(let n of["click","contextmenu","dblclick"])window.addEventListener(n,io,{capture:!0});je=!0}}if(u){Ie(),document.addEventListener("DOMContentLoaded",Ie,{once:!0});let n=0,e=window.setInterval(()=>{if(je){window.clearInterval(e);return}Ie(),++n>100&&window.clearInterval(e)},50)}function io(n){(Q||z)&&(n.stopImmediatePropagation(),n.stopPropagation(),n.preventDefault())}var Ne=0,to=1,Ue=2;function ze(n){let e,i=n.buttons;switch(n.type){case"mousedown":e=Ne,ce||(i=N|1<<n.button);break;case"mouseup":e=to,ce||(i=N&~(1<<n.button));break;default:e=Ue,ce||(i=N);break}let t=N&~i,o=i&~N;N=i,e===Ne&&!(o&n.button)&&(t|=1<<n.button,o|=1<<n.button),(e!==Ue&&z||Q&&(e===Ne||n.button!==0))&&(n.stopImmediatePropagation(),n.stopPropagation(),n.preventDefault()),t&1&&ro(n),o&1&&oo(n),e===Ue&&so(n)}function oo(n){if(q=!1,U=!1,!J()&&n.type==="mousedown"&&n.button===0&&n.detail!==1)return;if(x){if(n.type!=="mousedown")return;U=!0;return}let e=re(n),i=window.getComputedStyle(e);q=i.getPropertyValue("--wails-draggable").trim()==="drag"&&n.offsetX-parseFloat(i.paddingLeft)<e.clientWidth&&n.offsetY-parseFloat(i.paddingTop)<e.clientHeight}function ro(n){q=!1,Q=!1,U=!1,z=!1}var ao=Object.freeze({"se-resize":"nwse-resize","sw-resize":"nesw-resize","nw-resize":"nwse-resize","ne-resize":"nesw-resize","w-resize":"ew-resize","n-resize":"ns-resize","s-resize":"ns-resize","e-resize":"ew-resize"});function h(n){n?(x||(kn=document.body.style.cursor),document.body.style.cursor=ao[n]):!n&&x&&(document.body.style.cursor=kn),x=n||""}function so(n){if(U&&x?(z=!0,C("wails:resize:"+x)):q&&(Q=!0,C("wails:drag")),Q||z){q=U=!1;return}if(!Be||!J()&&!(de()&&I("frameless"))){x&&h();return}let e=I("system.resizeHandleHeight")||5,i=I("system.resizeHandleWidth")||5,t=I("resizeCornerExtra")||10,o=Math.max(0,window.innerWidth-document.documentElement.clientWidth),r=Math.max(0,window.innerHeight-document.documentElement.clientHeight),a=window.innerWidth-o,l=window.innerHeight-r,d=n.clientX<a&&a-n.clientX<i,f=n.clientX<i,D=n.clientY<e,S=n.clientY<l&&l-n.clientY<e,W=n.clientX<a&&a-n.clientX<i+t,b=n.clientX<i+t,pe=n.clientY<e+t,fe=n.clientY<l&&l-n.clientY<e+t;!b&&!pe&&!fe&&!W?h():W&&fe?h("se-resize"):b&&fe?h("sw-resize"):b&&pe?h("nw-resize"):pe&&W?h("ne-resize"):f?h("w-resize"):D?h("n-resize"):S?h("s-resize"):d?h("e-resize"):h()}var On="--wails-non-client-region",lo="wails:runtime-config-ready",co=new Set(["caption","minimize","maximize","close"]);u&&(window._wails=window._wails||{});var Ve=!1,Fn="",He=new Set,$,Ln=!1;function In(n){let e=n.trim().toLowerCase();if(co.has(e))return e}function mo(n){if(!(n instanceof HTMLElement))return;let e=window.getComputedStyle(n),i=In(e.getPropertyValue(On));if(!i)return;let t=n.parentElement;if(t){let o=window.getComputedStyle(t);if(In(o.getPropertyValue(On))===i)return}return i}function uo(n){let e=window.getComputedStyle(n);return e.display!=="none"&&e.visibility!=="hidden"&&e.contentVisibility!=="hidden"}function wo(n){if(!(n instanceof HTMLElement))return;let e=mo(n);if(!e||!uo(n))return;let i=n.getBoundingClientRect();if(i.width<=0||i.height<=0)return;let t=window.devicePixelRatio||1,o=Math.floor(i.left*t),r=Math.floor(i.top*t),a=Math.ceil(i.right*t),l=Math.ceil(i.bottom*t);if(!(a<=o||l<=r))return{kind:e,left:o,top:r,right:a,bottom:l}}function po(){let n=[];if(document.documentElement&&n.push(document.documentElement),document.body){n.push(document.body);for(let e of document.body.querySelectorAll("*"))n.push(e)}return n}function fo(n){if(typeof ResizeObserver>"u")return;$!=null||($=new ResizeObserver(A));let e=new Set(n);for(let i of He)e.has(i)||$.unobserve(i);for(let i of e)He.has(i)||$.observe(i);He=e}function go(){Ve=!1;let n=po(),e=[],i=[];for(let o of n){let r=wo(o);r&&(e.push(r),i.push(o))}fo(i);let t=JSON.stringify({version:1,regions:e});t!==Fn&&(Fn=t,C("wails:non-client-region:"+t))}function A(){Ve||(Ve=!0,window.requestAnimationFrame(go))}function ho(){var e,i;if(Ln)return;Ln=!0,A(),new MutationObserver(A).observe(document.documentElement,{attributes:!0,childList:!0,subtree:!0}),window.addEventListener("resize",A),window.addEventListener("scroll",A,!0),(e=window.visualViewport)==null||e.addEventListener("resize",A),(i=window.visualViewport)==null||i.addEventListener("scroll",A)}function Nn(){var i,t;let n=(i=window._wails.environment)==null?void 0:i.OS;if(n===void 0)return!1;let e=(t=window._wails.flags)==null?void 0:t.nonClientRegionTracking;return n==="windows"&&e===!0&&ae(ho),!0}u&&!Nn()&&window.addEventListener(lo,Nn,{once:!0});var Ke={};p(Ke,{Hide:()=>vo,Quit:()=>Do,Show:()=>Co});var Ze=w(c.Application),Wo=0,bo=1,yo=2;function vo(){return Ze(Wo)}function Co(){return Ze(bo)}function Do(){return Ze(yo)}var Qe={};p(Qe,{ByID:()=>Vo,ByName:()=>Ho,Call:()=>qe,RuntimeError:()=>_});var zn=Function.prototype.toString,B=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,_e,me;if(typeof B=="function"&&typeof Object.defineProperty=="function")try{_e=Object.defineProperty({},"length",{get:function(){throw me}}),me={},B(function(){throw 42},null,_e)}catch(n){n!==me&&(B=null)}else B=null;var So=/^\s*class\b/,Ye=function(e){try{var i=zn.call(e);return So.test(i)}catch(t){return!1}},Ge=function(e){try{return Ye(e)?!1:(zn.call(e),!0)}catch(i){return!1}},ue=Object.prototype.toString,Po="[object Object]",To="[object Function]",Mo="[object GeneratorFunction]",Eo="[object HTMLAllCollection]",xo="[object HTML document.all class]",Ao="[object HTMLCollection]",Ro=typeof Symbol=="function"&&!!Symbol.toStringTag,ko=!(0 in[,]),Xe=function(){return!1};typeof document=="object"&&(Un=document.all,ue.call(Un)===ue.call(document.all)&&(Xe=function(e){if((ko||!e)&&(typeof e>"u"||typeof e=="object"))try{var i=ue.call(e);return(i===Eo||i===xo||i===Ao||i===Po)&&e("")==null}catch(t){}return!1}));var Un;function Oo(n){if(Xe(n))return!0;if(!n||typeof n!="function"&&typeof n!="object")return!1;try{B(n,null,_e)}catch(e){if(e!==me)return!1}return!Ye(n)&&Ge(n)}function Fo(n){if(Xe(n))return!0;if(!n||typeof n!="function"&&typeof n!="object")return!1;if(Ro)return Ge(n);if(Ye(n))return!1;var e=ue.call(n);return e!==To&&e!==Mo&&!/^\[object HTML/.test(e)?!1:Ge(n)}var P=B?Oo:Fo;var H=class extends Error{constructor(e,i){super(e,i),this.name="CancelError"}},T=class extends Error{constructor(e,i,t){super((t!=null?t:"Unhandled rejection in cancelled promise.")+" Reason: "+Lo(i),{cause:i}),this.promise=e,this.name="CancelledRejectionError"}},v=Symbol("barrier"),Je=Symbol("cancelImpl"),Vn,Bn=(Vn=Symbol.species)!=null?Vn:Symbol("speciesPolyfill"),ee=class n extends Promise{constructor(e,i){let t,o;if(super((d,f)=>{t=d,o=f}),this.constructor[Bn]!==Promise)throw new TypeError("CancellablePromise does not support transparent subclassing. Please refrain from overriding the [Symbol.species] static property.");let r={promise:this,resolve:t,reject:o,get oncancelled(){return i!=null?i:null},set oncancelled(d){i=d!=null?d:void 0}},a={get root(){return a},resolving:!1,settled:!1};Object.defineProperties(this,{[v]:{configurable:!1,enumerable:!1,writable:!0,value:null},[Je]:{configurable:!1,enumerable:!1,writable:!1,value:Zn(r,a)}});let l=_n(r,a);try{e(Kn(r,a),l)}catch(d){a.resolving||l(d)}}cancel(e){return new n(i=>{Promise.all([this[Je](new H("Promise cancelled.",{cause:e})),Io(this)]).then(()=>i(),()=>i())})}cancelOn(e){return e.aborted?this.cancel(e.reason):e.addEventListener("abort",()=>{this.cancel(e.reason)},{capture:!0}),this}then(e,i,t){if(!(this instanceof n))throw new TypeError("CancellablePromise.prototype.then called on an invalid object.");if(P(e)||(e=jn),P(i)||(i=Hn),e===jn&&i==Hn)return new n(r=>r(this));let o={};return this[v]=o,new n((r,a)=>{super.then(l=>{var d;this[v]===o&&(this[v]=null),(d=o.resolve)==null||d.call(o);try{r(e(l))}catch(f){a(f)}},l=>{var d;this[v]===o&&(this[v]=null),(d=o.resolve)==null||d.call(o);try{r(i(l))}catch(f){a(f)}})},async r=>{try{return t==null?void 0:t(r)}finally{await this.cancel(r)}})}catch(e,i){return this.then(void 0,e,i)}finally(e,i){if(!(this instanceof n))throw new TypeError("CancellablePromise.prototype.finally called on an invalid object.");return P(e)?this.then(t=>n.resolve(e()).then(()=>t),t=>n.resolve(e()).then(()=>{throw t}),i):this.then(e,e,i)}static get[(v,Je,Bn)](){return Promise}static all(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,r)=>{Promise.all(i).then(o,r)},o=>we(t,i,o));return t}static allSettled(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,r)=>{Promise.allSettled(i).then(o,r)},o=>we(t,i,o));return t}static any(e){let i=Array.from(e),t=i.length===0?n.resolve(i):new n((o,r)=>{Promise.any(i).then(o,r)},o=>we(t,i,o));return t}static race(e){let i=Array.from(e),t=new n((o,r)=>{Promise.race(i).then(o,r)},o=>we(t,i,o));return t}static cancel(e){let i=new n(()=>{});return i.cancel(e),i}static timeout(e,i){let t=new n(()=>{});return AbortSignal&&typeof AbortSignal=="function"&&AbortSignal.timeout&&typeof AbortSignal.timeout=="function"?AbortSignal.timeout(e).addEventListener("abort",()=>{t.cancel(i)}):setTimeout(()=>{t.cancel(i)},e),t}static sleep(e,i){return new n(t=>{setTimeout(()=>t(i),e)})}static reject(e){return new n((i,t)=>t(e))}static resolve(e){return e instanceof n?e:new n(i=>i(e))}static withResolvers(){let e={oncancelled:null};return e.promise=new n((i,t)=>{e.resolve=i,e.reject=t},i=>{var t;(t=e.oncancelled)==null||t.call(e,i)}),e}};function Zn(n,e){let i;return t=>{if(e.settled||(e.settled=!0,e.reason=t,n.reject(t),Promise.prototype.then.call(n.promise,void 0,o=>{if(o!==t)throw o})),!(!e.reason||!n.oncancelled))return i=new Promise(o=>{try{o(n.oncancelled(e.reason.cause))}catch(r){Promise.reject(new T(n.promise,r,"Unhandled exception in oncancelled callback."))}}).catch(o=>{Promise.reject(new T(n.promise,o,"Unhandled rejection in oncancelled callback."))}),n.oncancelled=null,i}}function Kn(n,e){return i=>{if(!e.resolving){if(e.resolving=!0,i===n.promise){if(e.settled)return;e.settled=!0,n.reject(new TypeError("A promise cannot be resolved with itself."));return}if(i!=null&&(typeof i=="object"||typeof i=="function")){let t;try{t=i.then}catch(o){e.settled=!0,n.reject(o);return}if(P(t)){try{let a=i.cancel;if(P(a)){let l=d=>{Reflect.apply(a,i,[d])};e.reason?Zn(Z(V({},n),{oncancelled:l}),e)(e.reason):n.oncancelled=l}}catch(a){}let o={root:e.root,resolving:!1,get settled(){return this.root.settled},set settled(a){this.root.settled=a},get reason(){return this.root.reason}},r=_n(n,o);try{Reflect.apply(t,i,[Kn(n,o),r])}catch(a){r(a)}return}}e.settled||(e.settled=!0,n.resolve(i))}}}function _n(n,e){return i=>{if(!e.resolving)if(e.resolving=!0,e.settled){try{if(i instanceof H&&e.reason instanceof H&&Object.is(i.cause,e.reason.cause))return}catch(t){}Promise.reject(new T(n.promise,i))}else e.settled=!0,n.reject(i)}}function we(n,e,i){let t=[];for(let o of e){let r;try{if(!P(o.then)||(r=o.cancel,!P(r)))continue}catch(l){continue}let a;try{a=Reflect.apply(r,o,[i])}catch(l){Promise.reject(new T(n,l,"Unhandled exception in cancel method."));continue}a&&t.push((a instanceof Promise?a:Promise.resolve(a)).catch(l=>{Promise.reject(new T(n,l,"Unhandled rejection in cancel method."))}))}return Promise.all(t)}function jn(n){return n}function Hn(n){throw n}function Lo(n){try{if(n instanceof Error||typeof n!="object"||n.toString!==Object.prototype.toString)return""+n}catch(e){}try{return JSON.stringify(n)}catch(e){}try{return Object.prototype.toString.call(n)}catch(e){}return"<could not convert error to string>"}function Io(n){var i;let e=(i=n[v])!=null?i:{};return"promise"in e||Object.assign(e,j()),n[v]==null&&(e.resolve(),n[v]=e),e.promise}var j=Promise.withResolvers;j&&typeof j=="function"?j=j.bind(Promise):j=function(){let n,e;return{promise:new Promise((t,o)=>{n=t,e=o}),resolve:n,reject:e}};u&&(window._wails=window._wails||{});var No=w(c.Call),Uo=w(c.CancelCall),ne=new Map,zo=0,Bo=0;function jo(){let n;do n=R();while(ne.has(n));return n}function qe(n){let e=jo(),i=ee.withResolvers();ne.set(e,{resolve:i.resolve,reject:i.reject});let t=No(zo,Object.assign({"call-id":e},n)),o=!0;t.then(a=>{o=!1,ne.delete(e),i.resolve(a)},a=>{o=!1,ne.delete(e),i.reject(a)});let r=()=>(ne.delete(e),Uo(Bo,{"call-id":e}).catch(a=>{}));return i.oncancelled=()=>o?r():t.then(r),i.promise}function Ho(n,...e){return qe({methodName:n,args:e})}function Vo(n,...e){return qe({methodID:n,args:e})}var $e={};p($e,{SetText:()=>_o,Text:()=>Go});var Gn=w(c.Clipboard),Zo=0,Ko=1;function _o(n){return Gn(Zo,{text:n})}function Go(){return Gn(Ko)}var en={};p(en,{GetAll:()=>$o,GetByID:()=>ir,GetByIndex:()=>tr,GetCurrent:()=>nr,GetPrimary:()=>er});var ie=w(c.Screens),Yo=0,Xo=1,Jo=2,qo=3,Qo=4;function $o(){return ie(Yo)}function er(){return ie(Xo)}function nr(){return ie(Jo)}function ir(n){return ie(qo,{id:n})}function tr(n){return ie(Qo,{index:n})}var on={};p(on,{Device:()=>tn,Haptics:()=>nn});var Yn=w(c.IOS),or=0,rr=1,nn;(e=>{function n(i="medium"){return Yn(or,{style:i})}e.Impact=n})(nn||(nn={}));var tn;(e=>{function n(){return Yn(rr)}e.Info=n})(tn||(tn={}));var dn={};p(dn,{Device:()=>an,Haptics:()=>rn,Toast:()=>sn});var ln=w(c.Android),ar=0,sr=1,lr=2,rn;(e=>{function n(i=100){return ln(ar,{duration:i})}e.Vibrate=n})(rn||(rn={}));var an;(e=>{function n(){return ln(sr)}e.Info=n})(an||(an={}));var sn;(e=>{function n(i){return ln(lr,{message:i})}e.Show=n})(sn||(sn={}));var cn={};p(cn,{Events:()=>dr});var dr=Object.freeze({CheckStarted:"wails:updater:check-started",UpdateAvailable:"wails:updater:update-available",NoUpdate:"wails:updater:no-update",DownloadStarted:"wails:updater:download-started",DownloadProgress:"wails:updater:download-progress",DownloadComplete:"wails:updater:download-complete",Verifying:"wails:updater:verifying",Installing:"wails:updater:installing",UpdateReady:"wails:updater:update-ready",Error:"wails:updater:error",Meta:"wails:updater:meta",User:Object.freeze({Install:"wails:updater:user:install",Restart:"wails:updater:user:restart",Skip:"wails:updater:user:skip",Remind:"wails:updater:user:remind",Cancel:"wails:updater:user:cancel"}),Window:Object.freeze({Ready:"wails:updater:window:ready"})});u&&(window._wails=window._wails||{});u&&(window._wails.invoke=C,window._wails.clientId=k);u&&(window._wails.handlePlatformFileDrop=F.HandlePlatformFileDrop.bind(F));u&&(window._wails.handleDragEnter=Dn,window._wails.handleDragLeave=Sn,window._wails.handleDragOver=Pn);u&&C("wails:runtime:ready");function Xn(n){return fetch(n,{method:"HEAD"}).then(e=>{if(e.ok&&(e.headers.get("content-type")||"").toLowerCase().includes("javascript")){let t=document.createElement("script");t.src=n,document.head.appendChild(t)}}).catch(()=>{})}u&&Xn("/wails/custom.js");export{dn as Android,Ke as Application,he as Browser,Qe as Call,H as CancelError,ee as CancellablePromise,T as CancelledRejectionError,$e as Clipboard,ye as Create,be as Dialogs,De as Events,Le as Flags,on as IOS,en as Screens,Fe as System,cn as Updater,xe as WML,F as Window,k as clientId,hn as getTransport,Xn as loadOptionalScript,c as objectNames,gn as setTransport}; diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/package.json b/v3/internal/runtime/desktop/@wailsio/runtime/package.json index 4ea23afc316..ec1ed4a5eee 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/package.json +++ b/v3/internal/runtime/desktop/@wailsio/runtime/package.json @@ -31,6 +31,7 @@ ], "sideEffects": [ "./dist/index.js", + "./dist/appregion.js", "./dist/contextmenu.js", "./dist/drag.js" ], diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/src/appregion.ts b/v3/internal/runtime/desktop/@wailsio/runtime/src/appregion.ts new file mode 100644 index 00000000000..7f284546aed --- /dev/null +++ b/v3/internal/runtime/desktop/@wailsio/runtime/src/appregion.ts @@ -0,0 +1,235 @@ +/* + _ __ _ __ +| | / /___(_) /____ +| | /| / / __ `/ / / ___/ +| |/ |/ / /_/ / / (__ ) +|__/|__/\__,_/_/_/____/ +The electron alternative for Go +(c) Lea Anthony 2019-present +*/ + +import { invoke } from "./system.js"; +import { whenReady } from "./utils.js"; +import { hasDOM } from "./environment.js"; + +type NonClientRegionKind = "caption" | "minimize" | "maximize" | "close"; + +interface NonClientRegion { + kind: NonClientRegionKind; + left: number; + top: number; + right: number; + bottom: number; +} + +/* +--wails-non-client-region: caption; marks an area that can drag the window +--wails-non-client-region: minimize; marks a custom minimize button +--wails-non-client-region: maximize; marks a custom maximize button +--wails-non-client-region: close; marks a custom close button +*/ +const regionProperty = "--wails-non-client-region"; +const runtimeConfigReadyEvent = "wails:runtime-config-ready"; +const validRegions = new Set<NonClientRegionKind>(["caption", "minimize", "maximize", "close"]); + +// Setup +if (hasDOM) { + window._wails = window._wails || {}; +} + +let updatePending = false; +let lastPayload = ""; +let observedElements = new Set<Element>(); +let resizeObserver: ResizeObserver | undefined; +let trackingStarted = false; + +function normaliseRegionKind(value: string): NonClientRegionKind | undefined { + const region = value.trim().toLowerCase(); + if (validRegions.has(region as NonClientRegionKind)) { + return region as NonClientRegionKind; + } + return undefined; +} + +function nonClientRegionForElement(element: Element): NonClientRegionKind | undefined { + if (!(element instanceof HTMLElement)) { + return undefined; + } + + const style = window.getComputedStyle(element); + const region = normaliseRegionKind(style.getPropertyValue(regionProperty)); + if (!region) { + return undefined; + } + + const parent = element.parentElement; + if (parent) { + const parentStyle = window.getComputedStyle(parent); + // The CSS property is inherited. Only report the outermost element for + // each contiguous region so native hit testing sees stable rectangles. + if (normaliseRegionKind(parentStyle.getPropertyValue(regionProperty)) === region) { + return undefined; + } + } + + return region; +} + +function isVisible(element: HTMLElement): boolean { + const style = window.getComputedStyle(element); + return style.display !== "none" && + style.visibility !== "hidden" && + style.contentVisibility !== "hidden"; +} + +function elementRegion(element: Element): NonClientRegion | undefined { + if (!(element instanceof HTMLElement)) { + return undefined; + } + + const kind = nonClientRegionForElement(element); + if (!kind || !isVisible(element)) { + return undefined; + } + + const rect = element.getBoundingClientRect(); + if (rect.width <= 0 || rect.height <= 0) { + return undefined; + } + + // Native hit testing runs in physical pixels, while DOM geometry is in CSS pixels. + const scale = window.devicePixelRatio || 1; + const left = Math.floor(rect.left * scale); + const top = Math.floor(rect.top * scale); + const right = Math.ceil(rect.right * scale); + const bottom = Math.ceil(rect.bottom * scale); + + if (right <= left || bottom <= top) { + return undefined; + } + + return { kind, left, top, right, bottom }; +} + +function regionElements(): Element[] { + const elements: Element[] = []; + + if (document.documentElement) { + elements.push(document.documentElement); + } + if (document.body) { + elements.push(document.body); + // Append via a loop: spreading a huge NodeList into push() overflows + // the engine's argument limit on very large documents. + for (const element of document.body.querySelectorAll("*")) { + elements.push(element); + } + } + + return elements; +} + +function observeRegionElements(elements: Element[]): void { + if (typeof ResizeObserver === "undefined") { + return; + } + + // Track size changes only for active region elements. DOM structure and style + // changes are covered by MutationObserver in startNonClientRegionTracking(). + resizeObserver ??= new ResizeObserver(scheduleUpdate); + const nextElements = new Set(elements); + + for (const element of observedElements) { + if (!nextElements.has(element)) { + resizeObserver.unobserve(element); + } + } + + for (const element of nextElements) { + if (!observedElements.has(element)) { + resizeObserver.observe(element); + } + } + + observedElements = nextElements; +} + +function updateNonClientRegions(): void { + updatePending = false; + + const elements = regionElements(); + const regions: NonClientRegion[] = []; + const activeElements: Element[] = []; + + for (const element of elements) { + const region = elementRegion(element); + if (region) { + regions.push(region); + activeElements.push(element); + } + } + + observeRegionElements(activeElements); + + const payload = JSON.stringify({ version: 1, regions }); + if (payload === lastPayload) { + // Avoid sending duplicate native messages during resize or style churn. + return; + } + + lastPayload = payload; + invoke("wails:non-client-region:" + payload); +} + +function scheduleUpdate(): void { + if (updatePending) { + return; + } + + // Batch region updates to animation frames so layout is measured once per frame. + updatePending = true; + window.requestAnimationFrame(updateNonClientRegions); +} + +function startNonClientRegionTracking(): void { + if (trackingStarted) { + return; + } + + trackingStarted = true; + // Send an initial empty or populated region list once the DOM is ready. + scheduleUpdate(); + + const mutationObserver = new MutationObserver(scheduleUpdate); + mutationObserver.observe(document.documentElement, { + attributes: true, + childList: true, + subtree: true, + }); + + window.addEventListener("resize", scheduleUpdate); + window.addEventListener("scroll", scheduleUpdate, true); + window.visualViewport?.addEventListener("resize", scheduleUpdate); + window.visualViewport?.addEventListener("scroll", scheduleUpdate); +} + +function tryStartNonClientRegionTracking(): boolean { + const os = window._wails.environment?.OS; + if (os === undefined) { + return false; + } + + const enabled = window._wails.flags?.nonClientRegionTracking; + if (os === "windows") { + if (enabled === true) { + whenReady(startNonClientRegionTracking); + } + return true; + } + + return true; +} + +if (hasDOM && !tryStartNonClientRegionTracking()) { + window.addEventListener(runtimeConfigReadyEvent, tryStartNonClientRegionTracking, { once: true }); +} diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/src/drag.ts b/v3/internal/runtime/desktop/@wailsio/runtime/src/drag.ts index db12127267d..f21b942355c 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/src/drag.ts +++ b/v3/internal/runtime/desktop/@wailsio/runtime/src/drag.ts @@ -159,6 +159,13 @@ function primaryDown(event: MouseEvent): void { } if (resizeEdge) { + // Do not arm edge resize from synthesized presses observed on move/up: + // entering the window with the primary button already held should not + // steal another gesture into a resize. + if (event.type !== 'mousedown') { + return; + } + // Ready to resize if the primary button was pressed for the first time. canResize = true; // Do not start drag operations when on resize edges. diff --git a/v3/internal/runtime/desktop/@wailsio/runtime/src/index.ts b/v3/internal/runtime/desktop/@wailsio/runtime/src/index.ts index f07e0cce471..bb18c181b0e 100644 --- a/v3/internal/runtime/desktop/@wailsio/runtime/src/index.ts +++ b/v3/internal/runtime/desktop/@wailsio/runtime/src/index.ts @@ -17,6 +17,7 @@ if (hasDOM) { import "./contextmenu.js"; import "./drag.js"; +import "./appregion.js"; // Re-export public API import * as Application from "./application.js"; diff --git a/v3/internal/runtime/runtime.go b/v3/internal/runtime/runtime.go index d35ff05524c..bbd165fc539 100644 --- a/v3/internal/runtime/runtime.go +++ b/v3/internal/runtime/runtime.go @@ -7,6 +7,7 @@ import ( ) var runtimeInit = `window._wails=window._wails||{};window._wails.flags=window._wails.flags||{};window.wails=window.wails||{};` +var runtimeConfigReady = `Promise.resolve().then(function(){window.dispatchEvent(new Event("wails:runtime-config-ready"));});` func Core(flags map[string]any) string { flagsStr := "" @@ -17,5 +18,5 @@ func Core(flags map[string]any) string { } } - return runtimeInit + flagsStr + invoke + environment + return runtimeInit + flagsStr + invoke + environment + runtimeConfigReady } diff --git a/v3/internal/webview2/pkg/edge/COREWEBVIEW2_MOUSE_EVENT_KIND.go b/v3/internal/webview2/pkg/edge/COREWEBVIEW2_MOUSE_EVENT_KIND.go new file mode 100644 index 00000000000..e610931b2f9 --- /dev/null +++ b/v3/internal/webview2/pkg/edge/COREWEBVIEW2_MOUSE_EVENT_KIND.go @@ -0,0 +1,26 @@ +//go:build windows + +package edge + +type COREWEBVIEW2_MOUSE_EVENT_KIND uint32 + +const ( + COREWEBVIEW2_MOUSE_EVENT_KIND_HORIZONTAL_WHEEL = 526 + COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_DOUBLE_CLICK = 515 + COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_DOWN = 513 + COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_UP = 514 + COREWEBVIEW2_MOUSE_EVENT_KIND_LEAVE = 675 + COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_DOUBLE_CLICK = 521 + COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_DOWN = 519 + COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_UP = 520 + COREWEBVIEW2_MOUSE_EVENT_KIND_MOVE = 512 + COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_DOUBLE_CLICK = 518 + COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_DOWN = 516 + COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_UP = 517 + COREWEBVIEW2_MOUSE_EVENT_KIND_WHEEL = 522 + COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOUBLE_CLICK = 525 + COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOWN = 523 + COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_UP = 524 + COREWEBVIEW2_MOUSE_EVENT_KIND_NON_CLIENT_RIGHT_BUTTON_DOWN = 164 + COREWEBVIEW2_MOUSE_EVENT_KIND_NON_CLIENT_RIGHT_BUTTON_UP = 165 +) diff --git a/v3/internal/webview2/pkg/edge/COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS.go b/v3/internal/webview2/pkg/edge/COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS.go new file mode 100644 index 00000000000..363edbae068 --- /dev/null +++ b/v3/internal/webview2/pkg/edge/COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS.go @@ -0,0 +1,16 @@ +//go:build windows + +package edge + +type COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS uint32 + +const ( + COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_NONE COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS = 0 + COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_LEFT_BUTTON COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS = 1 + COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_RIGHT_BUTTON COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS = 2 + COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_SHIFT COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS = 4 + COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_CONTROL COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS = 8 + COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_MIDDLE_BUTTON COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS = 16 + COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_X_BUTTON1 COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS = 32 + COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_X_BUTTON2 COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS = 64 +) diff --git a/v3/internal/webview2/pkg/edge/COREWEBVIEW2_NON_CLIENT_REGION_KIND.go b/v3/internal/webview2/pkg/edge/COREWEBVIEW2_NON_CLIENT_REGION_KIND.go new file mode 100644 index 00000000000..2cda60b0253 --- /dev/null +++ b/v3/internal/webview2/pkg/edge/COREWEBVIEW2_NON_CLIENT_REGION_KIND.go @@ -0,0 +1,14 @@ +//go:build windows + +package edge + +type COREWEBVIEW2_NON_CLIENT_REGION_KIND uint32 + +const ( + COREWEBVIEW2_NON_CLIENT_REGION_KIND_NOWHERE = 0 + COREWEBVIEW2_NON_CLIENT_REGION_KIND_CLIENT = 1 + COREWEBVIEW2_NON_CLIENT_REGION_KIND_CAPTION = 2 + COREWEBVIEW2_NON_CLIENT_REGION_KIND_MINIMIZE = 8 + COREWEBVIEW2_NON_CLIENT_REGION_KIND_MAXIMIZE = 9 + COREWEBVIEW2_NON_CLIENT_REGION_KIND_CLOSE = 20 +) diff --git a/v3/internal/webview2/pkg/edge/ICoreWebView2CompositionController.go b/v3/internal/webview2/pkg/edge/ICoreWebView2CompositionController.go new file mode 100644 index 00000000000..60295f90b3a --- /dev/null +++ b/v3/internal/webview2/pkg/edge/ICoreWebView2CompositionController.go @@ -0,0 +1,109 @@ +//go:build windows + +package edge + +import ( + "syscall" + "unsafe" +) + +type ICoreWebView2CompositionControllerVtbl struct { + _IUnknownVtbl + GetRootVisualTarget ComProc + PutRootVisualTarget ComProc + SendMouseInput ComProc + SendPointerInput ComProc + GetCursor ComProc + GetSystemCursorId ComProc + AddCursorChanged ComProc + RemoveCursorChanged ComProc +} + +type ICoreWebView2CompositionController struct { + Vtbl *ICoreWebView2CompositionControllerVtbl +} + +func (i *ICoreWebView2CompositionController) AddRef() uintptr { + ret, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) + + return ret +} + +func (i *ICoreWebView2CompositionController) Release() uintptr { + ret, _, _ := i.Vtbl.Release.Call(uintptr(unsafe.Pointer(i))) + + return ret +} + +func (i *ICoreWebView2CompositionController) GetICoreWebView2Controller() *ICoreWebView2Controller { + var result *ICoreWebView2Controller + + iidICoreWebView2Controller := NewGUID("{4D00C0D1-9434-4EB6-8078-8697A560334F}") + _, _, _ = i.Vtbl.QueryInterface.Call( + uintptr(unsafe.Pointer(i)), + uintptr(unsafe.Pointer(iidICoreWebView2Controller)), + uintptr(unsafe.Pointer(&result))) + + return result +} + +func (i *ICoreWebView2CompositionController) PutRootVisualTarget(target *IUnknown) error { + hr, _, _ := i.Vtbl.PutRootVisualTarget.Call( + uintptr(unsafe.Pointer(i)), + uintptr(unsafe.Pointer(target)), + ) + if int32(hr) < 0 { + return syscall.Errno(hr) + } + return nil +} + +func (i *ICoreWebView2CompositionController) SendMouseInput(eventKind COREWEBVIEW2_MOUSE_EVENT_KIND, virtualKeys COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS, mouseData uint32, point POINT) error { + hr, _, _ := i.Vtbl.SendMouseInput.Call( + uintptr(unsafe.Pointer(i)), + uintptr(eventKind), + uintptr(virtualKeys), + uintptr(mouseData), + point.uintptr(), + ) + if int32(hr) < 0 { + return syscall.Errno(hr) + } + return nil +} + +func (i *ICoreWebView2CompositionController) GetCursor() (HCURSOR, error) { + var cursor HCURSOR + hr, _, _ := i.Vtbl.GetCursor.Call( + uintptr(unsafe.Pointer(i)), + uintptr(unsafe.Pointer(&cursor)), + ) + if int32(hr) < 0 { + return 0, syscall.Errno(hr) + } + return cursor, nil +} + +func (i *ICoreWebView2CompositionController) GetSystemCursorId() (uint32, error) { + var cursorID uint32 + hr, _, _ := i.Vtbl.GetSystemCursorId.Call( + uintptr(unsafe.Pointer(i)), + uintptr(unsafe.Pointer(&cursorID)), + ) + if int32(hr) < 0 { + return 0, syscall.Errno(hr) + } + return cursorID, nil +} + +func (i *ICoreWebView2CompositionController) AddCursorChanged(eventHandler *iCoreWebView2CursorChangedEventHandler, token *_EventRegistrationToken) error { + hr, _, _ := i.Vtbl.AddCursorChanged.Call( + uintptr(unsafe.Pointer(i)), + uintptr(unsafe.Pointer(eventHandler)), + uintptr(unsafe.Pointer(token)), + ) + if int32(hr) < 0 { + return syscall.Errno(hr) + } + return nil +} diff --git a/v3/internal/webview2/pkg/edge/ICoreWebView2CompositionController4.go b/v3/internal/webview2/pkg/edge/ICoreWebView2CompositionController4.go new file mode 100644 index 00000000000..3b710281ede --- /dev/null +++ b/v3/internal/webview2/pkg/edge/ICoreWebView2CompositionController4.go @@ -0,0 +1,73 @@ +//go:build windows + +package edge + +import ( + "syscall" + "unsafe" + + "golang.org/x/sys/windows" +) + +type ICoreWebView2CompositionController4Vtbl struct { + _IUnknownVtbl + GetRootVisualTarget ComProc + PutRootVisualTarget ComProc + SendMouseInput ComProc + SendPointerInput ComProc + GetCursor ComProc + GetSystemCursorId ComProc + AddCursorChanged ComProc + RemoveCursorChanged ComProc + GetUIAProvider ComProc + DragEnter ComProc + DragLeave ComProc + DragOver ComProc + Drop ComProc + GetNonClientRegionAtPoint ComProc + QueryNonClientRegion ComProc + AddNonClientRegionChanged ComProc + RemoveNonClientRegionChanged ComProc +} + +type ICoreWebView2CompositionController4 struct { + Vtbl *ICoreWebView2CompositionController4Vtbl +} + +func (i *ICoreWebView2CompositionController4) AddRef() uintptr { + ret, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) + + return ret +} + +func (i *ICoreWebView2CompositionController4) Release() uintptr { + ret, _, _ := i.Vtbl.Release.Call(uintptr(unsafe.Pointer(i))) + + return ret +} + +func (i *ICoreWebView2CompositionController) GetICoreWebView2CompositionController4() *ICoreWebView2CompositionController4 { + var result *ICoreWebView2CompositionController4 + + iidICoreWebView2CompositionController4 := NewGUID("{7C367B9B-3D2B-450F-9E58-D61A20F486AA}") + _, _, _ = i.Vtbl.QueryInterface.Call( + uintptr(unsafe.Pointer(i)), + uintptr(unsafe.Pointer(iidICoreWebView2CompositionController4)), + uintptr(unsafe.Pointer(&result))) + + return result +} + +func (i *ICoreWebView2CompositionController4) GetNonClientRegionAtPoint(point POINT) (COREWEBVIEW2_NON_CLIENT_REGION_KIND, error) { + var value COREWEBVIEW2_NON_CLIENT_REGION_KIND + + hr, _, _ := i.Vtbl.GetNonClientRegionAtPoint.Call( + uintptr(unsafe.Pointer(i)), + point.uintptr(), + uintptr(unsafe.Pointer(&value)), + ) + if windows.Handle(hr) != windows.S_OK { + return 0, syscall.Errno(hr) + } + return value, nil +} diff --git a/v3/internal/webview2/pkg/edge/ICoreWebView2Controller.go b/v3/internal/webview2/pkg/edge/ICoreWebView2Controller.go index 08038b0b9fb..1625efb84a4 100644 --- a/v3/internal/webview2/pkg/edge/ICoreWebView2Controller.go +++ b/v3/internal/webview2/pkg/edge/ICoreWebView2Controller.go @@ -150,6 +150,14 @@ func (i *ICoreWebView2Controller) NotifyParentWindowPositionChanged() error { return nil } +func (i *ICoreWebView2Controller) Close() error { + hr, _, _ := i.vtbl.Close.Call(uintptr(unsafe.Pointer(i))) + if windows.Handle(hr) != windows.S_OK { + return windows.Errno(hr) + } + return nil +} + func (i *ICoreWebView2Controller) PutZoomFactor(zoomFactor float64) error { // put_ZoomFactor takes the double BY VALUE; the per-arch appendDoubleArg // helpers pass it correctly for the target ABI. diff --git a/v3/internal/webview2/pkg/edge/ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler.go b/v3/internal/webview2/pkg/edge/ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler.go new file mode 100644 index 00000000000..b9ac1587d1a --- /dev/null +++ b/v3/internal/webview2/pkg/edge/ICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler.go @@ -0,0 +1,50 @@ +//go:build windows + +package edge + +type iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerVtbl struct { + _IUnknownVtbl + Invoke ComProc +} + +type iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler struct { + vtbl *iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerVtbl + impl iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerImpl +} + +func iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerIUnknownQueryInterface(this *iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler, refiid, object uintptr) uintptr { + return this.impl.QueryInterface(refiid, object) +} + +func iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerIUnknownAddRef(this *iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler) uintptr { + return this.impl.AddRef() +} + +func iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerIUnknownRelease(this *iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler) uintptr { + return this.impl.Release() +} + +func iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerInvoke(this *iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler, errorCode uintptr, result *ICoreWebView2CompositionController) uintptr { + return this.impl.CreateCoreWebView2CompositionControllerCompleted(errorCode, result) +} + +type iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerImpl interface { + _IUnknownImpl + CreateCoreWebView2CompositionControllerCompleted(errorCode uintptr, result *ICoreWebView2CompositionController) uintptr +} + +var iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerFn = iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerVtbl{ + _IUnknownVtbl{ + NewComProc(iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerIUnknownQueryInterface), + NewComProc(iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerIUnknownAddRef), + NewComProc(iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerIUnknownRelease), + }, + NewComProc(iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerInvoke), +} + +func newICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler(impl iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerImpl) *iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler { + return &iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler{ + vtbl: &iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandlerFn, + impl: impl, + } +} diff --git a/v3/internal/webview2/pkg/edge/ICoreWebView2CursorChangedEventHandler.go b/v3/internal/webview2/pkg/edge/ICoreWebView2CursorChangedEventHandler.go new file mode 100644 index 00000000000..7c816d36639 --- /dev/null +++ b/v3/internal/webview2/pkg/edge/ICoreWebView2CursorChangedEventHandler.go @@ -0,0 +1,50 @@ +//go:build windows + +package edge + +type iCoreWebView2CursorChangedEventHandlerVtbl struct { + _IUnknownVtbl + Invoke ComProc +} + +type iCoreWebView2CursorChangedEventHandler struct { + vtbl *iCoreWebView2CursorChangedEventHandlerVtbl + impl iCoreWebView2CursorChangedEventHandlerImpl +} + +func iCoreWebView2CursorChangedEventHandlerIUnknownQueryInterface(this *iCoreWebView2CursorChangedEventHandler, refiid, object uintptr) uintptr { + return this.impl.QueryInterface(refiid, object) +} + +func iCoreWebView2CursorChangedEventHandlerIUnknownAddRef(this *iCoreWebView2CursorChangedEventHandler) uintptr { + return this.impl.AddRef() +} + +func iCoreWebView2CursorChangedEventHandlerIUnknownRelease(this *iCoreWebView2CursorChangedEventHandler) uintptr { + return this.impl.Release() +} + +func iCoreWebView2CursorChangedEventHandlerInvoke(this *iCoreWebView2CursorChangedEventHandler, sender *ICoreWebView2CompositionController, args *IUnknown) uintptr { + return this.impl.CursorChanged(sender, args) +} + +type iCoreWebView2CursorChangedEventHandlerImpl interface { + _IUnknownImpl + CursorChanged(sender *ICoreWebView2CompositionController, args *IUnknown) uintptr +} + +var iCoreWebView2CursorChangedEventHandlerFn = iCoreWebView2CursorChangedEventHandlerVtbl{ + _IUnknownVtbl{ + NewComProc(iCoreWebView2CursorChangedEventHandlerIUnknownQueryInterface), + NewComProc(iCoreWebView2CursorChangedEventHandlerIUnknownAddRef), + NewComProc(iCoreWebView2CursorChangedEventHandlerIUnknownRelease), + }, + NewComProc(iCoreWebView2CursorChangedEventHandlerInvoke), +} + +func newICoreWebView2CursorChangedEventHandler(impl iCoreWebView2CursorChangedEventHandlerImpl) *iCoreWebView2CursorChangedEventHandler { + return &iCoreWebView2CursorChangedEventHandler{ + vtbl: &iCoreWebView2CursorChangedEventHandlerFn, + impl: impl, + } +} diff --git a/v3/internal/webview2/pkg/edge/ICoreWebView2Environment3.go b/v3/internal/webview2/pkg/edge/ICoreWebView2Environment3.go new file mode 100644 index 00000000000..992278ee4c7 --- /dev/null +++ b/v3/internal/webview2/pkg/edge/ICoreWebView2Environment3.go @@ -0,0 +1,63 @@ +//go:build windows + +package edge + +import ( + "syscall" + "unsafe" + + "golang.org/x/sys/windows" +) + +type iCoreWebView2Environment3Vtbl struct { + _IUnknownVtbl + CreateCoreWebView2Controller ComProc + CreateWebResourceResponse ComProc + GetBrowserVersionString ComProc + AddNewBrowserVersionAvailable ComProc + RemoveNewBrowserVersionAvailable ComProc + CreateWebResourceRequest ComProc + CreateCoreWebView2CompositionController ComProc + CreateCoreWebView2PointerInfo ComProc +} + +type ICoreWebView2Environment3 struct { + vtbl *iCoreWebView2Environment3Vtbl +} + +func (e *ICoreWebView2Environment3) AddRef() uintptr { + ret, _, _ := e.vtbl.AddRef.Call(uintptr(unsafe.Pointer(e))) + + return ret +} + +func (e *ICoreWebView2Environment3) Release() uintptr { + ret, _, _ := e.vtbl.Release.Call(uintptr(unsafe.Pointer(e))) + + return ret +} + +func (e *ICoreWebView2Environment) GetICoreWebView2Environment3() *ICoreWebView2Environment3 { + var result *ICoreWebView2Environment3 + + iidICoreWebView2Environment3 := NewGUID("{80a22ae3-be7c-4ce2-afe1-5a50056cdeeb}") + _, _, _ = e.vtbl.QueryInterface.Call( + uintptr(unsafe.Pointer(e)), + uintptr(unsafe.Pointer(iidICoreWebView2Environment3)), + uintptr(unsafe.Pointer(&result))) + + return result +} + +func (e *ICoreWebView2Environment3) CreateCoreWebView2CompositionController(parentWindow uintptr, handler *iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler) error { + hr, _, _ := e.vtbl.CreateCoreWebView2CompositionController.Call( + uintptr(unsafe.Pointer(e)), + parentWindow, + uintptr(unsafe.Pointer(handler)), + ) + if windows.Handle(hr) != windows.S_OK { + return syscall.Errno(hr) + } + + return nil +} diff --git a/v3/internal/webview2/pkg/edge/ICoreWebView2NavigationStartingEventHandler.go b/v3/internal/webview2/pkg/edge/ICoreWebView2NavigationStartingEventHandler.go new file mode 100644 index 00000000000..7cf3c32b9f6 --- /dev/null +++ b/v3/internal/webview2/pkg/edge/ICoreWebView2NavigationStartingEventHandler.go @@ -0,0 +1,58 @@ +//go:build windows + +package edge + +import "unsafe" + +type _ICoreWebView2NavigationStartingEventHandlerVtbl struct { + _IUnknownVtbl + Invoke ComProc +} + +type ICoreWebView2NavigationStartingEventHandler struct { + vtbl *_ICoreWebView2NavigationStartingEventHandlerVtbl + impl _ICoreWebView2NavigationStartingEventHandlerImpl +} + +func (i *ICoreWebView2NavigationStartingEventHandler) AddRef() uintptr { + ret, _, _ := i.vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) + + return ret +} + +func _ICoreWebView2NavigationStartingEventHandlerIUnknownQueryInterface(this *ICoreWebView2NavigationStartingEventHandler, refiid, object uintptr) uintptr { + return this.impl.QueryInterface(refiid, object) +} + +func _ICoreWebView2NavigationStartingEventHandlerIUnknownAddRef(this *ICoreWebView2NavigationStartingEventHandler) uintptr { + return this.impl.AddRef() +} + +func _ICoreWebView2NavigationStartingEventHandlerIUnknownRelease(this *ICoreWebView2NavigationStartingEventHandler) uintptr { + return this.impl.Release() +} + +func _ICoreWebView2NavigationStartingEventHandlerInvoke(this *ICoreWebView2NavigationStartingEventHandler, sender *ICoreWebView2, args *IUnknown) uintptr { + return this.impl.NavigationStarting(sender, args) +} + +type _ICoreWebView2NavigationStartingEventHandlerImpl interface { + _IUnknownImpl + NavigationStarting(sender *ICoreWebView2, args *IUnknown) uintptr +} + +var _ICoreWebView2NavigationStartingEventHandlerFn = _ICoreWebView2NavigationStartingEventHandlerVtbl{ + _IUnknownVtbl{ + NewComProc(_ICoreWebView2NavigationStartingEventHandlerIUnknownQueryInterface), + NewComProc(_ICoreWebView2NavigationStartingEventHandlerIUnknownAddRef), + NewComProc(_ICoreWebView2NavigationStartingEventHandlerIUnknownRelease), + }, + NewComProc(_ICoreWebView2NavigationStartingEventHandlerInvoke), +} + +func newICoreWebView2NavigationStartingEventHandler(impl _ICoreWebView2NavigationStartingEventHandlerImpl) *ICoreWebView2NavigationStartingEventHandler { + return &ICoreWebView2NavigationStartingEventHandler{ + vtbl: &_ICoreWebView2NavigationStartingEventHandlerFn, + impl: impl, + } +} diff --git a/v3/internal/webview2/pkg/edge/ICoreWebView2Settings9.go b/v3/internal/webview2/pkg/edge/ICoreWebView2Settings9.go new file mode 100644 index 00000000000..e80ba2e0950 --- /dev/null +++ b/v3/internal/webview2/pkg/edge/ICoreWebView2Settings9.go @@ -0,0 +1,95 @@ +//go:build windows + +package edge + +import ( + "syscall" + "unsafe" + + "golang.org/x/sys/windows" +) + +type ICoreWebView2Settings9Vtbl struct { + _IUnknownVtbl + GetIsScriptEnabled ComProc + PutIsScriptEnabled ComProc + GetIsWebMessageEnabled ComProc + PutIsWebMessageEnabled ComProc + GetAreDefaultScriptDialogsEnabled ComProc + PutAreDefaultScriptDialogsEnabled ComProc + GetIsStatusBarEnabled ComProc + PutIsStatusBarEnabled ComProc + GetAreDevToolsEnabled ComProc + PutAreDevToolsEnabled ComProc + GetAreDefaultContextMenusEnabled ComProc + PutAreDefaultContextMenusEnabled ComProc + GetAreHostObjectsAllowed ComProc + PutAreHostObjectsAllowed ComProc + GetIsZoomControlEnabled ComProc + PutIsZoomControlEnabled ComProc + GetIsBuiltInErrorPageEnabled ComProc + PutIsBuiltInErrorPageEnabled ComProc + GetUserAgent ComProc + PutUserAgent ComProc + GetAreBrowserAcceleratorKeysEnabled ComProc + PutAreBrowserAcceleratorKeysEnabled ComProc + GetIsPasswordAutosaveEnabled ComProc + PutIsPasswordAutosaveEnabled ComProc + GetIsGeneralAutofillEnabled ComProc + PutIsGeneralAutofillEnabled ComProc + GetIsPinchZoomEnabled ComProc + PutIsPinchZoomEnabled ComProc + GetIsSwipeNavigationEnabled ComProc + PutIsSwipeNavigationEnabled ComProc + GetHiddenPdfToolbarItems ComProc + PutHiddenPdfToolbarItems ComProc + GetIsReputationCheckingRequired ComProc + PutIsReputationCheckingRequired ComProc + GetIsNonClientRegionSupportEnabled ComProc + PutIsNonClientRegionSupportEnabled ComProc +} + +type ICoreWebView2Settings9 struct { + Vtbl *ICoreWebView2Settings9Vtbl +} + +func (i *ICoreWebView2Settings9) AddRef() uintptr { + refCounter, _, _ := i.Vtbl.AddRef.Call(uintptr(unsafe.Pointer(i))) + return refCounter +} + +func (i *ICoreWebViewSettings) GetICoreWebView2Settings9() *ICoreWebView2Settings9 { + var result *ICoreWebView2Settings9 + + iidICoreWebView2Settings9 := NewGUID("{0528a73b-e92d-49f4-927a-e547dddaa37d}") + _, _, _ = i.vtbl.QueryInterface.Call( + uintptr(unsafe.Pointer(i)), + uintptr(unsafe.Pointer(iidICoreWebView2Settings9)), + uintptr(unsafe.Pointer(&result))) + + return result +} + +func (i *ICoreWebView2Settings9) GetIsNonClientRegionSupportEnabled() (bool, error) { + var value int32 + + hr, _, _ := i.Vtbl.GetIsNonClientRegionSupportEnabled.Call( + uintptr(unsafe.Pointer(i)), + uintptr(unsafe.Pointer(&value)), + ) + if windows.Handle(hr) != windows.S_OK { + return false, syscall.Errno(hr) + } + return value != 0, nil +} + +func (i *ICoreWebView2Settings9) PutIsNonClientRegionSupportEnabled(value bool) error { + hr, _, _ := i.Vtbl.PutIsNonClientRegionSupportEnabled.Call( + uintptr(unsafe.Pointer(i)), + uintptr(boolToInt(value)), + ) + if windows.Handle(hr) != windows.S_OK { + return syscall.Errno(hr) + } + return nil +} diff --git a/v3/internal/webview2/pkg/edge/IDCompositionDevice.go b/v3/internal/webview2/pkg/edge/IDCompositionDevice.go new file mode 100644 index 00000000000..f6910df3098 --- /dev/null +++ b/v3/internal/webview2/pkg/edge/IDCompositionDevice.go @@ -0,0 +1,86 @@ +//go:build windows + +package edge + +import ( + "syscall" + "unsafe" + + "golang.org/x/sys/windows" +) + +var procDCompositionCreateDevice2 = windows.NewLazySystemDLL("dcomp.dll").NewProc("DCompositionCreateDevice2") + +type iDCompositionDeviceVtbl struct { + _IUnknownVtbl + Commit ComProc + WaitForCommitCompletion ComProc + GetFrameStatistics ComProc + CreateTargetForHwnd ComProc + CreateVisual ComProc +} + +type iDCompositionDevice struct { + vtbl *iDCompositionDeviceVtbl +} + +func (d *iDCompositionDevice) AddRef() uintptr { + ret, _, _ := d.vtbl.AddRef.Call(uintptr(unsafe.Pointer(d))) + + return ret +} + +func (d *iDCompositionDevice) Release() uintptr { + ret, _, _ := d.vtbl.Release.Call(uintptr(unsafe.Pointer(d))) + + return ret +} + +func dCompositionCreateDevice2() (*iDCompositionDevice, error) { + var device *iDCompositionDevice + iidIDCompositionDevice := NewGUID("{C37EA93A-E7AA-450D-B16F-9746CB0407F3}") + + hr, _, _ := procDCompositionCreateDevice2.Call( + 0, + uintptr(unsafe.Pointer(iidIDCompositionDevice)), + uintptr(unsafe.Pointer(&device)), + ) + if windows.Handle(hr) != windows.S_OK { + return nil, syscall.Errno(hr) + } + return device, nil +} + +func (d *iDCompositionDevice) CreateTargetForHwnd(hwnd uintptr, topmost bool) (*iDCompositionTarget, error) { + var target *iDCompositionTarget + hr, _, _ := d.vtbl.CreateTargetForHwnd.Call( + uintptr(unsafe.Pointer(d)), + hwnd, + uintptr(boolToInt(topmost)), + uintptr(unsafe.Pointer(&target)), + ) + if windows.Handle(hr) != windows.S_OK { + return nil, syscall.Errno(hr) + } + return target, nil +} + +func (d *iDCompositionDevice) CreateVisual() (*iDCompositionVisual, error) { + var visual *iDCompositionVisual + hr, _, _ := d.vtbl.CreateVisual.Call( + uintptr(unsafe.Pointer(d)), + uintptr(unsafe.Pointer(&visual)), + ) + if windows.Handle(hr) != windows.S_OK { + return nil, syscall.Errno(hr) + } + return visual, nil +} + +func (d *iDCompositionDevice) Commit() error { + hr, _, _ := d.vtbl.Commit.Call(uintptr(unsafe.Pointer(d))) + if windows.Handle(hr) != windows.S_OK { + return syscall.Errno(hr) + } + return nil +} diff --git a/v3/internal/webview2/pkg/edge/IDCompositionTarget.go b/v3/internal/webview2/pkg/edge/IDCompositionTarget.go new file mode 100644 index 00000000000..b5b1c131408 --- /dev/null +++ b/v3/internal/webview2/pkg/edge/IDCompositionTarget.go @@ -0,0 +1,42 @@ +//go:build windows + +package edge + +import ( + "syscall" + "unsafe" + + "golang.org/x/sys/windows" +) + +type iDCompositionTargetVtbl struct { + _IUnknownVtbl + SetRoot ComProc +} + +type iDCompositionTarget struct { + vtbl *iDCompositionTargetVtbl +} + +func (t *iDCompositionTarget) AddRef() uintptr { + ret, _, _ := t.vtbl.AddRef.Call(uintptr(unsafe.Pointer(t))) + + return ret +} + +func (t *iDCompositionTarget) Release() uintptr { + ret, _, _ := t.vtbl.Release.Call(uintptr(unsafe.Pointer(t))) + + return ret +} + +func (t *iDCompositionTarget) SetRoot(visual *iDCompositionVisual) error { + hr, _, _ := t.vtbl.SetRoot.Call( + uintptr(unsafe.Pointer(t)), + uintptr(unsafe.Pointer(visual)), + ) + if windows.Handle(hr) != windows.S_OK { + return syscall.Errno(hr) + } + return nil +} diff --git a/v3/internal/webview2/pkg/edge/IDCompositionVisual.go b/v3/internal/webview2/pkg/edge/IDCompositionVisual.go new file mode 100644 index 00000000000..9e7444ab18d --- /dev/null +++ b/v3/internal/webview2/pkg/edge/IDCompositionVisual.go @@ -0,0 +1,25 @@ +//go:build windows + +package edge + +import "unsafe" + +type iDCompositionVisualVtbl struct { + _IUnknownVtbl +} + +type iDCompositionVisual struct { + vtbl *iDCompositionVisualVtbl +} + +func (v *iDCompositionVisual) AddRef() uintptr { + ret, _, _ := v.vtbl.AddRef.Call(uintptr(unsafe.Pointer(v))) + + return ret +} + +func (v *iDCompositionVisual) Release() uintptr { + ret, _, _ := v.vtbl.Release.Call(uintptr(unsafe.Pointer(v))) + + return ret +} diff --git a/v3/internal/webview2/pkg/edge/chromium.go b/v3/internal/webview2/pkg/edge/chromium.go index 2440d3e417a..7b3d39b02b7 100644 --- a/v3/internal/webview2/pkg/edge/chromium.go +++ b/v3/internal/webview2/pkg/edge/chromium.go @@ -56,26 +56,34 @@ type Chromium struct { } controller *ICoreWebView2Controller + compositionController *ICoreWebView2CompositionController + compositionController4 *ICoreWebView2CompositionController4 webview *ICoreWebView2 inited uintptr envCompleted *iCoreWebView2CreateCoreWebView2EnvironmentCompletedHandler controllerCompleted *iCoreWebView2CreateCoreWebView2ControllerCompletedHandler + compositionControllerCompleted *iCoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler webMessageReceived *iCoreWebView2WebMessageReceivedEventHandler containsFullScreenElementChanged *ICoreWebView2ContainsFullScreenElementChangedEventHandler permissionRequested *iCoreWebView2PermissionRequestedEventHandler webResourceRequested *iCoreWebView2WebResourceRequestedEventHandler acceleratorKeyPressed *ICoreWebView2AcceleratorKeyPressedEventHandler + cursorChanged *iCoreWebView2CursorChangedEventHandler + navigationStarting *ICoreWebView2NavigationStartingEventHandler navigationCompleted *ICoreWebView2NavigationCompletedEventHandler processFailed *ICoreWebView2ProcessFailedEventHandler environment *ICoreWebView2Environment webview2RuntimeVersion string + compositionHost *compositionHost // Settings - Debug bool - DataPath string - BrowserPath string - AdditionalBrowserArgs []string + Debug bool + DataPath string + BrowserPath string + AdditionalBrowserArgs []string + NonClientRegionSupportEnabled bool + CompositionControllerEnabled bool // permissions permissions map[CoreWebView2PermissionKind]CoreWebView2PermissionState @@ -85,10 +93,12 @@ type Chromium struct { MessageCallback func(message string, sender *ICoreWebView2, args *ICoreWebView2WebMessageReceivedEventArgs) MessageWithAdditionalObjectsCallback func(message string, sender *ICoreWebView2, args *ICoreWebView2WebMessageReceivedEventArgs) WebResourceRequestedCallback func(request *ICoreWebView2WebResourceRequest, args *ICoreWebView2WebResourceRequestedEventArgs) + NavigationStartingCallback func(sender *ICoreWebView2) NavigationCompletedCallback func(sender *ICoreWebView2, args *ICoreWebView2NavigationCompletedEventArgs) ProcessFailedCallback func(sender *ICoreWebView2, args *ICoreWebView2ProcessFailedEventArgs) ContainsFullScreenElementChangedCallback func(sender *ICoreWebView2, args *ICoreWebView2ContainsFullScreenElementChangedEventArgs) AcceleratorKeyCallback func(uint) bool + CursorChangedCallback func(cursor HCURSOR, systemCursorID uint32) // Error handling globalErrorCallback func(error) @@ -115,10 +125,13 @@ func NewChromium() *Chromium { */ e.envCompleted = newICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler(e) e.controllerCompleted = newICoreWebView2CreateCoreWebView2ControllerCompletedHandler(e) + e.compositionControllerCompleted = newICoreWebView2CreateCoreWebView2CompositionControllerCompletedHandler(e) e.webMessageReceived = newICoreWebView2WebMessageReceivedEventHandler(e) e.permissionRequested = newICoreWebView2PermissionRequestedEventHandler(e) e.webResourceRequested = newICoreWebView2WebResourceRequestedEventHandler(e) e.acceleratorKeyPressed = newICoreWebView2AcceleratorKeyPressedEventHandler(e) + e.cursorChanged = newICoreWebView2CursorChangedEventHandler(e) + e.navigationStarting = newICoreWebView2NavigationStartingEventHandler(e) e.navigationCompleted = newICoreWebView2NavigationCompletedEventHandler(e) e.processFailed = newICoreWebView2ProcessFailedEventHandler(e) e.containsFullScreenElementChanged = newICoreWebView2ContainsFullScreenElementChangedEventHandler(e) @@ -158,6 +171,12 @@ func (e *Chromium) SetErrorCallback(callback func(error)) { } } +func (e *Chromium) SetCursorChangedCallback(callback func(cursor HCURSOR, systemCursorID uint32)) { + if callback != nil { + e.CursorChangedCallback = callback + } +} + func (e *Chromium) Embed(hwnd uintptr) bool { var err error @@ -328,10 +347,18 @@ func (e *Chromium) EnvironmentCompleted(res uintptr, env *ICoreWebView2Environme log.Printf("[WebView2] Environment created successfully\n") - env.vtbl.AddRef.Call(uintptr(unsafe.Pointer(env))) + env.AddRef() e.environment = env - err := env.CreateCoreWebView2Controller(e.hwnd, e.controllerCompleted) + var err error + if !e.CompositionControllerEnabled { + err = env.CreateCoreWebView2Controller(e.hwnd, e.controllerCompleted) + } else { + err = e.createCoreWebView2CompositionController(env) + if err != nil { + err = e.fallbackToCoreWebView2Controller(fmt.Errorf("composition controller setup failed: %w", err)) + } + } if err != nil { e.errorCallback(err) } @@ -343,29 +370,130 @@ func (e *Chromium) CreateCoreWebView2ControllerCompleted(res uintptr, controller e.errorCallback(fmt.Errorf("error creating controller with %08x: %s", res, syscall.Errno(res))) } + return e.initializeController(controller) +} + +func (e *Chromium) createCoreWebView2CompositionController(env *ICoreWebView2Environment) error { + env3 := env.GetICoreWebView2Environment3() + if env3 == nil { + return UnsupportedCapabilityError + } + defer env3.Release() + + host, err := newCompositionHost(e.hwnd) + if err != nil { + return err + } + e.compositionHost = host + + return env3.CreateCoreWebView2CompositionController(e.hwnd, e.compositionControllerCompleted) +} + +func (e *Chromium) CreateCoreWebView2CompositionControllerCompleted(res uintptr, compositionController *ICoreWebView2CompositionController) uintptr { + if int32(res) < 0 { + if err := e.fallbackToCoreWebView2Controller(fmt.Errorf("error creating composition controller with %08x: %s", res, syscall.Errno(res))); err != nil { + e.errorCallback(err) + } + return 0 + } + + if compositionController == nil { + if err := e.fallbackToCoreWebView2Controller(fmt.Errorf("composition controller completed without a controller")); err != nil { + e.errorCallback(err) + } + return 0 + } + + compositionController.AddRef() + e.compositionController = compositionController + e.compositionController4 = compositionController.GetICoreWebView2CompositionController4() + + if err := e.compositionHost.attachController(e.compositionController); err != nil { + if fallbackErr := e.fallbackToCoreWebView2Controller(fmt.Errorf("attaching composition controller failed: %w", err)); fallbackErr != nil { + e.errorCallback(fallbackErr) + } + return 0 + } + + controller := compositionController.GetICoreWebView2Controller() + if controller == nil { + if err := e.fallbackToCoreWebView2Controller(fmt.Errorf("error getting controller from composition controller")); err != nil { + e.errorCallback(err) + } + return 0 + } + + return e.initializeController(controller) +} + +func (e *Chromium) fallbackToCoreWebView2Controller(reason error) error { + log.Printf("[WebView2] Composition hosting unavailable, falling back to HWND controller: %v\n", reason) + + e.releaseCompositionController() + e.releaseCompositionHost() + e.CompositionControllerEnabled = false + + if e.environment == nil { + return fmt.Errorf("cannot fall back to WebView2 HWND controller without an environment: %w", reason) + } + if err := e.environment.CreateCoreWebView2Controller(e.hwnd, e.controllerCompleted); err != nil { + return fmt.Errorf("composition hosting failed (%v), and HWND controller fallback failed: %w", reason, err) + } + return nil +} + +func (e *Chromium) releaseCompositionController() { + if e.compositionController4 != nil { + e.compositionController4.Release() + e.compositionController4 = nil + } + if e.compositionController != nil { + if controller := e.compositionController.GetICoreWebView2Controller(); controller != nil { + _ = controller.Close() + controller.Release() + } + e.compositionController.Release() + e.compositionController = nil + } +} + +func (e *Chromium) releaseCompositionHost() { + if e.compositionHost != nil { + e.compositionHost.release() + e.compositionHost = nil + } +} + +func (e *Chromium) initializeController(controller *ICoreWebView2Controller) uintptr { var err error - controller.vtbl.AddRef.Call(uintptr(unsafe.Pointer(controller))) + controller.AddRef() e.controller = controller - // Try to get ICoreWebView2Controller3 interface for better performance + // Try to get ICoreWebView2Controller3 interface for better performance. + // Keep composition-hosted WebViews on WebView2-managed scale detection: + // the DirectComposition surface is owned by WebView2, and manually + // reasserting RasterizationScale during monitor transitions can leave that + // surface black after DPI increases. if controller3 := e.controller.GetICoreWebView2Controller3(); controller3 != nil { - // Use raw pixels mode for better performance during resize - if err := controller3.PutBoundsMode(COREWEBVIEW2_BOUNDS_MODE_USE_RAW_PIXELS); err != nil { - e.errorCallback(err) - } + if !e.CompositionControllerEnabled { + // Use raw pixels mode for better performance during resize. + if err := controller3.PutBoundsMode(COREWEBVIEW2_BOUNDS_MODE_USE_RAW_PIXELS); err != nil { + e.errorCallback(err) + } - // ShouldDetectMonitorScaleChanges is deliberately left at its default - // (enabled): WebView2 tracks monitor DPI changes and updates its own - // rasterization scale. This module previously disabled it and left the - // scale to the host's WM_DPICHANGED handling, but an externally - // written scale races the browser process's internal display - // bookkeeping during a mixed-DPI monitor cross — the browser can land - // on a degenerate scale(0,0) compositor transform, which kills the - // GPU process on every frame until the browser process itself exits - // (wailsapp/wails#5732). Detection stays on so the scale has exactly - // one writer, on the code path every mainstream embedder exercises; - // bounds remain raw pixels, which is orthogonal. + // ShouldDetectMonitorScaleChanges is deliberately left at its default + // (enabled): WebView2 tracks monitor DPI changes and updates its own + // rasterization scale. This module previously disabled it and left the + // scale to the host's WM_DPICHANGED handling, but an externally + // written scale races the browser process's internal display + // bookkeeping during a mixed-DPI monitor cross — the browser can land + // on a degenerate scale(0,0) compositor transform, which kills the + // GPU process on every frame until the browser process itself exits + // (wailsapp/wails#5732). Detection stays on so the scale has exactly + // one writer, on the code path every mainstream embedder exercises; + // bounds remain raw pixels, which is orthogonal. + } } var token _EventRegistrationToken e.webview, err = e.controller.GetCoreWebView2() @@ -373,7 +501,14 @@ func (e *Chromium) CreateCoreWebView2ControllerCompleted(res uintptr, controller e.errorCallback(err) } - e.webview.vtbl.AddRef.Call(uintptr(unsafe.Pointer(e.webview))) + e.webview.AddRef() + if e.NonClientRegionSupportEnabled { + if err := e.PutIsNonClientRegionSupportEnabled(true); err != nil { + if !errors.Is(err, UnsupportedCapabilityError) { + e.errorCallback(err) + } + } + } err = e.webview.AddWebMessageReceived(e.webMessageReceived, &token) if err != nil { e.errorCallback(err) @@ -386,6 +521,10 @@ func (e *Chromium) CreateCoreWebView2ControllerCompleted(res uintptr, controller if err != nil { e.errorCallback(err) } + err = e.webview.AddNavigationStarting(e.navigationStarting, &token) + if err != nil { + e.errorCallback(err) + } err = e.webview.AddNavigationCompleted(e.navigationCompleted, &token) if err != nil { e.errorCallback(err) @@ -398,11 +537,16 @@ func (e *Chromium) CreateCoreWebView2ControllerCompleted(res uintptr, controller if err != nil { e.errorCallback(err) } - err = e.controller.AddAcceleratorKeyPressed(e.acceleratorKeyPressed, &token) if err != nil { e.errorCallback(err) } + if e.compositionController != nil { + err = e.compositionController.AddCursorChanged(e.cursorChanged, &token) + if err != nil { + e.errorCallback(err) + } + } atomic.StoreUintptr(&e.inited, 1) @@ -416,6 +560,27 @@ func (e *Chromium) ContainsFullScreenElementChanged(sender *ICoreWebView2, args return 0 } +func (e *Chromium) CursorChanged(sender *ICoreWebView2CompositionController, _ *IUnknown) uintptr { + if e.CursorChangedCallback == nil { + return 0 + } + + cursor, err := sender.GetCursor() + if err != nil { + e.errorCallback(err) + return 0 + } + + systemCursorID, err := sender.GetSystemCursorId() + if err != nil { + e.errorCallback(err) + return 0 + } + + e.CursorChangedCallback(cursor, systemCursorID) + return 0 +} + func (e *Chromium) MessageReceived(sender *ICoreWebView2, args *ICoreWebView2WebMessageReceivedEventArgs) uintptr { message, err := args.TryGetWebMessageAsString() if err != nil { @@ -581,6 +746,13 @@ func boolToInt(input bool) int { return 0 } +func (e *Chromium) NavigationStarting(sender *ICoreWebView2, _ *IUnknown) uintptr { + if e.NavigationStartingCallback != nil { + e.NavigationStartingCallback(sender) + } + return 0 +} + func (e *Chromium) NavigationCompleted(sender *ICoreWebView2, args *ICoreWebView2NavigationCompletedEventArgs) uintptr { if e.NavigationCompletedCallback != nil { e.NavigationCompletedCallback(sender, args) @@ -595,6 +767,19 @@ func (e *Chromium) ProcessFailed(sender *ICoreWebView2, args *ICoreWebView2Proce return 0 } +func (e *Chromium) Bounds() *Rect { + if e == nil || e.controller == nil { + return nil + } + + rect, err := e.controller.GetBounds() + if err != nil { + e.errorCallback(err) + return nil + } + return rect +} + func (e *Chromium) NotifyParentWindowPositionChanged() error { //It looks like the wndproc function is called before the controller initialization is complete. //Because of this the controller is nil @@ -643,6 +828,16 @@ func (e *Chromium) HasCapability(c Capability) bool { return HasCapability(e.webview2RuntimeVersion, c) } +func (e *Chromium) CompositionControllerReady() bool { + return e != nil && e.compositionController != nil +} + +func (e *Chromium) NonClientRegionHitTestReady() bool { + return e != nil && + e.compositionController4 != nil && + HasCapability(e.webview2RuntimeVersion, NonClientRegion) +} + func (e *Chromium) GetIsSwipeNavigationEnabled() (bool, error) { if !HasCapability(e.webview2RuntimeVersion, SwipeNavigation) { return false, UnsupportedCapabilityError @@ -711,6 +906,46 @@ func (e *Chromium) PutIsSwipeNavigationEnabled(enabled bool) error { return nil } +func (e *Chromium) PutIsNonClientRegionSupportEnabled(enabled bool) error { + if !HasCapability(e.webview2RuntimeVersion, NonClientRegion) { + return UnsupportedCapabilityError + } + webview2Settings, err := e.webview.GetSettings() + if err != nil { + return err + } + webview2Settings9 := webview2Settings.GetICoreWebView2Settings9() + if webview2Settings9 == nil { + return UnsupportedCapabilityError + } + return webview2Settings9.PutIsNonClientRegionSupportEnabled(enabled) +} + +func (e *Chromium) GetNonClientRegionAtPoint(x, y int32) (COREWEBVIEW2_NON_CLIENT_REGION_KIND, bool, error) { + if !e.NonClientRegionHitTestReady() { + return COREWEBVIEW2_NON_CLIENT_REGION_KIND_NOWHERE, false, nil + } + + region, err := e.compositionController4.GetNonClientRegionAtPoint(POINT{X: x, Y: y}) + if err != nil { + return COREWEBVIEW2_NON_CLIENT_REGION_KIND_NOWHERE, false, err + } + return region, true, nil +} + +func (e *Chromium) SendMouseInput( + eventKind COREWEBVIEW2_MOUSE_EVENT_KIND, + virtualKeys COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS, + mouseData uint32, + x, y int, +) error { + if !e.CompositionControllerReady() { + return errors.New("webview2 composition controller is not initialized") + } + + return e.compositionController.SendMouseInput(eventKind, virtualKeys, mouseData, POINT{X: int32(x), Y: int32(y)}) +} + func (e *Chromium) AllowExternalDrag(allow bool) error { if !HasCapability(e.webview2RuntimeVersion, AllowExternalDrop) { return UnsupportedCapabilityError diff --git a/v3/internal/webview2/pkg/edge/com.go b/v3/internal/webview2/pkg/edge/com.go index 72cb64d9d12..43b1807f9ba 100644 --- a/v3/internal/webview2/pkg/edge/com.go +++ b/v3/internal/webview2/pkg/edge/com.go @@ -39,6 +39,11 @@ type IUnknownImpl interface { type POINT struct { X, Y int32 } + +func (p POINT) uintptr() uintptr { + return uintptr(uint32(p.X)) | uintptr(uint64(uint32(p.Y))<<32) +} + type RECT struct { Left int32 Top int32 diff --git a/v3/internal/webview2/pkg/edge/composition_host.go b/v3/internal/webview2/pkg/edge/composition_host.go new file mode 100644 index 00000000000..7d91d96e37d --- /dev/null +++ b/v3/internal/webview2/pkg/edge/composition_host.go @@ -0,0 +1,68 @@ +//go:build windows + +package edge + +import ( + "errors" + "unsafe" +) + +type compositionHost struct { + device *iDCompositionDevice + target *iDCompositionTarget + visual *iDCompositionVisual +} + +func newCompositionHost(hwnd uintptr) (*compositionHost, error) { + device, err := dCompositionCreateDevice2() + if err != nil { + return nil, err + } + target, err := device.CreateTargetForHwnd(hwnd, true) + if err != nil { + device.Release() + return nil, err + } + visual, err := device.CreateVisual() + if err != nil { + target.Release() + device.Release() + return nil, err + } + return &compositionHost{ + device: device, + target: target, + visual: visual, + }, nil +} + +func (h *compositionHost) attachController(controller *ICoreWebView2CompositionController) error { + if h == nil || h.device == nil || h.target == nil || h.visual == nil || controller == nil { + return errors.New("direct composition host is not initialized") + } + if err := controller.PutRootVisualTarget((*IUnknown)(unsafe.Pointer(h.visual))); err != nil { + return err + } + if err := h.target.SetRoot(h.visual); err != nil { + return err + } + return h.device.Commit() +} + +func (h *compositionHost) release() { + if h == nil { + return + } + if h.visual != nil { + h.visual.Release() + h.visual = nil + } + if h.target != nil { + h.target.Release() + h.target = nil + } + if h.device != nil { + h.device.Release() + h.device = nil + } +} diff --git a/v3/internal/webview2/pkg/edge/corewebview2.go b/v3/internal/webview2/pkg/edge/corewebview2.go index d99d2825954..4c0cf013c55 100644 --- a/v3/internal/webview2/pkg/edge/corewebview2.go +++ b/v3/internal/webview2/pkg/edge/corewebview2.go @@ -209,6 +209,19 @@ func (i *ICoreWebView2) AddContainsFullScreenElementChanged(eventHandler *ICoreW return nil } +func (i *ICoreWebView2) AddNavigationStarting(eventHandler *ICoreWebView2NavigationStartingEventHandler, token *_EventRegistrationToken) error { + hr, _, _ := i.vtbl.AddNavigationStarting.Call( + uintptr(unsafe.Pointer(i)), + uintptr(unsafe.Pointer(eventHandler)), + uintptr(unsafe.Pointer(token)), + ) + if windows.Handle(hr) != windows.S_OK { + return windows.Errno(hr) + } + + return nil +} + func (i *ICoreWebView2) AddNavigationCompleted(eventHandler *ICoreWebView2NavigationCompletedEventHandler, token *_EventRegistrationToken) error { hr, _, _ := i.vtbl.AddNavigationCompleted.Call( uintptr(unsafe.Pointer(i)), @@ -434,6 +447,18 @@ type ICoreWebView2Environment struct { vtbl *iCoreWebView2EnvironmentVtbl } +func (e *ICoreWebView2Environment) AddRef() uintptr { + ret, _, _ := e.vtbl.AddRef.Call(uintptr(unsafe.Pointer(e))) + + return ret +} + +func (e *ICoreWebView2Environment) Release() uintptr { + ret, _, _ := e.vtbl.Release.Call(uintptr(unsafe.Pointer(e))) + + return ret +} + // CreateCoreWebView2Controller asynchronously creates a new WebView. func (e *ICoreWebView2Environment) CreateCoreWebView2Controller(parentWindow uintptr, handler *iCoreWebView2CreateCoreWebView2ControllerCompletedHandler) error { hr, _, _ := e.vtbl.CreateCoreWebView2Controller.Call( diff --git a/v3/pkg/application/application_server.go b/v3/pkg/application/application_server.go index c7ed9696ac2..353f2cabe94 100644 --- a/v3/pkg/application/application_server.go +++ b/v3/pkg/application/application_server.go @@ -533,37 +533,38 @@ func (w *serverWebviewWindow) startDrag() error { func (w *serverWebviewWindow) startResize(border string) error { return errors.New("resize not available in server mode") } -func (w *serverWebviewWindow) print() error { return errors.New("print not available in server mode") } -func (w *serverWebviewWindow) setEnabled(enabled bool) {} -func (w *serverWebviewWindow) physicalBounds() Rect { return Rect{} } -func (w *serverWebviewWindow) setPhysicalBounds(bounds Rect) {} -func (w *serverWebviewWindow) bounds() Rect { return Rect{} } -func (w *serverWebviewWindow) setBounds(bounds Rect) {} -func (w *serverWebviewWindow) position() (int, int) { return 0, 0 } -func (w *serverWebviewWindow) setPosition(x int, y int) {} -func (w *serverWebviewWindow) centerOnScreen(_ *Screen) {} -func (w *serverWebviewWindow) relativePosition() (int, int) { return 0, 0 } -func (w *serverWebviewWindow) setRelativePosition(x int, y int) {} -func (w *serverWebviewWindow) flash(enabled bool) {} -func (w *serverWebviewWindow) handleKeyEvent(acceleratorString string) {} -func (w *serverWebviewWindow) getBorderSizes() *LRTB { return &LRTB{} } -func (w *serverWebviewWindow) setMinimiseButtonState(state ButtonState) {} -func (w *serverWebviewWindow) setMaximiseButtonState(state ButtonState) {} -func (w *serverWebviewWindow) setCloseButtonState(state ButtonState) {} -func (w *serverWebviewWindow) setFullscreenButtonState(state ButtonState) {} -func (w *serverWebviewWindow) isIgnoreMouseEvents() bool { return false } -func (w *serverWebviewWindow) setIgnoreMouseEvents(ignore bool) {} -func (w *serverWebviewWindow) cut() {} -func (w *serverWebviewWindow) copy() {} -func (w *serverWebviewWindow) paste() {} -func (w *serverWebviewWindow) undo() {} -func (w *serverWebviewWindow) delete() {} -func (w *serverWebviewWindow) selectAll() {} -func (w *serverWebviewWindow) redo() {} -func (w *serverWebviewWindow) showMenuBar() {} -func (w *serverWebviewWindow) hideMenuBar() {} -func (w *serverWebviewWindow) toggleMenuBar() {} -func (w *serverWebviewWindow) setMenu(menu *Menu) {} -func (w *serverWebviewWindow) snapAssist() {} -func (w *serverWebviewWindow) attachModal(modalWindow *WebviewWindow) {} -func (w *serverWebviewWindow) setContentProtection(enabled bool) {} +func (w *serverWebviewWindow) print() error { return errors.New("print not available in server mode") } +func (w *serverWebviewWindow) setEnabled(enabled bool) {} +func (w *serverWebviewWindow) physicalBounds() Rect { return Rect{} } +func (w *serverWebviewWindow) setPhysicalBounds(bounds Rect) {} +func (w *serverWebviewWindow) bounds() Rect { return Rect{} } +func (w *serverWebviewWindow) setBounds(bounds Rect) {} +func (w *serverWebviewWindow) position() (int, int) { return 0, 0 } +func (w *serverWebviewWindow) setPosition(x int, y int) {} +func (w *serverWebviewWindow) centerOnScreen(_ *Screen) {} +func (w *serverWebviewWindow) relativePosition() (int, int) { return 0, 0 } +func (w *serverWebviewWindow) setRelativePosition(x int, y int) {} +func (w *serverWebviewWindow) flash(enabled bool) {} +func (w *serverWebviewWindow) handleKeyEvent(acceleratorString string) {} +func (w *serverWebviewWindow) getBorderSizes() *LRTB { return &LRTB{} } +func (w *serverWebviewWindow) setMinimiseButtonState(state ButtonState) {} +func (w *serverWebviewWindow) setMaximiseButtonState(state ButtonState) {} +func (w *serverWebviewWindow) setCloseButtonState(state ButtonState) {} +func (w *serverWebviewWindow) setFullscreenButtonState(state ButtonState) {} +func (w *serverWebviewWindow) isIgnoreMouseEvents() bool { return false } +func (w *serverWebviewWindow) setIgnoreMouseEvents(ignore bool) {} +func (w *serverWebviewWindow) cut() {} +func (w *serverWebviewWindow) copy() {} +func (w *serverWebviewWindow) paste() {} +func (w *serverWebviewWindow) undo() {} +func (w *serverWebviewWindow) delete() {} +func (w *serverWebviewWindow) selectAll() {} +func (w *serverWebviewWindow) redo() {} +func (w *serverWebviewWindow) showMenuBar() {} +func (w *serverWebviewWindow) hideMenuBar() {} +func (w *serverWebviewWindow) toggleMenuBar() {} +func (w *serverWebviewWindow) setMenu(menu *Menu) {} +func (w *serverWebviewWindow) snapAssist() {} +func (w *serverWebviewWindow) attachModal(modalWindow *WebviewWindow) {} +func (w *serverWebviewWindow) setContentProtection(enabled bool) {} +func (w *serverWebviewWindow) setNonClientHitTestRegions([]nonClientHitTestRegion) {} diff --git a/v3/pkg/application/webview_window.go b/v3/pkg/application/webview_window.go index 224bab96f6d..bbeabae6aa0 100644 --- a/v3/pkg/application/webview_window.go +++ b/v3/pkg/application/webview_window.go @@ -1,6 +1,7 @@ package application import ( + "encoding/json" "fmt" "runtime" "slices" @@ -9,8 +10,6 @@ import ( "sync/atomic" "unsafe" - "encoding/json" - "github.com/wailsapp/wails/v3/internal/assetserver" "github.com/wailsapp/wails/v3/internal/optional" "github.com/wailsapp/wails/v3/pkg/events" @@ -116,9 +115,33 @@ type ( snapAssist() setContentProtection(enabled bool) attachModal(modalWindow *WebviewWindow) + setNonClientHitTestRegions([]nonClientHitTestRegion) + } + + nonClientHitTestKind string + + // nonClientHitTestRegion is a frontend-owned client-area rectangle in physical pixels. + nonClientHitTestRegion struct { + Kind nonClientHitTestKind `json:"kind,omitempty"` + Left int `json:"left"` + Top int `json:"top"` + Right int `json:"right"` + Bottom int `json:"bottom"` + } + + nonClientHitTestRegionsMessage struct { + Version int `json:"version,omitempty"` + Regions []nonClientHitTestRegion `json:"regions"` } ) +const ( + nonClientHitTestKindCaption nonClientHitTestKind = "caption" + nonClientHitTestKindMinimize nonClientHitTestKind = "minimize" + nonClientHitTestKindMaximize nonClientHitTestKind = "maximize" + nonClientHitTestKindClose nonClientHitTestKind = "close" +) + type WindowEvent struct { ctx *WindowEventContext cancelled atomic.Bool @@ -774,6 +797,9 @@ func (w *WebviewWindow) HandleMessage(message string) { w.Error("%w", err) } } + case strings.HasPrefix(message, "wails:non-client-region:"): + message = strings.Replace(message, "wails:non-client-region:", "", 1) + w.handleNonClientRegionMessage(message) case message == "wails:runtime:ready": w.emit(events.Common.WindowRuntimeReady) w.pendingJSMutex.Lock() @@ -815,6 +841,46 @@ func (w *WebviewWindow) HandleMessage(message string) { } } +func (w *WebviewWindow) handleNonClientRegionMessage(payload string) { + var message nonClientHitTestRegionsMessage + if err := json.Unmarshal([]byte(payload), &message); err != nil { + w.Error("failed to parse non-client regions: %w", err) + return + } + + regions := make([]nonClientHitTestRegion, 0, len(message.Regions)) + for i, region := range message.Regions { + normalised, err := normaliseNonClientHitTestRegion(region) + if err != nil { + w.Error("region %d: %w", i, err) + continue + } + regions = append(regions, normalised) + } + + InvokeSync(func() { + w.impl.setNonClientHitTestRegions(regions) + }) +} + +func normaliseNonClientHitTestRegion(region nonClientHitTestRegion) (nonClientHitTestRegion, error) { + if region.Right <= region.Left || region.Bottom <= region.Top { + return nonClientHitTestRegion{}, fmt.Errorf("invalid rectangle") + } + + kind := nonClientHitTestKind(strings.ToLower(string(region.Kind))) + switch kind { + case nonClientHitTestKindCaption, + nonClientHitTestKindMinimize, + nonClientHitTestKindMaximize, + nonClientHitTestKindClose: + region.Kind = kind + return region, nil + default: + return nonClientHitTestRegion{}, fmt.Errorf("unknown region kind %q", region.Kind) + } +} + func (w *WebviewWindow) startResize(border string) error { if w.impl == nil || w.isDestroyed() { return nil diff --git a/v3/pkg/application/webview_window_android.go b/v3/pkg/application/webview_window_android.go index b94dd87f8da..a7e77d917b0 100644 --- a/v3/pkg/application/webview_window_android.go +++ b/v3/pkg/application/webview_window_android.go @@ -341,6 +341,9 @@ func (w *androidWebviewWindow) setContentProtection(_ bool) { // Android content protection - could be implemented with FLAG_SECURE } +func (w *androidWebviewWindow) setNonClientHitTestRegions([]nonClientHitTestRegion) { +} + func (w *androidWebviewWindow) setHTML(_ string) { // Not supported: the WebView always loads from the asset server } diff --git a/v3/pkg/application/webview_window_darwin.go b/v3/pkg/application/webview_window_darwin.go index fd4278fd402..6f2995a162a 100644 --- a/v3/pkg/application/webview_window_darwin.go +++ b/v3/pkg/application/webview_window_darwin.go @@ -1759,6 +1759,9 @@ func (w *macosWebviewWindow) setContentProtection(enabled bool) { C.setContentProtection(w.nsWindow, C.bool(enabled)) } +func (w *macosWebviewWindow) setNonClientHitTestRegions([]nonClientHitTestRegion) { +} + func (w *macosWebviewWindow) attachModal(modalWindow *WebviewWindow) { if modalWindow == nil || modalWindow.impl == nil || modalWindow.isDestroyed() { return diff --git a/v3/pkg/application/webview_window_ios.go b/v3/pkg/application/webview_window_ios.go index b77923d365c..5453b707f8d 100644 --- a/v3/pkg/application/webview_window_ios.go +++ b/v3/pkg/application/webview_window_ios.go @@ -390,6 +390,9 @@ func (w *iosWebviewWindow) setContentProtection(_ bool) { // iOS content protection - could be implemented with UIScreen captured notifications } +func (w *iosWebviewWindow) setNonClientHitTestRegions([]nonClientHitTestRegion) { +} + func (w *iosWebviewWindow) setHTML(html string) { if w.nativeHandle == nil || html == "" { return diff --git a/v3/pkg/application/webview_window_linux.go b/v3/pkg/application/webview_window_linux.go index 09903796b3d..e6288f43cac 100644 --- a/v3/pkg/application/webview_window_linux.go +++ b/v3/pkg/application/webview_window_linux.go @@ -466,3 +466,5 @@ func (w *linuxWebviewWindow) hideMenuBar() {} func (w *linuxWebviewWindow) toggleMenuBar() {} func (w *linuxWebviewWindow) snapAssist() {} // No-op on Linux func (w *linuxWebviewWindow) setContentProtection(enabled bool) {} +func (w *linuxWebviewWindow) setNonClientHitTestRegions([]nonClientHitTestRegion) { +} diff --git a/v3/pkg/application/webview_window_options.go b/v3/pkg/application/webview_window_options.go index 78f5b721519..0baa9a4bd9e 100644 --- a/v3/pkg/application/webview_window_options.go +++ b/v3/pkg/application/webview_window_options.go @@ -344,6 +344,21 @@ type WindowsWindow struct { // Default: false WindowMaskDraggable bool + // NonClientRegionSupport enables WebView2's native non-client region support + // for this window when the installed WebView2 Runtime supports it. This is + // primarily intended to make app-region: drag style custom titlebars work + // with native non-client hit testing. + // Default: false + NonClientRegionSupport bool + + // WebView2CompositionHosting creates WebView2 with visual hosting using + // ICoreWebView2CompositionController and DirectComposition instead of the + // HWND-hosted controller. This is intended for custom host-owned non-client + // hit-testing, for example manual caption-button regions rendered in web + // content and resolved through GetNonClientRegionAtPoint / SendMouseInput. + // Default: false + WebView2CompositionHosting bool + // WindowDidMoveDebounceMS is the amount of time to debounce the WindowDidMove event // when moving the window // Default: 0 diff --git a/v3/pkg/application/webview_window_windows.go b/v3/pkg/application/webview_window_windows.go index 9916913da98..c3f1a78b642 100644 --- a/v3/pkg/application/webview_window_windows.go +++ b/v3/pkg/application/webview_window_windows.go @@ -70,11 +70,8 @@ type windowsWebviewWindow struct { // Track whether content protection has been applied to the native window yet contentProtectionApplied bool - // resizeBorder* is the width/height of the resize border in pixels. - resizeBorderWidth int32 - resizeBorderHeight int32 - focusingChromium bool - onceDo sync.Once + focusingChromium bool + onceDo sync.Once // Window move debouncer moveDebouncer func(func()) @@ -89,6 +86,14 @@ type windowsWebviewWindow struct { // cannot be used for this because keyboard snap (Win+Left) bypasses those messages. lastSizeWParam uintptr + nonClientHitTest nonClientHitTestState + // Tracks the caption button currently pressed through forwarded non-client input. + // Once capture is active, Windows reports movement as normal client mouse input, + // so we need this state to keep WebView hover/pressed transitions native-like. + activeNonClientButton uintptr + activeNonClientButtonHovered bool + compositionCursor w32.HCURSOR + // lastKnownDPI is the window's DPI the last time it was in a non-minimised // state. It is used on the un-minimise path to decide whether the WebView2 // rasterization scale actually needs resyncing: when the DPI is unchanged @@ -362,6 +367,21 @@ func (w *windowsWebviewWindow) framelessWithDecorations() bool { return w.parent.options.Frameless && !w.parent.options.Windows.DisableFramelessWindowDecorations } +func (w *windowsWebviewWindow) extendFrameIntoClientArea(extend bool) error { + if !extend || !w.chromium.CompositionControllerEnabled { + return w32.ExtendFrameIntoClientArea(w.hwnd, extend) + } + + // Leave the top edge unextended for composition-hosted non-client regions so + // the Windows 11 Snap Layout flyout does not cover custom HTMAXBUTTON areas. + return w32.ExtendFrameIntoClientAreaWithMargins(w.hwnd, w32.MARGINS{ + CxLeftWidth: 1, + CxRightWidth: 1, + CyTopHeight: 0, + CyBottomHeight: 1, + }) +} + func (w *windowsWebviewWindow) run() { options := w.parent.options @@ -371,6 +391,9 @@ func (w *windowsWebviewWindow) run() { w.showRequested = !options.Hidden w.chromium = edge.NewChromium() + w.chromium.NonClientRegionSupportEnabled = options.Windows.NonClientRegionSupport + w.chromium.CompositionControllerEnabled = options.Windows.WebView2CompositionHosting + w.chromium.SetCursorChangedCallback(w.applyCompositionCursor) if globalApplication.options.ErrorHandler != nil { w.chromium.SetErrorCallback(globalApplication.options.ErrorHandler) } @@ -967,7 +990,7 @@ func (w *windowsWebviewWindow) fullscreen() { return } if w.framelessWithDecorations() { - err := w32.ExtendFrameIntoClientArea(w.hwnd, false) + err := w.extendFrameIntoClientArea(false) if err != nil { globalApplication.handleFatalError(err) } @@ -1017,7 +1040,7 @@ func (w *windowsWebviewWindow) unfullscreen() { return } if w.framelessWithDecorations() { - err := w32.ExtendFrameIntoClientArea(w.hwnd, true) + err := w.extendFrameIntoClientArea(true) if err != nil { globalApplication.handleFatalError(err) } @@ -1345,9 +1368,7 @@ func (w *windowsWebviewWindow) setFrameless(b bool) { func newWindowImpl(parent *WebviewWindow) *windowsWebviewWindow { result := &windowsWebviewWindow{ - parent: parent, - resizeBorderWidth: int32(w32.GetSystemMetrics(w32.SM_CXSIZEFRAME)), - resizeBorderHeight: int32(w32.GetSystemMetrics(w32.SM_CYSIZEFRAME)), + parent: parent, // Initialize visibility tracking fields showRequested: false, visibilityTimeout: nil, @@ -1569,6 +1590,16 @@ func (w *windowsWebviewWindow) WndProc(msg uint32, wparam, lparam uintptr) uintp return w32.HTCLIENT } + if w.parent.options.Windows.WebView2CompositionHosting && w.chromium != nil && w.chromium.CompositionControllerReady() { + if result, handled := w.routeNonClientInput(msg, wparam, lparam); handled { + return result + } + + if w.routeCompositionMouseInput(msg, wparam, lparam) { + return 0 + } + } + switch msg { case w32.WM_ACTIVATE: if int(wparam&0xffff) == w32.WA_INACTIVE { @@ -1587,7 +1618,7 @@ func (w *windowsWebviewWindow) WndProc(msg uint32, wparam, lparam uintptr) uintp // As a result we have hidden the titlebar but still have the default window frame styling. // See: https://docs.microsoft.com/en-us/windows/win32/api/dwmapi/nf-dwmapi-dwmextendframeintoclientarea#remarks if w.framelessWithDecorations() { - err := w32.ExtendFrameIntoClientArea(w.hwnd, true) + err := w.extendFrameIntoClientArea(true) if err != nil { globalApplication.handleFatalError(err) } @@ -1615,7 +1646,11 @@ func (w *windowsWebviewWindow) WndProc(msg uint32, wparam, lparam uintptr) uintp // Now do the actual close w.chromium.ShuttingDown() return w32.DefWindowProc(w.hwnd, w32.WM_CLOSE, 0, 0) - + case w32.WM_SETCURSOR: + if w.compositionCursor != 0 && w32.LOWORD(uint32(lparam)) == w32.HTCLIENT { + w32.SetCursor(w.compositionCursor) + return 1 + } case w32.WM_KILLFOCUS: if w.focusingChromium { return 0 @@ -1878,7 +1913,7 @@ func (w *windowsWebviewWindow) WndProc(msg uint32, wparam, lparam uintptr) uintp // For frameless windows with decorations, re-extend the frame into client area // to ensure proper window frame styling after DPI change. if w.framelessWithDecorations() { - if err := w32.ExtendFrameIntoClientArea(w.hwnd, true); err != nil { + if err := w.extendFrameIntoClientArea(true); err != nil { globalApplication.handleFatalError(err) } } @@ -1892,11 +1927,11 @@ func (w *windowsWebviewWindow) WndProc(msg uint32, wparam, lparam uintptr) uintp // DPI changes manually — but only while non-minimised. When detection // was re-enabled in setupChromium, the resync below is a no-op (Edge // owns the scale) and only lastKnownDPI tracking runs. - // While minimised the window sits off its restore - // monitor, so GetDpiForWindow can report a different monitor's DPI, which - // would push a wrong scale - // onto the controller (one the restore-time DPI gate then won't correct, - // since DPI == lastKnownDPI) and would make a COM call into a possibly + // While minimised the window sits off its restore monitor, so + // GetDpiForWindow can report a different monitor's DPI, which would + // push a wrong scale onto the controller (one the restore-time DPI gate + // then won't correct, since DPI == lastKnownDPI) and would make a COM + // call into a possibly // suspended controller (#5605). A genuine DPI difference is instead // caught on restore by resyncWebviewDPIAfterUnminimiseIfDPIChanged. if !w.isMinimizing { @@ -1968,7 +2003,7 @@ func (w *windowsWebviewWindow) WndProc(msg uint32, wparam, lparam uintptr) uintp // As a result we have hidden the titlebar but still have the default window frame styling. // See: https://docs.microsoft.com/en-us/windows/win32/api/dwmapi/nf-dwmapi-dwmextendframeintoclientarea#remarks if w.framelessWithDecorations() { - err := w32.ExtendFrameIntoClientArea(w.hwnd, true) + err := w.extendFrameIntoClientArea(true) if err != nil { globalApplication.handleFatalError(err) } @@ -2045,10 +2080,9 @@ func (w *windowsWebviewWindow) WndProc(msg uint32, wparam, lparam uintptr) uintp // resyncWebviewRasterizationScale re-asserts the window's actual DPI on the // WebView2 controller and reports whether the scale was out of sync. Wails -// runs WebView2 in raw-pixels bounds mode with ShouldDetectMonitorScaleChanges -// disabled, so keeping the rasterization scale in step with the window's DPI -// is the application's responsibility. It is a no-op when the controller is -// unavailable or already in sync. +// keeps this as a fallback for controllers where monitor-scale detection could +// not be re-enabled; when WebView2 owns monitor scale detection, the host-side +// resync stands down. func (w *windowsWebviewWindow) resyncWebviewRasterizationScale() bool { // With monitor-scale detection re-enabled (setupChromium), WebView2 owns // the rasterization scale and updates it on monitor crossings itself. A @@ -2378,6 +2412,7 @@ func (w *windowsWebviewWindow) setupChromium() { chromium.MessageWithAdditionalObjectsCallback = w.processMessageWithAdditionalObjects chromium.WebResourceRequestedCallback = w.processRequest chromium.ContainsFullScreenElementChangedCallback = w.fullscreenChanged + chromium.NavigationStartingCallback = w.navigationStarting chromium.NavigationCompletedCallback = w.navigationCompleted chromium.AcceleratorKeyCallback = w.processKeyBinding @@ -2597,17 +2632,24 @@ func (w *windowsWebviewWindow) flash(enabled bool) { w32.FlashWindow(w.hwnd, enabled) } +func (w *windowsWebviewWindow) navigationStarting(_ *edge.ICoreWebView2) { + w.setNonClientHitTestRegions(nil) +} + func (w *windowsWebviewWindow) navigationCompleted( sender *edge.ICoreWebView2, args *edge.ICoreWebView2NavigationCompletedEventArgs, ) { - // Install the runtime core - w.execJS(runtime.Core(globalApplication.impl.GetFlags(globalApplication.options))) - - // Set the EnableFileDrop flag for this window (Windows-specific) - // The JS runtime checks this before processing file drops - w.execJS(fmt.Sprintf("window._wails.flags.enableFileDrop = %v;", w.parent.options.EnableFileDrop)) + // Inject runtime core and window-specific flags together so side-effect + // runtime modules see a consistent _wails configuration at startup. + js := runtime.Core(globalApplication.impl.GetFlags(globalApplication.options)) + js += fmt.Sprintf( + "window._wails.flags.enableFileDrop = %v; window._wails.flags.nonClientRegionTracking = %v;", + w.parent.options.EnableFileDrop, + w.parent.options.Windows.WebView2CompositionHosting, + ) + w.execJS(js) // EmitEvent DomReady ApplicationEvent windowEvents <- &windowEvent{EventID: uint(events.Windows.WebViewNavigationCompleted), WindowID: w.parent.id} diff --git a/v3/pkg/application/webview_window_windows_nonclient.go b/v3/pkg/application/webview_window_windows_nonclient.go new file mode 100644 index 00000000000..d434e41d10d --- /dev/null +++ b/v3/pkg/application/webview_window_windows_nonclient.go @@ -0,0 +1,535 @@ +//go:build windows + +package application + +import ( + "slices" + "sync" + "unsafe" + + "github.com/wailsapp/wails/v3/pkg/w32" + "github.com/wailsapp/wails/v3/internal/webview2/pkg/edge" +) + +type nonClientHitTestState struct { + mu sync.RWMutex + regions []nonClientHitTestRegion +} + +func (s *nonClientHitTestState) set(regions []nonClientHitTestRegion) { + s.mu.Lock() + if len(regions) == 0 { + s.regions = nil + } else { + s.regions = slices.Clone(regions) + } + s.mu.Unlock() +} + +func (s *nonClientHitTestState) snapshot() []nonClientHitTestRegion { + s.mu.RLock() + defer s.mu.RUnlock() + if len(s.regions) == 0 { + return nil + } + return append([]nonClientHitTestRegion(nil), s.regions...) +} + +func (w *windowsWebviewWindow) setNonClientHitTestRegions(regions []nonClientHitTestRegion) { + w.nonClientHitTest.set(regions) +} + +func (w *windowsWebviewWindow) applyCompositionCursor(cursor edge.HCURSOR, systemCursorID uint32) { + hcursor := w32.HCURSOR(cursor) + if hcursor == 0 && systemCursorID != 0 { + hcursor = w32.LoadCursorWithResourceID(0, uint16(systemCursorID)) + } + if hcursor == 0 { + return + } + + w.compositionCursor = hcursor + w32.SetCursor(hcursor) +} + +func (w *windowsWebviewWindow) routeNonClientInput(msg uint32, wparam, lparam uintptr) (uintptr, bool) { + switch msg { + case w32.WM_NCHITTEST: + if hitTest, handled := w32.DwmDefWindowProc(w.hwnd, msg, wparam, lparam); handled { + if hitTest != w32.HTCLIENT && hitTest != w32.HTNOWHERE { + return hitTest, true + } + } + + screenX := int(w32.GET_X_LPARAM(lparam)) + screenY := int(w32.GET_Y_LPARAM(lparam)) + + if hitTest, ok := w.resizeBorderHitTest(screenX, screenY); ok { + return hitTest, true + } + + return w.nonClientHitTestFromScreen(screenX, screenY) + case w32.WM_NCMOUSEMOVE: + screenX := int(w32.GET_X_LPARAM(lparam)) + screenY := int(w32.GET_Y_LPARAM(lparam)) + + hitTest, ok := w.nonClientHitTestFromScreen(screenX, screenY) + if !ok || hitTest != wparam { + return 0, false + } + + w.trackCompositionMouseLeave(true) + + clientX, clientY, ok := w32.ScreenToClient( + w.hwnd, + int(w32.GET_X_LPARAM(lparam)), + int(w32.GET_Y_LPARAM(lparam)), + ) + if !ok { + return 0, false + } + + _ = w.chromium.SendMouseInput( + edge.COREWEBVIEW2_MOUSE_EVENT_KIND_MOVE, + edge.COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_NONE, + 0, + clientX, + clientY, + ) + + return w32.DwmDefWindowProc(w.hwnd, msg, wparam, lparam) + case w32.WM_NCMOUSELEAVE: + // Windows can emit a spurious NCMOUSELEAVE right after a forwarded + // non-client button press. Suppress it until the captured mouse move + // path below can decide whether the pointer really left the active button. + if w32.GetCapture() == w.hwnd && w.activeNonClientButton != 0 { + return 0, true + } + + _ = w.chromium.SendMouseInput( + edge.COREWEBVIEW2_MOUSE_EVENT_KIND_LEAVE, + edge.COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_NONE, + 0, + 0, + 0, + ) + case w32.WM_NCLBUTTONDOWN, w32.WM_NCLBUTTONUP, w32.WM_NCLBUTTONDBLCLK: + switch wparam { + case w32.HTMINBUTTON, w32.HTMAXBUTTON, w32.HTCLOSE: + default: + return 0, false + } + + if w.forwardFrontendNonClientButtonInput(msg, wparam, lparam) { + return 0, true + } + case w32.WM_NCRBUTTONUP: + if wparam != w32.HTCAPTION && wparam != w32.HTSYSMENU { + return 0, false + } + + screenX := int(w32.GET_X_LPARAM(lparam)) + screenY := int(w32.GET_Y_LPARAM(lparam)) + + if hitTest, ok := w.nonClientHitTestFromScreen(screenX, screenY); !ok || hitTest != w32.HTCAPTION { + return 0, false + } + + if w.showCaptionSystemMenu(screenX, screenY) { + return 0, true + } + } + + return 0, false +} + +func (w *windowsWebviewWindow) nonClientHitTestFromScreen(screenX, screenY int) (uintptr, bool) { + regions := w.nonClientHitTest.snapshot() + // Later frontend regions should win when rectangles overlap, matching the + // DOM/CSS order used to collect them (for example caption buttons over a + // caption drag area). + for i := len(regions) - 1; i >= 0; i-- { + r := regions[i] + + left, top := w32.ClientToScreen(w.hwnd, r.Left, r.Top) + right, bottom := w32.ClientToScreen(w.hwnd, r.Right, r.Bottom) + + // outside app + if screenX < left || screenX >= right || screenY < top || screenY >= bottom { + continue + } + + switch r.Kind { + case nonClientHitTestKindMaximize: + return w32.HTMAXBUTTON, true + case nonClientHitTestKindCaption: + return w32.HTCAPTION, true + case nonClientHitTestKindMinimize: + return w32.HTMINBUTTON, true + case nonClientHitTestKindClose: + return w32.HTCLOSE, true + } + } + + // fallback to default non-client region hit test (app-region) + if !w.chromium.NonClientRegionSupportEnabled { + return 0, false + } + + clientX, clientY, ok := w32.ScreenToClient(w.hwnd, screenX, screenY) + if !ok { + return 0, false + } + + region, handled, err := w.chromium.GetNonClientRegionAtPoint(int32(clientX), int32(clientY)) + if err != nil || !handled { + return 0, false + } + + switch region { + case edge.COREWEBVIEW2_NON_CLIENT_REGION_KIND_CAPTION: + return w32.HTCAPTION, true + case edge.COREWEBVIEW2_NON_CLIENT_REGION_KIND_MINIMIZE: + return w32.HTMINBUTTON, true + case edge.COREWEBVIEW2_NON_CLIENT_REGION_KIND_MAXIMIZE: + return w32.HTMAXBUTTON, true + case edge.COREWEBVIEW2_NON_CLIENT_REGION_KIND_CLOSE: + return w32.HTCLOSE, true + case edge.COREWEBVIEW2_NON_CLIENT_REGION_KIND_CLIENT, + edge.COREWEBVIEW2_NON_CLIENT_REGION_KIND_NOWHERE: + return 0, false + default: + return 0, false + } +} + +func (w *windowsWebviewWindow) resizeBorderHitTest(screenX, screenY int) (uintptr, bool) { + if w.parent.options.DisableResize || w.isMaximised() || w.isFullscreen() { + return 0, false + } + + rect := w32.GetWindowRect(w.hwnd) + width := int(rect.Right - rect.Left) + height := int(rect.Bottom - rect.Top) + if width <= 0 || height <= 0 { + return 0, false + } + + x := screenX - int(rect.Left) + y := screenY - int(rect.Top) + if x < 0 || y < 0 || x >= width || y >= height { + return 0, false + } + + dpi, _ := w.DPI() + borderX := systemMetricForDPI(w32.SM_CXSIZEFRAME, dpi) + systemMetricForDPI(w32.SM_CXPADDEDBORDER, dpi) + if borderX < 1 { + borderX = 1 + } + borderY := systemMetricForDPI(w32.SM_CYSIZEFRAME, dpi) + systemMetricForDPI(w32.SM_CXPADDEDBORDER, dpi) + if borderY < 1 { + borderY = 1 + } + + left := x < borderX + right := x >= width-borderX + top := y < borderY + bottom := y >= height-borderY + + switch { + case top && left: + return w32.HTTOPLEFT, true + case top && right: + return w32.HTTOPRIGHT, true + case bottom && left: + return w32.HTBOTTOMLEFT, true + case bottom && right: + return w32.HTBOTTOMRIGHT, true + case top: + return w32.HTTOP, true + case bottom: + return w32.HTBOTTOM, true + case left: + return w32.HTLEFT, true + case right: + return w32.HTRIGHT, true + default: + return 0, false + } +} + +func systemMetricForDPI(index int, dpi w32.UINT) int { + if dpi != 0 && w32.HasGetSystemMetricsForDpiFunc() { + return w32.GetSystemMetricsForDpi(index, dpi) + } + return w32.GetSystemMetrics(index) +} + +func (w *windowsWebviewWindow) forwardFrontendNonClientButtonInput(msg uint32, wparam, lparam uintptr) bool { + screenX := int(w32.GET_X_LPARAM(lparam)) + screenY := int(w32.GET_Y_LPARAM(lparam)) + + hitTest, ok := w.nonClientHitTestFromScreen(screenX, screenY) + if !ok || hitTest != wparam { + return false + } + + clientX, clientY, ok := w32.ScreenToClient(w.hwnd, screenX, screenY) + if !ok { + return false + } + + eventKind, virtualKeys, ok := nonClientLeftButtonMouseEvent(msg) + if !ok { + return false + } + + if err := w.chromium.SendMouseInput( + eventKind, + virtualKeys, + 0, + clientX, + clientY, + ); err != nil { + return false + } + + // Remember which caption button started the press. During capture, Windows + // sends movement as WM_MOUSEMOVE, so later moves must be compared against + // this original hit-test rather than any caption button under the cursor. + if msg == w32.WM_NCLBUTTONDOWN || msg == w32.WM_NCLBUTTONDBLCLK { + w.activeNonClientButton = wparam + w.activeNonClientButtonHovered = true + } + + w.updateCompositionMouseCapture(msg) + + return true +} + +func (w *windowsWebviewWindow) showCaptionSystemMenu(screenX, screenY int) bool { + menu := w32.GetSystemMenu(w.hwnd, false) + if menu == 0 { + return false + } + + w32.SetForegroundWindow(w.hwnd) + command := w32.TrackPopupMenuCommand( + menu, + w32.TPM_LEFTALIGN|w32.TPM_TOPALIGN|w32.TPM_RIGHTBUTTON, + int32(screenX), + int32(screenY), + w.hwnd, + nil, + ) + w32.PostMessage(w.hwnd, w32.WM_NULL, 0, 0) + if command == 0 { + return true + } + + w32.SendMessage(w.hwnd, w32.WM_SYSCOMMAND, command, 0) + return true +} + +func (w *windowsWebviewWindow) routeCompositionMouseInput(msg uint32, wparam, lparam uintptr) bool { + eventKind, ok := webviewCompositionMouseEventKind(msg) + if !ok { + return false + } + + if msg == w32.WM_MOUSEMOVE { + w.trackCompositionMouseLeave(false) + } + + clientX, clientY, ok := w.compositionMouseClientPoint(msg, lparam) + if !ok { + return false + } + + var mouseData uint32 + switch msg { + case w32.WM_MOUSEWHEEL, w32.WM_MOUSEHWHEEL: + mouseData = uint32(int16(wparam >> 16)) + case w32.WM_XBUTTONDOWN, w32.WM_XBUTTONUP, w32.WM_XBUTTONDBLCLK: + mouseData = uint32(wparam >> 16) + } + + // While a forwarded caption button owns capture, WebView still receives + // normal mouse moves. Only forward those moves while the cursor remains over + // the same button; otherwise synthesize leave so pressed styling is cleared. + if msg == w32.WM_MOUSEMOVE && w.activeNonClientButton != 0 && w32.GetCapture() == w.hwnd { + if !w.updateActiveNonClientButtonHover() { + return true + } + } + + if err := w.chromium.SendMouseInput( + eventKind, + edge.COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS(uint32(wparam)&0xffff), + mouseData, + clientX, + clientY, + ); err != nil { + return false + } + + w.updateCompositionMouseCapture(msg) + + return true +} + +func (w *windowsWebviewWindow) trackCompositionMouseLeave(nonClient bool) { + flags := uint32(w32.TME_LEAVE) + if nonClient { + flags |= w32.TME_NONCLIENT + } + + w32.TrackMouseEvent(&w32.TRACKMOUSEEVENT{ + CbSize: uint32(unsafe.Sizeof(w32.TRACKMOUSEEVENT{})), + DwFlags: flags, + HwndTrack: w.hwnd, + }) +} + +func (w *windowsWebviewWindow) compositionMouseClientPoint(msg uint32, lparam uintptr) (int, int, bool) { + switch msg { + case w32.WM_MOUSELEAVE: + return 0, 0, true + case w32.WM_MOUSEWHEEL, w32.WM_MOUSEHWHEEL: + return w32.ScreenToClient(w.hwnd, int(w32.GET_X_LPARAM(lparam)), int(w32.GET_Y_LPARAM(lparam))) + default: + return int(w32.GET_X_LPARAM(lparam)), int(w32.GET_Y_LPARAM(lparam)), true + } +} + +func (w *windowsWebviewWindow) updateCompositionMouseCapture(msg uint32) { + if isCompositionMouseButtonDown(msg) { + if w32.GetCapture() != w.hwnd { + w32.SetCapture(w.hwnd) + } + return + } + + if isCompositionMouseButtonUp(msg) && w32.GetCapture() == w.hwnd { + w32.ReleaseCapture() + + // Button release ends the synthetic caption-button interaction. + w.activeNonClientButton = 0 + w.activeNonClientButtonHovered = false + } +} + +// updateActiveNonClientButtonHover returns whether the current move should be +// forwarded to WebView. It sends a single LEAVE when capture moves off the +// originally pressed caption button, matching native caption-button behavior. +func (w *windowsWebviewWindow) updateActiveNonClientButtonHover() bool { + screenX, screenY, ok := w32.GetCursorPos() + if !ok { + return true + } + + hitTest, ok := w.nonClientHitTestFromScreen(screenX, screenY) + hovered := ok && hitTest == w.activeNonClientButton + if hovered { + w.activeNonClientButtonHovered = true + return true + } + + if w.activeNonClientButtonHovered { + _ = w.chromium.SendMouseInput( + edge.COREWEBVIEW2_MOUSE_EVENT_KIND_LEAVE, + edge.COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_NONE, + 0, + 0, + 0, + ) + w.activeNonClientButtonHovered = false + } + + return false +} + +func nonClientLeftButtonMouseEvent(msg uint32) (edge.COREWEBVIEW2_MOUSE_EVENT_KIND, edge.COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS, bool) { + switch msg { + case w32.WM_NCLBUTTONDOWN: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_DOWN, + edge.COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_LEFT_BUTTON, + true + case w32.WM_NCLBUTTONUP: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_UP, + edge.COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_NONE, + true + case w32.WM_NCLBUTTONDBLCLK: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_DOUBLE_CLICK, + edge.COREWEBVIEW2_MOUSE_EVENT_VIRTUAL_KEYS_LEFT_BUTTON, + true + default: + return 0, 0, false + } +} + +func isCompositionMouseButtonDown(msg uint32) bool { + switch msg { + case w32.WM_LBUTTONDOWN, + w32.WM_NCLBUTTONDOWN, + w32.WM_NCLBUTTONDBLCLK, + w32.WM_RBUTTONDOWN, + w32.WM_MBUTTONDOWN, + w32.WM_XBUTTONDOWN: + return true + default: + return false + } +} + +func isCompositionMouseButtonUp(msg uint32) bool { + switch msg { + case w32.WM_LBUTTONUP, + w32.WM_NCLBUTTONUP, + w32.WM_RBUTTONUP, + w32.WM_MBUTTONUP, + w32.WM_XBUTTONUP: + return true + default: + return false + } +} + +func webviewCompositionMouseEventKind(msg uint32) (edge.COREWEBVIEW2_MOUSE_EVENT_KIND, bool) { + switch msg { + case w32.WM_MOUSELEAVE: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_LEAVE, true + case w32.WM_MOUSEMOVE: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_MOVE, true + case w32.WM_LBUTTONDOWN: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_DOWN, true + case w32.WM_LBUTTONUP: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_UP, true + case w32.WM_LBUTTONDBLCLK: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_LEFT_BUTTON_DOUBLE_CLICK, true + case w32.WM_RBUTTONDOWN: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_DOWN, true + case w32.WM_RBUTTONUP: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_UP, true + case w32.WM_RBUTTONDBLCLK: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_RIGHT_BUTTON_DOUBLE_CLICK, true + case w32.WM_MBUTTONDOWN: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_DOWN, true + case w32.WM_MBUTTONUP: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_UP, true + case w32.WM_MBUTTONDBLCLK: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_MIDDLE_BUTTON_DOUBLE_CLICK, true + case w32.WM_XBUTTONDOWN: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOWN, true + case w32.WM_XBUTTONUP: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_UP, true + case w32.WM_XBUTTONDBLCLK: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_X_BUTTON_DOUBLE_CLICK, true + case w32.WM_MOUSEWHEEL: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_WHEEL, true + case w32.WM_MOUSEHWHEEL: + return edge.COREWEBVIEW2_MOUSE_EVENT_KIND_HORIZONTAL_WHEEL, true + default: + return 0, false + } +} diff --git a/v3/pkg/w32/dwmapi.go b/v3/pkg/w32/dwmapi.go index 1b911efc316..d66d17c7013 100644 --- a/v3/pkg/w32/dwmapi.go +++ b/v3/pkg/w32/dwmapi.go @@ -13,6 +13,7 @@ var ( procDwmSetWindowAttribute = moddwmapi.NewProc("DwmSetWindowAttribute") procDwmGetWindowAttribute = moddwmapi.NewProc("DwmGetWindowAttribute") procDwmExtendFrameIntoClientArea = moddwmapi.NewProc("DwmExtendFrameIntoClientArea") + procDwmDefWindowProc = moddwmapi.NewProc("DwmDefWindowProc") ) func DwmSetWindowAttribute(hwnd HWND, dwAttribute DWMWINDOWATTRIBUTE, pvAttribute unsafe.Pointer, cbAttribute uintptr) HRESULT { @@ -33,6 +34,18 @@ func DwmGetWindowAttribute(hwnd HWND, dwAttribute DWMWINDOWATTRIBUTE, pvAttribut return HRESULT(ret) } +func DwmDefWindowProc(hwnd HWND, msg uint32, wparam, lparam uintptr) (uintptr, bool) { + var result uintptr + ret, _, _ := procDwmDefWindowProc.Call( + hwnd, + uintptr(msg), + wparam, + lparam, + uintptr(unsafe.Pointer(&result)), + ) + return result, ret != 0 +} + func dwmExtendFrameIntoClientArea(hwnd uintptr, margins *MARGINS) error { ret, _, _ := procDwmExtendFrameIntoClientArea.Call( hwnd, diff --git a/v3/pkg/w32/user32.go b/v3/pkg/w32/user32.go index 33696f67b99..203d5154688 100644 --- a/v3/pkg/w32/user32.go +++ b/v3/pkg/w32/user32.go @@ -52,9 +52,13 @@ var ( procScreenToClient = moduser32.NewProc("ScreenToClient") procCallWindowProc = moduser32.NewProc("CallWindowProcW") procSetWindowLong = moduser32.NewProc("SetWindowLongW") - procSetWindowLongPtr = moduser32.NewProc("SetWindowLongW") + // Wails v3 does not support 32-bit Windows. On 32-bit Windows these Ptr + // APIs are C macros over SetWindowLongW/GetWindowLongW and are not exported + // from user32.dll, so keep the real 64-bit exports here instead of adding a + // 386 fallback. + procSetWindowLongPtr = moduser32.NewProc("SetWindowLongPtrW") procGetWindowLong = moduser32.NewProc("GetWindowLongW") - procGetWindowLongPtr = moduser32.NewProc("GetWindowLongW") + procGetWindowLongPtr = moduser32.NewProc("GetWindowLongPtrW") procEnableWindow = moduser32.NewProc("EnableWindow") procIsWindowEnabled = moduser32.NewProc("IsWindowEnabled") procIsWindowVisible = moduser32.NewProc("IsWindowVisible") @@ -67,12 +71,14 @@ var ( procGetClientRect = moduser32.NewProc("GetClientRect") procGetDC = moduser32.NewProc("GetDC") procReleaseDC = moduser32.NewProc("ReleaseDC") + procGetCapture = moduser32.NewProc("GetCapture") procSetCapture = moduser32.NewProc("SetCapture") procReleaseCapture = moduser32.NewProc("ReleaseCapture") procGetWindowThreadProcessId = moduser32.NewProc("GetWindowThreadProcessId") procMessageBox = moduser32.NewProc("MessageBoxW") procMessageBoxIndirect = moduser32.NewProc("MessageBoxIndirectW") procGetSystemMetrics = moduser32.NewProc("GetSystemMetrics") + procGetSystemMetricsForDpi = moduser32.NewProc("GetSystemMetricsForDpi") procPostThreadMessageW = moduser32.NewProc("PostThreadMessageW") procRegisterHotKey = moduser32.NewProc("RegisterHotKey") procUnregisterHotKey = moduser32.NewProc("UnregisterHotKey") @@ -785,6 +791,11 @@ func SetCapture(hwnd HWND) HWND { return HWND(ret) } +func GetCapture() HWND { + ret, _, _ := procGetCapture.Call() + return HWND(ret) +} + func ReleaseCapture() bool { ret, _, _ := procReleaseCapture.Call() @@ -825,6 +836,18 @@ func GetSystemMetrics(index int) int { return int(ret) } +func HasGetSystemMetricsForDpiFunc() bool { + return procGetSystemMetricsForDpi.Find() == nil +} + +func GetSystemMetricsForDpi(index int, dpi UINT) int { + ret, _, _ := procGetSystemMetricsForDpi.Call( + uintptr(index), + uintptr(dpi)) + + return int(ret) +} + func GetSysColorBrush(nIndex int) HBRUSH { ret, _, _ := procGetSysColorBrush.Call(1, uintptr(nIndex), @@ -1550,6 +1573,18 @@ func TrackPopupMenu(hmenu HMENU, flags uint32, x, y int32, reserved int32, hwnd return ret != 0 } +func TrackPopupMenuCommand(hmenu HMENU, flags uint32, x, y int32, hwnd HWND, prcRect *RECT) uintptr { + ret, _, _ := procTrackPopupMenu.Call( + uintptr(hmenu), + uintptr(flags|TPM_RETURNCMD), + uintptr(x), + uintptr(y), + 0, + uintptr(hwnd), + uintptr(unsafe.Pointer(prcRect))) + return ret +} + // KeybdEvent synthesizes a keystroke. The system can use such a synthesized keystroke to generate a WM_KEYUP or WM_KEYDOWN message. // bVk: Virtual-key code // bScan: Hardware scan code diff --git a/v3/pkg/w32/window.go b/v3/pkg/w32/window.go index c26ec414d1e..fff2d93f2b6 100644 --- a/v3/pkg/w32/window.go +++ b/v3/pkg/w32/window.go @@ -43,6 +43,7 @@ var Fatal func(error) const ( GCLP_HBRBACKGROUND int32 = -10 + GCLP_HCURSOR int32 = -12 GCLP_HICON int32 = -14 ) @@ -63,8 +64,12 @@ func ExtendFrameIntoClientArea(hwnd uintptr, extend bool) error { // are shown if transparent ant translucent. var margins MARGINS if extend { - margins = MARGINS{1, 1, 1, 1} // Only extend 1 pixel to have the default frame styling but no caption buttons + margins = MARGINS{1, 1, 1, 1} } + return ExtendFrameIntoClientAreaWithMargins(hwnd, margins) +} + +func ExtendFrameIntoClientAreaWithMargins(hwnd uintptr, margins MARGINS) error { if err := dwmExtendFrameIntoClientArea(hwnd, &margins); err != nil { return fmt.Errorf("DwmExtendFrameIntoClientArea failed: %s", err) } @@ -114,6 +119,10 @@ func SetApplicationIcon(hwnd uintptr, icon HICON) { setClassLongPtr(hwnd, GCLP_HICON, icon) } +func SetClassCursor(hwnd uintptr, cursor HCURSOR) { + setClassLongPtr(hwnd, GCLP_HCURSOR, cursor) +} + func SetBackgroundColour(hwnd uintptr, r, g, b uint8) { col := uint32(r) | uint32(g)<<8 | uint32(b)<<16 hbrush, _, _ := procCreateSolidBrush.Call(uintptr(col)) @@ -192,7 +201,7 @@ func MustStringToUTF16uintptr(input string) uintptr { } // MustStringToUTF16 converts s to UTF-16 encoding, stripping any embedded NULs and panicking on error. -// +// // The returned slice is suitable for Windows API calls that expect a UTF-16 encoded string. func MustStringToUTF16(input string) []uint16 { input = stripNulls(input) @@ -339,6 +348,11 @@ func EnableCloseButton(hwnd HWND) error { return nil } +func GetSystemMenu(hwnd HWND, revert bool) HMENU { + ret, _, _ := getSystemMenu.Call(hwnd, uintptr(BoolToBOOL(revert))) + return HMENU(ret) +} + func FindWindowW(className, windowName *uint16) HWND { ret, _, _ := findWindow.Call( uintptr(unsafe.Pointer(className)), @@ -374,4 +388,4 @@ func SendMessageToWindow(hwnd HWND, msg string) { func GetMenu(hwnd HWND) HMENU { ret, _, _ := getMenuProc.Call(hwnd) return ret -} \ No newline at end of file +} From cb50e1cfe74e3484c5024e5c572987718e5ca669 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <github-actions[bot]@users.noreply.github.com> Date: Tue, 7 Jul 2026 22:24:01 +0000 Subject: [PATCH 20/29] =?UTF-8?q?chore(changelog):=20auto-add=20entry=20fo?= =?UTF-8?q?r=20PR=20#5462=20=E2=80=94=20feat(windows):=20add=20support=20f?= =?UTF-8?q?or=20custom=20hit-test=20logic=20for=20non-client=20regions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v3/UNRELEASED_CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/v3/UNRELEASED_CHANGELOG.md b/v3/UNRELEASED_CHANGELOG.md index cf1e65019ab..a6159255cb6 100644 --- a/v3/UNRELEASED_CHANGELOG.md +++ b/v3/UNRELEASED_CHANGELOG.md @@ -17,6 +17,7 @@ After processing, the content will be moved to the main changelog and this file ## Added <!-- New features, capabilities, or enhancements --> +- Implement custom hit-test logic for non-client regions on Windows in [PR](https://github.com/wailsapp/wails/pull/5462) by @savely-krasovsky ## Changed <!-- Changes in existing functionality --> From 49bda92dc8b9b7829dc9fd216c32ebcea8fff36d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 8 Jul 2026 00:34:12 +0000 Subject: [PATCH 21/29] chore: update sponsors.svg and contributors.svg [skip ci] --- website/static/img/contributors.svg | 2 +- website/static/img/sponsors.svg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/website/static/img/contributors.svg b/website/static/img/contributors.svg index 1bb6ecae8a0..1e729f0dae7 100644 --- a/website/static/img/contributors.svg +++ b/website/static/img/contributors.svg @@ -105,4 +105,4 @@ text { .chip { transition: none; } } </style> -<defs><path id="sqa0" d="M58 0L57.86 18.16L57.44 25.62L56.74 31.25L55.75 35.88L54.47 39.82L52.89 43.23L50.99 46.2L48.77 48.77L46.2 50.99L43.23 52.89L39.82 54.47L35.88 55.75L31.25 56.74L25.62 57.44L18.16 57.86L0 58L-18.16 57.86L-25.62 57.44L-31.25 56.74L-35.88 55.75L-39.82 54.47L-43.23 52.89L-46.2 50.99L-48.77 48.77L-50.99 46.2L-52.89 43.23L-54.47 39.82L-55.75 35.88L-56.74 31.25L-57.44 25.62L-57.86 18.16L-58 0L-57.86 -18.16L-57.44 -25.62L-56.74 -31.25L-55.75 -35.88L-54.47 -39.82L-52.89 -43.23L-50.99 -46.2L-48.77 -48.77L-46.2 -50.99L-43.23 -52.89L-39.82 -54.47L-35.88 -55.75L-31.25 -56.74L-25.62 -57.44L-18.16 -57.86L-0 -58L18.16 -57.86L25.62 -57.44L31.25 -56.74L35.88 -55.75L39.82 -54.47L43.23 -52.89L46.2 -50.99L48.77 -48.77L50.99 -46.2L52.89 -43.23L54.47 -39.82L55.75 -35.88L56.74 -31.25L57.44 -25.62L57.86 -18.16Z"/><path id="sqr0" d="M62.25 0L62.1 19.49L61.65 27.5L60.9 33.54L59.83 38.51L58.46 42.74L56.76 46.4L54.73 49.58L52.35 52.35L49.58 54.73L46.4 56.76L42.74 58.46L38.51 59.83L33.54 60.9L27.5 61.65L19.49 62.1L0 62.25L-19.49 62.1L-27.5 61.65L-33.54 60.9L-38.51 59.83L-42.74 58.46L-46.4 56.76L-49.58 54.73L-52.35 52.35L-54.73 49.58L-56.76 46.4L-58.46 42.74L-59.83 38.51L-60.9 33.54L-61.65 27.5L-62.1 19.49L-62.25 0L-62.1 -19.49L-61.65 -27.5L-60.9 -33.54L-59.83 -38.51L-58.46 -42.74L-56.76 -46.4L-54.73 -49.58L-52.35 -52.35L-49.58 -54.73L-46.4 -56.76L-42.74 -58.46L-38.51 -59.83L-33.54 -60.9L-27.5 -61.65L-19.49 -62.1L-0 -62.25L19.49 -62.1L27.5 -61.65L33.54 -60.9L38.51 -59.83L42.74 -58.46L46.4 -56.76L49.58 -54.73L52.35 -52.35L54.73 -49.58L56.76 -46.4L58.46 -42.74L59.83 -38.51L60.9 -33.54L61.65 -27.5L62.1 -19.49Z"/><path id="sqa1" d="M47 0L46.89 14.71L46.55 20.76L45.98 25.32L45.18 29.07L44.14 32.27L42.86 35.03L41.32 37.43L39.52 39.52L37.43 41.32L35.03 42.86L32.27 44.14L29.07 45.18L25.32 45.98L20.76 46.55L14.71 46.89L0 47L-14.71 46.89L-20.76 46.55L-25.32 45.98L-29.07 45.18L-32.27 44.14L-35.03 42.86L-37.43 41.32L-39.52 39.52L-41.32 37.43L-42.86 35.03L-44.14 32.27L-45.18 29.07L-45.98 25.32L-46.55 20.76L-46.89 14.71L-47 0L-46.89 -14.71L-46.55 -20.76L-45.98 -25.32L-45.18 -29.07L-44.14 -32.27L-42.86 -35.03L-41.32 -37.43L-39.52 -39.52L-37.43 -41.32L-35.03 -42.86L-32.27 -44.14L-29.07 -45.18L-25.32 -45.98L-20.76 -46.55L-14.71 -46.89L-0 -47L14.71 -46.89L20.76 -46.55L25.32 -45.98L29.07 -45.18L32.27 -44.14L35.03 -42.86L37.43 -41.32L39.52 -39.52L41.32 -37.43L42.86 -35.03L44.14 -32.27L45.18 -29.07L45.98 -25.32L46.55 -20.76L46.89 -14.71Z"/><path id="sqr1" d="M51 0L50.88 15.97L50.51 22.53L49.89 27.48L49.02 31.55L47.89 35.02L46.5 38.01L44.84 40.62L42.89 42.89L40.62 44.84L38.01 46.5L35.02 47.89L31.55 49.02L27.48 49.89L22.53 50.51L15.97 50.88L0 51L-15.97 50.88L-22.53 50.51L-27.48 49.89L-31.55 49.02L-35.02 47.89L-38.01 46.5L-40.62 44.84L-42.89 42.89L-44.84 40.62L-46.5 38.01L-47.89 35.02L-49.02 31.55L-49.89 27.48L-50.51 22.53L-50.88 15.97L-51 0L-50.88 -15.97L-50.51 -22.53L-49.89 -27.48L-49.02 -31.55L-47.89 -35.02L-46.5 -38.01L-44.84 -40.62L-42.89 -42.89L-40.62 -44.84L-38.01 -46.5L-35.02 -47.89L-31.55 -49.02L-27.48 -49.89L-22.53 -50.51L-15.97 -50.88L-0 -51L15.97 -50.88L22.53 -50.51L27.48 -49.89L31.55 -49.02L35.02 -47.89L38.01 -46.5L40.62 -44.84L42.89 -42.89L44.84 -40.62L46.5 -38.01L47.89 -35.02L49.02 -31.55L49.89 -27.48L50.51 -22.53L50.88 -15.97Z"/><path id="sqa2" d="M37 0L36.91 11.58L36.64 16.34L36.19 19.93L35.56 22.89L34.75 25.4L33.74 27.58L32.53 29.47L31.11 31.11L29.47 32.53L27.58 33.74L25.4 34.75L22.89 35.56L19.93 36.19L16.34 36.64L11.58 36.91L0 37L-11.58 36.91L-16.34 36.64L-19.93 36.19L-22.89 35.56L-25.4 34.75L-27.58 33.74L-29.47 32.53L-31.11 31.11L-32.53 29.47L-33.74 27.58L-34.75 25.4L-35.56 22.89L-36.19 19.93L-36.64 16.34L-36.91 11.58L-37 0L-36.91 -11.58L-36.64 -16.34L-36.19 -19.93L-35.56 -22.89L-34.75 -25.4L-33.74 -27.58L-32.53 -29.47L-31.11 -31.11L-29.47 -32.53L-27.58 -33.74L-25.4 -34.75L-22.89 -35.56L-19.93 -36.19L-16.34 -36.64L-11.58 -36.91L-0 -37L11.58 -36.91L16.34 -36.64L19.93 -36.19L22.89 -35.56L25.4 -34.75L27.58 -33.74L29.47 -32.53L31.11 -31.11L32.53 -29.47L33.74 -27.58L34.75 -25.4L35.56 -22.89L36.19 -19.93L36.64 -16.34L36.91 -11.58Z"/><path id="sqr2" d="M40.5 0L40.4 12.68L40.11 17.89L39.62 21.82L38.93 25.05L38.03 27.81L36.93 30.19L35.61 32.26L34.06 34.06L32.26 35.61L30.19 36.93L27.81 38.03L25.05 38.93L21.82 39.62L17.89 40.11L12.68 40.4L0 40.5L-12.68 40.4L-17.89 40.11L-21.82 39.62L-25.05 38.93L-27.81 38.03L-30.19 36.93L-32.26 35.61L-34.06 34.06L-35.61 32.26L-36.93 30.19L-38.03 27.81L-38.93 25.05L-39.62 21.82L-40.11 17.89L-40.4 12.68L-40.5 0L-40.4 -12.68L-40.11 -17.89L-39.62 -21.82L-38.93 -25.05L-38.03 -27.81L-36.93 -30.19L-35.61 -32.26L-34.06 -34.06L-32.26 -35.61L-30.19 -36.93L-27.81 -38.03L-25.05 -38.93L-21.82 -39.62L-17.89 -40.11L-12.68 -40.4L-0 -40.5L12.68 -40.4L17.89 -40.11L21.82 -39.62L25.05 -38.93L27.81 -38.03L30.19 -36.93L32.26 -35.61L34.06 -34.06L35.61 -32.26L36.93 -30.19L38.03 -27.81L38.93 -25.05L39.62 -21.82L40.11 -17.89L40.4 -12.68Z"/><path id="sqa3" d="M29 0L28.93 9.08L28.72 12.81L28.37 15.62L27.87 17.94L27.23 19.91L26.44 21.62L25.5 23.1L24.39 24.39L23.1 25.5L21.62 26.44L19.91 27.23L17.94 27.87L15.62 28.37L12.81 28.72L9.08 28.93L0 29L-9.08 28.93L-12.81 28.72L-15.62 28.37L-17.94 27.87L-19.91 27.23L-21.62 26.44L-23.1 25.5L-24.39 24.39L-25.5 23.1L-26.44 21.62L-27.23 19.91L-27.87 17.94L-28.37 15.62L-28.72 12.81L-28.93 9.08L-29 0L-28.93 -9.08L-28.72 -12.81L-28.37 -15.62L-27.87 -17.94L-27.23 -19.91L-26.44 -21.62L-25.5 -23.1L-24.39 -24.39L-23.1 -25.5L-21.62 -26.44L-19.91 -27.23L-17.94 -27.87L-15.62 -28.37L-12.81 -28.72L-9.08 -28.93L-0 -29L9.08 -28.93L12.81 -28.72L15.62 -28.37L17.94 -27.87L19.91 -27.23L21.62 -26.44L23.1 -25.5L24.39 -24.39L25.5 -23.1L26.44 -21.62L27.23 -19.91L27.87 -17.94L28.37 -15.62L28.72 -12.81L28.93 -9.08Z"/><path id="sqr3" d="M32 0L31.92 10.02L31.69 14.13L31.3 17.24L30.76 19.8L30.05 21.97L29.18 23.85L28.13 25.49L26.91 26.91L25.49 28.13L23.85 29.18L21.97 30.05L19.8 30.76L17.24 31.3L14.13 31.69L10.02 31.92L0 32L-10.02 31.92L-14.13 31.69L-17.24 31.3L-19.8 30.76L-21.97 30.05L-23.85 29.18L-25.49 28.13L-26.91 26.91L-28.13 25.49L-29.18 23.85L-30.05 21.97L-30.76 19.8L-31.3 17.24L-31.69 14.13L-31.92 10.02L-32 0L-31.92 -10.02L-31.69 -14.13L-31.3 -17.24L-30.76 -19.8L-30.05 -21.97L-29.18 -23.85L-28.13 -25.49L-26.91 -26.91L-25.49 -28.13L-23.85 -29.18L-21.97 -30.05L-19.8 -30.76L-17.24 -31.3L-14.13 -31.69L-10.02 -31.92L-0 -32L10.02 -31.92L14.13 -31.69L17.24 -31.3L19.8 -30.76L21.97 -30.05L23.85 -29.18L25.49 -28.13L26.91 -26.91L28.13 -25.49L29.18 -23.85L30.05 -21.97L30.76 -19.8L31.3 -17.24L31.69 -14.13L31.92 -10.02Z"/><path id="sqa4" d="M23 0L22.94 7.2L22.78 10.16L22.5 12.39L22.11 14.23L21.6 15.79L20.97 17.14L20.22 18.32L19.34 19.34L18.32 20.22L17.14 20.97L15.79 21.6L14.23 22.11L12.39 22.5L10.16 22.78L7.2 22.94L0 23L-7.2 22.94L-10.16 22.78L-12.39 22.5L-14.23 22.11L-15.79 21.6L-17.14 20.97L-18.32 20.22L-19.34 19.34L-20.22 18.32L-20.97 17.14L-21.6 15.79L-22.11 14.23L-22.5 12.39L-22.78 10.16L-22.94 7.2L-23 0L-22.94 -7.2L-22.78 -10.16L-22.5 -12.39L-22.11 -14.23L-21.6 -15.79L-20.97 -17.14L-20.22 -18.32L-19.34 -19.34L-18.32 -20.22L-17.14 -20.97L-15.79 -21.6L-14.23 -22.11L-12.39 -22.5L-10.16 -22.78L-7.2 -22.94L-0 -23L7.2 -22.94L10.16 -22.78L12.39 -22.5L14.23 -22.11L15.79 -21.6L17.14 -20.97L18.32 -20.22L19.34 -19.34L20.22 -18.32L20.97 -17.14L21.6 -15.79L22.11 -14.23L22.5 -12.39L22.78 -10.16L22.94 -7.2Z"/><path id="sqr4" d="M25.75 0L25.69 8.06L25.5 11.37L25.19 13.87L24.75 15.93L24.18 17.68L23.48 19.19L22.64 20.51L21.65 21.65L20.51 22.64L19.19 23.48L17.68 24.18L15.93 24.75L13.87 25.19L11.37 25.5L8.06 25.69L0 25.75L-8.06 25.69L-11.37 25.5L-13.87 25.19L-15.93 24.75L-17.68 24.18L-19.19 23.48L-20.51 22.64L-21.65 21.65L-22.64 20.51L-23.48 19.19L-24.18 17.68L-24.75 15.93L-25.19 13.87L-25.5 11.37L-25.69 8.06L-25.75 0L-25.69 -8.06L-25.5 -11.37L-25.19 -13.87L-24.75 -15.93L-24.18 -17.68L-23.48 -19.19L-22.64 -20.51L-21.65 -21.65L-20.51 -22.64L-19.19 -23.48L-17.68 -24.18L-15.93 -24.75L-13.87 -25.19L-11.37 -25.5L-8.06 -25.69L-0 -25.75L8.06 -25.69L11.37 -25.5L13.87 -25.19L15.93 -24.75L17.68 -24.18L19.19 -23.48L20.51 -22.64L21.65 -21.65L22.64 -20.51L23.48 -19.19L24.18 -17.68L24.75 -15.93L25.19 -13.87L25.5 -11.37L25.69 -8.06Z"/><path id="sqa5" d="M18.5 0L18.46 5.79L18.32 8.17L18.1 9.97L17.78 11.44L17.37 12.7L16.87 13.79L16.27 14.74L15.56 15.56L14.74 16.27L13.79 16.87L12.7 17.37L11.44 17.78L9.97 18.1L8.17 18.32L5.79 18.46L0 18.5L-5.79 18.46L-8.17 18.32L-9.97 18.1L-11.44 17.78L-12.7 17.37L-13.79 16.87L-14.74 16.27L-15.56 15.56L-16.27 14.74L-16.87 13.79L-17.37 12.7L-17.78 11.44L-18.1 9.97L-18.32 8.17L-18.46 5.79L-18.5 0L-18.46 -5.79L-18.32 -8.17L-18.1 -9.97L-17.78 -11.44L-17.37 -12.7L-16.87 -13.79L-16.27 -14.74L-15.56 -15.56L-14.74 -16.27L-13.79 -16.87L-12.7 -17.37L-11.44 -17.78L-9.97 -18.1L-8.17 -18.32L-5.79 -18.46L-0 -18.5L5.79 -18.46L8.17 -18.32L9.97 -18.1L11.44 -17.78L12.7 -17.37L13.79 -16.87L14.74 -16.27L15.56 -15.56L16.27 -14.74L16.87 -13.79L17.37 -12.7L17.78 -11.44L18.1 -9.97L18.32 -8.17L18.46 -5.79Z"/><path id="sqr5" d="M21.13 0L21.07 6.61L20.92 9.33L20.67 11.38L20.31 13.07L19.84 14.5L19.26 15.75L18.57 16.83L17.76 17.76L16.83 18.57L15.75 19.26L14.5 19.84L13.07 20.31L11.38 20.67L9.33 20.92L6.61 21.07L0 21.13L-6.61 21.07L-9.33 20.92L-11.38 20.67L-13.07 20.31L-14.5 19.84L-15.75 19.26L-16.83 18.57L-17.76 17.76L-18.57 16.83L-19.26 15.75L-19.84 14.5L-20.31 13.07L-20.67 11.38L-20.92 9.33L-21.07 6.61L-21.13 0L-21.07 -6.61L-20.92 -9.33L-20.67 -11.38L-20.31 -13.07L-19.84 -14.5L-19.26 -15.75L-18.57 -16.83L-17.76 -17.76L-16.83 -18.57L-15.75 -19.26L-14.5 -19.84L-13.07 -20.31L-11.38 -20.67L-9.33 -20.92L-6.61 -21.07L-0 -21.13L6.61 -21.07L9.33 -20.92L11.38 -20.67L13.07 -20.31L14.5 -19.84L15.75 -19.26L16.83 -18.57L17.76 -17.76L18.57 -16.83L19.26 -15.75L19.84 -14.5L20.31 -13.07L20.67 -11.38L20.92 -9.33L21.07 -6.61Z"/><path id="sqa6" d="M15 0L14.96 4.7L14.86 6.63L14.67 8.08L14.42 9.28L14.09 10.3L13.68 11.18L13.19 11.95L12.61 12.61L11.95 13.19L11.18 13.68L10.3 14.09L9.28 14.42L8.08 14.67L6.63 14.86L4.7 14.96L0 15L-4.7 14.96L-6.63 14.86L-8.08 14.67L-9.28 14.42L-10.3 14.09L-11.18 13.68L-11.95 13.19L-12.61 12.61L-13.19 11.95L-13.68 11.18L-14.09 10.3L-14.42 9.28L-14.67 8.08L-14.86 6.63L-14.96 4.7L-15 0L-14.96 -4.7L-14.86 -6.63L-14.67 -8.08L-14.42 -9.28L-14.09 -10.3L-13.68 -11.18L-13.19 -11.95L-12.61 -12.61L-11.95 -13.19L-11.18 -13.68L-10.3 -14.09L-9.28 -14.42L-8.08 -14.67L-6.63 -14.86L-4.7 -14.96L-0 -15L4.7 -14.96L6.63 -14.86L8.08 -14.67L9.28 -14.42L10.3 -14.09L11.18 -13.68L11.95 -13.19L12.61 -12.61L13.19 -11.95L13.68 -11.18L14.09 -10.3L14.42 -9.28L14.67 -8.08L14.86 -6.63L14.96 -4.7Z"/><path id="sqr6" d="M17.5 0L17.46 5.48L17.33 7.73L17.12 9.43L16.82 10.83L16.43 12.02L15.96 13.04L15.39 13.94L14.72 14.72L13.94 15.39L13.04 15.96L12.02 16.43L10.83 16.82L9.43 17.12L7.73 17.33L5.48 17.46L0 17.5L-5.48 17.46L-7.73 17.33L-9.43 17.12L-10.83 16.82L-12.02 16.43L-13.04 15.96L-13.94 15.39L-14.72 14.72L-15.39 13.94L-15.96 13.04L-16.43 12.02L-16.82 10.83L-17.12 9.43L-17.33 7.73L-17.46 5.48L-17.5 0L-17.46 -5.48L-17.33 -7.73L-17.12 -9.43L-16.82 -10.83L-16.43 -12.02L-15.96 -13.04L-15.39 -13.94L-14.72 -14.72L-13.94 -15.39L-13.04 -15.96L-12.02 -16.43L-10.83 -16.82L-9.43 -17.12L-7.73 -17.33L-5.48 -17.46L-0 -17.5L5.48 -17.46L7.73 -17.33L9.43 -17.12L10.83 -16.82L12.02 -16.43L13.04 -15.96L13.94 -15.39L14.72 -14.72L15.39 -13.94L15.96 -13.04L16.43 -12.02L16.82 -10.83L17.12 -9.43L17.33 -7.73L17.46 -5.48Z"/></defs><rect x="0.5" y="0.5" width="799" height="2336.5" rx="16" fill="url(#bg)"/><rect x="0.5" y="0.5" width="799" height="2336.5" rx="16" fill="url(#topGlow)"/><rect x="0.5" y="0.5" width="799" height="2336.5" rx="16" fill="none" stroke="url(#border)"/><g fill="#FFFFFF"><circle cx="64" cy="46" r="1.4" opacity="0.25"><animate attributeName="opacity" values="0.08;0.5;0.08" dur="4.2s" begin="0s" repeatCount="indefinite"/></circle><circle cx="128" cy="108" r="1" opacity="0.25"><animate attributeName="opacity" values="0.08;0.5;0.08" dur="3.4s" begin="1.1s" repeatCount="indefinite"/></circle><circle cx="184" cy="30" r="1.2" opacity="0.25"><animate attributeName="opacity" values="0.08;0.5;0.08" dur="5s" begin="0.4s" repeatCount="indefinite"/></circle><circle cx="248" cy="92" r="0.9" opacity="0.25"><animate attributeName="opacity" values="0.08;0.5;0.08" dur="3.8s" begin="2s" repeatCount="indefinite"/></circle><circle cx="352" cy="24" r="1.1" opacity="0.25"><animate attributeName="opacity" values="0.08;0.5;0.08" dur="4.6s" begin="0.9s" repeatCount="indefinite"/></circle><circle cx="448" cy="88" r="1.3" opacity="0.25"><animate attributeName="opacity" values="0.08;0.5;0.08" dur="3.6s" begin="1.6s" repeatCount="indefinite"/></circle><circle cx="544" cy="34" r="1" opacity="0.25"><animate attributeName="opacity" values="0.08;0.5;0.08" dur="4.4s" begin="0.2s" repeatCount="indefinite"/></circle><circle cx="616" cy="104" r="1.2" opacity="0.25"><animate attributeName="opacity" values="0.08;0.5;0.08" dur="3.9s" begin="2.4s" repeatCount="indefinite"/></circle><circle cx="688" cy="52" r="1.4" opacity="0.25"><animate attributeName="opacity" values="0.08;0.5;0.08" dur="4.8s" begin="1.3s" repeatCount="indefinite"/></circle><circle cx="744" cy="118" r="0.9" opacity="0.25"><animate attributeName="opacity" values="0.08;0.5;0.08" dur="3.5s" begin="0.7s" repeatCount="indefinite"/></circle></g><text x="400" y="62" text-anchor="middle" class="title">Wails Contributors</text><text x="400" y="86" text-anchor="middle" class="subtitle">435 contributors · 5,716 commits — thank you!</text><a href="https://github.com/leaanthony" target="_blank" rel="noopener noreferrer" class="link sp" style="--d:87px"><title>@leaanthony · 541 merged PRs541 merged PRsleaanthony@stffabi · 133 merged PRs133 merged PRsstffabi@fbbdev · 92 changelog credits92 changelog creditsfbbdev@misitebao · 76 merged PRs76 merged PRsmisitebao@atterpac · 59 merged PRs59 merged PRsatterpac@taliesin-ai · 56 merged PRs56 merged PRstaliesin-ai@tmclane · 26 merged PRs26 merged PRs@APshenkin · 23 changelog credits23 changelog credits@bh90210 · 22 merged PRs22 merged PRs@lyimmi · 20 merged PRs20 merged PRs@almas-x · 12 merged PRs@mmghv · 12 merged PRs@popaprozac · 12 merged PRs@ianmjones · 11 merged PRs@IanVS · 10 changelog credits@PylotLight · 9 merged PRs@symball · 9 merged PRs@wayneforrest · 9 merged PRs@OlegGulevskyy · 8 merged PRs@agilgur5 · 7 merged PRs@ndianabasi · 7 merged PRs@rh12503 · 7 merged PRs@5aaee9 · 6 changelog credits@acheong08 · 6 changelog credits@ansxuman · 6 merged PRs@Etesam913 · 6 changelog credits@LGiki · 6 changelog credits@marcus-crane · 6 merged PRs@napalu · 6 merged PRs@raguay · 6 merged PRs@sircodemane · 6 merged PRs@abichinger · 5 merged PRs@ATenderholt · 5 merged PRs@jaesung9507 · 5 changelog credits@mbaklor · 5 merged PRs@oSethoum · 5 merged PRs@Snider · 5 merged PRs@yulesxoxo · 5 changelog credits@akhudek · 4 merged PRs@ddmoney420 · 4 merged PRs@dedo1911 · 4 merged PRs@fdidron · 4 merged PRs@haukened · 4 merged PRs@k-muchmore · 4 commits@marktohark · 4 merged PRs@superDingda · 4 merged PRs@xijaja · 4 merged PRs@adalessa · 3 merged PRs@AkshayKalose · 3 merged PRs@AlbinoDrought · 3 merged PRs@BenoitBotton · 3 merged PRs@COD3HUNT3R · 3 merged PRs@copilot-swe-agent · 3 merged PRs@DeltaLaboratory · 3 merged PRs@DiegPS · 3 merged PRs@FrancescoLuzzi · 3 merged PRs@hi019 · 3 merged PRs@joshbuddy · 3 changelog credits@JulioDRF · 3 changelog credits@Kron · 3 changelog credits@overlordtm · 3 changelog credits@pbnjay · 3 merged PRs@puneetdixit200 · 3 changelog credits@robin-samuel · 3 changelog credits@samstanier · 3 changelog credits@scottopell · 3 changelog credits@smac89 · 3 merged PRs@TheFranconianCoder · 3 merged PRs@Tolfx · 3 changelog credits@triadmoko · 3 changelog credits@TwoNull · 3 merged PRs@Vaelatern · 3 merged PRs@ValentinTrinque · 3 merged PRs@wimaha · 3 merged PRs@x-haose · 3 changelog credits@aangelisc · 2 merged PRs@aayush420 · 2 merged PRs@AbdelhadiSeddar · 2 merged PRs@abtin · 2 changelog credits@achhabra2 · 2 merged PRs@Alex6357 · 2 merged PRs@andrewbytecoder · 2 merged PRs@andywenk · 2 changelog credits@antimatter96 · 2 merged PRs@arifali123 · 2 changelog credits@artooro · 2 merged PRs@avengerweb · 2 merged PRs@Bare7a · 2 merged PRs@BillBuilt · 2 merged PRs@binyamin · 2 changelog credits@biuaxia · 2 merged PRs@Bronya0 · 2 merged PRs@bruxaodev · 2 merged PRs@chenxiao1990 · 2 changelog credits@cuigege · 2 changelog credits@daodao97 · 2 changelog credits@Debdut · 2 changelog credits@duolabmeng6 · 2 merged PRs@edwardbrowncross · 2 changelog credits@fkhadra · 2 merged PRs@Gjergj · 2 merged PRs@gotid · 2 changelog credits@gwynforthewyn · 2 merged PRs@h8gi · 2 changelog credits@hfoxy · 2 merged PRs@hkhere · 2 merged PRs@hotafrika · 2 changelog credits@iamhabbeboy · 2 changelog credits@ilgityildirim · 2 merged PRs@jes0131 · 2 merged PRs@jghiloni · 2 merged PRs@josStorer · 2 merged PRs@Junkher · 2 changelog credits@KiddoV · 2 changelog credits@konez2k · 2 merged PRs@lambdajack · 2 changelog credits@lontten · 2 merged PRs@LukenSkyne · 2 changelog credits@lvyaoting · 2 merged PRs@Maicarons2022 · 2 changelog credits@marcio199226 · 2 merged PRs@matryer · 2 commits@mondy · 2 changelog credits@mrf345 · 2 merged PRs@MyNameIsAres · 2 changelog credits@NanoNik · 2 changelog credits@nerdyslacker · 2 merged PRs@nickisworking · 2 changelog credits@o8x · 2 changelog credits@ParkourLiu · 2 changelog credits@ParvinEyvazov · 2 changelog credits@phoenix147 · 2 merged PRs@pierrejoye · 2 merged PRs@polikow · 2 changelog credits@PPTGamer · 2 merged PRs@prurigro · 2 changelog credits@RALIST · 2 merged PRs@rayshoo · 2 changelog credits@rev42 · 2 changelog credits@riadafridishibly · 2 changelog credits@rnice01 · 2 changelog credits@rxliuli · 2 merged PRs@RyoTagami · 2 changelog credits@SamHennessy · 2 changelog credits@SheetJSDev · 2 changelog credits@shinshin86 · 2 merged PRs@sidwebworks · 2 changelog credits@skamensky · 2 changelog credits@stavros-k · 2 merged PRs@stendler · 2 merged PRs@Taiterbase · 2 changelog credits@takuyahara · 2 merged PRs@TechplexEngineer · 2 changelog credits@testwill · 2 merged PRs@TheGB0077 · 2 merged PRs@thiennguyen93 · 2 changelog credits@thomas-senechal · 2 merged PRs@timkippdev · 2 merged PRs@tiny-craft · 2 merged PRs@tomanagle · 2 changelog credits@tuuzed · 2 merged PRs@Wakeful-Cloud · 2 merged PRs@willdot · 2 merged PRs@windom · 2 merged PRs@wucm667 · 2 changelog credits@wux1an · 2 changelog credits@yz4230 · 2 changelog credits@zandercodes · 2 changelog credits@0x3st3 · 1 merged PR@562589540 · 1 merged PR@aalsuwaidi · 1 merged PR@actions-user · 1 commit@AkagiYui · 1 merged PR@AkimioJR · 1 merged PR@albert-sun · 1 merged PR@alexmat · 1 merged PR@AlienRecall · 1 merged PR@Aliuyanfeng · 1 merged PR@Alpa-1 · 1 changelog credit@amaury-tobias · 1 merged PR@aminya · 1 merged PR@AnalogJ · 3 commits@apzuk3 · 1 merged PR@aranggitoar · 1 merged PR@aschey · 1 merged PR@ayatkyo · 1 changelog credit@azamara · 1 merged PR@Baiyuetribe · 1 merged PR@barats · 1 merged PR@bardiauto · 1 commit@barremian · 1 merged PR@Bas950 · 1 merged PR@bdwyertech · 1 merged PR@bearsh · 1 merged PR@BenAicholtz · 1 merged PR@benjamin-thomas · 1 merged PR@benmccann · 1 merged PR@blacksud0 · 1 merged PR@blinkinglight · 1 merged PR@boreq · 1 merged PR@BradHacker · 1 merged PR@Braincompiler · 1 merged PR@brianetaveras · 1 merged PR@brunoborges · 1 merged PR@bt · 1 merged PR@BuckeyeCoder · 1 merged PR@buddyabaddon · 1 merged PR@c-tonneslan · 1 merged PR@cctv1005s · 1 merged PR@cenan · 1 merged PR@chinenual · 1 merged PR@Chronophylos · 1 merged PR@ckilb · 1 merged PR@cristianrgreco · 1 merged PR@cto-mindset · 1 merged PR@cybertramp · 1 merged PR@damiensedgwick · 1 merged PR@danawoodman · 1 merged PR@darkb0ts · 1 merged PR@db47h · 1 merged PR@deining · 1 merged PR@deltajoe · 1 merged PR@dennypenta · 1 merged PR@derhasi · 1 merged PR@dev-kas · 1 merged PR@diogox · 1 merged PR@diorodrigu · 1 merged PR@dominictwlee · 1 merged PR@doracpphp · 1 merged PR@drc5521 · 1 merged PR@dzmitryi-h · 1 merged PR@edai-git · 1 merged PR@edwargix · 1 merged PR@eft · 1 merged PR@ekkohnet · 1 merged PR@eleclin · 1 changelog credit@elie-g · 1 merged PR@erdemkosk · 1 merged PR@eric-tech01 · 1 merged PR@FalcoG · 1 merged PR@fallendusk · 1 merged PR@fcying · 1 merged PR@fengfengzhidao · 1 merged PR@fengweiqiang · 1 merged PR@FerroO2000 · 1 merged PR@fholmqvist · 1 merged PR@fieu · 1 merged PR@figuerom16 · 1 merged PR@firelizzard18 · 1 merged PR@flin7 · 1 merged PR@flofreud · 1 merged PR@fred21O4 · 1 commit@gardc · 1 merged PR@GargantuaX · 1 merged PR@gelleson · 1 merged PR@giopalma · 1 merged PR@Gornius · 1 merged PR@Grantmartin2002 · 1 merged PR@greymoth-jp · 1 merged PR@Gurkengewuerz · 1 merged PR@gursheyss · 1 merged PR@hidewrong · 1 merged PR@Hudolus · 1 merged PR@i7tsov · 1 merged PR@IAFEnvoy · 1 merged PR@iberflow · 1 merged PR@id88 · 1 merged PR@igogrek · 1 merged PR@ironpark · 1 merged PR@JackDoan · 1 merged PR@jakubpeleska · 1 merged PR@jangler · 1 merged PR@Jarek-SRT · 1 merged PR@jasikpark · 1 merged PR@jaypipes · 1 merged PR@jicg · 1 merged PR@johannes-luebke · 1 merged PR@johnmaguire · 1 merged PR@johnmccabe · 1 merged PR@josexy · 1 merged PR@joshdrake · 1 merged PR@joshhardy · 1 changelog credit@joshm998 · 1 merged PR@joshuapare · 1 merged PR@Juneezee · 1 merged PR@justinmoon · 1 merged PR@k1nho · 1 merged PR@kairo913 · 1 merged PR@Khady · 1 merged PR@kmuchmore · 1 merged PR@kodflow · 1 merged PR@kodumulo · 1 merged PR@kraney · 1 merged PR@Krzysztofz01 · 1 changelog credit@ktsivkov · 1 merged PR@kyoto44 · 1 merged PR@lanzafame · 1 commit@LazyClicks · 1 merged PR@leolee3 · 1 merged PR@levinit · 1 merged PR@lian-yang · 1 merged PR@Licoy · 1 merged PR@Liumingxun · 1 merged PR@liuzi6612 · 1 merged PR@lmb1113 · 1 merged PR@ltcovalt · 1 merged PR@lujihong · 1 changelog credit@lukewatts · 1 merged PR@madflow · 1 merged PR@MagicFun1241 · 1 merged PR@Mahcks · 1 merged PR@Mai-Lapyst · 1 changelog credit@marvinhosea · 1 merged PR@MarvinJWendt · 1 merged PR@mateothegreat · 1 merged PR@matholt · 1 changelog credit@matta · 1 merged PR@mattn · 1 commit@meatherly · 1 merged PR@meeehdi-dev · 1 merged PR@MerIijn · 1 merged PR@mewmew · 1 merged PR@mholt · 1 merged PR@michael-freling · 1 merged PR@miclle · 1 merged PR@Mihara · 1 merged PR@mikeee · 1 merged PR@MikeLINGxZ · 1 merged PR@MikeSchaap · 1 merged PR@MIMBOL22 · 1 merged PR@mJehanno · 1 merged PR@mkwsnyder · 1 merged PR@mmalcek · 1 merged PR@mortenolsrud · 1 merged PR@mr-zlaam · 1 merged PR@msal4 · 1 merged PR@narcilee7 · 1 merged PR@nejos97 · 1 merged PR@Nexus26404 · 1 merged PR@nguyenvanduocit · 1 merged PR@nidib · 1 merged PR@nnashwin · 1 merged PR@noahgorstein · 1 merged PR@northes · 1 merged PR@NullCode1337 · 1 merged PR@occamist · 1 merged PR@ocelotsloth · 1 merged PR@oguz-yilmaz · 1 merged PR@orellazri · 1 merged PR@Orijhins · 1 merged PR@patopesto · 1 merged PR@paulbrickwell · 1 merged PR@Peiratooo · 1 merged PR@pekim · 1 merged PR@pernydev · 1 merged PR@phildrip · 1 merged PR@plutov · 1 merged PR@poisonshell · 1 merged PR@pratikmota · 1 merged PR@qaisjp · 1 merged PR@qq540491950 · 1 changelog credit@radish-miyazaki · 1 merged PR@raitonoberu · 1 merged PR@randalmurphal · 1 changelog credit@rcalixte · 1 merged PR@redisviewer · 1 merged PR@redraskal · 1 merged PR@Rested · 1 merged PR@riannucci · 1 merged PR@riquenunes · 1 merged PR@rlshukhov · 1 merged PR@RonaldinhoL · 1 merged PR@ronen25 · 1 merged PR@rprtr258 · 1 merged PR@ruhuang2001 · 1 merged PR@rynsf · 1 merged PR@s12chung · 1 merged PR@salman0ansari · 1 merged PR@SametKUM · 1 merged PR@seanmtracey · 1 merged PR@seleborg · 1 merged PR@sgosiaco · 1 merged PR@sharkmu · 1 merged PR@sid-the-sloth1 · 1 merged PR@sinspired · 1 merged PR@Sipaha · 1 merged PR@sithembiso · 1 merged PR@SophieAu · 1 merged PR@sqot0 · 1 merged PR@ssahillppatell · 1 merged PR@stanislav-zeman · 1 merged PR@stankovic98 · 1 merged PR@stefpap · 1 merged PR@SupianIDz · 1 merged PR@TAINCER · 1 merged PR@taisei-86 · 1 merged PR@taiseiotsuka · 1 changelog credit@Taiwofolu · 1 merged PR@te5se · 1 merged PR@TekWizely · 1 merged PR@tilak999 · 1 merged PR@tk103331 · 1 merged PR@tong3jie · 1 merged PR@tongque0 · 1 merged PR@torabian · 1 merged PR@TuffenDuffen · 1 merged PR@tw1nk · 1 merged PR@Twacqwq · 1 merged PR@veeceey · 1 merged PR@venkadeshshiva · 1 merged PR@vffuunnyy · 1 merged PR@Vilsol · 1 merged PR@Vinayak9769 · 1 merged PR@vinhvoit225 · 1 merged PR@vixalie · 1 merged PR@Vovan-VE · 1 merged PR@vxxvvxxv · 1 merged PR@wandercn · 1 merged PR@Watson-Sei · 1 merged PR@wgjtyu · 1 merged PR@williamsjokvist · 1 merged PR@wizzymore · 1 merged PR@Xelus22 · 1 merged PR@xhofe · 1 merged PR@xisuo67 · 1 merged PR@xjh22222228 · 1 changelog credit@XljBear · 1 merged PR@xtrafrancyz · 1 merged PR@xvertile · 1 merged PR@yesgs · 1 merged PR@youngchoan · 1 merged PR@yuseferi · 1 merged PR@Zeiichenfolge · 1 merged PR@zllovesuki · 1 merged PR@zuiwuchang · 1 merged PRBecome a Contributor +Wails Contributors436 contributors · 5,719 commits — thank you!@leaanthony · 541 merged PRs541 merged PRsleaanthony@stffabi · 133 merged PRs133 merged PRsstffabi@fbbdev · 92 changelog credits92 changelog creditsfbbdev@misitebao · 76 merged PRs76 merged PRsmisitebao@atterpac · 59 merged PRs59 merged PRsatterpac@taliesin-ai · 57 merged PRs57 merged PRstaliesin-ai@tmclane · 26 merged PRs26 merged PRs@APshenkin · 23 changelog credits23 changelog credits@bh90210 · 22 merged PRs22 merged PRs@lyimmi · 20 merged PRs20 merged PRs@almas-x · 12 merged PRs@mmghv · 12 merged PRs@popaprozac · 12 merged PRs@ianmjones · 11 merged PRs@IanVS · 10 changelog credits@wayneforrest · 10 merged PRs@PylotLight · 9 merged PRs@symball · 9 merged PRs@OlegGulevskyy · 8 merged PRs@agilgur5 · 7 merged PRs@ndianabasi · 7 merged PRs@rh12503 · 7 merged PRs@5aaee9 · 6 changelog credits@acheong08 · 6 changelog credits@ansxuman · 6 merged PRs@Etesam913 · 6 changelog credits@LGiki · 6 changelog credits@marcus-crane · 6 merged PRs@napalu · 6 merged PRs@raguay · 6 merged PRs@sircodemane · 6 merged PRs@abichinger · 5 merged PRs@ATenderholt · 5 merged PRs@jaesung9507 · 5 changelog credits@mbaklor · 5 merged PRs@oSethoum · 5 merged PRs@Snider · 5 merged PRs@yulesxoxo · 5 changelog credits@akhudek · 4 merged PRs@ddmoney420 · 4 merged PRs@dedo1911 · 4 merged PRs@fdidron · 4 merged PRs@haukened · 4 merged PRs@k-muchmore · 4 commits@marktohark · 4 merged PRs@superDingda · 4 merged PRs@xijaja · 4 merged PRs@adalessa · 3 merged PRs@AkshayKalose · 3 merged PRs@AlbinoDrought · 3 merged PRs@BenoitBotton · 3 merged PRs@COD3HUNT3R · 3 merged PRs@copilot-swe-agent · 3 merged PRs@DeltaLaboratory · 3 merged PRs@DiegPS · 3 merged PRs@FrancescoLuzzi · 3 merged PRs@hi019 · 3 merged PRs@joshbuddy · 3 changelog credits@JulioDRF · 3 changelog credits@Kron · 3 changelog credits@overlordtm · 3 changelog credits@pbnjay · 3 merged PRs@puneetdixit200 · 3 changelog credits@robin-samuel · 3 changelog credits@samstanier · 3 changelog credits@scottopell · 3 changelog credits@smac89 · 3 merged PRs@TheFranconianCoder · 3 merged PRs@Tolfx · 3 changelog credits@triadmoko · 3 changelog credits@TwoNull · 3 merged PRs@Vaelatern · 3 merged PRs@ValentinTrinque · 3 merged PRs@wimaha · 3 merged PRs@x-haose · 3 changelog credits@aangelisc · 2 merged PRs@aayush420 · 2 merged PRs@AbdelhadiSeddar · 2 merged PRs@abtin · 2 changelog credits@achhabra2 · 2 merged PRs@Alex6357 · 2 merged PRs@andrewbytecoder · 2 merged PRs@andywenk · 2 changelog credits@antimatter96 · 2 merged PRs@arifali123 · 2 changelog credits@artooro · 2 merged PRs@avengerweb · 2 merged PRs@Bare7a · 2 merged PRs@BillBuilt · 2 merged PRs@binyamin · 2 changelog credits@biuaxia · 2 merged PRs@Bronya0 · 2 merged PRs@bruxaodev · 2 merged PRs@chenxiao1990 · 2 changelog credits@cuigege · 2 changelog credits@daodao97 · 2 changelog credits@Debdut · 2 changelog credits@duolabmeng6 · 2 merged PRs@edwardbrowncross · 2 changelog credits@fkhadra · 2 merged PRs@Gjergj · 2 merged PRs@gotid · 2 changelog credits@gwynforthewyn · 2 merged PRs@h8gi · 2 changelog credits@hfoxy · 2 merged PRs@hkhere · 2 merged PRs@hotafrika · 2 changelog credits@iamhabbeboy · 2 changelog credits@ilgityildirim · 2 merged PRs@jes0131 · 2 merged PRs@jghiloni · 2 merged PRs@josStorer · 2 merged PRs@Junkher · 2 changelog credits@KiddoV · 2 changelog credits@konez2k · 2 merged PRs@lambdajack · 2 changelog credits@lontten · 2 merged PRs@LukenSkyne · 2 changelog credits@lvyaoting · 2 merged PRs@Maicarons2022 · 2 changelog credits@marcio199226 · 2 merged PRs@matryer · 2 commits@mondy · 2 changelog credits@mrf345 · 2 merged PRs@MyNameIsAres · 2 changelog credits@NanoNik · 2 changelog credits@nerdyslacker · 2 merged PRs@nickisworking · 2 changelog credits@o8x · 2 changelog credits@ParkourLiu · 2 changelog credits@ParvinEyvazov · 2 changelog credits@phoenix147 · 2 merged PRs@pierrejoye · 2 merged PRs@polikow · 2 changelog credits@PPTGamer · 2 merged PRs@prurigro · 2 changelog credits@RALIST · 2 merged PRs@rayshoo · 2 changelog credits@rev42 · 2 changelog credits@riadafridishibly · 2 changelog credits@rnice01 · 2 changelog credits@rxliuli · 2 merged PRs@RyoTagami · 2 changelog credits@SamHennessy · 2 changelog credits@SheetJSDev · 2 changelog credits@shinshin86 · 2 merged PRs@sidwebworks · 2 changelog credits@skamensky · 2 changelog credits@stavros-k · 2 merged PRs@stendler · 2 merged PRs@Taiterbase · 2 changelog credits@takuyahara · 2 merged PRs@TechplexEngineer · 2 changelog credits@testwill · 2 merged PRs@TheGB0077 · 2 merged PRs@thiennguyen93 · 2 changelog credits@thomas-senechal · 2 merged PRs@timkippdev · 2 merged PRs@tiny-craft · 2 merged PRs@tomanagle · 2 changelog credits@tuuzed · 2 merged PRs@Wakeful-Cloud · 2 merged PRs@willdot · 2 merged PRs@windom · 2 merged PRs@wucm667 · 2 changelog credits@wux1an · 2 changelog credits@yz4230 · 2 changelog credits@zandercodes · 2 changelog credits@0x3st3 · 1 merged PR@562589540 · 1 merged PR@aalsuwaidi · 1 merged PR@actions-user · 1 commit@AkagiYui · 1 merged PR@AkimioJR · 1 merged PR@albert-sun · 1 merged PR@alexmat · 1 merged PR@AlienRecall · 1 merged PR@Aliuyanfeng · 1 merged PR@Alpa-1 · 1 changelog credit@amaury-tobias · 1 merged PR@aminya · 1 merged PR@AnalogJ · 3 commits@apzuk3 · 1 merged PR@aranggitoar · 1 merged PR@aschey · 1 merged PR@ayatkyo · 1 changelog credit@azamara · 1 merged PR@Baiyuetribe · 1 merged PR@barats · 1 merged PR@bardiauto · 1 commit@barremian · 1 merged PR@Bas950 · 1 merged PR@bdwyertech · 1 merged PR@bearsh · 1 merged PR@BenAicholtz · 1 merged PR@benjamin-thomas · 1 merged PR@benmccann · 1 merged PR@blacksud0 · 1 merged PR@blinkinglight · 1 merged PR@boreq · 1 merged PR@BradHacker · 1 merged PR@Braincompiler · 1 merged PR@brianetaveras · 1 merged PR@brunoborges · 1 merged PR@bt · 1 merged PR@BuckeyeCoder · 1 merged PR@buddyabaddon · 1 merged PR@c-tonneslan · 1 merged PR@cctv1005s · 1 merged PR@cenan · 1 merged PR@chinenual · 1 merged PR@Chronophylos · 1 merged PR@ckilb · 1 merged PR@cristianrgreco · 1 merged PR@cto-mindset · 1 merged PR@cybertramp · 1 merged PR@damiensedgwick · 1 merged PR@danawoodman · 1 merged PR@darkb0ts · 1 merged PR@db47h · 1 merged PR@deining · 1 merged PR@deltajoe · 1 merged PR@dennypenta · 1 merged PR@derhasi · 1 merged PR@dev-kas · 1 merged PR@diogox · 1 merged PR@diorodrigu · 1 merged PR@dominictwlee · 1 merged PR@doracpphp · 1 merged PR@drc5521 · 1 merged PR@dzmitryi-h · 1 merged PR@edai-git · 1 merged PR@edwargix · 1 merged PR@eft · 1 merged PR@ekkohnet · 1 merged PR@eleclin · 1 changelog credit@elie-g · 1 merged PR@erdemkosk · 1 merged PR@eric-tech01 · 1 merged PR@FalcoG · 1 merged PR@fallendusk · 1 merged PR@fcying · 1 merged PR@fengfengzhidao · 1 merged PR@fengweiqiang · 1 merged PR@FerroO2000 · 1 merged PR@fholmqvist · 1 merged PR@fieu · 1 merged PR@figuerom16 · 1 merged PR@firelizzard18 · 1 merged PR@flin7 · 1 merged PR@flofreud · 1 merged PR@fred21O4 · 1 commit@gardc · 1 merged PR@GargantuaX · 1 merged PR@gelleson · 1 merged PR@giopalma · 1 merged PR@Gornius · 1 merged PR@Grantmartin2002 · 1 merged PR@greymoth-jp · 1 merged PR@Gurkengewuerz · 1 merged PR@gursheyss · 1 merged PR@hidewrong · 1 merged PR@Hudolus · 1 merged PR@i7tsov · 1 merged PR@IAFEnvoy · 1 merged PR@iberflow · 1 merged PR@id88 · 1 merged PR@igogrek · 1 merged PR@ironpark · 1 merged PR@JackDoan · 1 merged PR@jakubpeleska · 1 merged PR@jangler · 1 merged PR@Jarek-SRT · 1 merged PR@jasikpark · 1 merged PR@jaypipes · 1 merged PR@jicg · 1 merged PR@johannes-luebke · 1 merged PR@johnmaguire · 1 merged PR@johnmccabe · 1 merged PR@josexy · 1 merged PR@joshdrake · 1 merged PR@joshhardy · 1 changelog credit@joshm998 · 1 merged PR@joshuapare · 1 merged PR@Juneezee · 1 merged PR@justinmoon · 1 merged PR@k1nho · 1 merged PR@kairo913 · 1 merged PR@Khady · 1 merged PR@kmuchmore · 1 merged PR@kodflow · 1 merged PR@kodumulo · 1 merged PR@kraney · 1 merged PR@Krzysztofz01 · 1 changelog credit@ktsivkov · 1 merged PR@kyoto44 · 1 merged PR@lanzafame · 1 commit@LazyClicks · 1 merged PR@leolee3 · 1 merged PR@levinit · 1 merged PR@lian-yang · 1 merged PR@Licoy · 1 merged PR@Liumingxun · 1 merged PR@liuzi6612 · 1 merged PR@lmb1113 · 1 merged PR@ltcovalt · 1 merged PR@lujihong · 1 changelog credit@lukewatts · 1 merged PR@madflow · 1 merged PR@MagicFun1241 · 1 merged PR@Mahcks · 1 merged PR@Mai-Lapyst · 1 changelog credit@marvinhosea · 1 merged PR@MarvinJWendt · 1 merged PR@mateothegreat · 1 merged PR@matholt · 1 changelog credit@matta · 1 merged PR@mattn · 1 commit@meatherly · 1 merged PR@meeehdi-dev · 1 merged PR@MerIijn · 1 merged PR@mewmew · 1 merged PR@mholt · 1 merged PR@michael-freling · 1 merged PR@miclle · 1 merged PR@Mihara · 1 merged PR@mikeee · 1 merged PR@MikeLINGxZ · 1 merged PR@MikeSchaap · 1 merged PR@MIMBOL22 · 1 merged PR@mJehanno · 1 merged PR@mkwsnyder · 1 merged PR@mmalcek · 1 merged PR@mortenolsrud · 1 merged PR@mr-zlaam · 1 merged PR@msal4 · 1 merged PR@narcilee7 · 1 merged PR@nejos97 · 1 merged PR@Nexus26404 · 1 merged PR@nguyenvanduocit · 1 merged PR@nidib · 1 merged PR@nnashwin · 1 merged PR@noahgorstein · 1 merged PR@northes · 1 merged PR@NullCode1337 · 1 merged PR@occamist · 1 merged PR@ocelotsloth · 1 merged PR@oguz-yilmaz · 1 merged PR@orellazri · 1 merged PR@Orijhins · 1 merged PR@patopesto · 1 merged PR@paulbrickwell · 1 merged PR@Peiratooo · 1 merged PR@pekim · 1 merged PR@pernydev · 1 merged PR@phildrip · 1 merged PR@plutov · 1 merged PR@poisonshell · 1 merged PR@pratikmota · 1 merged PR@qaisjp · 1 merged PR@qq540491950 · 1 changelog credit@radish-miyazaki · 1 merged PR@raitonoberu · 1 merged PR@randalmurphal · 1 changelog credit@rcalixte · 1 merged PR@redisviewer · 1 merged PR@redraskal · 1 merged PR@Rested · 1 merged PR@riannucci · 1 merged PR@riquenunes · 1 merged PR@rlshukhov · 1 merged PR@RonaldinhoL · 1 merged PR@ronen25 · 1 merged PR@rprtr258 · 1 merged PR@ruhuang2001 · 1 merged PR@rynsf · 1 merged PR@s12chung · 1 merged PR@salman0ansari · 1 merged PR@SametKUM · 1 merged PR@savely-krasovsky · 1 merged PR@seanmtracey · 1 merged PR@seleborg · 1 merged PR@sgosiaco · 1 merged PR@sharkmu · 1 merged PR@sid-the-sloth1 · 1 merged PR@sinspired · 1 merged PR@Sipaha · 1 merged PR@sithembiso · 1 merged PR@SophieAu · 1 merged PR@sqot0 · 1 merged PR@ssahillppatell · 1 merged PR@stanislav-zeman · 1 merged PR@stankovic98 · 1 merged PR@stefpap · 1 merged PR@SupianIDz · 1 merged PR@TAINCER · 1 merged PR@taisei-86 · 1 merged PR@taiseiotsuka · 1 changelog credit@Taiwofolu · 1 merged PR@te5se · 1 merged PR@TekWizely · 1 merged PR@tilak999 · 1 merged PR@tk103331 · 1 merged PR@tong3jie · 1 merged PR@tongque0 · 1 merged PR@torabian · 1 merged PR@TuffenDuffen · 1 merged PR@tw1nk · 1 merged PR@Twacqwq · 1 merged PR@veeceey · 1 merged PR@venkadeshshiva · 1 merged PR@vffuunnyy · 1 merged PR@Vilsol · 1 merged PR@Vinayak9769 · 1 merged PR@vinhvoit225 · 1 merged PR@vixalie · 1 merged PR@Vovan-VE · 1 merged PR@vxxvvxxv · 1 merged PR@wandercn · 1 merged PR@Watson-Sei · 1 merged PR@wgjtyu · 1 merged PR@williamsjokvist · 1 merged PR@wizzymore · 1 merged PR@Xelus22 · 1 merged PR@xhofe · 1 merged PR@xisuo67 · 1 merged PR@xjh22222228 · 1 changelog credit@XljBear · 1 merged PR@xtrafrancyz · 1 merged PR@xvertile · 1 merged PR@yesgs · 1 merged PR@youngchoan · 1 merged PR@yuseferi · 1 merged PR@Zeiichenfolge · 1 merged PR@zllovesuki · 1 merged PR@zuiwuchang · 1 merged PRBecome a Contributor diff --git a/website/static/img/sponsors.svg b/website/static/img/sponsors.svg index bccbc9cf288..72887ffe7c5 100644 --- a/website/static/img/sponsors.svg +++ b/website/static/img/sponsors.svg @@ -92,4 +92,4 @@ text { .sp:hover .pulse { animation: none; } } -Wails SponsorsThank you to everyone who supports the projectCHAMPIONAstarte Industries (@AstarteIndustries)Astarte IndustriesGOLD SPONSORSCosine (@CosineAI)CosineSILVER SPONSORSJohno Scott (@johnoscott)Johno ScottMichael J. Barton (@mbartisan)Michael J. Bart…Orb (@orbforge)OrbBRONZE SPONSORSArgus Labs (@Argus-Labs)Argus LabsCodeRabbit (@coderabbitai)CodeRabbitKazuya Gokita (@kazoo04)Kazuya GokitaKeygen (@keygen-sh)KeygenCody Bentley (@sircodemane)Cody BentleyCOVERING COSTSKevin Brisson (@kbrisso)Michael Stiles (@mstiles-grs)Sander Steffann (@steffann)BUYING BREAKFASTJohn Wilson (@johnwilson)lewlazarus (@lewlazarus)Michael Belokon (@mibeon)Zach Botterman (@popaprozac)Tai Groot (@taigrr)Tom Wu (@tomyjwu)BUYING COFFEE5aaee9 (@5aaee9)Amolith (@Amolith)SlawomirBuszko (@SlawomirBuszko)Alex Viscreanu (@aexvir)Chris Keenan (@christolo)Eric (@ericfernance)Hari Bhaskaran (@harikb)Iain Collins (@iaincollins)Ian M. Jones (@ianmjones)Sascha Loishandl (@loissascha)Gianluca Onorato (@lucaono13)Masaya Nasu (@nasum)Per Tillisch (@per1234)QuEST Rail LLC (@questrail)Will Cory (@roninjin10)Trea Hauet (@trea)Tyler (@tylertravisty)HELPERS大井さかな (@01397)7csc (@7csc)Hestia (@Hestia-23)Andrew Schreiber (@andrewschreiber)Fabien Brocklesby (@fabienbrocklesby)Glenn Lewis (@gmlewis)JL Griffin (@griffinwebnet)Ian Sinnott (@iansinnott)Johannes Lübke (@johannes-luebke)Joe Constant (@lazyguru)robertg (@rgehrsitz)Xenon007 (@xenon007)Bare7a (@Bare7a)Sami (@gnomeria)Become a Sponsor +Wails SponsorsThank you to everyone who supports the projectCHAMPIONAstarte Industries (@AstarteIndustries)Astarte IndustriesGOLD SPONSORSCosine (@CosineAI)CosineSILVER SPONSORSJohno Scott (@johnoscott)Johno ScottMichael J. Barton (@mbartisan)Michael J. Bart…Orb (@orbforge)OrbBRONZE SPONSORSArgus Labs (@Argus-Labs)Argus LabsCodeRabbit (@coderabbitai)CodeRabbitKazuya Gokita (@kazoo04)Kazuya GokitaKeygen (@keygen-sh)KeygenCody Bentley (@sircodemane)Cody BentleyCOVERING COSTSKevin Brisson (@kbrisso)Michael Stiles (@mstiles-grs)Sander Steffann (@steffann)BUYING BREAKFASTJohn Wilson (@johnwilson)lewlazarus (@lewlazarus)Michael Belokon (@mibeon)Zach Botterman (@popaprozac)Tai Groot (@taigrr)Tom Wu (@tomyjwu)BUYING COFFEE5aaee9 (@5aaee9)Amolith (@Amolith)SlawomirBuszko (@SlawomirBuszko)Alex Viscreanu (@aexvir)Chris Keenan (@christolo)Eric (@ericfernance)Hari Bhaskaran (@harikb)Iain Collins (@iaincollins)Ian M. Jones (@ianmjones)Sascha Loishandl (@loissascha)Gianluca Onorato (@lucaono13)Masaya Nasu (@nasum)Per Tillisch (@per1234)QuEST Rail LLC (@questrail)Will Cory (@roninjin10)Trea Hauet (@trea)Tyler (@tylertravisty)HELPERS大井さかな (@01397)7csc (@7csc)Hestia (@Hestia-23)Andrew Schreiber (@andrewschreiber)Fabien Brocklesby (@fabienbrocklesby)Glenn Lewis (@gmlewis)JL Griffin (@griffinwebnet)Ian Sinnott (@iansinnott)Johannes Lübke (@johannes-luebke)Joe Constant (@lazyguru)robertg (@rgehrsitz)Xenon007 (@xenon007)Bare7a (@Bare7a)LittleYuan (@LittleSource)Sami (@gnomeria)Become a Sponsor From 3440ae554b8ae3c0fffb7f7a778ba778b6bbf1e5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 8 Jul 2026 15:48:44 +0000 Subject: [PATCH 22/29] chore(v3): bump to v3.0.0-alpha2.117 and update changelog [skip ci] --- docs/src/content/docs/changelog.mdx | 8 ++++++++ v3/UNRELEASED_CHANGELOG.md | 2 -- v3/internal/version/version.txt | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/src/content/docs/changelog.mdx b/docs/src/content/docs/changelog.mdx index 32fbc6caa33..5425ac6628a 100644 --- a/docs/src/content/docs/changelog.mdx +++ b/docs/src/content/docs/changelog.mdx @@ -31,6 +31,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 */ ## [Unreleased] +## v3.0.0-alpha2.117 - 2026-07-08 + +## Added +- Implement custom hit-test logic for non-client regions on Windows in [PR](https://github.com/wailsapp/wails/pull/5462) by @savely-krasovsky + +## Changed +- Configure WebView2 monitor-scale detection based on UseVisualHosting in [PR](https://github.com/wailsapp/wails/pull/5761) by @wayneforrest + ## v3.0.0-alpha2.116 - 2026-07-07 ## Added diff --git a/v3/UNRELEASED_CHANGELOG.md b/v3/UNRELEASED_CHANGELOG.md index a6159255cb6..2ebe4eb0b50 100644 --- a/v3/UNRELEASED_CHANGELOG.md +++ b/v3/UNRELEASED_CHANGELOG.md @@ -17,11 +17,9 @@ After processing, the content will be moved to the main changelog and this file ## Added -- Implement custom hit-test logic for non-client regions on Windows in [PR](https://github.com/wailsapp/wails/pull/5462) by @savely-krasovsky ## Changed -- Configure WebView2 monitor-scale detection based on UseVisualHosting in [PR](https://github.com/wailsapp/wails/pull/5761) by @wayneforrest ## Fixed diff --git a/v3/internal/version/version.txt b/v3/internal/version/version.txt index 3d0ac52e508..381bc044747 100644 --- a/v3/internal/version/version.txt +++ b/v3/internal/version/version.txt @@ -1 +1 @@ -v3.0.0-alpha2.116 \ No newline at end of file +v3.0.0-alpha2.117 \ No newline at end of file From 4f0e5ed215e4ac02f3a22cb7553abb7bd7218e39 Mon Sep 17 00:00:00 2001 From: Etesam Date: Sun, 12 Jul 2026 01:25:26 -0400 Subject: [PATCH 23/29] Pass mouse events through to WKWebView when EnableFileDrop:true --- v3/pkg/application/webview_window_darwin_drag.m | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/v3/pkg/application/webview_window_darwin_drag.m b/v3/pkg/application/webview_window_darwin_drag.m index 3dc2cf9ea1f..9adcf4632cb 100644 --- a/v3/pkg/application/webview_window_darwin_drag.m +++ b/v3/pkg/application/webview_window_darwin_drag.m @@ -22,6 +22,13 @@ - (instancetype)initWithFrame:(NSRect)frameRect { return self; } +// Pass mouse events through to the WKWebView underneath so CSS :hover, +// mousemove, and cursor updates work. Drag-and-drop delivery uses +// registerForDraggedTypes + geometry, not hitTest, so file drop is unaffected. +- (NSView *)hitTest:(NSPoint)point { + return nil; +} + // draggingEntered: - (NSDragOperation)draggingEntered:(id)sender { NSPasteboard *pasteboard = [sender draggingPasteboard]; From f681ae8725988a12a6bc4da15fdc712e3b7862c8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 14 Jul 2026 00:31:10 +0000 Subject: [PATCH 24/29] chore: update sponsors.svg and contributors.svg [skip ci] --- website/static/img/sponsors.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/static/img/sponsors.svg b/website/static/img/sponsors.svg index 72887ffe7c5..9119ca3ebe9 100644 --- a/website/static/img/sponsors.svg +++ b/website/static/img/sponsors.svg @@ -92,4 +92,4 @@ text { .sp:hover .pulse { animation: none; } } -Wails SponsorsThank you to everyone who supports the projectCHAMPIONAstarte Industries (@AstarteIndustries)Astarte IndustriesGOLD SPONSORSCosine (@CosineAI)CosineSILVER SPONSORSJohno Scott (@johnoscott)Johno ScottMichael J. Barton (@mbartisan)Michael J. Bart…Orb (@orbforge)OrbBRONZE SPONSORSArgus Labs (@Argus-Labs)Argus LabsCodeRabbit (@coderabbitai)CodeRabbitKazuya Gokita (@kazoo04)Kazuya GokitaKeygen (@keygen-sh)KeygenCody Bentley (@sircodemane)Cody BentleyCOVERING COSTSKevin Brisson (@kbrisso)Michael Stiles (@mstiles-grs)Sander Steffann (@steffann)BUYING BREAKFASTJohn Wilson (@johnwilson)lewlazarus (@lewlazarus)Michael Belokon (@mibeon)Zach Botterman (@popaprozac)Tai Groot (@taigrr)Tom Wu (@tomyjwu)BUYING COFFEE5aaee9 (@5aaee9)Amolith (@Amolith)SlawomirBuszko (@SlawomirBuszko)Alex Viscreanu (@aexvir)Chris Keenan (@christolo)Eric (@ericfernance)Hari Bhaskaran (@harikb)Iain Collins (@iaincollins)Ian M. Jones (@ianmjones)Sascha Loishandl (@loissascha)Gianluca Onorato (@lucaono13)Masaya Nasu (@nasum)Per Tillisch (@per1234)QuEST Rail LLC (@questrail)Will Cory (@roninjin10)Trea Hauet (@trea)Tyler (@tylertravisty)HELPERS大井さかな (@01397)7csc (@7csc)Hestia (@Hestia-23)Andrew Schreiber (@andrewschreiber)Fabien Brocklesby (@fabienbrocklesby)Glenn Lewis (@gmlewis)JL Griffin (@griffinwebnet)Ian Sinnott (@iansinnott)Johannes Lübke (@johannes-luebke)Joe Constant (@lazyguru)robertg (@rgehrsitz)Xenon007 (@xenon007)Bare7a (@Bare7a)LittleYuan (@LittleSource)Sami (@gnomeria)Become a Sponsor +Wails SponsorsThank you to everyone who supports the projectCHAMPIONAstarte Industries (@AstarteIndustries)Astarte IndustriesGOLD SPONSORSCosine (@CosineAI)CosineSILVER SPONSORSJohno Scott (@johnoscott)Johno ScottMichael J. Barton (@mbartisan)Michael J. Bart…Orb (@orbforge)OrbBRONZE SPONSORSArgus Labs (@Argus-Labs)Argus LabsCodeRabbit (@coderabbitai)CodeRabbitKazuya Gokita (@kazoo04)Kazuya GokitaKeygen (@keygen-sh)KeygenCody Bentley (@sircodemane)Cody BentleyCOVERING COSTSKevin Brisson (@kbrisso)Michael Stiles (@mstiles-grs)Sander Steffann (@steffann)BUYING BREAKFASTJohn Wilson (@johnwilson)lewlazarus (@lewlazarus)Michael Belokon (@mibeon)Zach Botterman (@popaprozac)Tai Groot (@taigrr)Tom Wu (@tomyjwu)BUYING COFFEE5aaee9 (@5aaee9)Amolith (@Amolith)SlawomirBuszko (@SlawomirBuszko)Alex Viscreanu (@aexvir)Chris Keenan (@christolo)Eric (@ericfernance)Hari Bhaskaran (@harikb)Iain Collins (@iaincollins)Ian M. Jones (@ianmjones)Sascha Loishandl (@loissascha)Gianluca Onorato (@lucaono13)Masaya Nasu (@nasum)Per Tillisch (@per1234)QuEST Rail LLC (@questrail)Will Cory (@roninjin10)Trea Hauet (@trea)Tyler (@tylertravisty)HELPERS大井さかな (@01397)7csc (@7csc)Hestia (@Hestia-23)Andrew Schreiber (@andrewschreiber)Fabien Brocklesby (@fabienbrocklesby)Glenn Lewis (@gmlewis)JL Griffin (@griffinwebnet)Ian Sinnott (@iansinnott)Johannes Lübke (@johannes-luebke)Joe Constant (@lazyguru)robertg (@rgehrsitz)Xenon007 (@xenon007)Bare7a (@Bare7a)LittleYuan (@LittleSource)Sami (@gnomeria)Become a Sponsor From 107e42c088b8648a0d9c35abb9ceead050474a8b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2026 00:32:11 +0000 Subject: [PATCH 25/29] chore: update sponsors.svg and contributors.svg [skip ci] --- website/static/img/sponsors.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/static/img/sponsors.svg b/website/static/img/sponsors.svg index 9119ca3ebe9..24b0a500e73 100644 --- a/website/static/img/sponsors.svg +++ b/website/static/img/sponsors.svg @@ -92,4 +92,4 @@ text { .sp:hover .pulse { animation: none; } } -Wails SponsorsThank you to everyone who supports the projectCHAMPIONAstarte Industries (@AstarteIndustries)Astarte IndustriesGOLD SPONSORSCosine (@CosineAI)CosineSILVER SPONSORSJohno Scott (@johnoscott)Johno ScottMichael J. Barton (@mbartisan)Michael J. Bart…Orb (@orbforge)OrbBRONZE SPONSORSArgus Labs (@Argus-Labs)Argus LabsCodeRabbit (@coderabbitai)CodeRabbitKazuya Gokita (@kazoo04)Kazuya GokitaKeygen (@keygen-sh)KeygenCody Bentley (@sircodemane)Cody BentleyCOVERING COSTSKevin Brisson (@kbrisso)Michael Stiles (@mstiles-grs)Sander Steffann (@steffann)BUYING BREAKFASTJohn Wilson (@johnwilson)lewlazarus (@lewlazarus)Michael Belokon (@mibeon)Zach Botterman (@popaprozac)Tai Groot (@taigrr)Tom Wu (@tomyjwu)BUYING COFFEE5aaee9 (@5aaee9)Amolith (@Amolith)SlawomirBuszko (@SlawomirBuszko)Alex Viscreanu (@aexvir)Chris Keenan (@christolo)Eric (@ericfernance)Hari Bhaskaran (@harikb)Iain Collins (@iaincollins)Ian M. Jones (@ianmjones)Sascha Loishandl (@loissascha)Gianluca Onorato (@lucaono13)Masaya Nasu (@nasum)Per Tillisch (@per1234)QuEST Rail LLC (@questrail)Will Cory (@roninjin10)Trea Hauet (@trea)Tyler (@tylertravisty)HELPERS大井さかな (@01397)7csc (@7csc)Hestia (@Hestia-23)Andrew Schreiber (@andrewschreiber)Fabien Brocklesby (@fabienbrocklesby)Glenn Lewis (@gmlewis)JL Griffin (@griffinwebnet)Ian Sinnott (@iansinnott)Johannes Lübke (@johannes-luebke)Joe Constant (@lazyguru)robertg (@rgehrsitz)Xenon007 (@xenon007)Bare7a (@Bare7a)LittleYuan (@LittleSource)Sami (@gnomeria)Become a Sponsor +Wails SponsorsThank you to everyone who supports the projectCHAMPIONAstarte Industries (@AstarteIndustries)Astarte IndustriesGOLD SPONSORSCosine (@CosineAI)CosineSILVER SPONSORSJohno Scott (@johnoscott)Johno ScottMichael J. Barton (@mbartisan)Michael J. Bart…Orb (@orbforge)OrbBRONZE SPONSORSArgus Labs (@Argus-Labs)Argus LabsCodeRabbit (@coderabbitai)CodeRabbitKazuya Gokita (@kazoo04)Kazuya GokitaKeygen (@keygen-sh)KeygenCody Bentley (@sircodemane)Cody BentleyCOVERING COSTSKevin Brisson (@kbrisso)Michael Stiles (@mstiles-grs)Sander Steffann (@steffann)BUYING BREAKFASTJohn Wilson (@johnwilson)lewlazarus (@lewlazarus)Michael Belokon (@mibeon)Zach Botterman (@popaprozac)Tai Groot (@taigrr)Tom Wu (@tomyjwu)BUYING COFFEE5aaee9 (@5aaee9)Amolith (@Amolith)SlawomirBuszko (@SlawomirBuszko)Alex Viscreanu (@aexvir)Chris Keenan (@christolo)Eric (@ericfernance)Hari Bhaskaran (@harikb)Iain Collins (@iaincollins)Ian M. Jones (@ianmjones)Sascha Loishandl (@loissascha)Gianluca Onorato (@lucaono13)Masaya Nasu (@nasum)Per Tillisch (@per1234)QuEST Rail LLC (@questrail)Will Cory (@roninjin10)Trea Hauet (@trea)Tyler (@tylertravisty)HELPERS大井さかな (@01397)7csc (@7csc)Hestia (@Hestia-23)Andrew Schreiber (@andrewschreiber)Glenn Lewis (@gmlewis)JL Griffin (@griffinwebnet)Ian Sinnott (@iansinnott)Johannes Lübke (@johannes-luebke)Joe Constant (@lazyguru)robertg (@rgehrsitz)Xenon007 (@xenon007)Bare7a (@Bare7a)LittleYuan (@LittleSource)Sami (@gnomeria)Become a Sponsor From f638b6131e034caa3b7aa01d7cbc63a8a59d86cb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 21 Jul 2026 00:34:09 +0000 Subject: [PATCH 26/29] chore: update sponsors.svg and contributors.svg [skip ci] --- website/static/img/contributors.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/static/img/contributors.svg b/website/static/img/contributors.svg index 1e729f0dae7..edf0292e725 100644 --- a/website/static/img/contributors.svg +++ b/website/static/img/contributors.svg @@ -105,4 +105,4 @@ text { .chip { transition: none; } } -Wails Contributors436 contributors · 5,719 commits — thank you!@leaanthony · 541 merged PRs541 merged PRsleaanthony@stffabi · 133 merged PRs133 merged PRsstffabi@fbbdev · 92 changelog credits92 changelog creditsfbbdev@misitebao · 76 merged PRs76 merged PRsmisitebao@atterpac · 59 merged PRs59 merged PRsatterpac@taliesin-ai · 57 merged PRs57 merged PRstaliesin-ai@tmclane · 26 merged PRs26 merged PRs@APshenkin · 23 changelog credits23 changelog credits@bh90210 · 22 merged PRs22 merged PRs@lyimmi · 20 merged PRs20 merged PRs@almas-x · 12 merged PRs@mmghv · 12 merged PRs@popaprozac · 12 merged PRs@ianmjones · 11 merged PRs@IanVS · 10 changelog credits@wayneforrest · 10 merged PRs@PylotLight · 9 merged PRs@symball · 9 merged PRs@OlegGulevskyy · 8 merged PRs@agilgur5 · 7 merged PRs@ndianabasi · 7 merged PRs@rh12503 · 7 merged PRs@5aaee9 · 6 changelog credits@acheong08 · 6 changelog credits@ansxuman · 6 merged PRs@Etesam913 · 6 changelog credits@LGiki · 6 changelog credits@marcus-crane · 6 merged PRs@napalu · 6 merged PRs@raguay · 6 merged PRs@sircodemane · 6 merged PRs@abichinger · 5 merged PRs@ATenderholt · 5 merged PRs@jaesung9507 · 5 changelog credits@mbaklor · 5 merged PRs@oSethoum · 5 merged PRs@Snider · 5 merged PRs@yulesxoxo · 5 changelog credits@akhudek · 4 merged PRs@ddmoney420 · 4 merged PRs@dedo1911 · 4 merged PRs@fdidron · 4 merged PRs@haukened · 4 merged PRs@k-muchmore · 4 commits@marktohark · 4 merged PRs@superDingda · 4 merged PRs@xijaja · 4 merged PRs@adalessa · 3 merged PRs@AkshayKalose · 3 merged PRs@AlbinoDrought · 3 merged PRs@BenoitBotton · 3 merged PRs@COD3HUNT3R · 3 merged PRs@copilot-swe-agent · 3 merged PRs@DeltaLaboratory · 3 merged PRs@DiegPS · 3 merged PRs@FrancescoLuzzi · 3 merged PRs@hi019 · 3 merged PRs@joshbuddy · 3 changelog credits@JulioDRF · 3 changelog credits@Kron · 3 changelog credits@overlordtm · 3 changelog credits@pbnjay · 3 merged PRs@puneetdixit200 · 3 changelog credits@robin-samuel · 3 changelog credits@samstanier · 3 changelog credits@scottopell · 3 changelog credits@smac89 · 3 merged PRs@TheFranconianCoder · 3 merged PRs@Tolfx · 3 changelog credits@triadmoko · 3 changelog credits@TwoNull · 3 merged PRs@Vaelatern · 3 merged PRs@ValentinTrinque · 3 merged PRs@wimaha · 3 merged PRs@x-haose · 3 changelog credits@aangelisc · 2 merged PRs@aayush420 · 2 merged PRs@AbdelhadiSeddar · 2 merged PRs@abtin · 2 changelog credits@achhabra2 · 2 merged PRs@Alex6357 · 2 merged PRs@andrewbytecoder · 2 merged PRs@andywenk · 2 changelog credits@antimatter96 · 2 merged PRs@arifali123 · 2 changelog credits@artooro · 2 merged PRs@avengerweb · 2 merged PRs@Bare7a · 2 merged PRs@BillBuilt · 2 merged PRs@binyamin · 2 changelog credits@biuaxia · 2 merged PRs@Bronya0 · 2 merged PRs@bruxaodev · 2 merged PRs@chenxiao1990 · 2 changelog credits@cuigege · 2 changelog credits@daodao97 · 2 changelog credits@Debdut · 2 changelog credits@duolabmeng6 · 2 merged PRs@edwardbrowncross · 2 changelog credits@fkhadra · 2 merged PRs@Gjergj · 2 merged PRs@gotid · 2 changelog credits@gwynforthewyn · 2 merged PRs@h8gi · 2 changelog credits@hfoxy · 2 merged PRs@hkhere · 2 merged PRs@hotafrika · 2 changelog credits@iamhabbeboy · 2 changelog credits@ilgityildirim · 2 merged PRs@jes0131 · 2 merged PRs@jghiloni · 2 merged PRs@josStorer · 2 merged PRs@Junkher · 2 changelog credits@KiddoV · 2 changelog credits@konez2k · 2 merged PRs@lambdajack · 2 changelog credits@lontten · 2 merged PRs@LukenSkyne · 2 changelog credits@lvyaoting · 2 merged PRs@Maicarons2022 · 2 changelog credits@marcio199226 · 2 merged PRs@matryer · 2 commits@mondy · 2 changelog credits@mrf345 · 2 merged PRs@MyNameIsAres · 2 changelog credits@NanoNik · 2 changelog credits@nerdyslacker · 2 merged PRs@nickisworking · 2 changelog credits@o8x · 2 changelog credits@ParkourLiu · 2 changelog credits@ParvinEyvazov · 2 changelog credits@phoenix147 · 2 merged PRs@pierrejoye · 2 merged PRs@polikow · 2 changelog credits@PPTGamer · 2 merged PRs@prurigro · 2 changelog credits@RALIST · 2 merged PRs@rayshoo · 2 changelog credits@rev42 · 2 changelog credits@riadafridishibly · 2 changelog credits@rnice01 · 2 changelog credits@rxliuli · 2 merged PRs@RyoTagami · 2 changelog credits@SamHennessy · 2 changelog credits@SheetJSDev · 2 changelog credits@shinshin86 · 2 merged PRs@sidwebworks · 2 changelog credits@skamensky · 2 changelog credits@stavros-k · 2 merged PRs@stendler · 2 merged PRs@Taiterbase · 2 changelog credits@takuyahara · 2 merged PRs@TechplexEngineer · 2 changelog credits@testwill · 2 merged PRs@TheGB0077 · 2 merged PRs@thiennguyen93 · 2 changelog credits@thomas-senechal · 2 merged PRs@timkippdev · 2 merged PRs@tiny-craft · 2 merged PRs@tomanagle · 2 changelog credits@tuuzed · 2 merged PRs@Wakeful-Cloud · 2 merged PRs@willdot · 2 merged PRs@windom · 2 merged PRs@wucm667 · 2 changelog credits@wux1an · 2 changelog credits@yz4230 · 2 changelog credits@zandercodes · 2 changelog credits@0x3st3 · 1 merged PR@562589540 · 1 merged PR@aalsuwaidi · 1 merged PR@actions-user · 1 commit@AkagiYui · 1 merged PR@AkimioJR · 1 merged PR@albert-sun · 1 merged PR@alexmat · 1 merged PR@AlienRecall · 1 merged PR@Aliuyanfeng · 1 merged PR@Alpa-1 · 1 changelog credit@amaury-tobias · 1 merged PR@aminya · 1 merged PR@AnalogJ · 3 commits@apzuk3 · 1 merged PR@aranggitoar · 1 merged PR@aschey · 1 merged PR@ayatkyo · 1 changelog credit@azamara · 1 merged PR@Baiyuetribe · 1 merged PR@barats · 1 merged PR@bardiauto · 1 commit@barremian · 1 merged PR@Bas950 · 1 merged PR@bdwyertech · 1 merged PR@bearsh · 1 merged PR@BenAicholtz · 1 merged PR@benjamin-thomas · 1 merged PR@benmccann · 1 merged PR@blacksud0 · 1 merged PR@blinkinglight · 1 merged PR@boreq · 1 merged PR@BradHacker · 1 merged PR@Braincompiler · 1 merged PR@brianetaveras · 1 merged PR@brunoborges · 1 merged PR@bt · 1 merged PR@BuckeyeCoder · 1 merged PR@buddyabaddon · 1 merged PR@c-tonneslan · 1 merged PR@cctv1005s · 1 merged PR@cenan · 1 merged PR@chinenual · 1 merged PR@Chronophylos · 1 merged PR@ckilb · 1 merged PR@cristianrgreco · 1 merged PR@cto-mindset · 1 merged PR@cybertramp · 1 merged PR@damiensedgwick · 1 merged PR@danawoodman · 1 merged PR@darkb0ts · 1 merged PR@db47h · 1 merged PR@deining · 1 merged PR@deltajoe · 1 merged PR@dennypenta · 1 merged PR@derhasi · 1 merged PR@dev-kas · 1 merged PR@diogox · 1 merged PR@diorodrigu · 1 merged PR@dominictwlee · 1 merged PR@doracpphp · 1 merged PR@drc5521 · 1 merged PR@dzmitryi-h · 1 merged PR@edai-git · 1 merged PR@edwargix · 1 merged PR@eft · 1 merged PR@ekkohnet · 1 merged PR@eleclin · 1 changelog credit@elie-g · 1 merged PR@erdemkosk · 1 merged PR@eric-tech01 · 1 merged PR@FalcoG · 1 merged PR@fallendusk · 1 merged PR@fcying · 1 merged PR@fengfengzhidao · 1 merged PR@fengweiqiang · 1 merged PR@FerroO2000 · 1 merged PR@fholmqvist · 1 merged PR@fieu · 1 merged PR@figuerom16 · 1 merged PR@firelizzard18 · 1 merged PR@flin7 · 1 merged PR@flofreud · 1 merged PR@fred21O4 · 1 commit@gardc · 1 merged PR@GargantuaX · 1 merged PR@gelleson · 1 merged PR@giopalma · 1 merged PR@Gornius · 1 merged PR@Grantmartin2002 · 1 merged PR@greymoth-jp · 1 merged PR@Gurkengewuerz · 1 merged PR@gursheyss · 1 merged PR@hidewrong · 1 merged PR@Hudolus · 1 merged PR@i7tsov · 1 merged PR@IAFEnvoy · 1 merged PR@iberflow · 1 merged PR@id88 · 1 merged PR@igogrek · 1 merged PR@ironpark · 1 merged PR@JackDoan · 1 merged PR@jakubpeleska · 1 merged PR@jangler · 1 merged PR@Jarek-SRT · 1 merged PR@jasikpark · 1 merged PR@jaypipes · 1 merged PR@jicg · 1 merged PR@johannes-luebke · 1 merged PR@johnmaguire · 1 merged PR@johnmccabe · 1 merged PR@josexy · 1 merged PR@joshdrake · 1 merged PR@joshhardy · 1 changelog credit@joshm998 · 1 merged PR@joshuapare · 1 merged PR@Juneezee · 1 merged PR@justinmoon · 1 merged PR@k1nho · 1 merged PR@kairo913 · 1 merged PR@Khady · 1 merged PR@kmuchmore · 1 merged PR@kodflow · 1 merged PR@kodumulo · 1 merged PR@kraney · 1 merged PR@Krzysztofz01 · 1 changelog credit@ktsivkov · 1 merged PR@kyoto44 · 1 merged PR@lanzafame · 1 commit@LazyClicks · 1 merged PR@leolee3 · 1 merged PR@levinit · 1 merged PR@lian-yang · 1 merged PR@Licoy · 1 merged PR@Liumingxun · 1 merged PR@liuzi6612 · 1 merged PR@lmb1113 · 1 merged PR@ltcovalt · 1 merged PR@lujihong · 1 changelog credit@lukewatts · 1 merged PR@madflow · 1 merged PR@MagicFun1241 · 1 merged PR@Mahcks · 1 merged PR@Mai-Lapyst · 1 changelog credit@marvinhosea · 1 merged PR@MarvinJWendt · 1 merged PR@mateothegreat · 1 merged PR@matholt · 1 changelog credit@matta · 1 merged PR@mattn · 1 commit@meatherly · 1 merged PR@meeehdi-dev · 1 merged PR@MerIijn · 1 merged PR@mewmew · 1 merged PR@mholt · 1 merged PR@michael-freling · 1 merged PR@miclle · 1 merged PR@Mihara · 1 merged PR@mikeee · 1 merged PR@MikeLINGxZ · 1 merged PR@MikeSchaap · 1 merged PR@MIMBOL22 · 1 merged PR@mJehanno · 1 merged PR@mkwsnyder · 1 merged PR@mmalcek · 1 merged PR@mortenolsrud · 1 merged PR@mr-zlaam · 1 merged PR@msal4 · 1 merged PR@narcilee7 · 1 merged PR@nejos97 · 1 merged PR@Nexus26404 · 1 merged PR@nguyenvanduocit · 1 merged PR@nidib · 1 merged PR@nnashwin · 1 merged PR@noahgorstein · 1 merged PR@northes · 1 merged PR@NullCode1337 · 1 merged PR@occamist · 1 merged PR@ocelotsloth · 1 merged PR@oguz-yilmaz · 1 merged PR@orellazri · 1 merged PR@Orijhins · 1 merged PR@patopesto · 1 merged PR@paulbrickwell · 1 merged PR@Peiratooo · 1 merged PR@pekim · 1 merged PR@pernydev · 1 merged PR@phildrip · 1 merged PR@plutov · 1 merged PR@poisonshell · 1 merged PR@pratikmota · 1 merged PR@qaisjp · 1 merged PR@qq540491950 · 1 changelog credit@radish-miyazaki · 1 merged PR@raitonoberu · 1 merged PR@randalmurphal · 1 changelog credit@rcalixte · 1 merged PR@redisviewer · 1 merged PR@redraskal · 1 merged PR@Rested · 1 merged PR@riannucci · 1 merged PR@riquenunes · 1 merged PR@rlshukhov · 1 merged PR@RonaldinhoL · 1 merged PR@ronen25 · 1 merged PR@rprtr258 · 1 merged PR@ruhuang2001 · 1 merged PR@rynsf · 1 merged PR@s12chung · 1 merged PR@salman0ansari · 1 merged PR@SametKUM · 1 merged PR@savely-krasovsky · 1 merged PR@seanmtracey · 1 merged PR@seleborg · 1 merged PR@sgosiaco · 1 merged PR@sharkmu · 1 merged PR@sid-the-sloth1 · 1 merged PR@sinspired · 1 merged PR@Sipaha · 1 merged PR@sithembiso · 1 merged PR@SophieAu · 1 merged PR@sqot0 · 1 merged PR@ssahillppatell · 1 merged PR@stanislav-zeman · 1 merged PR@stankovic98 · 1 merged PR@stefpap · 1 merged PR@SupianIDz · 1 merged PR@TAINCER · 1 merged PR@taisei-86 · 1 merged PR@taiseiotsuka · 1 changelog credit@Taiwofolu · 1 merged PR@te5se · 1 merged PR@TekWizely · 1 merged PR@tilak999 · 1 merged PR@tk103331 · 1 merged PR@tong3jie · 1 merged PR@tongque0 · 1 merged PR@torabian · 1 merged PR@TuffenDuffen · 1 merged PR@tw1nk · 1 merged PR@Twacqwq · 1 merged PR@veeceey · 1 merged PR@venkadeshshiva · 1 merged PR@vffuunnyy · 1 merged PR@Vilsol · 1 merged PR@Vinayak9769 · 1 merged PR@vinhvoit225 · 1 merged PR@vixalie · 1 merged PR@Vovan-VE · 1 merged PR@vxxvvxxv · 1 merged PR@wandercn · 1 merged PR@Watson-Sei · 1 merged PR@wgjtyu · 1 merged PR@williamsjokvist · 1 merged PR@wizzymore · 1 merged PR@Xelus22 · 1 merged PR@xhofe · 1 merged PR@xisuo67 · 1 merged PR@xjh22222228 · 1 changelog credit@XljBear · 1 merged PR@xtrafrancyz · 1 merged PR@xvertile · 1 merged PR@yesgs · 1 merged PR@youngchoan · 1 merged PR@yuseferi · 1 merged PR@Zeiichenfolge · 1 merged PR@zllovesuki · 1 merged PR@zuiwuchang · 1 merged PRBecome a Contributor +Wails Contributors436 contributors · 5,719 commits — thank you!@leaanthony · 541 merged PRs541 merged PRsleaanthony@stffabi · 133 merged PRs133 merged PRsstffabi@fbbdev · 92 changelog credits92 changelog creditsfbbdev@misitebao · 76 merged PRs76 merged PRsmisitebao@atterpac · 59 merged PRs59 merged PRsatterpac@taliesin-ai · 57 merged PRs57 merged PRstaliesin-ai@tmclane · 26 merged PRs26 merged PRs@APshenkin · 23 changelog credits23 changelog credits@bh90210 · 22 merged PRs22 merged PRs@lyimmi · 20 merged PRs20 merged PRs@almas-x · 12 merged PRs@mmghv · 12 merged PRs@popaprozac · 12 merged PRs@ianmjones · 11 merged PRs@IanVS · 10 changelog credits@wayneforrest · 10 merged PRs@PylotLight · 9 merged PRs@symball · 9 merged PRs@OlegGulevskyy · 8 merged PRs@agilgur5 · 7 merged PRs@ndianabasi · 7 merged PRs@rh12503 · 7 merged PRs@5aaee9 · 6 changelog credits@acheong08 · 6 changelog credits@ansxuman · 6 merged PRs@Etesam913 · 6 changelog credits@LGiki · 6 changelog credits@marcus-crane · 6 merged PRs@napalu · 6 merged PRs@raguay · 6 merged PRs@sircodemane · 6 merged PRs@abichinger · 5 merged PRs@ATenderholt · 5 merged PRs@jaesung9507 · 5 changelog credits@mbaklor · 5 merged PRs@oSethoum · 5 merged PRs@Snider · 5 merged PRs@yulesxoxo · 5 changelog credits@akhudek · 4 merged PRs@ddmoney420 · 4 merged PRs@dedo1911 · 4 merged PRs@fdidron · 4 merged PRs@haukened · 4 merged PRs@k-muchmore · 4 commits@marktohark · 4 merged PRs@superDingda · 4 merged PRs@xijaja · 4 merged PRs@adalessa · 3 merged PRs@AkshayKalose · 3 merged PRs@AlbinoDrought · 3 merged PRs@BenoitBotton · 3 merged PRs@COD3HUNT3R · 3 merged PRs@copilot-swe-agent · 3 merged PRs@DeltaLaboratory · 3 merged PRs@DiegPS · 3 merged PRs@FrancescoLuzzi · 3 merged PRs@hi019 · 3 merged PRs@joshbuddy · 3 changelog credits@JulioDRF · 3 changelog credits@Kron · 3 changelog credits@overlordtm · 3 changelog credits@pbnjay · 3 merged PRs@puneetdixit200 · 3 changelog credits@robin-samuel · 3 changelog credits@samstanier · 3 changelog credits@scottopell · 3 changelog credits@smac89 · 3 merged PRs@TheFranconianCoder · 3 merged PRs@Tolfx · 3 changelog credits@triadmoko · 3 changelog credits@TwoNull · 3 merged PRs@Vaelatern · 3 merged PRs@ValentinTrinque · 3 merged PRs@wimaha · 3 merged PRs@x-haose · 3 changelog credits@aangelisc · 2 merged PRs@aayush420 · 2 merged PRs@AbdelhadiSeddar · 2 merged PRs@abtin · 2 changelog credits@achhabra2 · 2 merged PRs@Alex6357 · 2 merged PRs@andrewbytecoder · 2 merged PRs@andywenk · 2 changelog credits@antimatter96 · 2 merged PRs@arifali123 · 2 changelog credits@artooro · 2 merged PRs@avengerweb · 2 merged PRs@Bare7a · 2 merged PRs@BillBuilt · 2 merged PRs@binyamin · 2 changelog credits@biuaxia · 2 merged PRs@Bronya0 · 2 merged PRs@bruxaodev · 2 merged PRs@chenxiao1990 · 2 changelog credits@cuigege · 2 changelog credits@daodao97 · 2 changelog credits@Debdut · 2 changelog credits@duolabmeng6 · 2 merged PRs@edwardbrowncross · 2 changelog credits@fkhadra · 2 merged PRs@Gjergj · 2 merged PRs@gotid · 2 changelog credits@gwynforthewyn · 2 merged PRs@h8gi · 2 changelog credits@hfoxy · 2 merged PRs@hkhere · 2 merged PRs@hotafrika · 2 changelog credits@iamhabbeboy · 2 changelog credits@ilgityildirim · 2 merged PRs@jes0131 · 2 merged PRs@jghiloni · 2 merged PRs@josStorer · 2 merged PRs@Junkher · 2 changelog credits@KiddoV · 2 changelog credits@konez2k · 2 merged PRs@lambdajack · 2 changelog credits@lontten · 2 merged PRs@LukenSkyne · 2 changelog credits@lvyaoting · 2 merged PRs@Maicarons2022 · 2 changelog credits@marcio199226 · 2 merged PRs@matryer · 2 commits@mondy · 2 changelog credits@mrf345 · 2 merged PRs@MyNameIsAres · 2 changelog credits@NanoNik · 2 changelog credits@nerdyslacker · 2 merged PRs@nickisworking · 2 changelog credits@o8x · 2 changelog credits@ParkourLiu · 2 changelog credits@ParvinEyvazov · 2 changelog credits@phoenix147 · 2 merged PRs@pierrejoye · 2 merged PRs@polikow · 2 changelog credits@PPTGamer · 2 merged PRs@prurigro · 2 changelog credits@RALIST · 2 merged PRs@rayshoo · 2 changelog credits@rev42 · 2 changelog credits@riadafridishibly · 2 changelog credits@rnice01 · 2 changelog credits@rxliuli · 2 merged PRs@RyoTagami · 2 changelog credits@SamHennessy · 2 changelog credits@SheetJSDev · 2 changelog credits@shinshin86 · 2 merged PRs@sidwebworks · 2 changelog credits@skamensky · 2 changelog credits@stavros-k · 2 merged PRs@stendler · 2 merged PRs@Taiterbase · 2 changelog credits@takuyahara · 2 merged PRs@TechplexEngineer · 2 changelog credits@testwill · 2 merged PRs@TheGB0077 · 2 merged PRs@thiennguyen93 · 2 changelog credits@thomas-senechal · 2 merged PRs@timkippdev · 2 merged PRs@tiny-craft · 2 merged PRs@tomanagle · 2 changelog credits@tuuzed · 2 merged PRs@Wakeful-Cloud · 2 merged PRs@willdot · 2 merged PRs@windom · 2 merged PRs@wucm667 · 2 changelog credits@wux1an · 2 changelog credits@yz4230 · 2 changelog credits@zandercodes · 2 changelog credits@0x3st3 · 1 merged PR@562589540 · 1 merged PR@aalsuwaidi · 1 merged PR@actions-user · 1 commit@AkagiYui · 1 merged PR@AkimioJR · 1 merged PR@albert-sun · 1 merged PR@alexmat · 1 merged PR@AlienRecall · 1 merged PR@Aliuyanfeng · 1 merged PR@Alpa-1 · 1 changelog credit@amaury-tobias · 1 merged PR@aminya · 1 merged PR@AnalogJ · 3 commits@apzuk3 · 1 merged PR@aranggitoar · 1 merged PR@aschey · 1 merged PR@ayatkyo · 1 changelog credit@azamara · 1 merged PR@Baiyuetribe · 1 merged PR@barats · 1 merged PR@bardiauto · 1 commit@barremian · 1 merged PR@Bas950 · 1 merged PR@bdwyertech · 1 merged PR@bearsh · 1 merged PR@BenAicholtz · 1 merged PR@benjamin-thomas · 1 merged PR@benmccann · 1 merged PR@blacksud0 · 1 merged PR@blinkinglight · 1 merged PR@boreq · 1 merged PR@BradHacker · 1 merged PR@Braincompiler · 1 merged PR@brianetaveras · 1 merged PR@brunoborges · 1 merged PR@bt · 1 merged PR@BuckeyeCoder · 1 merged PR@buddyabaddon · 1 merged PR@c-tonneslan · 1 merged PR@cctv1005s · 1 merged PR@cenan · 1 merged PR@chinenual · 1 merged PR@Chronophylos · 1 merged PR@ckilb · 1 merged PR@cristianrgreco · 1 merged PR@cto-mindset · 1 merged PR@cybertramp · 1 merged PR@damiensedgwick · 1 merged PR@danawoodman · 1 merged PR@darkb0ts · 1 merged PR@db47h · 1 merged PR@deining · 1 merged PR@deltajoe · 1 merged PR@dennypenta · 1 merged PR@derhasi · 1 merged PR@dev-kas · 1 merged PR@diogox · 1 merged PR@diorodrigu · 1 merged PR@dominictwlee · 1 merged PR@doracpphp · 1 merged PR@drc5521 · 1 merged PR@dzmitryi-h · 1 merged PR@edai-git · 1 merged PR@edwargix · 1 merged PR@eft · 1 merged PR@ekkohnet · 1 merged PR@eleclin · 1 changelog credit@elie-g · 1 merged PR@erdemkosk · 1 merged PR@eric-tech01 · 1 merged PR@FalcoG · 1 merged PR@fallendusk · 1 merged PR@fcying · 1 merged PR@fengfengzhidao · 1 merged PR@fengweiqiang · 1 merged PR@FerroO2000 · 1 merged PR@fholmqvist · 1 merged PR@fieu · 1 merged PR@figuerom16 · 1 merged PR@firelizzard18 · 1 merged PR@flin7 · 1 merged PR@flofreud · 1 merged PR@fred21O4 · 1 commit@gardc · 1 merged PR@GargantuaX · 1 merged PR@gelleson · 1 merged PR@giopalma · 1 merged PR@Gornius · 1 merged PR@Grantmartin2002 · 1 merged PR@greymoth-jp · 1 merged PR@Gurkengewuerz · 1 merged PR@gursheyss · 1 merged PR@hidewrong · 1 merged PR@Hudolus · 1 merged PR@i7tsov · 1 merged PR@IAFEnvoy · 1 merged PR@iberflow · 1 merged PR@id88 · 1 merged PR@igogrek · 1 merged PR@ironpark · 1 merged PR@JackDoan · 1 merged PR@jakubpeleska · 1 merged PR@jangler · 1 merged PR@Jarek-SRT · 1 merged PR@jasikpark · 1 merged PR@jaypipes · 1 merged PR@jicg · 1 merged PR@johannes-luebke · 1 merged PR@johnmaguire · 1 merged PR@johnmccabe · 1 merged PR@josexy · 1 merged PR@joshdrake · 1 merged PR@joshhardy · 1 changelog credit@joshm998 · 1 merged PR@joshuapare · 1 merged PR@Juneezee · 1 merged PR@justinmoon · 1 merged PR@k1nho · 1 merged PR@kairo913 · 1 merged PR@Khady · 1 merged PR@kmuchmore · 1 merged PR@kodflow · 1 merged PR@kodumulo · 1 merged PR@kraney · 1 merged PR@Krzysztofz01 · 1 changelog credit@ktsivkov · 1 merged PR@kyoto44 · 1 merged PR@lanzafame · 1 commit@LazyClicks · 1 merged PR@leolee3 · 1 merged PR@levinit · 1 merged PR@lian-yang · 1 merged PR@Licoy · 1 merged PR@Liumingxun · 1 merged PR@liuzi6612 · 1 merged PR@lmb1113 · 1 merged PR@ltcovalt · 1 merged PR@lujihong · 1 changelog credit@lukewatts · 1 merged PR@madflow · 1 merged PR@MagicFun1241 · 1 merged PR@Mahcks · 1 merged PR@Mai-Lapyst · 1 changelog credit@marvinhosea · 1 merged PR@MarvinJWendt · 1 merged PR@mateothegreat · 1 merged PR@matholt · 1 changelog credit@matta · 1 merged PR@mattn · 1 commit@meatherly · 1 merged PR@meeehdi-dev · 1 merged PR@MerIijn · 1 merged PR@mewmew · 1 merged PR@mholt · 1 merged PR@michael-freling · 1 merged PR@miclle · 1 merged PR@Mihara · 1 merged PR@mikeee · 1 merged PR@MikeLINGxZ · 1 merged PR@MikeSchaap · 1 merged PR@MIMBOL22 · 1 merged PR@mJehanno · 1 merged PR@mkwsnyder · 1 merged PR@mmalcek · 1 merged PR@mortenolsrud · 1 merged PR@mr-zlaam · 1 merged PR@msal4 · 1 merged PR@narcilee7 · 1 merged PR@nejos97 · 1 merged PR@Nexus26404 · 1 merged PR@nguyenvanduocit · 1 merged PR@nidib · 1 merged PR@nnashwin · 1 merged PR@noahgorstein · 1 merged PR@northes · 1 merged PR@NullCode1337 · 1 merged PR@occamist · 1 merged PR@ocelotsloth · 1 merged PR@oguz-yilmaz · 1 merged PR@orellazri · 1 merged PR@Orijhins · 1 merged PR@patopesto · 1 merged PR@paulbrickwell · 1 merged PR@Peiratooo · 1 merged PR@pekim · 1 merged PR@pernydev · 1 merged PR@phildrip · 1 merged PR@plutov · 1 merged PR@poisonshell · 1 merged PR@pratikmota · 1 merged PR@qaisjp · 1 merged PR@qq540491950 · 1 changelog credit@radish-miyazaki · 1 merged PR@raitonoberu · 1 merged PR@randalmurphal · 1 changelog credit@rcalixte · 1 merged PR@redisviewer · 1 merged PR@redraskal · 1 merged PR@Rested · 1 merged PR@riannucci · 1 merged PR@riquenunes · 1 merged PR@rlshukhov · 1 merged PR@RonaldinhoL · 1 merged PR@ronen25 · 1 merged PR@rprtr258 · 1 merged PR@ruhuang2001 · 1 merged PR@rynsf · 1 merged PR@s12chung · 1 merged PR@salman0ansari · 1 merged PR@SametKUM · 1 merged PR@savely-krasovsky · 1 merged PR@seanmtracey · 1 merged PR@seleborg · 1 merged PR@sgosiaco · 1 merged PR@sharkmu · 1 merged PR@sid-the-sloth1 · 1 merged PR@sinspired · 1 merged PR@Sipaha · 1 merged PR@sithembiso · 1 merged PR@SophieAu · 1 merged PR@sqot0 · 1 merged PR@ssahillppatell · 1 merged PR@stanislav-zeman · 1 merged PR@stankovic98 · 1 merged PR@stefpap · 1 merged PR@SupianIDz · 1 merged PR@TAINCER · 1 merged PR@taisei-86 · 1 merged PR@taiseiotsuka · 1 changelog credit@Taiwofolu · 1 merged PR@te5se · 1 merged PR@TekWizely · 1 merged PR@tilak999 · 1 merged PR@tk103331 · 1 merged PR@tong3jie · 1 merged PR@tongque0 · 1 merged PR@torabian · 1 merged PR@TuffenDuffen · 1 merged PR@tw1nk · 1 merged PR@Twacqwq · 1 merged PR@veeceey · 1 merged PR@venkadeshshiva · 1 merged PR@vffuunnyy · 1 merged PR@Vilsol · 1 merged PR@Vinayak9769 · 1 merged PR@vinhvoit225 · 1 merged PR@vixalie · 1 merged PR@Vovan-VE · 1 merged PR@vxxvvxxv · 1 merged PR@wandercn · 1 merged PR@Watson-Sei · 1 merged PR@wgjtyu · 1 merged PR@williamsjokvist · 1 merged PR@wizzymore · 1 merged PR@Xelus22 · 1 merged PR@xhofe · 1 merged PR@xisuo67 · 1 merged PR@xjh22222228 · 1 changelog credit@XljBear · 1 merged PR@xtrafrancyz · 1 merged PR@xvertile · 1 merged PR@yesgs · 1 merged PR@youngchoan · 1 merged PR@yuseferi · 1 merged PR@Zeiichenfolge · 1 merged PR@zllovesuki · 1 merged PR@zuiwuchang · 1 merged PRBecome a Contributor From e63d2bd3e88aa2adfb0a2077e8a52e3710a4da2f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 22 Jul 2026 00:32:45 +0000 Subject: [PATCH 27/29] chore: update sponsors.svg and contributors.svg [skip ci] --- website/static/img/contributors.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/static/img/contributors.svg b/website/static/img/contributors.svg index edf0292e725..81ecc8e6fb9 100644 --- a/website/static/img/contributors.svg +++ b/website/static/img/contributors.svg @@ -105,4 +105,4 @@ text { .chip { transition: none; } } -Wails Contributors436 contributors · 5,719 commits — thank you!@leaanthony · 541 merged PRs541 merged PRsleaanthony@stffabi · 133 merged PRs133 merged PRsstffabi@fbbdev · 92 changelog credits92 changelog creditsfbbdev@misitebao · 76 merged PRs76 merged PRsmisitebao@atterpac · 59 merged PRs59 merged PRsatterpac@taliesin-ai · 57 merged PRs57 merged PRstaliesin-ai@tmclane · 26 merged PRs26 merged PRs@APshenkin · 23 changelog credits23 changelog credits@bh90210 · 22 merged PRs22 merged PRs@lyimmi · 20 merged PRs20 merged PRs@almas-x · 12 merged PRs@mmghv · 12 merged PRs@popaprozac · 12 merged PRs@ianmjones · 11 merged PRs@IanVS · 10 changelog credits@wayneforrest · 10 merged PRs@PylotLight · 9 merged PRs@symball · 9 merged PRs@OlegGulevskyy · 8 merged PRs@agilgur5 · 7 merged PRs@ndianabasi · 7 merged PRs@rh12503 · 7 merged PRs@5aaee9 · 6 changelog credits@acheong08 · 6 changelog credits@ansxuman · 6 merged PRs@Etesam913 · 6 changelog credits@LGiki · 6 changelog credits@marcus-crane · 6 merged PRs@napalu · 6 merged PRs@raguay · 6 merged PRs@sircodemane · 6 merged PRs@abichinger · 5 merged PRs@ATenderholt · 5 merged PRs@jaesung9507 · 5 changelog credits@mbaklor · 5 merged PRs@oSethoum · 5 merged PRs@Snider · 5 merged PRs@yulesxoxo · 5 changelog credits@akhudek · 4 merged PRs@ddmoney420 · 4 merged PRs@dedo1911 · 4 merged PRs@fdidron · 4 merged PRs@haukened · 4 merged PRs@k-muchmore · 4 commits@marktohark · 4 merged PRs@superDingda · 4 merged PRs@xijaja · 4 merged PRs@adalessa · 3 merged PRs@AkshayKalose · 3 merged PRs@AlbinoDrought · 3 merged PRs@BenoitBotton · 3 merged PRs@COD3HUNT3R · 3 merged PRs@copilot-swe-agent · 3 merged PRs@DeltaLaboratory · 3 merged PRs@DiegPS · 3 merged PRs@FrancescoLuzzi · 3 merged PRs@hi019 · 3 merged PRs@joshbuddy · 3 changelog credits@JulioDRF · 3 changelog credits@Kron · 3 changelog credits@overlordtm · 3 changelog credits@pbnjay · 3 merged PRs@puneetdixit200 · 3 changelog credits@robin-samuel · 3 changelog credits@samstanier · 3 changelog credits@scottopell · 3 changelog credits@smac89 · 3 merged PRs@TheFranconianCoder · 3 merged PRs@Tolfx · 3 changelog credits@triadmoko · 3 changelog credits@TwoNull · 3 merged PRs@Vaelatern · 3 merged PRs@ValentinTrinque · 3 merged PRs@wimaha · 3 merged PRs@x-haose · 3 changelog credits@aangelisc · 2 merged PRs@aayush420 · 2 merged PRs@AbdelhadiSeddar · 2 merged PRs@abtin · 2 changelog credits@achhabra2 · 2 merged PRs@Alex6357 · 2 merged PRs@andrewbytecoder · 2 merged PRs@andywenk · 2 changelog credits@antimatter96 · 2 merged PRs@arifali123 · 2 changelog credits@artooro · 2 merged PRs@avengerweb · 2 merged PRs@Bare7a · 2 merged PRs@BillBuilt · 2 merged PRs@binyamin · 2 changelog credits@biuaxia · 2 merged PRs@Bronya0 · 2 merged PRs@bruxaodev · 2 merged PRs@chenxiao1990 · 2 changelog credits@cuigege · 2 changelog credits@daodao97 · 2 changelog credits@Debdut · 2 changelog credits@duolabmeng6 · 2 merged PRs@edwardbrowncross · 2 changelog credits@fkhadra · 2 merged PRs@Gjergj · 2 merged PRs@gotid · 2 changelog credits@gwynforthewyn · 2 merged PRs@h8gi · 2 changelog credits@hfoxy · 2 merged PRs@hkhere · 2 merged PRs@hotafrika · 2 changelog credits@iamhabbeboy · 2 changelog credits@ilgityildirim · 2 merged PRs@jes0131 · 2 merged PRs@jghiloni · 2 merged PRs@josStorer · 2 merged PRs@Junkher · 2 changelog credits@KiddoV · 2 changelog credits@konez2k · 2 merged PRs@lambdajack · 2 changelog credits@lontten · 2 merged PRs@LukenSkyne · 2 changelog credits@lvyaoting · 2 merged PRs@Maicarons2022 · 2 changelog credits@marcio199226 · 2 merged PRs@matryer · 2 commits@mondy · 2 changelog credits@mrf345 · 2 merged PRs@MyNameIsAres · 2 changelog credits@NanoNik · 2 changelog credits@nerdyslacker · 2 merged PRs@nickisworking · 2 changelog credits@o8x · 2 changelog credits@ParkourLiu · 2 changelog credits@ParvinEyvazov · 2 changelog credits@phoenix147 · 2 merged PRs@pierrejoye · 2 merged PRs@polikow · 2 changelog credits@PPTGamer · 2 merged PRs@prurigro · 2 changelog credits@RALIST · 2 merged PRs@rayshoo · 2 changelog credits@rev42 · 2 changelog credits@riadafridishibly · 2 changelog credits@rnice01 · 2 changelog credits@rxliuli · 2 merged PRs@RyoTagami · 2 changelog credits@SamHennessy · 2 changelog credits@SheetJSDev · 2 changelog credits@shinshin86 · 2 merged PRs@sidwebworks · 2 changelog credits@skamensky · 2 changelog credits@stavros-k · 2 merged PRs@stendler · 2 merged PRs@Taiterbase · 2 changelog credits@takuyahara · 2 merged PRs@TechplexEngineer · 2 changelog credits@testwill · 2 merged PRs@TheGB0077 · 2 merged PRs@thiennguyen93 · 2 changelog credits@thomas-senechal · 2 merged PRs@timkippdev · 2 merged PRs@tiny-craft · 2 merged PRs@tomanagle · 2 changelog credits@tuuzed · 2 merged PRs@Wakeful-Cloud · 2 merged PRs@willdot · 2 merged PRs@windom · 2 merged PRs@wucm667 · 2 changelog credits@wux1an · 2 changelog credits@yz4230 · 2 changelog credits@zandercodes · 2 changelog credits@0x3st3 · 1 merged PR@562589540 · 1 merged PR@aalsuwaidi · 1 merged PR@actions-user · 1 commit@AkagiYui · 1 merged PR@AkimioJR · 1 merged PR@albert-sun · 1 merged PR@alexmat · 1 merged PR@AlienRecall · 1 merged PR@Aliuyanfeng · 1 merged PR@Alpa-1 · 1 changelog credit@amaury-tobias · 1 merged PR@aminya · 1 merged PR@AnalogJ · 3 commits@apzuk3 · 1 merged PR@aranggitoar · 1 merged PR@aschey · 1 merged PR@ayatkyo · 1 changelog credit@azamara · 1 merged PR@Baiyuetribe · 1 merged PR@barats · 1 merged PR@bardiauto · 1 commit@barremian · 1 merged PR@Bas950 · 1 merged PR@bdwyertech · 1 merged PR@bearsh · 1 merged PR@BenAicholtz · 1 merged PR@benjamin-thomas · 1 merged PR@benmccann · 1 merged PR@blacksud0 · 1 merged PR@blinkinglight · 1 merged PR@boreq · 1 merged PR@BradHacker · 1 merged PR@Braincompiler · 1 merged PR@brianetaveras · 1 merged PR@brunoborges · 1 merged PR@bt · 1 merged PR@BuckeyeCoder · 1 merged PR@buddyabaddon · 1 merged PR@c-tonneslan · 1 merged PR@cctv1005s · 1 merged PR@cenan · 1 merged PR@chinenual · 1 merged PR@Chronophylos · 1 merged PR@ckilb · 1 merged PR@cristianrgreco · 1 merged PR@cto-mindset · 1 merged PR@cybertramp · 1 merged PR@damiensedgwick · 1 merged PR@danawoodman · 1 merged PR@darkb0ts · 1 merged PR@db47h · 1 merged PR@deining · 1 merged PR@deltajoe · 1 merged PR@dennypenta · 1 merged PR@derhasi · 1 merged PR@dev-kas · 1 merged PR@diogox · 1 merged PR@diorodrigu · 1 merged PR@dominictwlee · 1 merged PR@doracpphp · 1 merged PR@drc5521 · 1 merged PR@dzmitryi-h · 1 merged PR@edai-git · 1 merged PR@edwargix · 1 merged PR@eft · 1 merged PR@ekkohnet · 1 merged PR@eleclin · 1 changelog credit@elie-g · 1 merged PR@erdemkosk · 1 merged PR@eric-tech01 · 1 merged PR@FalcoG · 1 merged PR@fallendusk · 1 merged PR@fcying · 1 merged PR@fengfengzhidao · 1 merged PR@fengweiqiang · 1 merged PR@FerroO2000 · 1 merged PR@fholmqvist · 1 merged PR@fieu · 1 merged PR@figuerom16 · 1 merged PR@firelizzard18 · 1 merged PR@flin7 · 1 merged PR@flofreud · 1 merged PR@fred21O4 · 1 commit@gardc · 1 merged PR@GargantuaX · 1 merged PR@gelleson · 1 merged PR@giopalma · 1 merged PR@Gornius · 1 merged PR@Grantmartin2002 · 1 merged PR@greymoth-jp · 1 merged PR@Gurkengewuerz · 1 merged PR@gursheyss · 1 merged PR@hidewrong · 1 merged PR@Hudolus · 1 merged PR@i7tsov · 1 merged PR@IAFEnvoy · 1 merged PR@iberflow · 1 merged PR@id88 · 1 merged PR@igogrek · 1 merged PR@ironpark · 1 merged PR@JackDoan · 1 merged PR@jakubpeleska · 1 merged PR@jangler · 1 merged PR@Jarek-SRT · 1 merged PR@jasikpark · 1 merged PR@jaypipes · 1 merged PR@jicg · 1 merged PR@johannes-luebke · 1 merged PR@johnmaguire · 1 merged PR@johnmccabe · 1 merged PR@josexy · 1 merged PR@joshdrake · 1 merged PR@joshhardy · 1 changelog credit@joshm998 · 1 merged PR@joshuapare · 1 merged PR@Juneezee · 1 merged PR@justinmoon · 1 merged PR@k1nho · 1 merged PR@kairo913 · 1 merged PR@Khady · 1 merged PR@kmuchmore · 1 merged PR@kodflow · 1 merged PR@kodumulo · 1 merged PR@kraney · 1 merged PR@Krzysztofz01 · 1 changelog credit@ktsivkov · 1 merged PR@kyoto44 · 1 merged PR@lanzafame · 1 commit@LazyClicks · 1 merged PR@leolee3 · 1 merged PR@levinit · 1 merged PR@lian-yang · 1 merged PR@Licoy · 1 merged PR@Liumingxun · 1 merged PR@liuzi6612 · 1 merged PR@lmb1113 · 1 merged PR@ltcovalt · 1 merged PR@lujihong · 1 changelog credit@lukewatts · 1 merged PR@madflow · 1 merged PR@MagicFun1241 · 1 merged PR@Mahcks · 1 merged PR@Mai-Lapyst · 1 changelog credit@marvinhosea · 1 merged PR@MarvinJWendt · 1 merged PR@mateothegreat · 1 merged PR@matholt · 1 changelog credit@matta · 1 merged PR@mattn · 1 commit@meatherly · 1 merged PR@meeehdi-dev · 1 merged PR@MerIijn · 1 merged PR@mewmew · 1 merged PR@mholt · 1 merged PR@michael-freling · 1 merged PR@miclle · 1 merged PR@Mihara · 1 merged PR@mikeee · 1 merged PR@MikeLINGxZ · 1 merged PR@MikeSchaap · 1 merged PR@MIMBOL22 · 1 merged PR@mJehanno · 1 merged PR@mkwsnyder · 1 merged PR@mmalcek · 1 merged PR@mortenolsrud · 1 merged PR@mr-zlaam · 1 merged PR@msal4 · 1 merged PR@narcilee7 · 1 merged PR@nejos97 · 1 merged PR@Nexus26404 · 1 merged PR@nguyenvanduocit · 1 merged PR@nidib · 1 merged PR@nnashwin · 1 merged PR@noahgorstein · 1 merged PR@northes · 1 merged PR@NullCode1337 · 1 merged PR@occamist · 1 merged PR@ocelotsloth · 1 merged PR@oguz-yilmaz · 1 merged PR@orellazri · 1 merged PR@Orijhins · 1 merged PR@patopesto · 1 merged PR@paulbrickwell · 1 merged PR@Peiratooo · 1 merged PR@pekim · 1 merged PR@pernydev · 1 merged PR@phildrip · 1 merged PR@plutov · 1 merged PR@poisonshell · 1 merged PR@pratikmota · 1 merged PR@qaisjp · 1 merged PR@qq540491950 · 1 changelog credit@radish-miyazaki · 1 merged PR@raitonoberu · 1 merged PR@randalmurphal · 1 changelog credit@rcalixte · 1 merged PR@redisviewer · 1 merged PR@redraskal · 1 merged PR@Rested · 1 merged PR@riannucci · 1 merged PR@riquenunes · 1 merged PR@rlshukhov · 1 merged PR@RonaldinhoL · 1 merged PR@ronen25 · 1 merged PR@rprtr258 · 1 merged PR@ruhuang2001 · 1 merged PR@rynsf · 1 merged PR@s12chung · 1 merged PR@salman0ansari · 1 merged PR@SametKUM · 1 merged PR@savely-krasovsky · 1 merged PR@seanmtracey · 1 merged PR@seleborg · 1 merged PR@sgosiaco · 1 merged PR@sharkmu · 1 merged PR@sid-the-sloth1 · 1 merged PR@sinspired · 1 merged PR@Sipaha · 1 merged PR@sithembiso · 1 merged PR@SophieAu · 1 merged PR@sqot0 · 1 merged PR@ssahillppatell · 1 merged PR@stanislav-zeman · 1 merged PR@stankovic98 · 1 merged PR@stefpap · 1 merged PR@SupianIDz · 1 merged PR@TAINCER · 1 merged PR@taisei-86 · 1 merged PR@taiseiotsuka · 1 changelog credit@Taiwofolu · 1 merged PR@te5se · 1 merged PR@TekWizely · 1 merged PR@tilak999 · 1 merged PR@tk103331 · 1 merged PR@tong3jie · 1 merged PR@tongque0 · 1 merged PR@torabian · 1 merged PR@TuffenDuffen · 1 merged PR@tw1nk · 1 merged PR@Twacqwq · 1 merged PR@veeceey · 1 merged PR@venkadeshshiva · 1 merged PR@vffuunnyy · 1 merged PR@Vilsol · 1 merged PR@Vinayak9769 · 1 merged PR@vinhvoit225 · 1 merged PR@vixalie · 1 merged PR@Vovan-VE · 1 merged PR@vxxvvxxv · 1 merged PR@wandercn · 1 merged PR@Watson-Sei · 1 merged PR@wgjtyu · 1 merged PR@williamsjokvist · 1 merged PR@wizzymore · 1 merged PR@Xelus22 · 1 merged PR@xhofe · 1 merged PR@xisuo67 · 1 merged PR@xjh22222228 · 1 changelog credit@XljBear · 1 merged PR@xtrafrancyz · 1 merged PR@xvertile · 1 merged PR@yesgs · 1 merged PR@youngchoan · 1 merged PR@yuseferi · 1 merged PR@Zeiichenfolge · 1 merged PR@zllovesuki · 1 merged PR@zuiwuchang · 1 merged PRBecome a Contributor +Wails Contributors436 contributors · 5,719 commits — thank you!@leaanthony · 541 merged PRs541 merged PRsleaanthony@stffabi · 133 merged PRs133 merged PRsstffabi@fbbdev · 92 changelog credits92 changelog creditsfbbdev@misitebao · 76 merged PRs76 merged PRsmisitebao@atterpac · 59 merged PRs59 merged PRsatterpac@taliesin-ai · 57 merged PRs57 merged PRstaliesin-ai@tmclane · 26 merged PRs26 merged PRs@APshenkin · 23 changelog credits23 changelog credits@bh90210 · 22 merged PRs22 merged PRs@lyimmi · 20 merged PRs20 merged PRs@almas-x · 12 merged PRs@mmghv · 12 merged PRs@popaprozac · 12 merged PRs@ianmjones · 11 merged PRs@IanVS · 10 changelog credits@wayneforrest · 10 merged PRs@PylotLight · 9 merged PRs@symball · 9 merged PRs@OlegGulevskyy · 8 merged PRs@agilgur5 · 7 merged PRs@ndianabasi · 7 merged PRs@rh12503 · 7 merged PRs@5aaee9 · 6 changelog credits@acheong08 · 6 changelog credits@ansxuman · 6 merged PRs@Etesam913 · 6 changelog credits@LGiki · 6 changelog credits@marcus-crane · 6 merged PRs@napalu · 6 merged PRs@raguay · 6 merged PRs@sircodemane · 6 merged PRs@abichinger · 5 merged PRs@ATenderholt · 5 merged PRs@jaesung9507 · 5 changelog credits@mbaklor · 5 merged PRs@oSethoum · 5 merged PRs@Snider · 5 merged PRs@yulesxoxo · 5 changelog credits@akhudek · 4 merged PRs@ddmoney420 · 4 merged PRs@dedo1911 · 4 merged PRs@fdidron · 4 merged PRs@haukened · 4 merged PRs@k-muchmore · 4 commits@marktohark · 4 merged PRs@superDingda · 4 merged PRs@xijaja · 4 merged PRs@adalessa · 3 merged PRs@AkshayKalose · 3 merged PRs@AlbinoDrought · 3 merged PRs@BenoitBotton · 3 merged PRs@COD3HUNT3R · 3 merged PRs@copilot-swe-agent · 3 merged PRs@DeltaLaboratory · 3 merged PRs@DiegPS · 3 merged PRs@FrancescoLuzzi · 3 merged PRs@hi019 · 3 merged PRs@joshbuddy · 3 changelog credits@JulioDRF · 3 changelog credits@Kron · 3 changelog credits@overlordtm · 3 changelog credits@pbnjay · 3 merged PRs@puneetdixit200 · 3 changelog credits@robin-samuel · 3 changelog credits@samstanier · 3 changelog credits@scottopell · 3 changelog credits@smac89 · 3 merged PRs@TheFranconianCoder · 3 merged PRs@Tolfx · 3 changelog credits@triadmoko · 3 changelog credits@TwoNull · 3 merged PRs@Vaelatern · 3 merged PRs@ValentinTrinque · 3 merged PRs@wimaha · 3 merged PRs@x-haose · 3 changelog credits@aangelisc · 2 merged PRs@aayush420 · 2 merged PRs@AbdelhadiSeddar · 2 merged PRs@abtin · 2 changelog credits@achhabra2 · 2 merged PRs@Alex6357 · 2 merged PRs@andrewbytecoder · 2 merged PRs@andywenk · 2 changelog credits@antimatter96 · 2 merged PRs@arifali123 · 2 changelog credits@artooro · 2 merged PRs@avengerweb · 2 merged PRs@Bare7a · 2 merged PRs@BillBuilt · 2 merged PRs@binyamin · 2 changelog credits@biuaxia · 2 merged PRs@Bronya0 · 2 merged PRs@bruxaodev · 2 merged PRs@chenxiao1990 · 2 changelog credits@cuigege · 2 changelog credits@daodao97 · 2 changelog credits@Debdut · 2 changelog credits@duolabmeng6 · 2 merged PRs@edwardbrowncross · 2 changelog credits@fkhadra · 2 merged PRs@Gjergj · 2 merged PRs@gotid · 2 changelog credits@gwynforthewyn · 2 merged PRs@h8gi · 2 changelog credits@hfoxy · 2 merged PRs@hkhere · 2 merged PRs@hotafrika · 2 changelog credits@iamhabbeboy · 2 changelog credits@ilgityildirim · 2 merged PRs@jes0131 · 2 merged PRs@jghiloni · 2 merged PRs@josStorer · 2 merged PRs@Junkher · 2 changelog credits@KiddoV · 2 changelog credits@konez2k · 2 merged PRs@lambdajack · 2 changelog credits@lontten · 2 merged PRs@LukenSkyne · 2 changelog credits@lvyaoting · 2 merged PRs@Maicarons2022 · 2 changelog credits@marcio199226 · 2 merged PRs@matryer · 2 commits@mondy · 2 changelog credits@mrf345 · 2 merged PRs@MyNameIsAres · 2 changelog credits@NanoNik · 2 changelog credits@nerdyslacker · 2 merged PRs@nickisworking · 2 changelog credits@o8x · 2 changelog credits@ParkourLiu · 2 changelog credits@ParvinEyvazov · 2 changelog credits@phoenix147 · 2 merged PRs@pierrejoye · 2 merged PRs@polikow · 2 changelog credits@PPTGamer · 2 merged PRs@prurigro · 2 changelog credits@RALIST · 2 merged PRs@rayshoo · 2 changelog credits@rev42 · 2 changelog credits@riadafridishibly · 2 changelog credits@rnice01 · 2 changelog credits@rxliuli · 2 merged PRs@RyoTagami · 2 changelog credits@SamHennessy · 2 changelog credits@SheetJSDev · 2 changelog credits@shinshin86 · 2 merged PRs@sidwebworks · 2 changelog credits@skamensky · 2 changelog credits@stavros-k · 2 merged PRs@stendler · 2 merged PRs@Taiterbase · 2 changelog credits@takuyahara · 2 merged PRs@TechplexEngineer · 2 changelog credits@testwill · 2 merged PRs@TheGB0077 · 2 merged PRs@thiennguyen93 · 2 changelog credits@thomas-senechal · 2 merged PRs@timkippdev · 2 merged PRs@tiny-craft · 2 merged PRs@tomanagle · 2 changelog credits@tuuzed · 2 merged PRs@Wakeful-Cloud · 2 merged PRs@willdot · 2 merged PRs@windom · 2 merged PRs@wucm667 · 2 changelog credits@wux1an · 2 changelog credits@yz4230 · 2 changelog credits@zandercodes · 2 changelog credits@0x3st3 · 1 merged PR@562589540 · 1 merged PR@aalsuwaidi · 1 merged PR@actions-user · 1 commit@AkagiYui · 1 merged PR@AkimioJR · 1 merged PR@albert-sun · 1 merged PR@alexmat · 1 merged PR@AlienRecall · 1 merged PR@Aliuyanfeng · 1 merged PR@Alpa-1 · 1 changelog credit@amaury-tobias · 1 merged PR@aminya · 1 merged PR@AnalogJ · 3 commits@apzuk3 · 1 merged PR@aranggitoar · 1 merged PR@aschey · 1 merged PR@ayatkyo · 1 changelog credit@azamara · 1 merged PR@Baiyuetribe · 1 merged PR@barats · 1 merged PR@bardiauto · 1 commit@barremian · 1 merged PR@Bas950 · 1 merged PR@bdwyertech · 1 merged PR@bearsh · 1 merged PR@BenAicholtz · 1 merged PR@benjamin-thomas · 1 merged PR@benmccann · 1 merged PR@blacksud0 · 1 merged PR@blinkinglight · 1 merged PR@boreq · 1 merged PR@BradHacker · 1 merged PR@Braincompiler · 1 merged PR@brianetaveras · 1 merged PR@brunoborges · 1 merged PR@bt · 1 merged PR@BuckeyeCoder · 1 merged PR@buddyabaddon · 1 merged PR@c-tonneslan · 1 merged PR@cctv1005s · 1 merged PR@cenan · 1 merged PR@chinenual · 1 merged PR@Chronophylos · 1 merged PR@ckilb · 1 merged PR@cristianrgreco · 1 merged PR@cto-mindset · 1 merged PR@cybertramp · 1 merged PR@damiensedgwick · 1 merged PR@danawoodman · 1 merged PR@darkb0ts · 1 merged PR@db47h · 1 merged PR@deining · 1 merged PR@deltajoe · 1 merged PR@dennypenta · 1 merged PR@derhasi · 1 merged PR@dev-kas · 1 merged PR@diogox · 1 merged PR@diorodrigu · 1 merged PR@dominictwlee · 1 merged PR@doracpphp · 1 merged PR@drc5521 · 1 merged PR@dzmitryi-h · 1 merged PR@edai-git · 1 merged PR@edwargix · 1 merged PR@eft · 1 merged PR@ekkohnet · 1 merged PR@eleclin · 1 changelog credit@elie-g · 1 merged PR@erdemkosk · 1 merged PR@eric-tech01 · 1 merged PR@FalcoG · 1 merged PR@fallendusk · 1 merged PR@fcying · 1 merged PR@fengfengzhidao · 1 merged PR@fengweiqiang · 1 merged PR@FerroO2000 · 1 merged PR@fholmqvist · 1 merged PR@fieu · 1 merged PR@figuerom16 · 1 merged PR@firelizzard18 · 1 merged PR@flin7 · 1 merged PR@flofreud · 1 merged PR@fred21O4 · 1 commit@gardc · 1 merged PR@GargantuaX · 1 merged PR@gelleson · 1 merged PR@giopalma · 1 merged PR@Gornius · 1 merged PR@Grantmartin2002 · 1 merged PR@Gurkengewuerz · 1 merged PR@gursheyss · 1 merged PR@hidewrong · 1 merged PR@Hudolus · 1 merged PR@i7tsov · 1 merged PR@IAFEnvoy · 1 merged PR@iberflow · 1 merged PR@id88 · 1 merged PR@igogrek · 1 merged PR@ironpark · 1 merged PR@JackDoan · 1 merged PR@jakubpeleska · 1 merged PR@jangler · 1 merged PR@Jarek-SRT · 1 merged PR@jasikpark · 1 merged PR@jaypipes · 1 merged PR@jicg · 1 merged PR@johannes-luebke · 1 merged PR@johnmaguire · 1 merged PR@johnmccabe · 1 merged PR@josexy · 1 merged PR@joshdrake · 1 merged PR@joshhardy · 1 changelog credit@joshm998 · 1 merged PR@joshuapare · 1 merged PR@Juneezee · 1 merged PR@justinmoon · 1 merged PR@k1nho · 1 merged PR@kairo913 · 1 merged PR@Khady · 1 merged PR@kmuchmore · 1 merged PR@kodflow · 1 merged PR@kodumulo · 1 merged PR@kraney · 1 merged PR@Krzysztofz01 · 1 changelog credit@ktsivkov · 1 merged PR@kyoto44 · 1 merged PR@lanzafame · 1 commit@LazyClicks · 1 merged PR@leolee3 · 1 merged PR@levinit · 1 merged PR@lian-yang · 1 merged PR@Licoy · 1 merged PR@Liumingxun · 1 merged PR@liuzi6612 · 1 merged PR@lmb1113 · 1 merged PR@ltcovalt · 1 merged PR@lujihong · 1 changelog credit@lukewatts · 1 merged PR@madflow · 1 merged PR@MagicFun1241 · 1 merged PR@Mahcks · 1 merged PR@mahirhir · 1 merged PR@Mai-Lapyst · 1 changelog credit@marvinhosea · 1 merged PR@MarvinJWendt · 1 merged PR@mateothegreat · 1 merged PR@matholt · 1 changelog credit@matta · 1 merged PR@mattn · 1 commit@meatherly · 1 merged PR@meeehdi-dev · 1 merged PR@MerIijn · 1 merged PR@mewmew · 1 merged PR@mholt · 1 merged PR@michael-freling · 1 merged PR@miclle · 1 merged PR@Mihara · 1 merged PR@mikeee · 1 merged PR@MikeLINGxZ · 1 merged PR@MikeSchaap · 1 merged PR@MIMBOL22 · 1 merged PR@mJehanno · 1 merged PR@mkwsnyder · 1 merged PR@mmalcek · 1 merged PR@mortenolsrud · 1 merged PR@mr-zlaam · 1 merged PR@msal4 · 1 merged PR@narcilee7 · 1 merged PR@nejos97 · 1 merged PR@Nexus26404 · 1 merged PR@nguyenvanduocit · 1 merged PR@nidib · 1 merged PR@nnashwin · 1 merged PR@noahgorstein · 1 merged PR@northes · 1 merged PR@NullCode1337 · 1 merged PR@occamist · 1 merged PR@ocelotsloth · 1 merged PR@oguz-yilmaz · 1 merged PR@orellazri · 1 merged PR@Orijhins · 1 merged PR@patopesto · 1 merged PR@paulbrickwell · 1 merged PR@Peiratooo · 1 merged PR@pekim · 1 merged PR@pernydev · 1 merged PR@phildrip · 1 merged PR@plutov · 1 merged PR@poisonshell · 1 merged PR@pratikmota · 1 merged PR@qaisjp · 1 merged PR@qq540491950 · 1 changelog credit@radish-miyazaki · 1 merged PR@raitonoberu · 1 merged PR@randalmurphal · 1 changelog credit@rcalixte · 1 merged PR@redisviewer · 1 merged PR@redraskal · 1 merged PR@Rested · 1 merged PR@riannucci · 1 merged PR@riquenunes · 1 merged PR@rlshukhov · 1 merged PR@RonaldinhoL · 1 merged PR@ronen25 · 1 merged PR@rprtr258 · 1 merged PR@ruhuang2001 · 1 merged PR@rynsf · 1 merged PR@s12chung · 1 merged PR@salman0ansari · 1 merged PR@SametKUM · 1 merged PR@savely-krasovsky · 1 merged PR@seanmtracey · 1 merged PR@seleborg · 1 merged PR@sgosiaco · 1 merged PR@sharkmu · 1 merged PR@sid-the-sloth1 · 1 merged PR@sinspired · 1 merged PR@Sipaha · 1 merged PR@sithembiso · 1 merged PR@SophieAu · 1 merged PR@sqot0 · 1 merged PR@ssahillppatell · 1 merged PR@stanislav-zeman · 1 merged PR@stankovic98 · 1 merged PR@stefpap · 1 merged PR@SupianIDz · 1 merged PR@TAINCER · 1 merged PR@taisei-86 · 1 merged PR@taiseiotsuka · 1 changelog credit@Taiwofolu · 1 merged PR@te5se · 1 merged PR@TekWizely · 1 merged PR@tilak999 · 1 merged PR@tk103331 · 1 merged PR@tong3jie · 1 merged PR@tongque0 · 1 merged PR@torabian · 1 merged PR@TuffenDuffen · 1 merged PR@tw1nk · 1 merged PR@Twacqwq · 1 merged PR@veeceey · 1 merged PR@venkadeshshiva · 1 merged PR@vffuunnyy · 1 merged PR@Vilsol · 1 merged PR@Vinayak9769 · 1 merged PR@vinhvoit225 · 1 merged PR@vixalie · 1 merged PR@Vovan-VE · 1 merged PR@vxxvvxxv · 1 merged PR@wandercn · 1 merged PR@Watson-Sei · 1 merged PR@wgjtyu · 1 merged PR@williamsjokvist · 1 merged PR@wizzymore · 1 merged PR@Xelus22 · 1 merged PR@xhofe · 1 merged PR@xisuo67 · 1 merged PR@xjh22222228 · 1 changelog credit@XljBear · 1 merged PR@xtrafrancyz · 1 merged PR@xvertile · 1 merged PR@yesgs · 1 merged PR@youngchoan · 1 merged PR@yuseferi · 1 merged PR@Zeiichenfolge · 1 merged PR@zllovesuki · 1 merged PR@zuiwuchang · 1 merged PRBecome a Contributor From 2a4e1771ead83e2d0fe262f80f8549f71d5bbff9 Mon Sep 17 00:00:00 2001 From: taliesin-ai Date: Sun, 26 Jul 2026 16:25:13 +1000 Subject: [PATCH 28/29] chore: remove the root go.work workspace file (#5814) After the webview2 fold (#5711) the workspace covered a single module, ./v3, and every CI workflow already sets GOWORK=off, so it only affected local development. There it shadowed the standalone example modules nested under v3/ and forced CI to run `go work use .` on generated template projects. - delete go.work and go.work.sum - drop the go.work path filters, cache keys and the `go work use .` step from the v3 build and cross-compile workflows - also drop the webview2/** filters and webview2/go.sum cache entries, dead since the module was folded into v3/internal/webview2 - gitignore go.work/go.work.sum so local workspaces stay local --- .github/workflows/build-and-test-v3.yml | 10 ----- .github/workflows/cross-compile-test-v3.yml | 5 --- .gitignore | 4 ++ go.work | 5 --- go.work.sum | 41 ------------------- v3/examples/mac-window-tabs/Taskfile.yml | 12 +++--- .../mac-window-tabs/build/Taskfile.yml | 7 ++-- 7 files changed, 14 insertions(+), 70 deletions(-) delete mode 100644 go.work delete mode 100644 go.work.sum diff --git a/.github/workflows/build-and-test-v3.yml b/.github/workflows/build-and-test-v3.yml index 14b2fb5f4a2..82dfa8d1bf8 100644 --- a/.github/workflows/build-and-test-v3.yml +++ b/.github/workflows/build-and-test-v3.yml @@ -7,9 +7,6 @@ on: - master paths: - 'v3/**' - - 'webview2/**' - - 'go.work' - - 'go.work.sum' - '.github/workflows/build-and-test-v3.yml' pull_request_review: types: [submitted] @@ -126,8 +123,6 @@ jobs: cache: true cache-dependency-path: | v3/go.sum - webview2/go.sum - go.work.sum - name: Install Task uses: arduino/setup-task@v2 @@ -237,8 +232,6 @@ jobs: cache: true cache-dependency-path: | v3/go.sum - webview2/go.sum - go.work.sum - name: Install Task uses: arduino/setup-task@v2 @@ -274,9 +267,6 @@ jobs: # Replace @wailsio/runtime version with local tarball npm pkg set dependencies.@wailsio/runtime="file://$RUNTIME_TGZ" cd .. - # Register the generated project in the workspace so Go 1.25 workspace - # mode does not reject packages in a module not listed in go.work. - go work use . wails3 build # GTK3 legacy template builds are covered by the Go example compilation tests above. diff --git a/.github/workflows/cross-compile-test-v3.yml b/.github/workflows/cross-compile-test-v3.yml index fd774bef49b..bd2c42a0a3f 100644 --- a/.github/workflows/cross-compile-test-v3.yml +++ b/.github/workflows/cross-compile-test-v3.yml @@ -7,9 +7,6 @@ on: - master paths: - 'v3/**' - - 'webview2/**' - - 'go.work' - - 'go.work.sum' - '.github/workflows/cross-compile-test-v3.yml' workflow_dispatch: inputs: @@ -82,8 +79,6 @@ jobs: cache: true cache-dependency-path: | v3/go.sum - webview2/go.sum - go.work.sum - name: Install Task uses: arduino/setup-task@v2 diff --git a/.gitignore b/.gitignore index 61efe756b07..c1b4664c5dc 100644 --- a/.gitignore +++ b/.gitignore @@ -95,3 +95,7 @@ v2/cmd/wails/internal/commands/initialise/templates/testtemplates/ # Ignore local iOS test app /v3/testiosapp/ + +# Local Go workspaces are a per-developer concern, not part of the source +go.work +go.work.sum diff --git a/go.work b/go.work deleted file mode 100644 index 1fbc5f094c4..00000000000 --- a/go.work +++ /dev/null @@ -1,5 +0,0 @@ -go 1.25.0 - -use ( - ./v3 -) diff --git a/go.work.sum b/go.work.sum deleted file mode 100644 index 91461c0a1f5..00000000000 --- a/go.work.sum +++ /dev/null @@ -1,41 +0,0 @@ -cyphar.com/go-pathrs v0.2.1/go.mod h1:y8f1EMG7r+hCuFf/rXsKqMJrJAUoADZGNh5/vZPKcGc= -github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= -github.com/bits-and-blooms/bitset v1.24.4/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= -github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/caarlos0/go-version v0.2.2/go.mod h1:X+rI5VAtJDpcjCjeEIXpxGa5+rTcgur1FK66wS0/944= -github.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao= -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/renameio/v2 v2.0.0/go.mod h1:BtmJXm5YlszgC+TD4HOEEUFgkJP3nLxehU6hfe7jRt4= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/invopop/jsonschema v0.13.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/muesli/mango v0.2.0/go.mod h1:5XFpbC8jY5UUv89YQciiXNlbi+iJgt29VDC5xbzrLL4= -github.com/muesli/mango-cobra v1.3.0/go.mod h1:Cj1ZrBu3806Qw7UjxnAUgE+7tllUBj1NCLQDwwGx19E= -github.com/muesli/mango-pflag v0.1.0/go.mod h1:YEQomTxaCUp8PrbhFh10UfbhbQrM/xJ4i2PB8VTLLW0= -github.com/muesli/roff v0.1.0/go.mod h1:pjAHQM9hdUUwm/krAfrLGgJkXJ+YuhtsfZ42kieB2Ig= -github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= -github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= -github.com/sahilm/fuzzy v0.1.1/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y= -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= -github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= -github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= -github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY= -github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= -golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa/go.mod h1:kHjTxDEnAu6/Nl9lDkzjWpR+bmKfxeiRuSDlsMb70gE= -golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= -golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGNv1ib0J382/DPCRS/BPnsGebyM1Gj5VSDpG8= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -mvdan.cc/editorconfig v0.3.0/go.mod h1:NcJHuDtNOTEJ6251indKiWuzK6+VcrMuLzGMLKBFupQ= diff --git a/v3/examples/mac-window-tabs/Taskfile.yml b/v3/examples/mac-window-tabs/Taskfile.yml index bba79236acc..6a06761e83a 100644 --- a/v3/examples/mac-window-tabs/Taskfile.yml +++ b/v3/examples/mac-window-tabs/Taskfile.yml @@ -8,12 +8,12 @@ includes: # This example is a standalone Go module (its own go.mod, with a `replace` # pointing at the local Wails checkout because MacWindowTabbingMode is not in a -# published release yet). It physically lives under v3/, which is a member of -# the repo's root go.work. An active workspace would shadow this module: binding -# generation would find 0 services and `go mod tidy` would target v3 instead. -# Force workspace mode off so the example always builds as itself. This is -# inherited by the wails3 dev/build subprocess tree and is a harmless no-op -# outside the monorepo, where there is no go.work. +# published release yet). It physically lives under v3/, so any go.work that +# covers v3 would shadow this module: binding generation would find 0 services +# and `go mod tidy` would target v3 instead. The repo no longer ships a +# workspace file, but contributors often create one locally, so force workspace +# mode off and the example always builds as itself. This is inherited by the +# wails3 dev/build subprocess tree and is a harmless no-op everywhere else. env: GOWORK: "off" diff --git a/v3/examples/mac-window-tabs/build/Taskfile.yml b/v3/examples/mac-window-tabs/build/Taskfile.yml index 9322dc9c3be..b09e92f7560 100644 --- a/v3/examples/mac-window-tabs/build/Taskfile.yml +++ b/v3/examples/mac-window-tabs/build/Taskfile.yml @@ -1,9 +1,10 @@ version: '3' # See the note in ../Taskfile.yml: this example is a standalone module nested -# under v3/, so an active go.work would shadow it. Force workspace mode off here -# too, so the Go-tooling tasks (go mod tidy, generate bindings, go build) behave -# correctly even when invoked directly rather than via the root dev/build tasks. +# under v3/, so a local go.work covering v3 would shadow it. Force workspace +# mode off here too, so the Go-tooling tasks (go mod tidy, generate bindings, +# go build) behave correctly even when invoked directly rather than via the +# root dev/build tasks. env: GOWORK: "off" From f460aaca102e6141bafc6529747f54b7ce84f6f5 Mon Sep 17 00:00:00 2001 From: taliesin-ai Date: Sun, 26 Jul 2026 18:41:16 +1000 Subject: [PATCH 29/29] ci(v3): harden the release workflow before its first run (#5815) release-v3.yml was added in #5318 and has never executed: every alpha has shipped through nightly-release-v3.yml. Reviewing it before the beta turns up four things that would each surface as a failed or misleading release. The largest: none of the six Apple secrets it reads (APPLE_SIGNING_CERT, APPLE_CERT_PASSWORD, APPLE_SIGNING_IDENTITY, APPLE_NOTARIZE_USER, APPLE_NOTARIZE_PASSWORD, APPLE_TEAM_ID) exist on the repository. On the first real run the macOS job would fail inside `security import` after three platforms had already built, the release job would never run, and nothing would be published. Changes: - New preflight job that fails in seconds rather than ten minutes in. It resolves the tag for both trigger paths, checks out that tag, and verifies v3/internal/version/version.txt matches it. version.txt is embedded, so a mismatch ships a binary that misreports its own version with no error at all. - Preflight also reports exactly which Apple secrets are missing, and either stops or, with the new allow_unsigned_macos input, continues with the signing and notarization steps skipped. No silent downgrade either way. - Publish SHA256SUMS alongside the binaries. Users currently have no way to verify a download. - Attest build provenance for every binary. The npm package already ships provenance; the binaries lagging behind it is a gap users can see. - New draft input, so the whole path can be rehearsed end to end and the resulting release deleted without ever publishing anything. The build jobs now take their checkout ref from preflight's resolved tag, so all three platforms provably build the same verified source. Verified: actionlint clean; the version-guard, missing-secret detection and checksum generation logic each exercised locally under bash -eo pipefail. Not exercised in CI, because doing that means creating a tag and a release. Claude-Session: https://claude.ai/code/session_01FigQqUQbNu9ngE4a2CSNm8 Co-authored-by: taliesin-ai --- .github/workflows/release-v3.yml | 165 ++++++++++++++++++++++++------- 1 file changed, 132 insertions(+), 33 deletions(-) diff --git a/.github/workflows/release-v3.yml b/.github/workflows/release-v3.yml index 586a808345b..f8dd3832053 100644 --- a/.github/workflows/release-v3.yml +++ b/.github/workflows/release-v3.yml @@ -15,6 +15,16 @@ on: required: false default: true type: boolean + allow_unsigned_macos: + description: 'Publish unsigned, un-notarized macOS binaries (only if the Apple secrets are not configured yet)' + required: false + default: false + type: boolean + draft: + description: 'Create the release as a draft (use this to rehearse the release without publishing anything)' + required: false + default: false + type: boolean env: GO_VERSION: '1.25' @@ -25,9 +35,90 @@ permissions: contents: read jobs: + # ── Preflight: fail in seconds, not ten minutes into a build ───────────────── + # + # Everything here is a condition that would otherwise surface late and + # confusingly: a missing Apple secret shows up as an opaque `security import` + # error after three platforms have already built, and a version.txt that + # disagrees with the tag ships a binary that misreports itself with no error + # at all. + preflight: + name: Preflight + runs-on: ubuntu-latest + outputs: + tag: ${{ steps.meta.outputs.tag }} + pre_release: ${{ steps.meta.outputs.pre_release }} + sign_macos: ${{ steps.signing.outputs.sign_macos }} + steps: + - name: Resolve tag and pre-release flag + id: meta + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + TAG="${{ inputs.tag }}" + PRE="${{ inputs.pre_release }}" + else + TAG="${{ github.ref_name }}" + # Tags with a hyphen suffix (v3.0.0-beta.1) are pre-releases. + if [[ "$TAG" == *"-"* ]]; then PRE=true; else PRE=false; fi + fi + echo "tag=$TAG" >> "$GITHUB_OUTPUT" + echo "pre_release=$PRE" >> "$GITHUB_OUTPUT" + echo "Releasing $TAG (pre-release: $PRE)" + + - uses: actions/checkout@v4 + with: + ref: ${{ steps.meta.outputs.tag }} + + - name: Version file agrees with the tag + run: | + TAG="${{ steps.meta.outputs.tag }}" + FILE_VERSION="$(tr -d '[:space:]' < v3/internal/version/version.txt)" + # version.txt is embedded into the binary, so it is what `wails3 + # version` reports. If it disagrees with the tag, the release ships a + # binary that lies about which version it is, silently. + if [[ "$FILE_VERSION" != "$TAG" ]]; then + echo "::error::v3/internal/version/version.txt says '$FILE_VERSION' but the tag is '$TAG'." + echo "::error::The tagged commit must carry the matching version. Re-tag after bumping it." + exit 1 + fi + echo "version.txt matches the tag: $FILE_VERSION" + + - name: Apple signing credentials present + id: signing + env: + APPLE_SIGNING_CERT: ${{ secrets.APPLE_SIGNING_CERT }} + APPLE_CERT_PASSWORD: ${{ secrets.APPLE_CERT_PASSWORD }} + APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} + APPLE_NOTARIZE_USER: ${{ secrets.APPLE_NOTARIZE_USER }} + APPLE_NOTARIZE_PASSWORD: ${{ secrets.APPLE_NOTARIZE_PASSWORD }} + APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} + run: | + MISSING=() + for name in APPLE_SIGNING_CERT APPLE_CERT_PASSWORD APPLE_SIGNING_IDENTITY \ + APPLE_NOTARIZE_USER APPLE_NOTARIZE_PASSWORD APPLE_TEAM_ID; do + [[ -z "${!name}" ]] && MISSING+=("$name") + done + + if [[ ${#MISSING[@]} -eq 0 ]]; then + echo "sign_macos=true" >> "$GITHUB_OUTPUT" + echo "All Apple signing secrets are configured." + exit 0 + fi + + if [[ "${{ inputs.allow_unsigned_macos }}" == "true" ]]; then + echo "sign_macos=false" >> "$GITHUB_OUTPUT" + echo "::warning::Missing Apple secrets (${MISSING[*]}). Publishing UNSIGNED macOS binaries because allow_unsigned_macos was set." + exit 0 + fi + + echo "::error::Missing repository secrets: ${MISSING[*]}" + echo "::error::macOS binaries cannot be signed or notarized without them. Configure them," + echo "::error::or re-run with allow_unsigned_macos=true to publish unsigned macOS binaries." + exit 1 # ── Linux binaries (native runners, CGO_ENABLED=0 for static binaries) ────── build-linux: name: Build Linux / ${{ matrix.arch }} + needs: preflight runs-on: ${{ matrix.runner }} strategy: fail-fast: false @@ -40,10 +131,9 @@ jobs: steps: - uses: actions/checkout@v4 with: - # On workflow_dispatch build the requested tag; on tag push inputs.tag - # is empty so github.ref (the tag) is used. Prevents building from the - # branch tip and publishing it under an unrelated tag. - ref: ${{ inputs.tag || github.ref }} + # Preflight resolved the tag for both trigger paths and proved it + # exists, so every job builds the same, verified source. + ref: ${{ needs.preflight.outputs.tag }} - uses: actions/setup-go@v5 with: @@ -73,14 +163,14 @@ jobs: # ── Windows binary ──────────────────────────────────────────────────────────── build-windows: name: Build Windows / amd64 + needs: preflight runs-on: windows-latest steps: - uses: actions/checkout@v4 with: - # On workflow_dispatch build the requested tag; on tag push inputs.tag - # is empty so github.ref (the tag) is used. Prevents building from the - # branch tip and publishing it under an unrelated tag. - ref: ${{ inputs.tag || github.ref }} + # Preflight resolved the tag for both trigger paths and proved it + # exists, so every job builds the same, verified source. + ref: ${{ needs.preflight.outputs.tag }} - uses: actions/setup-go@v5 with: @@ -105,14 +195,14 @@ jobs: # ── macOS: build amd64 + arm64, create universal binary, sign, notarize ────── build-sign-macos: name: Build, Sign & Notarize macOS + needs: preflight runs-on: macos-latest steps: - uses: actions/checkout@v4 with: - # On workflow_dispatch build the requested tag; on tag push inputs.tag - # is empty so github.ref (the tag) is used. Prevents building from the - # branch tip and publishing it under an unrelated tag. - ref: ${{ inputs.tag || github.ref }} + # Preflight resolved the tag for both trigger paths and proved it + # exists, so every job builds the same, verified source. + ref: ${{ needs.preflight.outputs.tag }} - uses: actions/setup-go@v5 with: @@ -141,6 +231,7 @@ jobs: run: lipo -create -output wails3-darwin-universal wails3-darwin-amd64 wails3-darwin-arm64 - name: Import signing certificate + if: needs.preflight.outputs.sign_macos == 'true' env: APPLE_SIGNING_CERT: ${{ secrets.APPLE_SIGNING_CERT }} APPLE_CERT_PASSWORD: ${{ secrets.APPLE_CERT_PASSWORD }} @@ -166,6 +257,7 @@ jobs: security list-keychain -d user -s "$KEYCHAIN_PATH" - name: Sign binaries + if: needs.preflight.outputs.sign_macos == 'true' env: APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} run: | @@ -179,6 +271,7 @@ jobs: done - name: Notarize macOS binaries + if: needs.preflight.outputs.sign_macos == 'true' env: APPLE_NOTARIZE_USER: ${{ secrets.APPLE_NOTARIZE_USER }} APPLE_NOTARIZE_PASSWORD: ${{ secrets.APPLE_NOTARIZE_PASSWORD }} @@ -206,29 +299,13 @@ jobs: # ── Create GitHub Release and attach all binaries ──────────────────────────── release: name: Publish Release - needs: [build-linux, build-windows, build-sign-macos] + needs: [preflight, build-linux, build-windows, build-sign-macos] runs-on: ubuntu-latest permissions: contents: write + id-token: write # OIDC identity for the provenance attestation + attestations: write steps: - - name: Determine release tag and pre-release flag - id: meta - run: | - if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then - TAG="${{ github.event.inputs.tag }}" - PRE="${{ github.event.inputs.pre_release }}" - else - TAG="${{ github.ref_name }}" - # Treat tags with a hyphen suffix (e.g. v3.0.0-beta.1) as pre-releases - if [[ "$TAG" == *"-"* ]]; then - PRE=true - else - PRE=false - fi - fi - echo "tag=$TAG" >> "$GITHUB_OUTPUT" - echo "pre_release=$PRE" >> "$GITHUB_OUTPUT" - - name: Download all artifacts uses: actions/download-artifact@v4 with: @@ -238,11 +315,29 @@ jobs: - name: List artifacts run: ls -lh dist/ + - name: Generate checksums + working-directory: dist + run: | + # Users have no way to verify a download without these, and generating + # them anywhere other than the job that publishes the binaries defeats + # the point. + sha256sum -- * > SHA256SUMS + cat SHA256SUMS + + - name: Attest build provenance + uses: actions/attest-build-provenance@v4 + with: + # Signed statement of which source, builder and workflow produced each + # binary. The npm package already ships provenance; the binaries + # lagging behind it is an inconsistency users can see. + subject-path: 'dist/wails3-*' + - name: Create or update GitHub Release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - TAG: ${{ steps.meta.outputs.tag }} - PRE: ${{ steps.meta.outputs.pre_release }} + TAG: ${{ needs.preflight.outputs.tag }} + PRE: ${{ needs.preflight.outputs.pre_release }} + DRAFT: ${{ inputs.draft }} run: | FLAGS=( --repo "${{ github.repository }}" @@ -250,6 +345,10 @@ jobs: --generate-notes ) [[ "$PRE" == "true" ]] && FLAGS+=(--prerelease) + # A draft release is visible only to maintainers and can be deleted, + # which is what makes rehearsing the whole path possible without + # publishing anything. + [[ "$DRAFT" == "true" ]] && FLAGS+=(--draft) # Fail fast if the tag does not exist. Otherwise `gh release create` # would create the tag at an arbitrary commit and publish a release